diff --git a/compiler/rustc_interface/src/tests.rs b/compiler/rustc_interface/src/tests.rs index 77ee2b40e37c1..9d0c9ec974231 100644 --- a/compiler/rustc_interface/src/tests.rs +++ b/compiler/rustc_interface/src/tests.rs @@ -685,7 +685,7 @@ fn test_unstable_options_tracking_hash() { untracked!(ls, true); untracked!(macro_backtrace, true); untracked!(meta_stats, true); - untracked!(mir_pretty_relative_line_numbers, true); + untracked!(mir_include_spans, true); untracked!(nll_facts, true); untracked!(no_analysis, true); untracked!(no_leak_check, true); diff --git a/compiler/rustc_middle/src/mir/pretty.rs b/compiler/rustc_middle/src/mir/pretty.rs index 8477722ea393c..ffa7a5400d358 100644 --- a/compiler/rustc_middle/src/mir/pretty.rs +++ b/compiler/rustc_middle/src/mir/pretty.rs @@ -353,14 +353,22 @@ where for statement in &data.statements { extra_data(PassWhere::BeforeLocation(current_location), w)?; let indented_body = format!("{0}{0}{1:?};", INDENT, statement); - writeln!( - w, - "{:A$} // {}{}", - indented_body, - if tcx.sess.verbose() { format!("{:?}: ", current_location) } else { String::new() }, - comment(tcx, statement.source_info, body.span), - A = ALIGN, - )?; + if tcx.sess.opts.unstable_opts.mir_include_spans { + writeln!( + w, + "{:A$} // {}{}", + indented_body, + if tcx.sess.verbose() { + format!("{:?}: ", current_location) + } else { + String::new() + }, + comment(tcx, statement.source_info), + A = ALIGN, + )?; + } else { + writeln!(w, "{}", indented_body)?; + } write_extra(tcx, w, |visitor| { visitor.visit_statement(statement, current_location); @@ -374,14 +382,18 @@ where // Terminator at the bottom. extra_data(PassWhere::BeforeLocation(current_location), w)?; let indented_terminator = format!("{0}{0}{1:?};", INDENT, data.terminator().kind); - writeln!( - w, - "{:A$} // {}{}", - indented_terminator, - if tcx.sess.verbose() { format!("{:?}: ", current_location) } else { String::new() }, - comment(tcx, data.terminator().source_info, body.span), - A = ALIGN, - )?; + if tcx.sess.opts.unstable_opts.mir_include_spans { + writeln!( + w, + "{:A$} // {}{}", + indented_terminator, + if tcx.sess.verbose() { format!("{:?}: ", current_location) } else { String::new() }, + comment(tcx, data.terminator().source_info), + A = ALIGN, + )?; + } else { + writeln!(w, "{}", indented_terminator)?; + } write_extra(tcx, w, |visitor| { visitor.visit_terminator(data.terminator(), current_location); @@ -400,10 +412,12 @@ fn write_extra<'tcx, F>(tcx: TyCtxt<'tcx>, write: &mut dyn Write, mut visit_op: where F: FnMut(&mut ExtraComments<'tcx>), { - let mut extra_comments = ExtraComments { tcx, comments: vec![] }; - visit_op(&mut extra_comments); - for comment in extra_comments.comments { - writeln!(write, "{:A$} // {}", "", comment, A = ALIGN)?; + if tcx.sess.opts.unstable_opts.mir_include_spans { + let mut extra_comments = ExtraComments { tcx, comments: vec![] }; + visit_op(&mut extra_comments); + for comment in extra_comments.comments { + writeln!(write, "{:A$} // {}", "", comment, A = ALIGN)?; + } } Ok(()) } @@ -522,13 +536,8 @@ impl<'tcx> Visitor<'tcx> for ExtraComments<'tcx> { } } -fn comment(tcx: TyCtxt<'_>, SourceInfo { span, scope }: SourceInfo, function_span: Span) -> String { - let location = if tcx.sess.opts.unstable_opts.mir_pretty_relative_line_numbers { - tcx.sess.source_map().span_to_relative_line_string(span, function_span) - } else { - tcx.sess.source_map().span_to_embeddable_string(span) - }; - +fn comment(tcx: TyCtxt<'_>, SourceInfo { span, scope }: SourceInfo) -> String { + let location = tcx.sess.source_map().span_to_embeddable_string(span); format!("scope {} at {}", scope.index(), location,) } @@ -560,13 +569,17 @@ fn write_scope_tree( var_debug_info.value, ); - writeln!( - w, - "{0:1$} // in {2}", - indented_debug_info, - ALIGN, - comment(tcx, var_debug_info.source_info, body.span), - )?; + if tcx.sess.opts.unstable_opts.mir_include_spans { + writeln!( + w, + "{0:1$} // in {2}", + indented_debug_info, + ALIGN, + comment(tcx, var_debug_info.source_info), + )?; + } else { + writeln!(w, "{}", indented_debug_info)?; + } } // Local variable types. @@ -594,14 +607,18 @@ fn write_scope_tree( let local_name = if local == RETURN_PLACE { " return place" } else { "" }; - writeln!( - w, - "{0:1$} //{2} in {3}", - indented_decl, - ALIGN, - local_name, - comment(tcx, local_decl.source_info, body.span), - )?; + if tcx.sess.opts.unstable_opts.mir_include_spans { + writeln!( + w, + "{0:1$} //{2} in {3}", + indented_decl, + ALIGN, + local_name, + comment(tcx, local_decl.source_info), + )?; + } else { + writeln!(w, "{}", indented_decl,)?; + } } let Some(children) = scope_tree.get(&parent) else { @@ -627,14 +644,18 @@ fn write_scope_tree( let indented_header = format!("{0:1$}scope {2}{3} {{", "", indent, child.index(), special); - if let Some(span) = span { - writeln!( - w, - "{0:1$} // at {2}", - indented_header, - ALIGN, - tcx.sess.source_map().span_to_embeddable_string(span), - )?; + if tcx.sess.opts.unstable_opts.mir_include_spans { + if let Some(span) = span { + writeln!( + w, + "{0:1$} // at {2}", + indented_header, + ALIGN, + tcx.sess.source_map().span_to_embeddable_string(span), + )?; + } else { + writeln!(w, "{}", indented_header)?; + } } else { writeln!(w, "{}", indented_header)?; } diff --git a/compiler/rustc_session/src/options.rs b/compiler/rustc_session/src/options.rs index b626c721481db..3d9f0a4e26855 100644 --- a/compiler/rustc_session/src/options.rs +++ b/compiler/rustc_session/src/options.rs @@ -1558,14 +1558,14 @@ options! { "use like `-Zmir-enable-passes=+DestinationPropagation,-InstSimplify`. Forces the specified passes to be \ enabled, overriding all other checks. Passes that are not specified are enabled or \ disabled by other flags as usual."), + mir_include_spans: bool = (false, parse_bool, [UNTRACKED], + "use line numbers relative to the function in mir pretty printing"), mir_keep_place_mention: bool = (false, parse_bool, [TRACKED], "keep place mention MIR statements, interpreted e.g., by miri; implies -Zmir-opt-level=0 \ (default: no)"), #[rustc_lint_opt_deny_field_access("use `Session::mir_opt_level` instead of this field")] mir_opt_level: Option = (None, parse_opt_number, [TRACKED], "MIR optimization level (0-4; default: 1 in non optimized builds and 2 in optimized builds)"), - mir_pretty_relative_line_numbers: bool = (false, parse_bool, [UNTRACKED], - "use line numbers relative to the function in mir pretty printing"), move_size_limit: Option = (None, parse_opt_number, [TRACKED], "the size at which the `large_assignments` lint starts to be emitted"), mutable_noalias: bool = (true, parse_bool, [TRACKED], diff --git a/src/tools/compiletest/src/runtest.rs b/src/tools/compiletest/src/runtest.rs index 7c6668b1c5ddf..8c744d5d3c450 100644 --- a/src/tools/compiletest/src/runtest.rs +++ b/src/tools/compiletest/src/runtest.rs @@ -2044,7 +2044,6 @@ impl<'test> TestCx<'test> { &zdump_arg, "-Zvalidate-mir", "-Zdump-mir-exclude-pass-number", - "-Zmir-pretty-relative-line-numbers=yes", ]); if let Some(pass) = &self.props.mir_unit_test { rustc.args(&["-Zmir-opt-level=0", &format!("-Zmir-enable-passes=+{}", pass)]); diff --git a/tests/mir-opt/address_of.address_of_reborrow.SimplifyCfg-initial.after.mir b/tests/mir-opt/address_of.address_of_reborrow.SimplifyCfg-initial.after.mir index b1d34a1962ec7..93bf2b64deb4c 100644 --- a/tests/mir-opt/address_of.address_of_reborrow.SimplifyCfg-initial.after.mir +++ b/tests/mir-opt/address_of.address_of_reborrow.SimplifyCfg-initial.after.mir @@ -33,83 +33,83 @@ | 29: user_ty: Canonical { value: Ty(*mut [i32]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:36:12: 36:22, inferred_ty: *mut [i32] | fn address_of_reborrow() -> () { - let mut _0: (); // return place in scope 0 at $DIR/address_of.rs:+0:26: +0:26 - let _1: &[i32; 10]; // in scope 0 at $DIR/address_of.rs:+1:9: +1:10 - let _2: [i32; 10]; // in scope 0 at $DIR/address_of.rs:+1:14: +1:21 - let mut _4: [i32; 10]; // in scope 0 at $DIR/address_of.rs:+2:22: +2:29 - let _5: *const [i32; 10]; // in scope 0 at $DIR/address_of.rs:+4:5: +4:18 - let mut _6: *const [i32; 10]; // in scope 0 at $DIR/address_of.rs:+4:5: +4:18 - let _7: *const [i32; 10]; // in scope 0 at $DIR/address_of.rs:+5:5: +5:26 - let _8: *const dyn std::marker::Send; // in scope 0 at $DIR/address_of.rs:+6:5: +6:25 - let mut _9: *const dyn std::marker::Send; // in scope 0 at $DIR/address_of.rs:+6:5: +6:25 - let mut _10: *const [i32; 10]; // in scope 0 at $DIR/address_of.rs:+6:5: +6:6 - let _11: *const [i32]; // in scope 0 at $DIR/address_of.rs:+7:5: +7:22 - let mut _12: *const [i32; 10]; // in scope 0 at $DIR/address_of.rs:+7:5: +7:6 - let _13: *const i32; // in scope 0 at $DIR/address_of.rs:+8:5: +8:20 - let mut _14: *const [i32; 10]; // in scope 0 at $DIR/address_of.rs:+8:5: +8:6 - let mut _18: *const [i32; 10]; // in scope 0 at $DIR/address_of.rs:+12:30: +12:31 - let mut _20: *const [i32; 10]; // in scope 0 at $DIR/address_of.rs:+13:27: +13:28 - let _21: *const [i32; 10]; // in scope 0 at $DIR/address_of.rs:+15:5: +15:18 - let mut _22: *const [i32; 10]; // in scope 0 at $DIR/address_of.rs:+15:5: +15:18 - let _23: *const [i32; 10]; // in scope 0 at $DIR/address_of.rs:+16:5: +16:26 - let _24: *const dyn std::marker::Send; // in scope 0 at $DIR/address_of.rs:+17:5: +17:25 - let mut _25: *const dyn std::marker::Send; // in scope 0 at $DIR/address_of.rs:+17:5: +17:25 - let mut _26: *const [i32; 10]; // in scope 0 at $DIR/address_of.rs:+17:5: +17:6 - let _27: *const [i32]; // in scope 0 at $DIR/address_of.rs:+18:5: +18:22 - let mut _28: *const [i32; 10]; // in scope 0 at $DIR/address_of.rs:+18:5: +18:6 - let mut _32: *const [i32; 10]; // in scope 0 at $DIR/address_of.rs:+22:30: +22:31 - let mut _34: *const [i32; 10]; // in scope 0 at $DIR/address_of.rs:+23:27: +23:28 - let _35: *mut [i32; 10]; // in scope 0 at $DIR/address_of.rs:+25:5: +25:16 - let mut _36: *mut [i32; 10]; // in scope 0 at $DIR/address_of.rs:+25:5: +25:16 - let _37: *mut [i32; 10]; // in scope 0 at $DIR/address_of.rs:+26:5: +26:24 - let _38: *mut dyn std::marker::Send; // in scope 0 at $DIR/address_of.rs:+27:5: +27:23 - let mut _39: *mut dyn std::marker::Send; // in scope 0 at $DIR/address_of.rs:+27:5: +27:23 - let mut _40: *mut [i32; 10]; // in scope 0 at $DIR/address_of.rs:+27:5: +27:6 - let _41: *mut [i32]; // in scope 0 at $DIR/address_of.rs:+28:5: +28:20 - let mut _42: *mut [i32; 10]; // in scope 0 at $DIR/address_of.rs:+28:5: +28:6 - let mut _46: *mut [i32; 10]; // in scope 0 at $DIR/address_of.rs:+32:28: +32:29 - let mut _48: *mut [i32; 10]; // in scope 0 at $DIR/address_of.rs:+33:25: +33:26 + let mut _0: (); + let _1: &[i32; 10]; + let _2: [i32; 10]; + let mut _4: [i32; 10]; + let _5: *const [i32; 10]; + let mut _6: *const [i32; 10]; + let _7: *const [i32; 10]; + let _8: *const dyn std::marker::Send; + let mut _9: *const dyn std::marker::Send; + let mut _10: *const [i32; 10]; + let _11: *const [i32]; + let mut _12: *const [i32; 10]; + let _13: *const i32; + let mut _14: *const [i32; 10]; + let mut _18: *const [i32; 10]; + let mut _20: *const [i32; 10]; + let _21: *const [i32; 10]; + let mut _22: *const [i32; 10]; + let _23: *const [i32; 10]; + let _24: *const dyn std::marker::Send; + let mut _25: *const dyn std::marker::Send; + let mut _26: *const [i32; 10]; + let _27: *const [i32]; + let mut _28: *const [i32; 10]; + let mut _32: *const [i32; 10]; + let mut _34: *const [i32; 10]; + let _35: *mut [i32; 10]; + let mut _36: *mut [i32; 10]; + let _37: *mut [i32; 10]; + let _38: *mut dyn std::marker::Send; + let mut _39: *mut dyn std::marker::Send; + let mut _40: *mut [i32; 10]; + let _41: *mut [i32]; + let mut _42: *mut [i32; 10]; + let mut _46: *mut [i32; 10]; + let mut _48: *mut [i32; 10]; scope 1 { - debug y => _1; // in scope 1 at $DIR/address_of.rs:+1:9: +1:10 - let mut _3: &mut [i32; 10]; // in scope 1 at $DIR/address_of.rs:+2:9: +2:14 + debug y => _1; + let mut _3: &mut [i32; 10]; scope 2 { - debug z => _3; // in scope 2 at $DIR/address_of.rs:+2:9: +2:14 - let _15: *const [i32; 10] as UserTypeProjection { base: UserType(2), projs: [] }; // in scope 2 at $DIR/address_of.rs:+10:9: +10:10 + debug z => _3; + let _15: *const [i32; 10] as UserTypeProjection { base: UserType(2), projs: [] }; scope 3 { - debug p => _15; // in scope 3 at $DIR/address_of.rs:+10:9: +10:10 - let _16: *const [i32; 10] as UserTypeProjection { base: UserType(4), projs: [] }; // in scope 3 at $DIR/address_of.rs:+11:9: +11:10 + debug p => _15; + let _16: *const [i32; 10] as UserTypeProjection { base: UserType(4), projs: [] }; scope 4 { - debug p => _16; // in scope 4 at $DIR/address_of.rs:+11:9: +11:10 - let _17: *const dyn std::marker::Send as UserTypeProjection { base: UserType(6), projs: [] }; // in scope 4 at $DIR/address_of.rs:+12:9: +12:10 + debug p => _16; + let _17: *const dyn std::marker::Send as UserTypeProjection { base: UserType(6), projs: [] }; scope 5 { - debug p => _17; // in scope 5 at $DIR/address_of.rs:+12:9: +12:10 - let _19: *const [i32] as UserTypeProjection { base: UserType(8), projs: [] }; // in scope 5 at $DIR/address_of.rs:+13:9: +13:10 + debug p => _17; + let _19: *const [i32] as UserTypeProjection { base: UserType(8), projs: [] }; scope 6 { - debug p => _19; // in scope 6 at $DIR/address_of.rs:+13:9: +13:10 - let _29: *const [i32; 10] as UserTypeProjection { base: UserType(12), projs: [] }; // in scope 6 at $DIR/address_of.rs:+20:9: +20:10 + debug p => _19; + let _29: *const [i32; 10] as UserTypeProjection { base: UserType(12), projs: [] }; scope 7 { - debug p => _29; // in scope 7 at $DIR/address_of.rs:+20:9: +20:10 - let _30: *const [i32; 10] as UserTypeProjection { base: UserType(14), projs: [] }; // in scope 7 at $DIR/address_of.rs:+21:9: +21:10 + debug p => _29; + let _30: *const [i32; 10] as UserTypeProjection { base: UserType(14), projs: [] }; scope 8 { - debug p => _30; // in scope 8 at $DIR/address_of.rs:+21:9: +21:10 - let _31: *const dyn std::marker::Send as UserTypeProjection { base: UserType(16), projs: [] }; // in scope 8 at $DIR/address_of.rs:+22:9: +22:10 + debug p => _30; + let _31: *const dyn std::marker::Send as UserTypeProjection { base: UserType(16), projs: [] }; scope 9 { - debug p => _31; // in scope 9 at $DIR/address_of.rs:+22:9: +22:10 - let _33: *const [i32] as UserTypeProjection { base: UserType(18), projs: [] }; // in scope 9 at $DIR/address_of.rs:+23:9: +23:10 + debug p => _31; + let _33: *const [i32] as UserTypeProjection { base: UserType(18), projs: [] }; scope 10 { - debug p => _33; // in scope 10 at $DIR/address_of.rs:+23:9: +23:10 - let _43: *mut [i32; 10] as UserTypeProjection { base: UserType(22), projs: [] }; // in scope 10 at $DIR/address_of.rs:+30:9: +30:10 + debug p => _33; + let _43: *mut [i32; 10] as UserTypeProjection { base: UserType(22), projs: [] }; scope 11 { - debug p => _43; // in scope 11 at $DIR/address_of.rs:+30:9: +30:10 - let _44: *mut [i32; 10] as UserTypeProjection { base: UserType(24), projs: [] }; // in scope 11 at $DIR/address_of.rs:+31:9: +31:10 + debug p => _43; + let _44: *mut [i32; 10] as UserTypeProjection { base: UserType(24), projs: [] }; scope 12 { - debug p => _44; // in scope 12 at $DIR/address_of.rs:+31:9: +31:10 - let _45: *mut dyn std::marker::Send as UserTypeProjection { base: UserType(26), projs: [] }; // in scope 12 at $DIR/address_of.rs:+32:9: +32:10 + debug p => _44; + let _45: *mut dyn std::marker::Send as UserTypeProjection { base: UserType(26), projs: [] }; scope 13 { - debug p => _45; // in scope 13 at $DIR/address_of.rs:+32:9: +32:10 - let _47: *mut [i32] as UserTypeProjection { base: UserType(28), projs: [] }; // in scope 13 at $DIR/address_of.rs:+33:9: +33:10 + debug p => _45; + let _47: *mut [i32] as UserTypeProjection { base: UserType(28), projs: [] }; scope 14 { - debug p => _47; // in scope 14 at $DIR/address_of.rs:+33:9: +33:10 + debug p => _47; } } } @@ -126,183 +126,183 @@ fn address_of_reborrow() -> () { } bb0: { - StorageLive(_1); // scope 0 at $DIR/address_of.rs:+1:9: +1:10 - StorageLive(_2); // scope 0 at $DIR/address_of.rs:+1:14: +1:21 - _2 = [const 0_i32; 10]; // scope 0 at $DIR/address_of.rs:+1:14: +1:21 - _1 = &_2; // scope 0 at $DIR/address_of.rs:+1:13: +1:21 - FakeRead(ForLet(None), _1); // scope 0 at $DIR/address_of.rs:+1:9: +1:10 - StorageLive(_3); // scope 1 at $DIR/address_of.rs:+2:9: +2:14 - StorageLive(_4); // scope 1 at $DIR/address_of.rs:+2:22: +2:29 - _4 = [const 0_i32; 10]; // scope 1 at $DIR/address_of.rs:+2:22: +2:29 - _3 = &mut _4; // scope 1 at $DIR/address_of.rs:+2:17: +2:29 - FakeRead(ForLet(None), _3); // scope 1 at $DIR/address_of.rs:+2:9: +2:14 - StorageLive(_5); // scope 2 at $DIR/address_of.rs:+4:5: +4:18 - StorageLive(_6); // scope 2 at $DIR/address_of.rs:+4:5: +4:18 - _6 = &raw const (*_1); // scope 2 at $DIR/address_of.rs:+4:5: +4:6 - AscribeUserType(_6, o, UserTypeProjection { base: UserType(0), projs: [] }); // scope 2 at $DIR/address_of.rs:+4:5: +4:18 - _5 = _6; // scope 2 at $DIR/address_of.rs:+4:5: +4:18 - StorageDead(_6); // scope 2 at $DIR/address_of.rs:+4:18: +4:19 - StorageDead(_5); // scope 2 at $DIR/address_of.rs:+4:18: +4:19 - StorageLive(_7); // scope 2 at $DIR/address_of.rs:+5:5: +5:26 - _7 = &raw const (*_1); // scope 2 at $DIR/address_of.rs:+5:5: +5:6 - StorageDead(_7); // scope 2 at $DIR/address_of.rs:+5:26: +5:27 - StorageLive(_8); // scope 2 at $DIR/address_of.rs:+6:5: +6:25 - StorageLive(_9); // scope 2 at $DIR/address_of.rs:+6:5: +6:25 - StorageLive(_10); // scope 2 at $DIR/address_of.rs:+6:5: +6:6 - _10 = &raw const (*_1); // scope 2 at $DIR/address_of.rs:+6:5: +6:6 - _9 = move _10 as *const dyn std::marker::Send (Pointer(Unsize)); // scope 2 at $DIR/address_of.rs:+6:5: +6:6 - StorageDead(_10); // scope 2 at $DIR/address_of.rs:+6:5: +6:6 - AscribeUserType(_9, o, UserTypeProjection { base: UserType(1), projs: [] }); // scope 2 at $DIR/address_of.rs:+6:5: +6:25 - _8 = _9; // scope 2 at $DIR/address_of.rs:+6:5: +6:25 - StorageDead(_9); // scope 2 at $DIR/address_of.rs:+6:25: +6:26 - StorageDead(_8); // scope 2 at $DIR/address_of.rs:+6:25: +6:26 - StorageLive(_11); // scope 2 at $DIR/address_of.rs:+7:5: +7:22 - StorageLive(_12); // scope 2 at $DIR/address_of.rs:+7:5: +7:6 - _12 = &raw const (*_1); // scope 2 at $DIR/address_of.rs:+7:5: +7:6 - _11 = move _12 as *const [i32] (Pointer(Unsize)); // scope 2 at $DIR/address_of.rs:+7:5: +7:6 - StorageDead(_12); // scope 2 at $DIR/address_of.rs:+7:5: +7:6 - StorageDead(_11); // scope 2 at $DIR/address_of.rs:+7:22: +7:23 - StorageLive(_13); // scope 2 at $DIR/address_of.rs:+8:5: +8:20 - StorageLive(_14); // scope 2 at $DIR/address_of.rs:+8:5: +8:6 - _14 = &raw const (*_1); // scope 2 at $DIR/address_of.rs:+8:5: +8:6 - _13 = move _14 as *const i32 (Pointer(ArrayToPointer)); // scope 2 at $DIR/address_of.rs:+8:5: +8:20 - StorageDead(_14); // scope 2 at $DIR/address_of.rs:+8:19: +8:20 - StorageDead(_13); // scope 2 at $DIR/address_of.rs:+8:20: +8:21 - StorageLive(_15); // scope 2 at $DIR/address_of.rs:+10:9: +10:10 - _15 = &raw const (*_1); // scope 2 at $DIR/address_of.rs:+10:23: +10:24 - FakeRead(ForLet(None), _15); // scope 2 at $DIR/address_of.rs:+10:9: +10:10 - AscribeUserType(_15, o, UserTypeProjection { base: UserType(3), projs: [] }); // scope 2 at $DIR/address_of.rs:+10:12: +10:20 - StorageLive(_16); // scope 3 at $DIR/address_of.rs:+11:9: +11:10 - _16 = &raw const (*_1); // scope 3 at $DIR/address_of.rs:+11:31: +11:32 - FakeRead(ForLet(None), _16); // scope 3 at $DIR/address_of.rs:+11:9: +11:10 - AscribeUserType(_16, o, UserTypeProjection { base: UserType(5), projs: [] }); // scope 3 at $DIR/address_of.rs:+11:12: +11:28 - StorageLive(_17); // scope 4 at $DIR/address_of.rs:+12:9: +12:10 - StorageLive(_18); // scope 4 at $DIR/address_of.rs:+12:30: +12:31 - _18 = &raw const (*_1); // scope 4 at $DIR/address_of.rs:+12:30: +12:31 - _17 = move _18 as *const dyn std::marker::Send (Pointer(Unsize)); // scope 4 at $DIR/address_of.rs:+12:30: +12:31 - StorageDead(_18); // scope 4 at $DIR/address_of.rs:+12:30: +12:31 - FakeRead(ForLet(None), _17); // scope 4 at $DIR/address_of.rs:+12:9: +12:10 - AscribeUserType(_17, o, UserTypeProjection { base: UserType(7), projs: [] }); // scope 4 at $DIR/address_of.rs:+12:12: +12:27 - StorageLive(_19); // scope 5 at $DIR/address_of.rs:+13:9: +13:10 - StorageLive(_20); // scope 5 at $DIR/address_of.rs:+13:27: +13:28 - _20 = &raw const (*_1); // scope 5 at $DIR/address_of.rs:+13:27: +13:28 - _19 = move _20 as *const [i32] (Pointer(Unsize)); // scope 5 at $DIR/address_of.rs:+13:27: +13:28 - StorageDead(_20); // scope 5 at $DIR/address_of.rs:+13:27: +13:28 - FakeRead(ForLet(None), _19); // scope 5 at $DIR/address_of.rs:+13:9: +13:10 - AscribeUserType(_19, o, UserTypeProjection { base: UserType(9), projs: [] }); // scope 5 at $DIR/address_of.rs:+13:12: +13:24 - StorageLive(_21); // scope 6 at $DIR/address_of.rs:+15:5: +15:18 - StorageLive(_22); // scope 6 at $DIR/address_of.rs:+15:5: +15:18 - _22 = &raw const (*_3); // scope 6 at $DIR/address_of.rs:+15:5: +15:6 - AscribeUserType(_22, o, UserTypeProjection { base: UserType(10), projs: [] }); // scope 6 at $DIR/address_of.rs:+15:5: +15:18 - _21 = _22; // scope 6 at $DIR/address_of.rs:+15:5: +15:18 - StorageDead(_22); // scope 6 at $DIR/address_of.rs:+15:18: +15:19 - StorageDead(_21); // scope 6 at $DIR/address_of.rs:+15:18: +15:19 - StorageLive(_23); // scope 6 at $DIR/address_of.rs:+16:5: +16:26 - _23 = &raw const (*_3); // scope 6 at $DIR/address_of.rs:+16:5: +16:6 - StorageDead(_23); // scope 6 at $DIR/address_of.rs:+16:26: +16:27 - StorageLive(_24); // scope 6 at $DIR/address_of.rs:+17:5: +17:25 - StorageLive(_25); // scope 6 at $DIR/address_of.rs:+17:5: +17:25 - StorageLive(_26); // scope 6 at $DIR/address_of.rs:+17:5: +17:6 - _26 = &raw const (*_3); // scope 6 at $DIR/address_of.rs:+17:5: +17:6 - _25 = move _26 as *const dyn std::marker::Send (Pointer(Unsize)); // scope 6 at $DIR/address_of.rs:+17:5: +17:6 - StorageDead(_26); // scope 6 at $DIR/address_of.rs:+17:5: +17:6 - AscribeUserType(_25, o, UserTypeProjection { base: UserType(11), projs: [] }); // scope 6 at $DIR/address_of.rs:+17:5: +17:25 - _24 = _25; // scope 6 at $DIR/address_of.rs:+17:5: +17:25 - StorageDead(_25); // scope 6 at $DIR/address_of.rs:+17:25: +17:26 - StorageDead(_24); // scope 6 at $DIR/address_of.rs:+17:25: +17:26 - StorageLive(_27); // scope 6 at $DIR/address_of.rs:+18:5: +18:22 - StorageLive(_28); // scope 6 at $DIR/address_of.rs:+18:5: +18:6 - _28 = &raw const (*_3); // scope 6 at $DIR/address_of.rs:+18:5: +18:6 - _27 = move _28 as *const [i32] (Pointer(Unsize)); // scope 6 at $DIR/address_of.rs:+18:5: +18:6 - StorageDead(_28); // scope 6 at $DIR/address_of.rs:+18:5: +18:6 - StorageDead(_27); // scope 6 at $DIR/address_of.rs:+18:22: +18:23 - StorageLive(_29); // scope 6 at $DIR/address_of.rs:+20:9: +20:10 - _29 = &raw const (*_3); // scope 6 at $DIR/address_of.rs:+20:23: +20:24 - FakeRead(ForLet(None), _29); // scope 6 at $DIR/address_of.rs:+20:9: +20:10 - AscribeUserType(_29, o, UserTypeProjection { base: UserType(13), projs: [] }); // scope 6 at $DIR/address_of.rs:+20:12: +20:20 - StorageLive(_30); // scope 7 at $DIR/address_of.rs:+21:9: +21:10 - _30 = &raw const (*_3); // scope 7 at $DIR/address_of.rs:+21:31: +21:32 - FakeRead(ForLet(None), _30); // scope 7 at $DIR/address_of.rs:+21:9: +21:10 - AscribeUserType(_30, o, UserTypeProjection { base: UserType(15), projs: [] }); // scope 7 at $DIR/address_of.rs:+21:12: +21:28 - StorageLive(_31); // scope 8 at $DIR/address_of.rs:+22:9: +22:10 - StorageLive(_32); // scope 8 at $DIR/address_of.rs:+22:30: +22:31 - _32 = &raw const (*_3); // scope 8 at $DIR/address_of.rs:+22:30: +22:31 - _31 = move _32 as *const dyn std::marker::Send (Pointer(Unsize)); // scope 8 at $DIR/address_of.rs:+22:30: +22:31 - StorageDead(_32); // scope 8 at $DIR/address_of.rs:+22:30: +22:31 - FakeRead(ForLet(None), _31); // scope 8 at $DIR/address_of.rs:+22:9: +22:10 - AscribeUserType(_31, o, UserTypeProjection { base: UserType(17), projs: [] }); // scope 8 at $DIR/address_of.rs:+22:12: +22:27 - StorageLive(_33); // scope 9 at $DIR/address_of.rs:+23:9: +23:10 - StorageLive(_34); // scope 9 at $DIR/address_of.rs:+23:27: +23:28 - _34 = &raw const (*_3); // scope 9 at $DIR/address_of.rs:+23:27: +23:28 - _33 = move _34 as *const [i32] (Pointer(Unsize)); // scope 9 at $DIR/address_of.rs:+23:27: +23:28 - StorageDead(_34); // scope 9 at $DIR/address_of.rs:+23:27: +23:28 - FakeRead(ForLet(None), _33); // scope 9 at $DIR/address_of.rs:+23:9: +23:10 - AscribeUserType(_33, o, UserTypeProjection { base: UserType(19), projs: [] }); // scope 9 at $DIR/address_of.rs:+23:12: +23:24 - StorageLive(_35); // scope 10 at $DIR/address_of.rs:+25:5: +25:16 - StorageLive(_36); // scope 10 at $DIR/address_of.rs:+25:5: +25:16 - _36 = &raw mut (*_3); // scope 10 at $DIR/address_of.rs:+25:5: +25:6 - AscribeUserType(_36, o, UserTypeProjection { base: UserType(20), projs: [] }); // scope 10 at $DIR/address_of.rs:+25:5: +25:16 - _35 = _36; // scope 10 at $DIR/address_of.rs:+25:5: +25:16 - StorageDead(_36); // scope 10 at $DIR/address_of.rs:+25:16: +25:17 - StorageDead(_35); // scope 10 at $DIR/address_of.rs:+25:16: +25:17 - StorageLive(_37); // scope 10 at $DIR/address_of.rs:+26:5: +26:24 - _37 = &raw mut (*_3); // scope 10 at $DIR/address_of.rs:+26:5: +26:6 - StorageDead(_37); // scope 10 at $DIR/address_of.rs:+26:24: +26:25 - StorageLive(_38); // scope 10 at $DIR/address_of.rs:+27:5: +27:23 - StorageLive(_39); // scope 10 at $DIR/address_of.rs:+27:5: +27:23 - StorageLive(_40); // scope 10 at $DIR/address_of.rs:+27:5: +27:6 - _40 = &raw mut (*_3); // scope 10 at $DIR/address_of.rs:+27:5: +27:6 - _39 = move _40 as *mut dyn std::marker::Send (Pointer(Unsize)); // scope 10 at $DIR/address_of.rs:+27:5: +27:6 - StorageDead(_40); // scope 10 at $DIR/address_of.rs:+27:5: +27:6 - AscribeUserType(_39, o, UserTypeProjection { base: UserType(21), projs: [] }); // scope 10 at $DIR/address_of.rs:+27:5: +27:23 - _38 = _39; // scope 10 at $DIR/address_of.rs:+27:5: +27:23 - StorageDead(_39); // scope 10 at $DIR/address_of.rs:+27:23: +27:24 - StorageDead(_38); // scope 10 at $DIR/address_of.rs:+27:23: +27:24 - StorageLive(_41); // scope 10 at $DIR/address_of.rs:+28:5: +28:20 - StorageLive(_42); // scope 10 at $DIR/address_of.rs:+28:5: +28:6 - _42 = &raw mut (*_3); // scope 10 at $DIR/address_of.rs:+28:5: +28:6 - _41 = move _42 as *mut [i32] (Pointer(Unsize)); // scope 10 at $DIR/address_of.rs:+28:5: +28:6 - StorageDead(_42); // scope 10 at $DIR/address_of.rs:+28:5: +28:6 - StorageDead(_41); // scope 10 at $DIR/address_of.rs:+28:20: +28:21 - StorageLive(_43); // scope 10 at $DIR/address_of.rs:+30:9: +30:10 - _43 = &raw mut (*_3); // scope 10 at $DIR/address_of.rs:+30:21: +30:22 - FakeRead(ForLet(None), _43); // scope 10 at $DIR/address_of.rs:+30:9: +30:10 - AscribeUserType(_43, o, UserTypeProjection { base: UserType(23), projs: [] }); // scope 10 at $DIR/address_of.rs:+30:12: +30:18 - StorageLive(_44); // scope 11 at $DIR/address_of.rs:+31:9: +31:10 - _44 = &raw mut (*_3); // scope 11 at $DIR/address_of.rs:+31:29: +31:30 - FakeRead(ForLet(None), _44); // scope 11 at $DIR/address_of.rs:+31:9: +31:10 - AscribeUserType(_44, o, UserTypeProjection { base: UserType(25), projs: [] }); // scope 11 at $DIR/address_of.rs:+31:12: +31:26 - StorageLive(_45); // scope 12 at $DIR/address_of.rs:+32:9: +32:10 - StorageLive(_46); // scope 12 at $DIR/address_of.rs:+32:28: +32:29 - _46 = &raw mut (*_3); // scope 12 at $DIR/address_of.rs:+32:28: +32:29 - _45 = move _46 as *mut dyn std::marker::Send (Pointer(Unsize)); // scope 12 at $DIR/address_of.rs:+32:28: +32:29 - StorageDead(_46); // scope 12 at $DIR/address_of.rs:+32:28: +32:29 - FakeRead(ForLet(None), _45); // scope 12 at $DIR/address_of.rs:+32:9: +32:10 - AscribeUserType(_45, o, UserTypeProjection { base: UserType(27), projs: [] }); // scope 12 at $DIR/address_of.rs:+32:12: +32:25 - StorageLive(_47); // scope 13 at $DIR/address_of.rs:+33:9: +33:10 - StorageLive(_48); // scope 13 at $DIR/address_of.rs:+33:25: +33:26 - _48 = &raw mut (*_3); // scope 13 at $DIR/address_of.rs:+33:25: +33:26 - _47 = move _48 as *mut [i32] (Pointer(Unsize)); // scope 13 at $DIR/address_of.rs:+33:25: +33:26 - StorageDead(_48); // scope 13 at $DIR/address_of.rs:+33:25: +33:26 - FakeRead(ForLet(None), _47); // scope 13 at $DIR/address_of.rs:+33:9: +33:10 - AscribeUserType(_47, o, UserTypeProjection { base: UserType(29), projs: [] }); // scope 13 at $DIR/address_of.rs:+33:12: +33:22 - _0 = const (); // scope 0 at $DIR/address_of.rs:+0:26: +34:2 - StorageDead(_47); // scope 13 at $DIR/address_of.rs:+34:1: +34:2 - StorageDead(_45); // scope 12 at $DIR/address_of.rs:+34:1: +34:2 - StorageDead(_44); // scope 11 at $DIR/address_of.rs:+34:1: +34:2 - StorageDead(_43); // scope 10 at $DIR/address_of.rs:+34:1: +34:2 - StorageDead(_33); // scope 9 at $DIR/address_of.rs:+34:1: +34:2 - StorageDead(_31); // scope 8 at $DIR/address_of.rs:+34:1: +34:2 - StorageDead(_30); // scope 7 at $DIR/address_of.rs:+34:1: +34:2 - StorageDead(_29); // scope 6 at $DIR/address_of.rs:+34:1: +34:2 - StorageDead(_19); // scope 5 at $DIR/address_of.rs:+34:1: +34:2 - StorageDead(_17); // scope 4 at $DIR/address_of.rs:+34:1: +34:2 - StorageDead(_16); // scope 3 at $DIR/address_of.rs:+34:1: +34:2 - StorageDead(_15); // scope 2 at $DIR/address_of.rs:+34:1: +34:2 - StorageDead(_4); // scope 1 at $DIR/address_of.rs:+34:1: +34:2 - StorageDead(_3); // scope 1 at $DIR/address_of.rs:+34:1: +34:2 - StorageDead(_2); // scope 0 at $DIR/address_of.rs:+34:1: +34:2 - StorageDead(_1); // scope 0 at $DIR/address_of.rs:+34:1: +34:2 - return; // scope 0 at $DIR/address_of.rs:+34:2: +34:2 + StorageLive(_1); + StorageLive(_2); + _2 = [const 0_i32; 10]; + _1 = &_2; + FakeRead(ForLet(None), _1); + StorageLive(_3); + StorageLive(_4); + _4 = [const 0_i32; 10]; + _3 = &mut _4; + FakeRead(ForLet(None), _3); + StorageLive(_5); + StorageLive(_6); + _6 = &raw const (*_1); + AscribeUserType(_6, o, UserTypeProjection { base: UserType(0), projs: [] }); + _5 = _6; + StorageDead(_6); + StorageDead(_5); + StorageLive(_7); + _7 = &raw const (*_1); + StorageDead(_7); + StorageLive(_8); + StorageLive(_9); + StorageLive(_10); + _10 = &raw const (*_1); + _9 = move _10 as *const dyn std::marker::Send (Pointer(Unsize)); + StorageDead(_10); + AscribeUserType(_9, o, UserTypeProjection { base: UserType(1), projs: [] }); + _8 = _9; + StorageDead(_9); + StorageDead(_8); + StorageLive(_11); + StorageLive(_12); + _12 = &raw const (*_1); + _11 = move _12 as *const [i32] (Pointer(Unsize)); + StorageDead(_12); + StorageDead(_11); + StorageLive(_13); + StorageLive(_14); + _14 = &raw const (*_1); + _13 = move _14 as *const i32 (Pointer(ArrayToPointer)); + StorageDead(_14); + StorageDead(_13); + StorageLive(_15); + _15 = &raw const (*_1); + FakeRead(ForLet(None), _15); + AscribeUserType(_15, o, UserTypeProjection { base: UserType(3), projs: [] }); + StorageLive(_16); + _16 = &raw const (*_1); + FakeRead(ForLet(None), _16); + AscribeUserType(_16, o, UserTypeProjection { base: UserType(5), projs: [] }); + StorageLive(_17); + StorageLive(_18); + _18 = &raw const (*_1); + _17 = move _18 as *const dyn std::marker::Send (Pointer(Unsize)); + StorageDead(_18); + FakeRead(ForLet(None), _17); + AscribeUserType(_17, o, UserTypeProjection { base: UserType(7), projs: [] }); + StorageLive(_19); + StorageLive(_20); + _20 = &raw const (*_1); + _19 = move _20 as *const [i32] (Pointer(Unsize)); + StorageDead(_20); + FakeRead(ForLet(None), _19); + AscribeUserType(_19, o, UserTypeProjection { base: UserType(9), projs: [] }); + StorageLive(_21); + StorageLive(_22); + _22 = &raw const (*_3); + AscribeUserType(_22, o, UserTypeProjection { base: UserType(10), projs: [] }); + _21 = _22; + StorageDead(_22); + StorageDead(_21); + StorageLive(_23); + _23 = &raw const (*_3); + StorageDead(_23); + StorageLive(_24); + StorageLive(_25); + StorageLive(_26); + _26 = &raw const (*_3); + _25 = move _26 as *const dyn std::marker::Send (Pointer(Unsize)); + StorageDead(_26); + AscribeUserType(_25, o, UserTypeProjection { base: UserType(11), projs: [] }); + _24 = _25; + StorageDead(_25); + StorageDead(_24); + StorageLive(_27); + StorageLive(_28); + _28 = &raw const (*_3); + _27 = move _28 as *const [i32] (Pointer(Unsize)); + StorageDead(_28); + StorageDead(_27); + StorageLive(_29); + _29 = &raw const (*_3); + FakeRead(ForLet(None), _29); + AscribeUserType(_29, o, UserTypeProjection { base: UserType(13), projs: [] }); + StorageLive(_30); + _30 = &raw const (*_3); + FakeRead(ForLet(None), _30); + AscribeUserType(_30, o, UserTypeProjection { base: UserType(15), projs: [] }); + StorageLive(_31); + StorageLive(_32); + _32 = &raw const (*_3); + _31 = move _32 as *const dyn std::marker::Send (Pointer(Unsize)); + StorageDead(_32); + FakeRead(ForLet(None), _31); + AscribeUserType(_31, o, UserTypeProjection { base: UserType(17), projs: [] }); + StorageLive(_33); + StorageLive(_34); + _34 = &raw const (*_3); + _33 = move _34 as *const [i32] (Pointer(Unsize)); + StorageDead(_34); + FakeRead(ForLet(None), _33); + AscribeUserType(_33, o, UserTypeProjection { base: UserType(19), projs: [] }); + StorageLive(_35); + StorageLive(_36); + _36 = &raw mut (*_3); + AscribeUserType(_36, o, UserTypeProjection { base: UserType(20), projs: [] }); + _35 = _36; + StorageDead(_36); + StorageDead(_35); + StorageLive(_37); + _37 = &raw mut (*_3); + StorageDead(_37); + StorageLive(_38); + StorageLive(_39); + StorageLive(_40); + _40 = &raw mut (*_3); + _39 = move _40 as *mut dyn std::marker::Send (Pointer(Unsize)); + StorageDead(_40); + AscribeUserType(_39, o, UserTypeProjection { base: UserType(21), projs: [] }); + _38 = _39; + StorageDead(_39); + StorageDead(_38); + StorageLive(_41); + StorageLive(_42); + _42 = &raw mut (*_3); + _41 = move _42 as *mut [i32] (Pointer(Unsize)); + StorageDead(_42); + StorageDead(_41); + StorageLive(_43); + _43 = &raw mut (*_3); + FakeRead(ForLet(None), _43); + AscribeUserType(_43, o, UserTypeProjection { base: UserType(23), projs: [] }); + StorageLive(_44); + _44 = &raw mut (*_3); + FakeRead(ForLet(None), _44); + AscribeUserType(_44, o, UserTypeProjection { base: UserType(25), projs: [] }); + StorageLive(_45); + StorageLive(_46); + _46 = &raw mut (*_3); + _45 = move _46 as *mut dyn std::marker::Send (Pointer(Unsize)); + StorageDead(_46); + FakeRead(ForLet(None), _45); + AscribeUserType(_45, o, UserTypeProjection { base: UserType(27), projs: [] }); + StorageLive(_47); + StorageLive(_48); + _48 = &raw mut (*_3); + _47 = move _48 as *mut [i32] (Pointer(Unsize)); + StorageDead(_48); + FakeRead(ForLet(None), _47); + AscribeUserType(_47, o, UserTypeProjection { base: UserType(29), projs: [] }); + _0 = const (); + StorageDead(_47); + StorageDead(_45); + StorageDead(_44); + StorageDead(_43); + StorageDead(_33); + StorageDead(_31); + StorageDead(_30); + StorageDead(_29); + StorageDead(_19); + StorageDead(_17); + StorageDead(_16); + StorageDead(_15); + StorageDead(_4); + StorageDead(_3); + StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/address_of.borrow_and_cast.SimplifyCfg-initial.after.mir b/tests/mir-opt/address_of.borrow_and_cast.SimplifyCfg-initial.after.mir index 4c67376b56a68..a07ccd4605ead 100644 --- a/tests/mir-opt/address_of.borrow_and_cast.SimplifyCfg-initial.after.mir +++ b/tests/mir-opt/address_of.borrow_and_cast.SimplifyCfg-initial.after.mir @@ -1,47 +1,47 @@ // MIR for `borrow_and_cast` after SimplifyCfg-initial fn borrow_and_cast(_1: i32) -> () { - debug x => _1; // in scope 0 at $DIR/address_of.rs:+0:20: +0:25 - let mut _0: (); // return place in scope 0 at $DIR/address_of.rs:+0:32: +0:32 - let _2: *const i32; // in scope 0 at $DIR/address_of.rs:+1:9: +1:10 - let _3: &i32; // in scope 0 at $DIR/address_of.rs:+1:13: +1:15 - let _5: &mut i32; // in scope 0 at $DIR/address_of.rs:+2:13: +2:19 - let mut _7: &mut i32; // in scope 0 at $DIR/address_of.rs:+3:13: +3:19 + debug x => _1; + let mut _0: (); + let _2: *const i32; + let _3: &i32; + let _5: &mut i32; + let mut _7: &mut i32; scope 1 { - debug p => _2; // in scope 1 at $DIR/address_of.rs:+1:9: +1:10 - let _4: *const i32; // in scope 1 at $DIR/address_of.rs:+2:9: +2:10 + debug p => _2; + let _4: *const i32; scope 2 { - debug q => _4; // in scope 2 at $DIR/address_of.rs:+2:9: +2:10 - let _6: *mut i32; // in scope 2 at $DIR/address_of.rs:+3:9: +3:10 + debug q => _4; + let _6: *mut i32; scope 3 { - debug r => _6; // in scope 3 at $DIR/address_of.rs:+3:9: +3:10 + debug r => _6; } } } bb0: { - StorageLive(_2); // scope 0 at $DIR/address_of.rs:+1:9: +1:10 - StorageLive(_3); // scope 0 at $DIR/address_of.rs:+1:13: +1:15 - _3 = &_1; // scope 0 at $DIR/address_of.rs:+1:13: +1:15 - _2 = &raw const (*_3); // scope 0 at $DIR/address_of.rs:+1:13: +1:15 - FakeRead(ForLet(None), _2); // scope 0 at $DIR/address_of.rs:+1:9: +1:10 - StorageDead(_3); // scope 0 at $DIR/address_of.rs:+1:29: +1:30 - StorageLive(_4); // scope 1 at $DIR/address_of.rs:+2:9: +2:10 - StorageLive(_5); // scope 1 at $DIR/address_of.rs:+2:13: +2:19 - _5 = &mut _1; // scope 1 at $DIR/address_of.rs:+2:13: +2:19 - _4 = &raw const (*_5); // scope 1 at $DIR/address_of.rs:+2:13: +2:19 - FakeRead(ForLet(None), _4); // scope 1 at $DIR/address_of.rs:+2:9: +2:10 - StorageDead(_5); // scope 1 at $DIR/address_of.rs:+2:33: +2:34 - StorageLive(_6); // scope 2 at $DIR/address_of.rs:+3:9: +3:10 - StorageLive(_7); // scope 2 at $DIR/address_of.rs:+3:13: +3:19 - _7 = &mut _1; // scope 2 at $DIR/address_of.rs:+3:13: +3:19 - _6 = &raw mut (*_7); // scope 2 at $DIR/address_of.rs:+3:13: +3:19 - FakeRead(ForLet(None), _6); // scope 2 at $DIR/address_of.rs:+3:9: +3:10 - StorageDead(_7); // scope 2 at $DIR/address_of.rs:+3:31: +3:32 - _0 = const (); // scope 0 at $DIR/address_of.rs:+0:32: +4:2 - StorageDead(_6); // scope 2 at $DIR/address_of.rs:+4:1: +4:2 - StorageDead(_4); // scope 1 at $DIR/address_of.rs:+4:1: +4:2 - StorageDead(_2); // scope 0 at $DIR/address_of.rs:+4:1: +4:2 - return; // scope 0 at $DIR/address_of.rs:+4:2: +4:2 + StorageLive(_2); + StorageLive(_3); + _3 = &_1; + _2 = &raw const (*_3); + FakeRead(ForLet(None), _2); + StorageDead(_3); + StorageLive(_4); + StorageLive(_5); + _5 = &mut _1; + _4 = &raw const (*_5); + FakeRead(ForLet(None), _4); + StorageDead(_5); + StorageLive(_6); + StorageLive(_7); + _7 = &mut _1; + _6 = &raw mut (*_7); + FakeRead(ForLet(None), _6); + StorageDead(_7); + _0 = const (); + StorageDead(_6); + StorageDead(_4); + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/array_index_is_temporary.main.SimplifyCfg-elaborate-drops.after.panic-abort.mir b/tests/mir-opt/array_index_is_temporary.main.SimplifyCfg-elaborate-drops.after.panic-abort.mir index 6351d58f7d2ac..9b4c221df73d3 100644 --- a/tests/mir-opt/array_index_is_temporary.main.SimplifyCfg-elaborate-drops.after.panic-abort.mir +++ b/tests/mir-opt/array_index_is_temporary.main.SimplifyCfg-elaborate-drops.after.panic-abort.mir @@ -1,22 +1,22 @@ // MIR for `main` after SimplifyCfg-elaborate-drops fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/array_index_is_temporary.rs:+0:11: +0:11 - let mut _1: [u32; 3]; // in scope 0 at $DIR/array_index_is_temporary.rs:+1:9: +1:14 - let mut _4: &mut usize; // in scope 0 at $DIR/array_index_is_temporary.rs:+3:25: +3:31 - let mut _5: u32; // in scope 0 at $DIR/array_index_is_temporary.rs:+4:12: +4:29 - let mut _6: *mut usize; // in scope 0 at $DIR/array_index_is_temporary.rs:+4:25: +4:26 - let _7: usize; // in scope 0 at $DIR/array_index_is_temporary.rs:+4:7: +4:8 - let mut _8: usize; // in scope 0 at $DIR/array_index_is_temporary.rs:+4:5: +4:9 - let mut _9: bool; // in scope 0 at $DIR/array_index_is_temporary.rs:+4:5: +4:9 + let mut _0: (); + let mut _1: [u32; 3]; + let mut _4: &mut usize; + let mut _5: u32; + let mut _6: *mut usize; + let _7: usize; + let mut _8: usize; + let mut _9: bool; scope 1 { - debug x => _1; // in scope 1 at $DIR/array_index_is_temporary.rs:+1:9: +1:14 - let mut _2: usize; // in scope 1 at $DIR/array_index_is_temporary.rs:+2:9: +2:14 + debug x => _1; + let mut _2: usize; scope 2 { - debug y => _2; // in scope 2 at $DIR/array_index_is_temporary.rs:+2:9: +2:14 - let _3: *mut usize; // in scope 2 at $DIR/array_index_is_temporary.rs:+3:9: +3:10 + debug y => _2; + let _3: *mut usize; scope 3 { - debug z => _3; // in scope 3 at $DIR/array_index_is_temporary.rs:+3:9: +3:10 + debug z => _3; scope 4 { } } @@ -24,41 +24,38 @@ fn main() -> () { } bb0: { - StorageLive(_1); // scope 0 at $DIR/array_index_is_temporary.rs:+1:9: +1:14 - _1 = [const 42_u32, const 43_u32, const 44_u32]; // scope 0 at $DIR/array_index_is_temporary.rs:+1:17: +1:29 - StorageLive(_2); // scope 1 at $DIR/array_index_is_temporary.rs:+2:9: +2:14 - _2 = const 1_usize; // scope 1 at $DIR/array_index_is_temporary.rs:+2:17: +2:18 - StorageLive(_3); // scope 2 at $DIR/array_index_is_temporary.rs:+3:9: +3:10 - StorageLive(_4); // scope 2 at $DIR/array_index_is_temporary.rs:+3:25: +3:31 - _4 = &mut _2; // scope 2 at $DIR/array_index_is_temporary.rs:+3:25: +3:31 - _3 = &raw mut (*_4); // scope 2 at $DIR/array_index_is_temporary.rs:+3:25: +3:31 - StorageDead(_4); // scope 2 at $DIR/array_index_is_temporary.rs:+3:31: +3:32 - StorageLive(_5); // scope 3 at $DIR/array_index_is_temporary.rs:+4:12: +4:29 - StorageLive(_6); // scope 4 at $DIR/array_index_is_temporary.rs:+4:25: +4:26 - _6 = _3; // scope 4 at $DIR/array_index_is_temporary.rs:+4:25: +4:26 - _5 = foo(move _6) -> [return: bb1, unwind unreachable]; // scope 4 at $DIR/array_index_is_temporary.rs:+4:21: +4:27 - // mir::Constant - // + span: $DIR/array_index_is_temporary.rs:17:21: 17:24 - // + literal: Const { ty: unsafe fn(*mut usize) -> u32 {foo}, val: Value() } + StorageLive(_1); + _1 = [const 42_u32, const 43_u32, const 44_u32]; + StorageLive(_2); + _2 = const 1_usize; + StorageLive(_3); + StorageLive(_4); + _4 = &mut _2; + _3 = &raw mut (*_4); + StorageDead(_4); + StorageLive(_5); + StorageLive(_6); + _6 = _3; + _5 = foo(move _6) -> [return: bb1, unwind unreachable]; } bb1: { - StorageDead(_6); // scope 4 at $DIR/array_index_is_temporary.rs:+4:26: +4:27 - StorageLive(_7); // scope 3 at $DIR/array_index_is_temporary.rs:+4:7: +4:8 - _7 = _2; // scope 3 at $DIR/array_index_is_temporary.rs:+4:7: +4:8 - _8 = Len(_1); // scope 3 at $DIR/array_index_is_temporary.rs:+4:5: +4:9 - _9 = Lt(_7, _8); // scope 3 at $DIR/array_index_is_temporary.rs:+4:5: +4:9 - assert(move _9, "index out of bounds: the length is {} but the index is {}", move _8, _7) -> [success: bb2, unwind unreachable]; // scope 3 at $DIR/array_index_is_temporary.rs:+4:5: +4:9 + StorageDead(_6); + StorageLive(_7); + _7 = _2; + _8 = Len(_1); + _9 = Lt(_7, _8); + assert(move _9, "index out of bounds: the length is {} but the index is {}", move _8, _7) -> [success: bb2, unwind unreachable]; } bb2: { - _1[_7] = move _5; // scope 3 at $DIR/array_index_is_temporary.rs:+4:5: +4:29 - StorageDead(_5); // scope 3 at $DIR/array_index_is_temporary.rs:+4:28: +4:29 - StorageDead(_7); // scope 3 at $DIR/array_index_is_temporary.rs:+4:29: +4:30 - _0 = const (); // scope 0 at $DIR/array_index_is_temporary.rs:+0:11: +5:2 - StorageDead(_3); // scope 2 at $DIR/array_index_is_temporary.rs:+5:1: +5:2 - StorageDead(_2); // scope 1 at $DIR/array_index_is_temporary.rs:+5:1: +5:2 - StorageDead(_1); // scope 0 at $DIR/array_index_is_temporary.rs:+5:1: +5:2 - return; // scope 0 at $DIR/array_index_is_temporary.rs:+5:2: +5:2 + _1[_7] = move _5; + StorageDead(_5); + StorageDead(_7); + _0 = const (); + StorageDead(_3); + StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/array_index_is_temporary.main.SimplifyCfg-elaborate-drops.after.panic-unwind.mir b/tests/mir-opt/array_index_is_temporary.main.SimplifyCfg-elaborate-drops.after.panic-unwind.mir index 4be382fac8c32..2f6c92d9e859d 100644 --- a/tests/mir-opt/array_index_is_temporary.main.SimplifyCfg-elaborate-drops.after.panic-unwind.mir +++ b/tests/mir-opt/array_index_is_temporary.main.SimplifyCfg-elaborate-drops.after.panic-unwind.mir @@ -1,22 +1,22 @@ // MIR for `main` after SimplifyCfg-elaborate-drops fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/array_index_is_temporary.rs:+0:11: +0:11 - let mut _1: [u32; 3]; // in scope 0 at $DIR/array_index_is_temporary.rs:+1:9: +1:14 - let mut _4: &mut usize; // in scope 0 at $DIR/array_index_is_temporary.rs:+3:25: +3:31 - let mut _5: u32; // in scope 0 at $DIR/array_index_is_temporary.rs:+4:12: +4:29 - let mut _6: *mut usize; // in scope 0 at $DIR/array_index_is_temporary.rs:+4:25: +4:26 - let _7: usize; // in scope 0 at $DIR/array_index_is_temporary.rs:+4:7: +4:8 - let mut _8: usize; // in scope 0 at $DIR/array_index_is_temporary.rs:+4:5: +4:9 - let mut _9: bool; // in scope 0 at $DIR/array_index_is_temporary.rs:+4:5: +4:9 + let mut _0: (); + let mut _1: [u32; 3]; + let mut _4: &mut usize; + let mut _5: u32; + let mut _6: *mut usize; + let _7: usize; + let mut _8: usize; + let mut _9: bool; scope 1 { - debug x => _1; // in scope 1 at $DIR/array_index_is_temporary.rs:+1:9: +1:14 - let mut _2: usize; // in scope 1 at $DIR/array_index_is_temporary.rs:+2:9: +2:14 + debug x => _1; + let mut _2: usize; scope 2 { - debug y => _2; // in scope 2 at $DIR/array_index_is_temporary.rs:+2:9: +2:14 - let _3: *mut usize; // in scope 2 at $DIR/array_index_is_temporary.rs:+3:9: +3:10 + debug y => _2; + let _3: *mut usize; scope 3 { - debug z => _3; // in scope 3 at $DIR/array_index_is_temporary.rs:+3:9: +3:10 + debug z => _3; scope 4 { } } @@ -24,41 +24,38 @@ fn main() -> () { } bb0: { - StorageLive(_1); // scope 0 at $DIR/array_index_is_temporary.rs:+1:9: +1:14 - _1 = [const 42_u32, const 43_u32, const 44_u32]; // scope 0 at $DIR/array_index_is_temporary.rs:+1:17: +1:29 - StorageLive(_2); // scope 1 at $DIR/array_index_is_temporary.rs:+2:9: +2:14 - _2 = const 1_usize; // scope 1 at $DIR/array_index_is_temporary.rs:+2:17: +2:18 - StorageLive(_3); // scope 2 at $DIR/array_index_is_temporary.rs:+3:9: +3:10 - StorageLive(_4); // scope 2 at $DIR/array_index_is_temporary.rs:+3:25: +3:31 - _4 = &mut _2; // scope 2 at $DIR/array_index_is_temporary.rs:+3:25: +3:31 - _3 = &raw mut (*_4); // scope 2 at $DIR/array_index_is_temporary.rs:+3:25: +3:31 - StorageDead(_4); // scope 2 at $DIR/array_index_is_temporary.rs:+3:31: +3:32 - StorageLive(_5); // scope 3 at $DIR/array_index_is_temporary.rs:+4:12: +4:29 - StorageLive(_6); // scope 4 at $DIR/array_index_is_temporary.rs:+4:25: +4:26 - _6 = _3; // scope 4 at $DIR/array_index_is_temporary.rs:+4:25: +4:26 - _5 = foo(move _6) -> bb1; // scope 4 at $DIR/array_index_is_temporary.rs:+4:21: +4:27 - // mir::Constant - // + span: $DIR/array_index_is_temporary.rs:17:21: 17:24 - // + literal: Const { ty: unsafe fn(*mut usize) -> u32 {foo}, val: Value() } + StorageLive(_1); + _1 = [const 42_u32, const 43_u32, const 44_u32]; + StorageLive(_2); + _2 = const 1_usize; + StorageLive(_3); + StorageLive(_4); + _4 = &mut _2; + _3 = &raw mut (*_4); + StorageDead(_4); + StorageLive(_5); + StorageLive(_6); + _6 = _3; + _5 = foo(move _6) -> bb1; } bb1: { - StorageDead(_6); // scope 4 at $DIR/array_index_is_temporary.rs:+4:26: +4:27 - StorageLive(_7); // scope 3 at $DIR/array_index_is_temporary.rs:+4:7: +4:8 - _7 = _2; // scope 3 at $DIR/array_index_is_temporary.rs:+4:7: +4:8 - _8 = Len(_1); // scope 3 at $DIR/array_index_is_temporary.rs:+4:5: +4:9 - _9 = Lt(_7, _8); // scope 3 at $DIR/array_index_is_temporary.rs:+4:5: +4:9 - assert(move _9, "index out of bounds: the length is {} but the index is {}", move _8, _7) -> bb2; // scope 3 at $DIR/array_index_is_temporary.rs:+4:5: +4:9 + StorageDead(_6); + StorageLive(_7); + _7 = _2; + _8 = Len(_1); + _9 = Lt(_7, _8); + assert(move _9, "index out of bounds: the length is {} but the index is {}", move _8, _7) -> bb2; } bb2: { - _1[_7] = move _5; // scope 3 at $DIR/array_index_is_temporary.rs:+4:5: +4:29 - StorageDead(_5); // scope 3 at $DIR/array_index_is_temporary.rs:+4:28: +4:29 - StorageDead(_7); // scope 3 at $DIR/array_index_is_temporary.rs:+4:29: +4:30 - _0 = const (); // scope 0 at $DIR/array_index_is_temporary.rs:+0:11: +5:2 - StorageDead(_3); // scope 2 at $DIR/array_index_is_temporary.rs:+5:1: +5:2 - StorageDead(_2); // scope 1 at $DIR/array_index_is_temporary.rs:+5:1: +5:2 - StorageDead(_1); // scope 0 at $DIR/array_index_is_temporary.rs:+5:1: +5:2 - return; // scope 0 at $DIR/array_index_is_temporary.rs:+5:2: +5:2 + _1[_7] = move _5; + StorageDead(_5); + StorageDead(_7); + _0 = const (); + StorageDead(_3); + StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/asm_unwind_panic_abort.main.AbortUnwindingCalls.after.mir b/tests/mir-opt/asm_unwind_panic_abort.main.AbortUnwindingCalls.after.mir index f6954ab35263f..a59ffe97bf013 100644 --- a/tests/mir-opt/asm_unwind_panic_abort.main.AbortUnwindingCalls.after.mir +++ b/tests/mir-opt/asm_unwind_panic_abort.main.AbortUnwindingCalls.after.mir @@ -1,20 +1,20 @@ // MIR for `main` after AbortUnwindingCalls fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/asm_unwind_panic_abort.rs:+0:11: +0:11 - let _1: (); // in scope 0 at $DIR/asm_unwind_panic_abort.rs:+2:9: +2:49 + let mut _0: (); + let _1: (); scope 1 { } bb0: { - StorageLive(_1); // scope 1 at $DIR/asm_unwind_panic_abort.rs:+2:9: +2:49 - _1 = const (); // scope 1 at $DIR/asm_unwind_panic_abort.rs:+2:9: +2:49 - asm!("", options(MAY_UNWIND)) -> [return: bb1, unwind terminate]; // scope 1 at $DIR/asm_unwind_panic_abort.rs:+2:9: +2:49 + StorageLive(_1); + _1 = const (); + asm!("", options(MAY_UNWIND)) -> [return: bb1, unwind terminate]; } bb1: { - StorageDead(_1); // scope 1 at $DIR/asm_unwind_panic_abort.rs:+2:48: +2:49 - _0 = const (); // scope 1 at $DIR/asm_unwind_panic_abort.rs:+1:5: +3:6 - return; // scope 0 at $DIR/asm_unwind_panic_abort.rs:+4:2: +4:2 + StorageDead(_1); + _0 = const (); + return; } } diff --git a/tests/mir-opt/basic_assignment.main.ElaborateDrops.diff b/tests/mir-opt/basic_assignment.main.ElaborateDrops.diff index d663c343515bc..41732211628ea 100644 --- a/tests/mir-opt/basic_assignment.main.ElaborateDrops.diff +++ b/tests/mir-opt/basic_assignment.main.ElaborateDrops.diff @@ -2,88 +2,88 @@ + // MIR for `main` after ElaborateDrops fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/basic_assignment.rs:+0:11: +0:11 - let _1: bool; // in scope 0 at $DIR/basic_assignment.rs:+1:9: +1:17 - let mut _3: bool; // in scope 0 at $DIR/basic_assignment.rs:+6:16: +6:24 - let mut _6: std::option::Option>; // in scope 0 at $DIR/basic_assignment.rs:+13:14: +13:20 + let mut _0: (); + let _1: bool; + let mut _3: bool; + let mut _6: std::option::Option>; scope 1 { - debug nodrop_x => _1; // in scope 1 at $DIR/basic_assignment.rs:+1:9: +1:17 - let _2: bool; // in scope 1 at $DIR/basic_assignment.rs:+2:9: +2:17 + debug nodrop_x => _1; + let _2: bool; scope 2 { - debug nodrop_y => _2; // in scope 2 at $DIR/basic_assignment.rs:+2:9: +2:17 - let _4: std::option::Option>; // in scope 2 at $DIR/basic_assignment.rs:+8:9: +8:15 + debug nodrop_y => _2; + let _4: std::option::Option>; scope 3 { - debug drop_x => _4; // in scope 3 at $DIR/basic_assignment.rs:+8:9: +8:15 - let _5: std::option::Option>; // in scope 3 at $DIR/basic_assignment.rs:+9:9: +9:15 + debug drop_x => _4; + let _5: std::option::Option>; scope 4 { - debug drop_y => _5; // in scope 4 at $DIR/basic_assignment.rs:+9:9: +9:15 + debug drop_y => _5; } } } } bb0: { - StorageLive(_1); // scope 0 at $DIR/basic_assignment.rs:+1:9: +1:17 - _1 = const false; // scope 0 at $DIR/basic_assignment.rs:+1:20: +1:25 - StorageLive(_2); // scope 1 at $DIR/basic_assignment.rs:+2:9: +2:17 - StorageLive(_3); // scope 2 at $DIR/basic_assignment.rs:+6:16: +6:24 - _3 = _1; // scope 2 at $DIR/basic_assignment.rs:+6:16: +6:24 - _2 = move _3; // scope 2 at $DIR/basic_assignment.rs:+6:5: +6:24 - StorageDead(_3); // scope 2 at $DIR/basic_assignment.rs:+6:23: +6:24 - StorageLive(_4); // scope 2 at $DIR/basic_assignment.rs:+8:9: +8:15 - _4 = Option::>::None; // scope 2 at $DIR/basic_assignment.rs:+8:36: +8:40 - StorageLive(_5); // scope 3 at $DIR/basic_assignment.rs:+9:9: +9:15 - StorageLive(_6); // scope 4 at $DIR/basic_assignment.rs:+13:14: +13:20 - _6 = move _4; // scope 4 at $DIR/basic_assignment.rs:+13:14: +13:20 -- drop(_5) -> [return: bb1, unwind: bb2]; // scope 4 at $DIR/basic_assignment.rs:+13:5: +13:11 -+ goto -> bb1; // scope 4 at $DIR/basic_assignment.rs:+13:5: +13:11 + StorageLive(_1); + _1 = const false; + StorageLive(_2); + StorageLive(_3); + _3 = _1; + _2 = move _3; + StorageDead(_3); + StorageLive(_4); + _4 = Option::>::None; + StorageLive(_5); + StorageLive(_6); + _6 = move _4; +- drop(_5) -> [return: bb1, unwind: bb2]; ++ goto -> bb1; } bb1: { - _5 = move _6; // scope 4 at $DIR/basic_assignment.rs:+13:5: +13:11 -- drop(_6) -> [return: bb3, unwind: bb6]; // scope 4 at $DIR/basic_assignment.rs:+13:19: +13:20 -+ goto -> bb3; // scope 4 at $DIR/basic_assignment.rs:+13:19: +13:20 + _5 = move _6; +- drop(_6) -> [return: bb3, unwind: bb6]; ++ goto -> bb3; } bb2 (cleanup): { - _5 = move _6; // scope 4 at $DIR/basic_assignment.rs:+13:5: +13:11 - drop(_6) -> [return: bb6, unwind terminate]; // scope 4 at $DIR/basic_assignment.rs:+13:19: +13:20 + _5 = move _6; + drop(_6) -> [return: bb6, unwind terminate]; } bb3: { - StorageDead(_6); // scope 4 at $DIR/basic_assignment.rs:+13:19: +13:20 - _0 = const (); // scope 0 at $DIR/basic_assignment.rs:+0:11: +14:2 - drop(_5) -> [return: bb4, unwind: bb7]; // scope 3 at $DIR/basic_assignment.rs:+14:1: +14:2 + StorageDead(_6); + _0 = const (); + drop(_5) -> [return: bb4, unwind: bb7]; } bb4: { - StorageDead(_5); // scope 3 at $DIR/basic_assignment.rs:+14:1: +14:2 -- drop(_4) -> bb5; // scope 2 at $DIR/basic_assignment.rs:+14:1: +14:2 -+ goto -> bb5; // scope 2 at $DIR/basic_assignment.rs:+14:1: +14:2 + StorageDead(_5); +- drop(_4) -> bb5; ++ goto -> bb5; } bb5: { - StorageDead(_4); // scope 2 at $DIR/basic_assignment.rs:+14:1: +14:2 - StorageDead(_2); // scope 1 at $DIR/basic_assignment.rs:+14:1: +14:2 - StorageDead(_1); // scope 0 at $DIR/basic_assignment.rs:+14:1: +14:2 - return; // scope 0 at $DIR/basic_assignment.rs:+14:2: +14:2 + StorageDead(_4); + StorageDead(_2); + StorageDead(_1); + return; } bb6 (cleanup): { - drop(_5) -> [return: bb7, unwind terminate]; // scope 3 at $DIR/basic_assignment.rs:+14:1: +14:2 + drop(_5) -> [return: bb7, unwind terminate]; } bb7 (cleanup): { -- drop(_4) -> [return: bb8, unwind terminate]; // scope 2 at $DIR/basic_assignment.rs:+14:1: +14:2 -+ goto -> bb8; // scope 2 at $DIR/basic_assignment.rs:+14:1: +14:2 +- drop(_4) -> [return: bb8, unwind terminate]; ++ goto -> bb8; } bb8 (cleanup): { - resume; // scope 0 at $DIR/basic_assignment.rs:+0:1: +14:2 + resume; + } + + bb9 (cleanup): { -+ unreachable; // scope 0 at $DIR/basic_assignment.rs:+0:1: +14:2 ++ unreachable; } } diff --git a/tests/mir-opt/basic_assignment.main.SimplifyCfg-initial.after.mir b/tests/mir-opt/basic_assignment.main.SimplifyCfg-initial.after.mir index d63497e3a98d6..a9bc2e8903448 100644 --- a/tests/mir-opt/basic_assignment.main.SimplifyCfg-initial.after.mir +++ b/tests/mir-opt/basic_assignment.main.SimplifyCfg-initial.after.mir @@ -5,82 +5,82 @@ | 1: user_ty: Canonical { value: Ty(std::option::Option>), max_universe: U0, variables: [] }, span: $DIR/basic_assignment.rs:20:17: 20:33, inferred_ty: std::option::Option> | fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/basic_assignment.rs:+0:11: +0:11 - let _1: bool; // in scope 0 at $DIR/basic_assignment.rs:+1:9: +1:17 - let mut _3: bool; // in scope 0 at $DIR/basic_assignment.rs:+6:16: +6:24 - let mut _6: std::option::Option>; // in scope 0 at $DIR/basic_assignment.rs:+13:14: +13:20 + let mut _0: (); + let _1: bool; + let mut _3: bool; + let mut _6: std::option::Option>; scope 1 { - debug nodrop_x => _1; // in scope 1 at $DIR/basic_assignment.rs:+1:9: +1:17 - let _2: bool; // in scope 1 at $DIR/basic_assignment.rs:+2:9: +2:17 + debug nodrop_x => _1; + let _2: bool; scope 2 { - debug nodrop_y => _2; // in scope 2 at $DIR/basic_assignment.rs:+2:9: +2:17 - let _4: std::option::Option> as UserTypeProjection { base: UserType(0), projs: [] }; // in scope 2 at $DIR/basic_assignment.rs:+8:9: +8:15 + debug nodrop_y => _2; + let _4: std::option::Option> as UserTypeProjection { base: UserType(0), projs: [] }; scope 3 { - debug drop_x => _4; // in scope 3 at $DIR/basic_assignment.rs:+8:9: +8:15 - let _5: std::option::Option>; // in scope 3 at $DIR/basic_assignment.rs:+9:9: +9:15 + debug drop_x => _4; + let _5: std::option::Option>; scope 4 { - debug drop_y => _5; // in scope 4 at $DIR/basic_assignment.rs:+9:9: +9:15 + debug drop_y => _5; } } } } bb0: { - StorageLive(_1); // scope 0 at $DIR/basic_assignment.rs:+1:9: +1:17 - _1 = const false; // scope 0 at $DIR/basic_assignment.rs:+1:20: +1:25 - FakeRead(ForLet(None), _1); // scope 0 at $DIR/basic_assignment.rs:+1:9: +1:17 - StorageLive(_2); // scope 1 at $DIR/basic_assignment.rs:+2:9: +2:17 - StorageLive(_3); // scope 2 at $DIR/basic_assignment.rs:+6:16: +6:24 - _3 = _1; // scope 2 at $DIR/basic_assignment.rs:+6:16: +6:24 - _2 = move _3; // scope 2 at $DIR/basic_assignment.rs:+6:5: +6:24 - StorageDead(_3); // scope 2 at $DIR/basic_assignment.rs:+6:23: +6:24 - StorageLive(_4); // scope 2 at $DIR/basic_assignment.rs:+8:9: +8:15 - _4 = Option::>::None; // scope 2 at $DIR/basic_assignment.rs:+8:36: +8:40 - FakeRead(ForLet(None), _4); // scope 2 at $DIR/basic_assignment.rs:+8:9: +8:15 - AscribeUserType(_4, o, UserTypeProjection { base: UserType(1), projs: [] }); // scope 2 at $DIR/basic_assignment.rs:+8:17: +8:33 - StorageLive(_5); // scope 3 at $DIR/basic_assignment.rs:+9:9: +9:15 - StorageLive(_6); // scope 4 at $DIR/basic_assignment.rs:+13:14: +13:20 - _6 = move _4; // scope 4 at $DIR/basic_assignment.rs:+13:14: +13:20 - drop(_5) -> [return: bb1, unwind: bb2]; // scope 4 at $DIR/basic_assignment.rs:+13:5: +13:11 + StorageLive(_1); + _1 = const false; + FakeRead(ForLet(None), _1); + StorageLive(_2); + StorageLive(_3); + _3 = _1; + _2 = move _3; + StorageDead(_3); + StorageLive(_4); + _4 = Option::>::None; + FakeRead(ForLet(None), _4); + AscribeUserType(_4, o, UserTypeProjection { base: UserType(1), projs: [] }); + StorageLive(_5); + StorageLive(_6); + _6 = move _4; + drop(_5) -> [return: bb1, unwind: bb2]; } bb1: { - _5 = move _6; // scope 4 at $DIR/basic_assignment.rs:+13:5: +13:11 - drop(_6) -> [return: bb3, unwind: bb6]; // scope 4 at $DIR/basic_assignment.rs:+13:19: +13:20 + _5 = move _6; + drop(_6) -> [return: bb3, unwind: bb6]; } bb2 (cleanup): { - _5 = move _6; // scope 4 at $DIR/basic_assignment.rs:+13:5: +13:11 - drop(_6) -> [return: bb6, unwind terminate]; // scope 4 at $DIR/basic_assignment.rs:+13:19: +13:20 + _5 = move _6; + drop(_6) -> [return: bb6, unwind terminate]; } bb3: { - StorageDead(_6); // scope 4 at $DIR/basic_assignment.rs:+13:19: +13:20 - _0 = const (); // scope 0 at $DIR/basic_assignment.rs:+0:11: +14:2 - drop(_5) -> [return: bb4, unwind: bb7]; // scope 3 at $DIR/basic_assignment.rs:+14:1: +14:2 + StorageDead(_6); + _0 = const (); + drop(_5) -> [return: bb4, unwind: bb7]; } bb4: { - StorageDead(_5); // scope 3 at $DIR/basic_assignment.rs:+14:1: +14:2 - drop(_4) -> [return: bb5, unwind: bb8]; // scope 2 at $DIR/basic_assignment.rs:+14:1: +14:2 + StorageDead(_5); + drop(_4) -> [return: bb5, unwind: bb8]; } bb5: { - StorageDead(_4); // scope 2 at $DIR/basic_assignment.rs:+14:1: +14:2 - StorageDead(_2); // scope 1 at $DIR/basic_assignment.rs:+14:1: +14:2 - StorageDead(_1); // scope 0 at $DIR/basic_assignment.rs:+14:1: +14:2 - return; // scope 0 at $DIR/basic_assignment.rs:+14:2: +14:2 + StorageDead(_4); + StorageDead(_2); + StorageDead(_1); + return; } bb6 (cleanup): { - drop(_5) -> [return: bb7, unwind terminate]; // scope 3 at $DIR/basic_assignment.rs:+14:1: +14:2 + drop(_5) -> [return: bb7, unwind terminate]; } bb7 (cleanup): { - drop(_4) -> [return: bb8, unwind terminate]; // scope 2 at $DIR/basic_assignment.rs:+14:1: +14:2 + drop(_4) -> [return: bb8, unwind terminate]; } bb8 (cleanup): { - resume; // scope 0 at $DIR/basic_assignment.rs:+0:1: +14:2 + resume; } } diff --git a/tests/mir-opt/bool_compare.opt1.InstSimplify.diff b/tests/mir-opt/bool_compare.opt1.InstSimplify.diff index 6c9df8f042b79..8d0011d5067f7 100644 --- a/tests/mir-opt/bool_compare.opt1.InstSimplify.diff +++ b/tests/mir-opt/bool_compare.opt1.InstSimplify.diff @@ -2,34 +2,34 @@ + // MIR for `opt1` after InstSimplify fn opt1(_1: bool) -> u32 { - debug x => _1; // in scope 0 at $DIR/bool_compare.rs:+0:9: +0:10 - let mut _0: u32; // return place in scope 0 at $DIR/bool_compare.rs:+0:21: +0:24 - let mut _2: bool; // in scope 0 at $DIR/bool_compare.rs:+1:8: +1:17 - let mut _3: bool; // in scope 0 at $DIR/bool_compare.rs:+1:8: +1:9 + debug x => _1; + let mut _0: u32; + let mut _2: bool; + let mut _3: bool; bb0: { - StorageLive(_2); // scope 0 at $DIR/bool_compare.rs:+1:8: +1:17 - StorageLive(_3); // scope 0 at $DIR/bool_compare.rs:+1:8: +1:9 - _3 = _1; // scope 0 at $DIR/bool_compare.rs:+1:8: +1:9 -- _2 = Ne(move _3, const true); // scope 0 at $DIR/bool_compare.rs:+1:8: +1:17 -+ _2 = Not(move _3); // scope 0 at $DIR/bool_compare.rs:+1:8: +1:17 - StorageDead(_3); // scope 0 at $DIR/bool_compare.rs:+1:16: +1:17 - switchInt(move _2) -> [0: bb2, otherwise: bb1]; // scope 0 at $DIR/bool_compare.rs:+1:8: +1:17 + StorageLive(_2); + StorageLive(_3); + _3 = _1; +- _2 = Ne(move _3, const true); ++ _2 = Not(move _3); + StorageDead(_3); + switchInt(move _2) -> [0: bb2, otherwise: bb1]; } bb1: { - _0 = const 0_u32; // scope 0 at $DIR/bool_compare.rs:+1:20: +1:21 - goto -> bb3; // scope 0 at $DIR/bool_compare.rs:+1:5: +1:34 + _0 = const 0_u32; + goto -> bb3; } bb2: { - _0 = const 1_u32; // scope 0 at $DIR/bool_compare.rs:+1:31: +1:32 - goto -> bb3; // scope 0 at $DIR/bool_compare.rs:+1:5: +1:34 + _0 = const 1_u32; + goto -> bb3; } bb3: { - StorageDead(_2); // scope 0 at $DIR/bool_compare.rs:+1:33: +1:34 - return; // scope 0 at $DIR/bool_compare.rs:+2:2: +2:2 + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/bool_compare.opt2.InstSimplify.diff b/tests/mir-opt/bool_compare.opt2.InstSimplify.diff index 9fb3982654abb..35f1068709b26 100644 --- a/tests/mir-opt/bool_compare.opt2.InstSimplify.diff +++ b/tests/mir-opt/bool_compare.opt2.InstSimplify.diff @@ -2,34 +2,34 @@ + // MIR for `opt2` after InstSimplify fn opt2(_1: bool) -> u32 { - debug x => _1; // in scope 0 at $DIR/bool_compare.rs:+0:9: +0:10 - let mut _0: u32; // return place in scope 0 at $DIR/bool_compare.rs:+0:21: +0:24 - let mut _2: bool; // in scope 0 at $DIR/bool_compare.rs:+1:8: +1:17 - let mut _3: bool; // in scope 0 at $DIR/bool_compare.rs:+1:16: +1:17 + debug x => _1; + let mut _0: u32; + let mut _2: bool; + let mut _3: bool; bb0: { - StorageLive(_2); // scope 0 at $DIR/bool_compare.rs:+1:8: +1:17 - StorageLive(_3); // scope 0 at $DIR/bool_compare.rs:+1:16: +1:17 - _3 = _1; // scope 0 at $DIR/bool_compare.rs:+1:16: +1:17 -- _2 = Ne(const true, move _3); // scope 0 at $DIR/bool_compare.rs:+1:8: +1:17 -+ _2 = Not(move _3); // scope 0 at $DIR/bool_compare.rs:+1:8: +1:17 - StorageDead(_3); // scope 0 at $DIR/bool_compare.rs:+1:16: +1:17 - switchInt(move _2) -> [0: bb2, otherwise: bb1]; // scope 0 at $DIR/bool_compare.rs:+1:8: +1:17 + StorageLive(_2); + StorageLive(_3); + _3 = _1; +- _2 = Ne(const true, move _3); ++ _2 = Not(move _3); + StorageDead(_3); + switchInt(move _2) -> [0: bb2, otherwise: bb1]; } bb1: { - _0 = const 0_u32; // scope 0 at $DIR/bool_compare.rs:+1:20: +1:21 - goto -> bb3; // scope 0 at $DIR/bool_compare.rs:+1:5: +1:34 + _0 = const 0_u32; + goto -> bb3; } bb2: { - _0 = const 1_u32; // scope 0 at $DIR/bool_compare.rs:+1:31: +1:32 - goto -> bb3; // scope 0 at $DIR/bool_compare.rs:+1:5: +1:34 + _0 = const 1_u32; + goto -> bb3; } bb3: { - StorageDead(_2); // scope 0 at $DIR/bool_compare.rs:+1:33: +1:34 - return; // scope 0 at $DIR/bool_compare.rs:+2:2: +2:2 + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/bool_compare.opt3.InstSimplify.diff b/tests/mir-opt/bool_compare.opt3.InstSimplify.diff index 3a47da86735e3..ab15c30ca1185 100644 --- a/tests/mir-opt/bool_compare.opt3.InstSimplify.diff +++ b/tests/mir-opt/bool_compare.opt3.InstSimplify.diff @@ -2,34 +2,34 @@ + // MIR for `opt3` after InstSimplify fn opt3(_1: bool) -> u32 { - debug x => _1; // in scope 0 at $DIR/bool_compare.rs:+0:9: +0:10 - let mut _0: u32; // return place in scope 0 at $DIR/bool_compare.rs:+0:21: +0:24 - let mut _2: bool; // in scope 0 at $DIR/bool_compare.rs:+1:8: +1:18 - let mut _3: bool; // in scope 0 at $DIR/bool_compare.rs:+1:8: +1:9 + debug x => _1; + let mut _0: u32; + let mut _2: bool; + let mut _3: bool; bb0: { - StorageLive(_2); // scope 0 at $DIR/bool_compare.rs:+1:8: +1:18 - StorageLive(_3); // scope 0 at $DIR/bool_compare.rs:+1:8: +1:9 - _3 = _1; // scope 0 at $DIR/bool_compare.rs:+1:8: +1:9 -- _2 = Eq(move _3, const false); // scope 0 at $DIR/bool_compare.rs:+1:8: +1:18 -+ _2 = Not(move _3); // scope 0 at $DIR/bool_compare.rs:+1:8: +1:18 - StorageDead(_3); // scope 0 at $DIR/bool_compare.rs:+1:17: +1:18 - switchInt(move _2) -> [0: bb2, otherwise: bb1]; // scope 0 at $DIR/bool_compare.rs:+1:8: +1:18 + StorageLive(_2); + StorageLive(_3); + _3 = _1; +- _2 = Eq(move _3, const false); ++ _2 = Not(move _3); + StorageDead(_3); + switchInt(move _2) -> [0: bb2, otherwise: bb1]; } bb1: { - _0 = const 0_u32; // scope 0 at $DIR/bool_compare.rs:+1:21: +1:22 - goto -> bb3; // scope 0 at $DIR/bool_compare.rs:+1:5: +1:35 + _0 = const 0_u32; + goto -> bb3; } bb2: { - _0 = const 1_u32; // scope 0 at $DIR/bool_compare.rs:+1:32: +1:33 - goto -> bb3; // scope 0 at $DIR/bool_compare.rs:+1:5: +1:35 + _0 = const 1_u32; + goto -> bb3; } bb3: { - StorageDead(_2); // scope 0 at $DIR/bool_compare.rs:+1:34: +1:35 - return; // scope 0 at $DIR/bool_compare.rs:+2:2: +2:2 + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/bool_compare.opt4.InstSimplify.diff b/tests/mir-opt/bool_compare.opt4.InstSimplify.diff index 5319c987d418b..40fd1cfe112d2 100644 --- a/tests/mir-opt/bool_compare.opt4.InstSimplify.diff +++ b/tests/mir-opt/bool_compare.opt4.InstSimplify.diff @@ -2,34 +2,34 @@ + // MIR for `opt4` after InstSimplify fn opt4(_1: bool) -> u32 { - debug x => _1; // in scope 0 at $DIR/bool_compare.rs:+0:9: +0:10 - let mut _0: u32; // return place in scope 0 at $DIR/bool_compare.rs:+0:21: +0:24 - let mut _2: bool; // in scope 0 at $DIR/bool_compare.rs:+1:8: +1:18 - let mut _3: bool; // in scope 0 at $DIR/bool_compare.rs:+1:17: +1:18 + debug x => _1; + let mut _0: u32; + let mut _2: bool; + let mut _3: bool; bb0: { - StorageLive(_2); // scope 0 at $DIR/bool_compare.rs:+1:8: +1:18 - StorageLive(_3); // scope 0 at $DIR/bool_compare.rs:+1:17: +1:18 - _3 = _1; // scope 0 at $DIR/bool_compare.rs:+1:17: +1:18 -- _2 = Eq(const false, move _3); // scope 0 at $DIR/bool_compare.rs:+1:8: +1:18 -+ _2 = Not(move _3); // scope 0 at $DIR/bool_compare.rs:+1:8: +1:18 - StorageDead(_3); // scope 0 at $DIR/bool_compare.rs:+1:17: +1:18 - switchInt(move _2) -> [0: bb2, otherwise: bb1]; // scope 0 at $DIR/bool_compare.rs:+1:8: +1:18 + StorageLive(_2); + StorageLive(_3); + _3 = _1; +- _2 = Eq(const false, move _3); ++ _2 = Not(move _3); + StorageDead(_3); + switchInt(move _2) -> [0: bb2, otherwise: bb1]; } bb1: { - _0 = const 0_u32; // scope 0 at $DIR/bool_compare.rs:+1:21: +1:22 - goto -> bb3; // scope 0 at $DIR/bool_compare.rs:+1:5: +1:35 + _0 = const 0_u32; + goto -> bb3; } bb2: { - _0 = const 1_u32; // scope 0 at $DIR/bool_compare.rs:+1:32: +1:33 - goto -> bb3; // scope 0 at $DIR/bool_compare.rs:+1:5: +1:35 + _0 = const 1_u32; + goto -> bb3; } bb3: { - StorageDead(_2); // scope 0 at $DIR/bool_compare.rs:+1:34: +1:35 - return; // scope 0 at $DIR/bool_compare.rs:+2:2: +2:2 + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/box_expr.main.ElaborateDrops.before.panic-abort.mir b/tests/mir-opt/box_expr.main.ElaborateDrops.before.panic-abort.mir index 2c0a3af73027e..d196b045a1b8e 100644 --- a/tests/mir-opt/box_expr.main.ElaborateDrops.before.panic-abort.mir +++ b/tests/mir-opt/box_expr.main.ElaborateDrops.before.panic-abort.mir @@ -1,80 +1,71 @@ // MIR for `main` before ElaborateDrops fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/box_expr.rs:+0:11: +0:11 - let _1: std::boxed::Box; // in scope 0 at $DIR/box_expr.rs:+1:9: +1:10 - let mut _2: usize; // in scope 0 at $DIR/box_expr.rs:+2:5: +2:23 - let mut _3: usize; // in scope 0 at $DIR/box_expr.rs:+2:5: +2:23 - let mut _4: *mut u8; // in scope 0 at $DIR/box_expr.rs:+2:5: +2:23 - let mut _5: std::boxed::Box; // in scope 0 at $DIR/box_expr.rs:+2:5: +2:23 - let _6: (); // in scope 0 at $DIR/box_expr.rs:+3:5: +3:12 - let mut _7: std::boxed::Box; // in scope 0 at $DIR/box_expr.rs:+3:10: +3:11 + let mut _0: (); + let _1: std::boxed::Box; + let mut _2: usize; + let mut _3: usize; + let mut _4: *mut u8; + let mut _5: std::boxed::Box; + let _6: (); + let mut _7: std::boxed::Box; scope 1 { - debug x => _1; // in scope 1 at $DIR/box_expr.rs:+1:9: +1:10 + debug x => _1; } scope 2 { } bb0: { - StorageLive(_1); // scope 0 at $DIR/box_expr.rs:+1:9: +1:10 - _2 = SizeOf(S); // scope 2 at $DIR/box_expr.rs:+2:5: +2:23 - _3 = AlignOf(S); // scope 2 at $DIR/box_expr.rs:+2:5: +2:23 - _4 = alloc::alloc::exchange_malloc(move _2, move _3) -> [return: bb1, unwind: bb9]; // scope 2 at $DIR/box_expr.rs:+2:5: +2:23 - // mir::Constant - // + span: $DIR/box_expr.rs:8:5: 8:23 - // + literal: Const { ty: unsafe fn(usize, usize) -> *mut u8 {alloc::alloc::exchange_malloc}, val: Value() } + StorageLive(_1); + _2 = SizeOf(S); + _3 = AlignOf(S); + _4 = alloc::alloc::exchange_malloc(move _2, move _3) -> [return: bb1, unwind: bb9]; } bb1: { - StorageLive(_5); // scope 0 at $DIR/box_expr.rs:+2:5: +2:23 - _5 = ShallowInitBox(move _4, S); // scope 0 at $DIR/box_expr.rs:+2:5: +2:23 - (*_5) = S::new() -> [return: bb2, unwind: bb8]; // scope 0 at $DIR/box_expr.rs:+2:14: +2:22 - // mir::Constant - // + span: $DIR/box_expr.rs:8:14: 8:20 - // + literal: Const { ty: fn() -> S {S::new}, val: Value() } + StorageLive(_5); + _5 = ShallowInitBox(move _4, S); + (*_5) = S::new() -> [return: bb2, unwind: bb8]; } bb2: { - _1 = move _5; // scope 0 at $DIR/box_expr.rs:+2:5: +2:23 - drop(_5) -> [return: bb3, unwind: bb9]; // scope 0 at $DIR/box_expr.rs:+2:22: +2:23 + _1 = move _5; + drop(_5) -> [return: bb3, unwind: bb9]; } bb3: { - StorageDead(_5); // scope 0 at $DIR/box_expr.rs:+2:22: +2:23 - StorageLive(_6); // scope 1 at $DIR/box_expr.rs:+3:5: +3:12 - StorageLive(_7); // scope 1 at $DIR/box_expr.rs:+3:10: +3:11 - _7 = move _1; // scope 1 at $DIR/box_expr.rs:+3:10: +3:11 - _6 = std::mem::drop::>(move _7) -> [return: bb4, unwind: bb6]; // scope 1 at $DIR/box_expr.rs:+3:5: +3:12 - // mir::Constant - // + span: $DIR/box_expr.rs:9:5: 9:9 - // + literal: Const { ty: fn(Box) {std::mem::drop::>}, val: Value() } + StorageDead(_5); + StorageLive(_6); + StorageLive(_7); + _7 = move _1; + _6 = std::mem::drop::>(move _7) -> [return: bb4, unwind: bb6]; } bb4: { - StorageDead(_7); // scope 1 at $DIR/box_expr.rs:+3:11: +3:12 - StorageDead(_6); // scope 1 at $DIR/box_expr.rs:+3:12: +3:13 - _0 = const (); // scope 0 at $DIR/box_expr.rs:+0:11: +4:2 - drop(_1) -> [return: bb5, unwind: bb9]; // scope 0 at $DIR/box_expr.rs:+4:1: +4:2 + StorageDead(_7); + StorageDead(_6); + _0 = const (); + drop(_1) -> [return: bb5, unwind: bb9]; } bb5: { - StorageDead(_1); // scope 0 at $DIR/box_expr.rs:+4:1: +4:2 - return; // scope 0 at $DIR/box_expr.rs:+4:2: +4:2 + StorageDead(_1); + return; } bb6 (cleanup): { - drop(_7) -> [return: bb7, unwind terminate]; // scope 1 at $DIR/box_expr.rs:+3:11: +3:12 + drop(_7) -> [return: bb7, unwind terminate]; } bb7 (cleanup): { - drop(_1) -> [return: bb9, unwind terminate]; // scope 0 at $DIR/box_expr.rs:+4:1: +4:2 + drop(_1) -> [return: bb9, unwind terminate]; } bb8 (cleanup): { - drop(_5) -> [return: bb9, unwind terminate]; // scope 0 at $DIR/box_expr.rs:+2:22: +2:23 + drop(_5) -> [return: bb9, unwind terminate]; } bb9 (cleanup): { - resume; // scope 0 at $DIR/box_expr.rs:+0:1: +4:2 + resume; } } diff --git a/tests/mir-opt/box_expr.main.ElaborateDrops.before.panic-unwind.mir b/tests/mir-opt/box_expr.main.ElaborateDrops.before.panic-unwind.mir index bac5b21dfad1f..cf63c4f19dacd 100644 --- a/tests/mir-opt/box_expr.main.ElaborateDrops.before.panic-unwind.mir +++ b/tests/mir-opt/box_expr.main.ElaborateDrops.before.panic-unwind.mir @@ -1,80 +1,71 @@ // MIR for `main` before ElaborateDrops fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/box_expr.rs:+0:11: +0:11 - let _1: std::boxed::Box; // in scope 0 at $DIR/box_expr.rs:+1:9: +1:10 - let mut _2: usize; // in scope 0 at $DIR/box_expr.rs:+2:5: +2:23 - let mut _3: usize; // in scope 0 at $DIR/box_expr.rs:+2:5: +2:23 - let mut _4: *mut u8; // in scope 0 at $DIR/box_expr.rs:+2:5: +2:23 - let mut _5: std::boxed::Box; // in scope 0 at $DIR/box_expr.rs:+2:5: +2:23 - let _6: (); // in scope 0 at $DIR/box_expr.rs:+3:5: +3:12 - let mut _7: std::boxed::Box; // in scope 0 at $DIR/box_expr.rs:+3:10: +3:11 + let mut _0: (); + let _1: std::boxed::Box; + let mut _2: usize; + let mut _3: usize; + let mut _4: *mut u8; + let mut _5: std::boxed::Box; + let _6: (); + let mut _7: std::boxed::Box; scope 1 { - debug x => _1; // in scope 1 at $DIR/box_expr.rs:+1:9: +1:10 + debug x => _1; } scope 2 { } bb0: { - StorageLive(_1); // scope 0 at $DIR/box_expr.rs:+1:9: +1:10 - _2 = SizeOf(S); // scope 2 at $DIR/box_expr.rs:+2:5: +2:23 - _3 = AlignOf(S); // scope 2 at $DIR/box_expr.rs:+2:5: +2:23 - _4 = alloc::alloc::exchange_malloc(move _2, move _3) -> bb1; // scope 2 at $DIR/box_expr.rs:+2:5: +2:23 - // mir::Constant - // + span: $DIR/box_expr.rs:8:5: 8:23 - // + literal: Const { ty: unsafe fn(usize, usize) -> *mut u8 {alloc::alloc::exchange_malloc}, val: Value() } + StorageLive(_1); + _2 = SizeOf(S); + _3 = AlignOf(S); + _4 = alloc::alloc::exchange_malloc(move _2, move _3) -> bb1; } bb1: { - StorageLive(_5); // scope 0 at $DIR/box_expr.rs:+2:5: +2:23 - _5 = ShallowInitBox(move _4, S); // scope 0 at $DIR/box_expr.rs:+2:5: +2:23 - (*_5) = S::new() -> [return: bb2, unwind: bb8]; // scope 0 at $DIR/box_expr.rs:+2:14: +2:22 - // mir::Constant - // + span: $DIR/box_expr.rs:8:14: 8:20 - // + literal: Const { ty: fn() -> S {S::new}, val: Value() } + StorageLive(_5); + _5 = ShallowInitBox(move _4, S); + (*_5) = S::new() -> [return: bb2, unwind: bb8]; } bb2: { - _1 = move _5; // scope 0 at $DIR/box_expr.rs:+2:5: +2:23 - drop(_5) -> bb3; // scope 0 at $DIR/box_expr.rs:+2:22: +2:23 + _1 = move _5; + drop(_5) -> bb3; } bb3: { - StorageDead(_5); // scope 0 at $DIR/box_expr.rs:+2:22: +2:23 - StorageLive(_6); // scope 1 at $DIR/box_expr.rs:+3:5: +3:12 - StorageLive(_7); // scope 1 at $DIR/box_expr.rs:+3:10: +3:11 - _7 = move _1; // scope 1 at $DIR/box_expr.rs:+3:10: +3:11 - _6 = std::mem::drop::>(move _7) -> [return: bb4, unwind: bb6]; // scope 1 at $DIR/box_expr.rs:+3:5: +3:12 - // mir::Constant - // + span: $DIR/box_expr.rs:9:5: 9:9 - // + literal: Const { ty: fn(Box) {std::mem::drop::>}, val: Value() } + StorageDead(_5); + StorageLive(_6); + StorageLive(_7); + _7 = move _1; + _6 = std::mem::drop::>(move _7) -> [return: bb4, unwind: bb6]; } bb4: { - StorageDead(_7); // scope 1 at $DIR/box_expr.rs:+3:11: +3:12 - StorageDead(_6); // scope 1 at $DIR/box_expr.rs:+3:12: +3:13 - _0 = const (); // scope 0 at $DIR/box_expr.rs:+0:11: +4:2 - drop(_1) -> bb5; // scope 0 at $DIR/box_expr.rs:+4:1: +4:2 + StorageDead(_7); + StorageDead(_6); + _0 = const (); + drop(_1) -> bb5; } bb5: { - StorageDead(_1); // scope 0 at $DIR/box_expr.rs:+4:1: +4:2 - return; // scope 0 at $DIR/box_expr.rs:+4:2: +4:2 + StorageDead(_1); + return; } bb6 (cleanup): { - drop(_7) -> [return: bb7, unwind terminate]; // scope 1 at $DIR/box_expr.rs:+3:11: +3:12 + drop(_7) -> [return: bb7, unwind terminate]; } bb7 (cleanup): { - drop(_1) -> [return: bb9, unwind terminate]; // scope 0 at $DIR/box_expr.rs:+4:1: +4:2 + drop(_1) -> [return: bb9, unwind terminate]; } bb8 (cleanup): { - drop(_5) -> [return: bb9, unwind terminate]; // scope 0 at $DIR/box_expr.rs:+2:22: +2:23 + drop(_5) -> [return: bb9, unwind terminate]; } bb9 (cleanup): { - resume; // scope 0 at $DIR/box_expr.rs:+0:1: +4:2 + resume; } } diff --git a/tests/mir-opt/building/async_await.a-{closure#0}.generator_resume.0.mir b/tests/mir-opt/building/async_await.a-{closure#0}.generator_resume.0.mir index accb504c088ef..7e8206b02fcbf 100644 --- a/tests/mir-opt/building/async_await.a-{closure#0}.generator_resume.0.mir +++ b/tests/mir-opt/building/async_await.a-{closure#0}.generator_resume.0.mir @@ -10,30 +10,30 @@ } */ fn a::{closure#0}(_1: Pin<&mut [async fn body@$DIR/async_await.rs:11:14: 11:16]>, _2: &mut Context<'_>) -> Poll<()> { - debug _task_context => _4; // in scope 0 at $DIR/async_await.rs:+0:14: +0:16 - let mut _0: std::task::Poll<()>; // return place in scope 0 at $DIR/async_await.rs:+0:14: +0:16 - let mut _3: (); // in scope 0 at $DIR/async_await.rs:+0:14: +0:16 - let mut _4: &mut std::task::Context<'_>; // in scope 0 at $DIR/async_await.rs:+0:14: +0:16 - let mut _5: u32; // in scope 0 at $DIR/async_await.rs:+0:14: +0:16 + debug _task_context => _4; + let mut _0: std::task::Poll<()>; + let mut _3: (); + let mut _4: &mut std::task::Context<'_>; + let mut _5: u32; bb0: { - _5 = discriminant((*(_1.0: &mut [async fn body@$DIR/async_await.rs:11:14: 11:16]))); // scope 0 at $DIR/async_await.rs:+0:14: +0:16 - switchInt(move _5) -> [0: bb1, 1: bb2, otherwise: bb3]; // scope 0 at $DIR/async_await.rs:+0:14: +0:16 + _5 = discriminant((*(_1.0: &mut [async fn body@$DIR/async_await.rs:11:14: 11:16]))); + switchInt(move _5) -> [0: bb1, 1: bb2, otherwise: bb3]; } bb1: { - _4 = move _2; // scope 0 at $DIR/async_await.rs:+0:14: +0:16 - _3 = const (); // scope 0 at $DIR/async_await.rs:+0:14: +0:16 - _0 = Poll::<()>::Ready(move _3); // scope 0 at $DIR/async_await.rs:+0:16: +0:16 - discriminant((*(_1.0: &mut [async fn body@$DIR/async_await.rs:11:14: 11:16]))) = 1; // scope 0 at $DIR/async_await.rs:+0:16: +0:16 - return; // scope 0 at $DIR/async_await.rs:+0:16: +0:16 + _4 = move _2; + _3 = const (); + _0 = Poll::<()>::Ready(move _3); + discriminant((*(_1.0: &mut [async fn body@$DIR/async_await.rs:11:14: 11:16]))) = 1; + return; } bb2: { - assert(const false, "`async fn` resumed after completion") -> bb2; // scope 0 at $DIR/async_await.rs:+0:14: +0:16 + assert(const false, "`async fn` resumed after completion") -> bb2; } bb3: { - unreachable; // scope 0 at $DIR/async_await.rs:+0:14: +0:16 + unreachable; } } diff --git a/tests/mir-opt/building/async_await.b-{closure#0}.generator_resume.0.mir b/tests/mir-opt/building/async_await.b-{closure#0}.generator_resume.0.mir index a9d1477b9fe5d..ed1388718519f 100644 --- a/tests/mir-opt/building/async_await.b-{closure#0}.generator_resume.0.mir +++ b/tests/mir-opt/building/async_await.b-{closure#0}.generator_resume.0.mir @@ -32,312 +32,288 @@ } */ fn b::{closure#0}(_1: Pin<&mut [async fn body@$DIR/async_await.rs:14:18: 17:2]>, _2: &mut Context<'_>) -> Poll<()> { - debug _task_context => _38; // in scope 0 at $DIR/async_await.rs:+0:18: +3:2 - let mut _0: std::task::Poll<()>; // return place in scope 0 at $DIR/async_await.rs:+0:18: +3:2 - let _3: (); // in scope 0 at $DIR/async_await.rs:+1:5: +1:14 - let mut _4: impl std::future::Future; // in scope 0 at $DIR/async_await.rs:+1:9: +1:14 - let mut _5: impl std::future::Future; // in scope 0 at $DIR/async_await.rs:+1:5: +1:8 - let mut _6: impl std::future::Future; // in scope 0 at $DIR/async_await.rs:+1:9: +1:14 - let mut _7: (); // in scope 0 at $DIR/async_await.rs:+0:18: +3:2 - let _8: (); // in scope 0 at $DIR/async_await.rs:+1:9: +1:14 - let mut _9: std::task::Poll<()>; // in scope 0 at $DIR/async_await.rs:+1:9: +1:14 - let mut _10: std::pin::Pin<&mut impl std::future::Future>; // in scope 0 at $DIR/async_await.rs:+1:9: +1:14 - let mut _11: &mut impl std::future::Future; // in scope 0 at $DIR/async_await.rs:+1:9: +1:14 - let mut _12: &mut impl std::future::Future; // in scope 0 at $DIR/async_await.rs:+1:9: +1:14 - let mut _13: &mut std::task::Context<'_>; // in scope 0 at $DIR/async_await.rs:+1:5: +1:14 - let mut _14: &mut std::task::Context<'_>; // in scope 0 at $DIR/async_await.rs:+1:5: +1:14 - let mut _15: &mut std::task::Context<'_>; // in scope 0 at $DIR/async_await.rs:+1:9: +1:14 - let mut _16: isize; // in scope 0 at $DIR/async_await.rs:+1:9: +1:14 - let mut _18: !; // in scope 0 at $DIR/async_await.rs:+1:5: +1:14 - let mut _19: &mut std::task::Context<'_>; // in scope 0 at $DIR/async_await.rs:+1:9: +1:14 - let mut _20: (); // in scope 0 at $DIR/async_await.rs:+1:9: +1:14 - let mut _21: impl std::future::Future; // in scope 0 at $DIR/async_await.rs:+2:9: +2:14 - let mut _22: impl std::future::Future; // in scope 0 at $DIR/async_await.rs:+2:5: +2:8 - let mut _23: impl std::future::Future; // in scope 0 at $DIR/async_await.rs:+2:9: +2:14 - let _24: (); // in scope 0 at $DIR/async_await.rs:+2:9: +2:14 - let mut _25: std::task::Poll<()>; // in scope 0 at $DIR/async_await.rs:+2:9: +2:14 - let mut _26: std::pin::Pin<&mut impl std::future::Future>; // in scope 0 at $DIR/async_await.rs:+2:9: +2:14 - let mut _27: &mut impl std::future::Future; // in scope 0 at $DIR/async_await.rs:+2:9: +2:14 - let mut _28: &mut impl std::future::Future; // in scope 0 at $DIR/async_await.rs:+2:9: +2:14 - let mut _29: &mut std::task::Context<'_>; // in scope 0 at $DIR/async_await.rs:+2:5: +2:14 - let mut _30: &mut std::task::Context<'_>; // in scope 0 at $DIR/async_await.rs:+2:5: +2:14 - let mut _31: &mut std::task::Context<'_>; // in scope 0 at $DIR/async_await.rs:+2:9: +2:14 - let mut _32: isize; // in scope 0 at $DIR/async_await.rs:+2:9: +2:14 - let mut _34: !; // in scope 0 at $DIR/async_await.rs:+2:5: +2:14 - let mut _35: &mut std::task::Context<'_>; // in scope 0 at $DIR/async_await.rs:+2:9: +2:14 - let mut _36: (); // in scope 0 at $DIR/async_await.rs:+2:9: +2:14 - let mut _37: (); // in scope 0 at $DIR/async_await.rs:+0:18: +3:2 - let mut _38: &mut std::task::Context<'_>; // in scope 0 at $DIR/async_await.rs:+0:18: +3:2 - let mut _39: u32; // in scope 0 at $DIR/async_await.rs:+0:18: +3:2 + debug _task_context => _38; + let mut _0: std::task::Poll<()>; + let _3: (); + let mut _4: impl std::future::Future; + let mut _5: impl std::future::Future; + let mut _6: impl std::future::Future; + let mut _7: (); + let _8: (); + let mut _9: std::task::Poll<()>; + let mut _10: std::pin::Pin<&mut impl std::future::Future>; + let mut _11: &mut impl std::future::Future; + let mut _12: &mut impl std::future::Future; + let mut _13: &mut std::task::Context<'_>; + let mut _14: &mut std::task::Context<'_>; + let mut _15: &mut std::task::Context<'_>; + let mut _16: isize; + let mut _18: !; + let mut _19: &mut std::task::Context<'_>; + let mut _20: (); + let mut _21: impl std::future::Future; + let mut _22: impl std::future::Future; + let mut _23: impl std::future::Future; + let _24: (); + let mut _25: std::task::Poll<()>; + let mut _26: std::pin::Pin<&mut impl std::future::Future>; + let mut _27: &mut impl std::future::Future; + let mut _28: &mut impl std::future::Future; + let mut _29: &mut std::task::Context<'_>; + let mut _30: &mut std::task::Context<'_>; + let mut _31: &mut std::task::Context<'_>; + let mut _32: isize; + let mut _34: !; + let mut _35: &mut std::task::Context<'_>; + let mut _36: (); + let mut _37: (); + let mut _38: &mut std::task::Context<'_>; + let mut _39: u32; scope 1 { - debug __awaitee => (((*(_1.0: &mut [async fn body@$DIR/async_await.rs:14:18: 17:2])) as variant#3).0: impl std::future::Future); // in scope 1 at $DIR/async_await.rs:+1:9: +1:14 - let _17: (); // in scope 1 at $DIR/async_await.rs:+1:5: +1:14 + debug __awaitee => (((*(_1.0: &mut [async fn body@$DIR/async_await.rs:14:18: 17:2])) as variant#3).0: impl std::future::Future); + let _17: (); scope 2 { } scope 3 { - debug result => _17; // in scope 3 at $DIR/async_await.rs:+1:5: +1:14 + debug result => _17; } } scope 4 { - debug __awaitee => (((*(_1.0: &mut [async fn body@$DIR/async_await.rs:14:18: 17:2])) as variant#4).0: impl std::future::Future); // in scope 4 at $DIR/async_await.rs:+2:9: +2:14 - let _33: (); // in scope 4 at $DIR/async_await.rs:+2:5: +2:14 + debug __awaitee => (((*(_1.0: &mut [async fn body@$DIR/async_await.rs:14:18: 17:2])) as variant#4).0: impl std::future::Future); + let _33: (); scope 5 { } scope 6 { - debug result => _33; // in scope 6 at $DIR/async_await.rs:+2:5: +2:14 + debug result => _33; } } bb0: { - _39 = discriminant((*(_1.0: &mut [async fn body@$DIR/async_await.rs:14:18: 17:2]))); // scope 0 at $DIR/async_await.rs:+0:18: +3:2 - switchInt(move _39) -> [0: bb1, 1: bb28, 3: bb26, 4: bb27, otherwise: bb29]; // scope 0 at $DIR/async_await.rs:+0:18: +3:2 + _39 = discriminant((*(_1.0: &mut [async fn body@$DIR/async_await.rs:14:18: 17:2]))); + switchInt(move _39) -> [0: bb1, 1: bb28, 3: bb26, 4: bb27, otherwise: bb29]; } bb1: { - _38 = move _2; // scope 0 at $DIR/async_await.rs:+0:18: +3:2 - StorageLive(_3); // scope 0 at $DIR/async_await.rs:+1:5: +1:14 - StorageLive(_4); // scope 0 at $DIR/async_await.rs:+1:9: +1:14 - StorageLive(_5); // scope 0 at $DIR/async_await.rs:+1:5: +1:8 - _5 = a() -> [return: bb2, unwind unreachable]; // scope 0 at $DIR/async_await.rs:+1:5: +1:8 - // mir::Constant - // + span: $DIR/async_await.rs:15:5: 15:6 - // + literal: Const { ty: fn() -> impl Future {a}, val: Value() } + _38 = move _2; + StorageLive(_3); + StorageLive(_4); + StorageLive(_5); + _5 = a() -> [return: bb2, unwind unreachable]; } bb2: { - _4 = as IntoFuture>::into_future(move _5) -> [return: bb3, unwind unreachable]; // scope 0 at $DIR/async_await.rs:+1:9: +1:14 - // mir::Constant - // + span: $DIR/async_await.rs:15:9: 15:14 - // + literal: Const { ty: fn(impl Future) -> as IntoFuture>::IntoFuture { as IntoFuture>::into_future}, val: Value() } + _4 = as IntoFuture>::into_future(move _5) -> [return: bb3, unwind unreachable]; } bb3: { - StorageDead(_5); // scope 0 at $DIR/async_await.rs:+1:13: +1:14 - nop; // scope 0 at $DIR/async_await.rs:+1:9: +1:14 - (((*(_1.0: &mut [async fn body@$DIR/async_await.rs:14:18: 17:2])) as variant#3).0: impl std::future::Future) = move _4; // scope 0 at $DIR/async_await.rs:+1:9: +1:14 - goto -> bb4; // scope 1 at $DIR/async_await.rs:+1:9: +1:14 + StorageDead(_5); + nop; + (((*(_1.0: &mut [async fn body@$DIR/async_await.rs:14:18: 17:2])) as variant#3).0: impl std::future::Future) = move _4; + goto -> bb4; } bb4: { - StorageLive(_8); // scope 1 at $DIR/async_await.rs:+1:9: +1:14 - StorageLive(_9); // scope 1 at $DIR/async_await.rs:+1:9: +1:14 - StorageLive(_10); // scope 2 at $DIR/async_await.rs:+1:9: +1:14 - StorageLive(_11); // scope 2 at $DIR/async_await.rs:+1:9: +1:14 - StorageLive(_12); // scope 2 at $DIR/async_await.rs:+1:9: +1:14 - _12 = &mut (((*(_1.0: &mut [async fn body@$DIR/async_await.rs:14:18: 17:2])) as variant#3).0: impl std::future::Future); // scope 2 at $DIR/async_await.rs:+1:9: +1:14 - _11 = &mut (*_12); // scope 2 at $DIR/async_await.rs:+1:9: +1:14 - _10 = Pin::<&mut impl Future>::new_unchecked(move _11) -> [return: bb5, unwind unreachable]; // scope 2 at $DIR/async_await.rs:+1:9: +1:14 - // mir::Constant - // + span: $DIR/async_await.rs:15:9: 15:14 - // + literal: Const { ty: unsafe fn(&mut impl Future) -> Pin<&mut impl Future> {Pin::<&mut impl Future>::new_unchecked}, val: Value() } + StorageLive(_8); + StorageLive(_9); + StorageLive(_10); + StorageLive(_11); + StorageLive(_12); + _12 = &mut (((*(_1.0: &mut [async fn body@$DIR/async_await.rs:14:18: 17:2])) as variant#3).0: impl std::future::Future); + _11 = &mut (*_12); + _10 = Pin::<&mut impl Future>::new_unchecked(move _11) -> [return: bb5, unwind unreachable]; } bb5: { - StorageDead(_11); // scope 2 at $DIR/async_await.rs:+1:13: +1:14 - StorageLive(_13); // scope 2 at $DIR/async_await.rs:+1:5: +1:14 - StorageLive(_14); // scope 2 at $DIR/async_await.rs:+1:5: +1:14 - StorageLive(_15); // scope 2 at $DIR/async_await.rs:+1:9: +1:14 - _15 = _38; // scope 2 at $DIR/async_await.rs:+1:9: +1:14 - _14 = move _15; // scope 2 at $DIR/async_await.rs:+1:5: +1:14 - goto -> bb6; // scope 2 at $DIR/async_await.rs:+1:5: +1:14 + StorageDead(_11); + StorageLive(_13); + StorageLive(_14); + StorageLive(_15); + _15 = _38; + _14 = move _15; + goto -> bb6; } bb6: { - _13 = &mut (*_14); // scope 2 at $DIR/async_await.rs:+1:5: +1:14 - StorageDead(_15); // scope 2 at $DIR/async_await.rs:+1:13: +1:14 - _9 = as Future>::poll(move _10, move _13) -> [return: bb7, unwind unreachable]; // scope 2 at $DIR/async_await.rs:+1:9: +1:14 - // mir::Constant - // + span: $DIR/async_await.rs:15:9: 15:14 - // + literal: Const { ty: for<'a, 'b, 'c> fn(Pin<&'a mut impl Future>, &'b mut Context<'c>) -> Poll< as Future>::Output> { as Future>::poll}, val: Value() } + _13 = &mut (*_14); + StorageDead(_15); + _9 = as Future>::poll(move _10, move _13) -> [return: bb7, unwind unreachable]; } bb7: { - StorageDead(_13); // scope 2 at $DIR/async_await.rs:+1:13: +1:14 - StorageDead(_10); // scope 2 at $DIR/async_await.rs:+1:13: +1:14 - _16 = discriminant(_9); // scope 1 at $DIR/async_await.rs:+1:9: +1:14 - switchInt(move _16) -> [0: bb10, 1: bb8, otherwise: bb9]; // scope 1 at $DIR/async_await.rs:+1:9: +1:14 + StorageDead(_13); + StorageDead(_10); + _16 = discriminant(_9); + switchInt(move _16) -> [0: bb10, 1: bb8, otherwise: bb9]; } bb8: { - _8 = const (); // scope 1 at $DIR/async_await.rs:+1:9: +1:14 - StorageDead(_14); // scope 1 at $DIR/async_await.rs:+1:13: +1:14 - StorageDead(_12); // scope 1 at $DIR/async_await.rs:+1:13: +1:14 - StorageDead(_9); // scope 1 at $DIR/async_await.rs:+1:13: +1:14 - StorageDead(_8); // scope 1 at $DIR/async_await.rs:+1:13: +1:14 - StorageLive(_19); // scope 1 at $DIR/async_await.rs:+1:9: +1:14 - StorageLive(_20); // scope 1 at $DIR/async_await.rs:+1:9: +1:14 - _20 = (); // scope 1 at $DIR/async_await.rs:+1:9: +1:14 - _0 = Poll::<()>::Pending; // scope 1 at $DIR/async_await.rs:+1:9: +1:14 - discriminant((*(_1.0: &mut [async fn body@$DIR/async_await.rs:14:18: 17:2]))) = 3; // scope 1 at $DIR/async_await.rs:+1:9: +1:14 - return; // scope 1 at $DIR/async_await.rs:+1:9: +1:14 + _8 = const (); + StorageDead(_14); + StorageDead(_12); + StorageDead(_9); + StorageDead(_8); + StorageLive(_19); + StorageLive(_20); + _20 = (); + _0 = Poll::<()>::Pending; + discriminant((*(_1.0: &mut [async fn body@$DIR/async_await.rs:14:18: 17:2]))) = 3; + return; } bb9: { - unreachable; // scope 1 at $DIR/async_await.rs:+1:9: +1:14 + unreachable; } bb10: { - StorageLive(_17); // scope 1 at $DIR/async_await.rs:+1:5: +1:14 - _17 = ((_9 as Ready).0: ()); // scope 1 at $DIR/async_await.rs:+1:5: +1:14 - _3 = _17; // scope 3 at $DIR/async_await.rs:+1:5: +1:14 - StorageDead(_17); // scope 1 at $DIR/async_await.rs:+1:13: +1:14 - StorageDead(_14); // scope 1 at $DIR/async_await.rs:+1:13: +1:14 - StorageDead(_12); // scope 1 at $DIR/async_await.rs:+1:13: +1:14 - StorageDead(_9); // scope 1 at $DIR/async_await.rs:+1:13: +1:14 - StorageDead(_8); // scope 1 at $DIR/async_await.rs:+1:13: +1:14 - goto -> bb12; // scope 0 at $DIR/async_await.rs:+1:13: +1:14 + StorageLive(_17); + _17 = ((_9 as Ready).0: ()); + _3 = _17; + StorageDead(_17); + StorageDead(_14); + StorageDead(_12); + StorageDead(_9); + StorageDead(_8); + goto -> bb12; } bb11: { - StorageDead(_20); // scope 1 at $DIR/async_await.rs:+1:13: +1:14 - _38 = move _19; // scope 1 at $DIR/async_await.rs:+1:9: +1:14 - StorageDead(_19); // scope 1 at $DIR/async_await.rs:+1:13: +1:14 - _7 = const (); // scope 1 at $DIR/async_await.rs:+1:9: +1:14 - goto -> bb4; // scope 1 at $DIR/async_await.rs:+1:9: +1:14 + StorageDead(_20); + _38 = move _19; + StorageDead(_19); + _7 = const (); + goto -> bb4; } bb12: { - nop; // scope 0 at $DIR/async_await.rs:+1:13: +1:14 - goto -> bb13; // scope 0 at $DIR/async_await.rs:+1:14: +1:15 + nop; + goto -> bb13; } bb13: { - StorageDead(_4); // scope 0 at $DIR/async_await.rs:+1:14: +1:15 - StorageDead(_3); // scope 0 at $DIR/async_await.rs:+1:14: +1:15 - StorageLive(_21); // scope 0 at $DIR/async_await.rs:+2:9: +2:14 - StorageLive(_22); // scope 0 at $DIR/async_await.rs:+2:5: +2:8 - _22 = a() -> [return: bb14, unwind unreachable]; // scope 0 at $DIR/async_await.rs:+2:5: +2:8 - // mir::Constant - // + span: $DIR/async_await.rs:16:5: 16:6 - // + literal: Const { ty: fn() -> impl Future {a}, val: Value() } + StorageDead(_4); + StorageDead(_3); + StorageLive(_21); + StorageLive(_22); + _22 = a() -> [return: bb14, unwind unreachable]; } bb14: { - _21 = as IntoFuture>::into_future(move _22) -> [return: bb15, unwind unreachable]; // scope 0 at $DIR/async_await.rs:+2:9: +2:14 - // mir::Constant - // + span: $DIR/async_await.rs:16:9: 16:14 - // + literal: Const { ty: fn(impl Future) -> as IntoFuture>::IntoFuture { as IntoFuture>::into_future}, val: Value() } + _21 = as IntoFuture>::into_future(move _22) -> [return: bb15, unwind unreachable]; } bb15: { - StorageDead(_22); // scope 0 at $DIR/async_await.rs:+2:13: +2:14 - nop; // scope 0 at $DIR/async_await.rs:+2:9: +2:14 - (((*(_1.0: &mut [async fn body@$DIR/async_await.rs:14:18: 17:2])) as variant#4).0: impl std::future::Future) = move _21; // scope 0 at $DIR/async_await.rs:+2:9: +2:14 - goto -> bb16; // scope 4 at $DIR/async_await.rs:+2:9: +2:14 + StorageDead(_22); + nop; + (((*(_1.0: &mut [async fn body@$DIR/async_await.rs:14:18: 17:2])) as variant#4).0: impl std::future::Future) = move _21; + goto -> bb16; } bb16: { - StorageLive(_24); // scope 4 at $DIR/async_await.rs:+2:9: +2:14 - StorageLive(_25); // scope 4 at $DIR/async_await.rs:+2:9: +2:14 - StorageLive(_26); // scope 5 at $DIR/async_await.rs:+2:9: +2:14 - StorageLive(_27); // scope 5 at $DIR/async_await.rs:+2:9: +2:14 - StorageLive(_28); // scope 5 at $DIR/async_await.rs:+2:9: +2:14 - _28 = &mut (((*(_1.0: &mut [async fn body@$DIR/async_await.rs:14:18: 17:2])) as variant#4).0: impl std::future::Future); // scope 5 at $DIR/async_await.rs:+2:9: +2:14 - _27 = &mut (*_28); // scope 5 at $DIR/async_await.rs:+2:9: +2:14 - _26 = Pin::<&mut impl Future>::new_unchecked(move _27) -> [return: bb17, unwind unreachable]; // scope 5 at $DIR/async_await.rs:+2:9: +2:14 - // mir::Constant - // + span: $DIR/async_await.rs:16:9: 16:14 - // + literal: Const { ty: unsafe fn(&mut impl Future) -> Pin<&mut impl Future> {Pin::<&mut impl Future>::new_unchecked}, val: Value() } + StorageLive(_24); + StorageLive(_25); + StorageLive(_26); + StorageLive(_27); + StorageLive(_28); + _28 = &mut (((*(_1.0: &mut [async fn body@$DIR/async_await.rs:14:18: 17:2])) as variant#4).0: impl std::future::Future); + _27 = &mut (*_28); + _26 = Pin::<&mut impl Future>::new_unchecked(move _27) -> [return: bb17, unwind unreachable]; } bb17: { - StorageDead(_27); // scope 5 at $DIR/async_await.rs:+2:13: +2:14 - StorageLive(_29); // scope 5 at $DIR/async_await.rs:+2:5: +2:14 - StorageLive(_30); // scope 5 at $DIR/async_await.rs:+2:5: +2:14 - StorageLive(_31); // scope 5 at $DIR/async_await.rs:+2:9: +2:14 - _31 = _38; // scope 5 at $DIR/async_await.rs:+2:9: +2:14 - _30 = move _31; // scope 5 at $DIR/async_await.rs:+2:5: +2:14 - goto -> bb18; // scope 5 at $DIR/async_await.rs:+2:5: +2:14 + StorageDead(_27); + StorageLive(_29); + StorageLive(_30); + StorageLive(_31); + _31 = _38; + _30 = move _31; + goto -> bb18; } bb18: { - _29 = &mut (*_30); // scope 5 at $DIR/async_await.rs:+2:5: +2:14 - StorageDead(_31); // scope 5 at $DIR/async_await.rs:+2:13: +2:14 - _25 = as Future>::poll(move _26, move _29) -> [return: bb19, unwind unreachable]; // scope 5 at $DIR/async_await.rs:+2:9: +2:14 - // mir::Constant - // + span: $DIR/async_await.rs:16:9: 16:14 - // + literal: Const { ty: for<'a, 'b, 'c> fn(Pin<&'a mut impl Future>, &'b mut Context<'c>) -> Poll< as Future>::Output> { as Future>::poll}, val: Value() } + _29 = &mut (*_30); + StorageDead(_31); + _25 = as Future>::poll(move _26, move _29) -> [return: bb19, unwind unreachable]; } bb19: { - StorageDead(_29); // scope 5 at $DIR/async_await.rs:+2:13: +2:14 - StorageDead(_26); // scope 5 at $DIR/async_await.rs:+2:13: +2:14 - _32 = discriminant(_25); // scope 4 at $DIR/async_await.rs:+2:9: +2:14 - switchInt(move _32) -> [0: bb21, 1: bb20, otherwise: bb9]; // scope 4 at $DIR/async_await.rs:+2:9: +2:14 + StorageDead(_29); + StorageDead(_26); + _32 = discriminant(_25); + switchInt(move _32) -> [0: bb21, 1: bb20, otherwise: bb9]; } bb20: { - _24 = const (); // scope 4 at $DIR/async_await.rs:+2:9: +2:14 - StorageDead(_30); // scope 4 at $DIR/async_await.rs:+2:13: +2:14 - StorageDead(_28); // scope 4 at $DIR/async_await.rs:+2:13: +2:14 - StorageDead(_25); // scope 4 at $DIR/async_await.rs:+2:13: +2:14 - StorageDead(_24); // scope 4 at $DIR/async_await.rs:+2:13: +2:14 - StorageLive(_35); // scope 4 at $DIR/async_await.rs:+2:9: +2:14 - StorageLive(_36); // scope 4 at $DIR/async_await.rs:+2:9: +2:14 - _36 = (); // scope 4 at $DIR/async_await.rs:+2:9: +2:14 - _0 = Poll::<()>::Pending; // scope 4 at $DIR/async_await.rs:+2:9: +2:14 - discriminant((*(_1.0: &mut [async fn body@$DIR/async_await.rs:14:18: 17:2]))) = 4; // scope 4 at $DIR/async_await.rs:+2:9: +2:14 - return; // scope 4 at $DIR/async_await.rs:+2:9: +2:14 + _24 = const (); + StorageDead(_30); + StorageDead(_28); + StorageDead(_25); + StorageDead(_24); + StorageLive(_35); + StorageLive(_36); + _36 = (); + _0 = Poll::<()>::Pending; + discriminant((*(_1.0: &mut [async fn body@$DIR/async_await.rs:14:18: 17:2]))) = 4; + return; } bb21: { - StorageLive(_33); // scope 4 at $DIR/async_await.rs:+2:5: +2:14 - _33 = ((_25 as Ready).0: ()); // scope 4 at $DIR/async_await.rs:+2:5: +2:14 - _37 = _33; // scope 6 at $DIR/async_await.rs:+2:5: +2:14 - StorageDead(_33); // scope 4 at $DIR/async_await.rs:+2:13: +2:14 - StorageDead(_30); // scope 4 at $DIR/async_await.rs:+2:13: +2:14 - StorageDead(_28); // scope 4 at $DIR/async_await.rs:+2:13: +2:14 - StorageDead(_25); // scope 4 at $DIR/async_await.rs:+2:13: +2:14 - StorageDead(_24); // scope 4 at $DIR/async_await.rs:+2:13: +2:14 - goto -> bb23; // scope 0 at $DIR/async_await.rs:+2:13: +2:14 + StorageLive(_33); + _33 = ((_25 as Ready).0: ()); + _37 = _33; + StorageDead(_33); + StorageDead(_30); + StorageDead(_28); + StorageDead(_25); + StorageDead(_24); + goto -> bb23; } bb22: { - StorageDead(_36); // scope 4 at $DIR/async_await.rs:+2:13: +2:14 - _38 = move _35; // scope 4 at $DIR/async_await.rs:+2:9: +2:14 - StorageDead(_35); // scope 4 at $DIR/async_await.rs:+2:13: +2:14 - _7 = const (); // scope 4 at $DIR/async_await.rs:+2:9: +2:14 - goto -> bb16; // scope 4 at $DIR/async_await.rs:+2:9: +2:14 + StorageDead(_36); + _38 = move _35; + StorageDead(_35); + _7 = const (); + goto -> bb16; } bb23: { - nop; // scope 0 at $DIR/async_await.rs:+2:13: +2:14 - goto -> bb24; // scope 0 at $DIR/async_await.rs:+3:1: +3:2 + nop; + goto -> bb24; } bb24: { - StorageDead(_21); // scope 0 at $DIR/async_await.rs:+3:1: +3:2 - goto -> bb25; // scope 0 at $DIR/async_await.rs:+3:1: +3:2 + StorageDead(_21); + goto -> bb25; } bb25: { - _0 = Poll::<()>::Ready(move _37); // scope 0 at $DIR/async_await.rs:+3:2: +3:2 - discriminant((*(_1.0: &mut [async fn body@$DIR/async_await.rs:14:18: 17:2]))) = 1; // scope 0 at $DIR/async_await.rs:+3:2: +3:2 - return; // scope 0 at $DIR/async_await.rs:+3:2: +3:2 + _0 = Poll::<()>::Ready(move _37); + discriminant((*(_1.0: &mut [async fn body@$DIR/async_await.rs:14:18: 17:2]))) = 1; + return; } bb26: { - StorageLive(_3); // scope 0 at $DIR/async_await.rs:+0:18: +3:2 - StorageLive(_4); // scope 0 at $DIR/async_await.rs:+0:18: +3:2 - StorageLive(_19); // scope 0 at $DIR/async_await.rs:+0:18: +3:2 - StorageLive(_20); // scope 0 at $DIR/async_await.rs:+0:18: +3:2 - _19 = move _2; // scope 0 at $DIR/async_await.rs:+0:18: +3:2 - goto -> bb11; // scope 0 at $DIR/async_await.rs:+0:18: +3:2 + StorageLive(_3); + StorageLive(_4); + StorageLive(_19); + StorageLive(_20); + _19 = move _2; + goto -> bb11; } bb27: { - StorageLive(_21); // scope 0 at $DIR/async_await.rs:+0:18: +3:2 - StorageLive(_35); // scope 0 at $DIR/async_await.rs:+0:18: +3:2 - StorageLive(_36); // scope 0 at $DIR/async_await.rs:+0:18: +3:2 - _35 = move _2; // scope 0 at $DIR/async_await.rs:+0:18: +3:2 - goto -> bb22; // scope 0 at $DIR/async_await.rs:+0:18: +3:2 + StorageLive(_21); + StorageLive(_35); + StorageLive(_36); + _35 = move _2; + goto -> bb22; } bb28: { - assert(const false, "`async fn` resumed after completion") -> bb28; // scope 0 at $DIR/async_await.rs:+0:18: +3:2 + assert(const false, "`async fn` resumed after completion") -> bb28; } bb29: { - unreachable; // scope 0 at $DIR/async_await.rs:+0:18: +3:2 + unreachable; } } diff --git a/tests/mir-opt/building/custom/aggregate_exprs.adt.built.after.mir b/tests/mir-opt/building/custom/aggregate_exprs.adt.built.after.mir index 49e8c812c197a..c14882142f56f 100644 --- a/tests/mir-opt/building/custom/aggregate_exprs.adt.built.after.mir +++ b/tests/mir-opt/building/custom/aggregate_exprs.adt.built.after.mir @@ -1,16 +1,16 @@ // MIR for `adt` after built fn adt() -> Onion { - let mut _0: Onion; // return place in scope 0 at $DIR/aggregate_exprs.rs:+0:13: +0:18 - let mut _1: i32; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _2: Foo; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _3: Bar; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL + let mut _0: Onion; + let mut _1: i32; + let mut _2: Foo; + let mut _3: Bar; bb0: { - _1 = const 1_i32; // scope 0 at $DIR/aggregate_exprs.rs:+6:13: +6:20 - _2 = Foo { a: const 1_i32, b: const 2_i32 }; // scope 0 at $DIR/aggregate_exprs.rs:+7:13: +10:14 - _3 = Bar::Foo(move _2, _1); // scope 0 at $DIR/aggregate_exprs.rs:+11:13: +11:39 - _0 = Onion { neon: ((_3 as variant#0).1: i32) }; // scope 0 at $DIR/aggregate_exprs.rs:+12:13: +12:58 - return; // scope 0 at $DIR/aggregate_exprs.rs:+13:13: +13:21 + _1 = const 1_i32; + _2 = Foo { a: const 1_i32, b: const 2_i32 }; + _3 = Bar::Foo(move _2, _1); + _0 = Onion { neon: ((_3 as variant#0).1: i32) }; + return; } } diff --git a/tests/mir-opt/building/custom/aggregate_exprs.array.built.after.mir b/tests/mir-opt/building/custom/aggregate_exprs.array.built.after.mir index 30d12897331ce..fde007abab0ac 100644 --- a/tests/mir-opt/building/custom/aggregate_exprs.array.built.after.mir +++ b/tests/mir-opt/building/custom/aggregate_exprs.array.built.after.mir @@ -1,15 +1,15 @@ // MIR for `array` after built fn array() -> [i32; 2] { - let mut _0: [i32; 2]; // return place in scope 0 at $DIR/aggregate_exprs.rs:+0:15: +0:23 - let mut _1: [i32; 2]; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _2: i32; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL + let mut _0: [i32; 2]; + let mut _1: [i32; 2]; + let mut _2: i32; bb0: { - _1 = [const 42_i32, const 43_i32]; // scope 0 at $DIR/aggregate_exprs.rs:+5:13: +5:25 - _2 = const 1_i32; // scope 0 at $DIR/aggregate_exprs.rs:+6:13: +6:20 - _1 = [_2, const 2_i32]; // scope 0 at $DIR/aggregate_exprs.rs:+7:13: +7:25 - _0 = move _1; // scope 0 at $DIR/aggregate_exprs.rs:+8:13: +8:26 - return; // scope 0 at $DIR/aggregate_exprs.rs:+9:13: +9:21 + _1 = [const 42_i32, const 43_i32]; + _2 = const 1_i32; + _1 = [_2, const 2_i32]; + _0 = move _1; + return; } } diff --git a/tests/mir-opt/building/custom/aggregate_exprs.tuple.built.after.mir b/tests/mir-opt/building/custom/aggregate_exprs.tuple.built.after.mir index 5fe45ccc90ca6..060f72c9c48c4 100644 --- a/tests/mir-opt/building/custom/aggregate_exprs.tuple.built.after.mir +++ b/tests/mir-opt/building/custom/aggregate_exprs.tuple.built.after.mir @@ -1,10 +1,10 @@ // MIR for `tuple` after built fn tuple() -> (i32, bool) { - let mut _0: (i32, bool); // return place in scope 0 at $DIR/aggregate_exprs.rs:+0:15: +0:26 + let mut _0: (i32, bool); bb0: { - _0 = (const 1_i32, const true); // scope 0 at $DIR/aggregate_exprs.rs:+3:13: +3:28 - return; // scope 0 at $DIR/aggregate_exprs.rs:+4:13: +4:21 + _0 = (const 1_i32, const true); + return; } } diff --git a/tests/mir-opt/building/custom/arbitrary_let.arbitrary_let.built.after.mir b/tests/mir-opt/building/custom/arbitrary_let.arbitrary_let.built.after.mir index 20dd251e7e308..189996f117982 100644 --- a/tests/mir-opt/building/custom/arbitrary_let.arbitrary_let.built.after.mir +++ b/tests/mir-opt/building/custom/arbitrary_let.arbitrary_let.built.after.mir @@ -1,22 +1,22 @@ // MIR for `arbitrary_let` after built fn arbitrary_let(_1: i32) -> i32 { - let mut _0: i32; // return place in scope 0 at $DIR/arbitrary_let.rs:+0:29: +0:32 - let mut _2: i32; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _3: i32; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL + let mut _0: i32; + let mut _2: i32; + let mut _3: i32; bb0: { - _2 = _1; // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - goto -> bb2; // scope 0 at $DIR/arbitrary_let.rs:+4:13: +4:25 + _2 = _1; + goto -> bb2; } bb1: { - _0 = _3; // scope 0 at $DIR/arbitrary_let.rs:+7:13: +7:20 - return; // scope 0 at $DIR/arbitrary_let.rs:+8:13: +8:21 + _0 = _3; + return; } bb2: { - _3 = _2; // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - goto -> bb1; // scope 0 at $DIR/arbitrary_let.rs:+12:13: +12:24 + _3 = _2; + goto -> bb1; } } diff --git a/tests/mir-opt/building/custom/arrays.arrays.built.after.mir b/tests/mir-opt/building/custom/arrays.arrays.built.after.mir index 4c92127288596..eaeba302f1510 100644 --- a/tests/mir-opt/building/custom/arrays.arrays.built.after.mir +++ b/tests/mir-opt/building/custom/arrays.arrays.built.after.mir @@ -1,14 +1,14 @@ // MIR for `arrays` after built fn arrays() -> usize { - let mut _0: usize; // return place in scope 0 at $DIR/arrays.rs:+0:32: +0:37 - let mut _1: [i32; C]; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _2: usize; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL + let mut _0: usize; + let mut _1: [i32; C]; + let mut _2: usize; bb0: { - _1 = [const 5_i32; C]; // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - _2 = Len(_1); // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - _0 = _2; // scope 0 at $DIR/arrays.rs:+4:9: +4:16 - return; // scope 0 at $DIR/arrays.rs:+5:9: +5:17 + _1 = [const 5_i32; C]; + _2 = Len(_1); + _0 = _2; + return; } } diff --git a/tests/mir-opt/building/custom/as_cast.float_to_int.built.after.mir b/tests/mir-opt/building/custom/as_cast.float_to_int.built.after.mir index d0b770783c1f1..e3334bc7dbee4 100644 --- a/tests/mir-opt/building/custom/as_cast.float_to_int.built.after.mir +++ b/tests/mir-opt/building/custom/as_cast.float_to_int.built.after.mir @@ -1,10 +1,10 @@ // MIR for `float_to_int` after built fn float_to_int(_1: f32) -> i32 { - let mut _0: i32; // return place in scope 0 at $DIR/as_cast.rs:+0:28: +0:31 + let mut _0: i32; bb0: { - _0 = _1 as i32 (FloatToInt); // scope 0 at $DIR/as_cast.rs:+3:13: +3:27 - return; // scope 0 at $DIR/as_cast.rs:+4:13: +4:21 + _0 = _1 as i32 (FloatToInt); + return; } } diff --git a/tests/mir-opt/building/custom/as_cast.int_to_int.built.after.mir b/tests/mir-opt/building/custom/as_cast.int_to_int.built.after.mir index aaebff0d7673d..d71cb9d78d338 100644 --- a/tests/mir-opt/building/custom/as_cast.int_to_int.built.after.mir +++ b/tests/mir-opt/building/custom/as_cast.int_to_int.built.after.mir @@ -1,10 +1,10 @@ // MIR for `int_to_int` after built fn int_to_int(_1: u32) -> i32 { - let mut _0: i32; // return place in scope 0 at $DIR/as_cast.rs:+0:26: +0:29 + let mut _0: i32; bb0: { - _0 = _1 as i32 (IntToInt); // scope 0 at $DIR/as_cast.rs:+3:13: +3:27 - return; // scope 0 at $DIR/as_cast.rs:+4:13: +4:21 + _0 = _1 as i32 (IntToInt); + return; } } diff --git a/tests/mir-opt/building/custom/as_cast.int_to_ptr.built.after.mir b/tests/mir-opt/building/custom/as_cast.int_to_ptr.built.after.mir index f040cf53df4a8..0dc46d61effb7 100644 --- a/tests/mir-opt/building/custom/as_cast.int_to_ptr.built.after.mir +++ b/tests/mir-opt/building/custom/as_cast.int_to_ptr.built.after.mir @@ -1,10 +1,10 @@ // MIR for `int_to_ptr` after built fn int_to_ptr(_1: usize) -> *const i32 { - let mut _0: *const i32; // return place in scope 0 at $DIR/as_cast.rs:+0:28: +0:38 + let mut _0: *const i32; bb0: { - _0 = _1 as *const i32 (PointerFromExposedAddress); // scope 0 at $DIR/as_cast.rs:+3:13: +3:34 - return; // scope 0 at $DIR/as_cast.rs:+4:13: +4:21 + _0 = _1 as *const i32 (PointerFromExposedAddress); + return; } } diff --git a/tests/mir-opt/building/custom/composite_return.tuple.built.after.mir b/tests/mir-opt/building/custom/composite_return.tuple.built.after.mir index d159c1a655eb5..836622ec2f5e8 100644 --- a/tests/mir-opt/building/custom/composite_return.tuple.built.after.mir +++ b/tests/mir-opt/building/custom/composite_return.tuple.built.after.mir @@ -1,11 +1,11 @@ // MIR for `tuple` after built fn tuple() -> (i32, bool) { - let mut _0: (i32, bool); // return place in scope 0 at $DIR/composite_return.rs:+0:15: +0:26 + let mut _0: (i32, bool); bb0: { - (_0.0: i32) = const 1_i32; // scope 0 at $DIR/composite_return.rs:+4:13: +4:22 - (_0.1: bool) = const true; // scope 0 at $DIR/composite_return.rs:+5:13: +5:25 - return; // scope 0 at $DIR/composite_return.rs:+6:13: +6:21 + (_0.0: i32) = const 1_i32; + (_0.1: bool) = const true; + return; } } diff --git a/tests/mir-opt/building/custom/consts.consts.built.after.mir b/tests/mir-opt/building/custom/consts.consts.built.after.mir index ba753cfc20ca2..05de272afe4f4 100644 --- a/tests/mir-opt/building/custom/consts.consts.built.after.mir +++ b/tests/mir-opt/building/custom/consts.consts.built.after.mir @@ -1,22 +1,19 @@ // MIR for `consts` after built fn consts() -> () { - let mut _0: (); // return place in scope 0 at $DIR/consts.rs:+0:27: +0:27 - let mut _1: u8; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _2: i8; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _3: u32; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _4: i32; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _5: fn() {consts::<10>}; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL + let mut _0: (); + let mut _1: u8; + let mut _2: i8; + let mut _3: u32; + let mut _4: i32; + let mut _5: fn() {consts::<10>}; bb0: { - _1 = const 5_u8; // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - _2 = const _; // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - _3 = const C; // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - _4 = const _; // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - _5 = consts::<10>; // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - // mir::Constant - // + span: $DIR/consts.rs:16:18: 16:30 - // + literal: Const { ty: fn() {consts::<10>}, val: Value() } - return; // scope 0 at $DIR/consts.rs:+7:9: +7:17 + _1 = const 5_u8; + _2 = const _; + _3 = const C; + _4 = const _; + _5 = consts::<10>; + return; } } diff --git a/tests/mir-opt/building/custom/consts.statics.built.after.mir b/tests/mir-opt/building/custom/consts.statics.built.after.mir index bfef976aa0272..ea394c5b7276d 100644 --- a/tests/mir-opt/building/custom/consts.statics.built.after.mir +++ b/tests/mir-opt/building/custom/consts.statics.built.after.mir @@ -1,20 +1,14 @@ // MIR for `statics` after built fn statics() -> () { - let mut _0: (); // return place in scope 0 at $DIR/consts.rs:+0:14: +0:14 - let mut _1: &i32; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _2: *mut i32; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL + let mut _0: (); + let mut _1: &i32; + let mut _2: *mut i32; bb0: { - _1 = const {alloc1: &i32}; // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - // mir::Constant - // + span: $DIR/consts.rs:27:31: 27:32 - // + literal: Const { ty: &i32, val: Value(Scalar(alloc1)) } - _2 = const {alloc2: *mut i32}; // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - // mir::Constant - // + span: $DIR/consts.rs:28:38: 28:39 - // + literal: Const { ty: *mut i32, val: Value(Scalar(alloc2)) } - return; // scope 0 at $DIR/consts.rs:+4:9: +4:17 + _1 = const {alloc1: &i32}; + _2 = const {alloc2: *mut i32}; + return; } } diff --git a/tests/mir-opt/building/custom/enums.set_discr.built.after.mir b/tests/mir-opt/building/custom/enums.set_discr.built.after.mir index 6d07473658ace..8cc66e7e50d6a 100644 --- a/tests/mir-opt/building/custom/enums.set_discr.built.after.mir +++ b/tests/mir-opt/building/custom/enums.set_discr.built.after.mir @@ -1,11 +1,11 @@ // MIR for `set_discr` after built fn set_discr(_1: &mut Option<()>) -> () { - let mut _0: (); // return place in scope 0 at $DIR/enums.rs:+0:39: +0:39 + let mut _0: (); bb0: { - Deinit((*_1)); // scope 0 at $DIR/enums.rs:+2:9: +2:24 - discriminant((*_1)) = 0; // scope 0 at $DIR/enums.rs:+3:9: +3:36 - return; // scope 0 at $DIR/enums.rs:+4:9: +4:17 + Deinit((*_1)); + discriminant((*_1)) = 0; + return; } } diff --git a/tests/mir-opt/building/custom/enums.set_discr_repr.built.after.mir b/tests/mir-opt/building/custom/enums.set_discr_repr.built.after.mir index 6fdc3d0f4d4e1..55ade43ed115c 100644 --- a/tests/mir-opt/building/custom/enums.set_discr_repr.built.after.mir +++ b/tests/mir-opt/building/custom/enums.set_discr_repr.built.after.mir @@ -1,10 +1,10 @@ // MIR for `set_discr_repr` after built fn set_discr_repr(_1: &mut Bool) -> () { - let mut _0: (); // return place in scope 0 at $DIR/enums.rs:+0:33: +0:33 + let mut _0: (); bb0: { - discriminant((*_1)) = 0; // scope 0 at $DIR/enums.rs:+2:9: +2:31 - return; // scope 0 at $DIR/enums.rs:+3:9: +3:17 + discriminant((*_1)) = 0; + return; } } diff --git a/tests/mir-opt/building/custom/enums.switch_bool.built.after.mir b/tests/mir-opt/building/custom/enums.switch_bool.built.after.mir index 95c57d2dca33a..f82e5f1c6fd0a 100644 --- a/tests/mir-opt/building/custom/enums.switch_bool.built.after.mir +++ b/tests/mir-opt/building/custom/enums.switch_bool.built.after.mir @@ -1,19 +1,19 @@ // MIR for `switch_bool` after built fn switch_bool(_1: bool) -> u32 { - let mut _0: u32; // return place in scope 0 at $DIR/enums.rs:+0:32: +0:35 + let mut _0: u32; bb0: { - switchInt(_1) -> [1: bb1, 0: bb2, otherwise: bb2]; // scope 0 at $DIR/enums.rs:+3:13: +7:14 + switchInt(_1) -> [1: bb1, 0: bb2, otherwise: bb2]; } bb1: { - _0 = const 5_u32; // scope 0 at $DIR/enums.rs:+11:13: +11:20 - return; // scope 0 at $DIR/enums.rs:+12:13: +12:21 + _0 = const 5_u32; + return; } bb2: { - _0 = const 10_u32; // scope 0 at $DIR/enums.rs:+16:13: +16:21 - return; // scope 0 at $DIR/enums.rs:+17:13: +17:21 + _0 = const 10_u32; + return; } } diff --git a/tests/mir-opt/building/custom/enums.switch_option.built.after.mir b/tests/mir-opt/building/custom/enums.switch_option.built.after.mir index a659ba7c114d0..fa03f274be340 100644 --- a/tests/mir-opt/building/custom/enums.switch_option.built.after.mir +++ b/tests/mir-opt/building/custom/enums.switch_option.built.after.mir @@ -1,21 +1,21 @@ // MIR for `switch_option` after built fn switch_option(_1: Option<()>) -> bool { - let mut _0: bool; // return place in scope 0 at $DIR/enums.rs:+0:45: +0:49 - let mut _2: isize; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL + let mut _0: bool; + let mut _2: isize; bb0: { - _2 = discriminant(_1); // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - switchInt(_2) -> [0: bb1, 1: bb2, otherwise: bb2]; // scope 0 at $DIR/enums.rs:+4:13: +8:14 + _2 = discriminant(_1); + switchInt(_2) -> [0: bb1, 1: bb2, otherwise: bb2]; } bb1: { - _0 = const false; // scope 0 at $DIR/enums.rs:+12:13: +12:24 - return; // scope 0 at $DIR/enums.rs:+13:13: +13:21 + _0 = const false; + return; } bb2: { - _0 = const true; // scope 0 at $DIR/enums.rs:+17:13: +17:23 - return; // scope 0 at $DIR/enums.rs:+18:13: +18:21 + _0 = const true; + return; } } diff --git a/tests/mir-opt/building/custom/enums.switch_option_repr.built.after.mir b/tests/mir-opt/building/custom/enums.switch_option_repr.built.after.mir index d60e4b1b712fd..eec2197a8bd3a 100644 --- a/tests/mir-opt/building/custom/enums.switch_option_repr.built.after.mir +++ b/tests/mir-opt/building/custom/enums.switch_option_repr.built.after.mir @@ -1,21 +1,21 @@ // MIR for `switch_option_repr` after built fn switch_option_repr(_1: Bool) -> bool { - let mut _0: bool; // return place in scope 0 at $DIR/enums.rs:+0:40: +0:44 - let mut _2: u8; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL + let mut _0: bool; + let mut _2: u8; bb0: { - _2 = discriminant(_1); // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - switchInt(_2) -> [0: bb2, otherwise: bb1]; // scope 0 at $DIR/enums.rs:+4:13: +7:14 + _2 = discriminant(_1); + switchInt(_2) -> [0: bb2, otherwise: bb1]; } bb1: { - _0 = const true; // scope 0 at $DIR/enums.rs:+11:13: +11:23 - return; // scope 0 at $DIR/enums.rs:+12:13: +12:21 + _0 = const true; + return; } bb2: { - _0 = const false; // scope 0 at $DIR/enums.rs:+16:13: +16:24 - return; // scope 0 at $DIR/enums.rs:+17:13: +17:21 + _0 = const false; + return; } } diff --git a/tests/mir-opt/building/custom/operators.f.built.after.mir b/tests/mir-opt/building/custom/operators.f.built.after.mir index cb43d5e6ed7c7..33eb6b720e87c 100644 --- a/tests/mir-opt/building/custom/operators.f.built.after.mir +++ b/tests/mir-opt/building/custom/operators.f.built.after.mir @@ -1,30 +1,30 @@ // MIR for `f` after built fn f(_1: i32, _2: bool) -> i32 { - let mut _0: i32; // return place in scope 0 at $DIR/operators.rs:+0:30: +0:33 - let mut _3: (i32, bool); // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL + let mut _0: i32; + let mut _3: (i32, bool); bb0: { - _1 = Neg(_1); // scope 0 at $DIR/operators.rs:+2:9: +2:15 - _2 = Not(_2); // scope 0 at $DIR/operators.rs:+3:9: +3:15 - _1 = Add(_1, _1); // scope 0 at $DIR/operators.rs:+4:9: +4:18 - _1 = Sub(_1, _1); // scope 0 at $DIR/operators.rs:+5:9: +5:18 - _1 = Mul(_1, _1); // scope 0 at $DIR/operators.rs:+6:9: +6:18 - _1 = Div(_1, _1); // scope 0 at $DIR/operators.rs:+7:9: +7:18 - _1 = Rem(_1, _1); // scope 0 at $DIR/operators.rs:+8:9: +8:18 - _1 = BitXor(_1, _1); // scope 0 at $DIR/operators.rs:+9:9: +9:18 - _1 = BitAnd(_1, _1); // scope 0 at $DIR/operators.rs:+10:9: +10:18 - _1 = Shl(_1, _1); // scope 0 at $DIR/operators.rs:+11:9: +11:19 - _1 = Shr(_1, _1); // scope 0 at $DIR/operators.rs:+12:9: +12:19 - _2 = Eq(_1, _1); // scope 0 at $DIR/operators.rs:+13:9: +13:19 - _2 = Lt(_1, _1); // scope 0 at $DIR/operators.rs:+14:9: +14:18 - _2 = Le(_1, _1); // scope 0 at $DIR/operators.rs:+15:9: +15:19 - _2 = Ge(_1, _1); // scope 0 at $DIR/operators.rs:+16:9: +16:19 - _2 = Gt(_1, _1); // scope 0 at $DIR/operators.rs:+17:9: +17:18 - _3 = CheckedAdd(_1, _1); // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - _2 = (_3.1: bool); // scope 0 at $DIR/operators.rs:+19:9: +19:18 - _1 = (_3.0: i32); // scope 0 at $DIR/operators.rs:+20:9: +20:18 - _0 = _1; // scope 0 at $DIR/operators.rs:+21:9: +21:16 - return; // scope 0 at $DIR/operators.rs:+22:9: +22:17 + _1 = Neg(_1); + _2 = Not(_2); + _1 = Add(_1, _1); + _1 = Sub(_1, _1); + _1 = Mul(_1, _1); + _1 = Div(_1, _1); + _1 = Rem(_1, _1); + _1 = BitXor(_1, _1); + _1 = BitAnd(_1, _1); + _1 = Shl(_1, _1); + _1 = Shr(_1, _1); + _2 = Eq(_1, _1); + _2 = Lt(_1, _1); + _2 = Le(_1, _1); + _2 = Ge(_1, _1); + _2 = Gt(_1, _1); + _3 = CheckedAdd(_1, _1); + _2 = (_3.1: bool); + _1 = (_3.0: i32); + _0 = _1; + return; } } diff --git a/tests/mir-opt/building/custom/projections.copy_for_deref.built.after.mir b/tests/mir-opt/building/custom/projections.copy_for_deref.built.after.mir index 5233d0489c63f..b1ba5f9314d51 100644 --- a/tests/mir-opt/building/custom/projections.copy_for_deref.built.after.mir +++ b/tests/mir-opt/building/custom/projections.copy_for_deref.built.after.mir @@ -1,12 +1,12 @@ // MIR for `copy_for_deref` after built fn copy_for_deref(_1: (&i32, i32)) -> i32 { - let mut _0: i32; // return place in scope 0 at $DIR/projections.rs:+0:38: +0:41 - let mut _2: &i32; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL + let mut _0: i32; + let mut _2: &i32; bb0: { - _2 = deref_copy (_1.0: &i32); // scope 0 at $DIR/projections.rs:+4:13: +4:37 - _0 = (*_2); // scope 0 at $DIR/projections.rs:+5:13: +5:24 - return; // scope 0 at $DIR/projections.rs:+6:13: +6:21 + _2 = deref_copy (_1.0: &i32); + _0 = (*_2); + return; } } diff --git a/tests/mir-opt/building/custom/projections.set.built.after.mir b/tests/mir-opt/building/custom/projections.set.built.after.mir index 2f15176a61f20..9e756c50458a3 100644 --- a/tests/mir-opt/building/custom/projections.set.built.after.mir +++ b/tests/mir-opt/building/custom/projections.set.built.after.mir @@ -1,10 +1,10 @@ // MIR for `set` after built fn set(_1: &mut Option) -> () { - let mut _0: (); // return place in scope 0 at $DIR/projections.rs:+0:31: +0:31 + let mut _0: (); bb0: { - (((*_1) as variant#1).0: i32) = const 10_i32; // scope 0 at $DIR/projections.rs:+2:9: +2:48 - return; // scope 0 at $DIR/projections.rs:+3:9: +3:17 + (((*_1) as variant#1).0: i32) = const 10_i32; + return; } } diff --git a/tests/mir-opt/building/custom/projections.simple_index.built.after.mir b/tests/mir-opt/building/custom/projections.simple_index.built.after.mir index fc422e4b3f01f..f74c61009d341 100644 --- a/tests/mir-opt/building/custom/projections.simple_index.built.after.mir +++ b/tests/mir-opt/building/custom/projections.simple_index.built.after.mir @@ -1,13 +1,13 @@ // MIR for `simple_index` after built fn simple_index(_1: [i32; 10], _2: &[i32]) -> i32 { - let mut _0: i32; // return place in scope 0 at $DIR/projections.rs:+0:45: +0:48 - let mut _3: usize; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL + let mut _0: i32; + let mut _3: usize; bb0: { - _3 = const 3_usize; // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - _0 = _1[_3]; // scope 0 at $DIR/projections.rs:+3:9: +3:22 - _0 = (*_2)[_3]; // scope 0 at $DIR/projections.rs:+4:9: +4:25 - return; // scope 0 at $DIR/projections.rs:+5:9: +5:17 + _3 = const 3_usize; + _0 = _1[_3]; + _0 = (*_2)[_3]; + return; } } diff --git a/tests/mir-opt/building/custom/projections.tuples.built.after.mir b/tests/mir-opt/building/custom/projections.tuples.built.after.mir index dec575200c644..a370de2ed8439 100644 --- a/tests/mir-opt/building/custom/projections.tuples.built.after.mir +++ b/tests/mir-opt/building/custom/projections.tuples.built.after.mir @@ -1,11 +1,11 @@ // MIR for `tuples` after built fn tuples(_1: (u32, i32)) -> (u32, i32) { - let mut _0: (u32, i32); // return place in scope 0 at $DIR/projections.rs:+0:29: +0:39 + let mut _0: (u32, i32); bb0: { - (_0.0: u32) = (_1.0: u32); // scope 0 at $DIR/projections.rs:+4:13: +4:24 - (_0.1: i32) = (_1.1: i32); // scope 0 at $DIR/projections.rs:+5:13: +5:24 - return; // scope 0 at $DIR/projections.rs:+6:13: +6:21 + (_0.0: u32) = (_1.0: u32); + (_0.1: i32) = (_1.1: i32); + return; } } diff --git a/tests/mir-opt/building/custom/projections.unions.built.after.mir b/tests/mir-opt/building/custom/projections.unions.built.after.mir index 922538a5f17be..4189b329e8cc5 100644 --- a/tests/mir-opt/building/custom/projections.unions.built.after.mir +++ b/tests/mir-opt/building/custom/projections.unions.built.after.mir @@ -1,10 +1,10 @@ // MIR for `unions` after built fn unions(_1: U) -> i32 { - let mut _0: i32; // return place in scope 0 at $DIR/projections.rs:+0:20: +0:23 + let mut _0: i32; bb0: { - _0 = (_1.0: i32); // scope 0 at $DIR/projections.rs:+2:9: +2:18 - return; // scope 0 at $DIR/projections.rs:+3:9: +3:17 + _0 = (_1.0: i32); + return; } } diff --git a/tests/mir-opt/building/custom/projections.unwrap.built.after.mir b/tests/mir-opt/building/custom/projections.unwrap.built.after.mir index 75b03a3c3930b..0c43bdc9d24d0 100644 --- a/tests/mir-opt/building/custom/projections.unwrap.built.after.mir +++ b/tests/mir-opt/building/custom/projections.unwrap.built.after.mir @@ -1,10 +1,10 @@ // MIR for `unwrap` after built fn unwrap(_1: Option) -> i32 { - let mut _0: i32; // return place in scope 0 at $DIR/projections.rs:+0:32: +0:35 + let mut _0: i32; bb0: { - _0 = ((_1 as variant#1).0: i32); // scope 0 at $DIR/projections.rs:+2:9: +2:40 - return; // scope 0 at $DIR/projections.rs:+3:9: +3:17 + _0 = ((_1 as variant#1).0: i32); + return; } } diff --git a/tests/mir-opt/building/custom/projections.unwrap_deref.built.after.mir b/tests/mir-opt/building/custom/projections.unwrap_deref.built.after.mir index c6b0f7efa9ba0..39e9785134380 100644 --- a/tests/mir-opt/building/custom/projections.unwrap_deref.built.after.mir +++ b/tests/mir-opt/building/custom/projections.unwrap_deref.built.after.mir @@ -1,10 +1,10 @@ // MIR for `unwrap_deref` after built fn unwrap_deref(_1: Option<&i32>) -> i32 { - let mut _0: i32; // return place in scope 0 at $DIR/projections.rs:+0:39: +0:42 + let mut _0: i32; bb0: { - _0 = (*((_1 as variant#1).0: &i32)); // scope 0 at $DIR/projections.rs:+2:9: +2:49 - return; // scope 0 at $DIR/projections.rs:+3:9: +3:17 + _0 = (*((_1 as variant#1).0: &i32)); + return; } } diff --git a/tests/mir-opt/building/custom/references.immut_ref.built.after.mir b/tests/mir-opt/building/custom/references.immut_ref.built.after.mir index f5ee112623541..d1e1aab99d180 100644 --- a/tests/mir-opt/building/custom/references.immut_ref.built.after.mir +++ b/tests/mir-opt/building/custom/references.immut_ref.built.after.mir @@ -1,13 +1,13 @@ // MIR for `immut_ref` after built fn immut_ref(_1: &i32) -> &i32 { - let mut _0: &i32; // return place in scope 0 at $DIR/references.rs:+0:30: +0:34 - let mut _2: *const i32; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL + let mut _0: &i32; + let mut _2: *const i32; bb0: { - _2 = &raw const (*_1); // scope 0 at $DIR/references.rs:+5:13: +5:29 - _0 = &(*_2); // scope 0 at $DIR/references.rs:+6:13: +6:23 - Retag(_0); // scope 0 at $DIR/references.rs:+7:13: +7:23 - return; // scope 0 at $DIR/references.rs:+8:13: +8:21 + _2 = &raw const (*_1); + _0 = &(*_2); + Retag(_0); + return; } } diff --git a/tests/mir-opt/building/custom/references.mut_ref.built.after.mir b/tests/mir-opt/building/custom/references.mut_ref.built.after.mir index 8e2ffc33b1a0a..c82cb3274d607 100644 --- a/tests/mir-opt/building/custom/references.mut_ref.built.after.mir +++ b/tests/mir-opt/building/custom/references.mut_ref.built.after.mir @@ -1,13 +1,13 @@ // MIR for `mut_ref` after built fn mut_ref(_1: &mut i32) -> &mut i32 { - let mut _0: &mut i32; // return place in scope 0 at $DIR/references.rs:+0:32: +0:40 - let mut _2: *mut i32; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL + let mut _0: &mut i32; + let mut _2: *mut i32; bb0: { - _2 = &raw mut (*_1); // scope 0 at $DIR/references.rs:+5:13: +5:33 - _0 = &mut (*_2); // scope 0 at $DIR/references.rs:+6:13: +6:26 - Retag(_0); // scope 0 at $DIR/references.rs:+7:13: +7:23 - return; // scope 0 at $DIR/references.rs:+8:13: +8:21 + _2 = &raw mut (*_1); + _0 = &mut (*_2); + Retag(_0); + return; } } diff --git a/tests/mir-opt/building/custom/references.raw_pointer.built.after.mir b/tests/mir-opt/building/custom/references.raw_pointer.built.after.mir index 775e5e3ad9b12..57c7f92a39959 100644 --- a/tests/mir-opt/building/custom/references.raw_pointer.built.after.mir +++ b/tests/mir-opt/building/custom/references.raw_pointer.built.after.mir @@ -1,10 +1,10 @@ // MIR for `raw_pointer` after built fn raw_pointer(_1: *const i32) -> *const i32 { - let mut _0: *const i32; // return place in scope 0 at $DIR/references.rs:+0:38: +0:48 + let mut _0: *const i32; bb0: { - _0 = &raw const (*_1); // scope 0 at $DIR/references.rs:+4:9: +4:27 - return; // scope 0 at $DIR/references.rs:+5:9: +5:17 + _0 = &raw const (*_1); + return; } } diff --git a/tests/mir-opt/building/custom/references.raw_pointer_offset.built.after.mir b/tests/mir-opt/building/custom/references.raw_pointer_offset.built.after.mir index f614aef4029d0..8046b543eefc9 100644 --- a/tests/mir-opt/building/custom/references.raw_pointer_offset.built.after.mir +++ b/tests/mir-opt/building/custom/references.raw_pointer_offset.built.after.mir @@ -1,10 +1,10 @@ // MIR for `raw_pointer_offset` after built fn raw_pointer_offset(_1: *const i32) -> *const i32 { - let mut _0: *const i32; // return place in scope 0 at $DIR/references.rs:+0:45: +0:55 + let mut _0: *const i32; bb0: { - _0 = Offset(_1, const 1_isize); // scope 0 at $DIR/references.rs:+2:9: +2:33 - return; // scope 0 at $DIR/references.rs:+3:9: +3:17 + _0 = Offset(_1, const 1_isize); + return; } } diff --git a/tests/mir-opt/building/custom/simple_assign.simple.built.after.mir b/tests/mir-opt/building/custom/simple_assign.simple.built.after.mir index 743016708c583..6f7aaeed97990 100644 --- a/tests/mir-opt/building/custom/simple_assign.simple.built.after.mir +++ b/tests/mir-opt/building/custom/simple_assign.simple.built.after.mir @@ -1,20 +1,20 @@ // MIR for `simple` after built fn simple(_1: i32) -> i32 { - let mut _0: i32; // return place in scope 0 at $DIR/simple_assign.rs:+0:26: +0:29 - let mut _2: i32; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _3: i32; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL + let mut _0: i32; + let mut _2: i32; + let mut _3: i32; bb0: { - StorageLive(_2); // scope 0 at $DIR/simple_assign.rs:+6:13: +6:31 - _2 = _1; // scope 0 at $DIR/simple_assign.rs:+7:13: +7:22 - goto -> bb1; // scope 0 at $DIR/simple_assign.rs:+8:13: +8:23 + StorageLive(_2); + _2 = _1; + goto -> bb1; } bb1: { - _3 = move _2; // scope 0 at $DIR/simple_assign.rs:+12:13: +12:32 - StorageDead(_2); // scope 0 at $DIR/simple_assign.rs:+13:13: +13:31 - _0 = _3; // scope 0 at $DIR/simple_assign.rs:+14:13: +14:24 - return; // scope 0 at $DIR/simple_assign.rs:+15:13: +15:21 + _3 = move _2; + StorageDead(_2); + _0 = _3; + return; } } diff --git a/tests/mir-opt/building/custom/simple_assign.simple_ref.built.after.mir b/tests/mir-opt/building/custom/simple_assign.simple_ref.built.after.mir index 2b0e8f1047b53..b6d8229988e3f 100644 --- a/tests/mir-opt/building/custom/simple_assign.simple_ref.built.after.mir +++ b/tests/mir-opt/building/custom/simple_assign.simple_ref.built.after.mir @@ -1,10 +1,10 @@ // MIR for `simple_ref` after built fn simple_ref(_1: &mut i32) -> &mut i32 { - let mut _0: &mut i32; // return place in scope 0 at $DIR/simple_assign.rs:+0:35: +0:43 + let mut _0: &mut i32; bb0: { - _0 = move _1; // scope 0 at $DIR/simple_assign.rs:+2:9: +2:22 - return; // scope 0 at $DIR/simple_assign.rs:+3:9: +3:17 + _0 = move _1; + return; } } diff --git a/tests/mir-opt/building/custom/terminators.assert_nonzero.built.after.mir b/tests/mir-opt/building/custom/terminators.assert_nonzero.built.after.mir index a1a27226b4e92..9cf26dff35033 100644 --- a/tests/mir-opt/building/custom/terminators.assert_nonzero.built.after.mir +++ b/tests/mir-opt/building/custom/terminators.assert_nonzero.built.after.mir @@ -1,17 +1,17 @@ // MIR for `assert_nonzero` after built fn assert_nonzero(_1: i32) -> () { - let mut _0: (); // return place in scope 0 at $DIR/terminators.rs:+0:27: +0:27 + let mut _0: (); bb0: { - switchInt(_1) -> [0: bb1, otherwise: bb2]; // scope 0 at $DIR/terminators.rs:+3:13: +6:14 + switchInt(_1) -> [0: bb1, otherwise: bb2]; } bb1: { - unreachable; // scope 0 at $DIR/terminators.rs:+10:13: +10:26 + unreachable; } bb2: { - return; // scope 0 at $DIR/terminators.rs:+14:13: +14:21 + return; } } diff --git a/tests/mir-opt/building/custom/terminators.direct_call.built.after.mir b/tests/mir-opt/building/custom/terminators.direct_call.built.after.mir index 1b2345a965ed0..534d7615180af 100644 --- a/tests/mir-opt/building/custom/terminators.direct_call.built.after.mir +++ b/tests/mir-opt/building/custom/terminators.direct_call.built.after.mir @@ -1,16 +1,13 @@ // MIR for `direct_call` after built fn direct_call(_1: i32) -> i32 { - let mut _0: i32; // return place in scope 0 at $DIR/terminators.rs:+0:27: +0:30 + let mut _0: i32; bb0: { - _0 = ident::(_1) -> bb1; // scope 0 at $DIR/terminators.rs:+3:13: +3:42 - // mir::Constant - // + span: $DIR/terminators.rs:15:33: 15:38 - // + literal: Const { ty: fn(i32) -> i32 {ident::}, val: Value() } + _0 = ident::(_1) -> bb1; } bb1: { - return; // scope 0 at $DIR/terminators.rs:+7:13: +7:21 + return; } } diff --git a/tests/mir-opt/building/custom/terminators.drop_first.built.after.mir b/tests/mir-opt/building/custom/terminators.drop_first.built.after.mir index ada78c0fc782e..aba724a4b0d33 100644 --- a/tests/mir-opt/building/custom/terminators.drop_first.built.after.mir +++ b/tests/mir-opt/building/custom/terminators.drop_first.built.after.mir @@ -1,14 +1,14 @@ // MIR for `drop_first` after built fn drop_first(_1: WriteOnDrop<'_>, _2: WriteOnDrop<'_>) -> () { - let mut _0: (); // return place in scope 0 at $DIR/terminators.rs:+0:59: +0:59 + let mut _0: (); bb0: { - drop(_1) -> bb1; // scope 0 at $DIR/terminators.rs:+3:13: +3:30 + drop(_1) -> bb1; } bb1: { - _1 = move _2; // scope 0 at $DIR/terminators.rs:+7:13: +7:24 - return; // scope 0 at $DIR/terminators.rs:+8:13: +8:21 + _1 = move _2; + return; } } diff --git a/tests/mir-opt/building/custom/terminators.drop_second.built.after.mir b/tests/mir-opt/building/custom/terminators.drop_second.built.after.mir index f14246f2d1206..32d770bb0c139 100644 --- a/tests/mir-opt/building/custom/terminators.drop_second.built.after.mir +++ b/tests/mir-opt/building/custom/terminators.drop_second.built.after.mir @@ -1,13 +1,13 @@ // MIR for `drop_second` after built fn drop_second(_1: WriteOnDrop<'_>, _2: WriteOnDrop<'_>) -> () { - let mut _0: (); // return place in scope 0 at $DIR/terminators.rs:+0:60: +0:60 + let mut _0: (); bb0: { - drop(_2) -> bb1; // scope 0 at $DIR/terminators.rs:+3:13: +3:30 + drop(_2) -> bb1; } bb1: { - return; // scope 0 at $DIR/terminators.rs:+7:13: +7:21 + return; } } diff --git a/tests/mir-opt/building/custom/terminators.indirect_call.built.after.mir b/tests/mir-opt/building/custom/terminators.indirect_call.built.after.mir index 2f1b14069abe0..56371c7866605 100644 --- a/tests/mir-opt/building/custom/terminators.indirect_call.built.after.mir +++ b/tests/mir-opt/building/custom/terminators.indirect_call.built.after.mir @@ -1,13 +1,13 @@ // MIR for `indirect_call` after built fn indirect_call(_1: i32, _2: fn(i32) -> i32) -> i32 { - let mut _0: i32; // return place in scope 0 at $DIR/terminators.rs:+0:48: +0:51 + let mut _0: i32; bb0: { - _0 = _2(_1) -> bb1; // scope 0 at $DIR/terminators.rs:+3:13: +3:38 + _0 = _2(_1) -> bb1; } bb1: { - return; // scope 0 at $DIR/terminators.rs:+7:13: +7:21 + return; } } diff --git a/tests/mir-opt/building/enum_cast.bar.built.after.mir b/tests/mir-opt/building/enum_cast.bar.built.after.mir index 9f14c02846547..512c73216198e 100644 --- a/tests/mir-opt/building/enum_cast.bar.built.after.mir +++ b/tests/mir-opt/building/enum_cast.bar.built.after.mir @@ -1,22 +1,22 @@ // MIR for `bar` after built fn bar(_1: Bar) -> usize { - debug bar => _1; // in scope 0 at $DIR/enum_cast.rs:+0:8: +0:11 - let mut _0: usize; // return place in scope 0 at $DIR/enum_cast.rs:+0:21: +0:26 - let _2: Bar; // in scope 0 at $DIR/enum_cast.rs:+1:5: +1:8 - let mut _3: isize; // in scope 0 at $DIR/enum_cast.rs:+1:5: +1:8 - let mut _4: u8; // in scope 0 at $DIR/enum_cast.rs:+1:5: +1:17 - let mut _5: bool; // in scope 0 at $DIR/enum_cast.rs:+1:5: +1:17 + debug bar => _1; + let mut _0: usize; + let _2: Bar; + let mut _3: isize; + let mut _4: u8; + let mut _5: bool; bb0: { - StorageLive(_2); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:8 - _2 = move _1; // scope 0 at $DIR/enum_cast.rs:+1:5: +1:8 - _3 = discriminant(_2); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:17 - _4 = _3 as u8 (IntToInt); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:17 - _5 = Le(_4, const 1_u8); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:17 - assume(move _5); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:17 - _0 = move _3 as usize (IntToInt); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:17 - StorageDead(_2); // scope 0 at $DIR/enum_cast.rs:+1:16: +1:17 - return; // scope 0 at $DIR/enum_cast.rs:+2:2: +2:2 + StorageLive(_2); + _2 = move _1; + _3 = discriminant(_2); + _4 = _3 as u8 (IntToInt); + _5 = Le(_4, const 1_u8); + assume(move _5); + _0 = move _3 as usize (IntToInt); + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/building/enum_cast.boo.built.after.mir b/tests/mir-opt/building/enum_cast.boo.built.after.mir index 715dedcf24deb..ad0adf14e4ac8 100644 --- a/tests/mir-opt/building/enum_cast.boo.built.after.mir +++ b/tests/mir-opt/building/enum_cast.boo.built.after.mir @@ -1,22 +1,22 @@ // MIR for `boo` after built fn boo(_1: Boo) -> usize { - debug boo => _1; // in scope 0 at $DIR/enum_cast.rs:+0:8: +0:11 - let mut _0: usize; // return place in scope 0 at $DIR/enum_cast.rs:+0:21: +0:26 - let _2: Boo; // in scope 0 at $DIR/enum_cast.rs:+1:5: +1:8 - let mut _3: u8; // in scope 0 at $DIR/enum_cast.rs:+1:5: +1:8 - let mut _4: u8; // in scope 0 at $DIR/enum_cast.rs:+1:5: +1:17 - let mut _5: bool; // in scope 0 at $DIR/enum_cast.rs:+1:5: +1:17 + debug boo => _1; + let mut _0: usize; + let _2: Boo; + let mut _3: u8; + let mut _4: u8; + let mut _5: bool; bb0: { - StorageLive(_2); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:8 - _2 = move _1; // scope 0 at $DIR/enum_cast.rs:+1:5: +1:8 - _3 = discriminant(_2); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:17 - _4 = _3 as u8 (IntToInt); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:17 - _5 = Le(_4, const 1_u8); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:17 - assume(move _5); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:17 - _0 = move _3 as usize (IntToInt); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:17 - StorageDead(_2); // scope 0 at $DIR/enum_cast.rs:+1:16: +1:17 - return; // scope 0 at $DIR/enum_cast.rs:+2:2: +2:2 + StorageLive(_2); + _2 = move _1; + _3 = discriminant(_2); + _4 = _3 as u8 (IntToInt); + _5 = Le(_4, const 1_u8); + assume(move _5); + _0 = move _3 as usize (IntToInt); + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/building/enum_cast.droppy.built.after.mir b/tests/mir-opt/building/enum_cast.droppy.built.after.mir index 6c177c61ecad8..1caf9e4a523c7 100644 --- a/tests/mir-opt/building/enum_cast.droppy.built.after.mir +++ b/tests/mir-opt/building/enum_cast.droppy.built.after.mir @@ -1,71 +1,71 @@ // MIR for `droppy` after built fn droppy() -> () { - let mut _0: (); // return place in scope 0 at $DIR/enum_cast.rs:+0:13: +0:13 - let _1: (); // in scope 0 at $DIR/enum_cast.rs:+1:5: +6:6 - let _2: Droppy; // in scope 0 at $DIR/enum_cast.rs:+2:13: +2:14 - let _4: Droppy; // in scope 0 at $DIR/enum_cast.rs:+5:17: +5:18 - let mut _5: isize; // in scope 0 at $DIR/enum_cast.rs:+5:17: +5:18 - let mut _6: u8; // in scope 0 at $DIR/enum_cast.rs:+5:17: +5:27 - let mut _7: bool; // in scope 0 at $DIR/enum_cast.rs:+5:17: +5:27 - let _8: Droppy; // in scope 0 at $DIR/enum_cast.rs:+7:9: +7:10 + let mut _0: (); + let _1: (); + let _2: Droppy; + let _4: Droppy; + let mut _5: isize; + let mut _6: u8; + let mut _7: bool; + let _8: Droppy; scope 1 { - debug x => _2; // in scope 1 at $DIR/enum_cast.rs:+2:13: +2:14 + debug x => _2; scope 2 { - debug y => _3; // in scope 2 at $DIR/enum_cast.rs:+5:13: +5:14 + debug y => _3; } scope 3 { - let _3: usize; // in scope 3 at $DIR/enum_cast.rs:+5:13: +5:14 + let _3: usize; } } scope 4 { - debug z => _8; // in scope 4 at $DIR/enum_cast.rs:+7:9: +7:10 + debug z => _8; } bb0: { - StorageLive(_1); // scope 0 at $DIR/enum_cast.rs:+1:5: +6:6 - StorageLive(_2); // scope 0 at $DIR/enum_cast.rs:+2:13: +2:14 - _2 = Droppy::C; // scope 0 at $DIR/enum_cast.rs:+2:17: +2:26 - FakeRead(ForLet(None), _2); // scope 0 at $DIR/enum_cast.rs:+2:13: +2:14 - StorageLive(_3); // scope 3 at $DIR/enum_cast.rs:+5:13: +5:14 - StorageLive(_4); // scope 3 at $DIR/enum_cast.rs:+5:17: +5:18 - _4 = move _2; // scope 3 at $DIR/enum_cast.rs:+5:17: +5:18 - _5 = discriminant(_4); // scope 3 at $DIR/enum_cast.rs:+5:17: +5:27 - _6 = _5 as u8 (IntToInt); // scope 3 at $DIR/enum_cast.rs:+5:17: +5:27 - _7 = Le(_6, const 2_u8); // scope 3 at $DIR/enum_cast.rs:+5:17: +5:27 - assume(move _7); // scope 3 at $DIR/enum_cast.rs:+5:17: +5:27 - _3 = move _5 as usize (IntToInt); // scope 3 at $DIR/enum_cast.rs:+5:17: +5:27 - drop(_4) -> [return: bb1, unwind: bb4]; // scope 3 at $DIR/enum_cast.rs:+5:26: +5:27 + StorageLive(_1); + StorageLive(_2); + _2 = Droppy::C; + FakeRead(ForLet(None), _2); + StorageLive(_3); + StorageLive(_4); + _4 = move _2; + _5 = discriminant(_4); + _6 = _5 as u8 (IntToInt); + _7 = Le(_6, const 2_u8); + assume(move _7); + _3 = move _5 as usize (IntToInt); + drop(_4) -> [return: bb1, unwind: bb4]; } bb1: { - StorageDead(_4); // scope 3 at $DIR/enum_cast.rs:+5:26: +5:27 - FakeRead(ForLet(None), _3); // scope 3 at $DIR/enum_cast.rs:+5:13: +5:14 - _1 = const (); // scope 0 at $DIR/enum_cast.rs:+1:5: +6:6 - StorageDead(_3); // scope 1 at $DIR/enum_cast.rs:+6:5: +6:6 - drop(_2) -> [return: bb2, unwind: bb5]; // scope 0 at $DIR/enum_cast.rs:+6:5: +6:6 + StorageDead(_4); + FakeRead(ForLet(None), _3); + _1 = const (); + StorageDead(_3); + drop(_2) -> [return: bb2, unwind: bb5]; } bb2: { - StorageDead(_2); // scope 0 at $DIR/enum_cast.rs:+6:5: +6:6 - StorageDead(_1); // scope 0 at $DIR/enum_cast.rs:+6:5: +6:6 - StorageLive(_8); // scope 0 at $DIR/enum_cast.rs:+7:9: +7:10 - _8 = Droppy::B; // scope 0 at $DIR/enum_cast.rs:+7:13: +7:22 - FakeRead(ForLet(None), _8); // scope 0 at $DIR/enum_cast.rs:+7:9: +7:10 - _0 = const (); // scope 0 at $DIR/enum_cast.rs:+0:13: +8:2 - drop(_8) -> [return: bb3, unwind: bb5]; // scope 0 at $DIR/enum_cast.rs:+8:1: +8:2 + StorageDead(_2); + StorageDead(_1); + StorageLive(_8); + _8 = Droppy::B; + FakeRead(ForLet(None), _8); + _0 = const (); + drop(_8) -> [return: bb3, unwind: bb5]; } bb3: { - StorageDead(_8); // scope 0 at $DIR/enum_cast.rs:+8:1: +8:2 - return; // scope 0 at $DIR/enum_cast.rs:+8:2: +8:2 + StorageDead(_8); + return; } bb4 (cleanup): { - drop(_2) -> [return: bb5, unwind terminate]; // scope 0 at $DIR/enum_cast.rs:+6:5: +6:6 + drop(_2) -> [return: bb5, unwind terminate]; } bb5 (cleanup): { - resume; // scope 0 at $DIR/enum_cast.rs:+0:1: +8:2 + resume; } } diff --git a/tests/mir-opt/building/enum_cast.far.built.after.mir b/tests/mir-opt/building/enum_cast.far.built.after.mir index ab8129ca01cfc..e75803c706daf 100644 --- a/tests/mir-opt/building/enum_cast.far.built.after.mir +++ b/tests/mir-opt/building/enum_cast.far.built.after.mir @@ -1,22 +1,22 @@ // MIR for `far` after built fn far(_1: Far) -> isize { - debug far => _1; // in scope 0 at $DIR/enum_cast.rs:+0:8: +0:11 - let mut _0: isize; // return place in scope 0 at $DIR/enum_cast.rs:+0:21: +0:26 - let _2: Far; // in scope 0 at $DIR/enum_cast.rs:+1:5: +1:8 - let mut _3: i16; // in scope 0 at $DIR/enum_cast.rs:+1:5: +1:8 - let mut _4: u16; // in scope 0 at $DIR/enum_cast.rs:+1:5: +1:17 - let mut _5: bool; // in scope 0 at $DIR/enum_cast.rs:+1:5: +1:17 + debug far => _1; + let mut _0: isize; + let _2: Far; + let mut _3: i16; + let mut _4: u16; + let mut _5: bool; bb0: { - StorageLive(_2); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:8 - _2 = move _1; // scope 0 at $DIR/enum_cast.rs:+1:5: +1:8 - _3 = discriminant(_2); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:17 - _4 = _3 as u16 (IntToInt); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:17 - _5 = Le(_4, const 1_u16); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:17 - assume(move _5); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:17 - _0 = move _3 as isize (IntToInt); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:17 - StorageDead(_2); // scope 0 at $DIR/enum_cast.rs:+1:16: +1:17 - return; // scope 0 at $DIR/enum_cast.rs:+2:2: +2:2 + StorageLive(_2); + _2 = move _1; + _3 = discriminant(_2); + _4 = _3 as u16 (IntToInt); + _5 = Le(_4, const 1_u16); + assume(move _5); + _0 = move _3 as isize (IntToInt); + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/building/enum_cast.foo.built.after.mir b/tests/mir-opt/building/enum_cast.foo.built.after.mir index 17e0abf2e3193..d4eea0534f830 100644 --- a/tests/mir-opt/building/enum_cast.foo.built.after.mir +++ b/tests/mir-opt/building/enum_cast.foo.built.after.mir @@ -1,17 +1,17 @@ // MIR for `foo` after built fn foo(_1: Foo) -> usize { - debug foo => _1; // in scope 0 at $DIR/enum_cast.rs:+0:8: +0:11 - let mut _0: usize; // return place in scope 0 at $DIR/enum_cast.rs:+0:21: +0:26 - let _2: Foo; // in scope 0 at $DIR/enum_cast.rs:+1:5: +1:8 - let mut _3: isize; // in scope 0 at $DIR/enum_cast.rs:+1:5: +1:8 + debug foo => _1; + let mut _0: usize; + let _2: Foo; + let mut _3: isize; bb0: { - StorageLive(_2); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:8 - _2 = move _1; // scope 0 at $DIR/enum_cast.rs:+1:5: +1:8 - _3 = discriminant(_2); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:17 - _0 = move _3 as usize (IntToInt); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:17 - StorageDead(_2); // scope 0 at $DIR/enum_cast.rs:+1:16: +1:17 - return; // scope 0 at $DIR/enum_cast.rs:+2:2: +2:2 + StorageLive(_2); + _2 = move _1; + _3 = discriminant(_2); + _0 = move _3 as usize (IntToInt); + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/building/enum_cast.offsetty.built.after.mir b/tests/mir-opt/building/enum_cast.offsetty.built.after.mir index 7b2b583f20fb9..282859d7cd014 100644 --- a/tests/mir-opt/building/enum_cast.offsetty.built.after.mir +++ b/tests/mir-opt/building/enum_cast.offsetty.built.after.mir @@ -1,26 +1,26 @@ // MIR for `offsetty` after built fn offsetty(_1: NotStartingAtZero) -> u32 { - debug x => _1; // in scope 0 at $DIR/enum_cast.rs:+0:13: +0:14 - let mut _0: u32; // return place in scope 0 at $DIR/enum_cast.rs:+0:38: +0:41 - let _2: NotStartingAtZero; // in scope 0 at $DIR/enum_cast.rs:+1:5: +1:6 - let mut _3: isize; // in scope 0 at $DIR/enum_cast.rs:+1:5: +1:6 - let mut _4: u8; // in scope 0 at $DIR/enum_cast.rs:+1:5: +1:13 - let mut _5: bool; // in scope 0 at $DIR/enum_cast.rs:+1:5: +1:13 - let mut _6: bool; // in scope 0 at $DIR/enum_cast.rs:+1:5: +1:13 - let mut _7: bool; // in scope 0 at $DIR/enum_cast.rs:+1:5: +1:13 + debug x => _1; + let mut _0: u32; + let _2: NotStartingAtZero; + let mut _3: isize; + let mut _4: u8; + let mut _5: bool; + let mut _6: bool; + let mut _7: bool; bb0: { - StorageLive(_2); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:6 - _2 = move _1; // scope 0 at $DIR/enum_cast.rs:+1:5: +1:6 - _3 = discriminant(_2); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:13 - _4 = _3 as u8 (IntToInt); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:13 - _5 = Ge(_4, const 4_u8); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:13 - _6 = Le(_4, const 8_u8); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:13 - _7 = BitAnd(move _5, move _6); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:13 - assume(move _7); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:13 - _0 = move _3 as u32 (IntToInt); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:13 - StorageDead(_2); // scope 0 at $DIR/enum_cast.rs:+1:12: +1:13 - return; // scope 0 at $DIR/enum_cast.rs:+2:2: +2:2 + StorageLive(_2); + _2 = move _1; + _3 = discriminant(_2); + _4 = _3 as u8 (IntToInt); + _5 = Ge(_4, const 4_u8); + _6 = Le(_4, const 8_u8); + _7 = BitAnd(move _5, move _6); + assume(move _7); + _0 = move _3 as u32 (IntToInt); + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/building/enum_cast.signy.built.after.mir b/tests/mir-opt/building/enum_cast.signy.built.after.mir index ef4fea604ec1a..a9f7d6c78007a 100644 --- a/tests/mir-opt/building/enum_cast.signy.built.after.mir +++ b/tests/mir-opt/building/enum_cast.signy.built.after.mir @@ -1,26 +1,26 @@ // MIR for `signy` after built fn signy(_1: SignedAroundZero) -> i16 { - debug x => _1; // in scope 0 at $DIR/enum_cast.rs:+0:10: +0:11 - let mut _0: i16; // return place in scope 0 at $DIR/enum_cast.rs:+0:34: +0:37 - let _2: SignedAroundZero; // in scope 0 at $DIR/enum_cast.rs:+1:5: +1:6 - let mut _3: i16; // in scope 0 at $DIR/enum_cast.rs:+1:5: +1:6 - let mut _4: u16; // in scope 0 at $DIR/enum_cast.rs:+1:5: +1:13 - let mut _5: bool; // in scope 0 at $DIR/enum_cast.rs:+1:5: +1:13 - let mut _6: bool; // in scope 0 at $DIR/enum_cast.rs:+1:5: +1:13 - let mut _7: bool; // in scope 0 at $DIR/enum_cast.rs:+1:5: +1:13 + debug x => _1; + let mut _0: i16; + let _2: SignedAroundZero; + let mut _3: i16; + let mut _4: u16; + let mut _5: bool; + let mut _6: bool; + let mut _7: bool; bb0: { - StorageLive(_2); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:6 - _2 = move _1; // scope 0 at $DIR/enum_cast.rs:+1:5: +1:6 - _3 = discriminant(_2); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:13 - _4 = _3 as u16 (IntToInt); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:13 - _5 = Ge(_4, const 65534_u16); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:13 - _6 = Le(_4, const 2_u16); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:13 - _7 = BitOr(move _5, move _6); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:13 - assume(move _7); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:13 - _0 = move _3 as i16 (IntToInt); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:13 - StorageDead(_2); // scope 0 at $DIR/enum_cast.rs:+1:12: +1:13 - return; // scope 0 at $DIR/enum_cast.rs:+2:2: +2:2 + StorageLive(_2); + _2 = move _1; + _3 = discriminant(_2); + _4 = _3 as u16 (IntToInt); + _5 = Ge(_4, const 65534_u16); + _6 = Le(_4, const 2_u16); + _7 = BitOr(move _5, move _6); + assume(move _7); + _0 = move _3 as i16 (IntToInt); + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/building/enum_cast.unsigny.built.after.mir b/tests/mir-opt/building/enum_cast.unsigny.built.after.mir index 7ca147b1596ff..a232ab942b7ae 100644 --- a/tests/mir-opt/building/enum_cast.unsigny.built.after.mir +++ b/tests/mir-opt/building/enum_cast.unsigny.built.after.mir @@ -1,17 +1,17 @@ // MIR for `unsigny` after built fn unsigny(_1: UnsignedAroundZero) -> u16 { - debug x => _1; // in scope 0 at $DIR/enum_cast.rs:+0:12: +0:13 - let mut _0: u16; // return place in scope 0 at $DIR/enum_cast.rs:+0:38: +0:41 - let _2: UnsignedAroundZero; // in scope 0 at $DIR/enum_cast.rs:+2:5: +2:6 - let mut _3: u16; // in scope 0 at $DIR/enum_cast.rs:+2:5: +2:6 + debug x => _1; + let mut _0: u16; + let _2: UnsignedAroundZero; + let mut _3: u16; bb0: { - StorageLive(_2); // scope 0 at $DIR/enum_cast.rs:+2:5: +2:6 - _2 = move _1; // scope 0 at $DIR/enum_cast.rs:+2:5: +2:6 - _3 = discriminant(_2); // scope 0 at $DIR/enum_cast.rs:+2:5: +2:13 - _0 = move _3 as u16 (IntToInt); // scope 0 at $DIR/enum_cast.rs:+2:5: +2:13 - StorageDead(_2); // scope 0 at $DIR/enum_cast.rs:+2:12: +2:13 - return; // scope 0 at $DIR/enum_cast.rs:+3:2: +3:2 + StorageLive(_2); + _2 = move _1; + _3 = discriminant(_2); + _0 = move _3 as u16 (IntToInt); + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/building/issue_101867.main.built.after.mir b/tests/mir-opt/building/issue_101867.main.built.after.mir index 44c25ce673b88..915c5ef112c39 100644 --- a/tests/mir-opt/building/issue_101867.main.built.after.mir +++ b/tests/mir-opt/building/issue_101867.main.built.after.mir @@ -5,71 +5,65 @@ | 1: user_ty: Canonical { value: Ty(std::option::Option), max_universe: U0, variables: [] }, span: $DIR/issue_101867.rs:3:12: 3:22, inferred_ty: std::option::Option | fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/issue_101867.rs:+0:11: +0:11 - let _1: std::option::Option as UserTypeProjection { base: UserType(0), projs: [] }; // in scope 0 at $DIR/issue_101867.rs:+1:9: +1:10 - let mut _2: !; // in scope 0 at $DIR/issue_101867.rs:+2:26: +4:6 - let _3: (); // in scope 0 at $SRC_DIR/std/src/panic.rs:LL:COL - let mut _4: !; // in scope 0 at $SRC_DIR/std/src/panic.rs:LL:COL - let mut _6: isize; // in scope 0 at $DIR/issue_101867.rs:+2:9: +2:16 + let mut _0: (); + let _1: std::option::Option as UserTypeProjection { base: UserType(0), projs: [] }; + let mut _2: !; + let _3: (); + let mut _4: !; + let mut _6: isize; scope 1 { - debug x => _1; // in scope 1 at $DIR/issue_101867.rs:+1:9: +1:10 - let _5: u8; // in scope 1 at $DIR/issue_101867.rs:+2:14: +2:15 + debug x => _1; + let _5: u8; scope 2 { - debug y => _5; // in scope 2 at $DIR/issue_101867.rs:+2:14: +2:15 + debug y => _5; } } bb0: { - StorageLive(_1); // scope 0 at $DIR/issue_101867.rs:+1:9: +1:10 - _1 = Option::::Some(const 1_u8); // scope 0 at $DIR/issue_101867.rs:+1:25: +1:32 - FakeRead(ForLet(None), _1); // scope 0 at $DIR/issue_101867.rs:+1:9: +1:10 - AscribeUserType(_1, o, UserTypeProjection { base: UserType(1), projs: [] }); // scope 0 at $DIR/issue_101867.rs:+1:12: +1:22 - StorageLive(_5); // scope 1 at $DIR/issue_101867.rs:+2:14: +2:15 - FakeRead(ForMatchedPlace(None), _1); // scope 1 at $DIR/issue_101867.rs:+2:19: +2:20 - _6 = discriminant(_1); // scope 1 at $DIR/issue_101867.rs:+2:19: +2:20 - switchInt(move _6) -> [1: bb4, otherwise: bb3]; // scope 1 at $DIR/issue_101867.rs:+2:9: +2:16 + StorageLive(_1); + _1 = Option::::Some(const 1_u8); + FakeRead(ForLet(None), _1); + AscribeUserType(_1, o, UserTypeProjection { base: UserType(1), projs: [] }); + StorageLive(_5); + FakeRead(ForMatchedPlace(None), _1); + _6 = discriminant(_1); + switchInt(move _6) -> [1: bb4, otherwise: bb3]; } bb1: { - StorageLive(_3); // scope 1 at $SRC_DIR/std/src/panic.rs:LL:COL - StorageLive(_4); // scope 1 at $SRC_DIR/std/src/panic.rs:LL:COL - _4 = begin_panic::<&str>(const "explicit panic") -> bb7; // scope 1 at $SRC_DIR/std/src/panic.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/std/src/panic.rs:LL:COL - // + literal: Const { ty: fn(&str) -> ! {begin_panic::<&str>}, val: Value() } - // mir::Constant - // + span: $SRC_DIR/std/src/panic.rs:LL:COL - // + literal: Const { ty: &str, val: Value(Slice(..)) } + StorageLive(_3); + StorageLive(_4); + _4 = begin_panic::<&str>(const "explicit panic") -> bb7; } bb2: { - StorageDead(_4); // scope 1 at $SRC_DIR/std/src/panic.rs:LL:COL - StorageDead(_3); // scope 1 at $DIR/issue_101867.rs:+3:16: +3:17 - unreachable; // scope 1 at $DIR/issue_101867.rs:+2:26: +4:6 + StorageDead(_4); + StorageDead(_3); + unreachable; } bb3: { - goto -> bb6; // scope 1 at $DIR/issue_101867.rs:+2:19: +2:20 + goto -> bb6; } bb4: { - falseEdge -> [real: bb5, imaginary: bb3]; // scope 1 at $DIR/issue_101867.rs:+2:9: +2:16 + falseEdge -> [real: bb5, imaginary: bb3]; } bb5: { - _5 = ((_1 as Some).0: u8); // scope 1 at $DIR/issue_101867.rs:+2:14: +2:15 - _0 = const (); // scope 0 at $DIR/issue_101867.rs:+0:11: +5:2 - StorageDead(_5); // scope 1 at $DIR/issue_101867.rs:+5:1: +5:2 - StorageDead(_1); // scope 0 at $DIR/issue_101867.rs:+5:1: +5:2 - return; // scope 0 at $DIR/issue_101867.rs:+5:2: +5:2 + _5 = ((_1 as Some).0: u8); + _0 = const (); + StorageDead(_5); + StorageDead(_1); + return; } bb6: { - StorageDead(_5); // scope 1 at $DIR/issue_101867.rs:+5:1: +5:2 - goto -> bb1; // scope 0 at $DIR/issue_101867.rs:+0:11: +5:2 + StorageDead(_5); + goto -> bb1; } bb7 (cleanup): { - resume; // scope 0 at $DIR/issue_101867.rs:+0:1: +5:2 + resume; } } diff --git a/tests/mir-opt/building/issue_49232.main.built.after.mir b/tests/mir-opt/building/issue_49232.main.built.after.mir index cc135f4172152..f809132bc63f7 100644 --- a/tests/mir-opt/building/issue_49232.main.built.after.mir +++ b/tests/mir-opt/building/issue_49232.main.built.after.mir @@ -1,82 +1,79 @@ // MIR for `main` after built fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/issue_49232.rs:+0:11: +0:11 - let mut _1: (); // in scope 0 at $DIR/issue_49232.rs:+0:1: +10:2 - let _2: i32; // in scope 0 at $DIR/issue_49232.rs:+2:13: +2:19 - let mut _3: bool; // in scope 0 at $DIR/issue_49232.rs:+3:19: +3:23 - let mut _4: !; // in scope 0 at $DIR/issue_49232.rs:+5:25: +5:30 - let _5: (); // in scope 0 at $DIR/issue_49232.rs:+8:9: +8:22 - let mut _6: &i32; // in scope 0 at $DIR/issue_49232.rs:+8:14: +8:21 + let mut _0: (); + let mut _1: (); + let _2: i32; + let mut _3: bool; + let mut _4: !; + let _5: (); + let mut _6: &i32; scope 1 { - debug beacon => _2; // in scope 1 at $DIR/issue_49232.rs:+2:13: +2:19 + debug beacon => _2; } bb0: { - goto -> bb1; // scope 0 at $DIR/issue_49232.rs:+1:5: +9:6 + goto -> bb1; } bb1: { - falseUnwind -> [real: bb2, unwind: bb11]; // scope 0 at $DIR/issue_49232.rs:+1:5: +9:6 + falseUnwind -> [real: bb2, unwind: bb11]; } bb2: { - StorageLive(_2); // scope 0 at $DIR/issue_49232.rs:+2:13: +2:19 - StorageLive(_3); // scope 0 at $DIR/issue_49232.rs:+3:19: +3:23 - _3 = const true; // scope 0 at $DIR/issue_49232.rs:+3:19: +3:23 - FakeRead(ForMatchedPlace(None), _3); // scope 0 at $DIR/issue_49232.rs:+3:19: +3:23 - switchInt(_3) -> [0: bb3, otherwise: bb4]; // scope 0 at $DIR/issue_49232.rs:+3:13: +3:23 + StorageLive(_2); + StorageLive(_3); + _3 = const true; + FakeRead(ForMatchedPlace(None), _3); + switchInt(_3) -> [0: bb3, otherwise: bb4]; } bb3: { - falseEdge -> [real: bb5, imaginary: bb4]; // scope 0 at $DIR/issue_49232.rs:+4:17: +4:22 + falseEdge -> [real: bb5, imaginary: bb4]; } bb4: { - _0 = const (); // scope 0 at $DIR/issue_49232.rs:+5:25: +5:30 - goto -> bb10; // scope 0 at $DIR/issue_49232.rs:+5:25: +5:30 + _0 = const (); + goto -> bb10; } bb5: { - _2 = const 4_i32; // scope 0 at $DIR/issue_49232.rs:+4:26: +4:27 - goto -> bb8; // scope 0 at $DIR/issue_49232.rs:+4:26: +4:27 + _2 = const 4_i32; + goto -> bb8; } bb6: { - unreachable; // scope 0 at $DIR/issue_49232.rs:+5:25: +5:30 + unreachable; } bb7: { - goto -> bb8; // scope 0 at $DIR/issue_49232.rs:+6:13: +6:14 + goto -> bb8; } bb8: { - FakeRead(ForLet(None), _2); // scope 0 at $DIR/issue_49232.rs:+2:13: +2:19 - StorageDead(_3); // scope 0 at $DIR/issue_49232.rs:+7:10: +7:11 - StorageLive(_5); // scope 1 at $DIR/issue_49232.rs:+8:9: +8:22 - StorageLive(_6); // scope 1 at $DIR/issue_49232.rs:+8:14: +8:21 - _6 = &_2; // scope 1 at $DIR/issue_49232.rs:+8:14: +8:21 - _5 = std::mem::drop::<&i32>(move _6) -> [return: bb9, unwind: bb11]; // scope 1 at $DIR/issue_49232.rs:+8:9: +8:22 - // mir::Constant - // + span: $DIR/issue_49232.rs:13:9: 13:13 - // + literal: Const { ty: fn(&i32) {std::mem::drop::<&i32>}, val: Value() } + FakeRead(ForLet(None), _2); + StorageDead(_3); + StorageLive(_5); + StorageLive(_6); + _6 = &_2; + _5 = std::mem::drop::<&i32>(move _6) -> [return: bb9, unwind: bb11]; } bb9: { - StorageDead(_6); // scope 1 at $DIR/issue_49232.rs:+8:21: +8:22 - StorageDead(_5); // scope 1 at $DIR/issue_49232.rs:+8:22: +8:23 - _1 = const (); // scope 0 at $DIR/issue_49232.rs:+1:10: +9:6 - StorageDead(_2); // scope 0 at $DIR/issue_49232.rs:+9:5: +9:6 - goto -> bb1; // scope 0 at $DIR/issue_49232.rs:+1:5: +9:6 + StorageDead(_6); + StorageDead(_5); + _1 = const (); + StorageDead(_2); + goto -> bb1; } bb10: { - StorageDead(_3); // scope 0 at $DIR/issue_49232.rs:+7:10: +7:11 - StorageDead(_2); // scope 0 at $DIR/issue_49232.rs:+9:5: +9:6 - return; // scope 0 at $DIR/issue_49232.rs:+10:2: +10:2 + StorageDead(_3); + StorageDead(_2); + return; } bb11 (cleanup): { - resume; // scope 0 at $DIR/issue_49232.rs:+0:1: +10:2 + resume; } } diff --git a/tests/mir-opt/building/match_false_edges.full_tested_match.built.after.mir b/tests/mir-opt/building/match_false_edges.full_tested_match.built.after.mir index 0e6de839df3b2..bd4cd4eb6789a 100644 --- a/tests/mir-opt/building/match_false_edges.full_tested_match.built.after.mir +++ b/tests/mir-opt/building/match_false_edges.full_tested_match.built.after.mir @@ -1,113 +1,110 @@ // MIR for `full_tested_match` after built fn full_tested_match() -> () { - let mut _0: (); // return place in scope 0 at $DIR/match_false_edges.rs:+0:28: +0:28 - let mut _1: (i32, i32); // in scope 0 at $DIR/match_false_edges.rs:+1:13: +5:6 - let mut _2: std::option::Option; // in scope 0 at $DIR/match_false_edges.rs:+1:19: +1:27 - let mut _3: isize; // in scope 0 at $DIR/match_false_edges.rs:+2:9: +2:16 - let mut _4: &std::option::Option; // in scope 0 at $DIR/match_false_edges.rs:+1:19: +1:27 - let _5: i32; // in scope 0 at $DIR/match_false_edges.rs:+2:14: +2:15 - let _6: &i32; // in scope 0 at $DIR/match_false_edges.rs:+2:14: +2:15 - let mut _7: bool; // in scope 0 at $DIR/match_false_edges.rs:+2:20: +2:27 - let mut _8: i32; // in scope 0 at $DIR/match_false_edges.rs:+2:35: +2:36 - let _9: i32; // in scope 0 at $DIR/match_false_edges.rs:+3:14: +3:15 - let mut _10: i32; // in scope 0 at $DIR/match_false_edges.rs:+3:24: +3:25 + let mut _0: (); + let mut _1: (i32, i32); + let mut _2: std::option::Option; + let mut _3: isize; + let mut _4: &std::option::Option; + let _5: i32; + let _6: &i32; + let mut _7: bool; + let mut _8: i32; + let _9: i32; + let mut _10: i32; scope 1 { } scope 2 { - debug x => _5; // in scope 2 at $DIR/match_false_edges.rs:+2:14: +2:15 - debug x => _6; // in scope 2 at $DIR/match_false_edges.rs:+2:14: +2:15 + debug x => _5; + debug x => _6; } scope 3 { - debug y => _9; // in scope 3 at $DIR/match_false_edges.rs:+3:14: +3:15 + debug y => _9; } bb0: { - StorageLive(_1); // scope 0 at $DIR/match_false_edges.rs:+1:13: +5:6 - StorageLive(_2); // scope 0 at $DIR/match_false_edges.rs:+1:19: +1:27 - _2 = Option::::Some(const 42_i32); // scope 0 at $DIR/match_false_edges.rs:+1:19: +1:27 - FakeRead(ForMatchedPlace(None), _2); // scope 0 at $DIR/match_false_edges.rs:+1:19: +1:27 - _3 = discriminant(_2); // scope 0 at $DIR/match_false_edges.rs:+1:19: +1:27 - switchInt(move _3) -> [0: bb1, 1: bb2, otherwise: bb4]; // scope 0 at $DIR/match_false_edges.rs:+1:13: +1:27 + StorageLive(_1); + StorageLive(_2); + _2 = Option::::Some(const 42_i32); + FakeRead(ForMatchedPlace(None), _2); + _3 = discriminant(_2); + switchInt(move _3) -> [0: bb1, 1: bb2, otherwise: bb4]; } bb1: { - _1 = (const 3_i32, const 3_i32); // scope 0 at $DIR/match_false_edges.rs:+4:17: +4:23 - goto -> bb11; // scope 0 at $DIR/match_false_edges.rs:+4:17: +4:23 + _1 = (const 3_i32, const 3_i32); + goto -> bb11; } bb2: { - falseEdge -> [real: bb5, imaginary: bb3]; // scope 0 at $DIR/match_false_edges.rs:+2:9: +2:16 + falseEdge -> [real: bb5, imaginary: bb3]; } bb3: { - falseEdge -> [real: bb10, imaginary: bb1]; // scope 0 at $DIR/match_false_edges.rs:+3:9: +3:16 + falseEdge -> [real: bb10, imaginary: bb1]; } bb4: { - unreachable; // scope 0 at $DIR/match_false_edges.rs:+1:19: +1:27 + unreachable; } bb5: { - StorageLive(_6); // scope 0 at $DIR/match_false_edges.rs:+2:14: +2:15 - _6 = &((_2 as Some).0: i32); // scope 0 at $DIR/match_false_edges.rs:+2:14: +2:15 - _4 = &shallow _2; // scope 0 at $DIR/match_false_edges.rs:+1:19: +1:27 - StorageLive(_7); // scope 0 at $DIR/match_false_edges.rs:+2:20: +2:27 - _7 = guard() -> [return: bb6, unwind: bb12]; // scope 0 at $DIR/match_false_edges.rs:+2:20: +2:27 - // mir::Constant - // + span: $DIR/match_false_edges.rs:14:20: 14:25 - // + literal: Const { ty: fn() -> bool {guard}, val: Value() } + StorageLive(_6); + _6 = &((_2 as Some).0: i32); + _4 = &shallow _2; + StorageLive(_7); + _7 = guard() -> [return: bb6, unwind: bb12]; } bb6: { - switchInt(move _7) -> [0: bb8, otherwise: bb7]; // scope 0 at $DIR/match_false_edges.rs:+2:20: +2:27 + switchInt(move _7) -> [0: bb8, otherwise: bb7]; } bb7: { - StorageDead(_7); // scope 0 at $DIR/match_false_edges.rs:+2:26: +2:27 - FakeRead(ForMatchGuard, _4); // scope 0 at $DIR/match_false_edges.rs:+2:26: +2:27 - FakeRead(ForGuardBinding, _6); // scope 0 at $DIR/match_false_edges.rs:+2:26: +2:27 - StorageLive(_5); // scope 0 at $DIR/match_false_edges.rs:+2:14: +2:15 - _5 = ((_2 as Some).0: i32); // scope 0 at $DIR/match_false_edges.rs:+2:14: +2:15 - StorageLive(_8); // scope 2 at $DIR/match_false_edges.rs:+2:35: +2:36 - _8 = _5; // scope 2 at $DIR/match_false_edges.rs:+2:35: +2:36 - _1 = (const 1_i32, move _8); // scope 2 at $DIR/match_false_edges.rs:+2:31: +2:37 - StorageDead(_8); // scope 2 at $DIR/match_false_edges.rs:+2:36: +2:37 - StorageDead(_5); // scope 0 at $DIR/match_false_edges.rs:+2:36: +2:37 - StorageDead(_6); // scope 0 at $DIR/match_false_edges.rs:+2:36: +2:37 - goto -> bb11; // scope 0 at $DIR/match_false_edges.rs:+2:36: +2:37 + StorageDead(_7); + FakeRead(ForMatchGuard, _4); + FakeRead(ForGuardBinding, _6); + StorageLive(_5); + _5 = ((_2 as Some).0: i32); + StorageLive(_8); + _8 = _5; + _1 = (const 1_i32, move _8); + StorageDead(_8); + StorageDead(_5); + StorageDead(_6); + goto -> bb11; } bb8: { - goto -> bb9; // scope 0 at $DIR/match_false_edges.rs:+2:20: +2:27 + goto -> bb9; } bb9: { - StorageDead(_7); // scope 0 at $DIR/match_false_edges.rs:+2:26: +2:27 - StorageDead(_6); // scope 0 at $DIR/match_false_edges.rs:+2:36: +2:37 - goto -> bb3; // scope 0 at $DIR/match_false_edges.rs:+2:20: +2:27 + StorageDead(_7); + StorageDead(_6); + goto -> bb3; } bb10: { - StorageLive(_9); // scope 0 at $DIR/match_false_edges.rs:+3:14: +3:15 - _9 = ((_2 as Some).0: i32); // scope 0 at $DIR/match_false_edges.rs:+3:14: +3:15 - StorageLive(_10); // scope 3 at $DIR/match_false_edges.rs:+3:24: +3:25 - _10 = _9; // scope 3 at $DIR/match_false_edges.rs:+3:24: +3:25 - _1 = (const 2_i32, move _10); // scope 3 at $DIR/match_false_edges.rs:+3:20: +3:26 - StorageDead(_10); // scope 3 at $DIR/match_false_edges.rs:+3:25: +3:26 - StorageDead(_9); // scope 0 at $DIR/match_false_edges.rs:+3:25: +3:26 - goto -> bb11; // scope 0 at $DIR/match_false_edges.rs:+3:25: +3:26 + StorageLive(_9); + _9 = ((_2 as Some).0: i32); + StorageLive(_10); + _10 = _9; + _1 = (const 2_i32, move _10); + StorageDead(_10); + StorageDead(_9); + goto -> bb11; } bb11: { - PlaceMention(_1); // scope 0 at $DIR/match_false_edges.rs:+1:13: +5:6 - StorageDead(_2); // scope 0 at $DIR/match_false_edges.rs:+5:6: +5:7 - StorageDead(_1); // scope 0 at $DIR/match_false_edges.rs:+5:6: +5:7 - _0 = const (); // scope 0 at $DIR/match_false_edges.rs:+0:28: +6:2 - return; // scope 0 at $DIR/match_false_edges.rs:+6:2: +6:2 + PlaceMention(_1); + StorageDead(_2); + StorageDead(_1); + _0 = const (); + return; } bb12 (cleanup): { - resume; // scope 0 at $DIR/match_false_edges.rs:+0:1: +6:2 + resume; } } diff --git a/tests/mir-opt/building/match_false_edges.full_tested_match2.built.after.mir b/tests/mir-opt/building/match_false_edges.full_tested_match2.built.after.mir index 37e6b1cd4b446..595e3ab9224d9 100644 --- a/tests/mir-opt/building/match_false_edges.full_tested_match2.built.after.mir +++ b/tests/mir-opt/building/match_false_edges.full_tested_match2.built.after.mir @@ -1,113 +1,110 @@ // MIR for `full_tested_match2` after built fn full_tested_match2() -> () { - let mut _0: (); // return place in scope 0 at $DIR/match_false_edges.rs:+0:29: +0:29 - let mut _1: (i32, i32); // in scope 0 at $DIR/match_false_edges.rs:+1:13: +5:6 - let mut _2: std::option::Option; // in scope 0 at $DIR/match_false_edges.rs:+1:19: +1:27 - let mut _3: isize; // in scope 0 at $DIR/match_false_edges.rs:+2:9: +2:16 - let mut _4: &std::option::Option; // in scope 0 at $DIR/match_false_edges.rs:+1:19: +1:27 - let _5: i32; // in scope 0 at $DIR/match_false_edges.rs:+2:14: +2:15 - let _6: &i32; // in scope 0 at $DIR/match_false_edges.rs:+2:14: +2:15 - let mut _7: bool; // in scope 0 at $DIR/match_false_edges.rs:+2:20: +2:27 - let mut _8: i32; // in scope 0 at $DIR/match_false_edges.rs:+2:35: +2:36 - let _9: i32; // in scope 0 at $DIR/match_false_edges.rs:+4:14: +4:15 - let mut _10: i32; // in scope 0 at $DIR/match_false_edges.rs:+4:24: +4:25 + let mut _0: (); + let mut _1: (i32, i32); + let mut _2: std::option::Option; + let mut _3: isize; + let mut _4: &std::option::Option; + let _5: i32; + let _6: &i32; + let mut _7: bool; + let mut _8: i32; + let _9: i32; + let mut _10: i32; scope 1 { } scope 2 { - debug x => _5; // in scope 2 at $DIR/match_false_edges.rs:+2:14: +2:15 - debug x => _6; // in scope 2 at $DIR/match_false_edges.rs:+2:14: +2:15 + debug x => _5; + debug x => _6; } scope 3 { - debug y => _9; // in scope 3 at $DIR/match_false_edges.rs:+4:14: +4:15 + debug y => _9; } bb0: { - StorageLive(_1); // scope 0 at $DIR/match_false_edges.rs:+1:13: +5:6 - StorageLive(_2); // scope 0 at $DIR/match_false_edges.rs:+1:19: +1:27 - _2 = Option::::Some(const 42_i32); // scope 0 at $DIR/match_false_edges.rs:+1:19: +1:27 - FakeRead(ForMatchedPlace(None), _2); // scope 0 at $DIR/match_false_edges.rs:+1:19: +1:27 - _3 = discriminant(_2); // scope 0 at $DIR/match_false_edges.rs:+1:19: +1:27 - switchInt(move _3) -> [0: bb1, 1: bb2, otherwise: bb4]; // scope 0 at $DIR/match_false_edges.rs:+1:13: +1:27 + StorageLive(_1); + StorageLive(_2); + _2 = Option::::Some(const 42_i32); + FakeRead(ForMatchedPlace(None), _2); + _3 = discriminant(_2); + switchInt(move _3) -> [0: bb1, 1: bb2, otherwise: bb4]; } bb1: { - falseEdge -> [real: bb10, imaginary: bb3]; // scope 0 at $DIR/match_false_edges.rs:+3:9: +3:13 + falseEdge -> [real: bb10, imaginary: bb3]; } bb2: { - falseEdge -> [real: bb5, imaginary: bb1]; // scope 0 at $DIR/match_false_edges.rs:+2:9: +2:16 + falseEdge -> [real: bb5, imaginary: bb1]; } bb3: { - StorageLive(_9); // scope 0 at $DIR/match_false_edges.rs:+4:14: +4:15 - _9 = ((_2 as Some).0: i32); // scope 0 at $DIR/match_false_edges.rs:+4:14: +4:15 - StorageLive(_10); // scope 3 at $DIR/match_false_edges.rs:+4:24: +4:25 - _10 = _9; // scope 3 at $DIR/match_false_edges.rs:+4:24: +4:25 - _1 = (const 2_i32, move _10); // scope 3 at $DIR/match_false_edges.rs:+4:20: +4:26 - StorageDead(_10); // scope 3 at $DIR/match_false_edges.rs:+4:25: +4:26 - StorageDead(_9); // scope 0 at $DIR/match_false_edges.rs:+4:25: +4:26 - goto -> bb11; // scope 0 at $DIR/match_false_edges.rs:+4:25: +4:26 + StorageLive(_9); + _9 = ((_2 as Some).0: i32); + StorageLive(_10); + _10 = _9; + _1 = (const 2_i32, move _10); + StorageDead(_10); + StorageDead(_9); + goto -> bb11; } bb4: { - unreachable; // scope 0 at $DIR/match_false_edges.rs:+1:19: +1:27 + unreachable; } bb5: { - StorageLive(_6); // scope 0 at $DIR/match_false_edges.rs:+2:14: +2:15 - _6 = &((_2 as Some).0: i32); // scope 0 at $DIR/match_false_edges.rs:+2:14: +2:15 - _4 = &shallow _2; // scope 0 at $DIR/match_false_edges.rs:+1:19: +1:27 - StorageLive(_7); // scope 0 at $DIR/match_false_edges.rs:+2:20: +2:27 - _7 = guard() -> [return: bb6, unwind: bb12]; // scope 0 at $DIR/match_false_edges.rs:+2:20: +2:27 - // mir::Constant - // + span: $DIR/match_false_edges.rs:25:20: 25:25 - // + literal: Const { ty: fn() -> bool {guard}, val: Value() } + StorageLive(_6); + _6 = &((_2 as Some).0: i32); + _4 = &shallow _2; + StorageLive(_7); + _7 = guard() -> [return: bb6, unwind: bb12]; } bb6: { - switchInt(move _7) -> [0: bb8, otherwise: bb7]; // scope 0 at $DIR/match_false_edges.rs:+2:20: +2:27 + switchInt(move _7) -> [0: bb8, otherwise: bb7]; } bb7: { - StorageDead(_7); // scope 0 at $DIR/match_false_edges.rs:+2:26: +2:27 - FakeRead(ForMatchGuard, _4); // scope 0 at $DIR/match_false_edges.rs:+2:26: +2:27 - FakeRead(ForGuardBinding, _6); // scope 0 at $DIR/match_false_edges.rs:+2:26: +2:27 - StorageLive(_5); // scope 0 at $DIR/match_false_edges.rs:+2:14: +2:15 - _5 = ((_2 as Some).0: i32); // scope 0 at $DIR/match_false_edges.rs:+2:14: +2:15 - StorageLive(_8); // scope 2 at $DIR/match_false_edges.rs:+2:35: +2:36 - _8 = _5; // scope 2 at $DIR/match_false_edges.rs:+2:35: +2:36 - _1 = (const 1_i32, move _8); // scope 2 at $DIR/match_false_edges.rs:+2:31: +2:37 - StorageDead(_8); // scope 2 at $DIR/match_false_edges.rs:+2:36: +2:37 - StorageDead(_5); // scope 0 at $DIR/match_false_edges.rs:+2:36: +2:37 - StorageDead(_6); // scope 0 at $DIR/match_false_edges.rs:+2:36: +2:37 - goto -> bb11; // scope 0 at $DIR/match_false_edges.rs:+2:36: +2:37 + StorageDead(_7); + FakeRead(ForMatchGuard, _4); + FakeRead(ForGuardBinding, _6); + StorageLive(_5); + _5 = ((_2 as Some).0: i32); + StorageLive(_8); + _8 = _5; + _1 = (const 1_i32, move _8); + StorageDead(_8); + StorageDead(_5); + StorageDead(_6); + goto -> bb11; } bb8: { - goto -> bb9; // scope 0 at $DIR/match_false_edges.rs:+2:20: +2:27 + goto -> bb9; } bb9: { - StorageDead(_7); // scope 0 at $DIR/match_false_edges.rs:+2:26: +2:27 - StorageDead(_6); // scope 0 at $DIR/match_false_edges.rs:+2:36: +2:37 - falseEdge -> [real: bb3, imaginary: bb1]; // scope 0 at $DIR/match_false_edges.rs:+2:20: +2:27 + StorageDead(_7); + StorageDead(_6); + falseEdge -> [real: bb3, imaginary: bb1]; } bb10: { - _1 = (const 3_i32, const 3_i32); // scope 0 at $DIR/match_false_edges.rs:+3:17: +3:23 - goto -> bb11; // scope 0 at $DIR/match_false_edges.rs:+3:17: +3:23 + _1 = (const 3_i32, const 3_i32); + goto -> bb11; } bb11: { - PlaceMention(_1); // scope 0 at $DIR/match_false_edges.rs:+1:13: +5:6 - StorageDead(_2); // scope 0 at $DIR/match_false_edges.rs:+5:6: +5:7 - StorageDead(_1); // scope 0 at $DIR/match_false_edges.rs:+5:6: +5:7 - _0 = const (); // scope 0 at $DIR/match_false_edges.rs:+0:29: +6:2 - return; // scope 0 at $DIR/match_false_edges.rs:+6:2: +6:2 + PlaceMention(_1); + StorageDead(_2); + StorageDead(_1); + _0 = const (); + return; } bb12 (cleanup): { - resume; // scope 0 at $DIR/match_false_edges.rs:+0:1: +6:2 + resume; } } diff --git a/tests/mir-opt/building/match_false_edges.main.built.after.mir b/tests/mir-opt/building/match_false_edges.main.built.after.mir index 7b8983138d2eb..91fe2f90e35b2 100644 --- a/tests/mir-opt/building/match_false_edges.main.built.after.mir +++ b/tests/mir-opt/building/match_false_edges.main.built.after.mir @@ -1,175 +1,169 @@ // MIR for `main` after built fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/match_false_edges.rs:+0:11: +0:11 - let mut _1: i32; // in scope 0 at $DIR/match_false_edges.rs:+1:13: +6:6 - let mut _2: std::option::Option; // in scope 0 at $DIR/match_false_edges.rs:+1:19: +1:26 - let mut _3: isize; // in scope 0 at $DIR/match_false_edges.rs:+4:9: +4:16 - let mut _4: isize; // in scope 0 at $DIR/match_false_edges.rs:+2:9: +2:17 - let mut _5: &std::option::Option; // in scope 0 at $DIR/match_false_edges.rs:+1:19: +1:26 - let _6: i32; // in scope 0 at $DIR/match_false_edges.rs:+2:14: +2:16 - let _7: &i32; // in scope 0 at $DIR/match_false_edges.rs:+2:14: +2:16 - let mut _8: bool; // in scope 0 at $DIR/match_false_edges.rs:+2:21: +2:28 - let _9: std::option::Option; // in scope 0 at $DIR/match_false_edges.rs:+3:9: +3:11 - let _10: i32; // in scope 0 at $DIR/match_false_edges.rs:+4:14: +4:15 - let _11: &i32; // in scope 0 at $DIR/match_false_edges.rs:+4:14: +4:15 - let mut _12: bool; // in scope 0 at $DIR/match_false_edges.rs:+4:20: +4:29 - let mut _13: i32; // in scope 0 at $DIR/match_false_edges.rs:+4:27: +4:28 - let _14: std::option::Option; // in scope 0 at $DIR/match_false_edges.rs:+5:9: +5:11 + let mut _0: (); + let mut _1: i32; + let mut _2: std::option::Option; + let mut _3: isize; + let mut _4: isize; + let mut _5: &std::option::Option; + let _6: i32; + let _7: &i32; + let mut _8: bool; + let _9: std::option::Option; + let _10: i32; + let _11: &i32; + let mut _12: bool; + let mut _13: i32; + let _14: std::option::Option; scope 1 { } scope 2 { - debug _w => _6; // in scope 2 at $DIR/match_false_edges.rs:+2:14: +2:16 - debug _w => _7; // in scope 2 at $DIR/match_false_edges.rs:+2:14: +2:16 + debug _w => _6; + debug _w => _7; } scope 3 { - debug _x => _9; // in scope 3 at $DIR/match_false_edges.rs:+3:9: +3:11 + debug _x => _9; } scope 4 { - debug y => _10; // in scope 4 at $DIR/match_false_edges.rs:+4:14: +4:15 - debug y => _11; // in scope 4 at $DIR/match_false_edges.rs:+4:14: +4:15 + debug y => _10; + debug y => _11; } scope 5 { - debug _z => _14; // in scope 5 at $DIR/match_false_edges.rs:+5:9: +5:11 + debug _z => _14; } bb0: { - StorageLive(_1); // scope 0 at $DIR/match_false_edges.rs:+1:13: +6:6 - StorageLive(_2); // scope 0 at $DIR/match_false_edges.rs:+1:19: +1:26 - _2 = Option::::Some(const 1_i32); // scope 0 at $DIR/match_false_edges.rs:+1:19: +1:26 - FakeRead(ForMatchedPlace(None), _2); // scope 0 at $DIR/match_false_edges.rs:+1:19: +1:26 - _4 = discriminant(_2); // scope 0 at $DIR/match_false_edges.rs:+1:19: +1:26 - switchInt(move _4) -> [1: bb2, otherwise: bb1]; // scope 0 at $DIR/match_false_edges.rs:+1:13: +1:26 + StorageLive(_1); + StorageLive(_2); + _2 = Option::::Some(const 1_i32); + FakeRead(ForMatchedPlace(None), _2); + _4 = discriminant(_2); + switchInt(move _4) -> [1: bb2, otherwise: bb1]; } bb1: { - falseEdge -> [real: bb13, imaginary: bb6]; // scope 0 at $DIR/match_false_edges.rs:+3:9: +3:11 + falseEdge -> [real: bb13, imaginary: bb6]; } bb2: { - falseEdge -> [real: bb8, imaginary: bb1]; // scope 0 at $DIR/match_false_edges.rs:+2:9: +2:17 + falseEdge -> [real: bb8, imaginary: bb1]; } bb3: { - goto -> bb1; // scope 0 at $DIR/match_false_edges.rs:+1:13: +1:26 + goto -> bb1; } bb4: { - _3 = discriminant(_2); // scope 0 at $DIR/match_false_edges.rs:+1:19: +1:26 - switchInt(move _3) -> [1: bb6, otherwise: bb5]; // scope 0 at $DIR/match_false_edges.rs:+1:13: +1:26 + _3 = discriminant(_2); + switchInt(move _3) -> [1: bb6, otherwise: bb5]; } bb5: { - StorageLive(_14); // scope 0 at $DIR/match_false_edges.rs:+5:9: +5:11 - _14 = _2; // scope 0 at $DIR/match_false_edges.rs:+5:9: +5:11 - _1 = const 4_i32; // scope 5 at $DIR/match_false_edges.rs:+5:15: +5:16 - StorageDead(_14); // scope 0 at $DIR/match_false_edges.rs:+5:15: +5:16 - goto -> bb19; // scope 0 at $DIR/match_false_edges.rs:+5:15: +5:16 + StorageLive(_14); + _14 = _2; + _1 = const 4_i32; + StorageDead(_14); + goto -> bb19; } bb6: { - falseEdge -> [real: bb14, imaginary: bb5]; // scope 0 at $DIR/match_false_edges.rs:+4:9: +4:16 + falseEdge -> [real: bb14, imaginary: bb5]; } bb7: { - goto -> bb5; // scope 0 at $DIR/match_false_edges.rs:+1:13: +1:26 + goto -> bb5; } bb8: { - StorageLive(_7); // scope 0 at $DIR/match_false_edges.rs:+2:14: +2:16 - _7 = &((_2 as Some).0: i32); // scope 0 at $DIR/match_false_edges.rs:+2:14: +2:16 - _5 = &shallow _2; // scope 0 at $DIR/match_false_edges.rs:+1:19: +1:26 - StorageLive(_8); // scope 0 at $DIR/match_false_edges.rs:+2:21: +2:28 - _8 = guard() -> [return: bb9, unwind: bb20]; // scope 0 at $DIR/match_false_edges.rs:+2:21: +2:28 - // mir::Constant - // + span: $DIR/match_false_edges.rs:34:21: 34:26 - // + literal: Const { ty: fn() -> bool {guard}, val: Value() } + StorageLive(_7); + _7 = &((_2 as Some).0: i32); + _5 = &shallow _2; + StorageLive(_8); + _8 = guard() -> [return: bb9, unwind: bb20]; } bb9: { - switchInt(move _8) -> [0: bb11, otherwise: bb10]; // scope 0 at $DIR/match_false_edges.rs:+2:21: +2:28 + switchInt(move _8) -> [0: bb11, otherwise: bb10]; } bb10: { - StorageDead(_8); // scope 0 at $DIR/match_false_edges.rs:+2:27: +2:28 - FakeRead(ForMatchGuard, _5); // scope 0 at $DIR/match_false_edges.rs:+2:27: +2:28 - FakeRead(ForGuardBinding, _7); // scope 0 at $DIR/match_false_edges.rs:+2:27: +2:28 - StorageLive(_6); // scope 0 at $DIR/match_false_edges.rs:+2:14: +2:16 - _6 = ((_2 as Some).0: i32); // scope 0 at $DIR/match_false_edges.rs:+2:14: +2:16 - _1 = const 1_i32; // scope 2 at $DIR/match_false_edges.rs:+2:32: +2:33 - StorageDead(_6); // scope 0 at $DIR/match_false_edges.rs:+2:32: +2:33 - StorageDead(_7); // scope 0 at $DIR/match_false_edges.rs:+2:32: +2:33 - goto -> bb19; // scope 0 at $DIR/match_false_edges.rs:+2:32: +2:33 + StorageDead(_8); + FakeRead(ForMatchGuard, _5); + FakeRead(ForGuardBinding, _7); + StorageLive(_6); + _6 = ((_2 as Some).0: i32); + _1 = const 1_i32; + StorageDead(_6); + StorageDead(_7); + goto -> bb19; } bb11: { - goto -> bb12; // scope 0 at $DIR/match_false_edges.rs:+2:21: +2:28 + goto -> bb12; } bb12: { - StorageDead(_8); // scope 0 at $DIR/match_false_edges.rs:+2:27: +2:28 - StorageDead(_7); // scope 0 at $DIR/match_false_edges.rs:+2:32: +2:33 - falseEdge -> [real: bb3, imaginary: bb1]; // scope 0 at $DIR/match_false_edges.rs:+2:21: +2:28 + StorageDead(_8); + StorageDead(_7); + falseEdge -> [real: bb3, imaginary: bb1]; } bb13: { - StorageLive(_9); // scope 0 at $DIR/match_false_edges.rs:+3:9: +3:11 - _9 = _2; // scope 0 at $DIR/match_false_edges.rs:+3:9: +3:11 - _1 = const 2_i32; // scope 3 at $DIR/match_false_edges.rs:+3:15: +3:16 - StorageDead(_9); // scope 0 at $DIR/match_false_edges.rs:+3:15: +3:16 - goto -> bb19; // scope 0 at $DIR/match_false_edges.rs:+3:15: +3:16 + StorageLive(_9); + _9 = _2; + _1 = const 2_i32; + StorageDead(_9); + goto -> bb19; } bb14: { - StorageLive(_11); // scope 0 at $DIR/match_false_edges.rs:+4:14: +4:15 - _11 = &((_2 as Some).0: i32); // scope 0 at $DIR/match_false_edges.rs:+4:14: +4:15 - _5 = &shallow _2; // scope 0 at $DIR/match_false_edges.rs:+1:19: +1:26 - StorageLive(_12); // scope 0 at $DIR/match_false_edges.rs:+4:20: +4:29 - StorageLive(_13); // scope 0 at $DIR/match_false_edges.rs:+4:27: +4:28 - _13 = (*_11); // scope 0 at $DIR/match_false_edges.rs:+4:27: +4:28 - _12 = guard2(move _13) -> [return: bb15, unwind: bb20]; // scope 0 at $DIR/match_false_edges.rs:+4:20: +4:29 - // mir::Constant - // + span: $DIR/match_false_edges.rs:36:20: 36:26 - // + literal: Const { ty: fn(i32) -> bool {guard2}, val: Value() } + StorageLive(_11); + _11 = &((_2 as Some).0: i32); + _5 = &shallow _2; + StorageLive(_12); + StorageLive(_13); + _13 = (*_11); + _12 = guard2(move _13) -> [return: bb15, unwind: bb20]; } bb15: { - switchInt(move _12) -> [0: bb17, otherwise: bb16]; // scope 0 at $DIR/match_false_edges.rs:+4:20: +4:29 + switchInt(move _12) -> [0: bb17, otherwise: bb16]; } bb16: { - StorageDead(_13); // scope 0 at $DIR/match_false_edges.rs:+4:28: +4:29 - StorageDead(_12); // scope 0 at $DIR/match_false_edges.rs:+4:28: +4:29 - FakeRead(ForMatchGuard, _5); // scope 0 at $DIR/match_false_edges.rs:+4:28: +4:29 - FakeRead(ForGuardBinding, _11); // scope 0 at $DIR/match_false_edges.rs:+4:28: +4:29 - StorageLive(_10); // scope 0 at $DIR/match_false_edges.rs:+4:14: +4:15 - _10 = ((_2 as Some).0: i32); // scope 0 at $DIR/match_false_edges.rs:+4:14: +4:15 - _1 = const 3_i32; // scope 4 at $DIR/match_false_edges.rs:+4:33: +4:34 - StorageDead(_10); // scope 0 at $DIR/match_false_edges.rs:+4:33: +4:34 - StorageDead(_11); // scope 0 at $DIR/match_false_edges.rs:+4:33: +4:34 - goto -> bb19; // scope 0 at $DIR/match_false_edges.rs:+4:33: +4:34 + StorageDead(_13); + StorageDead(_12); + FakeRead(ForMatchGuard, _5); + FakeRead(ForGuardBinding, _11); + StorageLive(_10); + _10 = ((_2 as Some).0: i32); + _1 = const 3_i32; + StorageDead(_10); + StorageDead(_11); + goto -> bb19; } bb17: { - goto -> bb18; // scope 0 at $DIR/match_false_edges.rs:+4:20: +4:29 + goto -> bb18; } bb18: { - StorageDead(_13); // scope 0 at $DIR/match_false_edges.rs:+4:28: +4:29 - StorageDead(_12); // scope 0 at $DIR/match_false_edges.rs:+4:28: +4:29 - StorageDead(_11); // scope 0 at $DIR/match_false_edges.rs:+4:33: +4:34 - falseEdge -> [real: bb7, imaginary: bb5]; // scope 0 at $DIR/match_false_edges.rs:+4:20: +4:29 + StorageDead(_13); + StorageDead(_12); + StorageDead(_11); + falseEdge -> [real: bb7, imaginary: bb5]; } bb19: { - PlaceMention(_1); // scope 0 at $DIR/match_false_edges.rs:+1:13: +6:6 - StorageDead(_2); // scope 0 at $DIR/match_false_edges.rs:+6:6: +6:7 - StorageDead(_1); // scope 0 at $DIR/match_false_edges.rs:+6:6: +6:7 - _0 = const (); // scope 0 at $DIR/match_false_edges.rs:+0:11: +7:2 - return; // scope 0 at $DIR/match_false_edges.rs:+7:2: +7:2 + PlaceMention(_1); + StorageDead(_2); + StorageDead(_1); + _0 = const (); + return; } bb20 (cleanup): { - resume; // scope 0 at $DIR/match_false_edges.rs:+0:1: +7:2 + resume; } } diff --git a/tests/mir-opt/building/receiver_ptr_mutability.main.built.after.mir b/tests/mir-opt/building/receiver_ptr_mutability.main.built.after.mir index 7a6944dee03a1..b3db1d76ca706 100644 --- a/tests/mir-opt/building/receiver_ptr_mutability.main.built.after.mir +++ b/tests/mir-opt/building/receiver_ptr_mutability.main.built.after.mir @@ -7,90 +7,81 @@ | 3: user_ty: Canonical { value: Ty(&&&&*mut Test), max_universe: U0, variables: [CanonicalVarInfo { kind: Region(U0) }, CanonicalVarInfo { kind: Region(U0) }, CanonicalVarInfo { kind: Region(U0) }, CanonicalVarInfo { kind: Region(U0) }] }, span: $DIR/receiver_ptr_mutability.rs:18:18: 18:31, inferred_ty: &&&&*mut Test | fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/receiver_ptr_mutability.rs:+0:11: +0:11 - let _1: *mut Test as UserTypeProjection { base: UserType(0), projs: [] }; // in scope 0 at $DIR/receiver_ptr_mutability.rs:+1:9: +1:12 - let _2: (); // in scope 0 at $DIR/receiver_ptr_mutability.rs:+2:5: +2:12 - let mut _3: *const Test; // in scope 0 at $DIR/receiver_ptr_mutability.rs:+2:5: +2:12 - let mut _4: *mut Test; // in scope 0 at $DIR/receiver_ptr_mutability.rs:+2:5: +2:8 - let _6: &&&&*mut Test; // in scope 0 at $DIR/receiver_ptr_mutability.rs:+5:34: +5:41 - let _7: &&&*mut Test; // in scope 0 at $DIR/receiver_ptr_mutability.rs:+5:35: +5:41 - let _8: &&*mut Test; // in scope 0 at $DIR/receiver_ptr_mutability.rs:+5:36: +5:41 - let _9: &*mut Test; // in scope 0 at $DIR/receiver_ptr_mutability.rs:+5:37: +5:41 - let _10: (); // in scope 0 at $DIR/receiver_ptr_mutability.rs:+6:5: +6:16 - let mut _11: *const Test; // in scope 0 at $DIR/receiver_ptr_mutability.rs:+6:5: +6:16 - let mut _12: *mut Test; // in scope 0 at $DIR/receiver_ptr_mutability.rs:+6:5: +6:16 + let mut _0: (); + let _1: *mut Test as UserTypeProjection { base: UserType(0), projs: [] }; + let _2: (); + let mut _3: *const Test; + let mut _4: *mut Test; + let _6: &&&&*mut Test; + let _7: &&&*mut Test; + let _8: &&*mut Test; + let _9: &*mut Test; + let _10: (); + let mut _11: *const Test; + let mut _12: *mut Test; scope 1 { - debug ptr => _1; // in scope 1 at $DIR/receiver_ptr_mutability.rs:+1:9: +1:12 - let _5: &&&&*mut Test as UserTypeProjection { base: UserType(2), projs: [] }; // in scope 1 at $DIR/receiver_ptr_mutability.rs:+5:9: +5:16 + debug ptr => _1; + let _5: &&&&*mut Test as UserTypeProjection { base: UserType(2), projs: [] }; scope 2 { - debug ptr_ref => _5; // in scope 2 at $DIR/receiver_ptr_mutability.rs:+5:9: +5:16 + debug ptr_ref => _5; } } bb0: { - StorageLive(_1); // scope 0 at $DIR/receiver_ptr_mutability.rs:+1:9: +1:12 - _1 = null_mut::() -> [return: bb1, unwind: bb4]; // scope 0 at $DIR/receiver_ptr_mutability.rs:+1:26: +1:46 - // mir::Constant - // + span: $DIR/receiver_ptr_mutability.rs:14:26: 14:44 - // + literal: Const { ty: fn() -> *mut Test {null_mut::}, val: Value() } + StorageLive(_1); + _1 = null_mut::() -> [return: bb1, unwind: bb4]; } bb1: { - FakeRead(ForLet(None), _1); // scope 0 at $DIR/receiver_ptr_mutability.rs:+1:9: +1:12 - AscribeUserType(_1, o, UserTypeProjection { base: UserType(1), projs: [] }); // scope 0 at $DIR/receiver_ptr_mutability.rs:+1:14: +1:23 - StorageLive(_2); // scope 1 at $DIR/receiver_ptr_mutability.rs:+2:5: +2:12 - StorageLive(_3); // scope 1 at $DIR/receiver_ptr_mutability.rs:+2:5: +2:12 - StorageLive(_4); // scope 1 at $DIR/receiver_ptr_mutability.rs:+2:5: +2:8 - _4 = _1; // scope 1 at $DIR/receiver_ptr_mutability.rs:+2:5: +2:8 - _3 = move _4 as *const Test (Pointer(MutToConstPointer)); // scope 1 at $DIR/receiver_ptr_mutability.rs:+2:5: +2:12 - StorageDead(_4); // scope 1 at $DIR/receiver_ptr_mutability.rs:+2:7: +2:8 - _2 = Test::x(move _3) -> [return: bb2, unwind: bb4]; // scope 1 at $DIR/receiver_ptr_mutability.rs:+2:5: +2:12 - // mir::Constant - // + span: $DIR/receiver_ptr_mutability.rs:15:9: 15:10 - // + literal: Const { ty: fn(*const Test) {Test::x}, val: Value() } + FakeRead(ForLet(None), _1); + AscribeUserType(_1, o, UserTypeProjection { base: UserType(1), projs: [] }); + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + _4 = _1; + _3 = move _4 as *const Test (Pointer(MutToConstPointer)); + StorageDead(_4); + _2 = Test::x(move _3) -> [return: bb2, unwind: bb4]; } bb2: { - StorageDead(_3); // scope 1 at $DIR/receiver_ptr_mutability.rs:+2:11: +2:12 - StorageDead(_2); // scope 1 at $DIR/receiver_ptr_mutability.rs:+2:12: +2:13 - StorageLive(_5); // scope 1 at $DIR/receiver_ptr_mutability.rs:+5:9: +5:16 - StorageLive(_6); // scope 1 at $DIR/receiver_ptr_mutability.rs:+5:34: +5:41 - StorageLive(_7); // scope 1 at $DIR/receiver_ptr_mutability.rs:+5:35: +5:41 - StorageLive(_8); // scope 1 at $DIR/receiver_ptr_mutability.rs:+5:36: +5:41 - StorageLive(_9); // scope 1 at $DIR/receiver_ptr_mutability.rs:+5:37: +5:41 - _9 = &_1; // scope 1 at $DIR/receiver_ptr_mutability.rs:+5:37: +5:41 - _8 = &_9; // scope 1 at $DIR/receiver_ptr_mutability.rs:+5:36: +5:41 - _7 = &_8; // scope 1 at $DIR/receiver_ptr_mutability.rs:+5:35: +5:41 - _6 = &_7; // scope 1 at $DIR/receiver_ptr_mutability.rs:+5:34: +5:41 - _5 = &(*_6); // scope 1 at $DIR/receiver_ptr_mutability.rs:+5:34: +5:41 - FakeRead(ForLet(None), _5); // scope 1 at $DIR/receiver_ptr_mutability.rs:+5:9: +5:16 - AscribeUserType(_5, o, UserTypeProjection { base: UserType(3), projs: [] }); // scope 1 at $DIR/receiver_ptr_mutability.rs:+5:18: +5:31 - StorageDead(_6); // scope 1 at $DIR/receiver_ptr_mutability.rs:+5:41: +5:42 - StorageLive(_10); // scope 2 at $DIR/receiver_ptr_mutability.rs:+6:5: +6:16 - StorageLive(_11); // scope 2 at $DIR/receiver_ptr_mutability.rs:+6:5: +6:16 - StorageLive(_12); // scope 2 at $DIR/receiver_ptr_mutability.rs:+6:5: +6:16 - _12 = (*(*(*(*_5)))); // scope 2 at $DIR/receiver_ptr_mutability.rs:+6:5: +6:16 - _11 = move _12 as *const Test (Pointer(MutToConstPointer)); // scope 2 at $DIR/receiver_ptr_mutability.rs:+6:5: +6:16 - StorageDead(_12); // scope 2 at $DIR/receiver_ptr_mutability.rs:+6:11: +6:12 - _10 = Test::x(move _11) -> [return: bb3, unwind: bb4]; // scope 2 at $DIR/receiver_ptr_mutability.rs:+6:5: +6:16 - // mir::Constant - // + span: $DIR/receiver_ptr_mutability.rs:19:13: 19:14 - // + literal: Const { ty: fn(*const Test) {Test::x}, val: Value() } + StorageDead(_3); + StorageDead(_2); + StorageLive(_5); + StorageLive(_6); + StorageLive(_7); + StorageLive(_8); + StorageLive(_9); + _9 = &_1; + _8 = &_9; + _7 = &_8; + _6 = &_7; + _5 = &(*_6); + FakeRead(ForLet(None), _5); + AscribeUserType(_5, o, UserTypeProjection { base: UserType(3), projs: [] }); + StorageDead(_6); + StorageLive(_10); + StorageLive(_11); + StorageLive(_12); + _12 = (*(*(*(*_5)))); + _11 = move _12 as *const Test (Pointer(MutToConstPointer)); + StorageDead(_12); + _10 = Test::x(move _11) -> [return: bb3, unwind: bb4]; } bb3: { - StorageDead(_11); // scope 2 at $DIR/receiver_ptr_mutability.rs:+6:15: +6:16 - StorageDead(_10); // scope 2 at $DIR/receiver_ptr_mutability.rs:+6:16: +6:17 - _0 = const (); // scope 0 at $DIR/receiver_ptr_mutability.rs:+0:11: +7:2 - StorageDead(_9); // scope 1 at $DIR/receiver_ptr_mutability.rs:+7:1: +7:2 - StorageDead(_8); // scope 1 at $DIR/receiver_ptr_mutability.rs:+7:1: +7:2 - StorageDead(_7); // scope 1 at $DIR/receiver_ptr_mutability.rs:+7:1: +7:2 - StorageDead(_5); // scope 1 at $DIR/receiver_ptr_mutability.rs:+7:1: +7:2 - StorageDead(_1); // scope 0 at $DIR/receiver_ptr_mutability.rs:+7:1: +7:2 - return; // scope 0 at $DIR/receiver_ptr_mutability.rs:+7:2: +7:2 + StorageDead(_11); + StorageDead(_10); + _0 = const (); + StorageDead(_9); + StorageDead(_8); + StorageDead(_7); + StorageDead(_5); + StorageDead(_1); + return; } bb4 (cleanup): { - resume; // scope 0 at $DIR/receiver_ptr_mutability.rs:+0:1: +7:2 + resume; } } diff --git a/tests/mir-opt/building/shifts.shift_signed.built.after.mir b/tests/mir-opt/building/shifts.shift_signed.built.after.mir index 028777cefdd10..8706ee9d44636 100644 --- a/tests/mir-opt/building/shifts.shift_signed.built.after.mir +++ b/tests/mir-opt/building/shifts.shift_signed.built.after.mir @@ -1,147 +1,147 @@ // MIR for `shift_signed` after built fn shift_signed(_1: i8, _2: u128, _3: i8, _4: i32, _5: i128) -> ([i8; 3], [u128; 3]) { - debug small => _1; // in scope 0 at $DIR/shifts.rs:+0:17: +0:22 - debug big => _2; // in scope 0 at $DIR/shifts.rs:+0:28: +0:31 - debug a => _3; // in scope 0 at $DIR/shifts.rs:+0:39: +0:40 - debug b => _4; // in scope 0 at $DIR/shifts.rs:+0:46: +0:47 - debug c => _5; // in scope 0 at $DIR/shifts.rs:+0:54: +0:55 - let mut _0: ([i8; 3], [u128; 3]); // return place in scope 0 at $DIR/shifts.rs:+0:66: +0:86 - let mut _6: [i8; 3]; // in scope 0 at $DIR/shifts.rs:+2:9: +2:45 - let mut _7: i8; // in scope 0 at $DIR/shifts.rs:+2:10: +2:20 - let mut _8: i8; // in scope 0 at $DIR/shifts.rs:+2:10: +2:15 - let mut _9: i8; // in scope 0 at $DIR/shifts.rs:+2:19: +2:20 - let mut _10: u8; // in scope 0 at $DIR/shifts.rs:+2:10: +2:20 - let mut _11: bool; // in scope 0 at $DIR/shifts.rs:+2:10: +2:20 - let mut _12: i8; // in scope 0 at $DIR/shifts.rs:+2:22: +2:32 - let mut _13: i8; // in scope 0 at $DIR/shifts.rs:+2:22: +2:27 - let mut _14: i32; // in scope 0 at $DIR/shifts.rs:+2:31: +2:32 - let mut _15: u32; // in scope 0 at $DIR/shifts.rs:+2:22: +2:32 - let mut _16: bool; // in scope 0 at $DIR/shifts.rs:+2:22: +2:32 - let mut _17: i8; // in scope 0 at $DIR/shifts.rs:+2:34: +2:44 - let mut _18: i8; // in scope 0 at $DIR/shifts.rs:+2:34: +2:39 - let mut _19: i128; // in scope 0 at $DIR/shifts.rs:+2:43: +2:44 - let mut _20: u128; // in scope 0 at $DIR/shifts.rs:+2:34: +2:44 - let mut _21: bool; // in scope 0 at $DIR/shifts.rs:+2:34: +2:44 - let mut _22: [u128; 3]; // in scope 0 at $DIR/shifts.rs:+3:9: +3:39 - let mut _23: u128; // in scope 0 at $DIR/shifts.rs:+3:10: +3:18 - let mut _24: u128; // in scope 0 at $DIR/shifts.rs:+3:10: +3:13 - let mut _25: i8; // in scope 0 at $DIR/shifts.rs:+3:17: +3:18 - let mut _26: u8; // in scope 0 at $DIR/shifts.rs:+3:10: +3:18 - let mut _27: bool; // in scope 0 at $DIR/shifts.rs:+3:10: +3:18 - let mut _28: u128; // in scope 0 at $DIR/shifts.rs:+3:20: +3:28 - let mut _29: u128; // in scope 0 at $DIR/shifts.rs:+3:20: +3:23 - let mut _30: i32; // in scope 0 at $DIR/shifts.rs:+3:27: +3:28 - let mut _31: u32; // in scope 0 at $DIR/shifts.rs:+3:20: +3:28 - let mut _32: bool; // in scope 0 at $DIR/shifts.rs:+3:20: +3:28 - let mut _33: u128; // in scope 0 at $DIR/shifts.rs:+3:30: +3:38 - let mut _34: u128; // in scope 0 at $DIR/shifts.rs:+3:30: +3:33 - let mut _35: i128; // in scope 0 at $DIR/shifts.rs:+3:37: +3:38 - let mut _36: u128; // in scope 0 at $DIR/shifts.rs:+3:30: +3:38 - let mut _37: bool; // in scope 0 at $DIR/shifts.rs:+3:30: +3:38 + debug small => _1; + debug big => _2; + debug a => _3; + debug b => _4; + debug c => _5; + let mut _0: ([i8; 3], [u128; 3]); + let mut _6: [i8; 3]; + let mut _7: i8; + let mut _8: i8; + let mut _9: i8; + let mut _10: u8; + let mut _11: bool; + let mut _12: i8; + let mut _13: i8; + let mut _14: i32; + let mut _15: u32; + let mut _16: bool; + let mut _17: i8; + let mut _18: i8; + let mut _19: i128; + let mut _20: u128; + let mut _21: bool; + let mut _22: [u128; 3]; + let mut _23: u128; + let mut _24: u128; + let mut _25: i8; + let mut _26: u8; + let mut _27: bool; + let mut _28: u128; + let mut _29: u128; + let mut _30: i32; + let mut _31: u32; + let mut _32: bool; + let mut _33: u128; + let mut _34: u128; + let mut _35: i128; + let mut _36: u128; + let mut _37: bool; bb0: { - StorageLive(_6); // scope 0 at $DIR/shifts.rs:+2:9: +2:45 - StorageLive(_7); // scope 0 at $DIR/shifts.rs:+2:10: +2:20 - StorageLive(_8); // scope 0 at $DIR/shifts.rs:+2:10: +2:15 - _8 = _1; // scope 0 at $DIR/shifts.rs:+2:10: +2:15 - StorageLive(_9); // scope 0 at $DIR/shifts.rs:+2:19: +2:20 - _9 = _3; // scope 0 at $DIR/shifts.rs:+2:19: +2:20 - _10 = _9 as u8 (IntToInt); // scope 0 at $DIR/shifts.rs:+2:10: +2:20 - _11 = Lt(move _10, const 8_u8); // scope 0 at $DIR/shifts.rs:+2:10: +2:20 - assert(move _11, "attempt to shift right by `{}`, which would overflow", _9) -> [success: bb1, unwind: bb7]; // scope 0 at $DIR/shifts.rs:+2:10: +2:20 + StorageLive(_6); + StorageLive(_7); + StorageLive(_8); + _8 = _1; + StorageLive(_9); + _9 = _3; + _10 = _9 as u8 (IntToInt); + _11 = Lt(move _10, const 8_u8); + assert(move _11, "attempt to shift right by `{}`, which would overflow", _9) -> [success: bb1, unwind: bb7]; } bb1: { - _7 = Shr(move _8, move _9); // scope 0 at $DIR/shifts.rs:+2:10: +2:20 - StorageDead(_9); // scope 0 at $DIR/shifts.rs:+2:19: +2:20 - StorageDead(_8); // scope 0 at $DIR/shifts.rs:+2:19: +2:20 - StorageLive(_12); // scope 0 at $DIR/shifts.rs:+2:22: +2:32 - StorageLive(_13); // scope 0 at $DIR/shifts.rs:+2:22: +2:27 - _13 = _1; // scope 0 at $DIR/shifts.rs:+2:22: +2:27 - StorageLive(_14); // scope 0 at $DIR/shifts.rs:+2:31: +2:32 - _14 = _4; // scope 0 at $DIR/shifts.rs:+2:31: +2:32 - _15 = _14 as u32 (IntToInt); // scope 0 at $DIR/shifts.rs:+2:22: +2:32 - _16 = Lt(move _15, const 8_u32); // scope 0 at $DIR/shifts.rs:+2:22: +2:32 - assert(move _16, "attempt to shift right by `{}`, which would overflow", _14) -> [success: bb2, unwind: bb7]; // scope 0 at $DIR/shifts.rs:+2:22: +2:32 + _7 = Shr(move _8, move _9); + StorageDead(_9); + StorageDead(_8); + StorageLive(_12); + StorageLive(_13); + _13 = _1; + StorageLive(_14); + _14 = _4; + _15 = _14 as u32 (IntToInt); + _16 = Lt(move _15, const 8_u32); + assert(move _16, "attempt to shift right by `{}`, which would overflow", _14) -> [success: bb2, unwind: bb7]; } bb2: { - _12 = Shr(move _13, move _14); // scope 0 at $DIR/shifts.rs:+2:22: +2:32 - StorageDead(_14); // scope 0 at $DIR/shifts.rs:+2:31: +2:32 - StorageDead(_13); // scope 0 at $DIR/shifts.rs:+2:31: +2:32 - StorageLive(_17); // scope 0 at $DIR/shifts.rs:+2:34: +2:44 - StorageLive(_18); // scope 0 at $DIR/shifts.rs:+2:34: +2:39 - _18 = _1; // scope 0 at $DIR/shifts.rs:+2:34: +2:39 - StorageLive(_19); // scope 0 at $DIR/shifts.rs:+2:43: +2:44 - _19 = _5; // scope 0 at $DIR/shifts.rs:+2:43: +2:44 - _20 = _19 as u128 (IntToInt); // scope 0 at $DIR/shifts.rs:+2:34: +2:44 - _21 = Lt(move _20, const 8_u128); // scope 0 at $DIR/shifts.rs:+2:34: +2:44 - assert(move _21, "attempt to shift right by `{}`, which would overflow", _19) -> [success: bb3, unwind: bb7]; // scope 0 at $DIR/shifts.rs:+2:34: +2:44 + _12 = Shr(move _13, move _14); + StorageDead(_14); + StorageDead(_13); + StorageLive(_17); + StorageLive(_18); + _18 = _1; + StorageLive(_19); + _19 = _5; + _20 = _19 as u128 (IntToInt); + _21 = Lt(move _20, const 8_u128); + assert(move _21, "attempt to shift right by `{}`, which would overflow", _19) -> [success: bb3, unwind: bb7]; } bb3: { - _17 = Shr(move _18, move _19); // scope 0 at $DIR/shifts.rs:+2:34: +2:44 - StorageDead(_19); // scope 0 at $DIR/shifts.rs:+2:43: +2:44 - StorageDead(_18); // scope 0 at $DIR/shifts.rs:+2:43: +2:44 - _6 = [move _7, move _12, move _17]; // scope 0 at $DIR/shifts.rs:+2:9: +2:45 - StorageDead(_17); // scope 0 at $DIR/shifts.rs:+2:44: +2:45 - StorageDead(_12); // scope 0 at $DIR/shifts.rs:+2:44: +2:45 - StorageDead(_7); // scope 0 at $DIR/shifts.rs:+2:44: +2:45 - StorageLive(_22); // scope 0 at $DIR/shifts.rs:+3:9: +3:39 - StorageLive(_23); // scope 0 at $DIR/shifts.rs:+3:10: +3:18 - StorageLive(_24); // scope 0 at $DIR/shifts.rs:+3:10: +3:13 - _24 = _2; // scope 0 at $DIR/shifts.rs:+3:10: +3:13 - StorageLive(_25); // scope 0 at $DIR/shifts.rs:+3:17: +3:18 - _25 = _3; // scope 0 at $DIR/shifts.rs:+3:17: +3:18 - _26 = _25 as u8 (IntToInt); // scope 0 at $DIR/shifts.rs:+3:10: +3:18 - _27 = Lt(move _26, const 128_u8); // scope 0 at $DIR/shifts.rs:+3:10: +3:18 - assert(move _27, "attempt to shift left by `{}`, which would overflow", _25) -> [success: bb4, unwind: bb7]; // scope 0 at $DIR/shifts.rs:+3:10: +3:18 + _17 = Shr(move _18, move _19); + StorageDead(_19); + StorageDead(_18); + _6 = [move _7, move _12, move _17]; + StorageDead(_17); + StorageDead(_12); + StorageDead(_7); + StorageLive(_22); + StorageLive(_23); + StorageLive(_24); + _24 = _2; + StorageLive(_25); + _25 = _3; + _26 = _25 as u8 (IntToInt); + _27 = Lt(move _26, const 128_u8); + assert(move _27, "attempt to shift left by `{}`, which would overflow", _25) -> [success: bb4, unwind: bb7]; } bb4: { - _23 = Shl(move _24, move _25); // scope 0 at $DIR/shifts.rs:+3:10: +3:18 - StorageDead(_25); // scope 0 at $DIR/shifts.rs:+3:17: +3:18 - StorageDead(_24); // scope 0 at $DIR/shifts.rs:+3:17: +3:18 - StorageLive(_28); // scope 0 at $DIR/shifts.rs:+3:20: +3:28 - StorageLive(_29); // scope 0 at $DIR/shifts.rs:+3:20: +3:23 - _29 = _2; // scope 0 at $DIR/shifts.rs:+3:20: +3:23 - StorageLive(_30); // scope 0 at $DIR/shifts.rs:+3:27: +3:28 - _30 = _4; // scope 0 at $DIR/shifts.rs:+3:27: +3:28 - _31 = _30 as u32 (IntToInt); // scope 0 at $DIR/shifts.rs:+3:20: +3:28 - _32 = Lt(move _31, const 128_u32); // scope 0 at $DIR/shifts.rs:+3:20: +3:28 - assert(move _32, "attempt to shift left by `{}`, which would overflow", _30) -> [success: bb5, unwind: bb7]; // scope 0 at $DIR/shifts.rs:+3:20: +3:28 + _23 = Shl(move _24, move _25); + StorageDead(_25); + StorageDead(_24); + StorageLive(_28); + StorageLive(_29); + _29 = _2; + StorageLive(_30); + _30 = _4; + _31 = _30 as u32 (IntToInt); + _32 = Lt(move _31, const 128_u32); + assert(move _32, "attempt to shift left by `{}`, which would overflow", _30) -> [success: bb5, unwind: bb7]; } bb5: { - _28 = Shl(move _29, move _30); // scope 0 at $DIR/shifts.rs:+3:20: +3:28 - StorageDead(_30); // scope 0 at $DIR/shifts.rs:+3:27: +3:28 - StorageDead(_29); // scope 0 at $DIR/shifts.rs:+3:27: +3:28 - StorageLive(_33); // scope 0 at $DIR/shifts.rs:+3:30: +3:38 - StorageLive(_34); // scope 0 at $DIR/shifts.rs:+3:30: +3:33 - _34 = _2; // scope 0 at $DIR/shifts.rs:+3:30: +3:33 - StorageLive(_35); // scope 0 at $DIR/shifts.rs:+3:37: +3:38 - _35 = _5; // scope 0 at $DIR/shifts.rs:+3:37: +3:38 - _36 = _35 as u128 (IntToInt); // scope 0 at $DIR/shifts.rs:+3:30: +3:38 - _37 = Lt(move _36, const 128_u128); // scope 0 at $DIR/shifts.rs:+3:30: +3:38 - assert(move _37, "attempt to shift left by `{}`, which would overflow", _35) -> [success: bb6, unwind: bb7]; // scope 0 at $DIR/shifts.rs:+3:30: +3:38 + _28 = Shl(move _29, move _30); + StorageDead(_30); + StorageDead(_29); + StorageLive(_33); + StorageLive(_34); + _34 = _2; + StorageLive(_35); + _35 = _5; + _36 = _35 as u128 (IntToInt); + _37 = Lt(move _36, const 128_u128); + assert(move _37, "attempt to shift left by `{}`, which would overflow", _35) -> [success: bb6, unwind: bb7]; } bb6: { - _33 = Shl(move _34, move _35); // scope 0 at $DIR/shifts.rs:+3:30: +3:38 - StorageDead(_35); // scope 0 at $DIR/shifts.rs:+3:37: +3:38 - StorageDead(_34); // scope 0 at $DIR/shifts.rs:+3:37: +3:38 - _22 = [move _23, move _28, move _33]; // scope 0 at $DIR/shifts.rs:+3:9: +3:39 - StorageDead(_33); // scope 0 at $DIR/shifts.rs:+3:38: +3:39 - StorageDead(_28); // scope 0 at $DIR/shifts.rs:+3:38: +3:39 - StorageDead(_23); // scope 0 at $DIR/shifts.rs:+3:38: +3:39 - _0 = (move _6, move _22); // scope 0 at $DIR/shifts.rs:+1:5: +4:6 - StorageDead(_22); // scope 0 at $DIR/shifts.rs:+4:5: +4:6 - StorageDead(_6); // scope 0 at $DIR/shifts.rs:+4:5: +4:6 - return; // scope 0 at $DIR/shifts.rs:+5:2: +5:2 + _33 = Shl(move _34, move _35); + StorageDead(_35); + StorageDead(_34); + _22 = [move _23, move _28, move _33]; + StorageDead(_33); + StorageDead(_28); + StorageDead(_23); + _0 = (move _6, move _22); + StorageDead(_22); + StorageDead(_6); + return; } bb7 (cleanup): { - resume; // scope 0 at $DIR/shifts.rs:+0:1: +5:2 + resume; } } diff --git a/tests/mir-opt/building/shifts.shift_unsigned.built.after.mir b/tests/mir-opt/building/shifts.shift_unsigned.built.after.mir index 04da2d20d242f..dfd3b5b35ad59 100644 --- a/tests/mir-opt/building/shifts.shift_unsigned.built.after.mir +++ b/tests/mir-opt/building/shifts.shift_unsigned.built.after.mir @@ -1,135 +1,135 @@ // MIR for `shift_unsigned` after built fn shift_unsigned(_1: u8, _2: i128, _3: u8, _4: u32, _5: u128) -> ([u8; 3], [i128; 3]) { - debug small => _1; // in scope 0 at $DIR/shifts.rs:+0:19: +0:24 - debug big => _2; // in scope 0 at $DIR/shifts.rs:+0:30: +0:33 - debug a => _3; // in scope 0 at $DIR/shifts.rs:+0:41: +0:42 - debug b => _4; // in scope 0 at $DIR/shifts.rs:+0:48: +0:49 - debug c => _5; // in scope 0 at $DIR/shifts.rs:+0:56: +0:57 - let mut _0: ([u8; 3], [i128; 3]); // return place in scope 0 at $DIR/shifts.rs:+0:68: +0:88 - let mut _6: [u8; 3]; // in scope 0 at $DIR/shifts.rs:+2:9: +2:45 - let mut _7: u8; // in scope 0 at $DIR/shifts.rs:+2:10: +2:20 - let mut _8: u8; // in scope 0 at $DIR/shifts.rs:+2:10: +2:15 - let mut _9: u8; // in scope 0 at $DIR/shifts.rs:+2:19: +2:20 - let mut _10: bool; // in scope 0 at $DIR/shifts.rs:+2:10: +2:20 - let mut _11: u8; // in scope 0 at $DIR/shifts.rs:+2:22: +2:32 - let mut _12: u8; // in scope 0 at $DIR/shifts.rs:+2:22: +2:27 - let mut _13: u32; // in scope 0 at $DIR/shifts.rs:+2:31: +2:32 - let mut _14: bool; // in scope 0 at $DIR/shifts.rs:+2:22: +2:32 - let mut _15: u8; // in scope 0 at $DIR/shifts.rs:+2:34: +2:44 - let mut _16: u8; // in scope 0 at $DIR/shifts.rs:+2:34: +2:39 - let mut _17: u128; // in scope 0 at $DIR/shifts.rs:+2:43: +2:44 - let mut _18: bool; // in scope 0 at $DIR/shifts.rs:+2:34: +2:44 - let mut _19: [i128; 3]; // in scope 0 at $DIR/shifts.rs:+3:9: +3:39 - let mut _20: i128; // in scope 0 at $DIR/shifts.rs:+3:10: +3:18 - let mut _21: i128; // in scope 0 at $DIR/shifts.rs:+3:10: +3:13 - let mut _22: u8; // in scope 0 at $DIR/shifts.rs:+3:17: +3:18 - let mut _23: bool; // in scope 0 at $DIR/shifts.rs:+3:10: +3:18 - let mut _24: i128; // in scope 0 at $DIR/shifts.rs:+3:20: +3:28 - let mut _25: i128; // in scope 0 at $DIR/shifts.rs:+3:20: +3:23 - let mut _26: u32; // in scope 0 at $DIR/shifts.rs:+3:27: +3:28 - let mut _27: bool; // in scope 0 at $DIR/shifts.rs:+3:20: +3:28 - let mut _28: i128; // in scope 0 at $DIR/shifts.rs:+3:30: +3:38 - let mut _29: i128; // in scope 0 at $DIR/shifts.rs:+3:30: +3:33 - let mut _30: u128; // in scope 0 at $DIR/shifts.rs:+3:37: +3:38 - let mut _31: bool; // in scope 0 at $DIR/shifts.rs:+3:30: +3:38 + debug small => _1; + debug big => _2; + debug a => _3; + debug b => _4; + debug c => _5; + let mut _0: ([u8; 3], [i128; 3]); + let mut _6: [u8; 3]; + let mut _7: u8; + let mut _8: u8; + let mut _9: u8; + let mut _10: bool; + let mut _11: u8; + let mut _12: u8; + let mut _13: u32; + let mut _14: bool; + let mut _15: u8; + let mut _16: u8; + let mut _17: u128; + let mut _18: bool; + let mut _19: [i128; 3]; + let mut _20: i128; + let mut _21: i128; + let mut _22: u8; + let mut _23: bool; + let mut _24: i128; + let mut _25: i128; + let mut _26: u32; + let mut _27: bool; + let mut _28: i128; + let mut _29: i128; + let mut _30: u128; + let mut _31: bool; bb0: { - StorageLive(_6); // scope 0 at $DIR/shifts.rs:+2:9: +2:45 - StorageLive(_7); // scope 0 at $DIR/shifts.rs:+2:10: +2:20 - StorageLive(_8); // scope 0 at $DIR/shifts.rs:+2:10: +2:15 - _8 = _1; // scope 0 at $DIR/shifts.rs:+2:10: +2:15 - StorageLive(_9); // scope 0 at $DIR/shifts.rs:+2:19: +2:20 - _9 = _3; // scope 0 at $DIR/shifts.rs:+2:19: +2:20 - _10 = Lt(_9, const 8_u8); // scope 0 at $DIR/shifts.rs:+2:10: +2:20 - assert(move _10, "attempt to shift right by `{}`, which would overflow", _9) -> [success: bb1, unwind: bb7]; // scope 0 at $DIR/shifts.rs:+2:10: +2:20 + StorageLive(_6); + StorageLive(_7); + StorageLive(_8); + _8 = _1; + StorageLive(_9); + _9 = _3; + _10 = Lt(_9, const 8_u8); + assert(move _10, "attempt to shift right by `{}`, which would overflow", _9) -> [success: bb1, unwind: bb7]; } bb1: { - _7 = Shr(move _8, move _9); // scope 0 at $DIR/shifts.rs:+2:10: +2:20 - StorageDead(_9); // scope 0 at $DIR/shifts.rs:+2:19: +2:20 - StorageDead(_8); // scope 0 at $DIR/shifts.rs:+2:19: +2:20 - StorageLive(_11); // scope 0 at $DIR/shifts.rs:+2:22: +2:32 - StorageLive(_12); // scope 0 at $DIR/shifts.rs:+2:22: +2:27 - _12 = _1; // scope 0 at $DIR/shifts.rs:+2:22: +2:27 - StorageLive(_13); // scope 0 at $DIR/shifts.rs:+2:31: +2:32 - _13 = _4; // scope 0 at $DIR/shifts.rs:+2:31: +2:32 - _14 = Lt(_13, const 8_u32); // scope 0 at $DIR/shifts.rs:+2:22: +2:32 - assert(move _14, "attempt to shift right by `{}`, which would overflow", _13) -> [success: bb2, unwind: bb7]; // scope 0 at $DIR/shifts.rs:+2:22: +2:32 + _7 = Shr(move _8, move _9); + StorageDead(_9); + StorageDead(_8); + StorageLive(_11); + StorageLive(_12); + _12 = _1; + StorageLive(_13); + _13 = _4; + _14 = Lt(_13, const 8_u32); + assert(move _14, "attempt to shift right by `{}`, which would overflow", _13) -> [success: bb2, unwind: bb7]; } bb2: { - _11 = Shr(move _12, move _13); // scope 0 at $DIR/shifts.rs:+2:22: +2:32 - StorageDead(_13); // scope 0 at $DIR/shifts.rs:+2:31: +2:32 - StorageDead(_12); // scope 0 at $DIR/shifts.rs:+2:31: +2:32 - StorageLive(_15); // scope 0 at $DIR/shifts.rs:+2:34: +2:44 - StorageLive(_16); // scope 0 at $DIR/shifts.rs:+2:34: +2:39 - _16 = _1; // scope 0 at $DIR/shifts.rs:+2:34: +2:39 - StorageLive(_17); // scope 0 at $DIR/shifts.rs:+2:43: +2:44 - _17 = _5; // scope 0 at $DIR/shifts.rs:+2:43: +2:44 - _18 = Lt(_17, const 8_u128); // scope 0 at $DIR/shifts.rs:+2:34: +2:44 - assert(move _18, "attempt to shift right by `{}`, which would overflow", _17) -> [success: bb3, unwind: bb7]; // scope 0 at $DIR/shifts.rs:+2:34: +2:44 + _11 = Shr(move _12, move _13); + StorageDead(_13); + StorageDead(_12); + StorageLive(_15); + StorageLive(_16); + _16 = _1; + StorageLive(_17); + _17 = _5; + _18 = Lt(_17, const 8_u128); + assert(move _18, "attempt to shift right by `{}`, which would overflow", _17) -> [success: bb3, unwind: bb7]; } bb3: { - _15 = Shr(move _16, move _17); // scope 0 at $DIR/shifts.rs:+2:34: +2:44 - StorageDead(_17); // scope 0 at $DIR/shifts.rs:+2:43: +2:44 - StorageDead(_16); // scope 0 at $DIR/shifts.rs:+2:43: +2:44 - _6 = [move _7, move _11, move _15]; // scope 0 at $DIR/shifts.rs:+2:9: +2:45 - StorageDead(_15); // scope 0 at $DIR/shifts.rs:+2:44: +2:45 - StorageDead(_11); // scope 0 at $DIR/shifts.rs:+2:44: +2:45 - StorageDead(_7); // scope 0 at $DIR/shifts.rs:+2:44: +2:45 - StorageLive(_19); // scope 0 at $DIR/shifts.rs:+3:9: +3:39 - StorageLive(_20); // scope 0 at $DIR/shifts.rs:+3:10: +3:18 - StorageLive(_21); // scope 0 at $DIR/shifts.rs:+3:10: +3:13 - _21 = _2; // scope 0 at $DIR/shifts.rs:+3:10: +3:13 - StorageLive(_22); // scope 0 at $DIR/shifts.rs:+3:17: +3:18 - _22 = _3; // scope 0 at $DIR/shifts.rs:+3:17: +3:18 - _23 = Lt(_22, const 128_u8); // scope 0 at $DIR/shifts.rs:+3:10: +3:18 - assert(move _23, "attempt to shift left by `{}`, which would overflow", _22) -> [success: bb4, unwind: bb7]; // scope 0 at $DIR/shifts.rs:+3:10: +3:18 + _15 = Shr(move _16, move _17); + StorageDead(_17); + StorageDead(_16); + _6 = [move _7, move _11, move _15]; + StorageDead(_15); + StorageDead(_11); + StorageDead(_7); + StorageLive(_19); + StorageLive(_20); + StorageLive(_21); + _21 = _2; + StorageLive(_22); + _22 = _3; + _23 = Lt(_22, const 128_u8); + assert(move _23, "attempt to shift left by `{}`, which would overflow", _22) -> [success: bb4, unwind: bb7]; } bb4: { - _20 = Shl(move _21, move _22); // scope 0 at $DIR/shifts.rs:+3:10: +3:18 - StorageDead(_22); // scope 0 at $DIR/shifts.rs:+3:17: +3:18 - StorageDead(_21); // scope 0 at $DIR/shifts.rs:+3:17: +3:18 - StorageLive(_24); // scope 0 at $DIR/shifts.rs:+3:20: +3:28 - StorageLive(_25); // scope 0 at $DIR/shifts.rs:+3:20: +3:23 - _25 = _2; // scope 0 at $DIR/shifts.rs:+3:20: +3:23 - StorageLive(_26); // scope 0 at $DIR/shifts.rs:+3:27: +3:28 - _26 = _4; // scope 0 at $DIR/shifts.rs:+3:27: +3:28 - _27 = Lt(_26, const 128_u32); // scope 0 at $DIR/shifts.rs:+3:20: +3:28 - assert(move _27, "attempt to shift left by `{}`, which would overflow", _26) -> [success: bb5, unwind: bb7]; // scope 0 at $DIR/shifts.rs:+3:20: +3:28 + _20 = Shl(move _21, move _22); + StorageDead(_22); + StorageDead(_21); + StorageLive(_24); + StorageLive(_25); + _25 = _2; + StorageLive(_26); + _26 = _4; + _27 = Lt(_26, const 128_u32); + assert(move _27, "attempt to shift left by `{}`, which would overflow", _26) -> [success: bb5, unwind: bb7]; } bb5: { - _24 = Shl(move _25, move _26); // scope 0 at $DIR/shifts.rs:+3:20: +3:28 - StorageDead(_26); // scope 0 at $DIR/shifts.rs:+3:27: +3:28 - StorageDead(_25); // scope 0 at $DIR/shifts.rs:+3:27: +3:28 - StorageLive(_28); // scope 0 at $DIR/shifts.rs:+3:30: +3:38 - StorageLive(_29); // scope 0 at $DIR/shifts.rs:+3:30: +3:33 - _29 = _2; // scope 0 at $DIR/shifts.rs:+3:30: +3:33 - StorageLive(_30); // scope 0 at $DIR/shifts.rs:+3:37: +3:38 - _30 = _5; // scope 0 at $DIR/shifts.rs:+3:37: +3:38 - _31 = Lt(_30, const 128_u128); // scope 0 at $DIR/shifts.rs:+3:30: +3:38 - assert(move _31, "attempt to shift left by `{}`, which would overflow", _30) -> [success: bb6, unwind: bb7]; // scope 0 at $DIR/shifts.rs:+3:30: +3:38 + _24 = Shl(move _25, move _26); + StorageDead(_26); + StorageDead(_25); + StorageLive(_28); + StorageLive(_29); + _29 = _2; + StorageLive(_30); + _30 = _5; + _31 = Lt(_30, const 128_u128); + assert(move _31, "attempt to shift left by `{}`, which would overflow", _30) -> [success: bb6, unwind: bb7]; } bb6: { - _28 = Shl(move _29, move _30); // scope 0 at $DIR/shifts.rs:+3:30: +3:38 - StorageDead(_30); // scope 0 at $DIR/shifts.rs:+3:37: +3:38 - StorageDead(_29); // scope 0 at $DIR/shifts.rs:+3:37: +3:38 - _19 = [move _20, move _24, move _28]; // scope 0 at $DIR/shifts.rs:+3:9: +3:39 - StorageDead(_28); // scope 0 at $DIR/shifts.rs:+3:38: +3:39 - StorageDead(_24); // scope 0 at $DIR/shifts.rs:+3:38: +3:39 - StorageDead(_20); // scope 0 at $DIR/shifts.rs:+3:38: +3:39 - _0 = (move _6, move _19); // scope 0 at $DIR/shifts.rs:+1:5: +4:6 - StorageDead(_19); // scope 0 at $DIR/shifts.rs:+4:5: +4:6 - StorageDead(_6); // scope 0 at $DIR/shifts.rs:+4:5: +4:6 - return; // scope 0 at $DIR/shifts.rs:+5:2: +5:2 + _28 = Shl(move _29, move _30); + StorageDead(_30); + StorageDead(_29); + _19 = [move _20, move _24, move _28]; + StorageDead(_28); + StorageDead(_24); + StorageDead(_20); + _0 = (move _6, move _19); + StorageDead(_19); + StorageDead(_6); + return; } bb7 (cleanup): { - resume; // scope 0 at $DIR/shifts.rs:+0:1: +5:2 + resume; } } diff --git a/tests/mir-opt/building/simple_match.match_bool.built.after.mir b/tests/mir-opt/building/simple_match.match_bool.built.after.mir index aa2fd46320e13..c89ea2b6c85bf 100644 --- a/tests/mir-opt/building/simple_match.match_bool.built.after.mir +++ b/tests/mir-opt/building/simple_match.match_bool.built.after.mir @@ -1,29 +1,29 @@ // MIR for `match_bool` after built fn match_bool(_1: bool) -> usize { - debug x => _1; // in scope 0 at $DIR/simple_match.rs:+0:15: +0:16 - let mut _0: usize; // return place in scope 0 at $DIR/simple_match.rs:+0:27: +0:32 + debug x => _1; + let mut _0: usize; bb0: { - FakeRead(ForMatchedPlace(None), _1); // scope 0 at $DIR/simple_match.rs:+1:11: +1:12 - switchInt(_1) -> [0: bb2, otherwise: bb1]; // scope 0 at $DIR/simple_match.rs:+1:5: +1:12 + FakeRead(ForMatchedPlace(None), _1); + switchInt(_1) -> [0: bb2, otherwise: bb1]; } bb1: { - falseEdge -> [real: bb3, imaginary: bb2]; // scope 0 at $DIR/simple_match.rs:+2:9: +2:13 + falseEdge -> [real: bb3, imaginary: bb2]; } bb2: { - _0 = const 20_usize; // scope 0 at $DIR/simple_match.rs:+3:14: +3:16 - goto -> bb4; // scope 0 at $DIR/simple_match.rs:+3:14: +3:16 + _0 = const 20_usize; + goto -> bb4; } bb3: { - _0 = const 10_usize; // scope 0 at $DIR/simple_match.rs:+2:17: +2:19 - goto -> bb4; // scope 0 at $DIR/simple_match.rs:+2:17: +2:19 + _0 = const 10_usize; + goto -> bb4; } bb4: { - return; // scope 0 at $DIR/simple_match.rs:+5:2: +5:2 + return; } } diff --git a/tests/mir-opt/building/storage_live_dead_in_statics.XXX.built.after.mir b/tests/mir-opt/building/storage_live_dead_in_statics.XXX.built.after.mir index 1d3f77e079baf..1d7adfde4edea 100644 --- a/tests/mir-opt/building/storage_live_dead_in_statics.XXX.built.after.mir +++ b/tests/mir-opt/building/storage_live_dead_in_statics.XXX.built.after.mir @@ -1,203 +1,200 @@ // MIR for `XXX` after built static XXX: &Foo = { - let mut _0: &Foo; // return place in scope 0 at $DIR/storage_live_dead_in_statics.rs:+0:13: +0:25 - let _1: &Foo; // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+0:28: +18:2 - let _2: Foo; // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+0:29: +18:2 - let mut _3: &[(u32, u32)]; // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+2:11: +17:6 - let mut _4: &[(u32, u32); 42]; // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+2:11: +17:6 - let _5: &[(u32, u32); 42]; // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+2:11: +17:6 - let _6: [(u32, u32); 42]; // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+2:12: +17:6 - let mut _7: (u32, u32); // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+3:9: +3:15 - let mut _8: (u32, u32); // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+3:17: +3:23 - let mut _9: (u32, u32); // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+3:25: +3:31 - let mut _10: (u32, u32); // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+4:9: +4:15 - let mut _11: (u32, u32); // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+4:17: +4:23 - let mut _12: (u32, u32); // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+4:25: +4:31 - let mut _13: (u32, u32); // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+5:9: +5:15 - let mut _14: (u32, u32); // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+5:17: +5:23 - let mut _15: (u32, u32); // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+5:25: +5:31 - let mut _16: (u32, u32); // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+6:9: +6:15 - let mut _17: (u32, u32); // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+6:17: +6:23 - let mut _18: (u32, u32); // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+6:25: +6:31 - let mut _19: (u32, u32); // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+7:9: +7:15 - let mut _20: (u32, u32); // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+7:17: +7:23 - let mut _21: (u32, u32); // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+7:25: +7:31 - let mut _22: (u32, u32); // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+8:9: +8:15 - let mut _23: (u32, u32); // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+8:17: +8:23 - let mut _24: (u32, u32); // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+8:25: +8:31 - let mut _25: (u32, u32); // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+9:9: +9:15 - let mut _26: (u32, u32); // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+9:17: +9:23 - let mut _27: (u32, u32); // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+9:25: +9:31 - let mut _28: (u32, u32); // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+10:9: +10:15 - let mut _29: (u32, u32); // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+10:17: +10:23 - let mut _30: (u32, u32); // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+10:25: +10:31 - let mut _31: (u32, u32); // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+11:9: +11:15 - let mut _32: (u32, u32); // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+11:17: +11:23 - let mut _33: (u32, u32); // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+11:25: +11:31 - let mut _34: (u32, u32); // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+12:9: +12:15 - let mut _35: (u32, u32); // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+12:17: +12:23 - let mut _36: (u32, u32); // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+12:25: +12:31 - let mut _37: (u32, u32); // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+13:9: +13:15 - let mut _38: (u32, u32); // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+13:17: +13:23 - let mut _39: (u32, u32); // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+13:25: +13:31 - let mut _40: (u32, u32); // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+14:9: +14:15 - let mut _41: (u32, u32); // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+14:17: +14:23 - let mut _42: (u32, u32); // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+14:25: +14:31 - let mut _43: (u32, u32); // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+15:9: +15:15 - let mut _44: (u32, u32); // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+15:17: +15:23 - let mut _45: (u32, u32); // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+15:25: +15:31 - let mut _46: (u32, u32); // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+16:9: +16:15 - let mut _47: (u32, u32); // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+16:17: +16:23 - let mut _48: (u32, u32); // in scope 0 at $DIR/storage_live_dead_in_statics.rs:+16:25: +16:31 + let mut _0: &Foo; + let _1: &Foo; + let _2: Foo; + let mut _3: &[(u32, u32)]; + let mut _4: &[(u32, u32); 42]; + let _5: &[(u32, u32); 42]; + let _6: [(u32, u32); 42]; + let mut _7: (u32, u32); + let mut _8: (u32, u32); + let mut _9: (u32, u32); + let mut _10: (u32, u32); + let mut _11: (u32, u32); + let mut _12: (u32, u32); + let mut _13: (u32, u32); + let mut _14: (u32, u32); + let mut _15: (u32, u32); + let mut _16: (u32, u32); + let mut _17: (u32, u32); + let mut _18: (u32, u32); + let mut _19: (u32, u32); + let mut _20: (u32, u32); + let mut _21: (u32, u32); + let mut _22: (u32, u32); + let mut _23: (u32, u32); + let mut _24: (u32, u32); + let mut _25: (u32, u32); + let mut _26: (u32, u32); + let mut _27: (u32, u32); + let mut _28: (u32, u32); + let mut _29: (u32, u32); + let mut _30: (u32, u32); + let mut _31: (u32, u32); + let mut _32: (u32, u32); + let mut _33: (u32, u32); + let mut _34: (u32, u32); + let mut _35: (u32, u32); + let mut _36: (u32, u32); + let mut _37: (u32, u32); + let mut _38: (u32, u32); + let mut _39: (u32, u32); + let mut _40: (u32, u32); + let mut _41: (u32, u32); + let mut _42: (u32, u32); + let mut _43: (u32, u32); + let mut _44: (u32, u32); + let mut _45: (u32, u32); + let mut _46: (u32, u32); + let mut _47: (u32, u32); + let mut _48: (u32, u32); bb0: { - StorageLive(_1); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+0:28: +18:2 - StorageLive(_2); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+0:29: +18:2 - StorageLive(_3); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+2:11: +17:6 - StorageLive(_4); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+2:11: +17:6 - StorageLive(_5); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+2:11: +17:6 - StorageLive(_6); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+2:12: +17:6 - StorageLive(_7); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+3:9: +3:15 - _7 = (const 0_u32, const 1_u32); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+3:9: +3:15 - StorageLive(_8); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+3:17: +3:23 - _8 = (const 0_u32, const 2_u32); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+3:17: +3:23 - StorageLive(_9); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+3:25: +3:31 - _9 = (const 0_u32, const 3_u32); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+3:25: +3:31 - StorageLive(_10); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+4:9: +4:15 - _10 = (const 0_u32, const 1_u32); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+4:9: +4:15 - StorageLive(_11); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+4:17: +4:23 - _11 = (const 0_u32, const 2_u32); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+4:17: +4:23 - StorageLive(_12); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+4:25: +4:31 - _12 = (const 0_u32, const 3_u32); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+4:25: +4:31 - StorageLive(_13); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+5:9: +5:15 - _13 = (const 0_u32, const 1_u32); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+5:9: +5:15 - StorageLive(_14); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+5:17: +5:23 - _14 = (const 0_u32, const 2_u32); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+5:17: +5:23 - StorageLive(_15); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+5:25: +5:31 - _15 = (const 0_u32, const 3_u32); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+5:25: +5:31 - StorageLive(_16); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+6:9: +6:15 - _16 = (const 0_u32, const 1_u32); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+6:9: +6:15 - StorageLive(_17); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+6:17: +6:23 - _17 = (const 0_u32, const 2_u32); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+6:17: +6:23 - StorageLive(_18); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+6:25: +6:31 - _18 = (const 0_u32, const 3_u32); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+6:25: +6:31 - StorageLive(_19); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+7:9: +7:15 - _19 = (const 0_u32, const 1_u32); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+7:9: +7:15 - StorageLive(_20); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+7:17: +7:23 - _20 = (const 0_u32, const 2_u32); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+7:17: +7:23 - StorageLive(_21); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+7:25: +7:31 - _21 = (const 0_u32, const 3_u32); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+7:25: +7:31 - StorageLive(_22); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+8:9: +8:15 - _22 = (const 0_u32, const 1_u32); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+8:9: +8:15 - StorageLive(_23); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+8:17: +8:23 - _23 = (const 0_u32, const 2_u32); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+8:17: +8:23 - StorageLive(_24); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+8:25: +8:31 - _24 = (const 0_u32, const 3_u32); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+8:25: +8:31 - StorageLive(_25); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+9:9: +9:15 - _25 = (const 0_u32, const 1_u32); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+9:9: +9:15 - StorageLive(_26); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+9:17: +9:23 - _26 = (const 0_u32, const 2_u32); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+9:17: +9:23 - StorageLive(_27); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+9:25: +9:31 - _27 = (const 0_u32, const 3_u32); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+9:25: +9:31 - StorageLive(_28); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+10:9: +10:15 - _28 = (const 0_u32, const 1_u32); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+10:9: +10:15 - StorageLive(_29); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+10:17: +10:23 - _29 = (const 0_u32, const 2_u32); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+10:17: +10:23 - StorageLive(_30); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+10:25: +10:31 - _30 = (const 0_u32, const 3_u32); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+10:25: +10:31 - StorageLive(_31); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+11:9: +11:15 - _31 = (const 0_u32, const 1_u32); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+11:9: +11:15 - StorageLive(_32); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+11:17: +11:23 - _32 = (const 0_u32, const 2_u32); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+11:17: +11:23 - StorageLive(_33); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+11:25: +11:31 - _33 = (const 0_u32, const 3_u32); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+11:25: +11:31 - StorageLive(_34); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+12:9: +12:15 - _34 = (const 0_u32, const 1_u32); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+12:9: +12:15 - StorageLive(_35); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+12:17: +12:23 - _35 = (const 0_u32, const 2_u32); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+12:17: +12:23 - StorageLive(_36); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+12:25: +12:31 - _36 = (const 0_u32, const 3_u32); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+12:25: +12:31 - StorageLive(_37); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+13:9: +13:15 - _37 = (const 0_u32, const 1_u32); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+13:9: +13:15 - StorageLive(_38); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+13:17: +13:23 - _38 = (const 0_u32, const 2_u32); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+13:17: +13:23 - StorageLive(_39); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+13:25: +13:31 - _39 = (const 0_u32, const 3_u32); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+13:25: +13:31 - StorageLive(_40); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+14:9: +14:15 - _40 = (const 0_u32, const 1_u32); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+14:9: +14:15 - StorageLive(_41); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+14:17: +14:23 - _41 = (const 0_u32, const 2_u32); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+14:17: +14:23 - StorageLive(_42); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+14:25: +14:31 - _42 = (const 0_u32, const 3_u32); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+14:25: +14:31 - StorageLive(_43); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+15:9: +15:15 - _43 = (const 0_u32, const 1_u32); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+15:9: +15:15 - StorageLive(_44); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+15:17: +15:23 - _44 = (const 0_u32, const 2_u32); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+15:17: +15:23 - StorageLive(_45); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+15:25: +15:31 - _45 = (const 0_u32, const 3_u32); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+15:25: +15:31 - StorageLive(_46); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+16:9: +16:15 - _46 = (const 0_u32, const 1_u32); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+16:9: +16:15 - StorageLive(_47); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+16:17: +16:23 - _47 = (const 0_u32, const 2_u32); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+16:17: +16:23 - StorageLive(_48); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+16:25: +16:31 - _48 = (const 0_u32, const 3_u32); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+16:25: +16:31 - _6 = [move _7, move _8, move _9, move _10, move _11, move _12, move _13, move _14, move _15, move _16, move _17, move _18, move _19, move _20, move _21, move _22, move _23, move _24, move _25, move _26, move _27, move _28, move _29, move _30, move _31, move _32, move _33, move _34, move _35, move _36, move _37, move _38, move _39, move _40, move _41, move _42, move _43, move _44, move _45, move _46, move _47, move _48]; // scope 0 at $DIR/storage_live_dead_in_statics.rs:+2:12: +17:6 - StorageDead(_48); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+17:5: +17:6 - StorageDead(_47); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+17:5: +17:6 - StorageDead(_46); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+17:5: +17:6 - StorageDead(_45); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+17:5: +17:6 - StorageDead(_44); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+17:5: +17:6 - StorageDead(_43); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+17:5: +17:6 - StorageDead(_42); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+17:5: +17:6 - StorageDead(_41); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+17:5: +17:6 - StorageDead(_40); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+17:5: +17:6 - StorageDead(_39); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+17:5: +17:6 - StorageDead(_38); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+17:5: +17:6 - StorageDead(_37); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+17:5: +17:6 - StorageDead(_36); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+17:5: +17:6 - StorageDead(_35); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+17:5: +17:6 - StorageDead(_34); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+17:5: +17:6 - StorageDead(_33); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+17:5: +17:6 - StorageDead(_32); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+17:5: +17:6 - StorageDead(_31); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+17:5: +17:6 - StorageDead(_30); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+17:5: +17:6 - StorageDead(_29); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+17:5: +17:6 - StorageDead(_28); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+17:5: +17:6 - StorageDead(_27); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+17:5: +17:6 - StorageDead(_26); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+17:5: +17:6 - StorageDead(_25); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+17:5: +17:6 - StorageDead(_24); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+17:5: +17:6 - StorageDead(_23); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+17:5: +17:6 - StorageDead(_22); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+17:5: +17:6 - StorageDead(_21); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+17:5: +17:6 - StorageDead(_20); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+17:5: +17:6 - StorageDead(_19); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+17:5: +17:6 - StorageDead(_18); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+17:5: +17:6 - StorageDead(_17); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+17:5: +17:6 - StorageDead(_16); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+17:5: +17:6 - StorageDead(_15); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+17:5: +17:6 - StorageDead(_14); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+17:5: +17:6 - StorageDead(_13); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+17:5: +17:6 - StorageDead(_12); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+17:5: +17:6 - StorageDead(_11); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+17:5: +17:6 - StorageDead(_10); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+17:5: +17:6 - StorageDead(_9); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+17:5: +17:6 - StorageDead(_8); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+17:5: +17:6 - StorageDead(_7); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+17:5: +17:6 - _5 = &_6; // scope 0 at $DIR/storage_live_dead_in_statics.rs:+2:11: +17:6 - _4 = &(*_5); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+2:11: +17:6 - _3 = move _4 as &[(u32, u32)] (Pointer(Unsize)); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+2:11: +17:6 - StorageDead(_4); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+17:5: +17:6 - _2 = Foo { tup: const "hi", data: move _3 }; // scope 0 at $DIR/storage_live_dead_in_statics.rs:+0:29: +18:2 - // mir::Constant - // + span: $DIR/storage_live_dead_in_statics.rs:6:10: 6:14 - // + literal: Const { ty: &str, val: Value(Slice(..)) } - StorageDead(_3); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+18:1: +18:2 - _1 = &_2; // scope 0 at $DIR/storage_live_dead_in_statics.rs:+0:28: +18:2 - _0 = &(*_1); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+0:28: +18:2 - StorageDead(_5); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+18:1: +18:2 - StorageDead(_1); // scope 0 at $DIR/storage_live_dead_in_statics.rs:+18:1: +18:2 - return; // scope 0 at $DIR/storage_live_dead_in_statics.rs:+0:1: +18:3 + StorageLive(_1); + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + StorageLive(_5); + StorageLive(_6); + StorageLive(_7); + _7 = (const 0_u32, const 1_u32); + StorageLive(_8); + _8 = (const 0_u32, const 2_u32); + StorageLive(_9); + _9 = (const 0_u32, const 3_u32); + StorageLive(_10); + _10 = (const 0_u32, const 1_u32); + StorageLive(_11); + _11 = (const 0_u32, const 2_u32); + StorageLive(_12); + _12 = (const 0_u32, const 3_u32); + StorageLive(_13); + _13 = (const 0_u32, const 1_u32); + StorageLive(_14); + _14 = (const 0_u32, const 2_u32); + StorageLive(_15); + _15 = (const 0_u32, const 3_u32); + StorageLive(_16); + _16 = (const 0_u32, const 1_u32); + StorageLive(_17); + _17 = (const 0_u32, const 2_u32); + StorageLive(_18); + _18 = (const 0_u32, const 3_u32); + StorageLive(_19); + _19 = (const 0_u32, const 1_u32); + StorageLive(_20); + _20 = (const 0_u32, const 2_u32); + StorageLive(_21); + _21 = (const 0_u32, const 3_u32); + StorageLive(_22); + _22 = (const 0_u32, const 1_u32); + StorageLive(_23); + _23 = (const 0_u32, const 2_u32); + StorageLive(_24); + _24 = (const 0_u32, const 3_u32); + StorageLive(_25); + _25 = (const 0_u32, const 1_u32); + StorageLive(_26); + _26 = (const 0_u32, const 2_u32); + StorageLive(_27); + _27 = (const 0_u32, const 3_u32); + StorageLive(_28); + _28 = (const 0_u32, const 1_u32); + StorageLive(_29); + _29 = (const 0_u32, const 2_u32); + StorageLive(_30); + _30 = (const 0_u32, const 3_u32); + StorageLive(_31); + _31 = (const 0_u32, const 1_u32); + StorageLive(_32); + _32 = (const 0_u32, const 2_u32); + StorageLive(_33); + _33 = (const 0_u32, const 3_u32); + StorageLive(_34); + _34 = (const 0_u32, const 1_u32); + StorageLive(_35); + _35 = (const 0_u32, const 2_u32); + StorageLive(_36); + _36 = (const 0_u32, const 3_u32); + StorageLive(_37); + _37 = (const 0_u32, const 1_u32); + StorageLive(_38); + _38 = (const 0_u32, const 2_u32); + StorageLive(_39); + _39 = (const 0_u32, const 3_u32); + StorageLive(_40); + _40 = (const 0_u32, const 1_u32); + StorageLive(_41); + _41 = (const 0_u32, const 2_u32); + StorageLive(_42); + _42 = (const 0_u32, const 3_u32); + StorageLive(_43); + _43 = (const 0_u32, const 1_u32); + StorageLive(_44); + _44 = (const 0_u32, const 2_u32); + StorageLive(_45); + _45 = (const 0_u32, const 3_u32); + StorageLive(_46); + _46 = (const 0_u32, const 1_u32); + StorageLive(_47); + _47 = (const 0_u32, const 2_u32); + StorageLive(_48); + _48 = (const 0_u32, const 3_u32); + _6 = [move _7, move _8, move _9, move _10, move _11, move _12, move _13, move _14, move _15, move _16, move _17, move _18, move _19, move _20, move _21, move _22, move _23, move _24, move _25, move _26, move _27, move _28, move _29, move _30, move _31, move _32, move _33, move _34, move _35, move _36, move _37, move _38, move _39, move _40, move _41, move _42, move _43, move _44, move _45, move _46, move _47, move _48]; + StorageDead(_48); + StorageDead(_47); + StorageDead(_46); + StorageDead(_45); + StorageDead(_44); + StorageDead(_43); + StorageDead(_42); + StorageDead(_41); + StorageDead(_40); + StorageDead(_39); + StorageDead(_38); + StorageDead(_37); + StorageDead(_36); + StorageDead(_35); + StorageDead(_34); + StorageDead(_33); + StorageDead(_32); + StorageDead(_31); + StorageDead(_30); + StorageDead(_29); + StorageDead(_28); + StorageDead(_27); + StorageDead(_26); + StorageDead(_25); + StorageDead(_24); + StorageDead(_23); + StorageDead(_22); + StorageDead(_21); + StorageDead(_20); + StorageDead(_19); + StorageDead(_18); + StorageDead(_17); + StorageDead(_16); + StorageDead(_15); + StorageDead(_14); + StorageDead(_13); + StorageDead(_12); + StorageDead(_11); + StorageDead(_10); + StorageDead(_9); + StorageDead(_8); + StorageDead(_7); + _5 = &_6; + _4 = &(*_5); + _3 = move _4 as &[(u32, u32)] (Pointer(Unsize)); + StorageDead(_4); + _2 = Foo { tup: const "hi", data: move _3 }; + StorageDead(_3); + _1 = &_2; + _0 = &(*_1); + StorageDead(_5); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/building/uniform_array_move_out.move_out_by_subslice.built.after.mir b/tests/mir-opt/building/uniform_array_move_out.move_out_by_subslice.built.after.mir index 54f0ea2d89423..fea1138ba8d92 100644 --- a/tests/mir-opt/building/uniform_array_move_out.move_out_by_subslice.built.after.mir +++ b/tests/mir-opt/building/uniform_array_move_out.move_out_by_subslice.built.after.mir @@ -1,23 +1,23 @@ // MIR for `move_out_by_subslice` after built fn move_out_by_subslice() -> () { - let mut _0: (); // return place in scope 0 at $DIR/uniform_array_move_out.rs:+0:27: +0:27 - let _1: [std::boxed::Box; 2]; // in scope 0 at $DIR/uniform_array_move_out.rs:+1:9: +1:10 - let mut _2: std::boxed::Box; // in scope 0 at $DIR/uniform_array_move_out.rs:+3:9: +3:20 - let mut _3: usize; // in scope 0 at $DIR/uniform_array_move_out.rs:+3:9: +3:20 - let mut _4: usize; // in scope 0 at $DIR/uniform_array_move_out.rs:+3:9: +3:20 - let mut _5: *mut u8; // in scope 0 at $DIR/uniform_array_move_out.rs:+3:9: +3:20 - let mut _6: std::boxed::Box; // in scope 0 at $DIR/uniform_array_move_out.rs:+3:9: +3:20 - let mut _7: std::boxed::Box; // in scope 0 at $DIR/uniform_array_move_out.rs:+5:9: +5:20 - let mut _8: usize; // in scope 0 at $DIR/uniform_array_move_out.rs:+5:9: +5:20 - let mut _9: usize; // in scope 0 at $DIR/uniform_array_move_out.rs:+5:9: +5:20 - let mut _10: *mut u8; // in scope 0 at $DIR/uniform_array_move_out.rs:+5:9: +5:20 - let mut _11: std::boxed::Box; // in scope 0 at $DIR/uniform_array_move_out.rs:+5:9: +5:20 + let mut _0: (); + let _1: [std::boxed::Box; 2]; + let mut _2: std::boxed::Box; + let mut _3: usize; + let mut _4: usize; + let mut _5: *mut u8; + let mut _6: std::boxed::Box; + let mut _7: std::boxed::Box; + let mut _8: usize; + let mut _9: usize; + let mut _10: *mut u8; + let mut _11: std::boxed::Box; scope 1 { - debug a => _1; // in scope 1 at $DIR/uniform_array_move_out.rs:+1:9: +1:10 - let _12: [std::boxed::Box; 2]; // in scope 1 at $DIR/uniform_array_move_out.rs:+7:10: +7:12 + debug a => _1; + let _12: [std::boxed::Box; 2]; scope 4 { - debug _y => _12; // in scope 4 at $DIR/uniform_array_move_out.rs:+7:10: +7:12 + debug _y => _12; } } scope 2 { @@ -26,87 +26,81 @@ fn move_out_by_subslice() -> () { } bb0: { - StorageLive(_1); // scope 0 at $DIR/uniform_array_move_out.rs:+1:9: +1:10 - StorageLive(_2); // scope 0 at $DIR/uniform_array_move_out.rs:+3:9: +3:20 - _3 = SizeOf(i32); // scope 2 at $DIR/uniform_array_move_out.rs:+3:9: +3:20 - _4 = AlignOf(i32); // scope 2 at $DIR/uniform_array_move_out.rs:+3:9: +3:20 - _5 = alloc::alloc::exchange_malloc(move _3, move _4) -> [return: bb1, unwind: bb12]; // scope 2 at $DIR/uniform_array_move_out.rs:+3:9: +3:20 - // mir::Constant - // + span: $DIR/uniform_array_move_out.rs:18:9: 18:20 - // + literal: Const { ty: unsafe fn(usize, usize) -> *mut u8 {alloc::alloc::exchange_malloc}, val: Value() } + StorageLive(_1); + StorageLive(_2); + _3 = SizeOf(i32); + _4 = AlignOf(i32); + _5 = alloc::alloc::exchange_malloc(move _3, move _4) -> [return: bb1, unwind: bb12]; } bb1: { - StorageLive(_6); // scope 0 at $DIR/uniform_array_move_out.rs:+3:9: +3:20 - _6 = ShallowInitBox(move _5, i32); // scope 0 at $DIR/uniform_array_move_out.rs:+3:9: +3:20 - (*_6) = const 1_i32; // scope 0 at $DIR/uniform_array_move_out.rs:+3:18: +3:19 - _2 = move _6; // scope 0 at $DIR/uniform_array_move_out.rs:+3:9: +3:20 - drop(_6) -> [return: bb2, unwind: bb11]; // scope 0 at $DIR/uniform_array_move_out.rs:+3:19: +3:20 + StorageLive(_6); + _6 = ShallowInitBox(move _5, i32); + (*_6) = const 1_i32; + _2 = move _6; + drop(_6) -> [return: bb2, unwind: bb11]; } bb2: { - StorageDead(_6); // scope 0 at $DIR/uniform_array_move_out.rs:+3:19: +3:20 - StorageLive(_7); // scope 0 at $DIR/uniform_array_move_out.rs:+5:9: +5:20 - _8 = SizeOf(i32); // scope 3 at $DIR/uniform_array_move_out.rs:+5:9: +5:20 - _9 = AlignOf(i32); // scope 3 at $DIR/uniform_array_move_out.rs:+5:9: +5:20 - _10 = alloc::alloc::exchange_malloc(move _8, move _9) -> [return: bb3, unwind: bb11]; // scope 3 at $DIR/uniform_array_move_out.rs:+5:9: +5:20 - // mir::Constant - // + span: $DIR/uniform_array_move_out.rs:20:9: 20:20 - // + literal: Const { ty: unsafe fn(usize, usize) -> *mut u8 {alloc::alloc::exchange_malloc}, val: Value() } + StorageDead(_6); + StorageLive(_7); + _8 = SizeOf(i32); + _9 = AlignOf(i32); + _10 = alloc::alloc::exchange_malloc(move _8, move _9) -> [return: bb3, unwind: bb11]; } bb3: { - StorageLive(_11); // scope 0 at $DIR/uniform_array_move_out.rs:+5:9: +5:20 - _11 = ShallowInitBox(move _10, i32); // scope 0 at $DIR/uniform_array_move_out.rs:+5:9: +5:20 - (*_11) = const 2_i32; // scope 0 at $DIR/uniform_array_move_out.rs:+5:18: +5:19 - _7 = move _11; // scope 0 at $DIR/uniform_array_move_out.rs:+5:9: +5:20 - drop(_11) -> [return: bb4, unwind: bb10]; // scope 0 at $DIR/uniform_array_move_out.rs:+5:19: +5:20 + StorageLive(_11); + _11 = ShallowInitBox(move _10, i32); + (*_11) = const 2_i32; + _7 = move _11; + drop(_11) -> [return: bb4, unwind: bb10]; } bb4: { - StorageDead(_11); // scope 0 at $DIR/uniform_array_move_out.rs:+5:19: +5:20 - _1 = [move _2, move _7]; // scope 0 at $DIR/uniform_array_move_out.rs:+1:13: +6:6 - drop(_7) -> [return: bb5, unwind: bb11]; // scope 0 at $DIR/uniform_array_move_out.rs:+6:5: +6:6 + StorageDead(_11); + _1 = [move _2, move _7]; + drop(_7) -> [return: bb5, unwind: bb11]; } bb5: { - StorageDead(_7); // scope 0 at $DIR/uniform_array_move_out.rs:+6:5: +6:6 - drop(_2) -> [return: bb6, unwind: bb12]; // scope 0 at $DIR/uniform_array_move_out.rs:+6:5: +6:6 + StorageDead(_7); + drop(_2) -> [return: bb6, unwind: bb12]; } bb6: { - StorageDead(_2); // scope 0 at $DIR/uniform_array_move_out.rs:+6:5: +6:6 - FakeRead(ForLet(None), _1); // scope 0 at $DIR/uniform_array_move_out.rs:+1:9: +1:10 - PlaceMention(_1); // scope 1 at $DIR/uniform_array_move_out.rs:+7:21: +7:22 - StorageLive(_12); // scope 1 at $DIR/uniform_array_move_out.rs:+7:10: +7:12 - _12 = move _1[0..2]; // scope 1 at $DIR/uniform_array_move_out.rs:+7:10: +7:12 - _0 = const (); // scope 0 at $DIR/uniform_array_move_out.rs:+0:27: +8:2 - drop(_12) -> [return: bb7, unwind: bb9]; // scope 1 at $DIR/uniform_array_move_out.rs:+8:1: +8:2 + StorageDead(_2); + FakeRead(ForLet(None), _1); + PlaceMention(_1); + StorageLive(_12); + _12 = move _1[0..2]; + _0 = const (); + drop(_12) -> [return: bb7, unwind: bb9]; } bb7: { - StorageDead(_12); // scope 1 at $DIR/uniform_array_move_out.rs:+8:1: +8:2 - drop(_1) -> [return: bb8, unwind: bb12]; // scope 0 at $DIR/uniform_array_move_out.rs:+8:1: +8:2 + StorageDead(_12); + drop(_1) -> [return: bb8, unwind: bb12]; } bb8: { - StorageDead(_1); // scope 0 at $DIR/uniform_array_move_out.rs:+8:1: +8:2 - return; // scope 0 at $DIR/uniform_array_move_out.rs:+8:2: +8:2 + StorageDead(_1); + return; } bb9 (cleanup): { - drop(_1) -> [return: bb12, unwind terminate]; // scope 0 at $DIR/uniform_array_move_out.rs:+8:1: +8:2 + drop(_1) -> [return: bb12, unwind terminate]; } bb10 (cleanup): { - drop(_7) -> [return: bb11, unwind terminate]; // scope 0 at $DIR/uniform_array_move_out.rs:+6:5: +6:6 + drop(_7) -> [return: bb11, unwind terminate]; } bb11 (cleanup): { - drop(_2) -> [return: bb12, unwind terminate]; // scope 0 at $DIR/uniform_array_move_out.rs:+6:5: +6:6 + drop(_2) -> [return: bb12, unwind terminate]; } bb12 (cleanup): { - resume; // scope 0 at $DIR/uniform_array_move_out.rs:+0:1: +8:2 + resume; } } diff --git a/tests/mir-opt/building/uniform_array_move_out.move_out_from_end.built.after.mir b/tests/mir-opt/building/uniform_array_move_out.move_out_from_end.built.after.mir index 5090a4ba67518..3def40a8578f9 100644 --- a/tests/mir-opt/building/uniform_array_move_out.move_out_from_end.built.after.mir +++ b/tests/mir-opt/building/uniform_array_move_out.move_out_from_end.built.after.mir @@ -1,23 +1,23 @@ // MIR for `move_out_from_end` after built fn move_out_from_end() -> () { - let mut _0: (); // return place in scope 0 at $DIR/uniform_array_move_out.rs:+0:24: +0:24 - let _1: [std::boxed::Box; 2]; // in scope 0 at $DIR/uniform_array_move_out.rs:+1:9: +1:10 - let mut _2: std::boxed::Box; // in scope 0 at $DIR/uniform_array_move_out.rs:+3:9: +3:20 - let mut _3: usize; // in scope 0 at $DIR/uniform_array_move_out.rs:+3:9: +3:20 - let mut _4: usize; // in scope 0 at $DIR/uniform_array_move_out.rs:+3:9: +3:20 - let mut _5: *mut u8; // in scope 0 at $DIR/uniform_array_move_out.rs:+3:9: +3:20 - let mut _6: std::boxed::Box; // in scope 0 at $DIR/uniform_array_move_out.rs:+3:9: +3:20 - let mut _7: std::boxed::Box; // in scope 0 at $DIR/uniform_array_move_out.rs:+5:9: +5:20 - let mut _8: usize; // in scope 0 at $DIR/uniform_array_move_out.rs:+5:9: +5:20 - let mut _9: usize; // in scope 0 at $DIR/uniform_array_move_out.rs:+5:9: +5:20 - let mut _10: *mut u8; // in scope 0 at $DIR/uniform_array_move_out.rs:+5:9: +5:20 - let mut _11: std::boxed::Box; // in scope 0 at $DIR/uniform_array_move_out.rs:+5:9: +5:20 + let mut _0: (); + let _1: [std::boxed::Box; 2]; + let mut _2: std::boxed::Box; + let mut _3: usize; + let mut _4: usize; + let mut _5: *mut u8; + let mut _6: std::boxed::Box; + let mut _7: std::boxed::Box; + let mut _8: usize; + let mut _9: usize; + let mut _10: *mut u8; + let mut _11: std::boxed::Box; scope 1 { - debug a => _1; // in scope 1 at $DIR/uniform_array_move_out.rs:+1:9: +1:10 - let _12: std::boxed::Box; // in scope 1 at $DIR/uniform_array_move_out.rs:+7:14: +7:16 + debug a => _1; + let _12: std::boxed::Box; scope 4 { - debug _y => _12; // in scope 4 at $DIR/uniform_array_move_out.rs:+7:14: +7:16 + debug _y => _12; } } scope 2 { @@ -26,87 +26,81 @@ fn move_out_from_end() -> () { } bb0: { - StorageLive(_1); // scope 0 at $DIR/uniform_array_move_out.rs:+1:9: +1:10 - StorageLive(_2); // scope 0 at $DIR/uniform_array_move_out.rs:+3:9: +3:20 - _3 = SizeOf(i32); // scope 2 at $DIR/uniform_array_move_out.rs:+3:9: +3:20 - _4 = AlignOf(i32); // scope 2 at $DIR/uniform_array_move_out.rs:+3:9: +3:20 - _5 = alloc::alloc::exchange_malloc(move _3, move _4) -> [return: bb1, unwind: bb12]; // scope 2 at $DIR/uniform_array_move_out.rs:+3:9: +3:20 - // mir::Constant - // + span: $DIR/uniform_array_move_out.rs:7:9: 7:20 - // + literal: Const { ty: unsafe fn(usize, usize) -> *mut u8 {alloc::alloc::exchange_malloc}, val: Value() } + StorageLive(_1); + StorageLive(_2); + _3 = SizeOf(i32); + _4 = AlignOf(i32); + _5 = alloc::alloc::exchange_malloc(move _3, move _4) -> [return: bb1, unwind: bb12]; } bb1: { - StorageLive(_6); // scope 0 at $DIR/uniform_array_move_out.rs:+3:9: +3:20 - _6 = ShallowInitBox(move _5, i32); // scope 0 at $DIR/uniform_array_move_out.rs:+3:9: +3:20 - (*_6) = const 1_i32; // scope 0 at $DIR/uniform_array_move_out.rs:+3:18: +3:19 - _2 = move _6; // scope 0 at $DIR/uniform_array_move_out.rs:+3:9: +3:20 - drop(_6) -> [return: bb2, unwind: bb11]; // scope 0 at $DIR/uniform_array_move_out.rs:+3:19: +3:20 + StorageLive(_6); + _6 = ShallowInitBox(move _5, i32); + (*_6) = const 1_i32; + _2 = move _6; + drop(_6) -> [return: bb2, unwind: bb11]; } bb2: { - StorageDead(_6); // scope 0 at $DIR/uniform_array_move_out.rs:+3:19: +3:20 - StorageLive(_7); // scope 0 at $DIR/uniform_array_move_out.rs:+5:9: +5:20 - _8 = SizeOf(i32); // scope 3 at $DIR/uniform_array_move_out.rs:+5:9: +5:20 - _9 = AlignOf(i32); // scope 3 at $DIR/uniform_array_move_out.rs:+5:9: +5:20 - _10 = alloc::alloc::exchange_malloc(move _8, move _9) -> [return: bb3, unwind: bb11]; // scope 3 at $DIR/uniform_array_move_out.rs:+5:9: +5:20 - // mir::Constant - // + span: $DIR/uniform_array_move_out.rs:9:9: 9:20 - // + literal: Const { ty: unsafe fn(usize, usize) -> *mut u8 {alloc::alloc::exchange_malloc}, val: Value() } + StorageDead(_6); + StorageLive(_7); + _8 = SizeOf(i32); + _9 = AlignOf(i32); + _10 = alloc::alloc::exchange_malloc(move _8, move _9) -> [return: bb3, unwind: bb11]; } bb3: { - StorageLive(_11); // scope 0 at $DIR/uniform_array_move_out.rs:+5:9: +5:20 - _11 = ShallowInitBox(move _10, i32); // scope 0 at $DIR/uniform_array_move_out.rs:+5:9: +5:20 - (*_11) = const 2_i32; // scope 0 at $DIR/uniform_array_move_out.rs:+5:18: +5:19 - _7 = move _11; // scope 0 at $DIR/uniform_array_move_out.rs:+5:9: +5:20 - drop(_11) -> [return: bb4, unwind: bb10]; // scope 0 at $DIR/uniform_array_move_out.rs:+5:19: +5:20 + StorageLive(_11); + _11 = ShallowInitBox(move _10, i32); + (*_11) = const 2_i32; + _7 = move _11; + drop(_11) -> [return: bb4, unwind: bb10]; } bb4: { - StorageDead(_11); // scope 0 at $DIR/uniform_array_move_out.rs:+5:19: +5:20 - _1 = [move _2, move _7]; // scope 0 at $DIR/uniform_array_move_out.rs:+1:13: +6:6 - drop(_7) -> [return: bb5, unwind: bb11]; // scope 0 at $DIR/uniform_array_move_out.rs:+6:5: +6:6 + StorageDead(_11); + _1 = [move _2, move _7]; + drop(_7) -> [return: bb5, unwind: bb11]; } bb5: { - StorageDead(_7); // scope 0 at $DIR/uniform_array_move_out.rs:+6:5: +6:6 - drop(_2) -> [return: bb6, unwind: bb12]; // scope 0 at $DIR/uniform_array_move_out.rs:+6:5: +6:6 + StorageDead(_7); + drop(_2) -> [return: bb6, unwind: bb12]; } bb6: { - StorageDead(_2); // scope 0 at $DIR/uniform_array_move_out.rs:+6:5: +6:6 - FakeRead(ForLet(None), _1); // scope 0 at $DIR/uniform_array_move_out.rs:+1:9: +1:10 - PlaceMention(_1); // scope 1 at $DIR/uniform_array_move_out.rs:+7:20: +7:21 - StorageLive(_12); // scope 1 at $DIR/uniform_array_move_out.rs:+7:14: +7:16 - _12 = move _1[1 of 2]; // scope 1 at $DIR/uniform_array_move_out.rs:+7:14: +7:16 - _0 = const (); // scope 0 at $DIR/uniform_array_move_out.rs:+0:24: +8:2 - drop(_12) -> [return: bb7, unwind: bb9]; // scope 1 at $DIR/uniform_array_move_out.rs:+8:1: +8:2 + StorageDead(_2); + FakeRead(ForLet(None), _1); + PlaceMention(_1); + StorageLive(_12); + _12 = move _1[1 of 2]; + _0 = const (); + drop(_12) -> [return: bb7, unwind: bb9]; } bb7: { - StorageDead(_12); // scope 1 at $DIR/uniform_array_move_out.rs:+8:1: +8:2 - drop(_1) -> [return: bb8, unwind: bb12]; // scope 0 at $DIR/uniform_array_move_out.rs:+8:1: +8:2 + StorageDead(_12); + drop(_1) -> [return: bb8, unwind: bb12]; } bb8: { - StorageDead(_1); // scope 0 at $DIR/uniform_array_move_out.rs:+8:1: +8:2 - return; // scope 0 at $DIR/uniform_array_move_out.rs:+8:2: +8:2 + StorageDead(_1); + return; } bb9 (cleanup): { - drop(_1) -> [return: bb12, unwind terminate]; // scope 0 at $DIR/uniform_array_move_out.rs:+8:1: +8:2 + drop(_1) -> [return: bb12, unwind terminate]; } bb10 (cleanup): { - drop(_7) -> [return: bb11, unwind terminate]; // scope 0 at $DIR/uniform_array_move_out.rs:+6:5: +6:6 + drop(_7) -> [return: bb11, unwind terminate]; } bb11 (cleanup): { - drop(_2) -> [return: bb12, unwind terminate]; // scope 0 at $DIR/uniform_array_move_out.rs:+6:5: +6:6 + drop(_2) -> [return: bb12, unwind terminate]; } bb12 (cleanup): { - resume; // scope 0 at $DIR/uniform_array_move_out.rs:+0:1: +8:2 + resume; } } diff --git a/tests/mir-opt/byte_slice.main.SimplifyCfg-elaborate-drops.after.mir b/tests/mir-opt/byte_slice.main.SimplifyCfg-elaborate-drops.after.mir index 73f5655a1e502..9b17b4b63dd36 100644 --- a/tests/mir-opt/byte_slice.main.SimplifyCfg-elaborate-drops.after.mir +++ b/tests/mir-opt/byte_slice.main.SimplifyCfg-elaborate-drops.after.mir @@ -1,28 +1,25 @@ // MIR for `main` after SimplifyCfg-elaborate-drops fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/byte_slice.rs:+0:11: +0:11 - let _1: &[u8; 3]; // in scope 0 at $DIR/byte_slice.rs:+1:9: +1:10 + let mut _0: (); + let _1: &[u8; 3]; scope 1 { - debug x => _1; // in scope 1 at $DIR/byte_slice.rs:+1:9: +1:10 - let _2: [u8; 2]; // in scope 1 at $DIR/byte_slice.rs:+2:9: +2:10 + debug x => _1; + let _2: [u8; 2]; scope 2 { - debug y => _2; // in scope 2 at $DIR/byte_slice.rs:+2:9: +2:10 + debug y => _2; } } bb0: { - StorageLive(_1); // scope 0 at $DIR/byte_slice.rs:+1:9: +1:10 - _1 = const b"foo"; // scope 0 at $DIR/byte_slice.rs:+1:13: +1:19 - // mir::Constant - // + span: $DIR/byte_slice.rs:5:13: 5:19 - // + literal: Const { ty: &[u8; 3], val: Value(Scalar(alloc1)) } - StorageLive(_2); // scope 1 at $DIR/byte_slice.rs:+2:9: +2:10 - _2 = [const 5_u8, const 120_u8]; // scope 1 at $DIR/byte_slice.rs:+2:13: +2:24 - _0 = const (); // scope 0 at $DIR/byte_slice.rs:+0:11: +3:2 - StorageDead(_2); // scope 1 at $DIR/byte_slice.rs:+3:1: +3:2 - StorageDead(_1); // scope 0 at $DIR/byte_slice.rs:+3:1: +3:2 - return; // scope 0 at $DIR/byte_slice.rs:+3:2: +3:2 + StorageLive(_1); + _1 = const b"foo"; + StorageLive(_2); + _2 = [const 5_u8, const 120_u8]; + _0 = const (); + StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/casts.redundant.InstSimplify.diff b/tests/mir-opt/casts.redundant.InstSimplify.diff index a641b69deb081..ff6d11c4596d4 100644 --- a/tests/mir-opt/casts.redundant.InstSimplify.diff +++ b/tests/mir-opt/casts.redundant.InstSimplify.diff @@ -2,24 +2,24 @@ + // MIR for `redundant` after InstSimplify fn redundant(_1: *const &u8) -> *const &u8 { - debug x => _1; // in scope 0 at $DIR/casts.rs:+0:30: +0:31 - let mut _0: *const &u8; // return place in scope 0 at $DIR/casts.rs:+0:51: +0:64 - let mut _2: *const &u8; // in scope 0 at $DIR/casts.rs:+1:5: +1:55 - let mut _3: *const &u8; // in scope 0 at $DIR/casts.rs:+1:36: +1:37 - scope 1 (inlined generic_cast::<&u8, &u8>) { // at $DIR/casts.rs:6:5: 6:38 - debug x => _3; // in scope 1 at $DIR/casts.rs:10:23: 10:24 + debug x => _1; + let mut _0: *const &u8; + let mut _2: *const &u8; + let mut _3: *const &u8; + scope 1 (inlined generic_cast::<&u8, &u8>) { + debug x => _3; } bb0: { - StorageLive(_2); // scope 0 at $DIR/casts.rs:+1:5: +1:55 - StorageLive(_3); // scope 0 at $DIR/casts.rs:+1:36: +1:37 - _3 = _1; // scope 0 at $DIR/casts.rs:+1:36: +1:37 -- _2 = _3 as *const &u8 (PtrToPtr); // scope 1 at $DIR/casts.rs:11:5: 11:18 -+ _2 = _3; // scope 1 at $DIR/casts.rs:11:5: 11:18 - StorageDead(_3); // scope 0 at $DIR/casts.rs:+1:37: +1:38 - _0 = _2; // scope 0 at $DIR/casts.rs:+1:5: +1:55 - StorageDead(_2); // scope 0 at $DIR/casts.rs:+2:1: +2:2 - return; // scope 0 at $DIR/casts.rs:+2:2: +2:2 + StorageLive(_2); + StorageLive(_3); + _3 = _1; +- _2 = _3 as *const &u8 (PtrToPtr); ++ _2 = _3; + StorageDead(_3); + _0 = _2; + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/casts.redundant.PreCodegen.after.mir b/tests/mir-opt/casts.redundant.PreCodegen.after.mir index 21a470ea30075..2084f44f24861 100644 --- a/tests/mir-opt/casts.redundant.PreCodegen.after.mir +++ b/tests/mir-opt/casts.redundant.PreCodegen.after.mir @@ -1,14 +1,14 @@ // MIR for `redundant` after PreCodegen fn redundant(_1: *const &u8) -> *const &u8 { - debug x => _1; // in scope 0 at $DIR/casts.rs:+0:30: +0:31 - let mut _0: *const &u8; // return place in scope 0 at $DIR/casts.rs:+0:51: +0:64 - scope 1 (inlined generic_cast::<&u8, &u8>) { // at $DIR/casts.rs:6:5: 6:38 - debug x => _1; // in scope 1 at $DIR/casts.rs:10:23: 10:24 + debug x => _1; + let mut _0: *const &u8; + scope 1 (inlined generic_cast::<&u8, &u8>) { + debug x => _1; } bb0: { - _0 = _1; // scope 0 at $DIR/casts.rs:+1:5: +1:55 - return; // scope 0 at $DIR/casts.rs:+2:2: +2:2 + _0 = _1; + return; } } diff --git a/tests/mir-opt/casts.roundtrip.PreCodegen.after.mir b/tests/mir-opt/casts.roundtrip.PreCodegen.after.mir index 0c793984ceb6c..aca7b12c4c6d2 100644 --- a/tests/mir-opt/casts.roundtrip.PreCodegen.after.mir +++ b/tests/mir-opt/casts.roundtrip.PreCodegen.after.mir @@ -1,15 +1,15 @@ // MIR for `roundtrip` after PreCodegen fn roundtrip(_1: *const u8) -> *const u8 { - debug x => _1; // in scope 0 at $DIR/casts.rs:+0:18: +0:19 - let mut _0: *const u8; // return place in scope 0 at $DIR/casts.rs:+0:35: +0:44 - let mut _2: *mut u8; // in scope 0 at $DIR/casts.rs:+1:5: +1:17 + debug x => _1; + let mut _0: *const u8; + let mut _2: *mut u8; bb0: { - StorageLive(_2); // scope 0 at $DIR/casts.rs:+1:5: +1:17 - _2 = _1 as *mut u8 (PtrToPtr); // scope 0 at $DIR/casts.rs:+1:5: +1:17 - _0 = move _2 as *const u8 (Pointer(MutToConstPointer)); // scope 0 at $DIR/casts.rs:+1:5: +1:17 - StorageDead(_2); // scope 0 at $DIR/casts.rs:+1:16: +1:17 - return; // scope 0 at $DIR/casts.rs:+2:2: +2:2 + StorageLive(_2); + _2 = _1 as *mut u8 (PtrToPtr); + _0 = move _2 as *const u8 (Pointer(MutToConstPointer)); + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/combine_array_len.norm2.InstSimplify.panic-abort.diff b/tests/mir-opt/combine_array_len.norm2.InstSimplify.panic-abort.diff index 33dd4a9026506..3e7d0ce51e2eb 100644 --- a/tests/mir-opt/combine_array_len.norm2.InstSimplify.panic-abort.diff +++ b/tests/mir-opt/combine_array_len.norm2.InstSimplify.panic-abort.diff @@ -2,76 +2,76 @@ + // MIR for `norm2` after InstSimplify fn norm2(_1: [f32; 2]) -> f32 { - debug x => _1; // in scope 0 at $DIR/combine_array_len.rs:+0:10: +0:11 - let mut _0: f32; // return place in scope 0 at $DIR/combine_array_len.rs:+0:26: +0:29 - let _2: f32; // in scope 0 at $DIR/combine_array_len.rs:+1:9: +1:10 - let _3: usize; // in scope 0 at $DIR/combine_array_len.rs:+1:15: +1:16 - let mut _4: usize; // in scope 0 at $DIR/combine_array_len.rs:+1:13: +1:17 - let mut _5: bool; // in scope 0 at $DIR/combine_array_len.rs:+1:13: +1:17 - let _7: usize; // in scope 0 at $DIR/combine_array_len.rs:+2:15: +2:16 - let mut _8: usize; // in scope 0 at $DIR/combine_array_len.rs:+2:13: +2:17 - let mut _9: bool; // in scope 0 at $DIR/combine_array_len.rs:+2:13: +2:17 - let mut _10: f32; // in scope 0 at $DIR/combine_array_len.rs:+3:5: +3:8 - let mut _11: f32; // in scope 0 at $DIR/combine_array_len.rs:+3:5: +3:6 - let mut _12: f32; // in scope 0 at $DIR/combine_array_len.rs:+3:7: +3:8 - let mut _13: f32; // in scope 0 at $DIR/combine_array_len.rs:+3:11: +3:14 - let mut _14: f32; // in scope 0 at $DIR/combine_array_len.rs:+3:11: +3:12 - let mut _15: f32; // in scope 0 at $DIR/combine_array_len.rs:+3:13: +3:14 + debug x => _1; + let mut _0: f32; + let _2: f32; + let _3: usize; + let mut _4: usize; + let mut _5: bool; + let _7: usize; + let mut _8: usize; + let mut _9: bool; + let mut _10: f32; + let mut _11: f32; + let mut _12: f32; + let mut _13: f32; + let mut _14: f32; + let mut _15: f32; scope 1 { - debug a => _2; // in scope 1 at $DIR/combine_array_len.rs:+1:9: +1:10 - let _6: f32; // in scope 1 at $DIR/combine_array_len.rs:+2:9: +2:10 + debug a => _2; + let _6: f32; scope 2 { - debug b => _6; // in scope 2 at $DIR/combine_array_len.rs:+2:9: +2:10 + debug b => _6; } } bb0: { - StorageLive(_2); // scope 0 at $DIR/combine_array_len.rs:+1:9: +1:10 - StorageLive(_3); // scope 0 at $DIR/combine_array_len.rs:+1:15: +1:16 - _3 = const 0_usize; // scope 0 at $DIR/combine_array_len.rs:+1:15: +1:16 -- _4 = Len(_1); // scope 0 at $DIR/combine_array_len.rs:+1:13: +1:17 -+ _4 = const 2_usize; // scope 0 at $DIR/combine_array_len.rs:+1:13: +1:17 - _5 = Lt(_3, _4); // scope 0 at $DIR/combine_array_len.rs:+1:13: +1:17 - assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind unreachable]; // scope 0 at $DIR/combine_array_len.rs:+1:13: +1:17 + StorageLive(_2); + StorageLive(_3); + _3 = const 0_usize; +- _4 = Len(_1); ++ _4 = const 2_usize; + _5 = Lt(_3, _4); + assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind unreachable]; } bb1: { - _2 = _1[_3]; // scope 0 at $DIR/combine_array_len.rs:+1:13: +1:17 - StorageDead(_3); // scope 0 at $DIR/combine_array_len.rs:+1:17: +1:18 - StorageLive(_6); // scope 1 at $DIR/combine_array_len.rs:+2:9: +2:10 - StorageLive(_7); // scope 1 at $DIR/combine_array_len.rs:+2:15: +2:16 - _7 = const 1_usize; // scope 1 at $DIR/combine_array_len.rs:+2:15: +2:16 -- _8 = Len(_1); // scope 1 at $DIR/combine_array_len.rs:+2:13: +2:17 -+ _8 = const 2_usize; // scope 1 at $DIR/combine_array_len.rs:+2:13: +2:17 - _9 = Lt(_7, _8); // scope 1 at $DIR/combine_array_len.rs:+2:13: +2:17 - assert(move _9, "index out of bounds: the length is {} but the index is {}", move _8, _7) -> [success: bb2, unwind unreachable]; // scope 1 at $DIR/combine_array_len.rs:+2:13: +2:17 + _2 = _1[_3]; + StorageDead(_3); + StorageLive(_6); + StorageLive(_7); + _7 = const 1_usize; +- _8 = Len(_1); ++ _8 = const 2_usize; + _9 = Lt(_7, _8); + assert(move _9, "index out of bounds: the length is {} but the index is {}", move _8, _7) -> [success: bb2, unwind unreachable]; } bb2: { - _6 = _1[_7]; // scope 1 at $DIR/combine_array_len.rs:+2:13: +2:17 - StorageDead(_7); // scope 1 at $DIR/combine_array_len.rs:+2:17: +2:18 - StorageLive(_10); // scope 2 at $DIR/combine_array_len.rs:+3:5: +3:8 - StorageLive(_11); // scope 2 at $DIR/combine_array_len.rs:+3:5: +3:6 - _11 = _2; // scope 2 at $DIR/combine_array_len.rs:+3:5: +3:6 - StorageLive(_12); // scope 2 at $DIR/combine_array_len.rs:+3:7: +3:8 - _12 = _2; // scope 2 at $DIR/combine_array_len.rs:+3:7: +3:8 - _10 = Mul(move _11, move _12); // scope 2 at $DIR/combine_array_len.rs:+3:5: +3:8 - StorageDead(_12); // scope 2 at $DIR/combine_array_len.rs:+3:7: +3:8 - StorageDead(_11); // scope 2 at $DIR/combine_array_len.rs:+3:7: +3:8 - StorageLive(_13); // scope 2 at $DIR/combine_array_len.rs:+3:11: +3:14 - StorageLive(_14); // scope 2 at $DIR/combine_array_len.rs:+3:11: +3:12 - _14 = _6; // scope 2 at $DIR/combine_array_len.rs:+3:11: +3:12 - StorageLive(_15); // scope 2 at $DIR/combine_array_len.rs:+3:13: +3:14 - _15 = _6; // scope 2 at $DIR/combine_array_len.rs:+3:13: +3:14 - _13 = Mul(move _14, move _15); // scope 2 at $DIR/combine_array_len.rs:+3:11: +3:14 - StorageDead(_15); // scope 2 at $DIR/combine_array_len.rs:+3:13: +3:14 - StorageDead(_14); // scope 2 at $DIR/combine_array_len.rs:+3:13: +3:14 - _0 = Add(move _10, move _13); // scope 2 at $DIR/combine_array_len.rs:+3:5: +3:14 - StorageDead(_13); // scope 2 at $DIR/combine_array_len.rs:+3:13: +3:14 - StorageDead(_10); // scope 2 at $DIR/combine_array_len.rs:+3:13: +3:14 - StorageDead(_6); // scope 1 at $DIR/combine_array_len.rs:+4:1: +4:2 - StorageDead(_2); // scope 0 at $DIR/combine_array_len.rs:+4:1: +4:2 - return; // scope 0 at $DIR/combine_array_len.rs:+4:2: +4:2 + _6 = _1[_7]; + StorageDead(_7); + StorageLive(_10); + StorageLive(_11); + _11 = _2; + StorageLive(_12); + _12 = _2; + _10 = Mul(move _11, move _12); + StorageDead(_12); + StorageDead(_11); + StorageLive(_13); + StorageLive(_14); + _14 = _6; + StorageLive(_15); + _15 = _6; + _13 = Mul(move _14, move _15); + StorageDead(_15); + StorageDead(_14); + _0 = Add(move _10, move _13); + StorageDead(_13); + StorageDead(_10); + StorageDead(_6); + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/combine_array_len.norm2.InstSimplify.panic-unwind.diff b/tests/mir-opt/combine_array_len.norm2.InstSimplify.panic-unwind.diff index 0777007cefa68..ab7a34f840d5a 100644 --- a/tests/mir-opt/combine_array_len.norm2.InstSimplify.panic-unwind.diff +++ b/tests/mir-opt/combine_array_len.norm2.InstSimplify.panic-unwind.diff @@ -2,76 +2,76 @@ + // MIR for `norm2` after InstSimplify fn norm2(_1: [f32; 2]) -> f32 { - debug x => _1; // in scope 0 at $DIR/combine_array_len.rs:+0:10: +0:11 - let mut _0: f32; // return place in scope 0 at $DIR/combine_array_len.rs:+0:26: +0:29 - let _2: f32; // in scope 0 at $DIR/combine_array_len.rs:+1:9: +1:10 - let _3: usize; // in scope 0 at $DIR/combine_array_len.rs:+1:15: +1:16 - let mut _4: usize; // in scope 0 at $DIR/combine_array_len.rs:+1:13: +1:17 - let mut _5: bool; // in scope 0 at $DIR/combine_array_len.rs:+1:13: +1:17 - let _7: usize; // in scope 0 at $DIR/combine_array_len.rs:+2:15: +2:16 - let mut _8: usize; // in scope 0 at $DIR/combine_array_len.rs:+2:13: +2:17 - let mut _9: bool; // in scope 0 at $DIR/combine_array_len.rs:+2:13: +2:17 - let mut _10: f32; // in scope 0 at $DIR/combine_array_len.rs:+3:5: +3:8 - let mut _11: f32; // in scope 0 at $DIR/combine_array_len.rs:+3:5: +3:6 - let mut _12: f32; // in scope 0 at $DIR/combine_array_len.rs:+3:7: +3:8 - let mut _13: f32; // in scope 0 at $DIR/combine_array_len.rs:+3:11: +3:14 - let mut _14: f32; // in scope 0 at $DIR/combine_array_len.rs:+3:11: +3:12 - let mut _15: f32; // in scope 0 at $DIR/combine_array_len.rs:+3:13: +3:14 + debug x => _1; + let mut _0: f32; + let _2: f32; + let _3: usize; + let mut _4: usize; + let mut _5: bool; + let _7: usize; + let mut _8: usize; + let mut _9: bool; + let mut _10: f32; + let mut _11: f32; + let mut _12: f32; + let mut _13: f32; + let mut _14: f32; + let mut _15: f32; scope 1 { - debug a => _2; // in scope 1 at $DIR/combine_array_len.rs:+1:9: +1:10 - let _6: f32; // in scope 1 at $DIR/combine_array_len.rs:+2:9: +2:10 + debug a => _2; + let _6: f32; scope 2 { - debug b => _6; // in scope 2 at $DIR/combine_array_len.rs:+2:9: +2:10 + debug b => _6; } } bb0: { - StorageLive(_2); // scope 0 at $DIR/combine_array_len.rs:+1:9: +1:10 - StorageLive(_3); // scope 0 at $DIR/combine_array_len.rs:+1:15: +1:16 - _3 = const 0_usize; // scope 0 at $DIR/combine_array_len.rs:+1:15: +1:16 -- _4 = Len(_1); // scope 0 at $DIR/combine_array_len.rs:+1:13: +1:17 -+ _4 = const 2_usize; // scope 0 at $DIR/combine_array_len.rs:+1:13: +1:17 - _5 = Lt(_3, _4); // scope 0 at $DIR/combine_array_len.rs:+1:13: +1:17 - assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> bb1; // scope 0 at $DIR/combine_array_len.rs:+1:13: +1:17 + StorageLive(_2); + StorageLive(_3); + _3 = const 0_usize; +- _4 = Len(_1); ++ _4 = const 2_usize; + _5 = Lt(_3, _4); + assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> bb1; } bb1: { - _2 = _1[_3]; // scope 0 at $DIR/combine_array_len.rs:+1:13: +1:17 - StorageDead(_3); // scope 0 at $DIR/combine_array_len.rs:+1:17: +1:18 - StorageLive(_6); // scope 1 at $DIR/combine_array_len.rs:+2:9: +2:10 - StorageLive(_7); // scope 1 at $DIR/combine_array_len.rs:+2:15: +2:16 - _7 = const 1_usize; // scope 1 at $DIR/combine_array_len.rs:+2:15: +2:16 -- _8 = Len(_1); // scope 1 at $DIR/combine_array_len.rs:+2:13: +2:17 -+ _8 = const 2_usize; // scope 1 at $DIR/combine_array_len.rs:+2:13: +2:17 - _9 = Lt(_7, _8); // scope 1 at $DIR/combine_array_len.rs:+2:13: +2:17 - assert(move _9, "index out of bounds: the length is {} but the index is {}", move _8, _7) -> bb2; // scope 1 at $DIR/combine_array_len.rs:+2:13: +2:17 + _2 = _1[_3]; + StorageDead(_3); + StorageLive(_6); + StorageLive(_7); + _7 = const 1_usize; +- _8 = Len(_1); ++ _8 = const 2_usize; + _9 = Lt(_7, _8); + assert(move _9, "index out of bounds: the length is {} but the index is {}", move _8, _7) -> bb2; } bb2: { - _6 = _1[_7]; // scope 1 at $DIR/combine_array_len.rs:+2:13: +2:17 - StorageDead(_7); // scope 1 at $DIR/combine_array_len.rs:+2:17: +2:18 - StorageLive(_10); // scope 2 at $DIR/combine_array_len.rs:+3:5: +3:8 - StorageLive(_11); // scope 2 at $DIR/combine_array_len.rs:+3:5: +3:6 - _11 = _2; // scope 2 at $DIR/combine_array_len.rs:+3:5: +3:6 - StorageLive(_12); // scope 2 at $DIR/combine_array_len.rs:+3:7: +3:8 - _12 = _2; // scope 2 at $DIR/combine_array_len.rs:+3:7: +3:8 - _10 = Mul(move _11, move _12); // scope 2 at $DIR/combine_array_len.rs:+3:5: +3:8 - StorageDead(_12); // scope 2 at $DIR/combine_array_len.rs:+3:7: +3:8 - StorageDead(_11); // scope 2 at $DIR/combine_array_len.rs:+3:7: +3:8 - StorageLive(_13); // scope 2 at $DIR/combine_array_len.rs:+3:11: +3:14 - StorageLive(_14); // scope 2 at $DIR/combine_array_len.rs:+3:11: +3:12 - _14 = _6; // scope 2 at $DIR/combine_array_len.rs:+3:11: +3:12 - StorageLive(_15); // scope 2 at $DIR/combine_array_len.rs:+3:13: +3:14 - _15 = _6; // scope 2 at $DIR/combine_array_len.rs:+3:13: +3:14 - _13 = Mul(move _14, move _15); // scope 2 at $DIR/combine_array_len.rs:+3:11: +3:14 - StorageDead(_15); // scope 2 at $DIR/combine_array_len.rs:+3:13: +3:14 - StorageDead(_14); // scope 2 at $DIR/combine_array_len.rs:+3:13: +3:14 - _0 = Add(move _10, move _13); // scope 2 at $DIR/combine_array_len.rs:+3:5: +3:14 - StorageDead(_13); // scope 2 at $DIR/combine_array_len.rs:+3:13: +3:14 - StorageDead(_10); // scope 2 at $DIR/combine_array_len.rs:+3:13: +3:14 - StorageDead(_6); // scope 1 at $DIR/combine_array_len.rs:+4:1: +4:2 - StorageDead(_2); // scope 0 at $DIR/combine_array_len.rs:+4:1: +4:2 - return; // scope 0 at $DIR/combine_array_len.rs:+4:2: +4:2 + _6 = _1[_7]; + StorageDead(_7); + StorageLive(_10); + StorageLive(_11); + _11 = _2; + StorageLive(_12); + _12 = _2; + _10 = Mul(move _11, move _12); + StorageDead(_12); + StorageDead(_11); + StorageLive(_13); + StorageLive(_14); + _14 = _6; + StorageLive(_15); + _15 = _6; + _13 = Mul(move _14, move _15); + StorageDead(_15); + StorageDead(_14); + _0 = Add(move _10, move _13); + StorageDead(_13); + StorageDead(_10); + StorageDead(_6); + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/combine_clone_of_primitives.{impl#0}-clone.InstSimplify.panic-abort.diff b/tests/mir-opt/combine_clone_of_primitives.{impl#0}-clone.InstSimplify.panic-abort.diff index 6ca960935ba57..124c2dc7e4bbf 100644 --- a/tests/mir-opt/combine_clone_of_primitives.{impl#0}-clone.InstSimplify.panic-abort.diff +++ b/tests/mir-opt/combine_clone_of_primitives.{impl#0}-clone.InstSimplify.panic-abort.diff @@ -2,73 +2,64 @@ + // MIR for `::clone` after InstSimplify fn ::clone(_1: &MyThing) -> MyThing { - debug self => _1; // in scope 0 at $DIR/combine_clone_of_primitives.rs:+0:10: +0:15 - let mut _0: MyThing; // return place in scope 0 at $DIR/combine_clone_of_primitives.rs:+0:10: +0:15 - let mut _2: T; // in scope 0 at $DIR/combine_clone_of_primitives.rs:8:5: 8:9 - let mut _3: &T; // in scope 0 at $DIR/combine_clone_of_primitives.rs:8:5: 8:9 - let _4: &T; // in scope 0 at $DIR/combine_clone_of_primitives.rs:8:5: 8:9 - let mut _5: u64; // in scope 0 at $DIR/combine_clone_of_primitives.rs:9:5: 9:11 - let mut _6: &u64; // in scope 0 at $DIR/combine_clone_of_primitives.rs:9:5: 9:11 - let _7: &u64; // in scope 0 at $DIR/combine_clone_of_primitives.rs:9:5: 9:11 - let mut _8: [f32; 3]; // in scope 0 at $DIR/combine_clone_of_primitives.rs:10:5: 10:16 - let mut _9: &[f32; 3]; // in scope 0 at $DIR/combine_clone_of_primitives.rs:10:5: 10:16 - let _10: &[f32; 3]; // in scope 0 at $DIR/combine_clone_of_primitives.rs:10:5: 10:16 + debug self => _1; + let mut _0: MyThing; + let mut _2: T; + let mut _3: &T; + let _4: &T; + let mut _5: u64; + let mut _6: &u64; + let _7: &u64; + let mut _8: [f32; 3]; + let mut _9: &[f32; 3]; + let _10: &[f32; 3]; bb0: { - StorageLive(_2); // scope 0 at $DIR/combine_clone_of_primitives.rs:8:5: 8:9 - StorageLive(_3); // scope 0 at $DIR/combine_clone_of_primitives.rs:8:5: 8:9 - StorageLive(_4); // scope 0 at $DIR/combine_clone_of_primitives.rs:8:5: 8:9 - _4 = &((*_1).0: T); // scope 0 at $DIR/combine_clone_of_primitives.rs:8:5: 8:9 -- _3 = &(*_4); // scope 0 at $DIR/combine_clone_of_primitives.rs:8:5: 8:9 -+ _3 = _4; // scope 0 at $DIR/combine_clone_of_primitives.rs:8:5: 8:9 - _2 = ::clone(move _3) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/combine_clone_of_primitives.rs:8:5: 8:9 - // mir::Constant - // + span: $DIR/combine_clone_of_primitives.rs:8:5: 8:9 - // + literal: Const { ty: for<'a> fn(&'a T) -> T {::clone}, val: Value() } + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + _4 = &((*_1).0: T); +- _3 = &(*_4); ++ _3 = _4; + _2 = ::clone(move _3) -> [return: bb1, unwind unreachable]; } bb1: { - StorageDead(_3); // scope 0 at $DIR/combine_clone_of_primitives.rs:8:8: 8:9 - StorageLive(_5); // scope 0 at $DIR/combine_clone_of_primitives.rs:9:5: 9:11 - StorageLive(_6); // scope 0 at $DIR/combine_clone_of_primitives.rs:9:5: 9:11 - StorageLive(_7); // scope 0 at $DIR/combine_clone_of_primitives.rs:9:5: 9:11 - _7 = &((*_1).1: u64); // scope 0 at $DIR/combine_clone_of_primitives.rs:9:5: 9:11 -- _6 = &(*_7); // scope 0 at $DIR/combine_clone_of_primitives.rs:9:5: 9:11 -- _5 = ::clone(move _6) -> [return: bb2, unwind unreachable]; // scope 0 at $DIR/combine_clone_of_primitives.rs:9:5: 9:11 -- // mir::Constant -- // + span: $DIR/combine_clone_of_primitives.rs:9:5: 9:11 -- // + literal: Const { ty: for<'a> fn(&'a u64) -> u64 {::clone}, val: Value() } -+ _6 = _7; // scope 0 at $DIR/combine_clone_of_primitives.rs:9:5: 9:11 -+ _5 = (*_6); // scope 0 at $DIR/combine_clone_of_primitives.rs:9:5: 9:11 -+ goto -> bb2; // scope 0 at $DIR/combine_clone_of_primitives.rs:9:5: 9:11 + StorageDead(_3); + StorageLive(_5); + StorageLive(_6); + StorageLive(_7); + _7 = &((*_1).1: u64); +- _6 = &(*_7); +- _5 = ::clone(move _6) -> [return: bb2, unwind unreachable]; ++ _6 = _7; ++ _5 = (*_6); ++ goto -> bb2; } bb2: { - StorageDead(_6); // scope 0 at $DIR/combine_clone_of_primitives.rs:9:10: 9:11 - StorageLive(_8); // scope 0 at $DIR/combine_clone_of_primitives.rs:10:5: 10:16 - StorageLive(_9); // scope 0 at $DIR/combine_clone_of_primitives.rs:10:5: 10:16 - StorageLive(_10); // scope 0 at $DIR/combine_clone_of_primitives.rs:10:5: 10:16 - _10 = &((*_1).2: [f32; 3]); // scope 0 at $DIR/combine_clone_of_primitives.rs:10:5: 10:16 -- _9 = &(*_10); // scope 0 at $DIR/combine_clone_of_primitives.rs:10:5: 10:16 -- _8 = <[f32; 3] as Clone>::clone(move _9) -> [return: bb3, unwind unreachable]; // scope 0 at $DIR/combine_clone_of_primitives.rs:10:5: 10:16 -- // mir::Constant -- // + span: $DIR/combine_clone_of_primitives.rs:10:5: 10:16 -- // + literal: Const { ty: for<'a> fn(&'a [f32; 3]) -> [f32; 3] {<[f32; 3] as Clone>::clone}, val: Value() } -+ _9 = _10; // scope 0 at $DIR/combine_clone_of_primitives.rs:10:5: 10:16 -+ _8 = (*_9); // scope 0 at $DIR/combine_clone_of_primitives.rs:10:5: 10:16 -+ goto -> bb3; // scope 0 at $DIR/combine_clone_of_primitives.rs:10:5: 10:16 + StorageDead(_6); + StorageLive(_8); + StorageLive(_9); + StorageLive(_10); + _10 = &((*_1).2: [f32; 3]); +- _9 = &(*_10); +- _8 = <[f32; 3] as Clone>::clone(move _9) -> [return: bb3, unwind unreachable]; ++ _9 = _10; ++ _8 = (*_9); ++ goto -> bb3; } bb3: { - StorageDead(_9); // scope 0 at $DIR/combine_clone_of_primitives.rs:10:15: 10:16 - _0 = MyThing:: { v: move _2, i: move _5, a: move _8 }; // scope 0 at $DIR/combine_clone_of_primitives.rs:+0:10: +0:15 - StorageDead(_8); // scope 0 at $DIR/combine_clone_of_primitives.rs:+0:14: +0:15 - StorageDead(_5); // scope 0 at $DIR/combine_clone_of_primitives.rs:+0:14: +0:15 - StorageDead(_2); // scope 0 at $DIR/combine_clone_of_primitives.rs:+0:14: +0:15 - StorageDead(_10); // scope 0 at $DIR/combine_clone_of_primitives.rs:+0:14: +0:15 - StorageDead(_7); // scope 0 at $DIR/combine_clone_of_primitives.rs:+0:14: +0:15 - StorageDead(_4); // scope 0 at $DIR/combine_clone_of_primitives.rs:+0:14: +0:15 - return; // scope 0 at $DIR/combine_clone_of_primitives.rs:+0:15: +0:15 + StorageDead(_9); + _0 = MyThing:: { v: move _2, i: move _5, a: move _8 }; + StorageDead(_8); + StorageDead(_5); + StorageDead(_2); + StorageDead(_10); + StorageDead(_7); + StorageDead(_4); + return; } } diff --git a/tests/mir-opt/combine_clone_of_primitives.{impl#0}-clone.InstSimplify.panic-unwind.diff b/tests/mir-opt/combine_clone_of_primitives.{impl#0}-clone.InstSimplify.panic-unwind.diff index bb0811a7abb2d..ee0f9fbf82894 100644 --- a/tests/mir-opt/combine_clone_of_primitives.{impl#0}-clone.InstSimplify.panic-unwind.diff +++ b/tests/mir-opt/combine_clone_of_primitives.{impl#0}-clone.InstSimplify.panic-unwind.diff @@ -2,81 +2,72 @@ + // MIR for `::clone` after InstSimplify fn ::clone(_1: &MyThing) -> MyThing { - debug self => _1; // in scope 0 at $DIR/combine_clone_of_primitives.rs:+0:10: +0:15 - let mut _0: MyThing; // return place in scope 0 at $DIR/combine_clone_of_primitives.rs:+0:10: +0:15 - let mut _2: T; // in scope 0 at $DIR/combine_clone_of_primitives.rs:8:5: 8:9 - let mut _3: &T; // in scope 0 at $DIR/combine_clone_of_primitives.rs:8:5: 8:9 - let _4: &T; // in scope 0 at $DIR/combine_clone_of_primitives.rs:8:5: 8:9 - let mut _5: u64; // in scope 0 at $DIR/combine_clone_of_primitives.rs:9:5: 9:11 - let mut _6: &u64; // in scope 0 at $DIR/combine_clone_of_primitives.rs:9:5: 9:11 - let _7: &u64; // in scope 0 at $DIR/combine_clone_of_primitives.rs:9:5: 9:11 - let mut _8: [f32; 3]; // in scope 0 at $DIR/combine_clone_of_primitives.rs:10:5: 10:16 - let mut _9: &[f32; 3]; // in scope 0 at $DIR/combine_clone_of_primitives.rs:10:5: 10:16 - let _10: &[f32; 3]; // in scope 0 at $DIR/combine_clone_of_primitives.rs:10:5: 10:16 + debug self => _1; + let mut _0: MyThing; + let mut _2: T; + let mut _3: &T; + let _4: &T; + let mut _5: u64; + let mut _6: &u64; + let _7: &u64; + let mut _8: [f32; 3]; + let mut _9: &[f32; 3]; + let _10: &[f32; 3]; bb0: { - StorageLive(_2); // scope 0 at $DIR/combine_clone_of_primitives.rs:8:5: 8:9 - StorageLive(_3); // scope 0 at $DIR/combine_clone_of_primitives.rs:8:5: 8:9 - StorageLive(_4); // scope 0 at $DIR/combine_clone_of_primitives.rs:8:5: 8:9 - _4 = &((*_1).0: T); // scope 0 at $DIR/combine_clone_of_primitives.rs:8:5: 8:9 -- _3 = &(*_4); // scope 0 at $DIR/combine_clone_of_primitives.rs:8:5: 8:9 -+ _3 = _4; // scope 0 at $DIR/combine_clone_of_primitives.rs:8:5: 8:9 - _2 = ::clone(move _3) -> bb1; // scope 0 at $DIR/combine_clone_of_primitives.rs:8:5: 8:9 - // mir::Constant - // + span: $DIR/combine_clone_of_primitives.rs:8:5: 8:9 - // + literal: Const { ty: for<'a> fn(&'a T) -> T {::clone}, val: Value() } + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + _4 = &((*_1).0: T); +- _3 = &(*_4); ++ _3 = _4; + _2 = ::clone(move _3) -> bb1; } bb1: { - StorageDead(_3); // scope 0 at $DIR/combine_clone_of_primitives.rs:8:8: 8:9 - StorageLive(_5); // scope 0 at $DIR/combine_clone_of_primitives.rs:9:5: 9:11 - StorageLive(_6); // scope 0 at $DIR/combine_clone_of_primitives.rs:9:5: 9:11 - StorageLive(_7); // scope 0 at $DIR/combine_clone_of_primitives.rs:9:5: 9:11 - _7 = &((*_1).1: u64); // scope 0 at $DIR/combine_clone_of_primitives.rs:9:5: 9:11 -- _6 = &(*_7); // scope 0 at $DIR/combine_clone_of_primitives.rs:9:5: 9:11 -- _5 = ::clone(move _6) -> [return: bb2, unwind: bb4]; // scope 0 at $DIR/combine_clone_of_primitives.rs:9:5: 9:11 -- // mir::Constant -- // + span: $DIR/combine_clone_of_primitives.rs:9:5: 9:11 -- // + literal: Const { ty: for<'a> fn(&'a u64) -> u64 {::clone}, val: Value() } -+ _6 = _7; // scope 0 at $DIR/combine_clone_of_primitives.rs:9:5: 9:11 -+ _5 = (*_6); // scope 0 at $DIR/combine_clone_of_primitives.rs:9:5: 9:11 -+ goto -> bb2; // scope 0 at $DIR/combine_clone_of_primitives.rs:9:5: 9:11 + StorageDead(_3); + StorageLive(_5); + StorageLive(_6); + StorageLive(_7); + _7 = &((*_1).1: u64); +- _6 = &(*_7); +- _5 = ::clone(move _6) -> [return: bb2, unwind: bb4]; ++ _6 = _7; ++ _5 = (*_6); ++ goto -> bb2; } bb2: { - StorageDead(_6); // scope 0 at $DIR/combine_clone_of_primitives.rs:9:10: 9:11 - StorageLive(_8); // scope 0 at $DIR/combine_clone_of_primitives.rs:10:5: 10:16 - StorageLive(_9); // scope 0 at $DIR/combine_clone_of_primitives.rs:10:5: 10:16 - StorageLive(_10); // scope 0 at $DIR/combine_clone_of_primitives.rs:10:5: 10:16 - _10 = &((*_1).2: [f32; 3]); // scope 0 at $DIR/combine_clone_of_primitives.rs:10:5: 10:16 -- _9 = &(*_10); // scope 0 at $DIR/combine_clone_of_primitives.rs:10:5: 10:16 -- _8 = <[f32; 3] as Clone>::clone(move _9) -> [return: bb3, unwind: bb4]; // scope 0 at $DIR/combine_clone_of_primitives.rs:10:5: 10:16 -- // mir::Constant -- // + span: $DIR/combine_clone_of_primitives.rs:10:5: 10:16 -- // + literal: Const { ty: for<'a> fn(&'a [f32; 3]) -> [f32; 3] {<[f32; 3] as Clone>::clone}, val: Value() } -+ _9 = _10; // scope 0 at $DIR/combine_clone_of_primitives.rs:10:5: 10:16 -+ _8 = (*_9); // scope 0 at $DIR/combine_clone_of_primitives.rs:10:5: 10:16 -+ goto -> bb3; // scope 0 at $DIR/combine_clone_of_primitives.rs:10:5: 10:16 + StorageDead(_6); + StorageLive(_8); + StorageLive(_9); + StorageLive(_10); + _10 = &((*_1).2: [f32; 3]); +- _9 = &(*_10); +- _8 = <[f32; 3] as Clone>::clone(move _9) -> [return: bb3, unwind: bb4]; ++ _9 = _10; ++ _8 = (*_9); ++ goto -> bb3; } bb3: { - StorageDead(_9); // scope 0 at $DIR/combine_clone_of_primitives.rs:10:15: 10:16 - _0 = MyThing:: { v: move _2, i: move _5, a: move _8 }; // scope 0 at $DIR/combine_clone_of_primitives.rs:+0:10: +0:15 - StorageDead(_8); // scope 0 at $DIR/combine_clone_of_primitives.rs:+0:14: +0:15 - StorageDead(_5); // scope 0 at $DIR/combine_clone_of_primitives.rs:+0:14: +0:15 - StorageDead(_2); // scope 0 at $DIR/combine_clone_of_primitives.rs:+0:14: +0:15 - StorageDead(_10); // scope 0 at $DIR/combine_clone_of_primitives.rs:+0:14: +0:15 - StorageDead(_7); // scope 0 at $DIR/combine_clone_of_primitives.rs:+0:14: +0:15 - StorageDead(_4); // scope 0 at $DIR/combine_clone_of_primitives.rs:+0:14: +0:15 - return; // scope 0 at $DIR/combine_clone_of_primitives.rs:+0:15: +0:15 + StorageDead(_9); + _0 = MyThing:: { v: move _2, i: move _5, a: move _8 }; + StorageDead(_8); + StorageDead(_5); + StorageDead(_2); + StorageDead(_10); + StorageDead(_7); + StorageDead(_4); + return; } bb4 (cleanup): { - drop(_2) -> [return: bb5, unwind terminate]; // scope 0 at $DIR/combine_clone_of_primitives.rs:+0:14: +0:15 + drop(_2) -> [return: bb5, unwind terminate]; } bb5 (cleanup): { - resume; // scope 0 at $DIR/combine_clone_of_primitives.rs:+0:10: +0:15 + resume; } } diff --git a/tests/mir-opt/combine_transmutes.adt_transmutes.InstSimplify.diff b/tests/mir-opt/combine_transmutes.adt_transmutes.InstSimplify.diff index 15117ea890e38..cb623e83f5298 100644 --- a/tests/mir-opt/combine_transmutes.adt_transmutes.InstSimplify.diff +++ b/tests/mir-opt/combine_transmutes.adt_transmutes.InstSimplify.diff @@ -2,31 +2,31 @@ + // MIR for `adt_transmutes` after InstSimplify fn adt_transmutes() -> () { - let mut _0: (); // return place in scope 0 at $DIR/combine_transmutes.rs:+0:32: +0:32 - let _1: u8; // in scope 0 at $DIR/combine_transmutes.rs:+1:9: +1:11 - let mut _2: std::option::Option; // in scope 0 at $DIR/combine_transmutes.rs:+1:28: +1:58 - let mut _4: std::num::Wrapping; // in scope 0 at $DIR/combine_transmutes.rs:+2:29: +2:54 - let mut _6: std::num::Wrapping; // in scope 0 at $DIR/combine_transmutes.rs:+3:29: +3:54 - let mut _8: Union32; // in scope 0 at $DIR/combine_transmutes.rs:+4:29: +4:47 - let mut _10: Union32; // in scope 0 at $DIR/combine_transmutes.rs:+5:29: +5:47 - let mut _12: std::mem::MaybeUninit; // in scope 0 at $DIR/combine_transmutes.rs:+6:46: +6:77 + let mut _0: (); + let _1: u8; + let mut _2: std::option::Option; + let mut _4: std::num::Wrapping; + let mut _6: std::num::Wrapping; + let mut _8: Union32; + let mut _10: Union32; + let mut _12: std::mem::MaybeUninit; scope 1 { - debug _a => _1; // in scope 1 at $DIR/combine_transmutes.rs:+1:9: +1:11 - let _3: i16; // in scope 1 at $DIR/combine_transmutes.rs:+2:9: +2:11 + debug _a => _1; + let _3: i16; scope 2 { - debug _a => _3; // in scope 2 at $DIR/combine_transmutes.rs:+2:9: +2:11 - let _5: u16; // in scope 2 at $DIR/combine_transmutes.rs:+3:9: +3:11 + debug _a => _3; + let _5: u16; scope 3 { - debug _a => _5; // in scope 3 at $DIR/combine_transmutes.rs:+3:9: +3:11 - let _7: u32; // in scope 3 at $DIR/combine_transmutes.rs:+4:9: +4:11 + debug _a => _5; + let _7: u32; scope 4 { - debug _a => _7; // in scope 4 at $DIR/combine_transmutes.rs:+4:9: +4:11 - let _9: i32; // in scope 4 at $DIR/combine_transmutes.rs:+5:9: +5:11 + debug _a => _7; + let _9: i32; scope 5 { - debug _a => _9; // in scope 5 at $DIR/combine_transmutes.rs:+5:9: +5:11 - let _11: std::mem::ManuallyDrop; // in scope 5 at $DIR/combine_transmutes.rs:+6:9: +6:11 + debug _a => _9; + let _11: std::mem::ManuallyDrop; scope 6 { - debug _a => _11; // in scope 6 at $DIR/combine_transmutes.rs:+6:9: +6:11 + debug _a => _11; } } } @@ -35,56 +35,49 @@ } bb0: { - StorageLive(_1); // scope 0 at $DIR/combine_transmutes.rs:+1:9: +1:11 - StorageLive(_2); // scope 0 at $DIR/combine_transmutes.rs:+1:28: +1:58 - _2 = Option::::Some(const _); // scope 0 at $DIR/combine_transmutes.rs:+1:28: +1:58 - // mir::Constant - // + span: $DIR/combine_transmutes.rs:35:33: 35:57 - // + literal: Const { ty: NonZeroU8, val: Unevaluated(NonZeroU8::MAX, [], None) } - _1 = move _2 as u8 (Transmute); // scope 0 at $DIR/combine_transmutes.rs:+1:18: +1:59 - StorageDead(_2); // scope 0 at $DIR/combine_transmutes.rs:+1:58: +1:59 - StorageLive(_3); // scope 1 at $DIR/combine_transmutes.rs:+2:9: +2:11 - StorageLive(_4); // scope 1 at $DIR/combine_transmutes.rs:+2:29: +2:54 - _4 = Wrapping::(const 0_i16); // scope 1 at $DIR/combine_transmutes.rs:+2:29: +2:54 -- _3 = move _4 as i16 (Transmute); // scope 1 at $DIR/combine_transmutes.rs:+2:19: +2:55 -+ _3 = move (_4.0: i16); // scope 1 at $DIR/combine_transmutes.rs:+2:19: +2:55 - StorageDead(_4); // scope 1 at $DIR/combine_transmutes.rs:+2:54: +2:55 - StorageLive(_5); // scope 2 at $DIR/combine_transmutes.rs:+3:9: +3:11 - StorageLive(_6); // scope 2 at $DIR/combine_transmutes.rs:+3:29: +3:54 - _6 = Wrapping::(const 0_i16); // scope 2 at $DIR/combine_transmutes.rs:+3:29: +3:54 - _5 = move _6 as u16 (Transmute); // scope 2 at $DIR/combine_transmutes.rs:+3:19: +3:55 - StorageDead(_6); // scope 2 at $DIR/combine_transmutes.rs:+3:54: +3:55 - StorageLive(_7); // scope 3 at $DIR/combine_transmutes.rs:+4:9: +4:11 - StorageLive(_8); // scope 3 at $DIR/combine_transmutes.rs:+4:29: +4:47 - _8 = Union32 { u32: const 0_i32 }; // scope 3 at $DIR/combine_transmutes.rs:+4:29: +4:47 - _7 = move _8 as u32 (Transmute); // scope 3 at $DIR/combine_transmutes.rs:+4:19: +4:48 - StorageDead(_8); // scope 3 at $DIR/combine_transmutes.rs:+4:47: +4:48 - StorageLive(_9); // scope 4 at $DIR/combine_transmutes.rs:+5:9: +5:11 - StorageLive(_10); // scope 4 at $DIR/combine_transmutes.rs:+5:29: +5:47 - _10 = Union32 { u32: const 0_u32 }; // scope 4 at $DIR/combine_transmutes.rs:+5:29: +5:47 - _9 = move _10 as i32 (Transmute); // scope 4 at $DIR/combine_transmutes.rs:+5:19: +5:48 - StorageDead(_10); // scope 4 at $DIR/combine_transmutes.rs:+5:47: +5:48 - StorageLive(_11); // scope 5 at $DIR/combine_transmutes.rs:+6:9: +6:11 - StorageLive(_12); // scope 5 at $DIR/combine_transmutes.rs:+6:46: +6:77 - _12 = MaybeUninit::::uninit() -> [return: bb1, unwind unreachable]; // scope 5 at $DIR/combine_transmutes.rs:+6:46: +6:77 - // mir::Constant - // + span: $DIR/combine_transmutes.rs:40:46: 40:75 - // + user_ty: UserType(11) - // + literal: Const { ty: fn() -> MaybeUninit {MaybeUninit::::uninit}, val: Value() } + StorageLive(_1); + StorageLive(_2); + _2 = Option::::Some(const _); + _1 = move _2 as u8 (Transmute); + StorageDead(_2); + StorageLive(_3); + StorageLive(_4); + _4 = Wrapping::(const 0_i16); +- _3 = move _4 as i16 (Transmute); ++ _3 = move (_4.0: i16); + StorageDead(_4); + StorageLive(_5); + StorageLive(_6); + _6 = Wrapping::(const 0_i16); + _5 = move _6 as u16 (Transmute); + StorageDead(_6); + StorageLive(_7); + StorageLive(_8); + _8 = Union32 { u32: const 0_i32 }; + _7 = move _8 as u32 (Transmute); + StorageDead(_8); + StorageLive(_9); + StorageLive(_10); + _10 = Union32 { u32: const 0_u32 }; + _9 = move _10 as i32 (Transmute); + StorageDead(_10); + StorageLive(_11); + StorageLive(_12); + _12 = MaybeUninit::::uninit() -> [return: bb1, unwind unreachable]; } bb1: { -- _11 = move _12 as std::mem::ManuallyDrop (Transmute); // scope 5 at $DIR/combine_transmutes.rs:+6:36: +6:78 -+ _11 = move (_12.1: std::mem::ManuallyDrop); // scope 5 at $DIR/combine_transmutes.rs:+6:36: +6:78 - StorageDead(_12); // scope 5 at $DIR/combine_transmutes.rs:+6:77: +6:78 - _0 = const (); // scope 0 at $DIR/combine_transmutes.rs:+0:32: +7:2 - StorageDead(_11); // scope 5 at $DIR/combine_transmutes.rs:+7:1: +7:2 - StorageDead(_9); // scope 4 at $DIR/combine_transmutes.rs:+7:1: +7:2 - StorageDead(_7); // scope 3 at $DIR/combine_transmutes.rs:+7:1: +7:2 - StorageDead(_5); // scope 2 at $DIR/combine_transmutes.rs:+7:1: +7:2 - StorageDead(_3); // scope 1 at $DIR/combine_transmutes.rs:+7:1: +7:2 - StorageDead(_1); // scope 0 at $DIR/combine_transmutes.rs:+7:1: +7:2 - return; // scope 0 at $DIR/combine_transmutes.rs:+7:2: +7:2 +- _11 = move _12 as std::mem::ManuallyDrop (Transmute); ++ _11 = move (_12.1: std::mem::ManuallyDrop); + StorageDead(_12); + _0 = const (); + StorageDead(_11); + StorageDead(_9); + StorageDead(_7); + StorageDead(_5); + StorageDead(_3); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/combine_transmutes.identity_transmutes.InstSimplify.diff b/tests/mir-opt/combine_transmutes.identity_transmutes.InstSimplify.diff index 57d9f4b14023e..58ae5919071af 100644 --- a/tests/mir-opt/combine_transmutes.identity_transmutes.InstSimplify.diff +++ b/tests/mir-opt/combine_transmutes.identity_transmutes.InstSimplify.diff @@ -2,42 +2,38 @@ + // MIR for `identity_transmutes` after InstSimplify fn identity_transmutes() -> () { - let mut _0: (); // return place in scope 0 at $DIR/combine_transmutes.rs:+0:37: +0:37 - let _1: i32; // in scope 0 at $DIR/combine_transmutes.rs:+2:9: +2:11 - let mut _3: std::vec::Vec; // in scope 0 at $DIR/combine_transmutes.rs:+3:46: +3:56 + let mut _0: (); + let _1: i32; + let mut _3: std::vec::Vec; scope 1 { - debug _a => _1; // in scope 1 at $DIR/combine_transmutes.rs:+2:9: +2:11 - let _2: std::vec::Vec; // in scope 1 at $DIR/combine_transmutes.rs:+3:9: +3:11 + debug _a => _1; + let _2: std::vec::Vec; scope 2 { - debug _a => _2; // in scope 2 at $DIR/combine_transmutes.rs:+3:9: +3:11 + debug _a => _2; } } bb0: { - StorageLive(_1); // scope 0 at $DIR/combine_transmutes.rs:+2:9: +2:11 -- _1 = const 1_i32 as i32 (Transmute); // scope 0 at $DIR/combine_transmutes.rs:+2:14: +2:38 -+ _1 = const 1_i32; // scope 0 at $DIR/combine_transmutes.rs:+2:14: +2:38 - StorageLive(_2); // scope 1 at $DIR/combine_transmutes.rs:+3:9: +3:11 - StorageLive(_3); // scope 1 at $DIR/combine_transmutes.rs:+3:46: +3:56 - _3 = Vec::::new() -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/combine_transmutes.rs:+3:46: +3:56 - // mir::Constant - // + span: $DIR/combine_transmutes.rs:15:46: 15:54 - // + user_ty: UserType(0) - // + literal: Const { ty: fn() -> Vec {Vec::::new}, val: Value() } + StorageLive(_1); +- _1 = const 1_i32 as i32 (Transmute); ++ _1 = const 1_i32; + StorageLive(_2); + StorageLive(_3); + _3 = Vec::::new() -> [return: bb1, unwind unreachable]; } bb1: { -- _2 = move _3 as std::vec::Vec (Transmute); // scope 1 at $DIR/combine_transmutes.rs:+3:14: +3:57 -+ _2 = move _3; // scope 1 at $DIR/combine_transmutes.rs:+3:14: +3:57 - StorageDead(_3); // scope 1 at $DIR/combine_transmutes.rs:+3:56: +3:57 - _0 = const (); // scope 0 at $DIR/combine_transmutes.rs:+0:37: +4:2 - drop(_2) -> [return: bb2, unwind unreachable]; // scope 1 at $DIR/combine_transmutes.rs:+4:1: +4:2 +- _2 = move _3 as std::vec::Vec (Transmute); ++ _2 = move _3; + StorageDead(_3); + _0 = const (); + drop(_2) -> [return: bb2, unwind unreachable]; } bb2: { - StorageDead(_2); // scope 1 at $DIR/combine_transmutes.rs:+4:1: +4:2 - StorageDead(_1); // scope 0 at $DIR/combine_transmutes.rs:+4:1: +4:2 - return; // scope 0 at $DIR/combine_transmutes.rs:+4:2: +4:2 + StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/combine_transmutes.integer_transmutes.InstSimplify.diff b/tests/mir-opt/combine_transmutes.integer_transmutes.InstSimplify.diff index ec7c982c151e9..8eff802dd3c4b 100644 --- a/tests/mir-opt/combine_transmutes.integer_transmutes.InstSimplify.diff +++ b/tests/mir-opt/combine_transmutes.integer_transmutes.InstSimplify.diff @@ -2,23 +2,23 @@ + // MIR for `integer_transmutes` after InstSimplify fn integer_transmutes() -> () { - let mut _0: (); // return place in scope 0 at $DIR/combine_transmutes.rs:+0:36: +0:36 - let mut _1: u32; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _2: i64; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _3: i64; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _4: u32; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _5: usize; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL + let mut _0: (); + let mut _1: u32; + let mut _2: i64; + let mut _3: i64; + let mut _4: u32; + let mut _5: usize; bb0: { -- _1 = const 1_i32 as u32 (Transmute); // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL -+ _1 = const 1_i32 as u32 (IntToInt); // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - _2 = const 1_i32 as i64 (Transmute); // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL -- _3 = const 1_u64 as i64 (Transmute); // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL -+ _3 = const 1_u64 as i64 (IntToInt); // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - _4 = const 1_u64 as u32 (Transmute); // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL -- _5 = const 1_isize as usize (Transmute); // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL -+ _5 = const 1_isize as usize (IntToInt); // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - return; // scope 0 at $DIR/combine_transmutes.rs:+8:13: +8:21 +- _1 = const 1_i32 as u32 (Transmute); ++ _1 = const 1_i32 as u32 (IntToInt); + _2 = const 1_i32 as i64 (Transmute); +- _3 = const 1_u64 as i64 (Transmute); ++ _3 = const 1_u64 as i64 (IntToInt); + _4 = const 1_u64 as u32 (Transmute); +- _5 = const 1_isize as usize (Transmute); ++ _5 = const 1_isize as usize (IntToInt); + return; } } diff --git a/tests/mir-opt/const_allocation.main.ConstProp.after.32bit.mir b/tests/mir-opt/const_allocation.main.ConstProp.after.32bit.mir index 169e99deee755..3797dbabb3c1b 100644 --- a/tests/mir-opt/const_allocation.main.ConstProp.after.32bit.mir +++ b/tests/mir-opt/const_allocation.main.ConstProp.after.32bit.mir @@ -1,22 +1,19 @@ // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/const_allocation.rs:+0:11: +0:11 - let _1: &[(std::option::Option, &[&str])]; // in scope 0 at $DIR/const_allocation.rs:+1:5: +1:8 - let mut _2: &&[(std::option::Option, &[&str])]; // in scope 0 at $DIR/const_allocation.rs:+1:5: +1:8 + let mut _0: (); + let _1: &[(std::option::Option, &[&str])]; + let mut _2: &&[(std::option::Option, &[&str])]; bb0: { - StorageLive(_1); // scope 0 at $DIR/const_allocation.rs:+1:5: +1:8 - StorageLive(_2); // scope 0 at $DIR/const_allocation.rs:+1:5: +1:8 - _2 = const {alloc1: &&[(Option, &[&str])]}; // scope 0 at $DIR/const_allocation.rs:+1:5: +1:8 - // mir::Constant - // + span: $DIR/const_allocation.rs:9:5: 9:8 - // + literal: Const { ty: &&[(Option, &[&str])], val: Value(Scalar(alloc1)) } - _1 = (*_2); // scope 0 at $DIR/const_allocation.rs:+1:5: +1:8 - StorageDead(_2); // scope 0 at $DIR/const_allocation.rs:+1:8: +1:9 - StorageDead(_1); // scope 0 at $DIR/const_allocation.rs:+1:8: +1:9 - _0 = const (); // scope 0 at $DIR/const_allocation.rs:+0:11: +2:2 - return; // scope 0 at $DIR/const_allocation.rs:+2:2: +2:2 + StorageLive(_1); + StorageLive(_2); + _2 = const {alloc1: &&[(Option, &[&str])]}; + _1 = (*_2); + StorageDead(_2); + StorageDead(_1); + _0 = const (); + return; } } diff --git a/tests/mir-opt/const_allocation.main.ConstProp.after.64bit.mir b/tests/mir-opt/const_allocation.main.ConstProp.after.64bit.mir index db1f9648843ea..dc16c064009d7 100644 --- a/tests/mir-opt/const_allocation.main.ConstProp.after.64bit.mir +++ b/tests/mir-opt/const_allocation.main.ConstProp.after.64bit.mir @@ -1,22 +1,19 @@ // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/const_allocation.rs:+0:11: +0:11 - let _1: &[(std::option::Option, &[&str])]; // in scope 0 at $DIR/const_allocation.rs:+1:5: +1:8 - let mut _2: &&[(std::option::Option, &[&str])]; // in scope 0 at $DIR/const_allocation.rs:+1:5: +1:8 + let mut _0: (); + let _1: &[(std::option::Option, &[&str])]; + let mut _2: &&[(std::option::Option, &[&str])]; bb0: { - StorageLive(_1); // scope 0 at $DIR/const_allocation.rs:+1:5: +1:8 - StorageLive(_2); // scope 0 at $DIR/const_allocation.rs:+1:5: +1:8 - _2 = const {alloc1: &&[(Option, &[&str])]}; // scope 0 at $DIR/const_allocation.rs:+1:5: +1:8 - // mir::Constant - // + span: $DIR/const_allocation.rs:9:5: 9:8 - // + literal: Const { ty: &&[(Option, &[&str])], val: Value(Scalar(alloc1)) } - _1 = (*_2); // scope 0 at $DIR/const_allocation.rs:+1:5: +1:8 - StorageDead(_2); // scope 0 at $DIR/const_allocation.rs:+1:8: +1:9 - StorageDead(_1); // scope 0 at $DIR/const_allocation.rs:+1:8: +1:9 - _0 = const (); // scope 0 at $DIR/const_allocation.rs:+0:11: +2:2 - return; // scope 0 at $DIR/const_allocation.rs:+2:2: +2:2 + StorageLive(_1); + StorageLive(_2); + _2 = const {alloc1: &&[(Option, &[&str])]}; + _1 = (*_2); + StorageDead(_2); + StorageDead(_1); + _0 = const (); + return; } } diff --git a/tests/mir-opt/const_allocation2.main.ConstProp.after.32bit.mir b/tests/mir-opt/const_allocation2.main.ConstProp.after.32bit.mir index 999acb48afec3..c5f6902b4b48a 100644 --- a/tests/mir-opt/const_allocation2.main.ConstProp.after.32bit.mir +++ b/tests/mir-opt/const_allocation2.main.ConstProp.after.32bit.mir @@ -1,22 +1,19 @@ // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/const_allocation2.rs:+0:11: +0:11 - let _1: &[(std::option::Option, &[&u8])]; // in scope 0 at $DIR/const_allocation2.rs:+1:5: +1:8 - let mut _2: &&[(std::option::Option, &[&u8])]; // in scope 0 at $DIR/const_allocation2.rs:+1:5: +1:8 + let mut _0: (); + let _1: &[(std::option::Option, &[&u8])]; + let mut _2: &&[(std::option::Option, &[&u8])]; bb0: { - StorageLive(_1); // scope 0 at $DIR/const_allocation2.rs:+1:5: +1:8 - StorageLive(_2); // scope 0 at $DIR/const_allocation2.rs:+1:5: +1:8 - _2 = const {alloc1: &&[(Option, &[&u8])]}; // scope 0 at $DIR/const_allocation2.rs:+1:5: +1:8 - // mir::Constant - // + span: $DIR/const_allocation2.rs:6:5: 6:8 - // + literal: Const { ty: &&[(Option, &[&u8])], val: Value(Scalar(alloc1)) } - _1 = (*_2); // scope 0 at $DIR/const_allocation2.rs:+1:5: +1:8 - StorageDead(_2); // scope 0 at $DIR/const_allocation2.rs:+1:8: +1:9 - StorageDead(_1); // scope 0 at $DIR/const_allocation2.rs:+1:8: +1:9 - _0 = const (); // scope 0 at $DIR/const_allocation2.rs:+0:11: +2:2 - return; // scope 0 at $DIR/const_allocation2.rs:+2:2: +2:2 + StorageLive(_1); + StorageLive(_2); + _2 = const {alloc1: &&[(Option, &[&u8])]}; + _1 = (*_2); + StorageDead(_2); + StorageDead(_1); + _0 = const (); + return; } } diff --git a/tests/mir-opt/const_allocation2.main.ConstProp.after.64bit.mir b/tests/mir-opt/const_allocation2.main.ConstProp.after.64bit.mir index 30311890eeef9..b95b8c7874878 100644 --- a/tests/mir-opt/const_allocation2.main.ConstProp.after.64bit.mir +++ b/tests/mir-opt/const_allocation2.main.ConstProp.after.64bit.mir @@ -1,22 +1,19 @@ // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/const_allocation2.rs:+0:11: +0:11 - let _1: &[(std::option::Option, &[&u8])]; // in scope 0 at $DIR/const_allocation2.rs:+1:5: +1:8 - let mut _2: &&[(std::option::Option, &[&u8])]; // in scope 0 at $DIR/const_allocation2.rs:+1:5: +1:8 + let mut _0: (); + let _1: &[(std::option::Option, &[&u8])]; + let mut _2: &&[(std::option::Option, &[&u8])]; bb0: { - StorageLive(_1); // scope 0 at $DIR/const_allocation2.rs:+1:5: +1:8 - StorageLive(_2); // scope 0 at $DIR/const_allocation2.rs:+1:5: +1:8 - _2 = const {alloc1: &&[(Option, &[&u8])]}; // scope 0 at $DIR/const_allocation2.rs:+1:5: +1:8 - // mir::Constant - // + span: $DIR/const_allocation2.rs:6:5: 6:8 - // + literal: Const { ty: &&[(Option, &[&u8])], val: Value(Scalar(alloc1)) } - _1 = (*_2); // scope 0 at $DIR/const_allocation2.rs:+1:5: +1:8 - StorageDead(_2); // scope 0 at $DIR/const_allocation2.rs:+1:8: +1:9 - StorageDead(_1); // scope 0 at $DIR/const_allocation2.rs:+1:8: +1:9 - _0 = const (); // scope 0 at $DIR/const_allocation2.rs:+0:11: +2:2 - return; // scope 0 at $DIR/const_allocation2.rs:+2:2: +2:2 + StorageLive(_1); + StorageLive(_2); + _2 = const {alloc1: &&[(Option, &[&u8])]}; + _1 = (*_2); + StorageDead(_2); + StorageDead(_1); + _0 = const (); + return; } } diff --git a/tests/mir-opt/const_allocation3.main.ConstProp.after.32bit.mir b/tests/mir-opt/const_allocation3.main.ConstProp.after.32bit.mir index d592e59fafd79..e172c7540014d 100644 --- a/tests/mir-opt/const_allocation3.main.ConstProp.after.32bit.mir +++ b/tests/mir-opt/const_allocation3.main.ConstProp.after.32bit.mir @@ -1,22 +1,19 @@ // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/const_allocation3.rs:+0:11: +0:11 - let _1: &Packed; // in scope 0 at $DIR/const_allocation3.rs:+1:5: +1:8 - let mut _2: &&Packed; // in scope 0 at $DIR/const_allocation3.rs:+1:5: +1:8 + let mut _0: (); + let _1: &Packed; + let mut _2: &&Packed; bb0: { - StorageLive(_1); // scope 0 at $DIR/const_allocation3.rs:+1:5: +1:8 - StorageLive(_2); // scope 0 at $DIR/const_allocation3.rs:+1:5: +1:8 - _2 = const {alloc1: &&Packed}; // scope 0 at $DIR/const_allocation3.rs:+1:5: +1:8 - // mir::Constant - // + span: $DIR/const_allocation3.rs:6:5: 6:8 - // + literal: Const { ty: &&Packed, val: Value(Scalar(alloc1)) } - _1 = (*_2); // scope 0 at $DIR/const_allocation3.rs:+1:5: +1:8 - StorageDead(_2); // scope 0 at $DIR/const_allocation3.rs:+1:8: +1:9 - StorageDead(_1); // scope 0 at $DIR/const_allocation3.rs:+1:8: +1:9 - _0 = const (); // scope 0 at $DIR/const_allocation3.rs:+0:11: +2:2 - return; // scope 0 at $DIR/const_allocation3.rs:+2:2: +2:2 + StorageLive(_1); + StorageLive(_2); + _2 = const {alloc1: &&Packed}; + _1 = (*_2); + StorageDead(_2); + StorageDead(_1); + _0 = const (); + return; } } diff --git a/tests/mir-opt/const_allocation3.main.ConstProp.after.64bit.mir b/tests/mir-opt/const_allocation3.main.ConstProp.after.64bit.mir index ca53b28be7cbf..d5feea723e7cd 100644 --- a/tests/mir-opt/const_allocation3.main.ConstProp.after.64bit.mir +++ b/tests/mir-opt/const_allocation3.main.ConstProp.after.64bit.mir @@ -1,22 +1,19 @@ // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/const_allocation3.rs:+0:11: +0:11 - let _1: &Packed; // in scope 0 at $DIR/const_allocation3.rs:+1:5: +1:8 - let mut _2: &&Packed; // in scope 0 at $DIR/const_allocation3.rs:+1:5: +1:8 + let mut _0: (); + let _1: &Packed; + let mut _2: &&Packed; bb0: { - StorageLive(_1); // scope 0 at $DIR/const_allocation3.rs:+1:5: +1:8 - StorageLive(_2); // scope 0 at $DIR/const_allocation3.rs:+1:5: +1:8 - _2 = const {alloc1: &&Packed}; // scope 0 at $DIR/const_allocation3.rs:+1:5: +1:8 - // mir::Constant - // + span: $DIR/const_allocation3.rs:6:5: 6:8 - // + literal: Const { ty: &&Packed, val: Value(Scalar(alloc1)) } - _1 = (*_2); // scope 0 at $DIR/const_allocation3.rs:+1:5: +1:8 - StorageDead(_2); // scope 0 at $DIR/const_allocation3.rs:+1:8: +1:9 - StorageDead(_1); // scope 0 at $DIR/const_allocation3.rs:+1:8: +1:9 - _0 = const (); // scope 0 at $DIR/const_allocation3.rs:+0:11: +2:2 - return; // scope 0 at $DIR/const_allocation3.rs:+2:2: +2:2 + StorageLive(_1); + StorageLive(_2); + _2 = const {alloc1: &&Packed}; + _1 = (*_2); + StorageDead(_2); + StorageDead(_1); + _0 = const (); + return; } } diff --git a/tests/mir-opt/const_debuginfo.main.ConstDebugInfo.diff b/tests/mir-opt/const_debuginfo.main.ConstDebugInfo.diff index f1f53a481655c..255ec94816c3e 100644 --- a/tests/mir-opt/const_debuginfo.main.ConstDebugInfo.diff +++ b/tests/mir-opt/const_debuginfo.main.ConstDebugInfo.diff @@ -2,49 +2,49 @@ + // MIR for `main` after ConstDebugInfo fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/const_debuginfo.rs:+0:11: +0:11 - let _1: u8; // in scope 0 at $DIR/const_debuginfo.rs:+1:9: +1:10 - let mut _5: u8; // in scope 0 at $DIR/const_debuginfo.rs:+4:15: +4:20 - let mut _6: u8; // in scope 0 at $DIR/const_debuginfo.rs:+4:15: +4:16 - let mut _7: u8; // in scope 0 at $DIR/const_debuginfo.rs:+4:19: +4:20 - let mut _8: u8; // in scope 0 at $DIR/const_debuginfo.rs:+4:23: +4:24 - let mut _12: u32; // in scope 0 at $DIR/const_debuginfo.rs:+13:13: +13:16 - let mut _13: u32; // in scope 0 at $DIR/const_debuginfo.rs:+13:19: +13:22 + let mut _0: (); + let _1: u8; + let mut _5: u8; + let mut _6: u8; + let mut _7: u8; + let mut _8: u8; + let mut _12: u32; + let mut _13: u32; scope 1 { -- debug x => _1; // in scope 1 at $DIR/const_debuginfo.rs:+1:9: +1:10 -+ debug x => const 1_u8; // in scope 1 at $DIR/const_debuginfo.rs:+1:9: +1:10 - let _2: u8; // in scope 1 at $DIR/const_debuginfo.rs:+2:9: +2:10 +- debug x => _1; ++ debug x => const 1_u8; + let _2: u8; scope 2 { -- debug y => _2; // in scope 2 at $DIR/const_debuginfo.rs:+2:9: +2:10 -+ debug y => const 2_u8; // in scope 2 at $DIR/const_debuginfo.rs:+2:9: +2:10 - let _3: u8; // in scope 2 at $DIR/const_debuginfo.rs:+3:9: +3:10 +- debug y => _2; ++ debug y => const 2_u8; + let _3: u8; scope 3 { -- debug z => _3; // in scope 3 at $DIR/const_debuginfo.rs:+3:9: +3:10 -+ debug z => const 3_u8; // in scope 3 at $DIR/const_debuginfo.rs:+3:9: +3:10 - let _4: u8; // in scope 3 at $DIR/const_debuginfo.rs:+4:9: +4:12 +- debug z => _3; ++ debug z => const 3_u8; + let _4: u8; scope 4 { -- debug sum => _4; // in scope 4 at $DIR/const_debuginfo.rs:+4:9: +4:12 -+ debug sum => const 6_u8; // in scope 4 at $DIR/const_debuginfo.rs:+4:9: +4:12 - let _9: &str; // in scope 4 at $DIR/const_debuginfo.rs:+6:9: +6:10 +- debug sum => _4; ++ debug sum => const 6_u8; + let _9: &str; scope 5 { -- debug s => _9; // in scope 5 at $DIR/const_debuginfo.rs:+6:9: +6:10 -+ debug s => const "hello, world!"; // in scope 5 at $DIR/const_debuginfo.rs:+6:9: +6:10 - let _14: bool; // in scope 5 at $DIR/const_debuginfo.rs:+8:9: +8:10 - let _15: bool; // in scope 5 at $DIR/const_debuginfo.rs:+8:9: +8:10 - let _16: u32; // in scope 5 at $DIR/const_debuginfo.rs:+8:9: +8:10 +- debug s => _9; ++ debug s => const "hello, world!"; + let _14: bool; + let _15: bool; + let _16: u32; scope 6 { - debug f => (bool, bool, u32){ .0 => _14, .1 => _15, .2 => _16, }; // in scope 6 at $DIR/const_debuginfo.rs:+8:9: +8:10 - let _10: std::option::Option; // in scope 6 at $DIR/const_debuginfo.rs:+10:9: +10:10 + debug f => (bool, bool, u32){ .0 => _14, .1 => _15, .2 => _16, }; + let _10: std::option::Option; scope 7 { - debug o => _10; // in scope 7 at $DIR/const_debuginfo.rs:+10:9: +10:10 - let _17: u32; // in scope 7 at $DIR/const_debuginfo.rs:+12:9: +12:10 - let _18: u32; // in scope 7 at $DIR/const_debuginfo.rs:+12:9: +12:10 + debug o => _10; + let _17: u32; + let _18: u32; scope 8 { - debug p => Point{ .0 => _17, .1 => _18, }; // in scope 8 at $DIR/const_debuginfo.rs:+12:9: +12:10 - let _11: u32; // in scope 8 at $DIR/const_debuginfo.rs:+13:9: +13:10 + debug p => Point{ .0 => _17, .1 => _18, }; + let _11: u32; scope 9 { -- debug a => _11; // in scope 9 at $DIR/const_debuginfo.rs:+13:9: +13:10 -+ debug a => const 64_u32; // in scope 9 at $DIR/const_debuginfo.rs:+13:9: +13:10 +- debug a => _11; ++ debug a => const 64_u32; } } } @@ -56,39 +56,36 @@ } bb0: { - _1 = const 1_u8; // scope 0 at $DIR/const_debuginfo.rs:+1:13: +1:16 - _2 = const 2_u8; // scope 1 at $DIR/const_debuginfo.rs:+2:13: +2:16 - _3 = const 3_u8; // scope 2 at $DIR/const_debuginfo.rs:+3:13: +3:16 - StorageLive(_4); // scope 3 at $DIR/const_debuginfo.rs:+4:9: +4:12 - StorageLive(_5); // scope 3 at $DIR/const_debuginfo.rs:+4:15: +4:20 - _5 = const 3_u8; // scope 3 at $DIR/const_debuginfo.rs:+4:15: +4:20 - _4 = const 6_u8; // scope 3 at $DIR/const_debuginfo.rs:+4:15: +4:24 - StorageDead(_5); // scope 3 at $DIR/const_debuginfo.rs:+4:23: +4:24 - StorageLive(_9); // scope 4 at $DIR/const_debuginfo.rs:+6:9: +6:10 - _9 = const "hello, world!"; // scope 4 at $DIR/const_debuginfo.rs:+6:13: +6:28 - // mir::Constant - // + span: $DIR/const_debuginfo.rs:14:13: 14:28 - // + literal: Const { ty: &str, val: Value(Slice(..)) } - StorageLive(_14); // scope 5 at $DIR/const_debuginfo.rs:+8:9: +8:10 - StorageLive(_15); // scope 5 at $DIR/const_debuginfo.rs:+8:9: +8:10 - StorageLive(_16); // scope 5 at $DIR/const_debuginfo.rs:+8:9: +8:10 - _14 = const true; // scope 5 at $DIR/const_debuginfo.rs:+8:13: +8:34 - _15 = const false; // scope 5 at $DIR/const_debuginfo.rs:+8:13: +8:34 - _16 = const 123_u32; // scope 5 at $DIR/const_debuginfo.rs:+8:13: +8:34 - StorageLive(_10); // scope 6 at $DIR/const_debuginfo.rs:+10:9: +10:10 - _10 = Option::::Some(const 99_u16); // scope 6 at $DIR/const_debuginfo.rs:+10:13: +10:24 - _17 = const 32_u32; // scope 7 at $DIR/const_debuginfo.rs:+12:13: +12:35 - _18 = const 32_u32; // scope 7 at $DIR/const_debuginfo.rs:+12:13: +12:35 - StorageLive(_11); // scope 8 at $DIR/const_debuginfo.rs:+13:9: +13:10 - _11 = const 64_u32; // scope 8 at $DIR/const_debuginfo.rs:+13:13: +13:22 - StorageDead(_11); // scope 8 at $DIR/const_debuginfo.rs:+14:1: +14:2 - StorageDead(_10); // scope 6 at $DIR/const_debuginfo.rs:+14:1: +14:2 - StorageDead(_14); // scope 5 at $DIR/const_debuginfo.rs:+14:1: +14:2 - StorageDead(_15); // scope 5 at $DIR/const_debuginfo.rs:+14:1: +14:2 - StorageDead(_16); // scope 5 at $DIR/const_debuginfo.rs:+14:1: +14:2 - StorageDead(_9); // scope 4 at $DIR/const_debuginfo.rs:+14:1: +14:2 - StorageDead(_4); // scope 3 at $DIR/const_debuginfo.rs:+14:1: +14:2 - return; // scope 0 at $DIR/const_debuginfo.rs:+14:2: +14:2 + _1 = const 1_u8; + _2 = const 2_u8; + _3 = const 3_u8; + StorageLive(_4); + StorageLive(_5); + _5 = const 3_u8; + _4 = const 6_u8; + StorageDead(_5); + StorageLive(_9); + _9 = const "hello, world!"; + StorageLive(_14); + StorageLive(_15); + StorageLive(_16); + _14 = const true; + _15 = const false; + _16 = const 123_u32; + StorageLive(_10); + _10 = Option::::Some(const 99_u16); + _17 = const 32_u32; + _18 = const 32_u32; + StorageLive(_11); + _11 = const 64_u32; + StorageDead(_11); + StorageDead(_10); + StorageDead(_14); + StorageDead(_15); + StorageDead(_16); + StorageDead(_9); + StorageDead(_4); + return; } } diff --git a/tests/mir-opt/const_goto.issue_77355_opt.ConstGoto.diff b/tests/mir-opt/const_goto.issue_77355_opt.ConstGoto.diff index a717d1bbd12f2..43bdb431129e6 100644 --- a/tests/mir-opt/const_goto.issue_77355_opt.ConstGoto.diff +++ b/tests/mir-opt/const_goto.issue_77355_opt.ConstGoto.diff @@ -2,51 +2,49 @@ + // MIR for `issue_77355_opt` after ConstGoto fn issue_77355_opt(_1: Foo) -> u64 { - debug num => _1; // in scope 0 at $DIR/const_goto.rs:+0:20: +0:23 - let mut _0: u64; // return place in scope 0 at $DIR/const_goto.rs:+0:33: +0:36 -- let mut _2: bool; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL -- let mut _3: isize; // in scope 0 at $DIR/const_goto.rs:+1:22: +1:28 -+ let mut _2: isize; // in scope 0 at $DIR/const_goto.rs:+1:22: +1:28 + debug num => _1; + let mut _0: u64; +- let mut _2: bool; +- let mut _3: isize; ++ let mut _2: isize; bb0: { -- StorageLive(_2); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL -- _3 = discriminant(_1); // scope 0 at $DIR/const_goto.rs:+1:17: +1:20 -- switchInt(move _3) -> [1: bb2, 2: bb2, otherwise: bb1]; // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL -+ _2 = discriminant(_1); // scope 0 at $DIR/const_goto.rs:+1:17: +1:20 -+ switchInt(move _2) -> [1: bb2, 2: bb2, otherwise: bb1]; // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL +- StorageLive(_2); +- _3 = discriminant(_1); +- switchInt(move _3) -> [1: bb2, 2: bb2, otherwise: bb1]; ++ _2 = discriminant(_1); ++ switchInt(move _2) -> [1: bb2, 2: bb2, otherwise: bb1]; } bb1: { -- _2 = const false; // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL -- goto -> bb3; // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL -+ _0 = const 42_u64; // scope 0 at $DIR/const_goto.rs:+1:53: +1:55 -+ goto -> bb3; // scope 0 at $DIR/const_goto.rs:+1:5: +1:57 +- _2 = const false; ++ _0 = const 42_u64; + goto -> bb3; } bb2: { -- _2 = const true; // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL -- goto -> bb3; // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL +- _2 = const true; ++ _0 = const 23_u64; + goto -> bb3; + } + + bb3: { +- switchInt(move _2) -> [0: bb5, otherwise: bb4]; - } - -- bb3: { -- switchInt(move _2) -> [0: bb5, otherwise: bb4]; // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL +- bb4: { +- _0 = const 23_u64; +- goto -> bb6; - } - -- bb4: { - _0 = const 23_u64; // scope 0 at $DIR/const_goto.rs:+1:41: +1:43 -- goto -> bb6; // scope 0 at $DIR/const_goto.rs:+1:5: +1:57 -+ goto -> bb3; // scope 0 at $DIR/const_goto.rs:+1:5: +1:57 - } - - bb5: { -- _0 = const 42_u64; // scope 0 at $DIR/const_goto.rs:+1:53: +1:55 -- goto -> bb6; // scope 0 at $DIR/const_goto.rs:+1:5: +1:57 +- _0 = const 42_u64; +- goto -> bb6; - } - - bb6: { -- StorageDead(_2); // scope 0 at $DIR/const_goto.rs:+1:56: +1:57 -+ bb3: { - return; // scope 0 at $DIR/const_goto.rs:+2:2: +2:2 +- StorageDead(_2); + return; } } diff --git a/tests/mir-opt/const_goto_const_eval_fail.f.ConstGoto.diff b/tests/mir-opt/const_goto_const_eval_fail.f.ConstGoto.diff index 24be8c9b86845..84a13f28a313d 100644 --- a/tests/mir-opt/const_goto_const_eval_fail.f.ConstGoto.diff +++ b/tests/mir-opt/const_goto_const_eval_fail.f.ConstGoto.diff @@ -2,50 +2,50 @@ + // MIR for `f` after ConstGoto fn f() -> u64 { - let mut _0: u64; // return place in scope 0 at $DIR/const_goto_const_eval_fail.rs:+0:44: +0:47 - let mut _1: bool; // in scope 0 at $DIR/const_goto_const_eval_fail.rs:+1:11: +6:6 - let mut _2: i32; // in scope 0 at $DIR/const_goto_const_eval_fail.rs:+2:15: +2:16 + let mut _0: u64; + let mut _1: bool; + let mut _2: i32; bb0: { - StorageLive(_1); // scope 0 at $DIR/const_goto_const_eval_fail.rs:+1:11: +6:6 - StorageLive(_2); // scope 0 at $DIR/const_goto_const_eval_fail.rs:+2:15: +2:16 - _2 = const A; // scope 0 at $DIR/const_goto_const_eval_fail.rs:+2:15: +2:16 - switchInt(_2) -> [1: bb2, 2: bb2, 3: bb2, otherwise: bb1]; // scope 0 at $DIR/const_goto_const_eval_fail.rs:+2:9: +2:16 + StorageLive(_1); + StorageLive(_2); + _2 = const A; + switchInt(_2) -> [1: bb2, 2: bb2, 3: bb2, otherwise: bb1]; } bb1: { - _1 = const true; // scope 0 at $DIR/const_goto_const_eval_fail.rs:+4:18: +4:22 - goto -> bb3; // scope 0 at $DIR/const_goto_const_eval_fail.rs:+4:18: +4:22 + _1 = const true; + goto -> bb3; } bb2: { - _1 = const B; // scope 0 at $DIR/const_goto_const_eval_fail.rs:+3:26: +3:27 -- goto -> bb3; // scope 0 at $DIR/const_goto_const_eval_fail.rs:+3:26: +3:27 -+ switchInt(_1) -> [0: bb4, otherwise: bb3]; // scope 0 at $DIR/const_goto_const_eval_fail.rs:+1:5: +6:6 + _1 = const B; +- goto -> bb3; ++ switchInt(_1) -> [0: bb4, otherwise: bb3]; } bb3: { -- switchInt(_1) -> [0: bb5, otherwise: bb4]; // scope 0 at $DIR/const_goto_const_eval_fail.rs:+1:5: +6:6 +- switchInt(_1) -> [0: bb5, otherwise: bb4]; - } - - bb4: { - _0 = const 2_u64; // scope 0 at $DIR/const_goto_const_eval_fail.rs:+8:17: +8:18 -- goto -> bb6; // scope 0 at $DIR/const_goto_const_eval_fail.rs:+8:17: +8:18 -+ goto -> bb5; // scope 0 at $DIR/const_goto_const_eval_fail.rs:+8:17: +8:18 + _0 = const 2_u64; +- goto -> bb6; ++ goto -> bb5; } - bb5: { + bb4: { - _0 = const 1_u64; // scope 0 at $DIR/const_goto_const_eval_fail.rs:+7:18: +7:19 -- goto -> bb6; // scope 0 at $DIR/const_goto_const_eval_fail.rs:+7:18: +7:19 -+ goto -> bb5; // scope 0 at $DIR/const_goto_const_eval_fail.rs:+7:18: +7:19 + _0 = const 1_u64; +- goto -> bb6; ++ goto -> bb5; } - bb6: { + bb5: { - StorageDead(_2); // scope 0 at $DIR/const_goto_const_eval_fail.rs:+10:1: +10:2 - StorageDead(_1); // scope 0 at $DIR/const_goto_const_eval_fail.rs:+10:1: +10:2 - return; // scope 0 at $DIR/const_goto_const_eval_fail.rs:+10:2: +10:2 + StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_goto_storage.match_nested_if.ConstGoto.diff b/tests/mir-opt/const_goto_storage.match_nested_if.ConstGoto.diff index 4dc98f8567402..d1dbc7089a1cd 100644 --- a/tests/mir-opt/const_goto_storage.match_nested_if.ConstGoto.diff +++ b/tests/mir-opt/const_goto_storage.match_nested_if.ConstGoto.diff @@ -2,102 +2,99 @@ + // MIR for `match_nested_if` after ConstGoto fn match_nested_if() -> bool { - let mut _0: bool; // return place in scope 0 at $DIR/const_goto_storage.rs:+0:25: +0:29 - let _1: bool; // in scope 0 at $DIR/const_goto_storage.rs:+1:9: +1:12 -- let mut _2: (); // in scope 0 at $DIR/const_goto_storage.rs:+1:21: +1:23 -- let mut _3: bool; // in scope 0 at $DIR/const_goto_storage.rs:+2:15: +6:10 -- let mut _4: bool; // in scope 0 at $DIR/const_goto_storage.rs:+2:18: +2:76 -- let mut _5: bool; // in scope 0 at $DIR/const_goto_storage.rs:+2:21: +2:52 -- let mut _6: bool; // in scope 0 at $DIR/const_goto_storage.rs:+2:24: +2:28 -+ let mut _2: bool; // in scope 0 at $DIR/const_goto_storage.rs:+2:24: +2:28 + let mut _0: bool; + let _1: bool; +- let mut _2: (); +- let mut _3: bool; +- let mut _4: bool; +- let mut _5: bool; +- let mut _6: bool; ++ let mut _2: bool; scope 1 { - debug val => _1; // in scope 1 at $DIR/const_goto_storage.rs:+1:9: +1:12 + debug val => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/const_goto_storage.rs:+1:9: +1:12 -- StorageLive(_2); // scope 0 at $DIR/const_goto_storage.rs:+1:21: +1:23 -- _2 = (); // scope 0 at $DIR/const_goto_storage.rs:+1:21: +1:23 -- StorageLive(_3); // scope 0 at $DIR/const_goto_storage.rs:+2:15: +6:10 -- StorageLive(_4); // scope 0 at $DIR/const_goto_storage.rs:+2:18: +2:76 -- StorageLive(_5); // scope 0 at $DIR/const_goto_storage.rs:+2:21: +2:52 -- StorageLive(_6); // scope 0 at $DIR/const_goto_storage.rs:+2:24: +2:28 -- _6 = const true; // scope 0 at $DIR/const_goto_storage.rs:+2:24: +2:28 -- switchInt(move _6) -> [0: bb2, otherwise: bb1]; // scope 0 at $DIR/const_goto_storage.rs:+2:24: +2:28 -+ StorageLive(_2); // scope 0 at $DIR/const_goto_storage.rs:+2:24: +2:28 -+ _2 = const true; // scope 0 at $DIR/const_goto_storage.rs:+2:24: +2:28 -+ switchInt(move _2) -> [0: bb2, otherwise: bb1]; // scope 0 at $DIR/const_goto_storage.rs:+2:24: +2:28 + StorageLive(_1); + StorageLive(_2); +- _2 = (); +- StorageLive(_3); +- StorageLive(_4); +- StorageLive(_5); +- StorageLive(_6); +- _6 = const true; +- switchInt(move _6) -> [0: bb2, otherwise: bb1]; ++ _2 = const true; ++ switchInt(move _2) -> [0: bb2, otherwise: bb1]; } bb1: { -- _5 = const true; // scope 0 at $DIR/const_goto_storage.rs:+2:31: +2:35 -- goto -> bb3; // scope 0 at $DIR/const_goto_storage.rs:+2:21: +2:52 -- } -- -- bb2: { -- _5 = const false; // scope 0 at $DIR/const_goto_storage.rs:+2:45: +2:50 -- goto -> bb3; // scope 0 at $DIR/const_goto_storage.rs:+2:21: +2:52 -- } -- -- bb3: { -- StorageDead(_6); // scope 0 at $DIR/const_goto_storage.rs:+2:51: +2:52 -- switchInt(move _5) -> [0: bb5, otherwise: bb4]; // scope 0 at $DIR/const_goto_storage.rs:+2:21: +2:52 +- _5 = const true; ++ StorageDead(_2); ++ _1 = const true; + goto -> bb3; + } + + bb2: { +- _5 = const false; ++ StorageDead(_2); ++ _1 = const false; + goto -> bb3; + } + + bb3: { +- StorageDead(_6); +- switchInt(move _5) -> [0: bb5, otherwise: bb4]; - } - - bb4: { -- _4 = const true; // scope 0 at $DIR/const_goto_storage.rs:+2:55: +2:59 -- goto -> bb6; // scope 0 at $DIR/const_goto_storage.rs:+2:18: +2:76 +- _4 = const true; +- goto -> bb6; - } - - bb5: { -- _4 = const false; // scope 0 at $DIR/const_goto_storage.rs:+2:69: +2:74 -- goto -> bb6; // scope 0 at $DIR/const_goto_storage.rs:+2:18: +2:76 +- _4 = const false; +- goto -> bb6; - } - - bb6: { -- StorageDead(_5); // scope 0 at $DIR/const_goto_storage.rs:+2:75: +2:76 -- switchInt(move _4) -> [0: bb8, otherwise: bb7]; // scope 0 at $DIR/const_goto_storage.rs:+2:18: +2:76 +- StorageDead(_5); +- switchInt(move _4) -> [0: bb8, otherwise: bb7]; - } - - bb7: { -- _3 = const true; // scope 0 at $DIR/const_goto_storage.rs:+3:13: +3:17 -- goto -> bb9; // scope 0 at $DIR/const_goto_storage.rs:+2:15: +6:10 +- _3 = const true; +- goto -> bb9; - } - - bb8: { -- _3 = const false; // scope 0 at $DIR/const_goto_storage.rs:+5:13: +5:18 -- goto -> bb9; // scope 0 at $DIR/const_goto_storage.rs:+2:15: +6:10 +- _3 = const false; +- goto -> bb9; - } - - bb9: { -- switchInt(move _3) -> [0: bb11, otherwise: bb10]; // scope 0 at $DIR/const_goto_storage.rs:+2:15: +6:10 +- switchInt(move _3) -> [0: bb11, otherwise: bb10]; - } - - bb10: { -- StorageDead(_4); // scope 0 at $DIR/const_goto_storage.rs:+6:9: +6:10 -- StorageDead(_3); // scope 0 at $DIR/const_goto_storage.rs:+6:9: +6:10 -+ StorageDead(_2); // scope 0 at $DIR/const_goto_storage.rs:+2:51: +2:52 - _1 = const true; // scope 0 at $DIR/const_goto_storage.rs:+8:17: +8:21 -- goto -> bb12; // scope 0 at $DIR/const_goto_storage.rs:+8:17: +8:21 -+ goto -> bb3; // scope 0 at $DIR/const_goto_storage.rs:+8:17: +8:21 - } - +- StorageDead(_4); +- StorageDead(_3); +- _1 = const true; +- goto -> bb12; +- } +- - bb11: { -- StorageDead(_4); // scope 0 at $DIR/const_goto_storage.rs:+6:9: +6:10 -- StorageDead(_3); // scope 0 at $DIR/const_goto_storage.rs:+6:9: +6:10 -+ bb2: { -+ StorageDead(_2); // scope 0 at $DIR/const_goto_storage.rs:+2:51: +2:52 - _1 = const false; // scope 0 at $DIR/const_goto_storage.rs:+10:14: +10:19 -- goto -> bb12; // scope 0 at $DIR/const_goto_storage.rs:+10:14: +10:19 -+ goto -> bb3; // scope 0 at $DIR/const_goto_storage.rs:+10:14: +10:19 - } - +- StorageDead(_4); +- StorageDead(_3); +- _1 = const false; +- goto -> bb12; +- } +- - bb12: { -- StorageDead(_2); // scope 0 at $DIR/const_goto_storage.rs:+11:6: +11:7 -+ bb3: { - _0 = _1; // scope 1 at $DIR/const_goto_storage.rs:+12:5: +12:8 - StorageDead(_1); // scope 0 at $DIR/const_goto_storage.rs:+13:1: +13:2 - return; // scope 0 at $DIR/const_goto_storage.rs:+13:2: +13:2 +- StorageDead(_2); + _0 = _1; + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_promotion_extern_static.BAR-promoted[0].SimplifyCfg-elaborate-drops.after.mir b/tests/mir-opt/const_promotion_extern_static.BAR-promoted[0].SimplifyCfg-elaborate-drops.after.mir index 028480bdc88b4..5b8d3ca78e3fd 100644 --- a/tests/mir-opt/const_promotion_extern_static.BAR-promoted[0].SimplifyCfg-elaborate-drops.after.mir +++ b/tests/mir-opt/const_promotion_extern_static.BAR-promoted[0].SimplifyCfg-elaborate-drops.after.mir @@ -1,20 +1,17 @@ // MIR for `BAR::promoted[0]` after SimplifyCfg-elaborate-drops promoted[0] in BAR: &[&i32; 1] = { - let mut _0: &[&i32; 1]; // return place in scope 0 at $DIR/const_promotion_extern_static.rs:+0:31: +0:44 - let mut _1: [&i32; 1]; // in scope 0 at $DIR/const_promotion_extern_static.rs:+0:31: +0:35 - let mut _2: &i32; // in scope 0 at $DIR/const_promotion_extern_static.rs:+0:32: +0:34 - let mut _3: &i32; // in scope 0 at $DIR/const_promotion_extern_static.rs:+0:33: +0:34 + let mut _0: &[&i32; 1]; + let mut _1: [&i32; 1]; + let mut _2: &i32; + let mut _3: &i32; bb0: { - _3 = const {alloc1: &i32}; // scope 0 at $DIR/const_promotion_extern_static.rs:+0:33: +0:34 - // mir::Constant - // + span: $DIR/const_promotion_extern_static.rs:9:33: 9:34 - // + literal: Const { ty: &i32, val: Value(Scalar(alloc1)) } - _2 = &(*_3); // scope 0 at $DIR/const_promotion_extern_static.rs:+0:32: +0:34 - _1 = [move _2]; // scope 0 at $DIR/const_promotion_extern_static.rs:+0:31: +0:35 - _0 = &_1; // scope 0 at $DIR/const_promotion_extern_static.rs:+0:31: +0:44 - return; // scope 0 at $DIR/const_promotion_extern_static.rs:+0:31: +0:44 + _3 = const {alloc1: &i32}; + _2 = &(*_3); + _1 = [move _2]; + _0 = &_1; + return; } } diff --git a/tests/mir-opt/const_promotion_extern_static.BAR.PromoteTemps.diff b/tests/mir-opt/const_promotion_extern_static.BAR.PromoteTemps.diff index 2ef4378115fbe..0eee91469e648 100644 --- a/tests/mir-opt/const_promotion_extern_static.BAR.PromoteTemps.diff +++ b/tests/mir-opt/const_promotion_extern_static.BAR.PromoteTemps.diff @@ -2,49 +2,41 @@ + // MIR for `BAR` after PromoteTemps static mut BAR: *const &i32 = { - let mut _0: *const &i32; // return place in scope 0 at $DIR/const_promotion_extern_static.rs:+0:17: +0:28 - let mut _1: &[&i32]; // in scope 0 at $DIR/const_promotion_extern_static.rs:+0:31: +0:44 - let mut _2: &[&i32; 1]; // in scope 0 at $DIR/const_promotion_extern_static.rs:+0:31: +0:44 - let _3: [&i32; 1]; // in scope 0 at $DIR/const_promotion_extern_static.rs:+0:31: +0:35 - let mut _4: &i32; // in scope 0 at $DIR/const_promotion_extern_static.rs:+0:32: +0:34 - let _5: &i32; // in scope 0 at $DIR/const_promotion_extern_static.rs:+0:33: +0:34 -+ let mut _6: &[&i32; 1]; // in scope 0 at $DIR/const_promotion_extern_static.rs:+0:31: +0:44 + let mut _0: *const &i32; + let mut _1: &[&i32]; + let mut _2: &[&i32; 1]; + let _3: [&i32; 1]; + let mut _4: &i32; + let _5: &i32; ++ let mut _6: &[&i32; 1]; bb0: { - StorageLive(_1); // scope 0 at $DIR/const_promotion_extern_static.rs:+0:31: +0:44 - StorageLive(_2); // scope 0 at $DIR/const_promotion_extern_static.rs:+0:31: +0:44 -- StorageLive(_3); // scope 0 at $DIR/const_promotion_extern_static.rs:+0:31: +0:35 -- StorageLive(_4); // scope 0 at $DIR/const_promotion_extern_static.rs:+0:32: +0:34 -- StorageLive(_5); // scope 0 at $DIR/const_promotion_extern_static.rs:+0:33: +0:34 -- _5 = const {alloc1: &i32}; // scope 0 at $DIR/const_promotion_extern_static.rs:+0:33: +0:34 -+ _6 = const _; // scope 0 at $DIR/const_promotion_extern_static.rs:+0:31: +0:44 - // mir::Constant -- // + span: $DIR/const_promotion_extern_static.rs:9:33: 9:34 -- // + literal: Const { ty: &i32, val: Value(Scalar(alloc1)) } -- _4 = &(*_5); // scope 0 at $DIR/const_promotion_extern_static.rs:+0:32: +0:34 -- _3 = [move _4]; // scope 0 at $DIR/const_promotion_extern_static.rs:+0:31: +0:35 -- _2 = &_3; // scope 0 at $DIR/const_promotion_extern_static.rs:+0:31: +0:44 -+ // + span: $DIR/const_promotion_extern_static.rs:9:31: 9:44 -+ // + literal: Const { ty: &[&i32; 1], val: Unevaluated(BAR, [], Some(promoted[0])) } -+ _2 = &(*_6); // scope 0 at $DIR/const_promotion_extern_static.rs:+0:31: +0:44 - _1 = move _2 as &[&i32] (Pointer(Unsize)); // scope 0 at $DIR/const_promotion_extern_static.rs:+0:31: +0:44 -- StorageDead(_4); // scope 0 at $DIR/const_promotion_extern_static.rs:+0:34: +0:35 - StorageDead(_2); // scope 0 at $DIR/const_promotion_extern_static.rs:+0:34: +0:35 - _0 = core::slice::::as_ptr(move _1) -> [return: bb1, unwind: bb2]; // scope 0 at $DIR/const_promotion_extern_static.rs:+0:31: +0:44 - // mir::Constant - // + span: $DIR/const_promotion_extern_static.rs:9:36: 9:42 - // + literal: Const { ty: for<'a> fn(&'a [&i32]) -> *const &i32 {core::slice::::as_ptr}, val: Value() } + StorageLive(_1); + StorageLive(_2); +- StorageLive(_3); +- StorageLive(_4); +- StorageLive(_5); +- _5 = const {alloc1: &i32}; +- _4 = &(*_5); +- _3 = [move _4]; +- _2 = &_3; ++ _6 = const _; ++ _2 = &(*_6); + _1 = move _2 as &[&i32] (Pointer(Unsize)); +- StorageDead(_4); + StorageDead(_2); + _0 = core::slice::::as_ptr(move _1) -> [return: bb1, unwind: bb2]; } bb1: { -- StorageDead(_5); // scope 0 at $DIR/const_promotion_extern_static.rs:+0:43: +0:44 -- StorageDead(_3); // scope 0 at $DIR/const_promotion_extern_static.rs:+0:43: +0:44 - StorageDead(_1); // scope 0 at $DIR/const_promotion_extern_static.rs:+0:43: +0:44 - return; // scope 0 at $DIR/const_promotion_extern_static.rs:+0:1: +0:45 +- StorageDead(_5); +- StorageDead(_3); + StorageDead(_1); + return; } bb2 (cleanup): { - resume; // scope 0 at $DIR/const_promotion_extern_static.rs:+0:1: +0:45 + resume; } - } - diff --git a/tests/mir-opt/const_promotion_extern_static.BOP.built.after.mir b/tests/mir-opt/const_promotion_extern_static.BOP.built.after.mir index 476fc49a1fe1b..ff80d5eedab91 100644 --- a/tests/mir-opt/const_promotion_extern_static.BOP.built.after.mir +++ b/tests/mir-opt/const_promotion_extern_static.BOP.built.after.mir @@ -1,17 +1,17 @@ // MIR for `BOP` after built static BOP: &i32 = { - let mut _0: &i32; // return place in scope 0 at $DIR/const_promotion_extern_static.rs:+0:13: +0:17 - let _1: &i32; // in scope 0 at $DIR/const_promotion_extern_static.rs:+0:20: +0:23 - let _2: i32; // in scope 0 at $DIR/const_promotion_extern_static.rs:+0:21: +0:23 + let mut _0: &i32; + let _1: &i32; + let _2: i32; bb0: { - StorageLive(_1); // scope 0 at $DIR/const_promotion_extern_static.rs:+0:20: +0:23 - StorageLive(_2); // scope 0 at $DIR/const_promotion_extern_static.rs:+0:21: +0:23 - _2 = const 13_i32; // scope 0 at $DIR/const_promotion_extern_static.rs:+0:21: +0:23 - _1 = &_2; // scope 0 at $DIR/const_promotion_extern_static.rs:+0:20: +0:23 - _0 = &(*_1); // scope 0 at $DIR/const_promotion_extern_static.rs:+0:20: +0:23 - StorageDead(_1); // scope 0 at $DIR/const_promotion_extern_static.rs:+0:22: +0:23 - return; // scope 0 at $DIR/const_promotion_extern_static.rs:+0:1: +0:24 + StorageLive(_1); + StorageLive(_2); + _2 = const 13_i32; + _1 = &_2; + _0 = &(*_1); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_promotion_extern_static.FOO-promoted[0].SimplifyCfg-elaborate-drops.after.mir b/tests/mir-opt/const_promotion_extern_static.FOO-promoted[0].SimplifyCfg-elaborate-drops.after.mir index 41657b53fc12c..85355389be5ee 100644 --- a/tests/mir-opt/const_promotion_extern_static.FOO-promoted[0].SimplifyCfg-elaborate-drops.after.mir +++ b/tests/mir-opt/const_promotion_extern_static.FOO-promoted[0].SimplifyCfg-elaborate-drops.after.mir @@ -1,20 +1,17 @@ // MIR for `FOO::promoted[0]` after SimplifyCfg-elaborate-drops promoted[0] in FOO: &[&i32; 1] = { - let mut _0: &[&i32; 1]; // return place in scope 0 at $DIR/const_promotion_extern_static.rs:+0:31: +0:55 - let mut _1: [&i32; 1]; // in scope 0 at $DIR/const_promotion_extern_static.rs:+0:31: +0:46 - let mut _2: &i32; // in scope 0 at $DIR/const_promotion_extern_static.rs:+0:32: +0:45 - let mut _3: *const i32; // in scope 0 at $DIR/const_promotion_extern_static.rs:+0:42: +0:43 + let mut _0: &[&i32; 1]; + let mut _1: [&i32; 1]; + let mut _2: &i32; + let mut _3: *const i32; bb0: { - _3 = const {alloc3: *const i32}; // scope 0 at $DIR/const_promotion_extern_static.rs:+0:42: +0:43 - // mir::Constant - // + span: $DIR/const_promotion_extern_static.rs:13:42: 13:43 - // + literal: Const { ty: *const i32, val: Value(Scalar(alloc3)) } - _2 = &(*_3); // scope 0 at $DIR/const_promotion_extern_static.rs:+0:41: +0:43 - _1 = [move _2]; // scope 0 at $DIR/const_promotion_extern_static.rs:+0:31: +0:46 - _0 = &_1; // scope 0 at $DIR/const_promotion_extern_static.rs:+0:31: +0:55 - return; // scope 0 at $DIR/const_promotion_extern_static.rs:+0:31: +0:55 + _3 = const {alloc3: *const i32}; + _2 = &(*_3); + _1 = [move _2]; + _0 = &_1; + return; } } diff --git a/tests/mir-opt/const_promotion_extern_static.FOO.PromoteTemps.diff b/tests/mir-opt/const_promotion_extern_static.FOO.PromoteTemps.diff index 25ba0face6bd8..0b117f4aaa51b 100644 --- a/tests/mir-opt/const_promotion_extern_static.FOO.PromoteTemps.diff +++ b/tests/mir-opt/const_promotion_extern_static.FOO.PromoteTemps.diff @@ -2,51 +2,43 @@ + // MIR for `FOO` after PromoteTemps static mut FOO: *const &i32 = { - let mut _0: *const &i32; // return place in scope 0 at $DIR/const_promotion_extern_static.rs:+0:17: +0:28 - let mut _1: &[&i32]; // in scope 0 at $DIR/const_promotion_extern_static.rs:+0:31: +0:55 - let mut _2: &[&i32; 1]; // in scope 0 at $DIR/const_promotion_extern_static.rs:+0:31: +0:55 - let _3: [&i32; 1]; // in scope 0 at $DIR/const_promotion_extern_static.rs:+0:31: +0:46 - let mut _4: &i32; // in scope 0 at $DIR/const_promotion_extern_static.rs:+0:32: +0:45 - let _5: *const i32; // in scope 0 at $DIR/const_promotion_extern_static.rs:+0:42: +0:43 -+ let mut _6: &[&i32; 1]; // in scope 0 at $DIR/const_promotion_extern_static.rs:+0:31: +0:55 + let mut _0: *const &i32; + let mut _1: &[&i32]; + let mut _2: &[&i32; 1]; + let _3: [&i32; 1]; + let mut _4: &i32; + let _5: *const i32; ++ let mut _6: &[&i32; 1]; scope 1 { } bb0: { - StorageLive(_1); // scope 0 at $DIR/const_promotion_extern_static.rs:+0:31: +0:55 - StorageLive(_2); // scope 0 at $DIR/const_promotion_extern_static.rs:+0:31: +0:55 -- StorageLive(_3); // scope 0 at $DIR/const_promotion_extern_static.rs:+0:31: +0:46 -- StorageLive(_4); // scope 0 at $DIR/const_promotion_extern_static.rs:+0:32: +0:45 -- StorageLive(_5); // scope 1 at $DIR/const_promotion_extern_static.rs:+0:42: +0:43 -- _5 = const {alloc3: *const i32}; // scope 1 at $DIR/const_promotion_extern_static.rs:+0:42: +0:43 -+ _6 = const _; // scope 0 at $DIR/const_promotion_extern_static.rs:+0:31: +0:55 - // mir::Constant -- // + span: $DIR/const_promotion_extern_static.rs:13:42: 13:43 -- // + literal: Const { ty: *const i32, val: Value(Scalar(alloc3)) } -- _4 = &(*_5); // scope 1 at $DIR/const_promotion_extern_static.rs:+0:41: +0:43 -- _3 = [move _4]; // scope 0 at $DIR/const_promotion_extern_static.rs:+0:31: +0:46 -- _2 = &_3; // scope 0 at $DIR/const_promotion_extern_static.rs:+0:31: +0:55 -+ // + span: $DIR/const_promotion_extern_static.rs:13:31: 13:55 -+ // + literal: Const { ty: &[&i32; 1], val: Unevaluated(FOO, [], Some(promoted[0])) } -+ _2 = &(*_6); // scope 0 at $DIR/const_promotion_extern_static.rs:+0:31: +0:55 - _1 = move _2 as &[&i32] (Pointer(Unsize)); // scope 0 at $DIR/const_promotion_extern_static.rs:+0:31: +0:55 -- StorageDead(_4); // scope 0 at $DIR/const_promotion_extern_static.rs:+0:45: +0:46 - StorageDead(_2); // scope 0 at $DIR/const_promotion_extern_static.rs:+0:45: +0:46 - _0 = core::slice::::as_ptr(move _1) -> [return: bb1, unwind: bb2]; // scope 0 at $DIR/const_promotion_extern_static.rs:+0:31: +0:55 - // mir::Constant - // + span: $DIR/const_promotion_extern_static.rs:13:47: 13:53 - // + literal: Const { ty: for<'a> fn(&'a [&i32]) -> *const &i32 {core::slice::::as_ptr}, val: Value() } + StorageLive(_1); + StorageLive(_2); +- StorageLive(_3); +- StorageLive(_4); +- StorageLive(_5); +- _5 = const {alloc3: *const i32}; +- _4 = &(*_5); +- _3 = [move _4]; +- _2 = &_3; ++ _6 = const _; ++ _2 = &(*_6); + _1 = move _2 as &[&i32] (Pointer(Unsize)); +- StorageDead(_4); + StorageDead(_2); + _0 = core::slice::::as_ptr(move _1) -> [return: bb1, unwind: bb2]; } bb1: { -- StorageDead(_5); // scope 0 at $DIR/const_promotion_extern_static.rs:+0:54: +0:55 -- StorageDead(_3); // scope 0 at $DIR/const_promotion_extern_static.rs:+0:54: +0:55 - StorageDead(_1); // scope 0 at $DIR/const_promotion_extern_static.rs:+0:54: +0:55 - return; // scope 0 at $DIR/const_promotion_extern_static.rs:+0:1: +0:56 +- StorageDead(_5); +- StorageDead(_3); + StorageDead(_1); + return; } bb2 (cleanup): { - resume; // scope 0 at $DIR/const_promotion_extern_static.rs:+0:1: +0:56 + resume; } } - diff --git a/tests/mir-opt/const_prop/address_of_pair.fn0.ConstProp.diff b/tests/mir-opt/const_prop/address_of_pair.fn0.ConstProp.diff index d50b12044ceb2..6b96c24d46063 100644 --- a/tests/mir-opt/const_prop/address_of_pair.fn0.ConstProp.diff +++ b/tests/mir-opt/const_prop/address_of_pair.fn0.ConstProp.diff @@ -2,45 +2,45 @@ + // MIR for `fn0` after ConstProp fn fn0() -> bool { - let mut _0: bool; // return place in scope 0 at $DIR/address_of_pair.rs:+0:17: +0:21 - let mut _1: !; // in scope 0 at $DIR/address_of_pair.rs:+0:22: +9:2 - let mut _2: (i32, bool); // in scope 0 at $DIR/address_of_pair.rs:+1:9: +1:17 - let _4: (); // in scope 0 at $DIR/address_of_pair.rs:+4:5: +6:6 - let mut _6: bool; // in scope 0 at $DIR/address_of_pair.rs:+7:16: +7:22 + let mut _0: bool; + let mut _1: !; + let mut _2: (i32, bool); + let _4: (); + let mut _6: bool; scope 1 { - debug pair => _2; // in scope 1 at $DIR/address_of_pair.rs:+1:9: +1:17 - let _3: *mut bool; // in scope 1 at $DIR/address_of_pair.rs:+2:9: +2:12 + debug pair => _2; + let _3: *mut bool; scope 2 { - debug ptr => _3; // in scope 2 at $DIR/address_of_pair.rs:+2:9: +2:12 - let _5: bool; // in scope 2 at $DIR/address_of_pair.rs:+7:9: +7:12 + debug ptr => _3; + let _5: bool; scope 3 { } scope 4 { - debug ret => _5; // in scope 4 at $DIR/address_of_pair.rs:+7:9: +7:12 + debug ret => _5; } } } bb0: { - StorageLive(_2); // scope 0 at $DIR/address_of_pair.rs:+1:9: +1:17 - _2 = (const 1_i32, const false); // scope 0 at $DIR/address_of_pair.rs:+1:20: +1:30 - StorageLive(_3); // scope 1 at $DIR/address_of_pair.rs:+2:9: +2:12 - _3 = &raw mut (_2.1: bool); // scope 1 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL - _2 = (const 1_i32, const false); // scope 2 at $DIR/address_of_pair.rs:+3:5: +3:22 - StorageLive(_4); // scope 2 at $DIR/address_of_pair.rs:+4:5: +6:6 - (*_3) = const true; // scope 3 at $DIR/address_of_pair.rs:+5:9: +5:20 - _4 = const (); // scope 3 at $DIR/address_of_pair.rs:+4:5: +6:6 - StorageDead(_4); // scope 2 at $DIR/address_of_pair.rs:+6:5: +6:6 - StorageLive(_5); // scope 2 at $DIR/address_of_pair.rs:+7:9: +7:12 - StorageLive(_6); // scope 2 at $DIR/address_of_pair.rs:+7:16: +7:22 - _6 = (_2.1: bool); // scope 2 at $DIR/address_of_pair.rs:+7:16: +7:22 - _5 = Not(move _6); // scope 2 at $DIR/address_of_pair.rs:+7:15: +7:22 - StorageDead(_6); // scope 2 at $DIR/address_of_pair.rs:+7:21: +7:22 - _0 = _5; // scope 4 at $DIR/address_of_pair.rs:+8:12: +8:15 - StorageDead(_5); // scope 2 at $DIR/address_of_pair.rs:+9:1: +9:2 - StorageDead(_3); // scope 1 at $DIR/address_of_pair.rs:+9:1: +9:2 - StorageDead(_2); // scope 0 at $DIR/address_of_pair.rs:+9:1: +9:2 - return; // scope 0 at $DIR/address_of_pair.rs:+9:2: +9:2 + StorageLive(_2); + _2 = (const 1_i32, const false); + StorageLive(_3); + _3 = &raw mut (_2.1: bool); + _2 = (const 1_i32, const false); + StorageLive(_4); + (*_3) = const true; + _4 = const (); + StorageDead(_4); + StorageLive(_5); + StorageLive(_6); + _6 = (_2.1: bool); + _5 = Not(move _6); + StorageDead(_6); + _0 = _5; + StorageDead(_5); + StorageDead(_3); + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/const_prop/aggregate.foo.ConstProp.panic-abort.diff b/tests/mir-opt/const_prop/aggregate.foo.ConstProp.panic-abort.diff index 6ac460db86f81..5e2db148de83b 100644 --- a/tests/mir-opt/const_prop/aggregate.foo.ConstProp.panic-abort.diff +++ b/tests/mir-opt/const_prop/aggregate.foo.ConstProp.panic-abort.diff @@ -2,54 +2,54 @@ + // MIR for `foo` after ConstProp fn foo(_1: u8) -> () { - debug x => _1; // in scope 0 at $DIR/aggregate.rs:+0:8: +0:9 - let mut _0: (); // return place in scope 0 at $DIR/aggregate.rs:+0:15: +0:15 - let _2: i32; // in scope 0 at $DIR/aggregate.rs:+2:9: +2:14 - let mut _3: i32; // in scope 0 at $DIR/aggregate.rs:+2:17: +2:25 - let mut _4: (i32, u8); // in scope 0 at $DIR/aggregate.rs:+2:17: +2:23 - let mut _5: u8; // in scope 0 at $DIR/aggregate.rs:+2:21: +2:22 - let mut _7: i32; // in scope 0 at $DIR/aggregate.rs:+3:18: +3:26 - let mut _8: (u8, i32); // in scope 0 at $DIR/aggregate.rs:+3:18: +3:24 - let mut _9: u8; // in scope 0 at $DIR/aggregate.rs:+3:19: +3:20 + debug x => _1; + let mut _0: (); + let _2: i32; + let mut _3: i32; + let mut _4: (i32, u8); + let mut _5: u8; + let mut _7: i32; + let mut _8: (u8, i32); + let mut _9: u8; scope 1 { - debug first => _2; // in scope 1 at $DIR/aggregate.rs:+2:9: +2:14 - let _6: i32; // in scope 1 at $DIR/aggregate.rs:+3:9: +3:15 + debug first => _2; + let _6: i32; scope 2 { - debug second => _6; // in scope 2 at $DIR/aggregate.rs:+3:9: +3:15 + debug second => _6; } } bb0: { - StorageLive(_2); // scope 0 at $DIR/aggregate.rs:+2:9: +2:14 - StorageLive(_3); // scope 0 at $DIR/aggregate.rs:+2:17: +2:25 - StorageLive(_4); // scope 0 at $DIR/aggregate.rs:+2:17: +2:23 - StorageLive(_5); // scope 0 at $DIR/aggregate.rs:+2:21: +2:22 - _5 = _1; // scope 0 at $DIR/aggregate.rs:+2:21: +2:22 - _4 = (const 0_i32, move _5); // scope 0 at $DIR/aggregate.rs:+2:17: +2:23 - StorageDead(_5); // scope 0 at $DIR/aggregate.rs:+2:22: +2:23 -- _3 = (_4.0: i32); // scope 0 at $DIR/aggregate.rs:+2:17: +2:25 -- _2 = Add(move _3, const 1_i32); // scope 0 at $DIR/aggregate.rs:+2:17: +2:29 -+ _3 = const 0_i32; // scope 0 at $DIR/aggregate.rs:+2:17: +2:25 -+ _2 = const 1_i32; // scope 0 at $DIR/aggregate.rs:+2:17: +2:29 - StorageDead(_3); // scope 0 at $DIR/aggregate.rs:+2:28: +2:29 - StorageDead(_4); // scope 0 at $DIR/aggregate.rs:+2:29: +2:30 - StorageLive(_6); // scope 1 at $DIR/aggregate.rs:+3:9: +3:15 - StorageLive(_7); // scope 1 at $DIR/aggregate.rs:+3:18: +3:26 - StorageLive(_8); // scope 1 at $DIR/aggregate.rs:+3:18: +3:24 - StorageLive(_9); // scope 1 at $DIR/aggregate.rs:+3:19: +3:20 - _9 = _1; // scope 1 at $DIR/aggregate.rs:+3:19: +3:20 - _8 = (move _9, const 1_i32); // scope 1 at $DIR/aggregate.rs:+3:18: +3:24 - StorageDead(_9); // scope 1 at $DIR/aggregate.rs:+3:23: +3:24 -- _7 = (_8.1: i32); // scope 1 at $DIR/aggregate.rs:+3:18: +3:26 -- _6 = Add(move _7, const 2_i32); // scope 1 at $DIR/aggregate.rs:+3:18: +3:30 -+ _7 = const 1_i32; // scope 1 at $DIR/aggregate.rs:+3:18: +3:26 -+ _6 = const 3_i32; // scope 1 at $DIR/aggregate.rs:+3:18: +3:30 - StorageDead(_7); // scope 1 at $DIR/aggregate.rs:+3:29: +3:30 - StorageDead(_8); // scope 1 at $DIR/aggregate.rs:+3:30: +3:31 - _0 = const (); // scope 0 at $DIR/aggregate.rs:+0:15: +4:2 - StorageDead(_6); // scope 1 at $DIR/aggregate.rs:+4:1: +4:2 - StorageDead(_2); // scope 0 at $DIR/aggregate.rs:+4:1: +4:2 - return; // scope 0 at $DIR/aggregate.rs:+4:2: +4:2 + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + StorageLive(_5); + _5 = _1; + _4 = (const 0_i32, move _5); + StorageDead(_5); +- _3 = (_4.0: i32); +- _2 = Add(move _3, const 1_i32); ++ _3 = const 0_i32; ++ _2 = const 1_i32; + StorageDead(_3); + StorageDead(_4); + StorageLive(_6); + StorageLive(_7); + StorageLive(_8); + StorageLive(_9); + _9 = _1; + _8 = (move _9, const 1_i32); + StorageDead(_9); +- _7 = (_8.1: i32); +- _6 = Add(move _7, const 2_i32); ++ _7 = const 1_i32; ++ _6 = const 3_i32; + StorageDead(_7); + StorageDead(_8); + _0 = const (); + StorageDead(_6); + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/const_prop/aggregate.foo.ConstProp.panic-unwind.diff b/tests/mir-opt/const_prop/aggregate.foo.ConstProp.panic-unwind.diff index 6ac460db86f81..5e2db148de83b 100644 --- a/tests/mir-opt/const_prop/aggregate.foo.ConstProp.panic-unwind.diff +++ b/tests/mir-opt/const_prop/aggregate.foo.ConstProp.panic-unwind.diff @@ -2,54 +2,54 @@ + // MIR for `foo` after ConstProp fn foo(_1: u8) -> () { - debug x => _1; // in scope 0 at $DIR/aggregate.rs:+0:8: +0:9 - let mut _0: (); // return place in scope 0 at $DIR/aggregate.rs:+0:15: +0:15 - let _2: i32; // in scope 0 at $DIR/aggregate.rs:+2:9: +2:14 - let mut _3: i32; // in scope 0 at $DIR/aggregate.rs:+2:17: +2:25 - let mut _4: (i32, u8); // in scope 0 at $DIR/aggregate.rs:+2:17: +2:23 - let mut _5: u8; // in scope 0 at $DIR/aggregate.rs:+2:21: +2:22 - let mut _7: i32; // in scope 0 at $DIR/aggregate.rs:+3:18: +3:26 - let mut _8: (u8, i32); // in scope 0 at $DIR/aggregate.rs:+3:18: +3:24 - let mut _9: u8; // in scope 0 at $DIR/aggregate.rs:+3:19: +3:20 + debug x => _1; + let mut _0: (); + let _2: i32; + let mut _3: i32; + let mut _4: (i32, u8); + let mut _5: u8; + let mut _7: i32; + let mut _8: (u8, i32); + let mut _9: u8; scope 1 { - debug first => _2; // in scope 1 at $DIR/aggregate.rs:+2:9: +2:14 - let _6: i32; // in scope 1 at $DIR/aggregate.rs:+3:9: +3:15 + debug first => _2; + let _6: i32; scope 2 { - debug second => _6; // in scope 2 at $DIR/aggregate.rs:+3:9: +3:15 + debug second => _6; } } bb0: { - StorageLive(_2); // scope 0 at $DIR/aggregate.rs:+2:9: +2:14 - StorageLive(_3); // scope 0 at $DIR/aggregate.rs:+2:17: +2:25 - StorageLive(_4); // scope 0 at $DIR/aggregate.rs:+2:17: +2:23 - StorageLive(_5); // scope 0 at $DIR/aggregate.rs:+2:21: +2:22 - _5 = _1; // scope 0 at $DIR/aggregate.rs:+2:21: +2:22 - _4 = (const 0_i32, move _5); // scope 0 at $DIR/aggregate.rs:+2:17: +2:23 - StorageDead(_5); // scope 0 at $DIR/aggregate.rs:+2:22: +2:23 -- _3 = (_4.0: i32); // scope 0 at $DIR/aggregate.rs:+2:17: +2:25 -- _2 = Add(move _3, const 1_i32); // scope 0 at $DIR/aggregate.rs:+2:17: +2:29 -+ _3 = const 0_i32; // scope 0 at $DIR/aggregate.rs:+2:17: +2:25 -+ _2 = const 1_i32; // scope 0 at $DIR/aggregate.rs:+2:17: +2:29 - StorageDead(_3); // scope 0 at $DIR/aggregate.rs:+2:28: +2:29 - StorageDead(_4); // scope 0 at $DIR/aggregate.rs:+2:29: +2:30 - StorageLive(_6); // scope 1 at $DIR/aggregate.rs:+3:9: +3:15 - StorageLive(_7); // scope 1 at $DIR/aggregate.rs:+3:18: +3:26 - StorageLive(_8); // scope 1 at $DIR/aggregate.rs:+3:18: +3:24 - StorageLive(_9); // scope 1 at $DIR/aggregate.rs:+3:19: +3:20 - _9 = _1; // scope 1 at $DIR/aggregate.rs:+3:19: +3:20 - _8 = (move _9, const 1_i32); // scope 1 at $DIR/aggregate.rs:+3:18: +3:24 - StorageDead(_9); // scope 1 at $DIR/aggregate.rs:+3:23: +3:24 -- _7 = (_8.1: i32); // scope 1 at $DIR/aggregate.rs:+3:18: +3:26 -- _6 = Add(move _7, const 2_i32); // scope 1 at $DIR/aggregate.rs:+3:18: +3:30 -+ _7 = const 1_i32; // scope 1 at $DIR/aggregate.rs:+3:18: +3:26 -+ _6 = const 3_i32; // scope 1 at $DIR/aggregate.rs:+3:18: +3:30 - StorageDead(_7); // scope 1 at $DIR/aggregate.rs:+3:29: +3:30 - StorageDead(_8); // scope 1 at $DIR/aggregate.rs:+3:30: +3:31 - _0 = const (); // scope 0 at $DIR/aggregate.rs:+0:15: +4:2 - StorageDead(_6); // scope 1 at $DIR/aggregate.rs:+4:1: +4:2 - StorageDead(_2); // scope 0 at $DIR/aggregate.rs:+4:1: +4:2 - return; // scope 0 at $DIR/aggregate.rs:+4:2: +4:2 + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + StorageLive(_5); + _5 = _1; + _4 = (const 0_i32, move _5); + StorageDead(_5); +- _3 = (_4.0: i32); +- _2 = Add(move _3, const 1_i32); ++ _3 = const 0_i32; ++ _2 = const 1_i32; + StorageDead(_3); + StorageDead(_4); + StorageLive(_6); + StorageLive(_7); + StorageLive(_8); + StorageLive(_9); + _9 = _1; + _8 = (move _9, const 1_i32); + StorageDead(_9); +- _7 = (_8.1: i32); +- _6 = Add(move _7, const 2_i32); ++ _7 = const 1_i32; ++ _6 = const 3_i32; + StorageDead(_7); + StorageDead(_8); + _0 = const (); + StorageDead(_6); + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/const_prop/aggregate.foo.PreCodegen.after.panic-abort.mir b/tests/mir-opt/const_prop/aggregate.foo.PreCodegen.after.panic-abort.mir index 2ef6d74e52846..b9c5859cade4f 100644 --- a/tests/mir-opt/const_prop/aggregate.foo.PreCodegen.after.panic-abort.mir +++ b/tests/mir-opt/const_prop/aggregate.foo.PreCodegen.after.panic-abort.mir @@ -1,49 +1,49 @@ // MIR for `foo` after PreCodegen fn foo(_1: u8) -> () { - debug x => _1; // in scope 0 at $DIR/aggregate.rs:+0:8: +0:9 - let mut _0: (); // return place in scope 0 at $DIR/aggregate.rs:+0:15: +0:15 - let _2: i32; // in scope 0 at $DIR/aggregate.rs:+2:9: +2:14 - let mut _3: i32; // in scope 0 at $DIR/aggregate.rs:+2:17: +2:25 - let mut _4: (i32, u8); // in scope 0 at $DIR/aggregate.rs:+2:17: +2:23 - let mut _5: u8; // in scope 0 at $DIR/aggregate.rs:+2:21: +2:22 - let mut _7: i32; // in scope 0 at $DIR/aggregate.rs:+3:18: +3:26 - let mut _8: (u8, i32); // in scope 0 at $DIR/aggregate.rs:+3:18: +3:24 - let mut _9: u8; // in scope 0 at $DIR/aggregate.rs:+3:19: +3:20 + debug x => _1; + let mut _0: (); + let _2: i32; + let mut _3: i32; + let mut _4: (i32, u8); + let mut _5: u8; + let mut _7: i32; + let mut _8: (u8, i32); + let mut _9: u8; scope 1 { - debug first => _2; // in scope 1 at $DIR/aggregate.rs:+2:9: +2:14 - let _6: i32; // in scope 1 at $DIR/aggregate.rs:+3:9: +3:15 + debug first => _2; + let _6: i32; scope 2 { - debug second => _6; // in scope 2 at $DIR/aggregate.rs:+3:9: +3:15 + debug second => _6; } } bb0: { - StorageLive(_2); // scope 0 at $DIR/aggregate.rs:+2:9: +2:14 - StorageLive(_3); // scope 0 at $DIR/aggregate.rs:+2:17: +2:25 - StorageLive(_4); // scope 0 at $DIR/aggregate.rs:+2:17: +2:23 - StorageLive(_5); // scope 0 at $DIR/aggregate.rs:+2:21: +2:22 - _5 = _1; // scope 0 at $DIR/aggregate.rs:+2:21: +2:22 - _4 = (const 0_i32, move _5); // scope 0 at $DIR/aggregate.rs:+2:17: +2:23 - StorageDead(_5); // scope 0 at $DIR/aggregate.rs:+2:22: +2:23 - _3 = const 0_i32; // scope 0 at $DIR/aggregate.rs:+2:17: +2:25 - _2 = const 1_i32; // scope 0 at $DIR/aggregate.rs:+2:17: +2:29 - StorageDead(_3); // scope 0 at $DIR/aggregate.rs:+2:28: +2:29 - StorageDead(_4); // scope 0 at $DIR/aggregate.rs:+2:29: +2:30 - StorageLive(_6); // scope 1 at $DIR/aggregate.rs:+3:9: +3:15 - StorageLive(_7); // scope 1 at $DIR/aggregate.rs:+3:18: +3:26 - StorageLive(_8); // scope 1 at $DIR/aggregate.rs:+3:18: +3:24 - StorageLive(_9); // scope 1 at $DIR/aggregate.rs:+3:19: +3:20 - _9 = _1; // scope 1 at $DIR/aggregate.rs:+3:19: +3:20 - _8 = (move _9, const 1_i32); // scope 1 at $DIR/aggregate.rs:+3:18: +3:24 - StorageDead(_9); // scope 1 at $DIR/aggregate.rs:+3:23: +3:24 - _7 = const 1_i32; // scope 1 at $DIR/aggregate.rs:+3:18: +3:26 - _6 = const 3_i32; // scope 1 at $DIR/aggregate.rs:+3:18: +3:30 - StorageDead(_7); // scope 1 at $DIR/aggregate.rs:+3:29: +3:30 - StorageDead(_8); // scope 1 at $DIR/aggregate.rs:+3:30: +3:31 - _0 = const (); // scope 0 at $DIR/aggregate.rs:+0:15: +4:2 - StorageDead(_6); // scope 1 at $DIR/aggregate.rs:+4:1: +4:2 - StorageDead(_2); // scope 0 at $DIR/aggregate.rs:+4:1: +4:2 - return; // scope 0 at $DIR/aggregate.rs:+4:2: +4:2 + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + StorageLive(_5); + _5 = _1; + _4 = (const 0_i32, move _5); + StorageDead(_5); + _3 = const 0_i32; + _2 = const 1_i32; + StorageDead(_3); + StorageDead(_4); + StorageLive(_6); + StorageLive(_7); + StorageLive(_8); + StorageLive(_9); + _9 = _1; + _8 = (move _9, const 1_i32); + StorageDead(_9); + _7 = const 1_i32; + _6 = const 3_i32; + StorageDead(_7); + StorageDead(_8); + _0 = const (); + StorageDead(_6); + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/const_prop/aggregate.foo.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/const_prop/aggregate.foo.PreCodegen.after.panic-unwind.mir index 2ef6d74e52846..b9c5859cade4f 100644 --- a/tests/mir-opt/const_prop/aggregate.foo.PreCodegen.after.panic-unwind.mir +++ b/tests/mir-opt/const_prop/aggregate.foo.PreCodegen.after.panic-unwind.mir @@ -1,49 +1,49 @@ // MIR for `foo` after PreCodegen fn foo(_1: u8) -> () { - debug x => _1; // in scope 0 at $DIR/aggregate.rs:+0:8: +0:9 - let mut _0: (); // return place in scope 0 at $DIR/aggregate.rs:+0:15: +0:15 - let _2: i32; // in scope 0 at $DIR/aggregate.rs:+2:9: +2:14 - let mut _3: i32; // in scope 0 at $DIR/aggregate.rs:+2:17: +2:25 - let mut _4: (i32, u8); // in scope 0 at $DIR/aggregate.rs:+2:17: +2:23 - let mut _5: u8; // in scope 0 at $DIR/aggregate.rs:+2:21: +2:22 - let mut _7: i32; // in scope 0 at $DIR/aggregate.rs:+3:18: +3:26 - let mut _8: (u8, i32); // in scope 0 at $DIR/aggregate.rs:+3:18: +3:24 - let mut _9: u8; // in scope 0 at $DIR/aggregate.rs:+3:19: +3:20 + debug x => _1; + let mut _0: (); + let _2: i32; + let mut _3: i32; + let mut _4: (i32, u8); + let mut _5: u8; + let mut _7: i32; + let mut _8: (u8, i32); + let mut _9: u8; scope 1 { - debug first => _2; // in scope 1 at $DIR/aggregate.rs:+2:9: +2:14 - let _6: i32; // in scope 1 at $DIR/aggregate.rs:+3:9: +3:15 + debug first => _2; + let _6: i32; scope 2 { - debug second => _6; // in scope 2 at $DIR/aggregate.rs:+3:9: +3:15 + debug second => _6; } } bb0: { - StorageLive(_2); // scope 0 at $DIR/aggregate.rs:+2:9: +2:14 - StorageLive(_3); // scope 0 at $DIR/aggregate.rs:+2:17: +2:25 - StorageLive(_4); // scope 0 at $DIR/aggregate.rs:+2:17: +2:23 - StorageLive(_5); // scope 0 at $DIR/aggregate.rs:+2:21: +2:22 - _5 = _1; // scope 0 at $DIR/aggregate.rs:+2:21: +2:22 - _4 = (const 0_i32, move _5); // scope 0 at $DIR/aggregate.rs:+2:17: +2:23 - StorageDead(_5); // scope 0 at $DIR/aggregate.rs:+2:22: +2:23 - _3 = const 0_i32; // scope 0 at $DIR/aggregate.rs:+2:17: +2:25 - _2 = const 1_i32; // scope 0 at $DIR/aggregate.rs:+2:17: +2:29 - StorageDead(_3); // scope 0 at $DIR/aggregate.rs:+2:28: +2:29 - StorageDead(_4); // scope 0 at $DIR/aggregate.rs:+2:29: +2:30 - StorageLive(_6); // scope 1 at $DIR/aggregate.rs:+3:9: +3:15 - StorageLive(_7); // scope 1 at $DIR/aggregate.rs:+3:18: +3:26 - StorageLive(_8); // scope 1 at $DIR/aggregate.rs:+3:18: +3:24 - StorageLive(_9); // scope 1 at $DIR/aggregate.rs:+3:19: +3:20 - _9 = _1; // scope 1 at $DIR/aggregate.rs:+3:19: +3:20 - _8 = (move _9, const 1_i32); // scope 1 at $DIR/aggregate.rs:+3:18: +3:24 - StorageDead(_9); // scope 1 at $DIR/aggregate.rs:+3:23: +3:24 - _7 = const 1_i32; // scope 1 at $DIR/aggregate.rs:+3:18: +3:26 - _6 = const 3_i32; // scope 1 at $DIR/aggregate.rs:+3:18: +3:30 - StorageDead(_7); // scope 1 at $DIR/aggregate.rs:+3:29: +3:30 - StorageDead(_8); // scope 1 at $DIR/aggregate.rs:+3:30: +3:31 - _0 = const (); // scope 0 at $DIR/aggregate.rs:+0:15: +4:2 - StorageDead(_6); // scope 1 at $DIR/aggregate.rs:+4:1: +4:2 - StorageDead(_2); // scope 0 at $DIR/aggregate.rs:+4:1: +4:2 - return; // scope 0 at $DIR/aggregate.rs:+4:2: +4:2 + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + StorageLive(_5); + _5 = _1; + _4 = (const 0_i32, move _5); + StorageDead(_5); + _3 = const 0_i32; + _2 = const 1_i32; + StorageDead(_3); + StorageDead(_4); + StorageLive(_6); + StorageLive(_7); + StorageLive(_8); + StorageLive(_9); + _9 = _1; + _8 = (move _9, const 1_i32); + StorageDead(_9); + _7 = const 1_i32; + _6 = const 3_i32; + StorageDead(_7); + StorageDead(_8); + _0 = const (); + StorageDead(_6); + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/const_prop/aggregate.main.ConstProp.panic-abort.diff b/tests/mir-opt/const_prop/aggregate.main.ConstProp.panic-abort.diff index 130c0a8d38c86..0fad231044290 100644 --- a/tests/mir-opt/const_prop/aggregate.main.ConstProp.panic-abort.diff +++ b/tests/mir-opt/const_prop/aggregate.main.ConstProp.panic-abort.diff @@ -2,43 +2,40 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/aggregate.rs:+0:11: +0:11 - let _1: u8; // in scope 0 at $DIR/aggregate.rs:+1:9: +1:10 - let mut _2: u8; // in scope 0 at $DIR/aggregate.rs:+1:13: +1:24 - let mut _3: (i32, u8, i32); // in scope 0 at $DIR/aggregate.rs:+1:13: +1:22 - let _4: (); // in scope 0 at $DIR/aggregate.rs:+2:5: +2:11 - let mut _5: u8; // in scope 0 at $DIR/aggregate.rs:+2:9: +2:10 + let mut _0: (); + let _1: u8; + let mut _2: u8; + let mut _3: (i32, u8, i32); + let _4: (); + let mut _5: u8; scope 1 { - debug x => _1; // in scope 1 at $DIR/aggregate.rs:+1:9: +1:10 + debug x => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/aggregate.rs:+1:9: +1:10 - StorageLive(_2); // scope 0 at $DIR/aggregate.rs:+1:13: +1:24 - StorageLive(_3); // scope 0 at $DIR/aggregate.rs:+1:13: +1:22 - _3 = (const 0_i32, const 1_u8, const 2_i32); // scope 0 at $DIR/aggregate.rs:+1:13: +1:22 -- _2 = (_3.1: u8); // scope 0 at $DIR/aggregate.rs:+1:13: +1:24 -- _1 = Add(move _2, const 0_u8); // scope 0 at $DIR/aggregate.rs:+1:13: +1:28 -+ _2 = const 1_u8; // scope 0 at $DIR/aggregate.rs:+1:13: +1:24 -+ _1 = const 1_u8; // scope 0 at $DIR/aggregate.rs:+1:13: +1:28 - StorageDead(_2); // scope 0 at $DIR/aggregate.rs:+1:27: +1:28 - StorageDead(_3); // scope 0 at $DIR/aggregate.rs:+1:28: +1:29 - StorageLive(_4); // scope 1 at $DIR/aggregate.rs:+2:5: +2:11 - StorageLive(_5); // scope 1 at $DIR/aggregate.rs:+2:9: +2:10 -- _5 = _1; // scope 1 at $DIR/aggregate.rs:+2:9: +2:10 -+ _5 = const 1_u8; // scope 1 at $DIR/aggregate.rs:+2:9: +2:10 - _4 = foo(move _5) -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/aggregate.rs:+2:5: +2:11 - // mir::Constant - // + span: $DIR/aggregate.rs:9:5: 9:8 - // + literal: Const { ty: fn(u8) {foo}, val: Value() } + StorageLive(_1); + StorageLive(_2); + StorageLive(_3); + _3 = (const 0_i32, const 1_u8, const 2_i32); +- _2 = (_3.1: u8); +- _1 = Add(move _2, const 0_u8); ++ _2 = const 1_u8; ++ _1 = const 1_u8; + StorageDead(_2); + StorageDead(_3); + StorageLive(_4); + StorageLive(_5); +- _5 = _1; ++ _5 = const 1_u8; + _4 = foo(move _5) -> [return: bb1, unwind unreachable]; } bb1: { - StorageDead(_5); // scope 1 at $DIR/aggregate.rs:+2:10: +2:11 - StorageDead(_4); // scope 1 at $DIR/aggregate.rs:+2:11: +2:12 - _0 = const (); // scope 0 at $DIR/aggregate.rs:+0:11: +3:2 - StorageDead(_1); // scope 0 at $DIR/aggregate.rs:+3:1: +3:2 - return; // scope 0 at $DIR/aggregate.rs:+3:2: +3:2 + StorageDead(_5); + StorageDead(_4); + _0 = const (); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/aggregate.main.ConstProp.panic-unwind.diff b/tests/mir-opt/const_prop/aggregate.main.ConstProp.panic-unwind.diff index 0411972661eb7..73b5baafb3323 100644 --- a/tests/mir-opt/const_prop/aggregate.main.ConstProp.panic-unwind.diff +++ b/tests/mir-opt/const_prop/aggregate.main.ConstProp.panic-unwind.diff @@ -2,43 +2,40 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/aggregate.rs:+0:11: +0:11 - let _1: u8; // in scope 0 at $DIR/aggregate.rs:+1:9: +1:10 - let mut _2: u8; // in scope 0 at $DIR/aggregate.rs:+1:13: +1:24 - let mut _3: (i32, u8, i32); // in scope 0 at $DIR/aggregate.rs:+1:13: +1:22 - let _4: (); // in scope 0 at $DIR/aggregate.rs:+2:5: +2:11 - let mut _5: u8; // in scope 0 at $DIR/aggregate.rs:+2:9: +2:10 + let mut _0: (); + let _1: u8; + let mut _2: u8; + let mut _3: (i32, u8, i32); + let _4: (); + let mut _5: u8; scope 1 { - debug x => _1; // in scope 1 at $DIR/aggregate.rs:+1:9: +1:10 + debug x => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/aggregate.rs:+1:9: +1:10 - StorageLive(_2); // scope 0 at $DIR/aggregate.rs:+1:13: +1:24 - StorageLive(_3); // scope 0 at $DIR/aggregate.rs:+1:13: +1:22 - _3 = (const 0_i32, const 1_u8, const 2_i32); // scope 0 at $DIR/aggregate.rs:+1:13: +1:22 -- _2 = (_3.1: u8); // scope 0 at $DIR/aggregate.rs:+1:13: +1:24 -- _1 = Add(move _2, const 0_u8); // scope 0 at $DIR/aggregate.rs:+1:13: +1:28 -+ _2 = const 1_u8; // scope 0 at $DIR/aggregate.rs:+1:13: +1:24 -+ _1 = const 1_u8; // scope 0 at $DIR/aggregate.rs:+1:13: +1:28 - StorageDead(_2); // scope 0 at $DIR/aggregate.rs:+1:27: +1:28 - StorageDead(_3); // scope 0 at $DIR/aggregate.rs:+1:28: +1:29 - StorageLive(_4); // scope 1 at $DIR/aggregate.rs:+2:5: +2:11 - StorageLive(_5); // scope 1 at $DIR/aggregate.rs:+2:9: +2:10 -- _5 = _1; // scope 1 at $DIR/aggregate.rs:+2:9: +2:10 -+ _5 = const 1_u8; // scope 1 at $DIR/aggregate.rs:+2:9: +2:10 - _4 = foo(move _5) -> bb1; // scope 1 at $DIR/aggregate.rs:+2:5: +2:11 - // mir::Constant - // + span: $DIR/aggregate.rs:9:5: 9:8 - // + literal: Const { ty: fn(u8) {foo}, val: Value() } + StorageLive(_1); + StorageLive(_2); + StorageLive(_3); + _3 = (const 0_i32, const 1_u8, const 2_i32); +- _2 = (_3.1: u8); +- _1 = Add(move _2, const 0_u8); ++ _2 = const 1_u8; ++ _1 = const 1_u8; + StorageDead(_2); + StorageDead(_3); + StorageLive(_4); + StorageLive(_5); +- _5 = _1; ++ _5 = const 1_u8; + _4 = foo(move _5) -> bb1; } bb1: { - StorageDead(_5); // scope 1 at $DIR/aggregate.rs:+2:10: +2:11 - StorageDead(_4); // scope 1 at $DIR/aggregate.rs:+2:11: +2:12 - _0 = const (); // scope 0 at $DIR/aggregate.rs:+0:11: +3:2 - StorageDead(_1); // scope 0 at $DIR/aggregate.rs:+3:1: +3:2 - return; // scope 0 at $DIR/aggregate.rs:+3:2: +3:2 + StorageDead(_5); + StorageDead(_4); + _0 = const (); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/aggregate.main.PreCodegen.after.panic-abort.mir b/tests/mir-opt/const_prop/aggregate.main.PreCodegen.after.panic-abort.mir index 06243db8b7e80..2ab6c1bf34dc1 100644 --- a/tests/mir-opt/const_prop/aggregate.main.PreCodegen.after.panic-abort.mir +++ b/tests/mir-opt/const_prop/aggregate.main.PreCodegen.after.panic-abort.mir @@ -1,39 +1,36 @@ // MIR for `main` after PreCodegen fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/aggregate.rs:+0:11: +0:11 - let _1: u8; // in scope 0 at $DIR/aggregate.rs:+1:9: +1:10 - let mut _2: u8; // in scope 0 at $DIR/aggregate.rs:+1:13: +1:24 - let mut _3: (i32, u8, i32); // in scope 0 at $DIR/aggregate.rs:+1:13: +1:22 - let _4: (); // in scope 0 at $DIR/aggregate.rs:+2:5: +2:11 - let mut _5: u8; // in scope 0 at $DIR/aggregate.rs:+2:9: +2:10 + let mut _0: (); + let _1: u8; + let mut _2: u8; + let mut _3: (i32, u8, i32); + let _4: (); + let mut _5: u8; scope 1 { - debug x => _1; // in scope 1 at $DIR/aggregate.rs:+1:9: +1:10 + debug x => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/aggregate.rs:+1:9: +1:10 - StorageLive(_2); // scope 0 at $DIR/aggregate.rs:+1:13: +1:24 - StorageLive(_3); // scope 0 at $DIR/aggregate.rs:+1:13: +1:22 - _3 = (const 0_i32, const 1_u8, const 2_i32); // scope 0 at $DIR/aggregate.rs:+1:13: +1:22 - _2 = const 1_u8; // scope 0 at $DIR/aggregate.rs:+1:13: +1:24 - _1 = const 1_u8; // scope 0 at $DIR/aggregate.rs:+1:13: +1:28 - StorageDead(_2); // scope 0 at $DIR/aggregate.rs:+1:27: +1:28 - StorageDead(_3); // scope 0 at $DIR/aggregate.rs:+1:28: +1:29 - StorageLive(_4); // scope 1 at $DIR/aggregate.rs:+2:5: +2:11 - StorageLive(_5); // scope 1 at $DIR/aggregate.rs:+2:9: +2:10 - _5 = const 1_u8; // scope 1 at $DIR/aggregate.rs:+2:9: +2:10 - _4 = foo(move _5) -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/aggregate.rs:+2:5: +2:11 - // mir::Constant - // + span: $DIR/aggregate.rs:9:5: 9:8 - // + literal: Const { ty: fn(u8) {foo}, val: Value() } + StorageLive(_1); + StorageLive(_2); + StorageLive(_3); + _3 = (const 0_i32, const 1_u8, const 2_i32); + _2 = const 1_u8; + _1 = const 1_u8; + StorageDead(_2); + StorageDead(_3); + StorageLive(_4); + StorageLive(_5); + _5 = const 1_u8; + _4 = foo(move _5) -> [return: bb1, unwind unreachable]; } bb1: { - StorageDead(_5); // scope 1 at $DIR/aggregate.rs:+2:10: +2:11 - StorageDead(_4); // scope 1 at $DIR/aggregate.rs:+2:11: +2:12 - _0 = const (); // scope 0 at $DIR/aggregate.rs:+0:11: +3:2 - StorageDead(_1); // scope 0 at $DIR/aggregate.rs:+3:1: +3:2 - return; // scope 0 at $DIR/aggregate.rs:+3:2: +3:2 + StorageDead(_5); + StorageDead(_4); + _0 = const (); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/aggregate.main.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/const_prop/aggregate.main.PreCodegen.after.panic-unwind.mir index 05d4bf8b52e79..93d461a38c4ae 100644 --- a/tests/mir-opt/const_prop/aggregate.main.PreCodegen.after.panic-unwind.mir +++ b/tests/mir-opt/const_prop/aggregate.main.PreCodegen.after.panic-unwind.mir @@ -1,39 +1,36 @@ // MIR for `main` after PreCodegen fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/aggregate.rs:+0:11: +0:11 - let _1: u8; // in scope 0 at $DIR/aggregate.rs:+1:9: +1:10 - let mut _2: u8; // in scope 0 at $DIR/aggregate.rs:+1:13: +1:24 - let mut _3: (i32, u8, i32); // in scope 0 at $DIR/aggregate.rs:+1:13: +1:22 - let _4: (); // in scope 0 at $DIR/aggregate.rs:+2:5: +2:11 - let mut _5: u8; // in scope 0 at $DIR/aggregate.rs:+2:9: +2:10 + let mut _0: (); + let _1: u8; + let mut _2: u8; + let mut _3: (i32, u8, i32); + let _4: (); + let mut _5: u8; scope 1 { - debug x => _1; // in scope 1 at $DIR/aggregate.rs:+1:9: +1:10 + debug x => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/aggregate.rs:+1:9: +1:10 - StorageLive(_2); // scope 0 at $DIR/aggregate.rs:+1:13: +1:24 - StorageLive(_3); // scope 0 at $DIR/aggregate.rs:+1:13: +1:22 - _3 = (const 0_i32, const 1_u8, const 2_i32); // scope 0 at $DIR/aggregate.rs:+1:13: +1:22 - _2 = const 1_u8; // scope 0 at $DIR/aggregate.rs:+1:13: +1:24 - _1 = const 1_u8; // scope 0 at $DIR/aggregate.rs:+1:13: +1:28 - StorageDead(_2); // scope 0 at $DIR/aggregate.rs:+1:27: +1:28 - StorageDead(_3); // scope 0 at $DIR/aggregate.rs:+1:28: +1:29 - StorageLive(_4); // scope 1 at $DIR/aggregate.rs:+2:5: +2:11 - StorageLive(_5); // scope 1 at $DIR/aggregate.rs:+2:9: +2:10 - _5 = const 1_u8; // scope 1 at $DIR/aggregate.rs:+2:9: +2:10 - _4 = foo(move _5) -> bb1; // scope 1 at $DIR/aggregate.rs:+2:5: +2:11 - // mir::Constant - // + span: $DIR/aggregate.rs:9:5: 9:8 - // + literal: Const { ty: fn(u8) {foo}, val: Value() } + StorageLive(_1); + StorageLive(_2); + StorageLive(_3); + _3 = (const 0_i32, const 1_u8, const 2_i32); + _2 = const 1_u8; + _1 = const 1_u8; + StorageDead(_2); + StorageDead(_3); + StorageLive(_4); + StorageLive(_5); + _5 = const 1_u8; + _4 = foo(move _5) -> bb1; } bb1: { - StorageDead(_5); // scope 1 at $DIR/aggregate.rs:+2:10: +2:11 - StorageDead(_4); // scope 1 at $DIR/aggregate.rs:+2:11: +2:12 - _0 = const (); // scope 0 at $DIR/aggregate.rs:+0:11: +3:2 - StorageDead(_1); // scope 0 at $DIR/aggregate.rs:+3:1: +3:2 - return; // scope 0 at $DIR/aggregate.rs:+3:2: +3:2 + StorageDead(_5); + StorageDead(_4); + _0 = const (); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/array_index.main.ConstProp.32bit.panic-abort.diff b/tests/mir-opt/const_prop/array_index.main.ConstProp.32bit.panic-abort.diff index 0859a1671da8b..012b11e0e38a3 100644 --- a/tests/mir-opt/const_prop/array_index.main.ConstProp.32bit.panic-abort.diff +++ b/tests/mir-opt/const_prop/array_index.main.ConstProp.32bit.panic-abort.diff @@ -2,38 +2,38 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/array_index.rs:+0:11: +0:11 - let _1: u32; // in scope 0 at $DIR/array_index.rs:+1:9: +1:10 - let mut _2: [u32; 4]; // in scope 0 at $DIR/array_index.rs:+1:18: +1:30 - let _3: usize; // in scope 0 at $DIR/array_index.rs:+1:31: +1:32 - let mut _4: usize; // in scope 0 at $DIR/array_index.rs:+1:18: +1:33 - let mut _5: bool; // in scope 0 at $DIR/array_index.rs:+1:18: +1:33 + let mut _0: (); + let _1: u32; + let mut _2: [u32; 4]; + let _3: usize; + let mut _4: usize; + let mut _5: bool; scope 1 { - debug x => _1; // in scope 1 at $DIR/array_index.rs:+1:9: +1:10 + debug x => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/array_index.rs:+1:9: +1:10 - StorageLive(_2); // scope 0 at $DIR/array_index.rs:+1:18: +1:30 - _2 = [const 0_u32, const 1_u32, const 2_u32, const 3_u32]; // scope 0 at $DIR/array_index.rs:+1:18: +1:30 - StorageLive(_3); // scope 0 at $DIR/array_index.rs:+1:31: +1:32 - _3 = const 2_usize; // scope 0 at $DIR/array_index.rs:+1:31: +1:32 -- _4 = Len(_2); // scope 0 at $DIR/array_index.rs:+1:18: +1:33 -- _5 = Lt(_3, _4); // scope 0 at $DIR/array_index.rs:+1:18: +1:33 -- assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind unreachable]; // scope 0 at $DIR/array_index.rs:+1:18: +1:33 -+ _4 = const 4_usize; // scope 0 at $DIR/array_index.rs:+1:18: +1:33 -+ _5 = const true; // scope 0 at $DIR/array_index.rs:+1:18: +1:33 -+ assert(const true, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind unreachable]; // scope 0 at $DIR/array_index.rs:+1:18: +1:33 + StorageLive(_1); + StorageLive(_2); + _2 = [const 0_u32, const 1_u32, const 2_u32, const 3_u32]; + StorageLive(_3); + _3 = const 2_usize; +- _4 = Len(_2); +- _5 = Lt(_3, _4); +- assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind unreachable]; ++ _4 = const 4_usize; ++ _5 = const true; ++ assert(const true, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind unreachable]; } bb1: { -- _1 = _2[_3]; // scope 0 at $DIR/array_index.rs:+1:18: +1:33 -+ _1 = const 2_u32; // scope 0 at $DIR/array_index.rs:+1:18: +1:33 - StorageDead(_3); // scope 0 at $DIR/array_index.rs:+1:33: +1:34 - StorageDead(_2); // scope 0 at $DIR/array_index.rs:+1:33: +1:34 - _0 = const (); // scope 0 at $DIR/array_index.rs:+0:11: +2:2 - StorageDead(_1); // scope 0 at $DIR/array_index.rs:+2:1: +2:2 - return; // scope 0 at $DIR/array_index.rs:+2:2: +2:2 +- _1 = _2[_3]; ++ _1 = const 2_u32; + StorageDead(_3); + StorageDead(_2); + _0 = const (); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/array_index.main.ConstProp.32bit.panic-unwind.diff b/tests/mir-opt/const_prop/array_index.main.ConstProp.32bit.panic-unwind.diff index 439b2a3e16b45..9ac2fac6c0045 100644 --- a/tests/mir-opt/const_prop/array_index.main.ConstProp.32bit.panic-unwind.diff +++ b/tests/mir-opt/const_prop/array_index.main.ConstProp.32bit.panic-unwind.diff @@ -2,38 +2,38 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/array_index.rs:+0:11: +0:11 - let _1: u32; // in scope 0 at $DIR/array_index.rs:+1:9: +1:10 - let mut _2: [u32; 4]; // in scope 0 at $DIR/array_index.rs:+1:18: +1:30 - let _3: usize; // in scope 0 at $DIR/array_index.rs:+1:31: +1:32 - let mut _4: usize; // in scope 0 at $DIR/array_index.rs:+1:18: +1:33 - let mut _5: bool; // in scope 0 at $DIR/array_index.rs:+1:18: +1:33 + let mut _0: (); + let _1: u32; + let mut _2: [u32; 4]; + let _3: usize; + let mut _4: usize; + let mut _5: bool; scope 1 { - debug x => _1; // in scope 1 at $DIR/array_index.rs:+1:9: +1:10 + debug x => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/array_index.rs:+1:9: +1:10 - StorageLive(_2); // scope 0 at $DIR/array_index.rs:+1:18: +1:30 - _2 = [const 0_u32, const 1_u32, const 2_u32, const 3_u32]; // scope 0 at $DIR/array_index.rs:+1:18: +1:30 - StorageLive(_3); // scope 0 at $DIR/array_index.rs:+1:31: +1:32 - _3 = const 2_usize; // scope 0 at $DIR/array_index.rs:+1:31: +1:32 -- _4 = Len(_2); // scope 0 at $DIR/array_index.rs:+1:18: +1:33 -- _5 = Lt(_3, _4); // scope 0 at $DIR/array_index.rs:+1:18: +1:33 -- assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> bb1; // scope 0 at $DIR/array_index.rs:+1:18: +1:33 -+ _4 = const 4_usize; // scope 0 at $DIR/array_index.rs:+1:18: +1:33 -+ _5 = const true; // scope 0 at $DIR/array_index.rs:+1:18: +1:33 -+ assert(const true, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> bb1; // scope 0 at $DIR/array_index.rs:+1:18: +1:33 + StorageLive(_1); + StorageLive(_2); + _2 = [const 0_u32, const 1_u32, const 2_u32, const 3_u32]; + StorageLive(_3); + _3 = const 2_usize; +- _4 = Len(_2); +- _5 = Lt(_3, _4); +- assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> bb1; ++ _4 = const 4_usize; ++ _5 = const true; ++ assert(const true, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> bb1; } bb1: { -- _1 = _2[_3]; // scope 0 at $DIR/array_index.rs:+1:18: +1:33 -+ _1 = const 2_u32; // scope 0 at $DIR/array_index.rs:+1:18: +1:33 - StorageDead(_3); // scope 0 at $DIR/array_index.rs:+1:33: +1:34 - StorageDead(_2); // scope 0 at $DIR/array_index.rs:+1:33: +1:34 - _0 = const (); // scope 0 at $DIR/array_index.rs:+0:11: +2:2 - StorageDead(_1); // scope 0 at $DIR/array_index.rs:+2:1: +2:2 - return; // scope 0 at $DIR/array_index.rs:+2:2: +2:2 +- _1 = _2[_3]; ++ _1 = const 2_u32; + StorageDead(_3); + StorageDead(_2); + _0 = const (); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/array_index.main.ConstProp.64bit.panic-abort.diff b/tests/mir-opt/const_prop/array_index.main.ConstProp.64bit.panic-abort.diff index 0859a1671da8b..012b11e0e38a3 100644 --- a/tests/mir-opt/const_prop/array_index.main.ConstProp.64bit.panic-abort.diff +++ b/tests/mir-opt/const_prop/array_index.main.ConstProp.64bit.panic-abort.diff @@ -2,38 +2,38 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/array_index.rs:+0:11: +0:11 - let _1: u32; // in scope 0 at $DIR/array_index.rs:+1:9: +1:10 - let mut _2: [u32; 4]; // in scope 0 at $DIR/array_index.rs:+1:18: +1:30 - let _3: usize; // in scope 0 at $DIR/array_index.rs:+1:31: +1:32 - let mut _4: usize; // in scope 0 at $DIR/array_index.rs:+1:18: +1:33 - let mut _5: bool; // in scope 0 at $DIR/array_index.rs:+1:18: +1:33 + let mut _0: (); + let _1: u32; + let mut _2: [u32; 4]; + let _3: usize; + let mut _4: usize; + let mut _5: bool; scope 1 { - debug x => _1; // in scope 1 at $DIR/array_index.rs:+1:9: +1:10 + debug x => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/array_index.rs:+1:9: +1:10 - StorageLive(_2); // scope 0 at $DIR/array_index.rs:+1:18: +1:30 - _2 = [const 0_u32, const 1_u32, const 2_u32, const 3_u32]; // scope 0 at $DIR/array_index.rs:+1:18: +1:30 - StorageLive(_3); // scope 0 at $DIR/array_index.rs:+1:31: +1:32 - _3 = const 2_usize; // scope 0 at $DIR/array_index.rs:+1:31: +1:32 -- _4 = Len(_2); // scope 0 at $DIR/array_index.rs:+1:18: +1:33 -- _5 = Lt(_3, _4); // scope 0 at $DIR/array_index.rs:+1:18: +1:33 -- assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind unreachable]; // scope 0 at $DIR/array_index.rs:+1:18: +1:33 -+ _4 = const 4_usize; // scope 0 at $DIR/array_index.rs:+1:18: +1:33 -+ _5 = const true; // scope 0 at $DIR/array_index.rs:+1:18: +1:33 -+ assert(const true, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind unreachable]; // scope 0 at $DIR/array_index.rs:+1:18: +1:33 + StorageLive(_1); + StorageLive(_2); + _2 = [const 0_u32, const 1_u32, const 2_u32, const 3_u32]; + StorageLive(_3); + _3 = const 2_usize; +- _4 = Len(_2); +- _5 = Lt(_3, _4); +- assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind unreachable]; ++ _4 = const 4_usize; ++ _5 = const true; ++ assert(const true, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind unreachable]; } bb1: { -- _1 = _2[_3]; // scope 0 at $DIR/array_index.rs:+1:18: +1:33 -+ _1 = const 2_u32; // scope 0 at $DIR/array_index.rs:+1:18: +1:33 - StorageDead(_3); // scope 0 at $DIR/array_index.rs:+1:33: +1:34 - StorageDead(_2); // scope 0 at $DIR/array_index.rs:+1:33: +1:34 - _0 = const (); // scope 0 at $DIR/array_index.rs:+0:11: +2:2 - StorageDead(_1); // scope 0 at $DIR/array_index.rs:+2:1: +2:2 - return; // scope 0 at $DIR/array_index.rs:+2:2: +2:2 +- _1 = _2[_3]; ++ _1 = const 2_u32; + StorageDead(_3); + StorageDead(_2); + _0 = const (); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/array_index.main.ConstProp.64bit.panic-unwind.diff b/tests/mir-opt/const_prop/array_index.main.ConstProp.64bit.panic-unwind.diff index 439b2a3e16b45..9ac2fac6c0045 100644 --- a/tests/mir-opt/const_prop/array_index.main.ConstProp.64bit.panic-unwind.diff +++ b/tests/mir-opt/const_prop/array_index.main.ConstProp.64bit.panic-unwind.diff @@ -2,38 +2,38 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/array_index.rs:+0:11: +0:11 - let _1: u32; // in scope 0 at $DIR/array_index.rs:+1:9: +1:10 - let mut _2: [u32; 4]; // in scope 0 at $DIR/array_index.rs:+1:18: +1:30 - let _3: usize; // in scope 0 at $DIR/array_index.rs:+1:31: +1:32 - let mut _4: usize; // in scope 0 at $DIR/array_index.rs:+1:18: +1:33 - let mut _5: bool; // in scope 0 at $DIR/array_index.rs:+1:18: +1:33 + let mut _0: (); + let _1: u32; + let mut _2: [u32; 4]; + let _3: usize; + let mut _4: usize; + let mut _5: bool; scope 1 { - debug x => _1; // in scope 1 at $DIR/array_index.rs:+1:9: +1:10 + debug x => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/array_index.rs:+1:9: +1:10 - StorageLive(_2); // scope 0 at $DIR/array_index.rs:+1:18: +1:30 - _2 = [const 0_u32, const 1_u32, const 2_u32, const 3_u32]; // scope 0 at $DIR/array_index.rs:+1:18: +1:30 - StorageLive(_3); // scope 0 at $DIR/array_index.rs:+1:31: +1:32 - _3 = const 2_usize; // scope 0 at $DIR/array_index.rs:+1:31: +1:32 -- _4 = Len(_2); // scope 0 at $DIR/array_index.rs:+1:18: +1:33 -- _5 = Lt(_3, _4); // scope 0 at $DIR/array_index.rs:+1:18: +1:33 -- assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> bb1; // scope 0 at $DIR/array_index.rs:+1:18: +1:33 -+ _4 = const 4_usize; // scope 0 at $DIR/array_index.rs:+1:18: +1:33 -+ _5 = const true; // scope 0 at $DIR/array_index.rs:+1:18: +1:33 -+ assert(const true, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> bb1; // scope 0 at $DIR/array_index.rs:+1:18: +1:33 + StorageLive(_1); + StorageLive(_2); + _2 = [const 0_u32, const 1_u32, const 2_u32, const 3_u32]; + StorageLive(_3); + _3 = const 2_usize; +- _4 = Len(_2); +- _5 = Lt(_3, _4); +- assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> bb1; ++ _4 = const 4_usize; ++ _5 = const true; ++ assert(const true, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> bb1; } bb1: { -- _1 = _2[_3]; // scope 0 at $DIR/array_index.rs:+1:18: +1:33 -+ _1 = const 2_u32; // scope 0 at $DIR/array_index.rs:+1:18: +1:33 - StorageDead(_3); // scope 0 at $DIR/array_index.rs:+1:33: +1:34 - StorageDead(_2); // scope 0 at $DIR/array_index.rs:+1:33: +1:34 - _0 = const (); // scope 0 at $DIR/array_index.rs:+0:11: +2:2 - StorageDead(_1); // scope 0 at $DIR/array_index.rs:+2:1: +2:2 - return; // scope 0 at $DIR/array_index.rs:+2:2: +2:2 +- _1 = _2[_3]; ++ _1 = const 2_u32; + StorageDead(_3); + StorageDead(_2); + _0 = const (); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/bad_op_div_by_zero.main.ConstProp.panic-abort.diff b/tests/mir-opt/const_prop/bad_op_div_by_zero.main.ConstProp.panic-abort.diff index 5ec96b440b9c5..34163d4d84a79 100644 --- a/tests/mir-opt/const_prop/bad_op_div_by_zero.main.ConstProp.panic-abort.diff +++ b/tests/mir-opt/const_prop/bad_op_div_by_zero.main.ConstProp.panic-abort.diff @@ -2,52 +2,52 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/bad_op_div_by_zero.rs:+0:11: +0:11 - let _1: i32; // in scope 0 at $DIR/bad_op_div_by_zero.rs:+1:9: +1:10 - let mut _3: i32; // in scope 0 at $DIR/bad_op_div_by_zero.rs:+2:18: +2:19 - let mut _4: bool; // in scope 0 at $DIR/bad_op_div_by_zero.rs:+2:14: +2:19 - let mut _5: bool; // in scope 0 at $DIR/bad_op_div_by_zero.rs:+2:14: +2:19 - let mut _6: bool; // in scope 0 at $DIR/bad_op_div_by_zero.rs:+2:14: +2:19 - let mut _7: bool; // in scope 0 at $DIR/bad_op_div_by_zero.rs:+2:14: +2:19 + let mut _0: (); + let _1: i32; + let mut _3: i32; + let mut _4: bool; + let mut _5: bool; + let mut _6: bool; + let mut _7: bool; scope 1 { - debug y => _1; // in scope 1 at $DIR/bad_op_div_by_zero.rs:+1:9: +1:10 - let _2: i32; // in scope 1 at $DIR/bad_op_div_by_zero.rs:+2:9: +2:11 + debug y => _1; + let _2: i32; scope 2 { - debug _z => _2; // in scope 2 at $DIR/bad_op_div_by_zero.rs:+2:9: +2:11 + debug _z => _2; } } bb0: { - StorageLive(_1); // scope 0 at $DIR/bad_op_div_by_zero.rs:+1:9: +1:10 - _1 = const 0_i32; // scope 0 at $DIR/bad_op_div_by_zero.rs:+1:13: +1:14 - StorageLive(_2); // scope 1 at $DIR/bad_op_div_by_zero.rs:+2:9: +2:11 - StorageLive(_3); // scope 1 at $DIR/bad_op_div_by_zero.rs:+2:18: +2:19 -- _3 = _1; // scope 1 at $DIR/bad_op_div_by_zero.rs:+2:18: +2:19 -- _4 = Eq(_3, const 0_i32); // scope 1 at $DIR/bad_op_div_by_zero.rs:+2:14: +2:19 -- assert(!move _4, "attempt to divide `{}` by zero", const 1_i32) -> [success: bb1, unwind unreachable]; // scope 1 at $DIR/bad_op_div_by_zero.rs:+2:14: +2:19 -+ _3 = const 0_i32; // scope 1 at $DIR/bad_op_div_by_zero.rs:+2:18: +2:19 -+ _4 = const true; // scope 1 at $DIR/bad_op_div_by_zero.rs:+2:14: +2:19 -+ assert(!const true, "attempt to divide `{}` by zero", const 1_i32) -> [success: bb1, unwind unreachable]; // scope 1 at $DIR/bad_op_div_by_zero.rs:+2:14: +2:19 + StorageLive(_1); + _1 = const 0_i32; + StorageLive(_2); + StorageLive(_3); +- _3 = _1; +- _4 = Eq(_3, const 0_i32); +- assert(!move _4, "attempt to divide `{}` by zero", const 1_i32) -> [success: bb1, unwind unreachable]; ++ _3 = const 0_i32; ++ _4 = const true; ++ assert(!const true, "attempt to divide `{}` by zero", const 1_i32) -> [success: bb1, unwind unreachable]; } bb1: { -- _5 = Eq(_3, const -1_i32); // scope 1 at $DIR/bad_op_div_by_zero.rs:+2:14: +2:19 -- _6 = Eq(const 1_i32, const i32::MIN); // scope 1 at $DIR/bad_op_div_by_zero.rs:+2:14: +2:19 -- _7 = BitAnd(move _5, move _6); // scope 1 at $DIR/bad_op_div_by_zero.rs:+2:14: +2:19 -- assert(!move _7, "attempt to compute `{} / {}`, which would overflow", const 1_i32, _3) -> [success: bb2, unwind unreachable]; // scope 1 at $DIR/bad_op_div_by_zero.rs:+2:14: +2:19 -+ _5 = const false; // scope 1 at $DIR/bad_op_div_by_zero.rs:+2:14: +2:19 -+ _6 = const false; // scope 1 at $DIR/bad_op_div_by_zero.rs:+2:14: +2:19 -+ _7 = const false; // scope 1 at $DIR/bad_op_div_by_zero.rs:+2:14: +2:19 -+ assert(!const false, "attempt to compute `{} / {}`, which would overflow", const 1_i32, _3) -> [success: bb2, unwind unreachable]; // scope 1 at $DIR/bad_op_div_by_zero.rs:+2:14: +2:19 +- _5 = Eq(_3, const -1_i32); +- _6 = Eq(const 1_i32, const i32::MIN); +- _7 = BitAnd(move _5, move _6); +- assert(!move _7, "attempt to compute `{} / {}`, which would overflow", const 1_i32, _3) -> [success: bb2, unwind unreachable]; ++ _5 = const false; ++ _6 = const false; ++ _7 = const false; ++ assert(!const false, "attempt to compute `{} / {}`, which would overflow", const 1_i32, _3) -> [success: bb2, unwind unreachable]; } bb2: { - _2 = Div(const 1_i32, move _3); // scope 1 at $DIR/bad_op_div_by_zero.rs:+2:14: +2:19 - StorageDead(_3); // scope 1 at $DIR/bad_op_div_by_zero.rs:+2:18: +2:19 - _0 = const (); // scope 0 at $DIR/bad_op_div_by_zero.rs:+0:11: +3:2 - StorageDead(_2); // scope 1 at $DIR/bad_op_div_by_zero.rs:+3:1: +3:2 - StorageDead(_1); // scope 0 at $DIR/bad_op_div_by_zero.rs:+3:1: +3:2 - return; // scope 0 at $DIR/bad_op_div_by_zero.rs:+3:2: +3:2 + _2 = Div(const 1_i32, move _3); + StorageDead(_3); + _0 = const (); + StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/bad_op_div_by_zero.main.ConstProp.panic-unwind.diff b/tests/mir-opt/const_prop/bad_op_div_by_zero.main.ConstProp.panic-unwind.diff index 900061a484b38..2aff357cc3e66 100644 --- a/tests/mir-opt/const_prop/bad_op_div_by_zero.main.ConstProp.panic-unwind.diff +++ b/tests/mir-opt/const_prop/bad_op_div_by_zero.main.ConstProp.panic-unwind.diff @@ -2,52 +2,52 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/bad_op_div_by_zero.rs:+0:11: +0:11 - let _1: i32; // in scope 0 at $DIR/bad_op_div_by_zero.rs:+1:9: +1:10 - let mut _3: i32; // in scope 0 at $DIR/bad_op_div_by_zero.rs:+2:18: +2:19 - let mut _4: bool; // in scope 0 at $DIR/bad_op_div_by_zero.rs:+2:14: +2:19 - let mut _5: bool; // in scope 0 at $DIR/bad_op_div_by_zero.rs:+2:14: +2:19 - let mut _6: bool; // in scope 0 at $DIR/bad_op_div_by_zero.rs:+2:14: +2:19 - let mut _7: bool; // in scope 0 at $DIR/bad_op_div_by_zero.rs:+2:14: +2:19 + let mut _0: (); + let _1: i32; + let mut _3: i32; + let mut _4: bool; + let mut _5: bool; + let mut _6: bool; + let mut _7: bool; scope 1 { - debug y => _1; // in scope 1 at $DIR/bad_op_div_by_zero.rs:+1:9: +1:10 - let _2: i32; // in scope 1 at $DIR/bad_op_div_by_zero.rs:+2:9: +2:11 + debug y => _1; + let _2: i32; scope 2 { - debug _z => _2; // in scope 2 at $DIR/bad_op_div_by_zero.rs:+2:9: +2:11 + debug _z => _2; } } bb0: { - StorageLive(_1); // scope 0 at $DIR/bad_op_div_by_zero.rs:+1:9: +1:10 - _1 = const 0_i32; // scope 0 at $DIR/bad_op_div_by_zero.rs:+1:13: +1:14 - StorageLive(_2); // scope 1 at $DIR/bad_op_div_by_zero.rs:+2:9: +2:11 - StorageLive(_3); // scope 1 at $DIR/bad_op_div_by_zero.rs:+2:18: +2:19 -- _3 = _1; // scope 1 at $DIR/bad_op_div_by_zero.rs:+2:18: +2:19 -- _4 = Eq(_3, const 0_i32); // scope 1 at $DIR/bad_op_div_by_zero.rs:+2:14: +2:19 -- assert(!move _4, "attempt to divide `{}` by zero", const 1_i32) -> bb1; // scope 1 at $DIR/bad_op_div_by_zero.rs:+2:14: +2:19 -+ _3 = const 0_i32; // scope 1 at $DIR/bad_op_div_by_zero.rs:+2:18: +2:19 -+ _4 = const true; // scope 1 at $DIR/bad_op_div_by_zero.rs:+2:14: +2:19 -+ assert(!const true, "attempt to divide `{}` by zero", const 1_i32) -> bb1; // scope 1 at $DIR/bad_op_div_by_zero.rs:+2:14: +2:19 + StorageLive(_1); + _1 = const 0_i32; + StorageLive(_2); + StorageLive(_3); +- _3 = _1; +- _4 = Eq(_3, const 0_i32); +- assert(!move _4, "attempt to divide `{}` by zero", const 1_i32) -> bb1; ++ _3 = const 0_i32; ++ _4 = const true; ++ assert(!const true, "attempt to divide `{}` by zero", const 1_i32) -> bb1; } bb1: { -- _5 = Eq(_3, const -1_i32); // scope 1 at $DIR/bad_op_div_by_zero.rs:+2:14: +2:19 -- _6 = Eq(const 1_i32, const i32::MIN); // scope 1 at $DIR/bad_op_div_by_zero.rs:+2:14: +2:19 -- _7 = BitAnd(move _5, move _6); // scope 1 at $DIR/bad_op_div_by_zero.rs:+2:14: +2:19 -- assert(!move _7, "attempt to compute `{} / {}`, which would overflow", const 1_i32, _3) -> bb2; // scope 1 at $DIR/bad_op_div_by_zero.rs:+2:14: +2:19 -+ _5 = const false; // scope 1 at $DIR/bad_op_div_by_zero.rs:+2:14: +2:19 -+ _6 = const false; // scope 1 at $DIR/bad_op_div_by_zero.rs:+2:14: +2:19 -+ _7 = const false; // scope 1 at $DIR/bad_op_div_by_zero.rs:+2:14: +2:19 -+ assert(!const false, "attempt to compute `{} / {}`, which would overflow", const 1_i32, _3) -> bb2; // scope 1 at $DIR/bad_op_div_by_zero.rs:+2:14: +2:19 +- _5 = Eq(_3, const -1_i32); +- _6 = Eq(const 1_i32, const i32::MIN); +- _7 = BitAnd(move _5, move _6); +- assert(!move _7, "attempt to compute `{} / {}`, which would overflow", const 1_i32, _3) -> bb2; ++ _5 = const false; ++ _6 = const false; ++ _7 = const false; ++ assert(!const false, "attempt to compute `{} / {}`, which would overflow", const 1_i32, _3) -> bb2; } bb2: { - _2 = Div(const 1_i32, move _3); // scope 1 at $DIR/bad_op_div_by_zero.rs:+2:14: +2:19 - StorageDead(_3); // scope 1 at $DIR/bad_op_div_by_zero.rs:+2:18: +2:19 - _0 = const (); // scope 0 at $DIR/bad_op_div_by_zero.rs:+0:11: +3:2 - StorageDead(_2); // scope 1 at $DIR/bad_op_div_by_zero.rs:+3:1: +3:2 - StorageDead(_1); // scope 0 at $DIR/bad_op_div_by_zero.rs:+3:1: +3:2 - return; // scope 0 at $DIR/bad_op_div_by_zero.rs:+3:2: +3:2 + _2 = Div(const 1_i32, move _3); + StorageDead(_3); + _0 = const (); + StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/bad_op_mod_by_zero.main.ConstProp.panic-abort.diff b/tests/mir-opt/const_prop/bad_op_mod_by_zero.main.ConstProp.panic-abort.diff index fa9a2a09ba3d7..eb1c7d34f0f58 100644 --- a/tests/mir-opt/const_prop/bad_op_mod_by_zero.main.ConstProp.panic-abort.diff +++ b/tests/mir-opt/const_prop/bad_op_mod_by_zero.main.ConstProp.panic-abort.diff @@ -2,52 +2,52 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/bad_op_mod_by_zero.rs:+0:11: +0:11 - let _1: i32; // in scope 0 at $DIR/bad_op_mod_by_zero.rs:+1:9: +1:10 - let mut _3: i32; // in scope 0 at $DIR/bad_op_mod_by_zero.rs:+2:18: +2:19 - let mut _4: bool; // in scope 0 at $DIR/bad_op_mod_by_zero.rs:+2:14: +2:19 - let mut _5: bool; // in scope 0 at $DIR/bad_op_mod_by_zero.rs:+2:14: +2:19 - let mut _6: bool; // in scope 0 at $DIR/bad_op_mod_by_zero.rs:+2:14: +2:19 - let mut _7: bool; // in scope 0 at $DIR/bad_op_mod_by_zero.rs:+2:14: +2:19 + let mut _0: (); + let _1: i32; + let mut _3: i32; + let mut _4: bool; + let mut _5: bool; + let mut _6: bool; + let mut _7: bool; scope 1 { - debug y => _1; // in scope 1 at $DIR/bad_op_mod_by_zero.rs:+1:9: +1:10 - let _2: i32; // in scope 1 at $DIR/bad_op_mod_by_zero.rs:+2:9: +2:11 + debug y => _1; + let _2: i32; scope 2 { - debug _z => _2; // in scope 2 at $DIR/bad_op_mod_by_zero.rs:+2:9: +2:11 + debug _z => _2; } } bb0: { - StorageLive(_1); // scope 0 at $DIR/bad_op_mod_by_zero.rs:+1:9: +1:10 - _1 = const 0_i32; // scope 0 at $DIR/bad_op_mod_by_zero.rs:+1:13: +1:14 - StorageLive(_2); // scope 1 at $DIR/bad_op_mod_by_zero.rs:+2:9: +2:11 - StorageLive(_3); // scope 1 at $DIR/bad_op_mod_by_zero.rs:+2:18: +2:19 -- _3 = _1; // scope 1 at $DIR/bad_op_mod_by_zero.rs:+2:18: +2:19 -- _4 = Eq(_3, const 0_i32); // scope 1 at $DIR/bad_op_mod_by_zero.rs:+2:14: +2:19 -- assert(!move _4, "attempt to calculate the remainder of `{}` with a divisor of zero", const 1_i32) -> [success: bb1, unwind unreachable]; // scope 1 at $DIR/bad_op_mod_by_zero.rs:+2:14: +2:19 -+ _3 = const 0_i32; // scope 1 at $DIR/bad_op_mod_by_zero.rs:+2:18: +2:19 -+ _4 = const true; // scope 1 at $DIR/bad_op_mod_by_zero.rs:+2:14: +2:19 -+ assert(!const true, "attempt to calculate the remainder of `{}` with a divisor of zero", const 1_i32) -> [success: bb1, unwind unreachable]; // scope 1 at $DIR/bad_op_mod_by_zero.rs:+2:14: +2:19 + StorageLive(_1); + _1 = const 0_i32; + StorageLive(_2); + StorageLive(_3); +- _3 = _1; +- _4 = Eq(_3, const 0_i32); +- assert(!move _4, "attempt to calculate the remainder of `{}` with a divisor of zero", const 1_i32) -> [success: bb1, unwind unreachable]; ++ _3 = const 0_i32; ++ _4 = const true; ++ assert(!const true, "attempt to calculate the remainder of `{}` with a divisor of zero", const 1_i32) -> [success: bb1, unwind unreachable]; } bb1: { -- _5 = Eq(_3, const -1_i32); // scope 1 at $DIR/bad_op_mod_by_zero.rs:+2:14: +2:19 -- _6 = Eq(const 1_i32, const i32::MIN); // scope 1 at $DIR/bad_op_mod_by_zero.rs:+2:14: +2:19 -- _7 = BitAnd(move _5, move _6); // scope 1 at $DIR/bad_op_mod_by_zero.rs:+2:14: +2:19 -- assert(!move _7, "attempt to compute the remainder of `{} % {}`, which would overflow", const 1_i32, _3) -> [success: bb2, unwind unreachable]; // scope 1 at $DIR/bad_op_mod_by_zero.rs:+2:14: +2:19 -+ _5 = const false; // scope 1 at $DIR/bad_op_mod_by_zero.rs:+2:14: +2:19 -+ _6 = const false; // scope 1 at $DIR/bad_op_mod_by_zero.rs:+2:14: +2:19 -+ _7 = const false; // scope 1 at $DIR/bad_op_mod_by_zero.rs:+2:14: +2:19 -+ assert(!const false, "attempt to compute the remainder of `{} % {}`, which would overflow", const 1_i32, _3) -> [success: bb2, unwind unreachable]; // scope 1 at $DIR/bad_op_mod_by_zero.rs:+2:14: +2:19 +- _5 = Eq(_3, const -1_i32); +- _6 = Eq(const 1_i32, const i32::MIN); +- _7 = BitAnd(move _5, move _6); +- assert(!move _7, "attempt to compute the remainder of `{} % {}`, which would overflow", const 1_i32, _3) -> [success: bb2, unwind unreachable]; ++ _5 = const false; ++ _6 = const false; ++ _7 = const false; ++ assert(!const false, "attempt to compute the remainder of `{} % {}`, which would overflow", const 1_i32, _3) -> [success: bb2, unwind unreachable]; } bb2: { - _2 = Rem(const 1_i32, move _3); // scope 1 at $DIR/bad_op_mod_by_zero.rs:+2:14: +2:19 - StorageDead(_3); // scope 1 at $DIR/bad_op_mod_by_zero.rs:+2:18: +2:19 - _0 = const (); // scope 0 at $DIR/bad_op_mod_by_zero.rs:+0:11: +3:2 - StorageDead(_2); // scope 1 at $DIR/bad_op_mod_by_zero.rs:+3:1: +3:2 - StorageDead(_1); // scope 0 at $DIR/bad_op_mod_by_zero.rs:+3:1: +3:2 - return; // scope 0 at $DIR/bad_op_mod_by_zero.rs:+3:2: +3:2 + _2 = Rem(const 1_i32, move _3); + StorageDead(_3); + _0 = const (); + StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/bad_op_mod_by_zero.main.ConstProp.panic-unwind.diff b/tests/mir-opt/const_prop/bad_op_mod_by_zero.main.ConstProp.panic-unwind.diff index 85d6b5e3d003e..db93de9630b53 100644 --- a/tests/mir-opt/const_prop/bad_op_mod_by_zero.main.ConstProp.panic-unwind.diff +++ b/tests/mir-opt/const_prop/bad_op_mod_by_zero.main.ConstProp.panic-unwind.diff @@ -2,52 +2,52 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/bad_op_mod_by_zero.rs:+0:11: +0:11 - let _1: i32; // in scope 0 at $DIR/bad_op_mod_by_zero.rs:+1:9: +1:10 - let mut _3: i32; // in scope 0 at $DIR/bad_op_mod_by_zero.rs:+2:18: +2:19 - let mut _4: bool; // in scope 0 at $DIR/bad_op_mod_by_zero.rs:+2:14: +2:19 - let mut _5: bool; // in scope 0 at $DIR/bad_op_mod_by_zero.rs:+2:14: +2:19 - let mut _6: bool; // in scope 0 at $DIR/bad_op_mod_by_zero.rs:+2:14: +2:19 - let mut _7: bool; // in scope 0 at $DIR/bad_op_mod_by_zero.rs:+2:14: +2:19 + let mut _0: (); + let _1: i32; + let mut _3: i32; + let mut _4: bool; + let mut _5: bool; + let mut _6: bool; + let mut _7: bool; scope 1 { - debug y => _1; // in scope 1 at $DIR/bad_op_mod_by_zero.rs:+1:9: +1:10 - let _2: i32; // in scope 1 at $DIR/bad_op_mod_by_zero.rs:+2:9: +2:11 + debug y => _1; + let _2: i32; scope 2 { - debug _z => _2; // in scope 2 at $DIR/bad_op_mod_by_zero.rs:+2:9: +2:11 + debug _z => _2; } } bb0: { - StorageLive(_1); // scope 0 at $DIR/bad_op_mod_by_zero.rs:+1:9: +1:10 - _1 = const 0_i32; // scope 0 at $DIR/bad_op_mod_by_zero.rs:+1:13: +1:14 - StorageLive(_2); // scope 1 at $DIR/bad_op_mod_by_zero.rs:+2:9: +2:11 - StorageLive(_3); // scope 1 at $DIR/bad_op_mod_by_zero.rs:+2:18: +2:19 -- _3 = _1; // scope 1 at $DIR/bad_op_mod_by_zero.rs:+2:18: +2:19 -- _4 = Eq(_3, const 0_i32); // scope 1 at $DIR/bad_op_mod_by_zero.rs:+2:14: +2:19 -- assert(!move _4, "attempt to calculate the remainder of `{}` with a divisor of zero", const 1_i32) -> bb1; // scope 1 at $DIR/bad_op_mod_by_zero.rs:+2:14: +2:19 -+ _3 = const 0_i32; // scope 1 at $DIR/bad_op_mod_by_zero.rs:+2:18: +2:19 -+ _4 = const true; // scope 1 at $DIR/bad_op_mod_by_zero.rs:+2:14: +2:19 -+ assert(!const true, "attempt to calculate the remainder of `{}` with a divisor of zero", const 1_i32) -> bb1; // scope 1 at $DIR/bad_op_mod_by_zero.rs:+2:14: +2:19 + StorageLive(_1); + _1 = const 0_i32; + StorageLive(_2); + StorageLive(_3); +- _3 = _1; +- _4 = Eq(_3, const 0_i32); +- assert(!move _4, "attempt to calculate the remainder of `{}` with a divisor of zero", const 1_i32) -> bb1; ++ _3 = const 0_i32; ++ _4 = const true; ++ assert(!const true, "attempt to calculate the remainder of `{}` with a divisor of zero", const 1_i32) -> bb1; } bb1: { -- _5 = Eq(_3, const -1_i32); // scope 1 at $DIR/bad_op_mod_by_zero.rs:+2:14: +2:19 -- _6 = Eq(const 1_i32, const i32::MIN); // scope 1 at $DIR/bad_op_mod_by_zero.rs:+2:14: +2:19 -- _7 = BitAnd(move _5, move _6); // scope 1 at $DIR/bad_op_mod_by_zero.rs:+2:14: +2:19 -- assert(!move _7, "attempt to compute the remainder of `{} % {}`, which would overflow", const 1_i32, _3) -> bb2; // scope 1 at $DIR/bad_op_mod_by_zero.rs:+2:14: +2:19 -+ _5 = const false; // scope 1 at $DIR/bad_op_mod_by_zero.rs:+2:14: +2:19 -+ _6 = const false; // scope 1 at $DIR/bad_op_mod_by_zero.rs:+2:14: +2:19 -+ _7 = const false; // scope 1 at $DIR/bad_op_mod_by_zero.rs:+2:14: +2:19 -+ assert(!const false, "attempt to compute the remainder of `{} % {}`, which would overflow", const 1_i32, _3) -> bb2; // scope 1 at $DIR/bad_op_mod_by_zero.rs:+2:14: +2:19 +- _5 = Eq(_3, const -1_i32); +- _6 = Eq(const 1_i32, const i32::MIN); +- _7 = BitAnd(move _5, move _6); +- assert(!move _7, "attempt to compute the remainder of `{} % {}`, which would overflow", const 1_i32, _3) -> bb2; ++ _5 = const false; ++ _6 = const false; ++ _7 = const false; ++ assert(!const false, "attempt to compute the remainder of `{} % {}`, which would overflow", const 1_i32, _3) -> bb2; } bb2: { - _2 = Rem(const 1_i32, move _3); // scope 1 at $DIR/bad_op_mod_by_zero.rs:+2:14: +2:19 - StorageDead(_3); // scope 1 at $DIR/bad_op_mod_by_zero.rs:+2:18: +2:19 - _0 = const (); // scope 0 at $DIR/bad_op_mod_by_zero.rs:+0:11: +3:2 - StorageDead(_2); // scope 1 at $DIR/bad_op_mod_by_zero.rs:+3:1: +3:2 - StorageDead(_1); // scope 0 at $DIR/bad_op_mod_by_zero.rs:+3:1: +3:2 - return; // scope 0 at $DIR/bad_op_mod_by_zero.rs:+3:2: +3:2 + _2 = Rem(const 1_i32, move _3); + StorageDead(_3); + _0 = const (); + StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.ConstProp.32bit.panic-abort.diff b/tests/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.ConstProp.32bit.panic-abort.diff index ebe38a8f29403..6d5e34f23e845 100644 --- a/tests/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.ConstProp.32bit.panic-abort.diff +++ b/tests/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.ConstProp.32bit.panic-abort.diff @@ -2,56 +2,53 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+0:11: +0:11 - let _1: *const [i32]; // in scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:9: +1:10 - let mut _2: *const [i32; 3]; // in scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:25: +1:35 - let _3: &[i32; 3]; // in scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:25: +1:35 - let _4: [i32; 3]; // in scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:26: +1:35 - let _6: usize; // in scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:23: +3:24 - let mut _7: usize; // in scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:18: +3:25 - let mut _8: bool; // in scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:18: +3:25 - let mut _9: &[i32; 3]; // in scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:25: +1:35 + let mut _0: (); + let _1: *const [i32]; + let mut _2: *const [i32; 3]; + let _3: &[i32; 3]; + let _4: [i32; 3]; + let _6: usize; + let mut _7: usize; + let mut _8: bool; + let mut _9: &[i32; 3]; scope 1 { - debug a => _1; // in scope 1 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:9: +1:10 + debug a => _1; scope 2 { - let _5: i32; // in scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:13: +3:15 + let _5: i32; scope 3 { - debug _b => _5; // in scope 3 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:13: +3:15 + debug _b => _5; } } } bb0: { - StorageLive(_1); // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:9: +1:10 - StorageLive(_2); // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:25: +1:35 - StorageLive(_3); // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:25: +1:35 - _9 = const _; // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:25: +1:35 - // mir::Constant - // + span: $DIR/bad_op_unsafe_oob_for_slices.rs:9:25: 9:35 - // + literal: Const { ty: &[i32; 3], val: Unevaluated(main, [], Some(promoted[0])) } - _3 = &(*_9); // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:25: +1:35 - _2 = &raw const (*_3); // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:25: +1:35 - _1 = move _2 as *const [i32] (Pointer(Unsize)); // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:25: +1:35 - StorageDead(_2); // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:34: +1:35 - StorageDead(_3); // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:35: +1:36 - StorageLive(_5); // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:13: +3:15 - StorageLive(_6); // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:23: +3:24 - _6 = const 3_usize; // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:23: +3:24 - _7 = const 3_usize; // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:18: +3:25 -- _8 = Lt(_6, _7); // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:18: +3:25 -- assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> [success: bb1, unwind unreachable]; // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:18: +3:25 -+ _8 = const false; // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:18: +3:25 -+ assert(const false, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> [success: bb1, unwind unreachable]; // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:18: +3:25 + StorageLive(_1); + StorageLive(_2); + StorageLive(_3); + _9 = const _; + _3 = &(*_9); + _2 = &raw const (*_3); + _1 = move _2 as *const [i32] (Pointer(Unsize)); + StorageDead(_2); + StorageDead(_3); + StorageLive(_5); + StorageLive(_6); + _6 = const 3_usize; + _7 = const 3_usize; +- _8 = Lt(_6, _7); +- assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> [success: bb1, unwind unreachable]; ++ _8 = const false; ++ assert(const false, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> [success: bb1, unwind unreachable]; } bb1: { -- _5 = (*_1)[_6]; // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:18: +3:25 -+ _5 = (*_1)[3 of 4]; // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:18: +3:25 - StorageDead(_6); // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:25: +3:26 - _0 = const (); // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+2:5: +4:6 - StorageDead(_5); // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+4:5: +4:6 - StorageDead(_1); // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+5:1: +5:2 - return; // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+5:2: +5:2 +- _5 = (*_1)[_6]; ++ _5 = (*_1)[3 of 4]; + StorageDead(_6); + _0 = const (); + StorageDead(_5); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.ConstProp.32bit.panic-unwind.diff b/tests/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.ConstProp.32bit.panic-unwind.diff index d72675c2d1157..f39468d9684bc 100644 --- a/tests/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.ConstProp.32bit.panic-unwind.diff +++ b/tests/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.ConstProp.32bit.panic-unwind.diff @@ -2,56 +2,53 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+0:11: +0:11 - let _1: *const [i32]; // in scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:9: +1:10 - let mut _2: *const [i32; 3]; // in scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:25: +1:35 - let _3: &[i32; 3]; // in scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:25: +1:35 - let _4: [i32; 3]; // in scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:26: +1:35 - let _6: usize; // in scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:23: +3:24 - let mut _7: usize; // in scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:18: +3:25 - let mut _8: bool; // in scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:18: +3:25 - let mut _9: &[i32; 3]; // in scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:25: +1:35 + let mut _0: (); + let _1: *const [i32]; + let mut _2: *const [i32; 3]; + let _3: &[i32; 3]; + let _4: [i32; 3]; + let _6: usize; + let mut _7: usize; + let mut _8: bool; + let mut _9: &[i32; 3]; scope 1 { - debug a => _1; // in scope 1 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:9: +1:10 + debug a => _1; scope 2 { - let _5: i32; // in scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:13: +3:15 + let _5: i32; scope 3 { - debug _b => _5; // in scope 3 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:13: +3:15 + debug _b => _5; } } } bb0: { - StorageLive(_1); // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:9: +1:10 - StorageLive(_2); // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:25: +1:35 - StorageLive(_3); // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:25: +1:35 - _9 = const _; // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:25: +1:35 - // mir::Constant - // + span: $DIR/bad_op_unsafe_oob_for_slices.rs:9:25: 9:35 - // + literal: Const { ty: &[i32; 3], val: Unevaluated(main, [], Some(promoted[0])) } - _3 = &(*_9); // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:25: +1:35 - _2 = &raw const (*_3); // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:25: +1:35 - _1 = move _2 as *const [i32] (Pointer(Unsize)); // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:25: +1:35 - StorageDead(_2); // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:34: +1:35 - StorageDead(_3); // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:35: +1:36 - StorageLive(_5); // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:13: +3:15 - StorageLive(_6); // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:23: +3:24 - _6 = const 3_usize; // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:23: +3:24 - _7 = const 3_usize; // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:18: +3:25 -- _8 = Lt(_6, _7); // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:18: +3:25 -- assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> bb1; // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:18: +3:25 -+ _8 = const false; // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:18: +3:25 -+ assert(const false, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> bb1; // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:18: +3:25 + StorageLive(_1); + StorageLive(_2); + StorageLive(_3); + _9 = const _; + _3 = &(*_9); + _2 = &raw const (*_3); + _1 = move _2 as *const [i32] (Pointer(Unsize)); + StorageDead(_2); + StorageDead(_3); + StorageLive(_5); + StorageLive(_6); + _6 = const 3_usize; + _7 = const 3_usize; +- _8 = Lt(_6, _7); +- assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> bb1; ++ _8 = const false; ++ assert(const false, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> bb1; } bb1: { -- _5 = (*_1)[_6]; // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:18: +3:25 -+ _5 = (*_1)[3 of 4]; // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:18: +3:25 - StorageDead(_6); // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:25: +3:26 - _0 = const (); // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+2:5: +4:6 - StorageDead(_5); // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+4:5: +4:6 - StorageDead(_1); // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+5:1: +5:2 - return; // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+5:2: +5:2 +- _5 = (*_1)[_6]; ++ _5 = (*_1)[3 of 4]; + StorageDead(_6); + _0 = const (); + StorageDead(_5); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.ConstProp.64bit.panic-abort.diff b/tests/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.ConstProp.64bit.panic-abort.diff index ebe38a8f29403..6d5e34f23e845 100644 --- a/tests/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.ConstProp.64bit.panic-abort.diff +++ b/tests/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.ConstProp.64bit.panic-abort.diff @@ -2,56 +2,53 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+0:11: +0:11 - let _1: *const [i32]; // in scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:9: +1:10 - let mut _2: *const [i32; 3]; // in scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:25: +1:35 - let _3: &[i32; 3]; // in scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:25: +1:35 - let _4: [i32; 3]; // in scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:26: +1:35 - let _6: usize; // in scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:23: +3:24 - let mut _7: usize; // in scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:18: +3:25 - let mut _8: bool; // in scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:18: +3:25 - let mut _9: &[i32; 3]; // in scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:25: +1:35 + let mut _0: (); + let _1: *const [i32]; + let mut _2: *const [i32; 3]; + let _3: &[i32; 3]; + let _4: [i32; 3]; + let _6: usize; + let mut _7: usize; + let mut _8: bool; + let mut _9: &[i32; 3]; scope 1 { - debug a => _1; // in scope 1 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:9: +1:10 + debug a => _1; scope 2 { - let _5: i32; // in scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:13: +3:15 + let _5: i32; scope 3 { - debug _b => _5; // in scope 3 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:13: +3:15 + debug _b => _5; } } } bb0: { - StorageLive(_1); // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:9: +1:10 - StorageLive(_2); // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:25: +1:35 - StorageLive(_3); // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:25: +1:35 - _9 = const _; // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:25: +1:35 - // mir::Constant - // + span: $DIR/bad_op_unsafe_oob_for_slices.rs:9:25: 9:35 - // + literal: Const { ty: &[i32; 3], val: Unevaluated(main, [], Some(promoted[0])) } - _3 = &(*_9); // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:25: +1:35 - _2 = &raw const (*_3); // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:25: +1:35 - _1 = move _2 as *const [i32] (Pointer(Unsize)); // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:25: +1:35 - StorageDead(_2); // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:34: +1:35 - StorageDead(_3); // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:35: +1:36 - StorageLive(_5); // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:13: +3:15 - StorageLive(_6); // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:23: +3:24 - _6 = const 3_usize; // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:23: +3:24 - _7 = const 3_usize; // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:18: +3:25 -- _8 = Lt(_6, _7); // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:18: +3:25 -- assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> [success: bb1, unwind unreachable]; // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:18: +3:25 -+ _8 = const false; // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:18: +3:25 -+ assert(const false, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> [success: bb1, unwind unreachable]; // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:18: +3:25 + StorageLive(_1); + StorageLive(_2); + StorageLive(_3); + _9 = const _; + _3 = &(*_9); + _2 = &raw const (*_3); + _1 = move _2 as *const [i32] (Pointer(Unsize)); + StorageDead(_2); + StorageDead(_3); + StorageLive(_5); + StorageLive(_6); + _6 = const 3_usize; + _7 = const 3_usize; +- _8 = Lt(_6, _7); +- assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> [success: bb1, unwind unreachable]; ++ _8 = const false; ++ assert(const false, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> [success: bb1, unwind unreachable]; } bb1: { -- _5 = (*_1)[_6]; // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:18: +3:25 -+ _5 = (*_1)[3 of 4]; // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:18: +3:25 - StorageDead(_6); // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:25: +3:26 - _0 = const (); // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+2:5: +4:6 - StorageDead(_5); // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+4:5: +4:6 - StorageDead(_1); // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+5:1: +5:2 - return; // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+5:2: +5:2 +- _5 = (*_1)[_6]; ++ _5 = (*_1)[3 of 4]; + StorageDead(_6); + _0 = const (); + StorageDead(_5); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.ConstProp.64bit.panic-unwind.diff b/tests/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.ConstProp.64bit.panic-unwind.diff index d72675c2d1157..f39468d9684bc 100644 --- a/tests/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.ConstProp.64bit.panic-unwind.diff +++ b/tests/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.ConstProp.64bit.panic-unwind.diff @@ -2,56 +2,53 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+0:11: +0:11 - let _1: *const [i32]; // in scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:9: +1:10 - let mut _2: *const [i32; 3]; // in scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:25: +1:35 - let _3: &[i32; 3]; // in scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:25: +1:35 - let _4: [i32; 3]; // in scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:26: +1:35 - let _6: usize; // in scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:23: +3:24 - let mut _7: usize; // in scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:18: +3:25 - let mut _8: bool; // in scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:18: +3:25 - let mut _9: &[i32; 3]; // in scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:25: +1:35 + let mut _0: (); + let _1: *const [i32]; + let mut _2: *const [i32; 3]; + let _3: &[i32; 3]; + let _4: [i32; 3]; + let _6: usize; + let mut _7: usize; + let mut _8: bool; + let mut _9: &[i32; 3]; scope 1 { - debug a => _1; // in scope 1 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:9: +1:10 + debug a => _1; scope 2 { - let _5: i32; // in scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:13: +3:15 + let _5: i32; scope 3 { - debug _b => _5; // in scope 3 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:13: +3:15 + debug _b => _5; } } } bb0: { - StorageLive(_1); // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:9: +1:10 - StorageLive(_2); // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:25: +1:35 - StorageLive(_3); // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:25: +1:35 - _9 = const _; // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:25: +1:35 - // mir::Constant - // + span: $DIR/bad_op_unsafe_oob_for_slices.rs:9:25: 9:35 - // + literal: Const { ty: &[i32; 3], val: Unevaluated(main, [], Some(promoted[0])) } - _3 = &(*_9); // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:25: +1:35 - _2 = &raw const (*_3); // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:25: +1:35 - _1 = move _2 as *const [i32] (Pointer(Unsize)); // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:25: +1:35 - StorageDead(_2); // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:34: +1:35 - StorageDead(_3); // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+1:35: +1:36 - StorageLive(_5); // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:13: +3:15 - StorageLive(_6); // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:23: +3:24 - _6 = const 3_usize; // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:23: +3:24 - _7 = const 3_usize; // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:18: +3:25 -- _8 = Lt(_6, _7); // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:18: +3:25 -- assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> bb1; // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:18: +3:25 -+ _8 = const false; // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:18: +3:25 -+ assert(const false, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> bb1; // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:18: +3:25 + StorageLive(_1); + StorageLive(_2); + StorageLive(_3); + _9 = const _; + _3 = &(*_9); + _2 = &raw const (*_3); + _1 = move _2 as *const [i32] (Pointer(Unsize)); + StorageDead(_2); + StorageDead(_3); + StorageLive(_5); + StorageLive(_6); + _6 = const 3_usize; + _7 = const 3_usize; +- _8 = Lt(_6, _7); +- assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> bb1; ++ _8 = const false; ++ assert(const false, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> bb1; } bb1: { -- _5 = (*_1)[_6]; // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:18: +3:25 -+ _5 = (*_1)[3 of 4]; // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:18: +3:25 - StorageDead(_6); // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+3:25: +3:26 - _0 = const (); // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+2:5: +4:6 - StorageDead(_5); // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:+4:5: +4:6 - StorageDead(_1); // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+5:1: +5:2 - return; // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:+5:2: +5:2 +- _5 = (*_1)[_6]; ++ _5 = (*_1)[3 of 4]; + StorageDead(_6); + _0 = const (); + StorageDead(_5); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/boolean_identities.test.ConstProp.diff b/tests/mir-opt/const_prop/boolean_identities.test.ConstProp.diff index 549b4711e874d..d805341991d83 100644 --- a/tests/mir-opt/const_prop/boolean_identities.test.ConstProp.diff +++ b/tests/mir-opt/const_prop/boolean_identities.test.ConstProp.diff @@ -2,26 +2,26 @@ + // MIR for `test` after ConstProp fn test(_1: bool, _2: bool) -> bool { - debug x => _1; // in scope 0 at $DIR/boolean_identities.rs:+0:13: +0:14 - debug y => _2; // in scope 0 at $DIR/boolean_identities.rs:+0:22: +0:23 - let mut _0: bool; // return place in scope 0 at $DIR/boolean_identities.rs:+0:34: +0:38 - let mut _3: bool; // in scope 0 at $DIR/boolean_identities.rs:+1:5: +1:15 - let mut _4: bool; // in scope 0 at $DIR/boolean_identities.rs:+1:6: +1:7 - let mut _5: bool; // in scope 0 at $DIR/boolean_identities.rs:+1:18: +1:29 - let mut _6: bool; // in scope 0 at $DIR/boolean_identities.rs:+1:19: +1:20 + debug x => _1; + debug y => _2; + let mut _0: bool; + let mut _3: bool; + let mut _4: bool; + let mut _5: bool; + let mut _6: bool; bb0: { - StorageLive(_3); // scope 0 at $DIR/boolean_identities.rs:+1:5: +1:15 -- _3 = BitOr(_2, const true); // scope 0 at $DIR/boolean_identities.rs:+1:5: +1:15 -+ _3 = const true; // scope 0 at $DIR/boolean_identities.rs:+1:5: +1:15 - StorageLive(_5); // scope 0 at $DIR/boolean_identities.rs:+1:18: +1:29 -- _5 = BitAnd(_1, const false); // scope 0 at $DIR/boolean_identities.rs:+1:18: +1:29 -- _0 = BitAnd(move _3, move _5); // scope 0 at $DIR/boolean_identities.rs:+1:5: +1:29 -+ _5 = const false; // scope 0 at $DIR/boolean_identities.rs:+1:18: +1:29 -+ _0 = const false; // scope 0 at $DIR/boolean_identities.rs:+1:5: +1:29 - StorageDead(_5); // scope 0 at $DIR/boolean_identities.rs:+1:28: +1:29 - StorageDead(_3); // scope 0 at $DIR/boolean_identities.rs:+1:28: +1:29 - return; // scope 0 at $DIR/boolean_identities.rs:+2:2: +2:2 + StorageLive(_3); +- _3 = BitOr(_2, const true); ++ _3 = const true; + StorageLive(_5); +- _5 = BitAnd(_1, const false); +- _0 = BitAnd(move _3, move _5); ++ _5 = const false; ++ _0 = const false; + StorageDead(_5); + StorageDead(_3); + return; } } diff --git a/tests/mir-opt/const_prop/boxes.main.ConstProp.panic-abort.diff b/tests/mir-opt/const_prop/boxes.main.ConstProp.panic-abort.diff index 2cc0b98acfdfc..24b4796949aeb 100644 --- a/tests/mir-opt/const_prop/boxes.main.ConstProp.panic-abort.diff +++ b/tests/mir-opt/const_prop/boxes.main.ConstProp.panic-abort.diff @@ -2,55 +2,52 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/boxes.rs:+0:11: +0:11 - let _1: i32; // in scope 0 at $DIR/boxes.rs:+1:9: +1:10 - let mut _2: i32; // in scope 0 at $DIR/boxes.rs:+1:13: +2:18 - let mut _3: std::boxed::Box; // in scope 0 at $DIR/boxes.rs:+1:14: +2:18 - let mut _4: usize; // in scope 0 at $DIR/boxes.rs:+1:14: +2:18 - let mut _5: usize; // in scope 0 at $DIR/boxes.rs:+1:14: +2:18 - let mut _6: *mut u8; // in scope 0 at $DIR/boxes.rs:+1:14: +2:18 - let mut _7: std::boxed::Box; // in scope 0 at $DIR/boxes.rs:+1:14: +2:18 - let mut _8: *const i32; // in scope 0 at $DIR/boxes.rs:+1:14: +2:18 - let mut _9: *const i32; // in scope 0 at $DIR/boxes.rs:+1:14: +2:18 + let mut _0: (); + let _1: i32; + let mut _2: i32; + let mut _3: std::boxed::Box; + let mut _4: usize; + let mut _5: usize; + let mut _6: *mut u8; + let mut _7: std::boxed::Box; + let mut _8: *const i32; + let mut _9: *const i32; scope 1 { - debug x => _1; // in scope 1 at $DIR/boxes.rs:+1:9: +1:10 + debug x => _1; } scope 2 { } bb0: { - StorageLive(_1); // scope 0 at $DIR/boxes.rs:+1:9: +1:10 - StorageLive(_2); // scope 0 at $DIR/boxes.rs:+1:13: +2:18 - StorageLive(_3); // scope 0 at $DIR/boxes.rs:+1:14: +2:18 -- _4 = SizeOf(i32); // scope 2 at $DIR/boxes.rs:+1:14: +2:18 -- _5 = AlignOf(i32); // scope 2 at $DIR/boxes.rs:+1:14: +2:18 -+ _4 = const 4_usize; // scope 2 at $DIR/boxes.rs:+1:14: +2:18 -+ _5 = const 4_usize; // scope 2 at $DIR/boxes.rs:+1:14: +2:18 - _6 = alloc::alloc::exchange_malloc(move _4, move _5) -> [return: bb1, unwind unreachable]; // scope 2 at $DIR/boxes.rs:+1:14: +2:18 - // mir::Constant - // + span: $DIR/boxes.rs:13:14: 14:18 - // + literal: Const { ty: unsafe fn(usize, usize) -> *mut u8 {alloc::alloc::exchange_malloc}, val: Value() } + StorageLive(_1); + StorageLive(_2); + StorageLive(_3); +- _4 = SizeOf(i32); +- _5 = AlignOf(i32); ++ _4 = const 4_usize; ++ _5 = const 4_usize; + _6 = alloc::alloc::exchange_malloc(move _4, move _5) -> [return: bb1, unwind unreachable]; } bb1: { - StorageLive(_7); // scope 0 at $DIR/boxes.rs:+1:14: +2:18 - _7 = ShallowInitBox(move _6, i32); // scope 0 at $DIR/boxes.rs:+1:14: +2:18 - _8 = (((_7.0: std::ptr::Unique).0: std::ptr::NonNull).0: *const i32); // scope 0 at $DIR/boxes.rs:+2:14: +2:16 - (*_8) = const 42_i32; // scope 0 at $DIR/boxes.rs:+2:14: +2:16 - _3 = move _7; // scope 0 at $DIR/boxes.rs:+1:14: +2:18 - StorageDead(_7); // scope 0 at $DIR/boxes.rs:+2:17: +2:18 - _9 = (((_3.0: std::ptr::Unique).0: std::ptr::NonNull).0: *const i32); // scope 0 at $DIR/boxes.rs:+1:13: +2:18 - _2 = (*_9); // scope 0 at $DIR/boxes.rs:+1:13: +2:18 - _1 = Add(move _2, const 0_i32); // scope 0 at $DIR/boxes.rs:+1:13: +3:12 - StorageDead(_2); // scope 0 at $DIR/boxes.rs:+3:11: +3:12 - drop(_3) -> [return: bb2, unwind unreachable]; // scope 0 at $DIR/boxes.rs:+3:12: +3:13 + StorageLive(_7); + _7 = ShallowInitBox(move _6, i32); + _8 = (((_7.0: std::ptr::Unique).0: std::ptr::NonNull).0: *const i32); + (*_8) = const 42_i32; + _3 = move _7; + StorageDead(_7); + _9 = (((_3.0: std::ptr::Unique).0: std::ptr::NonNull).0: *const i32); + _2 = (*_9); + _1 = Add(move _2, const 0_i32); + StorageDead(_2); + drop(_3) -> [return: bb2, unwind unreachable]; } bb2: { - StorageDead(_3); // scope 0 at $DIR/boxes.rs:+3:12: +3:13 - _0 = const (); // scope 0 at $DIR/boxes.rs:+0:11: +4:2 - StorageDead(_1); // scope 0 at $DIR/boxes.rs:+4:1: +4:2 - return; // scope 0 at $DIR/boxes.rs:+4:2: +4:2 + StorageDead(_3); + _0 = const (); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/boxes.main.ConstProp.panic-unwind.diff b/tests/mir-opt/const_prop/boxes.main.ConstProp.panic-unwind.diff index b0e86e7537f13..8e3c2f6c8448a 100644 --- a/tests/mir-opt/const_prop/boxes.main.ConstProp.panic-unwind.diff +++ b/tests/mir-opt/const_prop/boxes.main.ConstProp.panic-unwind.diff @@ -2,59 +2,56 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/boxes.rs:+0:11: +0:11 - let _1: i32; // in scope 0 at $DIR/boxes.rs:+1:9: +1:10 - let mut _2: i32; // in scope 0 at $DIR/boxes.rs:+1:13: +2:18 - let mut _3: std::boxed::Box; // in scope 0 at $DIR/boxes.rs:+1:14: +2:18 - let mut _4: usize; // in scope 0 at $DIR/boxes.rs:+1:14: +2:18 - let mut _5: usize; // in scope 0 at $DIR/boxes.rs:+1:14: +2:18 - let mut _6: *mut u8; // in scope 0 at $DIR/boxes.rs:+1:14: +2:18 - let mut _7: std::boxed::Box; // in scope 0 at $DIR/boxes.rs:+1:14: +2:18 - let mut _8: *const i32; // in scope 0 at $DIR/boxes.rs:+1:14: +2:18 - let mut _9: *const i32; // in scope 0 at $DIR/boxes.rs:+1:14: +2:18 + let mut _0: (); + let _1: i32; + let mut _2: i32; + let mut _3: std::boxed::Box; + let mut _4: usize; + let mut _5: usize; + let mut _6: *mut u8; + let mut _7: std::boxed::Box; + let mut _8: *const i32; + let mut _9: *const i32; scope 1 { - debug x => _1; // in scope 1 at $DIR/boxes.rs:+1:9: +1:10 + debug x => _1; } scope 2 { } bb0: { - StorageLive(_1); // scope 0 at $DIR/boxes.rs:+1:9: +1:10 - StorageLive(_2); // scope 0 at $DIR/boxes.rs:+1:13: +2:18 - StorageLive(_3); // scope 0 at $DIR/boxes.rs:+1:14: +2:18 -- _4 = SizeOf(i32); // scope 2 at $DIR/boxes.rs:+1:14: +2:18 -- _5 = AlignOf(i32); // scope 2 at $DIR/boxes.rs:+1:14: +2:18 -+ _4 = const 4_usize; // scope 2 at $DIR/boxes.rs:+1:14: +2:18 -+ _5 = const 4_usize; // scope 2 at $DIR/boxes.rs:+1:14: +2:18 - _6 = alloc::alloc::exchange_malloc(move _4, move _5) -> bb1; // scope 2 at $DIR/boxes.rs:+1:14: +2:18 - // mir::Constant - // + span: $DIR/boxes.rs:13:14: 14:18 - // + literal: Const { ty: unsafe fn(usize, usize) -> *mut u8 {alloc::alloc::exchange_malloc}, val: Value() } + StorageLive(_1); + StorageLive(_2); + StorageLive(_3); +- _4 = SizeOf(i32); +- _5 = AlignOf(i32); ++ _4 = const 4_usize; ++ _5 = const 4_usize; + _6 = alloc::alloc::exchange_malloc(move _4, move _5) -> bb1; } bb1: { - StorageLive(_7); // scope 0 at $DIR/boxes.rs:+1:14: +2:18 - _7 = ShallowInitBox(move _6, i32); // scope 0 at $DIR/boxes.rs:+1:14: +2:18 - _8 = (((_7.0: std::ptr::Unique).0: std::ptr::NonNull).0: *const i32); // scope 0 at $DIR/boxes.rs:+2:14: +2:16 - (*_8) = const 42_i32; // scope 0 at $DIR/boxes.rs:+2:14: +2:16 - _3 = move _7; // scope 0 at $DIR/boxes.rs:+1:14: +2:18 - StorageDead(_7); // scope 0 at $DIR/boxes.rs:+2:17: +2:18 - _9 = (((_3.0: std::ptr::Unique).0: std::ptr::NonNull).0: *const i32); // scope 0 at $DIR/boxes.rs:+1:13: +2:18 - _2 = (*_9); // scope 0 at $DIR/boxes.rs:+1:13: +2:18 - _1 = Add(move _2, const 0_i32); // scope 0 at $DIR/boxes.rs:+1:13: +3:12 - StorageDead(_2); // scope 0 at $DIR/boxes.rs:+3:11: +3:12 - drop(_3) -> [return: bb2, unwind: bb3]; // scope 0 at $DIR/boxes.rs:+3:12: +3:13 + StorageLive(_7); + _7 = ShallowInitBox(move _6, i32); + _8 = (((_7.0: std::ptr::Unique).0: std::ptr::NonNull).0: *const i32); + (*_8) = const 42_i32; + _3 = move _7; + StorageDead(_7); + _9 = (((_3.0: std::ptr::Unique).0: std::ptr::NonNull).0: *const i32); + _2 = (*_9); + _1 = Add(move _2, const 0_i32); + StorageDead(_2); + drop(_3) -> [return: bb2, unwind: bb3]; } bb2: { - StorageDead(_3); // scope 0 at $DIR/boxes.rs:+3:12: +3:13 - _0 = const (); // scope 0 at $DIR/boxes.rs:+0:11: +4:2 - StorageDead(_1); // scope 0 at $DIR/boxes.rs:+4:1: +4:2 - return; // scope 0 at $DIR/boxes.rs:+4:2: +4:2 + StorageDead(_3); + _0 = const (); + StorageDead(_1); + return; } bb3 (cleanup): { - resume; // scope 0 at $DIR/boxes.rs:+0:1: +4:2 + resume; } } diff --git a/tests/mir-opt/const_prop/cast.main.ConstProp.diff b/tests/mir-opt/const_prop/cast.main.ConstProp.diff index 1d4dfc29f70b6..c63adcf1191e0 100644 --- a/tests/mir-opt/const_prop/cast.main.ConstProp.diff +++ b/tests/mir-opt/const_prop/cast.main.ConstProp.diff @@ -2,27 +2,27 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/cast.rs:+0:11: +0:11 - let _1: u32; // in scope 0 at $DIR/cast.rs:+1:9: +1:10 + let mut _0: (); + let _1: u32; scope 1 { - debug x => _1; // in scope 1 at $DIR/cast.rs:+1:9: +1:10 - let _2: u8; // in scope 1 at $DIR/cast.rs:+3:9: +3:10 + debug x => _1; + let _2: u8; scope 2 { - debug y => _2; // in scope 2 at $DIR/cast.rs:+3:9: +3:10 + debug y => _2; } } bb0: { - StorageLive(_1); // scope 0 at $DIR/cast.rs:+1:9: +1:10 -- _1 = const 42_u8 as u32 (IntToInt); // scope 0 at $DIR/cast.rs:+1:13: +1:24 -+ _1 = const 42_u32; // scope 0 at $DIR/cast.rs:+1:13: +1:24 - StorageLive(_2); // scope 1 at $DIR/cast.rs:+3:9: +3:10 -- _2 = const 42_u32 as u8 (IntToInt); // scope 1 at $DIR/cast.rs:+3:13: +3:24 -+ _2 = const 42_u8; // scope 1 at $DIR/cast.rs:+3:13: +3:24 - _0 = const (); // scope 0 at $DIR/cast.rs:+0:11: +4:2 - StorageDead(_2); // scope 1 at $DIR/cast.rs:+4:1: +4:2 - StorageDead(_1); // scope 0 at $DIR/cast.rs:+4:1: +4:2 - return; // scope 0 at $DIR/cast.rs:+4:2: +4:2 + StorageLive(_1); +- _1 = const 42_u8 as u32 (IntToInt); ++ _1 = const 42_u32; + StorageLive(_2); +- _2 = const 42_u32 as u8 (IntToInt); ++ _2 = const 42_u8; + _0 = const (); + StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/checked_add.main.ConstProp.panic-abort.diff b/tests/mir-opt/const_prop/checked_add.main.ConstProp.panic-abort.diff index ba318d8eb35c1..6daef87dd2c73 100644 --- a/tests/mir-opt/const_prop/checked_add.main.ConstProp.panic-abort.diff +++ b/tests/mir-opt/const_prop/checked_add.main.ConstProp.panic-abort.diff @@ -2,27 +2,27 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/checked_add.rs:+0:11: +0:11 - let _1: u32; // in scope 0 at $DIR/checked_add.rs:+1:9: +1:10 - let mut _2: (u32, bool); // in scope 0 at $DIR/checked_add.rs:+1:18: +1:23 + let mut _0: (); + let _1: u32; + let mut _2: (u32, bool); scope 1 { - debug x => _1; // in scope 1 at $DIR/checked_add.rs:+1:9: +1:10 + debug x => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/checked_add.rs:+1:9: +1:10 -- _2 = CheckedAdd(const 1_u32, const 1_u32); // scope 0 at $DIR/checked_add.rs:+1:18: +1:23 -- assert(!move (_2.1: bool), "attempt to compute `{} + {}`, which would overflow", const 1_u32, const 1_u32) -> [success: bb1, unwind unreachable]; // scope 0 at $DIR/checked_add.rs:+1:18: +1:23 -+ _2 = const (2_u32, false); // scope 0 at $DIR/checked_add.rs:+1:18: +1:23 -+ assert(!const false, "attempt to compute `{} + {}`, which would overflow", const 1_u32, const 1_u32) -> [success: bb1, unwind unreachable]; // scope 0 at $DIR/checked_add.rs:+1:18: +1:23 + StorageLive(_1); +- _2 = CheckedAdd(const 1_u32, const 1_u32); +- assert(!move (_2.1: bool), "attempt to compute `{} + {}`, which would overflow", const 1_u32, const 1_u32) -> [success: bb1, unwind unreachable]; ++ _2 = const (2_u32, false); ++ assert(!const false, "attempt to compute `{} + {}`, which would overflow", const 1_u32, const 1_u32) -> [success: bb1, unwind unreachable]; } bb1: { -- _1 = move (_2.0: u32); // scope 0 at $DIR/checked_add.rs:+1:18: +1:23 -+ _1 = const 2_u32; // scope 0 at $DIR/checked_add.rs:+1:18: +1:23 - _0 = const (); // scope 0 at $DIR/checked_add.rs:+0:11: +2:2 - StorageDead(_1); // scope 0 at $DIR/checked_add.rs:+2:1: +2:2 - return; // scope 0 at $DIR/checked_add.rs:+2:2: +2:2 +- _1 = move (_2.0: u32); ++ _1 = const 2_u32; + _0 = const (); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/checked_add.main.ConstProp.panic-unwind.diff b/tests/mir-opt/const_prop/checked_add.main.ConstProp.panic-unwind.diff index 96d0d25664a41..175e2b51a37c6 100644 --- a/tests/mir-opt/const_prop/checked_add.main.ConstProp.panic-unwind.diff +++ b/tests/mir-opt/const_prop/checked_add.main.ConstProp.panic-unwind.diff @@ -2,27 +2,27 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/checked_add.rs:+0:11: +0:11 - let _1: u32; // in scope 0 at $DIR/checked_add.rs:+1:9: +1:10 - let mut _2: (u32, bool); // in scope 0 at $DIR/checked_add.rs:+1:18: +1:23 + let mut _0: (); + let _1: u32; + let mut _2: (u32, bool); scope 1 { - debug x => _1; // in scope 1 at $DIR/checked_add.rs:+1:9: +1:10 + debug x => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/checked_add.rs:+1:9: +1:10 -- _2 = CheckedAdd(const 1_u32, const 1_u32); // scope 0 at $DIR/checked_add.rs:+1:18: +1:23 -- assert(!move (_2.1: bool), "attempt to compute `{} + {}`, which would overflow", const 1_u32, const 1_u32) -> bb1; // scope 0 at $DIR/checked_add.rs:+1:18: +1:23 -+ _2 = const (2_u32, false); // scope 0 at $DIR/checked_add.rs:+1:18: +1:23 -+ assert(!const false, "attempt to compute `{} + {}`, which would overflow", const 1_u32, const 1_u32) -> bb1; // scope 0 at $DIR/checked_add.rs:+1:18: +1:23 + StorageLive(_1); +- _2 = CheckedAdd(const 1_u32, const 1_u32); +- assert(!move (_2.1: bool), "attempt to compute `{} + {}`, which would overflow", const 1_u32, const 1_u32) -> bb1; ++ _2 = const (2_u32, false); ++ assert(!const false, "attempt to compute `{} + {}`, which would overflow", const 1_u32, const 1_u32) -> bb1; } bb1: { -- _1 = move (_2.0: u32); // scope 0 at $DIR/checked_add.rs:+1:18: +1:23 -+ _1 = const 2_u32; // scope 0 at $DIR/checked_add.rs:+1:18: +1:23 - _0 = const (); // scope 0 at $DIR/checked_add.rs:+0:11: +2:2 - StorageDead(_1); // scope 0 at $DIR/checked_add.rs:+2:1: +2:2 - return; // scope 0 at $DIR/checked_add.rs:+2:2: +2:2 +- _1 = move (_2.0: u32); ++ _1 = const 2_u32; + _0 = const (); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/const_prop_fails_gracefully.main.ConstProp.panic-abort.diff b/tests/mir-opt/const_prop/const_prop_fails_gracefully.main.ConstProp.panic-abort.diff index 1999a128c63bf..bd1de7476a2cc 100644 --- a/tests/mir-opt/const_prop/const_prop_fails_gracefully.main.ConstProp.panic-abort.diff +++ b/tests/mir-opt/const_prop/const_prop_fails_gracefully.main.ConstProp.panic-abort.diff @@ -2,43 +2,37 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/const_prop_fails_gracefully.rs:+0:11: +0:11 - let _1: usize; // in scope 0 at $DIR/const_prop_fails_gracefully.rs:+2:9: +2:10 - let mut _2: *const i32; // in scope 0 at $DIR/const_prop_fails_gracefully.rs:+2:13: +2:30 - let _3: &i32; // in scope 0 at $DIR/const_prop_fails_gracefully.rs:+2:13: +2:16 - let _4: (); // in scope 0 at $DIR/const_prop_fails_gracefully.rs:+3:5: +3:12 - let mut _5: usize; // in scope 0 at $DIR/const_prop_fails_gracefully.rs:+3:10: +3:11 + let mut _0: (); + let _1: usize; + let mut _2: *const i32; + let _3: &i32; + let _4: (); + let mut _5: usize; scope 1 { - debug x => _1; // in scope 1 at $DIR/const_prop_fails_gracefully.rs:+2:9: +2:10 + debug x => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/const_prop_fails_gracefully.rs:+2:9: +2:10 - StorageLive(_2); // scope 0 at $DIR/const_prop_fails_gracefully.rs:+2:13: +2:30 - StorageLive(_3); // scope 0 at $DIR/const_prop_fails_gracefully.rs:+2:13: +2:16 - _3 = const _; // scope 0 at $DIR/const_prop_fails_gracefully.rs:+2:13: +2:16 - // mir::Constant - // + span: $DIR/const_prop_fails_gracefully.rs:9:13: 9:16 - // + literal: Const { ty: &i32, val: Unevaluated(FOO, [], None) } - _2 = &raw const (*_3); // scope 0 at $DIR/const_prop_fails_gracefully.rs:+2:13: +2:16 - _1 = move _2 as usize (PointerExposeAddress); // scope 0 at $DIR/const_prop_fails_gracefully.rs:+2:13: +2:39 - StorageDead(_2); // scope 0 at $DIR/const_prop_fails_gracefully.rs:+2:38: +2:39 - StorageDead(_3); // scope 0 at $DIR/const_prop_fails_gracefully.rs:+2:39: +2:40 - StorageLive(_4); // scope 1 at $DIR/const_prop_fails_gracefully.rs:+3:5: +3:12 - StorageLive(_5); // scope 1 at $DIR/const_prop_fails_gracefully.rs:+3:10: +3:11 - _5 = _1; // scope 1 at $DIR/const_prop_fails_gracefully.rs:+3:10: +3:11 - _4 = read(move _5) -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/const_prop_fails_gracefully.rs:+3:5: +3:12 - // mir::Constant - // + span: $DIR/const_prop_fails_gracefully.rs:10:5: 10:9 - // + literal: Const { ty: fn(usize) {read}, val: Value() } + StorageLive(_1); + StorageLive(_2); + StorageLive(_3); + _3 = const _; + _2 = &raw const (*_3); + _1 = move _2 as usize (PointerExposeAddress); + StorageDead(_2); + StorageDead(_3); + StorageLive(_4); + StorageLive(_5); + _5 = _1; + _4 = read(move _5) -> [return: bb1, unwind unreachable]; } bb1: { - StorageDead(_5); // scope 1 at $DIR/const_prop_fails_gracefully.rs:+3:11: +3:12 - StorageDead(_4); // scope 1 at $DIR/const_prop_fails_gracefully.rs:+3:12: +3:13 - _0 = const (); // scope 0 at $DIR/const_prop_fails_gracefully.rs:+0:11: +4:2 - StorageDead(_1); // scope 0 at $DIR/const_prop_fails_gracefully.rs:+4:1: +4:2 - return; // scope 0 at $DIR/const_prop_fails_gracefully.rs:+4:2: +4:2 + StorageDead(_5); + StorageDead(_4); + _0 = const (); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/const_prop_fails_gracefully.main.ConstProp.panic-unwind.diff b/tests/mir-opt/const_prop/const_prop_fails_gracefully.main.ConstProp.panic-unwind.diff index d75fae30b5386..01ec24916c895 100644 --- a/tests/mir-opt/const_prop/const_prop_fails_gracefully.main.ConstProp.panic-unwind.diff +++ b/tests/mir-opt/const_prop/const_prop_fails_gracefully.main.ConstProp.panic-unwind.diff @@ -2,43 +2,37 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/const_prop_fails_gracefully.rs:+0:11: +0:11 - let _1: usize; // in scope 0 at $DIR/const_prop_fails_gracefully.rs:+2:9: +2:10 - let mut _2: *const i32; // in scope 0 at $DIR/const_prop_fails_gracefully.rs:+2:13: +2:30 - let _3: &i32; // in scope 0 at $DIR/const_prop_fails_gracefully.rs:+2:13: +2:16 - let _4: (); // in scope 0 at $DIR/const_prop_fails_gracefully.rs:+3:5: +3:12 - let mut _5: usize; // in scope 0 at $DIR/const_prop_fails_gracefully.rs:+3:10: +3:11 + let mut _0: (); + let _1: usize; + let mut _2: *const i32; + let _3: &i32; + let _4: (); + let mut _5: usize; scope 1 { - debug x => _1; // in scope 1 at $DIR/const_prop_fails_gracefully.rs:+2:9: +2:10 + debug x => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/const_prop_fails_gracefully.rs:+2:9: +2:10 - StorageLive(_2); // scope 0 at $DIR/const_prop_fails_gracefully.rs:+2:13: +2:30 - StorageLive(_3); // scope 0 at $DIR/const_prop_fails_gracefully.rs:+2:13: +2:16 - _3 = const _; // scope 0 at $DIR/const_prop_fails_gracefully.rs:+2:13: +2:16 - // mir::Constant - // + span: $DIR/const_prop_fails_gracefully.rs:9:13: 9:16 - // + literal: Const { ty: &i32, val: Unevaluated(FOO, [], None) } - _2 = &raw const (*_3); // scope 0 at $DIR/const_prop_fails_gracefully.rs:+2:13: +2:16 - _1 = move _2 as usize (PointerExposeAddress); // scope 0 at $DIR/const_prop_fails_gracefully.rs:+2:13: +2:39 - StorageDead(_2); // scope 0 at $DIR/const_prop_fails_gracefully.rs:+2:38: +2:39 - StorageDead(_3); // scope 0 at $DIR/const_prop_fails_gracefully.rs:+2:39: +2:40 - StorageLive(_4); // scope 1 at $DIR/const_prop_fails_gracefully.rs:+3:5: +3:12 - StorageLive(_5); // scope 1 at $DIR/const_prop_fails_gracefully.rs:+3:10: +3:11 - _5 = _1; // scope 1 at $DIR/const_prop_fails_gracefully.rs:+3:10: +3:11 - _4 = read(move _5) -> bb1; // scope 1 at $DIR/const_prop_fails_gracefully.rs:+3:5: +3:12 - // mir::Constant - // + span: $DIR/const_prop_fails_gracefully.rs:10:5: 10:9 - // + literal: Const { ty: fn(usize) {read}, val: Value() } + StorageLive(_1); + StorageLive(_2); + StorageLive(_3); + _3 = const _; + _2 = &raw const (*_3); + _1 = move _2 as usize (PointerExposeAddress); + StorageDead(_2); + StorageDead(_3); + StorageLive(_4); + StorageLive(_5); + _5 = _1; + _4 = read(move _5) -> bb1; } bb1: { - StorageDead(_5); // scope 1 at $DIR/const_prop_fails_gracefully.rs:+3:11: +3:12 - StorageDead(_4); // scope 1 at $DIR/const_prop_fails_gracefully.rs:+3:12: +3:13 - _0 = const (); // scope 0 at $DIR/const_prop_fails_gracefully.rs:+0:11: +4:2 - StorageDead(_1); // scope 0 at $DIR/const_prop_fails_gracefully.rs:+4:1: +4:2 - return; // scope 0 at $DIR/const_prop_fails_gracefully.rs:+4:2: +4:2 + StorageDead(_5); + StorageDead(_4); + _0 = const (); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/control_flow_simplification.hello.ConstProp.panic-abort.diff b/tests/mir-opt/const_prop/control_flow_simplification.hello.ConstProp.panic-abort.diff index 0ed292674338f..e77c09848b7b8 100644 --- a/tests/mir-opt/const_prop/control_flow_simplification.hello.ConstProp.panic-abort.diff +++ b/tests/mir-opt/const_prop/control_flow_simplification.hello.ConstProp.panic-abort.diff @@ -2,30 +2,24 @@ + // MIR for `hello` after ConstProp fn hello() -> () { - let mut _0: (); // return place in scope 0 at $DIR/control_flow_simplification.rs:+0:14: +0:14 - let mut _1: bool; // in scope 0 at $DIR/control_flow_simplification.rs:+1:8: +1:21 - let mut _2: !; // in scope 0 at $SRC_DIR/std/src/panic.rs:LL:COL + let mut _0: (); + let mut _1: bool; + let mut _2: !; bb0: { - StorageLive(_1); // scope 0 at $DIR/control_flow_simplification.rs:+1:8: +1:21 - _1 = const _; // scope 0 at $DIR/control_flow_simplification.rs:+1:8: +1:21 -- switchInt(move _1) -> [0: bb2, otherwise: bb1]; // scope 0 at $DIR/control_flow_simplification.rs:+1:8: +1:21 -+ switchInt(const false) -> [0: bb2, otherwise: bb1]; // scope 0 at $DIR/control_flow_simplification.rs:+1:8: +1:21 + StorageLive(_1); + _1 = const _; +- switchInt(move _1) -> [0: bb2, otherwise: bb1]; ++ switchInt(const false) -> [0: bb2, otherwise: bb1]; } bb1: { - _2 = begin_panic::<&str>(const "explicit panic") -> unwind unreachable; // scope 0 at $SRC_DIR/std/src/panic.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/std/src/panic.rs:LL:COL - // + literal: Const { ty: fn(&str) -> ! {begin_panic::<&str>}, val: Value() } - // mir::Constant - // + span: $SRC_DIR/std/src/panic.rs:LL:COL - // + literal: Const { ty: &str, val: Value(Slice(..)) } + _2 = begin_panic::<&str>(const "explicit panic") -> unwind unreachable; } bb2: { - StorageDead(_1); // scope 0 at $DIR/control_flow_simplification.rs:+3:5: +3:6 - return; // scope 0 at $DIR/control_flow_simplification.rs:+4:2: +4:2 + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/control_flow_simplification.hello.ConstProp.panic-unwind.diff b/tests/mir-opt/const_prop/control_flow_simplification.hello.ConstProp.panic-unwind.diff index 7e77c18d5758e..4593ffaac2bd1 100644 --- a/tests/mir-opt/const_prop/control_flow_simplification.hello.ConstProp.panic-unwind.diff +++ b/tests/mir-opt/const_prop/control_flow_simplification.hello.ConstProp.panic-unwind.diff @@ -2,30 +2,24 @@ + // MIR for `hello` after ConstProp fn hello() -> () { - let mut _0: (); // return place in scope 0 at $DIR/control_flow_simplification.rs:+0:14: +0:14 - let mut _1: bool; // in scope 0 at $DIR/control_flow_simplification.rs:+1:8: +1:21 - let mut _2: !; // in scope 0 at $SRC_DIR/std/src/panic.rs:LL:COL + let mut _0: (); + let mut _1: bool; + let mut _2: !; bb0: { - StorageLive(_1); // scope 0 at $DIR/control_flow_simplification.rs:+1:8: +1:21 - _1 = const _; // scope 0 at $DIR/control_flow_simplification.rs:+1:8: +1:21 -- switchInt(move _1) -> [0: bb2, otherwise: bb1]; // scope 0 at $DIR/control_flow_simplification.rs:+1:8: +1:21 -+ switchInt(const false) -> [0: bb2, otherwise: bb1]; // scope 0 at $DIR/control_flow_simplification.rs:+1:8: +1:21 + StorageLive(_1); + _1 = const _; +- switchInt(move _1) -> [0: bb2, otherwise: bb1]; ++ switchInt(const false) -> [0: bb2, otherwise: bb1]; } bb1: { - _2 = begin_panic::<&str>(const "explicit panic"); // scope 0 at $SRC_DIR/std/src/panic.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/std/src/panic.rs:LL:COL - // + literal: Const { ty: fn(&str) -> ! {begin_panic::<&str>}, val: Value() } - // mir::Constant - // + span: $SRC_DIR/std/src/panic.rs:LL:COL - // + literal: Const { ty: &str, val: Value(Slice(..)) } + _2 = begin_panic::<&str>(const "explicit panic"); } bb2: { - StorageDead(_1); // scope 0 at $DIR/control_flow_simplification.rs:+3:5: +3:6 - return; // scope 0 at $DIR/control_flow_simplification.rs:+4:2: +4:2 + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/control_flow_simplification.hello.PreCodegen.before.panic-abort.mir b/tests/mir-opt/const_prop/control_flow_simplification.hello.PreCodegen.before.panic-abort.mir index 9f7528f0ce170..2b90410f95d96 100644 --- a/tests/mir-opt/const_prop/control_flow_simplification.hello.PreCodegen.before.panic-abort.mir +++ b/tests/mir-opt/const_prop/control_flow_simplification.hello.PreCodegen.before.panic-abort.mir @@ -1,9 +1,9 @@ // MIR for `hello` before PreCodegen fn hello() -> () { - let mut _0: (); // return place in scope 0 at $DIR/control_flow_simplification.rs:+0:14: +0:14 + let mut _0: (); bb0: { - return; // scope 0 at $DIR/control_flow_simplification.rs:+4:2: +4:2 + return; } } diff --git a/tests/mir-opt/const_prop/control_flow_simplification.hello.PreCodegen.before.panic-unwind.mir b/tests/mir-opt/const_prop/control_flow_simplification.hello.PreCodegen.before.panic-unwind.mir index 9f7528f0ce170..2b90410f95d96 100644 --- a/tests/mir-opt/const_prop/control_flow_simplification.hello.PreCodegen.before.panic-unwind.mir +++ b/tests/mir-opt/const_prop/control_flow_simplification.hello.PreCodegen.before.panic-unwind.mir @@ -1,9 +1,9 @@ // MIR for `hello` before PreCodegen fn hello() -> () { - let mut _0: (); // return place in scope 0 at $DIR/control_flow_simplification.rs:+0:14: +0:14 + let mut _0: (); bb0: { - return; // scope 0 at $DIR/control_flow_simplification.rs:+4:2: +4:2 + return; } } diff --git a/tests/mir-opt/const_prop/discriminant.main.ConstProp.32bit.diff b/tests/mir-opt/const_prop/discriminant.main.ConstProp.32bit.diff index 6d8738aa61aaa..e02e7f320b865 100644 --- a/tests/mir-opt/const_prop/discriminant.main.ConstProp.32bit.diff +++ b/tests/mir-opt/const_prop/discriminant.main.ConstProp.32bit.diff @@ -2,54 +2,51 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/discriminant.rs:+0:11: +0:11 - let _1: i32; // in scope 0 at $DIR/discriminant.rs:+1:9: +1:10 - let mut _2: i32; // in scope 0 at $DIR/discriminant.rs:+1:13: +1:64 - let mut _3: std::option::Option; // in scope 0 at $DIR/discriminant.rs:+1:34: +1:44 - let mut _4: isize; // in scope 0 at $DIR/discriminant.rs:+1:21: +1:31 + let mut _0: (); + let _1: i32; + let mut _2: i32; + let mut _3: std::option::Option; + let mut _4: isize; scope 1 { - debug x => _1; // in scope 1 at $DIR/discriminant.rs:+1:9: +1:10 + debug x => _1; } scope 2 { } bb0: { - StorageLive(_1); // scope 0 at $DIR/discriminant.rs:+1:9: +1:10 - StorageLive(_2); // scope 0 at $DIR/discriminant.rs:+1:13: +1:64 - StorageLive(_3); // scope 2 at $DIR/discriminant.rs:+1:34: +1:44 -- _3 = Option::::Some(const true); // scope 2 at $DIR/discriminant.rs:+1:34: +1:44 -- _4 = discriminant(_3); // scope 2 at $DIR/discriminant.rs:+1:21: +1:31 -- switchInt(move _4) -> [1: bb1, otherwise: bb3]; // scope 2 at $DIR/discriminant.rs:+1:21: +1:31 -+ _3 = const Option::::Some(true); // scope 2 at $DIR/discriminant.rs:+1:34: +1:44 -+ // mir::Constant -+ // + span: no-location -+ // + literal: Const { ty: Option, val: Value(Scalar(0x01)) } -+ _4 = const 1_isize; // scope 2 at $DIR/discriminant.rs:+1:21: +1:31 -+ switchInt(const 1_isize) -> [1: bb1, otherwise: bb3]; // scope 2 at $DIR/discriminant.rs:+1:21: +1:31 + StorageLive(_1); + StorageLive(_2); + StorageLive(_3); +- _3 = Option::::Some(const true); +- _4 = discriminant(_3); +- switchInt(move _4) -> [1: bb1, otherwise: bb3]; ++ _3 = const Option::::Some(true); ++ _4 = const 1_isize; ++ switchInt(const 1_isize) -> [1: bb1, otherwise: bb3]; } bb1: { -- switchInt(((_3 as Some).0: bool)) -> [0: bb3, otherwise: bb2]; // scope 2 at $DIR/discriminant.rs:+1:21: +1:31 -+ switchInt(const true) -> [0: bb3, otherwise: bb2]; // scope 2 at $DIR/discriminant.rs:+1:21: +1:31 +- switchInt(((_3 as Some).0: bool)) -> [0: bb3, otherwise: bb2]; ++ switchInt(const true) -> [0: bb3, otherwise: bb2]; } bb2: { - _2 = const 42_i32; // scope 2 at $DIR/discriminant.rs:+1:47: +1:49 - goto -> bb4; // scope 0 at $DIR/discriminant.rs:+1:13: +1:64 + _2 = const 42_i32; + goto -> bb4; } bb3: { - _2 = const 10_i32; // scope 0 at $DIR/discriminant.rs:+1:59: +1:61 - goto -> bb4; // scope 0 at $DIR/discriminant.rs:+1:13: +1:64 + _2 = const 10_i32; + goto -> bb4; } bb4: { - _1 = Add(move _2, const 0_i32); // scope 0 at $DIR/discriminant.rs:+1:13: +1:68 - StorageDead(_2); // scope 0 at $DIR/discriminant.rs:+1:67: +1:68 - StorageDead(_3); // scope 0 at $DIR/discriminant.rs:+1:68: +1:69 - _0 = const (); // scope 0 at $DIR/discriminant.rs:+0:11: +2:2 - StorageDead(_1); // scope 0 at $DIR/discriminant.rs:+2:1: +2:2 - return; // scope 0 at $DIR/discriminant.rs:+2:2: +2:2 + _1 = Add(move _2, const 0_i32); + StorageDead(_2); + StorageDead(_3); + _0 = const (); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/discriminant.main.ConstProp.64bit.diff b/tests/mir-opt/const_prop/discriminant.main.ConstProp.64bit.diff index 6d8738aa61aaa..e02e7f320b865 100644 --- a/tests/mir-opt/const_prop/discriminant.main.ConstProp.64bit.diff +++ b/tests/mir-opt/const_prop/discriminant.main.ConstProp.64bit.diff @@ -2,54 +2,51 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/discriminant.rs:+0:11: +0:11 - let _1: i32; // in scope 0 at $DIR/discriminant.rs:+1:9: +1:10 - let mut _2: i32; // in scope 0 at $DIR/discriminant.rs:+1:13: +1:64 - let mut _3: std::option::Option; // in scope 0 at $DIR/discriminant.rs:+1:34: +1:44 - let mut _4: isize; // in scope 0 at $DIR/discriminant.rs:+1:21: +1:31 + let mut _0: (); + let _1: i32; + let mut _2: i32; + let mut _3: std::option::Option; + let mut _4: isize; scope 1 { - debug x => _1; // in scope 1 at $DIR/discriminant.rs:+1:9: +1:10 + debug x => _1; } scope 2 { } bb0: { - StorageLive(_1); // scope 0 at $DIR/discriminant.rs:+1:9: +1:10 - StorageLive(_2); // scope 0 at $DIR/discriminant.rs:+1:13: +1:64 - StorageLive(_3); // scope 2 at $DIR/discriminant.rs:+1:34: +1:44 -- _3 = Option::::Some(const true); // scope 2 at $DIR/discriminant.rs:+1:34: +1:44 -- _4 = discriminant(_3); // scope 2 at $DIR/discriminant.rs:+1:21: +1:31 -- switchInt(move _4) -> [1: bb1, otherwise: bb3]; // scope 2 at $DIR/discriminant.rs:+1:21: +1:31 -+ _3 = const Option::::Some(true); // scope 2 at $DIR/discriminant.rs:+1:34: +1:44 -+ // mir::Constant -+ // + span: no-location -+ // + literal: Const { ty: Option, val: Value(Scalar(0x01)) } -+ _4 = const 1_isize; // scope 2 at $DIR/discriminant.rs:+1:21: +1:31 -+ switchInt(const 1_isize) -> [1: bb1, otherwise: bb3]; // scope 2 at $DIR/discriminant.rs:+1:21: +1:31 + StorageLive(_1); + StorageLive(_2); + StorageLive(_3); +- _3 = Option::::Some(const true); +- _4 = discriminant(_3); +- switchInt(move _4) -> [1: bb1, otherwise: bb3]; ++ _3 = const Option::::Some(true); ++ _4 = const 1_isize; ++ switchInt(const 1_isize) -> [1: bb1, otherwise: bb3]; } bb1: { -- switchInt(((_3 as Some).0: bool)) -> [0: bb3, otherwise: bb2]; // scope 2 at $DIR/discriminant.rs:+1:21: +1:31 -+ switchInt(const true) -> [0: bb3, otherwise: bb2]; // scope 2 at $DIR/discriminant.rs:+1:21: +1:31 +- switchInt(((_3 as Some).0: bool)) -> [0: bb3, otherwise: bb2]; ++ switchInt(const true) -> [0: bb3, otherwise: bb2]; } bb2: { - _2 = const 42_i32; // scope 2 at $DIR/discriminant.rs:+1:47: +1:49 - goto -> bb4; // scope 0 at $DIR/discriminant.rs:+1:13: +1:64 + _2 = const 42_i32; + goto -> bb4; } bb3: { - _2 = const 10_i32; // scope 0 at $DIR/discriminant.rs:+1:59: +1:61 - goto -> bb4; // scope 0 at $DIR/discriminant.rs:+1:13: +1:64 + _2 = const 10_i32; + goto -> bb4; } bb4: { - _1 = Add(move _2, const 0_i32); // scope 0 at $DIR/discriminant.rs:+1:13: +1:68 - StorageDead(_2); // scope 0 at $DIR/discriminant.rs:+1:67: +1:68 - StorageDead(_3); // scope 0 at $DIR/discriminant.rs:+1:68: +1:69 - _0 = const (); // scope 0 at $DIR/discriminant.rs:+0:11: +2:2 - StorageDead(_1); // scope 0 at $DIR/discriminant.rs:+2:1: +2:2 - return; // scope 0 at $DIR/discriminant.rs:+2:2: +2:2 + _1 = Add(move _2, const 0_i32); + StorageDead(_2); + StorageDead(_3); + _0 = const (); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/indirect.main.ConstProp.panic-abort.diff b/tests/mir-opt/const_prop/indirect.main.ConstProp.panic-abort.diff index a58d29d2fe17b..eef9282c2cf07 100644 --- a/tests/mir-opt/const_prop/indirect.main.ConstProp.panic-abort.diff +++ b/tests/mir-opt/const_prop/indirect.main.ConstProp.panic-abort.diff @@ -2,32 +2,32 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/indirect.rs:+0:11: +0:11 - let _1: u8; // in scope 0 at $DIR/indirect.rs:+1:9: +1:10 - let mut _2: u8; // in scope 0 at $DIR/indirect.rs:+1:13: +1:25 - let mut _3: (u8, bool); // in scope 0 at $DIR/indirect.rs:+1:13: +1:29 + let mut _0: (); + let _1: u8; + let mut _2: u8; + let mut _3: (u8, bool); scope 1 { - debug x => _1; // in scope 1 at $DIR/indirect.rs:+1:9: +1:10 + debug x => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/indirect.rs:+1:9: +1:10 - StorageLive(_2); // scope 0 at $DIR/indirect.rs:+1:13: +1:25 -- _2 = const 2_u32 as u8 (IntToInt); // scope 0 at $DIR/indirect.rs:+1:13: +1:25 -- _3 = CheckedAdd(_2, const 1_u8); // scope 0 at $DIR/indirect.rs:+1:13: +1:29 -- assert(!move (_3.1: bool), "attempt to compute `{} + {}`, which would overflow", move _2, const 1_u8) -> [success: bb1, unwind unreachable]; // scope 0 at $DIR/indirect.rs:+1:13: +1:29 -+ _2 = const 2_u8; // scope 0 at $DIR/indirect.rs:+1:13: +1:25 -+ _3 = const (3_u8, false); // scope 0 at $DIR/indirect.rs:+1:13: +1:29 -+ assert(!const false, "attempt to compute `{} + {}`, which would overflow", move _2, const 1_u8) -> [success: bb1, unwind unreachable]; // scope 0 at $DIR/indirect.rs:+1:13: +1:29 + StorageLive(_1); + StorageLive(_2); +- _2 = const 2_u32 as u8 (IntToInt); +- _3 = CheckedAdd(_2, const 1_u8); +- assert(!move (_3.1: bool), "attempt to compute `{} + {}`, which would overflow", move _2, const 1_u8) -> [success: bb1, unwind unreachable]; ++ _2 = const 2_u8; ++ _3 = const (3_u8, false); ++ assert(!const false, "attempt to compute `{} + {}`, which would overflow", move _2, const 1_u8) -> [success: bb1, unwind unreachable]; } bb1: { -- _1 = move (_3.0: u8); // scope 0 at $DIR/indirect.rs:+1:13: +1:29 -+ _1 = const 3_u8; // scope 0 at $DIR/indirect.rs:+1:13: +1:29 - StorageDead(_2); // scope 0 at $DIR/indirect.rs:+1:28: +1:29 - _0 = const (); // scope 0 at $DIR/indirect.rs:+0:11: +2:2 - StorageDead(_1); // scope 0 at $DIR/indirect.rs:+2:1: +2:2 - return; // scope 0 at $DIR/indirect.rs:+2:2: +2:2 +- _1 = move (_3.0: u8); ++ _1 = const 3_u8; + StorageDead(_2); + _0 = const (); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/indirect.main.ConstProp.panic-unwind.diff b/tests/mir-opt/const_prop/indirect.main.ConstProp.panic-unwind.diff index f4c0c5c5e7fb0..affef00bb7327 100644 --- a/tests/mir-opt/const_prop/indirect.main.ConstProp.panic-unwind.diff +++ b/tests/mir-opt/const_prop/indirect.main.ConstProp.panic-unwind.diff @@ -2,32 +2,32 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/indirect.rs:+0:11: +0:11 - let _1: u8; // in scope 0 at $DIR/indirect.rs:+1:9: +1:10 - let mut _2: u8; // in scope 0 at $DIR/indirect.rs:+1:13: +1:25 - let mut _3: (u8, bool); // in scope 0 at $DIR/indirect.rs:+1:13: +1:29 + let mut _0: (); + let _1: u8; + let mut _2: u8; + let mut _3: (u8, bool); scope 1 { - debug x => _1; // in scope 1 at $DIR/indirect.rs:+1:9: +1:10 + debug x => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/indirect.rs:+1:9: +1:10 - StorageLive(_2); // scope 0 at $DIR/indirect.rs:+1:13: +1:25 -- _2 = const 2_u32 as u8 (IntToInt); // scope 0 at $DIR/indirect.rs:+1:13: +1:25 -- _3 = CheckedAdd(_2, const 1_u8); // scope 0 at $DIR/indirect.rs:+1:13: +1:29 -- assert(!move (_3.1: bool), "attempt to compute `{} + {}`, which would overflow", move _2, const 1_u8) -> bb1; // scope 0 at $DIR/indirect.rs:+1:13: +1:29 -+ _2 = const 2_u8; // scope 0 at $DIR/indirect.rs:+1:13: +1:25 -+ _3 = const (3_u8, false); // scope 0 at $DIR/indirect.rs:+1:13: +1:29 -+ assert(!const false, "attempt to compute `{} + {}`, which would overflow", move _2, const 1_u8) -> bb1; // scope 0 at $DIR/indirect.rs:+1:13: +1:29 + StorageLive(_1); + StorageLive(_2); +- _2 = const 2_u32 as u8 (IntToInt); +- _3 = CheckedAdd(_2, const 1_u8); +- assert(!move (_3.1: bool), "attempt to compute `{} + {}`, which would overflow", move _2, const 1_u8) -> bb1; ++ _2 = const 2_u8; ++ _3 = const (3_u8, false); ++ assert(!const false, "attempt to compute `{} + {}`, which would overflow", move _2, const 1_u8) -> bb1; } bb1: { -- _1 = move (_3.0: u8); // scope 0 at $DIR/indirect.rs:+1:13: +1:29 -+ _1 = const 3_u8; // scope 0 at $DIR/indirect.rs:+1:13: +1:29 - StorageDead(_2); // scope 0 at $DIR/indirect.rs:+1:28: +1:29 - _0 = const (); // scope 0 at $DIR/indirect.rs:+0:11: +2:2 - StorageDead(_1); // scope 0 at $DIR/indirect.rs:+2:1: +2:2 - return; // scope 0 at $DIR/indirect.rs:+2:2: +2:2 +- _1 = move (_3.0: u8); ++ _1 = const 3_u8; + StorageDead(_2); + _0 = const (); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/inherit_overflow.main.ConstProp.panic-abort.diff b/tests/mir-opt/const_prop/inherit_overflow.main.ConstProp.panic-abort.diff index 951de4c3e33ca..e0467e3fcff00 100644 --- a/tests/mir-opt/const_prop/inherit_overflow.main.ConstProp.panic-abort.diff +++ b/tests/mir-opt/const_prop/inherit_overflow.main.ConstProp.panic-abort.diff @@ -2,38 +2,38 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/inherit_overflow.rs:+0:11: +0:11 - let mut _1: u8; // in scope 0 at $DIR/inherit_overflow.rs:+3:13: +3:47 - let mut _2: u8; // in scope 0 at $DIR/inherit_overflow.rs:+3:13: +3:47 - let mut _3: u8; // in scope 0 at $DIR/inherit_overflow.rs:+3:13: +3:47 + let mut _0: (); + let mut _1: u8; + let mut _2: u8; + let mut _3: u8; scope 1 { } - scope 2 (inlined ::add) { // at $DIR/inherit_overflow.rs:9:13: 9:47 - debug self => _2; // in scope 2 at $SRC_DIR/core/src/ops/arith.rs:LL:COL - debug other => _3; // in scope 2 at $SRC_DIR/core/src/ops/arith.rs:LL:COL - let mut _4: (u8, bool); // in scope 2 at $SRC_DIR/core/src/ops/arith.rs:LL:COL + scope 2 (inlined ::add) { + debug self => _2; + debug other => _3; + let mut _4: (u8, bool); } bb0: { - StorageLive(_1); // scope 0 at $DIR/inherit_overflow.rs:+3:13: +3:47 - StorageLive(_2); // scope 0 at $DIR/inherit_overflow.rs:+3:13: +3:47 - _2 = const u8::MAX; // scope 0 at $DIR/inherit_overflow.rs:+3:13: +3:47 - StorageLive(_3); // scope 0 at $DIR/inherit_overflow.rs:+3:13: +3:47 - _3 = const 1_u8; // scope 0 at $DIR/inherit_overflow.rs:+3:13: +3:47 -- _4 = CheckedAdd(_2, _3); // scope 2 at $SRC_DIR/core/src/ops/arith.rs:LL:COL -- assert(!move (_4.1: bool), "attempt to compute `{} + {}`, which would overflow", _2, _3) -> [success: bb1, unwind unreachable]; // scope 2 at $SRC_DIR/core/src/ops/arith.rs:LL:COL -+ _4 = const (0_u8, true); // scope 2 at $SRC_DIR/core/src/ops/arith.rs:LL:COL -+ assert(!const true, "attempt to compute `{} + {}`, which would overflow", _2, _3) -> [success: bb1, unwind unreachable]; // scope 2 at $SRC_DIR/core/src/ops/arith.rs:LL:COL + StorageLive(_1); + StorageLive(_2); + _2 = const u8::MAX; + StorageLive(_3); + _3 = const 1_u8; +- _4 = CheckedAdd(_2, _3); +- assert(!move (_4.1: bool), "attempt to compute `{} + {}`, which would overflow", _2, _3) -> [success: bb1, unwind unreachable]; ++ _4 = const (0_u8, true); ++ assert(!const true, "attempt to compute `{} + {}`, which would overflow", _2, _3) -> [success: bb1, unwind unreachable]; } bb1: { -- _1 = move (_4.0: u8); // scope 2 at $SRC_DIR/core/src/ops/arith.rs:LL:COL -+ _1 = const 0_u8; // scope 2 at $SRC_DIR/core/src/ops/arith.rs:LL:COL - StorageDead(_3); // scope 0 at $DIR/inherit_overflow.rs:+3:13: +3:47 - StorageDead(_2); // scope 0 at $DIR/inherit_overflow.rs:+3:13: +3:47 - StorageDead(_1); // scope 0 at $DIR/inherit_overflow.rs:+3:47: +3:48 - _0 = const (); // scope 0 at $DIR/inherit_overflow.rs:+0:11: +4:2 - return; // scope 0 at $DIR/inherit_overflow.rs:+4:2: +4:2 +- _1 = move (_4.0: u8); ++ _1 = const 0_u8; + StorageDead(_3); + StorageDead(_2); + StorageDead(_1); + _0 = const (); + return; } } diff --git a/tests/mir-opt/const_prop/inherit_overflow.main.ConstProp.panic-unwind.diff b/tests/mir-opt/const_prop/inherit_overflow.main.ConstProp.panic-unwind.diff index 0ac7fa43d5b45..9dae4b404aad2 100644 --- a/tests/mir-opt/const_prop/inherit_overflow.main.ConstProp.panic-unwind.diff +++ b/tests/mir-opt/const_prop/inherit_overflow.main.ConstProp.panic-unwind.diff @@ -2,38 +2,38 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/inherit_overflow.rs:+0:11: +0:11 - let mut _1: u8; // in scope 0 at $DIR/inherit_overflow.rs:+3:13: +3:47 - let mut _2: u8; // in scope 0 at $DIR/inherit_overflow.rs:+3:13: +3:47 - let mut _3: u8; // in scope 0 at $DIR/inherit_overflow.rs:+3:13: +3:47 + let mut _0: (); + let mut _1: u8; + let mut _2: u8; + let mut _3: u8; scope 1 { } - scope 2 (inlined ::add) { // at $DIR/inherit_overflow.rs:9:13: 9:47 - debug self => _2; // in scope 2 at $SRC_DIR/core/src/ops/arith.rs:LL:COL - debug other => _3; // in scope 2 at $SRC_DIR/core/src/ops/arith.rs:LL:COL - let mut _4: (u8, bool); // in scope 2 at $SRC_DIR/core/src/ops/arith.rs:LL:COL + scope 2 (inlined ::add) { + debug self => _2; + debug other => _3; + let mut _4: (u8, bool); } bb0: { - StorageLive(_1); // scope 0 at $DIR/inherit_overflow.rs:+3:13: +3:47 - StorageLive(_2); // scope 0 at $DIR/inherit_overflow.rs:+3:13: +3:47 - _2 = const u8::MAX; // scope 0 at $DIR/inherit_overflow.rs:+3:13: +3:47 - StorageLive(_3); // scope 0 at $DIR/inherit_overflow.rs:+3:13: +3:47 - _3 = const 1_u8; // scope 0 at $DIR/inherit_overflow.rs:+3:13: +3:47 -- _4 = CheckedAdd(_2, _3); // scope 2 at $SRC_DIR/core/src/ops/arith.rs:LL:COL -- assert(!move (_4.1: bool), "attempt to compute `{} + {}`, which would overflow", _2, _3) -> bb1; // scope 2 at $SRC_DIR/core/src/ops/arith.rs:LL:COL -+ _4 = const (0_u8, true); // scope 2 at $SRC_DIR/core/src/ops/arith.rs:LL:COL -+ assert(!const true, "attempt to compute `{} + {}`, which would overflow", _2, _3) -> bb1; // scope 2 at $SRC_DIR/core/src/ops/arith.rs:LL:COL + StorageLive(_1); + StorageLive(_2); + _2 = const u8::MAX; + StorageLive(_3); + _3 = const 1_u8; +- _4 = CheckedAdd(_2, _3); +- assert(!move (_4.1: bool), "attempt to compute `{} + {}`, which would overflow", _2, _3) -> bb1; ++ _4 = const (0_u8, true); ++ assert(!const true, "attempt to compute `{} + {}`, which would overflow", _2, _3) -> bb1; } bb1: { -- _1 = move (_4.0: u8); // scope 2 at $SRC_DIR/core/src/ops/arith.rs:LL:COL -+ _1 = const 0_u8; // scope 2 at $SRC_DIR/core/src/ops/arith.rs:LL:COL - StorageDead(_3); // scope 0 at $DIR/inherit_overflow.rs:+3:13: +3:47 - StorageDead(_2); // scope 0 at $DIR/inherit_overflow.rs:+3:13: +3:47 - StorageDead(_1); // scope 0 at $DIR/inherit_overflow.rs:+3:47: +3:48 - _0 = const (); // scope 0 at $DIR/inherit_overflow.rs:+0:11: +4:2 - return; // scope 0 at $DIR/inherit_overflow.rs:+4:2: +4:2 +- _1 = move (_4.0: u8); ++ _1 = const 0_u8; + StorageDead(_3); + StorageDead(_2); + StorageDead(_1); + _0 = const (); + return; } } diff --git a/tests/mir-opt/const_prop/invalid_constant.main.ConstProp.diff b/tests/mir-opt/const_prop/invalid_constant.main.ConstProp.diff index 1752d222fe735..0c9d1f4a38a4c 100644 --- a/tests/mir-opt/const_prop/invalid_constant.main.ConstProp.diff +++ b/tests/mir-opt/const_prop/invalid_constant.main.ConstProp.diff @@ -2,24 +2,24 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/invalid_constant.rs:+0:11: +0:11 - let _1: char; // in scope 0 at $DIR/invalid_constant.rs:+6:9: +6:22 - let mut _2: main::InvalidChar; // in scope 0 at $DIR/invalid_constant.rs:+6:34: +6:63 - let mut _4: E; // in scope 0 at $DIR/invalid_constant.rs:+13:25: +13:59 - let mut _5: main::InvalidTag; // in scope 0 at $DIR/invalid_constant.rs:+13:34: +13:55 - let mut _7: Empty; // in scope 0 at $DIR/invalid_constant.rs:+20:35: +20:73 - let mut _8: main::NoVariants; // in scope 0 at $DIR/invalid_constant.rs:+20:44: +20:65 + let mut _0: (); + let _1: char; + let mut _2: main::InvalidChar; + let mut _4: E; + let mut _5: main::InvalidTag; + let mut _7: Empty; + let mut _8: main::NoVariants; scope 1 { - debug _invalid_char => _1; // in scope 1 at $DIR/invalid_constant.rs:+6:9: +6:22 - let _3: [E; 1]; // in scope 1 at $DIR/invalid_constant.rs:+13:9: +13:21 + debug _invalid_char => _1; + let _3: [E; 1]; scope 3 { - debug _invalid_tag => _3; // in scope 3 at $DIR/invalid_constant.rs:+13:9: +13:21 - let _6: [Empty; 1]; // in scope 3 at $DIR/invalid_constant.rs:+20:9: +20:31 + debug _invalid_tag => _3; + let _6: [Empty; 1]; scope 5 { - debug _enum_without_variants => const [ZeroSized: Empty]; // in scope 5 at $DIR/invalid_constant.rs:+20:9: +20:31 - let _9: main::Str<"���">; // in scope 5 at $DIR/invalid_constant.rs:+24:9: +24:22 + debug _enum_without_variants => const [ZeroSized: Empty]; + let _9: main::Str<"���">; scope 7 { - debug _non_utf8_str => const Str::<"���">; // in scope 7 at $DIR/invalid_constant.rs:+24:9: +24:22 + debug _non_utf8_str => const Str::<"���">; } } scope 6 { @@ -32,39 +32,36 @@ } bb0: { - StorageLive(_1); // scope 0 at $DIR/invalid_constant.rs:+6:9: +6:22 - StorageLive(_2); // scope 2 at $DIR/invalid_constant.rs:+6:34: +6:63 - _2 = InvalidChar { int: const 1114113_u32 }; // scope 2 at $DIR/invalid_constant.rs:+6:34: +6:63 -- _1 = (_2.1: char); // scope 2 at $DIR/invalid_constant.rs:+6:34: +6:67 -+ _1 = const {transmute(0x00110001): char}; // scope 2 at $DIR/invalid_constant.rs:+6:34: +6:67 - StorageDead(_2); // scope 0 at $DIR/invalid_constant.rs:+6:69: +6:70 - StorageLive(_3); // scope 1 at $DIR/invalid_constant.rs:+13:9: +13:21 - StorageLive(_4); // scope 1 at $DIR/invalid_constant.rs:+13:25: +13:59 - StorageLive(_5); // scope 4 at $DIR/invalid_constant.rs:+13:34: +13:55 - _5 = InvalidTag { int: const 4_u32 }; // scope 4 at $DIR/invalid_constant.rs:+13:34: +13:55 -- _4 = (_5.1: E); // scope 4 at $DIR/invalid_constant.rs:+13:34: +13:57 -+ _4 = const Scalar(0x00000004): E; // scope 4 at $DIR/invalid_constant.rs:+13:34: +13:57 -+ // mir::Constant -+ // + span: no-location -+ // + literal: Const { ty: E, val: Value(Scalar(0x00000004)) } - _3 = [move _4]; // scope 1 at $DIR/invalid_constant.rs:+13:24: +13:60 - StorageDead(_4); // scope 1 at $DIR/invalid_constant.rs:+13:59: +13:60 - StorageDead(_5); // scope 1 at $DIR/invalid_constant.rs:+13:60: +13:61 - nop; // scope 3 at $DIR/invalid_constant.rs:+20:9: +20:31 - nop; // scope 3 at $DIR/invalid_constant.rs:+20:35: +20:73 - StorageLive(_8); // scope 6 at $DIR/invalid_constant.rs:+20:44: +20:65 - _8 = NoVariants { int: const 0_u32 }; // scope 6 at $DIR/invalid_constant.rs:+20:44: +20:65 - nop; // scope 6 at $DIR/invalid_constant.rs:+20:44: +20:71 - nop; // scope 3 at $DIR/invalid_constant.rs:+20:34: +20:74 - nop; // scope 3 at $DIR/invalid_constant.rs:+20:73: +20:74 - StorageDead(_8); // scope 3 at $DIR/invalid_constant.rs:+20:74: +20:75 - nop; // scope 5 at $DIR/invalid_constant.rs:+24:9: +24:22 - nop; // scope 0 at $DIR/invalid_constant.rs:+0:11: +27:2 - nop; // scope 5 at $DIR/invalid_constant.rs:+27:1: +27:2 - nop; // scope 3 at $DIR/invalid_constant.rs:+27:1: +27:2 - StorageDead(_3); // scope 1 at $DIR/invalid_constant.rs:+27:1: +27:2 - StorageDead(_1); // scope 0 at $DIR/invalid_constant.rs:+27:1: +27:2 - return; // scope 0 at $DIR/invalid_constant.rs:+27:2: +27:2 + StorageLive(_1); + StorageLive(_2); + _2 = InvalidChar { int: const 1114113_u32 }; +- _1 = (_2.1: char); ++ _1 = const {transmute(0x00110001): char}; + StorageDead(_2); + StorageLive(_3); + StorageLive(_4); + StorageLive(_5); + _5 = InvalidTag { int: const 4_u32 }; +- _4 = (_5.1: E); ++ _4 = const Scalar(0x00000004): E; + _3 = [move _4]; + StorageDead(_4); + StorageDead(_5); + nop; + nop; + StorageLive(_8); + _8 = NoVariants { int: const 0_u32 }; + nop; + nop; + nop; + StorageDead(_8); + nop; + nop; + nop; + nop; + StorageDead(_3); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/invalid_constant.main.RemoveZsts.diff b/tests/mir-opt/const_prop/invalid_constant.main.RemoveZsts.diff index e31c2bc39388b..455c2375eff9a 100644 --- a/tests/mir-opt/const_prop/invalid_constant.main.RemoveZsts.diff +++ b/tests/mir-opt/const_prop/invalid_constant.main.RemoveZsts.diff @@ -2,26 +2,26 @@ + // MIR for `main` after RemoveZsts fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/invalid_constant.rs:+0:11: +0:11 - let _1: char; // in scope 0 at $DIR/invalid_constant.rs:+6:9: +6:22 - let mut _2: main::InvalidChar; // in scope 0 at $DIR/invalid_constant.rs:+6:34: +6:63 - let mut _4: E; // in scope 0 at $DIR/invalid_constant.rs:+13:25: +13:59 - let mut _5: main::InvalidTag; // in scope 0 at $DIR/invalid_constant.rs:+13:34: +13:55 - let mut _7: Empty; // in scope 0 at $DIR/invalid_constant.rs:+20:35: +20:73 - let mut _8: main::NoVariants; // in scope 0 at $DIR/invalid_constant.rs:+20:44: +20:65 + let mut _0: (); + let _1: char; + let mut _2: main::InvalidChar; + let mut _4: E; + let mut _5: main::InvalidTag; + let mut _7: Empty; + let mut _8: main::NoVariants; scope 1 { - debug _invalid_char => _1; // in scope 1 at $DIR/invalid_constant.rs:+6:9: +6:22 - let _3: [E; 1]; // in scope 1 at $DIR/invalid_constant.rs:+13:9: +13:21 + debug _invalid_char => _1; + let _3: [E; 1]; scope 3 { - debug _invalid_tag => _3; // in scope 3 at $DIR/invalid_constant.rs:+13:9: +13:21 - let _6: [Empty; 1]; // in scope 3 at $DIR/invalid_constant.rs:+20:9: +20:31 + debug _invalid_tag => _3; + let _6: [Empty; 1]; scope 5 { -- debug _enum_without_variants => _6; // in scope 5 at $DIR/invalid_constant.rs:+20:9: +20:31 -+ debug _enum_without_variants => const [ZeroSized: Empty]; // in scope 5 at $DIR/invalid_constant.rs:+20:9: +20:31 - let _9: main::Str<"���">; // in scope 5 at $DIR/invalid_constant.rs:+24:9: +24:22 +- debug _enum_without_variants => _6; ++ debug _enum_without_variants => const [ZeroSized: Empty]; + let _9: main::Str<"���">; scope 7 { -- debug _non_utf8_str => _9; // in scope 7 at $DIR/invalid_constant.rs:+24:9: +24:22 -+ debug _non_utf8_str => const Str::<"���">; // in scope 7 at $DIR/invalid_constant.rs:+24:9: +24:22 +- debug _non_utf8_str => _9; ++ debug _non_utf8_str => const Str::<"���">; } } scope 6 { @@ -34,43 +34,43 @@ } bb0: { - StorageLive(_1); // scope 0 at $DIR/invalid_constant.rs:+6:9: +6:22 - StorageLive(_2); // scope 2 at $DIR/invalid_constant.rs:+6:34: +6:63 - _2 = InvalidChar { int: const 1114113_u32 }; // scope 2 at $DIR/invalid_constant.rs:+6:34: +6:63 - _1 = (_2.1: char); // scope 2 at $DIR/invalid_constant.rs:+6:34: +6:67 - StorageDead(_2); // scope 0 at $DIR/invalid_constant.rs:+6:69: +6:70 - StorageLive(_3); // scope 1 at $DIR/invalid_constant.rs:+13:9: +13:21 - StorageLive(_4); // scope 1 at $DIR/invalid_constant.rs:+13:25: +13:59 - StorageLive(_5); // scope 4 at $DIR/invalid_constant.rs:+13:34: +13:55 - _5 = InvalidTag { int: const 4_u32 }; // scope 4 at $DIR/invalid_constant.rs:+13:34: +13:55 - _4 = (_5.1: E); // scope 4 at $DIR/invalid_constant.rs:+13:34: +13:57 - _3 = [move _4]; // scope 1 at $DIR/invalid_constant.rs:+13:24: +13:60 - StorageDead(_4); // scope 1 at $DIR/invalid_constant.rs:+13:59: +13:60 - StorageDead(_5); // scope 1 at $DIR/invalid_constant.rs:+13:60: +13:61 -- StorageLive(_6); // scope 3 at $DIR/invalid_constant.rs:+20:9: +20:31 -- StorageLive(_7); // scope 3 at $DIR/invalid_constant.rs:+20:35: +20:73 -+ nop; // scope 3 at $DIR/invalid_constant.rs:+20:9: +20:31 -+ nop; // scope 3 at $DIR/invalid_constant.rs:+20:35: +20:73 - StorageLive(_8); // scope 6 at $DIR/invalid_constant.rs:+20:44: +20:65 - _8 = NoVariants { int: const 0_u32 }; // scope 6 at $DIR/invalid_constant.rs:+20:44: +20:65 -- _7 = (_8.1: Empty); // scope 6 at $DIR/invalid_constant.rs:+20:44: +20:71 -- _6 = [move _7]; // scope 3 at $DIR/invalid_constant.rs:+20:34: +20:74 -- StorageDead(_7); // scope 3 at $DIR/invalid_constant.rs:+20:73: +20:74 -+ nop; // scope 6 at $DIR/invalid_constant.rs:+20:44: +20:71 -+ nop; // scope 3 at $DIR/invalid_constant.rs:+20:34: +20:74 -+ nop; // scope 3 at $DIR/invalid_constant.rs:+20:73: +20:74 - StorageDead(_8); // scope 3 at $DIR/invalid_constant.rs:+20:74: +20:75 -- StorageLive(_9); // scope 5 at $DIR/invalid_constant.rs:+24:9: +24:22 -- _0 = const (); // scope 0 at $DIR/invalid_constant.rs:+0:11: +27:2 -- StorageDead(_9); // scope 5 at $DIR/invalid_constant.rs:+27:1: +27:2 -- StorageDead(_6); // scope 3 at $DIR/invalid_constant.rs:+27:1: +27:2 -+ nop; // scope 5 at $DIR/invalid_constant.rs:+24:9: +24:22 -+ nop; // scope 0 at $DIR/invalid_constant.rs:+0:11: +27:2 -+ nop; // scope 5 at $DIR/invalid_constant.rs:+27:1: +27:2 -+ nop; // scope 3 at $DIR/invalid_constant.rs:+27:1: +27:2 - StorageDead(_3); // scope 1 at $DIR/invalid_constant.rs:+27:1: +27:2 - StorageDead(_1); // scope 0 at $DIR/invalid_constant.rs:+27:1: +27:2 - return; // scope 0 at $DIR/invalid_constant.rs:+27:2: +27:2 + StorageLive(_1); + StorageLive(_2); + _2 = InvalidChar { int: const 1114113_u32 }; + _1 = (_2.1: char); + StorageDead(_2); + StorageLive(_3); + StorageLive(_4); + StorageLive(_5); + _5 = InvalidTag { int: const 4_u32 }; + _4 = (_5.1: E); + _3 = [move _4]; + StorageDead(_4); + StorageDead(_5); +- StorageLive(_6); +- StorageLive(_7); ++ nop; ++ nop; + StorageLive(_8); + _8 = NoVariants { int: const 0_u32 }; +- _7 = (_8.1: Empty); +- _6 = [move _7]; +- StorageDead(_7); ++ nop; ++ nop; ++ nop; + StorageDead(_8); +- StorageLive(_9); +- _0 = const (); +- StorageDead(_9); +- StorageDead(_6); ++ nop; ++ nop; ++ nop; ++ nop; + StorageDead(_3); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/issue_66971.main.ConstProp.panic-abort.diff b/tests/mir-opt/const_prop/issue_66971.main.ConstProp.panic-abort.diff index 061fd39e8b07e..516f13586d3ff 100644 --- a/tests/mir-opt/const_prop/issue_66971.main.ConstProp.panic-abort.diff +++ b/tests/mir-opt/const_prop/issue_66971.main.ConstProp.panic-abort.diff @@ -2,22 +2,19 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/issue_66971.rs:+0:11: +0:11 - let _1: (); // in scope 0 at $DIR/issue_66971.rs:+1:5: +1:23 - let mut _2: ((), u8, u8); // in scope 0 at $DIR/issue_66971.rs:+1:12: +1:22 + let mut _0: (); + let _1: (); + let mut _2: ((), u8, u8); bb0: { - StorageLive(_2); // scope 0 at $DIR/issue_66971.rs:+1:12: +1:22 - _2 = (const (), const 0_u8, const 0_u8); // scope 0 at $DIR/issue_66971.rs:+1:12: +1:22 - _1 = encode(move _2) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/issue_66971.rs:+1:5: +1:23 - // mir::Constant - // + span: $DIR/issue_66971.rs:18:5: 18:11 - // + literal: Const { ty: fn(((), u8, u8)) {encode}, val: Value() } + StorageLive(_2); + _2 = (const (), const 0_u8, const 0_u8); + _1 = encode(move _2) -> [return: bb1, unwind unreachable]; } bb1: { - StorageDead(_2); // scope 0 at $DIR/issue_66971.rs:+1:22: +1:23 - return; // scope 0 at $DIR/issue_66971.rs:+2:2: +2:2 + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/const_prop/issue_66971.main.ConstProp.panic-unwind.diff b/tests/mir-opt/const_prop/issue_66971.main.ConstProp.panic-unwind.diff index 2652694097c4f..e83c18735b612 100644 --- a/tests/mir-opt/const_prop/issue_66971.main.ConstProp.panic-unwind.diff +++ b/tests/mir-opt/const_prop/issue_66971.main.ConstProp.panic-unwind.diff @@ -2,22 +2,19 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/issue_66971.rs:+0:11: +0:11 - let _1: (); // in scope 0 at $DIR/issue_66971.rs:+1:5: +1:23 - let mut _2: ((), u8, u8); // in scope 0 at $DIR/issue_66971.rs:+1:12: +1:22 + let mut _0: (); + let _1: (); + let mut _2: ((), u8, u8); bb0: { - StorageLive(_2); // scope 0 at $DIR/issue_66971.rs:+1:12: +1:22 - _2 = (const (), const 0_u8, const 0_u8); // scope 0 at $DIR/issue_66971.rs:+1:12: +1:22 - _1 = encode(move _2) -> bb1; // scope 0 at $DIR/issue_66971.rs:+1:5: +1:23 - // mir::Constant - // + span: $DIR/issue_66971.rs:18:5: 18:11 - // + literal: Const { ty: fn(((), u8, u8)) {encode}, val: Value() } + StorageLive(_2); + _2 = (const (), const 0_u8, const 0_u8); + _1 = encode(move _2) -> bb1; } bb1: { - StorageDead(_2); // scope 0 at $DIR/issue_66971.rs:+1:22: +1:23 - return; // scope 0 at $DIR/issue_66971.rs:+2:2: +2:2 + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/const_prop/issue_67019.main.ConstProp.panic-abort.diff b/tests/mir-opt/const_prop/issue_67019.main.ConstProp.panic-abort.diff index 99844045bb5e7..96b4093726c88 100644 --- a/tests/mir-opt/const_prop/issue_67019.main.ConstProp.panic-abort.diff +++ b/tests/mir-opt/const_prop/issue_67019.main.ConstProp.panic-abort.diff @@ -2,27 +2,24 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/issue_67019.rs:+0:11: +0:11 - let _1: (); // in scope 0 at $DIR/issue_67019.rs:+1:5: +1:20 - let mut _2: ((u8, u8),); // in scope 0 at $DIR/issue_67019.rs:+1:10: +1:19 - let mut _3: (u8, u8); // in scope 0 at $DIR/issue_67019.rs:+1:11: +1:17 + let mut _0: (); + let _1: (); + let mut _2: ((u8, u8),); + let mut _3: (u8, u8); bb0: { - StorageLive(_2); // scope 0 at $DIR/issue_67019.rs:+1:10: +1:19 - StorageLive(_3); // scope 0 at $DIR/issue_67019.rs:+1:11: +1:17 -- _3 = (const 1_u8, const 2_u8); // scope 0 at $DIR/issue_67019.rs:+1:11: +1:17 -+ _3 = const (1_u8, 2_u8); // scope 0 at $DIR/issue_67019.rs:+1:11: +1:17 - _2 = (move _3,); // scope 0 at $DIR/issue_67019.rs:+1:10: +1:19 - StorageDead(_3); // scope 0 at $DIR/issue_67019.rs:+1:18: +1:19 - _1 = test(move _2) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/issue_67019.rs:+1:5: +1:20 - // mir::Constant - // + span: $DIR/issue_67019.rs:13:5: 13:9 - // + literal: Const { ty: fn(((u8, u8),)) {test}, val: Value() } + StorageLive(_2); + StorageLive(_3); +- _3 = (const 1_u8, const 2_u8); ++ _3 = const (1_u8, 2_u8); + _2 = (move _3,); + StorageDead(_3); + _1 = test(move _2) -> [return: bb1, unwind unreachable]; } bb1: { - StorageDead(_2); // scope 0 at $DIR/issue_67019.rs:+1:19: +1:20 - return; // scope 0 at $DIR/issue_67019.rs:+2:2: +2:2 + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/const_prop/issue_67019.main.ConstProp.panic-unwind.diff b/tests/mir-opt/const_prop/issue_67019.main.ConstProp.panic-unwind.diff index 54c9200d6721e..cbbc2582973a7 100644 --- a/tests/mir-opt/const_prop/issue_67019.main.ConstProp.panic-unwind.diff +++ b/tests/mir-opt/const_prop/issue_67019.main.ConstProp.panic-unwind.diff @@ -2,27 +2,24 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/issue_67019.rs:+0:11: +0:11 - let _1: (); // in scope 0 at $DIR/issue_67019.rs:+1:5: +1:20 - let mut _2: ((u8, u8),); // in scope 0 at $DIR/issue_67019.rs:+1:10: +1:19 - let mut _3: (u8, u8); // in scope 0 at $DIR/issue_67019.rs:+1:11: +1:17 + let mut _0: (); + let _1: (); + let mut _2: ((u8, u8),); + let mut _3: (u8, u8); bb0: { - StorageLive(_2); // scope 0 at $DIR/issue_67019.rs:+1:10: +1:19 - StorageLive(_3); // scope 0 at $DIR/issue_67019.rs:+1:11: +1:17 -- _3 = (const 1_u8, const 2_u8); // scope 0 at $DIR/issue_67019.rs:+1:11: +1:17 -+ _3 = const (1_u8, 2_u8); // scope 0 at $DIR/issue_67019.rs:+1:11: +1:17 - _2 = (move _3,); // scope 0 at $DIR/issue_67019.rs:+1:10: +1:19 - StorageDead(_3); // scope 0 at $DIR/issue_67019.rs:+1:18: +1:19 - _1 = test(move _2) -> bb1; // scope 0 at $DIR/issue_67019.rs:+1:5: +1:20 - // mir::Constant - // + span: $DIR/issue_67019.rs:13:5: 13:9 - // + literal: Const { ty: fn(((u8, u8),)) {test}, val: Value() } + StorageLive(_2); + StorageLive(_3); +- _3 = (const 1_u8, const 2_u8); ++ _3 = const (1_u8, 2_u8); + _2 = (move _3,); + StorageDead(_3); + _1 = test(move _2) -> bb1; } bb1: { - StorageDead(_2); // scope 0 at $DIR/issue_67019.rs:+1:19: +1:20 - return; // scope 0 at $DIR/issue_67019.rs:+2:2: +2:2 + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/const_prop/large_array_index.main.ConstProp.32bit.panic-abort.diff b/tests/mir-opt/const_prop/large_array_index.main.ConstProp.32bit.panic-abort.diff index 6794cfd81df12..61ba52fb0d6fb 100644 --- a/tests/mir-opt/const_prop/large_array_index.main.ConstProp.32bit.panic-abort.diff +++ b/tests/mir-opt/const_prop/large_array_index.main.ConstProp.32bit.panic-abort.diff @@ -2,38 +2,38 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/large_array_index.rs:+0:11: +0:11 - let _1: u8; // in scope 0 at $DIR/large_array_index.rs:+2:9: +2:10 - let mut _2: [u8; 5000]; // in scope 0 at $DIR/large_array_index.rs:+2:17: +2:29 - let _3: usize; // in scope 0 at $DIR/large_array_index.rs:+2:30: +2:31 - let mut _4: usize; // in scope 0 at $DIR/large_array_index.rs:+2:17: +2:32 - let mut _5: bool; // in scope 0 at $DIR/large_array_index.rs:+2:17: +2:32 + let mut _0: (); + let _1: u8; + let mut _2: [u8; 5000]; + let _3: usize; + let mut _4: usize; + let mut _5: bool; scope 1 { - debug x => _1; // in scope 1 at $DIR/large_array_index.rs:+2:9: +2:10 + debug x => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/large_array_index.rs:+2:9: +2:10 - StorageLive(_2); // scope 0 at $DIR/large_array_index.rs:+2:17: +2:29 - _2 = [const 0_u8; 5000]; // scope 0 at $DIR/large_array_index.rs:+2:17: +2:29 - StorageLive(_3); // scope 0 at $DIR/large_array_index.rs:+2:30: +2:31 - _3 = const 2_usize; // scope 0 at $DIR/large_array_index.rs:+2:30: +2:31 -- _4 = Len(_2); // scope 0 at $DIR/large_array_index.rs:+2:17: +2:32 -- _5 = Lt(_3, _4); // scope 0 at $DIR/large_array_index.rs:+2:17: +2:32 -- assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind unreachable]; // scope 0 at $DIR/large_array_index.rs:+2:17: +2:32 -+ _4 = const 5000_usize; // scope 0 at $DIR/large_array_index.rs:+2:17: +2:32 -+ _5 = const true; // scope 0 at $DIR/large_array_index.rs:+2:17: +2:32 -+ assert(const true, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind unreachable]; // scope 0 at $DIR/large_array_index.rs:+2:17: +2:32 + StorageLive(_1); + StorageLive(_2); + _2 = [const 0_u8; 5000]; + StorageLive(_3); + _3 = const 2_usize; +- _4 = Len(_2); +- _5 = Lt(_3, _4); +- assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind unreachable]; ++ _4 = const 5000_usize; ++ _5 = const true; ++ assert(const true, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind unreachable]; } bb1: { -- _1 = _2[_3]; // scope 0 at $DIR/large_array_index.rs:+2:17: +2:32 -+ _1 = _2[2 of 3]; // scope 0 at $DIR/large_array_index.rs:+2:17: +2:32 - StorageDead(_3); // scope 0 at $DIR/large_array_index.rs:+2:32: +2:33 - StorageDead(_2); // scope 0 at $DIR/large_array_index.rs:+2:32: +2:33 - _0 = const (); // scope 0 at $DIR/large_array_index.rs:+0:11: +3:2 - StorageDead(_1); // scope 0 at $DIR/large_array_index.rs:+3:1: +3:2 - return; // scope 0 at $DIR/large_array_index.rs:+3:2: +3:2 +- _1 = _2[_3]; ++ _1 = _2[2 of 3]; + StorageDead(_3); + StorageDead(_2); + _0 = const (); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/large_array_index.main.ConstProp.32bit.panic-unwind.diff b/tests/mir-opt/const_prop/large_array_index.main.ConstProp.32bit.panic-unwind.diff index 33bbad2f422ba..be245b424c14c 100644 --- a/tests/mir-opt/const_prop/large_array_index.main.ConstProp.32bit.panic-unwind.diff +++ b/tests/mir-opt/const_prop/large_array_index.main.ConstProp.32bit.panic-unwind.diff @@ -2,38 +2,38 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/large_array_index.rs:+0:11: +0:11 - let _1: u8; // in scope 0 at $DIR/large_array_index.rs:+2:9: +2:10 - let mut _2: [u8; 5000]; // in scope 0 at $DIR/large_array_index.rs:+2:17: +2:29 - let _3: usize; // in scope 0 at $DIR/large_array_index.rs:+2:30: +2:31 - let mut _4: usize; // in scope 0 at $DIR/large_array_index.rs:+2:17: +2:32 - let mut _5: bool; // in scope 0 at $DIR/large_array_index.rs:+2:17: +2:32 + let mut _0: (); + let _1: u8; + let mut _2: [u8; 5000]; + let _3: usize; + let mut _4: usize; + let mut _5: bool; scope 1 { - debug x => _1; // in scope 1 at $DIR/large_array_index.rs:+2:9: +2:10 + debug x => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/large_array_index.rs:+2:9: +2:10 - StorageLive(_2); // scope 0 at $DIR/large_array_index.rs:+2:17: +2:29 - _2 = [const 0_u8; 5000]; // scope 0 at $DIR/large_array_index.rs:+2:17: +2:29 - StorageLive(_3); // scope 0 at $DIR/large_array_index.rs:+2:30: +2:31 - _3 = const 2_usize; // scope 0 at $DIR/large_array_index.rs:+2:30: +2:31 -- _4 = Len(_2); // scope 0 at $DIR/large_array_index.rs:+2:17: +2:32 -- _5 = Lt(_3, _4); // scope 0 at $DIR/large_array_index.rs:+2:17: +2:32 -- assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> bb1; // scope 0 at $DIR/large_array_index.rs:+2:17: +2:32 -+ _4 = const 5000_usize; // scope 0 at $DIR/large_array_index.rs:+2:17: +2:32 -+ _5 = const true; // scope 0 at $DIR/large_array_index.rs:+2:17: +2:32 -+ assert(const true, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> bb1; // scope 0 at $DIR/large_array_index.rs:+2:17: +2:32 + StorageLive(_1); + StorageLive(_2); + _2 = [const 0_u8; 5000]; + StorageLive(_3); + _3 = const 2_usize; +- _4 = Len(_2); +- _5 = Lt(_3, _4); +- assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> bb1; ++ _4 = const 5000_usize; ++ _5 = const true; ++ assert(const true, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> bb1; } bb1: { -- _1 = _2[_3]; // scope 0 at $DIR/large_array_index.rs:+2:17: +2:32 -+ _1 = _2[2 of 3]; // scope 0 at $DIR/large_array_index.rs:+2:17: +2:32 - StorageDead(_3); // scope 0 at $DIR/large_array_index.rs:+2:32: +2:33 - StorageDead(_2); // scope 0 at $DIR/large_array_index.rs:+2:32: +2:33 - _0 = const (); // scope 0 at $DIR/large_array_index.rs:+0:11: +3:2 - StorageDead(_1); // scope 0 at $DIR/large_array_index.rs:+3:1: +3:2 - return; // scope 0 at $DIR/large_array_index.rs:+3:2: +3:2 +- _1 = _2[_3]; ++ _1 = _2[2 of 3]; + StorageDead(_3); + StorageDead(_2); + _0 = const (); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/large_array_index.main.ConstProp.64bit.panic-abort.diff b/tests/mir-opt/const_prop/large_array_index.main.ConstProp.64bit.panic-abort.diff index 6794cfd81df12..61ba52fb0d6fb 100644 --- a/tests/mir-opt/const_prop/large_array_index.main.ConstProp.64bit.panic-abort.diff +++ b/tests/mir-opt/const_prop/large_array_index.main.ConstProp.64bit.panic-abort.diff @@ -2,38 +2,38 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/large_array_index.rs:+0:11: +0:11 - let _1: u8; // in scope 0 at $DIR/large_array_index.rs:+2:9: +2:10 - let mut _2: [u8; 5000]; // in scope 0 at $DIR/large_array_index.rs:+2:17: +2:29 - let _3: usize; // in scope 0 at $DIR/large_array_index.rs:+2:30: +2:31 - let mut _4: usize; // in scope 0 at $DIR/large_array_index.rs:+2:17: +2:32 - let mut _5: bool; // in scope 0 at $DIR/large_array_index.rs:+2:17: +2:32 + let mut _0: (); + let _1: u8; + let mut _2: [u8; 5000]; + let _3: usize; + let mut _4: usize; + let mut _5: bool; scope 1 { - debug x => _1; // in scope 1 at $DIR/large_array_index.rs:+2:9: +2:10 + debug x => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/large_array_index.rs:+2:9: +2:10 - StorageLive(_2); // scope 0 at $DIR/large_array_index.rs:+2:17: +2:29 - _2 = [const 0_u8; 5000]; // scope 0 at $DIR/large_array_index.rs:+2:17: +2:29 - StorageLive(_3); // scope 0 at $DIR/large_array_index.rs:+2:30: +2:31 - _3 = const 2_usize; // scope 0 at $DIR/large_array_index.rs:+2:30: +2:31 -- _4 = Len(_2); // scope 0 at $DIR/large_array_index.rs:+2:17: +2:32 -- _5 = Lt(_3, _4); // scope 0 at $DIR/large_array_index.rs:+2:17: +2:32 -- assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind unreachable]; // scope 0 at $DIR/large_array_index.rs:+2:17: +2:32 -+ _4 = const 5000_usize; // scope 0 at $DIR/large_array_index.rs:+2:17: +2:32 -+ _5 = const true; // scope 0 at $DIR/large_array_index.rs:+2:17: +2:32 -+ assert(const true, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind unreachable]; // scope 0 at $DIR/large_array_index.rs:+2:17: +2:32 + StorageLive(_1); + StorageLive(_2); + _2 = [const 0_u8; 5000]; + StorageLive(_3); + _3 = const 2_usize; +- _4 = Len(_2); +- _5 = Lt(_3, _4); +- assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind unreachable]; ++ _4 = const 5000_usize; ++ _5 = const true; ++ assert(const true, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind unreachable]; } bb1: { -- _1 = _2[_3]; // scope 0 at $DIR/large_array_index.rs:+2:17: +2:32 -+ _1 = _2[2 of 3]; // scope 0 at $DIR/large_array_index.rs:+2:17: +2:32 - StorageDead(_3); // scope 0 at $DIR/large_array_index.rs:+2:32: +2:33 - StorageDead(_2); // scope 0 at $DIR/large_array_index.rs:+2:32: +2:33 - _0 = const (); // scope 0 at $DIR/large_array_index.rs:+0:11: +3:2 - StorageDead(_1); // scope 0 at $DIR/large_array_index.rs:+3:1: +3:2 - return; // scope 0 at $DIR/large_array_index.rs:+3:2: +3:2 +- _1 = _2[_3]; ++ _1 = _2[2 of 3]; + StorageDead(_3); + StorageDead(_2); + _0 = const (); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/large_array_index.main.ConstProp.64bit.panic-unwind.diff b/tests/mir-opt/const_prop/large_array_index.main.ConstProp.64bit.panic-unwind.diff index 33bbad2f422ba..be245b424c14c 100644 --- a/tests/mir-opt/const_prop/large_array_index.main.ConstProp.64bit.panic-unwind.diff +++ b/tests/mir-opt/const_prop/large_array_index.main.ConstProp.64bit.panic-unwind.diff @@ -2,38 +2,38 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/large_array_index.rs:+0:11: +0:11 - let _1: u8; // in scope 0 at $DIR/large_array_index.rs:+2:9: +2:10 - let mut _2: [u8; 5000]; // in scope 0 at $DIR/large_array_index.rs:+2:17: +2:29 - let _3: usize; // in scope 0 at $DIR/large_array_index.rs:+2:30: +2:31 - let mut _4: usize; // in scope 0 at $DIR/large_array_index.rs:+2:17: +2:32 - let mut _5: bool; // in scope 0 at $DIR/large_array_index.rs:+2:17: +2:32 + let mut _0: (); + let _1: u8; + let mut _2: [u8; 5000]; + let _3: usize; + let mut _4: usize; + let mut _5: bool; scope 1 { - debug x => _1; // in scope 1 at $DIR/large_array_index.rs:+2:9: +2:10 + debug x => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/large_array_index.rs:+2:9: +2:10 - StorageLive(_2); // scope 0 at $DIR/large_array_index.rs:+2:17: +2:29 - _2 = [const 0_u8; 5000]; // scope 0 at $DIR/large_array_index.rs:+2:17: +2:29 - StorageLive(_3); // scope 0 at $DIR/large_array_index.rs:+2:30: +2:31 - _3 = const 2_usize; // scope 0 at $DIR/large_array_index.rs:+2:30: +2:31 -- _4 = Len(_2); // scope 0 at $DIR/large_array_index.rs:+2:17: +2:32 -- _5 = Lt(_3, _4); // scope 0 at $DIR/large_array_index.rs:+2:17: +2:32 -- assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> bb1; // scope 0 at $DIR/large_array_index.rs:+2:17: +2:32 -+ _4 = const 5000_usize; // scope 0 at $DIR/large_array_index.rs:+2:17: +2:32 -+ _5 = const true; // scope 0 at $DIR/large_array_index.rs:+2:17: +2:32 -+ assert(const true, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> bb1; // scope 0 at $DIR/large_array_index.rs:+2:17: +2:32 + StorageLive(_1); + StorageLive(_2); + _2 = [const 0_u8; 5000]; + StorageLive(_3); + _3 = const 2_usize; +- _4 = Len(_2); +- _5 = Lt(_3, _4); +- assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> bb1; ++ _4 = const 5000_usize; ++ _5 = const true; ++ assert(const true, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> bb1; } bb1: { -- _1 = _2[_3]; // scope 0 at $DIR/large_array_index.rs:+2:17: +2:32 -+ _1 = _2[2 of 3]; // scope 0 at $DIR/large_array_index.rs:+2:17: +2:32 - StorageDead(_3); // scope 0 at $DIR/large_array_index.rs:+2:32: +2:33 - StorageDead(_2); // scope 0 at $DIR/large_array_index.rs:+2:32: +2:33 - _0 = const (); // scope 0 at $DIR/large_array_index.rs:+0:11: +3:2 - StorageDead(_1); // scope 0 at $DIR/large_array_index.rs:+3:1: +3:2 - return; // scope 0 at $DIR/large_array_index.rs:+3:2: +3:2 +- _1 = _2[_3]; ++ _1 = _2[2 of 3]; + StorageDead(_3); + StorageDead(_2); + _0 = const (); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/mult_by_zero.test.ConstProp.diff b/tests/mir-opt/const_prop/mult_by_zero.test.ConstProp.diff index 629c8e60148fd..73b1da064237a 100644 --- a/tests/mir-opt/const_prop/mult_by_zero.test.ConstProp.diff +++ b/tests/mir-opt/const_prop/mult_by_zero.test.ConstProp.diff @@ -2,17 +2,17 @@ + // MIR for `test` after ConstProp fn test(_1: i32) -> i32 { - debug x => _1; // in scope 0 at $DIR/mult_by_zero.rs:+0:9: +0:10 - let mut _0: i32; // return place in scope 0 at $DIR/mult_by_zero.rs:+0:21: +0:24 - let mut _2: i32; // in scope 0 at $DIR/mult_by_zero.rs:+1:3: +1:4 + debug x => _1; + let mut _0: i32; + let mut _2: i32; bb0: { - StorageLive(_2); // scope 0 at $DIR/mult_by_zero.rs:+1:3: +1:4 - _2 = _1; // scope 0 at $DIR/mult_by_zero.rs:+1:3: +1:4 -- _0 = Mul(move _2, const 0_i32); // scope 0 at $DIR/mult_by_zero.rs:+1:3: +1:8 -+ _0 = const 0_i32; // scope 0 at $DIR/mult_by_zero.rs:+1:3: +1:8 - StorageDead(_2); // scope 0 at $DIR/mult_by_zero.rs:+1:7: +1:8 - return; // scope 0 at $DIR/mult_by_zero.rs:+2:2: +2:2 + StorageLive(_2); + _2 = _1; +- _0 = Mul(move _2, const 0_i32); ++ _0 = const 0_i32; + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/const_prop/mutable_variable.main.ConstProp.diff b/tests/mir-opt/const_prop/mutable_variable.main.ConstProp.diff index bd010e7b16080..ad8d9ddb0743f 100644 --- a/tests/mir-opt/const_prop/mutable_variable.main.ConstProp.diff +++ b/tests/mir-opt/const_prop/mutable_variable.main.ConstProp.diff @@ -2,27 +2,27 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/mutable_variable.rs:+0:11: +0:11 - let mut _1: i32; // in scope 0 at $DIR/mutable_variable.rs:+1:9: +1:14 + let mut _0: (); + let mut _1: i32; scope 1 { - debug x => _1; // in scope 1 at $DIR/mutable_variable.rs:+1:9: +1:14 - let _2: i32; // in scope 1 at $DIR/mutable_variable.rs:+3:9: +3:10 + debug x => _1; + let _2: i32; scope 2 { - debug y => _2; // in scope 2 at $DIR/mutable_variable.rs:+3:9: +3:10 + debug y => _2; } } bb0: { - StorageLive(_1); // scope 0 at $DIR/mutable_variable.rs:+1:9: +1:14 - _1 = const 42_i32; // scope 0 at $DIR/mutable_variable.rs:+1:17: +1:19 - _1 = const 99_i32; // scope 1 at $DIR/mutable_variable.rs:+2:5: +2:11 - StorageLive(_2); // scope 1 at $DIR/mutable_variable.rs:+3:9: +3:10 -- _2 = _1; // scope 1 at $DIR/mutable_variable.rs:+3:13: +3:14 -+ _2 = const 99_i32; // scope 1 at $DIR/mutable_variable.rs:+3:13: +3:14 - _0 = const (); // scope 0 at $DIR/mutable_variable.rs:+0:11: +4:2 - StorageDead(_2); // scope 1 at $DIR/mutable_variable.rs:+4:1: +4:2 - StorageDead(_1); // scope 0 at $DIR/mutable_variable.rs:+4:1: +4:2 - return; // scope 0 at $DIR/mutable_variable.rs:+4:2: +4:2 + StorageLive(_1); + _1 = const 42_i32; + _1 = const 99_i32; + StorageLive(_2); +- _2 = _1; ++ _2 = const 99_i32; + _0 = const (); + StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/mutable_variable_aggregate.main.ConstProp.diff b/tests/mir-opt/const_prop/mutable_variable_aggregate.main.ConstProp.diff index 539f6dd94b926..0f118c7f59fdf 100644 --- a/tests/mir-opt/const_prop/mutable_variable_aggregate.main.ConstProp.diff +++ b/tests/mir-opt/const_prop/mutable_variable_aggregate.main.ConstProp.diff @@ -2,28 +2,28 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/mutable_variable_aggregate.rs:+0:11: +0:11 - let mut _1: (i32, i32); // in scope 0 at $DIR/mutable_variable_aggregate.rs:+1:9: +1:14 + let mut _0: (); + let mut _1: (i32, i32); scope 1 { - debug x => _1; // in scope 1 at $DIR/mutable_variable_aggregate.rs:+1:9: +1:14 - let _2: (i32, i32); // in scope 1 at $DIR/mutable_variable_aggregate.rs:+3:9: +3:10 + debug x => _1; + let _2: (i32, i32); scope 2 { - debug y => _2; // in scope 2 at $DIR/mutable_variable_aggregate.rs:+3:9: +3:10 + debug y => _2; } } bb0: { - StorageLive(_1); // scope 0 at $DIR/mutable_variable_aggregate.rs:+1:9: +1:14 -- _1 = (const 42_i32, const 43_i32); // scope 0 at $DIR/mutable_variable_aggregate.rs:+1:17: +1:25 -+ _1 = const (42_i32, 43_i32); // scope 0 at $DIR/mutable_variable_aggregate.rs:+1:17: +1:25 - (_1.1: i32) = const 99_i32; // scope 1 at $DIR/mutable_variable_aggregate.rs:+2:5: +2:13 - StorageLive(_2); // scope 1 at $DIR/mutable_variable_aggregate.rs:+3:9: +3:10 -- _2 = _1; // scope 1 at $DIR/mutable_variable_aggregate.rs:+3:13: +3:14 -+ _2 = const (42_i32, 99_i32); // scope 1 at $DIR/mutable_variable_aggregate.rs:+3:13: +3:14 - _0 = const (); // scope 0 at $DIR/mutable_variable_aggregate.rs:+0:11: +4:2 - StorageDead(_2); // scope 1 at $DIR/mutable_variable_aggregate.rs:+4:1: +4:2 - StorageDead(_1); // scope 0 at $DIR/mutable_variable_aggregate.rs:+4:1: +4:2 - return; // scope 0 at $DIR/mutable_variable_aggregate.rs:+4:2: +4:2 + StorageLive(_1); +- _1 = (const 42_i32, const 43_i32); ++ _1 = const (42_i32, 43_i32); + (_1.1: i32) = const 99_i32; + StorageLive(_2); +- _2 = _1; ++ _2 = const (42_i32, 99_i32); + _0 = const (); + StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/mutable_variable_aggregate_mut_ref.main.ConstProp.diff b/tests/mir-opt/const_prop/mutable_variable_aggregate_mut_ref.main.ConstProp.diff index bec641ecfae89..106e27f8f2768 100644 --- a/tests/mir-opt/const_prop/mutable_variable_aggregate_mut_ref.main.ConstProp.diff +++ b/tests/mir-opt/const_prop/mutable_variable_aggregate_mut_ref.main.ConstProp.diff @@ -2,33 +2,33 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/mutable_variable_aggregate_mut_ref.rs:+0:11: +0:11 - let mut _1: (i32, i32); // in scope 0 at $DIR/mutable_variable_aggregate_mut_ref.rs:+1:9: +1:14 + let mut _0: (); + let mut _1: (i32, i32); scope 1 { - debug x => _1; // in scope 1 at $DIR/mutable_variable_aggregate_mut_ref.rs:+1:9: +1:14 - let _2: &mut (i32, i32); // in scope 1 at $DIR/mutable_variable_aggregate_mut_ref.rs:+2:9: +2:10 + debug x => _1; + let _2: &mut (i32, i32); scope 2 { - debug z => _2; // in scope 2 at $DIR/mutable_variable_aggregate_mut_ref.rs:+2:9: +2:10 - let _3: (i32, i32); // in scope 2 at $DIR/mutable_variable_aggregate_mut_ref.rs:+4:9: +4:10 + debug z => _2; + let _3: (i32, i32); scope 3 { - debug y => _3; // in scope 3 at $DIR/mutable_variable_aggregate_mut_ref.rs:+4:9: +4:10 + debug y => _3; } } } bb0: { - StorageLive(_1); // scope 0 at $DIR/mutable_variable_aggregate_mut_ref.rs:+1:9: +1:14 - _1 = (const 42_i32, const 43_i32); // scope 0 at $DIR/mutable_variable_aggregate_mut_ref.rs:+1:17: +1:25 - StorageLive(_2); // scope 1 at $DIR/mutable_variable_aggregate_mut_ref.rs:+2:9: +2:10 - _2 = &mut _1; // scope 1 at $DIR/mutable_variable_aggregate_mut_ref.rs:+2:13: +2:19 - ((*_2).1: i32) = const 99_i32; // scope 2 at $DIR/mutable_variable_aggregate_mut_ref.rs:+3:5: +3:13 - StorageLive(_3); // scope 2 at $DIR/mutable_variable_aggregate_mut_ref.rs:+4:9: +4:10 - _3 = _1; // scope 2 at $DIR/mutable_variable_aggregate_mut_ref.rs:+4:13: +4:14 - _0 = const (); // scope 0 at $DIR/mutable_variable_aggregate_mut_ref.rs:+0:11: +5:2 - StorageDead(_3); // scope 2 at $DIR/mutable_variable_aggregate_mut_ref.rs:+5:1: +5:2 - StorageDead(_2); // scope 1 at $DIR/mutable_variable_aggregate_mut_ref.rs:+5:1: +5:2 - StorageDead(_1); // scope 0 at $DIR/mutable_variable_aggregate_mut_ref.rs:+5:1: +5:2 - return; // scope 0 at $DIR/mutable_variable_aggregate_mut_ref.rs:+5:2: +5:2 + StorageLive(_1); + _1 = (const 42_i32, const 43_i32); + StorageLive(_2); + _2 = &mut _1; + ((*_2).1: i32) = const 99_i32; + StorageLive(_3); + _3 = _1; + _0 = const (); + StorageDead(_3); + StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/mutable_variable_aggregate_partial_read.main.ConstProp.panic-abort.diff b/tests/mir-opt/const_prop/mutable_variable_aggregate_partial_read.main.ConstProp.panic-abort.diff index b9da74e30b094..34288c62fee12 100644 --- a/tests/mir-opt/const_prop/mutable_variable_aggregate_partial_read.main.ConstProp.panic-abort.diff +++ b/tests/mir-opt/const_prop/mutable_variable_aggregate_partial_read.main.ConstProp.panic-abort.diff @@ -2,34 +2,31 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/mutable_variable_aggregate_partial_read.rs:+0:11: +0:11 - let mut _1: (i32, i32); // in scope 0 at $DIR/mutable_variable_aggregate_partial_read.rs:+1:9: +1:14 + let mut _0: (); + let mut _1: (i32, i32); scope 1 { - debug x => _1; // in scope 1 at $DIR/mutable_variable_aggregate_partial_read.rs:+1:9: +1:14 - let _2: i32; // in scope 1 at $DIR/mutable_variable_aggregate_partial_read.rs:+4:9: +4:10 + debug x => _1; + let _2: i32; scope 2 { - debug y => _2; // in scope 2 at $DIR/mutable_variable_aggregate_partial_read.rs:+4:9: +4:10 + debug y => _2; } } bb0: { - StorageLive(_1); // scope 0 at $DIR/mutable_variable_aggregate_partial_read.rs:+1:9: +1:14 - _1 = foo() -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/mutable_variable_aggregate_partial_read.rs:+1:29: +1:34 - // mir::Constant - // + span: $DIR/mutable_variable_aggregate_partial_read.rs:6:29: 6:32 - // + literal: Const { ty: fn() -> (i32, i32) {foo}, val: Value() } + StorageLive(_1); + _1 = foo() -> [return: bb1, unwind unreachable]; } bb1: { - (_1.1: i32) = const 99_i32; // scope 1 at $DIR/mutable_variable_aggregate_partial_read.rs:+2:5: +2:13 - (_1.0: i32) = const 42_i32; // scope 1 at $DIR/mutable_variable_aggregate_partial_read.rs:+3:5: +3:13 - StorageLive(_2); // scope 1 at $DIR/mutable_variable_aggregate_partial_read.rs:+4:9: +4:10 -- _2 = (_1.1: i32); // scope 1 at $DIR/mutable_variable_aggregate_partial_read.rs:+4:13: +4:16 -+ _2 = const 99_i32; // scope 1 at $DIR/mutable_variable_aggregate_partial_read.rs:+4:13: +4:16 - _0 = const (); // scope 0 at $DIR/mutable_variable_aggregate_partial_read.rs:+0:11: +5:2 - StorageDead(_2); // scope 1 at $DIR/mutable_variable_aggregate_partial_read.rs:+5:1: +5:2 - StorageDead(_1); // scope 0 at $DIR/mutable_variable_aggregate_partial_read.rs:+5:1: +5:2 - return; // scope 0 at $DIR/mutable_variable_aggregate_partial_read.rs:+5:2: +5:2 + (_1.1: i32) = const 99_i32; + (_1.0: i32) = const 42_i32; + StorageLive(_2); +- _2 = (_1.1: i32); ++ _2 = const 99_i32; + _0 = const (); + StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/mutable_variable_aggregate_partial_read.main.ConstProp.panic-unwind.diff b/tests/mir-opt/const_prop/mutable_variable_aggregate_partial_read.main.ConstProp.panic-unwind.diff index 374151057acda..50006f5f5b5a1 100644 --- a/tests/mir-opt/const_prop/mutable_variable_aggregate_partial_read.main.ConstProp.panic-unwind.diff +++ b/tests/mir-opt/const_prop/mutable_variable_aggregate_partial_read.main.ConstProp.panic-unwind.diff @@ -2,34 +2,31 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/mutable_variable_aggregate_partial_read.rs:+0:11: +0:11 - let mut _1: (i32, i32); // in scope 0 at $DIR/mutable_variable_aggregate_partial_read.rs:+1:9: +1:14 + let mut _0: (); + let mut _1: (i32, i32); scope 1 { - debug x => _1; // in scope 1 at $DIR/mutable_variable_aggregate_partial_read.rs:+1:9: +1:14 - let _2: i32; // in scope 1 at $DIR/mutable_variable_aggregate_partial_read.rs:+4:9: +4:10 + debug x => _1; + let _2: i32; scope 2 { - debug y => _2; // in scope 2 at $DIR/mutable_variable_aggregate_partial_read.rs:+4:9: +4:10 + debug y => _2; } } bb0: { - StorageLive(_1); // scope 0 at $DIR/mutable_variable_aggregate_partial_read.rs:+1:9: +1:14 - _1 = foo() -> bb1; // scope 0 at $DIR/mutable_variable_aggregate_partial_read.rs:+1:29: +1:34 - // mir::Constant - // + span: $DIR/mutable_variable_aggregate_partial_read.rs:6:29: 6:32 - // + literal: Const { ty: fn() -> (i32, i32) {foo}, val: Value() } + StorageLive(_1); + _1 = foo() -> bb1; } bb1: { - (_1.1: i32) = const 99_i32; // scope 1 at $DIR/mutable_variable_aggregate_partial_read.rs:+2:5: +2:13 - (_1.0: i32) = const 42_i32; // scope 1 at $DIR/mutable_variable_aggregate_partial_read.rs:+3:5: +3:13 - StorageLive(_2); // scope 1 at $DIR/mutable_variable_aggregate_partial_read.rs:+4:9: +4:10 -- _2 = (_1.1: i32); // scope 1 at $DIR/mutable_variable_aggregate_partial_read.rs:+4:13: +4:16 -+ _2 = const 99_i32; // scope 1 at $DIR/mutable_variable_aggregate_partial_read.rs:+4:13: +4:16 - _0 = const (); // scope 0 at $DIR/mutable_variable_aggregate_partial_read.rs:+0:11: +5:2 - StorageDead(_2); // scope 1 at $DIR/mutable_variable_aggregate_partial_read.rs:+5:1: +5:2 - StorageDead(_1); // scope 0 at $DIR/mutable_variable_aggregate_partial_read.rs:+5:1: +5:2 - return; // scope 0 at $DIR/mutable_variable_aggregate_partial_read.rs:+5:2: +5:2 + (_1.1: i32) = const 99_i32; + (_1.0: i32) = const 42_i32; + StorageLive(_2); +- _2 = (_1.1: i32); ++ _2 = const 99_i32; + _0 = const (); + StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/mutable_variable_no_prop.main.ConstProp.diff b/tests/mir-opt/const_prop/mutable_variable_no_prop.main.ConstProp.diff index fab81063028aa..ac26f8ef4aeff 100644 --- a/tests/mir-opt/const_prop/mutable_variable_no_prop.main.ConstProp.diff +++ b/tests/mir-opt/const_prop/mutable_variable_no_prop.main.ConstProp.diff @@ -2,43 +2,40 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/mutable_variable_no_prop.rs:+0:11: +0:11 - let mut _1: u32; // in scope 0 at $DIR/mutable_variable_no_prop.rs:+1:9: +1:14 - let _2: (); // in scope 0 at $DIR/mutable_variable_no_prop.rs:+2:5: +4:6 - let mut _3: u32; // in scope 0 at $DIR/mutable_variable_no_prop.rs:+3:13: +3:19 - let mut _4: *mut u32; // in scope 0 at $DIR/mutable_variable_no_prop.rs:+3:13: +3:19 + let mut _0: (); + let mut _1: u32; + let _2: (); + let mut _3: u32; + let mut _4: *mut u32; scope 1 { - debug x => _1; // in scope 1 at $DIR/mutable_variable_no_prop.rs:+1:9: +1:14 - let _5: u32; // in scope 1 at $DIR/mutable_variable_no_prop.rs:+5:9: +5:10 + debug x => _1; + let _5: u32; scope 2 { } scope 3 { - debug y => _5; // in scope 3 at $DIR/mutable_variable_no_prop.rs:+5:9: +5:10 + debug y => _5; } } bb0: { - StorageLive(_1); // scope 0 at $DIR/mutable_variable_no_prop.rs:+1:9: +1:14 - _1 = const 42_u32; // scope 0 at $DIR/mutable_variable_no_prop.rs:+1:17: +1:19 - StorageLive(_2); // scope 1 at $DIR/mutable_variable_no_prop.rs:+2:5: +4:6 - StorageLive(_3); // scope 2 at $DIR/mutable_variable_no_prop.rs:+3:13: +3:19 - StorageLive(_4); // scope 2 at $DIR/mutable_variable_no_prop.rs:+3:13: +3:19 - _4 = const {alloc1: *mut u32}; // scope 2 at $DIR/mutable_variable_no_prop.rs:+3:13: +3:19 - // mir::Constant - // + span: $DIR/mutable_variable_no_prop.rs:9:13: 9:19 - // + literal: Const { ty: *mut u32, val: Value(Scalar(alloc1)) } - _3 = (*_4); // scope 2 at $DIR/mutable_variable_no_prop.rs:+3:13: +3:19 - _1 = move _3; // scope 2 at $DIR/mutable_variable_no_prop.rs:+3:9: +3:19 - StorageDead(_3); // scope 2 at $DIR/mutable_variable_no_prop.rs:+3:18: +3:19 - StorageDead(_4); // scope 2 at $DIR/mutable_variable_no_prop.rs:+3:19: +3:20 - _2 = const (); // scope 2 at $DIR/mutable_variable_no_prop.rs:+2:5: +4:6 - StorageDead(_2); // scope 1 at $DIR/mutable_variable_no_prop.rs:+4:5: +4:6 - StorageLive(_5); // scope 1 at $DIR/mutable_variable_no_prop.rs:+5:9: +5:10 - _5 = _1; // scope 1 at $DIR/mutable_variable_no_prop.rs:+5:13: +5:14 - _0 = const (); // scope 0 at $DIR/mutable_variable_no_prop.rs:+0:11: +6:2 - StorageDead(_5); // scope 1 at $DIR/mutable_variable_no_prop.rs:+6:1: +6:2 - StorageDead(_1); // scope 0 at $DIR/mutable_variable_no_prop.rs:+6:1: +6:2 - return; // scope 0 at $DIR/mutable_variable_no_prop.rs:+6:2: +6:2 + StorageLive(_1); + _1 = const 42_u32; + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + _4 = const {alloc1: *mut u32}; + _3 = (*_4); + _1 = move _3; + StorageDead(_3); + StorageDead(_4); + _2 = const (); + StorageDead(_2); + StorageLive(_5); + _5 = _1; + _0 = const (); + StorageDead(_5); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/mutable_variable_unprop_assign.main.ConstProp.panic-abort.diff b/tests/mir-opt/const_prop/mutable_variable_unprop_assign.main.ConstProp.panic-abort.diff index b090dfc92b64d..a85dcf9c7edf7 100644 --- a/tests/mir-opt/const_prop/mutable_variable_unprop_assign.main.ConstProp.panic-abort.diff +++ b/tests/mir-opt/const_prop/mutable_variable_unprop_assign.main.ConstProp.panic-abort.diff @@ -2,52 +2,49 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/mutable_variable_unprop_assign.rs:+0:11: +0:11 - let _1: i32; // in scope 0 at $DIR/mutable_variable_unprop_assign.rs:+1:9: +1:10 - let mut _3: i32; // in scope 0 at $DIR/mutable_variable_unprop_assign.rs:+3:11: +3:12 + let mut _0: (); + let _1: i32; + let mut _3: i32; scope 1 { - debug a => _1; // in scope 1 at $DIR/mutable_variable_unprop_assign.rs:+1:9: +1:10 - let mut _2: (i32, i32); // in scope 1 at $DIR/mutable_variable_unprop_assign.rs:+2:9: +2:14 + debug a => _1; + let mut _2: (i32, i32); scope 2 { - debug x => _2; // in scope 2 at $DIR/mutable_variable_unprop_assign.rs:+2:9: +2:14 - let _4: i32; // in scope 2 at $DIR/mutable_variable_unprop_assign.rs:+4:9: +4:10 + debug x => _2; + let _4: i32; scope 3 { - debug y => _4; // in scope 3 at $DIR/mutable_variable_unprop_assign.rs:+4:9: +4:10 - let _5: i32; // in scope 3 at $DIR/mutable_variable_unprop_assign.rs:+5:9: +5:10 + debug y => _4; + let _5: i32; scope 4 { - debug z => _5; // in scope 4 at $DIR/mutable_variable_unprop_assign.rs:+5:9: +5:10 + debug z => _5; } } } } bb0: { - StorageLive(_1); // scope 0 at $DIR/mutable_variable_unprop_assign.rs:+1:9: +1:10 - _1 = foo() -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/mutable_variable_unprop_assign.rs:+1:13: +1:18 - // mir::Constant - // + span: $DIR/mutable_variable_unprop_assign.rs:6:13: 6:16 - // + literal: Const { ty: fn() -> i32 {foo}, val: Value() } + StorageLive(_1); + _1 = foo() -> [return: bb1, unwind unreachable]; } bb1: { - StorageLive(_2); // scope 1 at $DIR/mutable_variable_unprop_assign.rs:+2:9: +2:14 -- _2 = (const 1_i32, const 2_i32); // scope 1 at $DIR/mutable_variable_unprop_assign.rs:+2:29: +2:35 -+ _2 = const (1_i32, 2_i32); // scope 1 at $DIR/mutable_variable_unprop_assign.rs:+2:29: +2:35 - StorageLive(_3); // scope 2 at $DIR/mutable_variable_unprop_assign.rs:+3:11: +3:12 - _3 = _1; // scope 2 at $DIR/mutable_variable_unprop_assign.rs:+3:11: +3:12 - (_2.1: i32) = move _3; // scope 2 at $DIR/mutable_variable_unprop_assign.rs:+3:5: +3:12 - StorageDead(_3); // scope 2 at $DIR/mutable_variable_unprop_assign.rs:+3:11: +3:12 - StorageLive(_4); // scope 2 at $DIR/mutable_variable_unprop_assign.rs:+4:9: +4:10 - _4 = (_2.1: i32); // scope 2 at $DIR/mutable_variable_unprop_assign.rs:+4:13: +4:16 - StorageLive(_5); // scope 3 at $DIR/mutable_variable_unprop_assign.rs:+5:9: +5:10 -- _5 = (_2.0: i32); // scope 3 at $DIR/mutable_variable_unprop_assign.rs:+5:13: +5:16 -+ _5 = const 1_i32; // scope 3 at $DIR/mutable_variable_unprop_assign.rs:+5:13: +5:16 - _0 = const (); // scope 0 at $DIR/mutable_variable_unprop_assign.rs:+0:11: +6:2 - StorageDead(_5); // scope 3 at $DIR/mutable_variable_unprop_assign.rs:+6:1: +6:2 - StorageDead(_4); // scope 2 at $DIR/mutable_variable_unprop_assign.rs:+6:1: +6:2 - StorageDead(_2); // scope 1 at $DIR/mutable_variable_unprop_assign.rs:+6:1: +6:2 - StorageDead(_1); // scope 0 at $DIR/mutable_variable_unprop_assign.rs:+6:1: +6:2 - return; // scope 0 at $DIR/mutable_variable_unprop_assign.rs:+6:2: +6:2 + StorageLive(_2); +- _2 = (const 1_i32, const 2_i32); ++ _2 = const (1_i32, 2_i32); + StorageLive(_3); + _3 = _1; + (_2.1: i32) = move _3; + StorageDead(_3); + StorageLive(_4); + _4 = (_2.1: i32); + StorageLive(_5); +- _5 = (_2.0: i32); ++ _5 = const 1_i32; + _0 = const (); + StorageDead(_5); + StorageDead(_4); + StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/mutable_variable_unprop_assign.main.ConstProp.panic-unwind.diff b/tests/mir-opt/const_prop/mutable_variable_unprop_assign.main.ConstProp.panic-unwind.diff index 3048122d8fff7..69a0c3e2429e4 100644 --- a/tests/mir-opt/const_prop/mutable_variable_unprop_assign.main.ConstProp.panic-unwind.diff +++ b/tests/mir-opt/const_prop/mutable_variable_unprop_assign.main.ConstProp.panic-unwind.diff @@ -2,52 +2,49 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/mutable_variable_unprop_assign.rs:+0:11: +0:11 - let _1: i32; // in scope 0 at $DIR/mutable_variable_unprop_assign.rs:+1:9: +1:10 - let mut _3: i32; // in scope 0 at $DIR/mutable_variable_unprop_assign.rs:+3:11: +3:12 + let mut _0: (); + let _1: i32; + let mut _3: i32; scope 1 { - debug a => _1; // in scope 1 at $DIR/mutable_variable_unprop_assign.rs:+1:9: +1:10 - let mut _2: (i32, i32); // in scope 1 at $DIR/mutable_variable_unprop_assign.rs:+2:9: +2:14 + debug a => _1; + let mut _2: (i32, i32); scope 2 { - debug x => _2; // in scope 2 at $DIR/mutable_variable_unprop_assign.rs:+2:9: +2:14 - let _4: i32; // in scope 2 at $DIR/mutable_variable_unprop_assign.rs:+4:9: +4:10 + debug x => _2; + let _4: i32; scope 3 { - debug y => _4; // in scope 3 at $DIR/mutable_variable_unprop_assign.rs:+4:9: +4:10 - let _5: i32; // in scope 3 at $DIR/mutable_variable_unprop_assign.rs:+5:9: +5:10 + debug y => _4; + let _5: i32; scope 4 { - debug z => _5; // in scope 4 at $DIR/mutable_variable_unprop_assign.rs:+5:9: +5:10 + debug z => _5; } } } } bb0: { - StorageLive(_1); // scope 0 at $DIR/mutable_variable_unprop_assign.rs:+1:9: +1:10 - _1 = foo() -> bb1; // scope 0 at $DIR/mutable_variable_unprop_assign.rs:+1:13: +1:18 - // mir::Constant - // + span: $DIR/mutable_variable_unprop_assign.rs:6:13: 6:16 - // + literal: Const { ty: fn() -> i32 {foo}, val: Value() } + StorageLive(_1); + _1 = foo() -> bb1; } bb1: { - StorageLive(_2); // scope 1 at $DIR/mutable_variable_unprop_assign.rs:+2:9: +2:14 -- _2 = (const 1_i32, const 2_i32); // scope 1 at $DIR/mutable_variable_unprop_assign.rs:+2:29: +2:35 -+ _2 = const (1_i32, 2_i32); // scope 1 at $DIR/mutable_variable_unprop_assign.rs:+2:29: +2:35 - StorageLive(_3); // scope 2 at $DIR/mutable_variable_unprop_assign.rs:+3:11: +3:12 - _3 = _1; // scope 2 at $DIR/mutable_variable_unprop_assign.rs:+3:11: +3:12 - (_2.1: i32) = move _3; // scope 2 at $DIR/mutable_variable_unprop_assign.rs:+3:5: +3:12 - StorageDead(_3); // scope 2 at $DIR/mutable_variable_unprop_assign.rs:+3:11: +3:12 - StorageLive(_4); // scope 2 at $DIR/mutable_variable_unprop_assign.rs:+4:9: +4:10 - _4 = (_2.1: i32); // scope 2 at $DIR/mutable_variable_unprop_assign.rs:+4:13: +4:16 - StorageLive(_5); // scope 3 at $DIR/mutable_variable_unprop_assign.rs:+5:9: +5:10 -- _5 = (_2.0: i32); // scope 3 at $DIR/mutable_variable_unprop_assign.rs:+5:13: +5:16 -+ _5 = const 1_i32; // scope 3 at $DIR/mutable_variable_unprop_assign.rs:+5:13: +5:16 - _0 = const (); // scope 0 at $DIR/mutable_variable_unprop_assign.rs:+0:11: +6:2 - StorageDead(_5); // scope 3 at $DIR/mutable_variable_unprop_assign.rs:+6:1: +6:2 - StorageDead(_4); // scope 2 at $DIR/mutable_variable_unprop_assign.rs:+6:1: +6:2 - StorageDead(_2); // scope 1 at $DIR/mutable_variable_unprop_assign.rs:+6:1: +6:2 - StorageDead(_1); // scope 0 at $DIR/mutable_variable_unprop_assign.rs:+6:1: +6:2 - return; // scope 0 at $DIR/mutable_variable_unprop_assign.rs:+6:2: +6:2 + StorageLive(_2); +- _2 = (const 1_i32, const 2_i32); ++ _2 = const (1_i32, 2_i32); + StorageLive(_3); + _3 = _1; + (_2.1: i32) = move _3; + StorageDead(_3); + StorageLive(_4); + _4 = (_2.1: i32); + StorageLive(_5); +- _5 = (_2.0: i32); ++ _5 = const 1_i32; + _0 = const (); + StorageDead(_5); + StorageDead(_4); + StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/offset_of.concrete.ConstProp.diff b/tests/mir-opt/const_prop/offset_of.concrete.ConstProp.diff index e3757941c8cd1..b510cecd9e07a 100644 --- a/tests/mir-opt/const_prop/offset_of.concrete.ConstProp.diff +++ b/tests/mir-opt/const_prop/offset_of.concrete.ConstProp.diff @@ -2,43 +2,43 @@ + // MIR for `concrete` after ConstProp fn concrete() -> () { - let mut _0: (); // return place in scope 0 at $DIR/offset_of.rs:+0:15: +0:15 - let _1: usize; // in scope 0 at $DIR/offset_of.rs:+1:9: +1:10 + let mut _0: (); + let _1: usize; scope 1 { - debug x => _1; // in scope 1 at $DIR/offset_of.rs:+1:9: +1:10 - let _2: usize; // in scope 1 at $DIR/offset_of.rs:+2:9: +2:10 + debug x => _1; + let _2: usize; scope 2 { - debug y => _2; // in scope 2 at $DIR/offset_of.rs:+2:9: +2:10 - let _3: usize; // in scope 2 at $DIR/offset_of.rs:+3:9: +3:11 + debug y => _2; + let _3: usize; scope 3 { - debug z0 => _3; // in scope 3 at $DIR/offset_of.rs:+3:9: +3:11 - let _4: usize; // in scope 3 at $DIR/offset_of.rs:+4:9: +4:11 + debug z0 => _3; + let _4: usize; scope 4 { - debug z1 => _4; // in scope 4 at $DIR/offset_of.rs:+4:9: +4:11 + debug z1 => _4; } } } } bb0: { - StorageLive(_1); // scope 0 at $DIR/offset_of.rs:+1:9: +1:10 -- _1 = OffsetOf(Alpha, [0]); // scope 0 at $SRC_DIR/core/src/mem/mod.rs:LL:COL -+ _1 = const 4_usize; // scope 0 at $SRC_DIR/core/src/mem/mod.rs:LL:COL - StorageLive(_2); // scope 1 at $DIR/offset_of.rs:+2:9: +2:10 -- _2 = OffsetOf(Alpha, [1]); // scope 1 at $SRC_DIR/core/src/mem/mod.rs:LL:COL -+ _2 = const 0_usize; // scope 1 at $SRC_DIR/core/src/mem/mod.rs:LL:COL - StorageLive(_3); // scope 2 at $DIR/offset_of.rs:+3:9: +3:11 -- _3 = OffsetOf(Alpha, [2, 0]); // scope 2 at $SRC_DIR/core/src/mem/mod.rs:LL:COL -+ _3 = const 2_usize; // scope 2 at $SRC_DIR/core/src/mem/mod.rs:LL:COL - StorageLive(_4); // scope 3 at $DIR/offset_of.rs:+4:9: +4:11 -- _4 = OffsetOf(Alpha, [2, 1]); // scope 3 at $SRC_DIR/core/src/mem/mod.rs:LL:COL -+ _4 = const 3_usize; // scope 3 at $SRC_DIR/core/src/mem/mod.rs:LL:COL - _0 = const (); // scope 0 at $DIR/offset_of.rs:+0:15: +5:2 - StorageDead(_4); // scope 3 at $DIR/offset_of.rs:+5:1: +5:2 - StorageDead(_3); // scope 2 at $DIR/offset_of.rs:+5:1: +5:2 - StorageDead(_2); // scope 1 at $DIR/offset_of.rs:+5:1: +5:2 - StorageDead(_1); // scope 0 at $DIR/offset_of.rs:+5:1: +5:2 - return; // scope 0 at $DIR/offset_of.rs:+5:2: +5:2 + StorageLive(_1); +- _1 = OffsetOf(Alpha, [0]); ++ _1 = const 4_usize; + StorageLive(_2); +- _2 = OffsetOf(Alpha, [1]); ++ _2 = const 0_usize; + StorageLive(_3); +- _3 = OffsetOf(Alpha, [2, 0]); ++ _3 = const 2_usize; + StorageLive(_4); +- _4 = OffsetOf(Alpha, [2, 1]); ++ _4 = const 3_usize; + _0 = const (); + StorageDead(_4); + StorageDead(_3); + StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/offset_of.generic.ConstProp.diff b/tests/mir-opt/const_prop/offset_of.generic.ConstProp.diff index 4a655604cd183..8e0adb4275509 100644 --- a/tests/mir-opt/const_prop/offset_of.generic.ConstProp.diff +++ b/tests/mir-opt/const_prop/offset_of.generic.ConstProp.diff @@ -2,39 +2,39 @@ + // MIR for `generic` after ConstProp fn generic() -> () { - let mut _0: (); // return place in scope 0 at $DIR/offset_of.rs:+0:17: +0:17 - let _1: usize; // in scope 0 at $DIR/offset_of.rs:+1:9: +1:11 + let mut _0: (); + let _1: usize; scope 1 { - debug gx => _1; // in scope 1 at $DIR/offset_of.rs:+1:9: +1:11 - let _2: usize; // in scope 1 at $DIR/offset_of.rs:+2:9: +2:11 + debug gx => _1; + let _2: usize; scope 2 { - debug gy => _2; // in scope 2 at $DIR/offset_of.rs:+2:9: +2:11 - let _3: usize; // in scope 2 at $DIR/offset_of.rs:+3:9: +3:11 + debug gy => _2; + let _3: usize; scope 3 { - debug dx => _3; // in scope 3 at $DIR/offset_of.rs:+3:9: +3:11 - let _4: usize; // in scope 3 at $DIR/offset_of.rs:+4:9: +4:11 + debug dx => _3; + let _4: usize; scope 4 { - debug dy => _4; // in scope 4 at $DIR/offset_of.rs:+4:9: +4:11 + debug dy => _4; } } } } bb0: { - StorageLive(_1); // scope 0 at $DIR/offset_of.rs:+1:9: +1:11 - _1 = OffsetOf(Gamma, [0]); // scope 0 at $SRC_DIR/core/src/mem/mod.rs:LL:COL - StorageLive(_2); // scope 1 at $DIR/offset_of.rs:+2:9: +2:11 - _2 = OffsetOf(Gamma, [1]); // scope 1 at $SRC_DIR/core/src/mem/mod.rs:LL:COL - StorageLive(_3); // scope 2 at $DIR/offset_of.rs:+3:9: +3:11 - _3 = OffsetOf(Delta, [1]); // scope 2 at $SRC_DIR/core/src/mem/mod.rs:LL:COL - StorageLive(_4); // scope 3 at $DIR/offset_of.rs:+4:9: +4:11 - _4 = OffsetOf(Delta, [2]); // scope 3 at $SRC_DIR/core/src/mem/mod.rs:LL:COL - _0 = const (); // scope 0 at $DIR/offset_of.rs:+0:17: +5:2 - StorageDead(_4); // scope 3 at $DIR/offset_of.rs:+5:1: +5:2 - StorageDead(_3); // scope 2 at $DIR/offset_of.rs:+5:1: +5:2 - StorageDead(_2); // scope 1 at $DIR/offset_of.rs:+5:1: +5:2 - StorageDead(_1); // scope 0 at $DIR/offset_of.rs:+5:1: +5:2 - return; // scope 0 at $DIR/offset_of.rs:+5:2: +5:2 + StorageLive(_1); + _1 = OffsetOf(Gamma, [0]); + StorageLive(_2); + _2 = OffsetOf(Gamma, [1]); + StorageLive(_3); + _3 = OffsetOf(Delta, [1]); + StorageLive(_4); + _4 = OffsetOf(Delta, [2]); + _0 = const (); + StorageDead(_4); + StorageDead(_3); + StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/read_immutable_static.main.ConstProp.diff b/tests/mir-opt/const_prop/read_immutable_static.main.ConstProp.diff index c290fba563a22..29c455f35b35a 100644 --- a/tests/mir-opt/const_prop/read_immutable_static.main.ConstProp.diff +++ b/tests/mir-opt/const_prop/read_immutable_static.main.ConstProp.diff @@ -2,43 +2,37 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/read_immutable_static.rs:+0:11: +0:11 - let _1: u8; // in scope 0 at $DIR/read_immutable_static.rs:+1:9: +1:10 - let mut _2: u8; // in scope 0 at $DIR/read_immutable_static.rs:+1:13: +1:16 - let mut _3: &u8; // in scope 0 at $DIR/read_immutable_static.rs:+1:13: +1:16 - let mut _4: u8; // in scope 0 at $DIR/read_immutable_static.rs:+1:19: +1:22 - let mut _5: &u8; // in scope 0 at $DIR/read_immutable_static.rs:+1:19: +1:22 + let mut _0: (); + let _1: u8; + let mut _2: u8; + let mut _3: &u8; + let mut _4: u8; + let mut _5: &u8; scope 1 { - debug x => _1; // in scope 1 at $DIR/read_immutable_static.rs:+1:9: +1:10 + debug x => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/read_immutable_static.rs:+1:9: +1:10 - StorageLive(_2); // scope 0 at $DIR/read_immutable_static.rs:+1:13: +1:16 - StorageLive(_3); // scope 0 at $DIR/read_immutable_static.rs:+1:13: +1:16 - _3 = const {alloc1: &u8}; // scope 0 at $DIR/read_immutable_static.rs:+1:13: +1:16 - // mir::Constant - // + span: $DIR/read_immutable_static.rs:7:13: 7:16 - // + literal: Const { ty: &u8, val: Value(Scalar(alloc1)) } -- _2 = (*_3); // scope 0 at $DIR/read_immutable_static.rs:+1:13: +1:16 -+ _2 = const 2_u8; // scope 0 at $DIR/read_immutable_static.rs:+1:13: +1:16 - StorageLive(_4); // scope 0 at $DIR/read_immutable_static.rs:+1:19: +1:22 - StorageLive(_5); // scope 0 at $DIR/read_immutable_static.rs:+1:19: +1:22 - _5 = const {alloc1: &u8}; // scope 0 at $DIR/read_immutable_static.rs:+1:19: +1:22 - // mir::Constant - // + span: $DIR/read_immutable_static.rs:7:19: 7:22 - // + literal: Const { ty: &u8, val: Value(Scalar(alloc1)) } -- _4 = (*_5); // scope 0 at $DIR/read_immutable_static.rs:+1:19: +1:22 -- _1 = Add(move _2, move _4); // scope 0 at $DIR/read_immutable_static.rs:+1:13: +1:22 -+ _4 = const 2_u8; // scope 0 at $DIR/read_immutable_static.rs:+1:19: +1:22 -+ _1 = const 4_u8; // scope 0 at $DIR/read_immutable_static.rs:+1:13: +1:22 - StorageDead(_4); // scope 0 at $DIR/read_immutable_static.rs:+1:21: +1:22 - StorageDead(_2); // scope 0 at $DIR/read_immutable_static.rs:+1:21: +1:22 - StorageDead(_5); // scope 0 at $DIR/read_immutable_static.rs:+1:22: +1:23 - StorageDead(_3); // scope 0 at $DIR/read_immutable_static.rs:+1:22: +1:23 - _0 = const (); // scope 0 at $DIR/read_immutable_static.rs:+0:11: +2:2 - StorageDead(_1); // scope 0 at $DIR/read_immutable_static.rs:+2:1: +2:2 - return; // scope 0 at $DIR/read_immutable_static.rs:+2:2: +2:2 + StorageLive(_1); + StorageLive(_2); + StorageLive(_3); + _3 = const {alloc1: &u8}; +- _2 = (*_3); ++ _2 = const 2_u8; + StorageLive(_4); + StorageLive(_5); + _5 = const {alloc1: &u8}; +- _4 = (*_5); +- _1 = Add(move _2, move _4); ++ _4 = const 2_u8; ++ _1 = const 4_u8; + StorageDead(_4); + StorageDead(_2); + StorageDead(_5); + StorageDead(_3); + _0 = const (); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/ref_deref.main.ConstProp.diff b/tests/mir-opt/const_prop/ref_deref.main.ConstProp.diff index 924a267f3d8ff..6b897a88181b8 100644 --- a/tests/mir-opt/const_prop/ref_deref.main.ConstProp.diff +++ b/tests/mir-opt/const_prop/ref_deref.main.ConstProp.diff @@ -2,25 +2,22 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/ref_deref.rs:+0:11: +0:11 - let _1: i32; // in scope 0 at $DIR/ref_deref.rs:+1:5: +1:10 - let mut _2: &i32; // in scope 0 at $DIR/ref_deref.rs:+1:6: +1:10 - let _3: i32; // in scope 0 at $DIR/ref_deref.rs:+1:8: +1:9 - let mut _4: &i32; // in scope 0 at $DIR/ref_deref.rs:+1:6: +1:10 + let mut _0: (); + let _1: i32; + let mut _2: &i32; + let _3: i32; + let mut _4: &i32; bb0: { - StorageLive(_1); // scope 0 at $DIR/ref_deref.rs:+1:5: +1:10 - StorageLive(_2); // scope 0 at $DIR/ref_deref.rs:+1:6: +1:10 - _4 = const _; // scope 0 at $DIR/ref_deref.rs:+1:6: +1:10 - // mir::Constant - // + span: $DIR/ref_deref.rs:5:6: 5:10 - // + literal: Const { ty: &i32, val: Unevaluated(main, [], Some(promoted[0])) } - _2 = &(*_4); // scope 0 at $DIR/ref_deref.rs:+1:6: +1:10 - _1 = (*_2); // scope 0 at $DIR/ref_deref.rs:+1:5: +1:10 - StorageDead(_2); // scope 0 at $DIR/ref_deref.rs:+1:10: +1:11 - StorageDead(_1); // scope 0 at $DIR/ref_deref.rs:+1:10: +1:11 - _0 = const (); // scope 0 at $DIR/ref_deref.rs:+0:11: +2:2 - return; // scope 0 at $DIR/ref_deref.rs:+2:2: +2:2 + StorageLive(_1); + StorageLive(_2); + _4 = const _; + _2 = &(*_4); + _1 = (*_2); + StorageDead(_2); + StorageDead(_1); + _0 = const (); + return; } } diff --git a/tests/mir-opt/const_prop/ref_deref_project.main.ConstProp.diff b/tests/mir-opt/const_prop/ref_deref_project.main.ConstProp.diff index 59095b4483713..7f616166573cd 100644 --- a/tests/mir-opt/const_prop/ref_deref_project.main.ConstProp.diff +++ b/tests/mir-opt/const_prop/ref_deref_project.main.ConstProp.diff @@ -2,25 +2,22 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/ref_deref_project.rs:+0:11: +0:11 - let _1: i32; // in scope 0 at $DIR/ref_deref_project.rs:+1:5: +1:17 - let mut _2: &i32; // in scope 0 at $DIR/ref_deref_project.rs:+1:6: +1:17 - let _3: (i32, i32); // in scope 0 at $DIR/ref_deref_project.rs:+1:8: +1:14 - let mut _4: &(i32, i32); // in scope 0 at $DIR/ref_deref_project.rs:+1:6: +1:17 + let mut _0: (); + let _1: i32; + let mut _2: &i32; + let _3: (i32, i32); + let mut _4: &(i32, i32); bb0: { - StorageLive(_1); // scope 0 at $DIR/ref_deref_project.rs:+1:5: +1:17 - StorageLive(_2); // scope 0 at $DIR/ref_deref_project.rs:+1:6: +1:17 - _4 = const _; // scope 0 at $DIR/ref_deref_project.rs:+1:6: +1:17 - // mir::Constant - // + span: $DIR/ref_deref_project.rs:5:6: 5:17 - // + literal: Const { ty: &(i32, i32), val: Unevaluated(main, [], Some(promoted[0])) } - _2 = &((*_4).1: i32); // scope 0 at $DIR/ref_deref_project.rs:+1:6: +1:17 - _1 = (*_2); // scope 0 at $DIR/ref_deref_project.rs:+1:5: +1:17 - StorageDead(_2); // scope 0 at $DIR/ref_deref_project.rs:+1:17: +1:18 - StorageDead(_1); // scope 0 at $DIR/ref_deref_project.rs:+1:17: +1:18 - _0 = const (); // scope 0 at $DIR/ref_deref_project.rs:+0:11: +2:2 - return; // scope 0 at $DIR/ref_deref_project.rs:+2:2: +2:2 + StorageLive(_1); + StorageLive(_2); + _4 = const _; + _2 = &((*_4).1: i32); + _1 = (*_2); + StorageDead(_2); + StorageDead(_1); + _0 = const (); + return; } } diff --git a/tests/mir-opt/const_prop/reify_fn_ptr.main.ConstProp.diff b/tests/mir-opt/const_prop/reify_fn_ptr.main.ConstProp.diff index 077b9bf830419..533a92f78a50d 100644 --- a/tests/mir-opt/const_prop/reify_fn_ptr.main.ConstProp.diff +++ b/tests/mir-opt/const_prop/reify_fn_ptr.main.ConstProp.diff @@ -2,28 +2,25 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/reify_fn_ptr.rs:+0:11: +0:11 - let mut _1: *const fn(); // in scope 0 at $DIR/reify_fn_ptr.rs:+1:13: +1:41 - let mut _2: usize; // in scope 0 at $DIR/reify_fn_ptr.rs:+1:13: +1:26 - let mut _3: fn(); // in scope 0 at $DIR/reify_fn_ptr.rs:+1:13: +1:17 + let mut _0: (); + let mut _1: *const fn(); + let mut _2: usize; + let mut _3: fn(); scope 1 { } bb0: { - StorageLive(_1); // scope 0 at $DIR/reify_fn_ptr.rs:+1:13: +1:41 - StorageLive(_2); // scope 0 at $DIR/reify_fn_ptr.rs:+1:13: +1:26 - StorageLive(_3); // scope 0 at $DIR/reify_fn_ptr.rs:+1:13: +1:17 - _3 = main as fn() (Pointer(ReifyFnPointer)); // scope 0 at $DIR/reify_fn_ptr.rs:+1:13: +1:17 - // mir::Constant - // + span: $DIR/reify_fn_ptr.rs:5:13: 5:17 - // + literal: Const { ty: fn() {main}, val: Value() } - _2 = move _3 as usize (PointerExposeAddress); // scope 0 at $DIR/reify_fn_ptr.rs:+1:13: +1:26 - StorageDead(_3); // scope 0 at $DIR/reify_fn_ptr.rs:+1:25: +1:26 - _1 = move _2 as *const fn() (PointerFromExposedAddress); // scope 0 at $DIR/reify_fn_ptr.rs:+1:13: +1:41 - StorageDead(_2); // scope 0 at $DIR/reify_fn_ptr.rs:+1:40: +1:41 - StorageDead(_1); // scope 0 at $DIR/reify_fn_ptr.rs:+1:41: +1:42 - _0 = const (); // scope 0 at $DIR/reify_fn_ptr.rs:+0:11: +2:2 - return; // scope 0 at $DIR/reify_fn_ptr.rs:+2:2: +2:2 + StorageLive(_1); + StorageLive(_2); + StorageLive(_3); + _3 = main as fn() (Pointer(ReifyFnPointer)); + _2 = move _3 as usize (PointerExposeAddress); + StorageDead(_3); + _1 = move _2 as *const fn() (PointerFromExposedAddress); + StorageDead(_2); + StorageDead(_1); + _0 = const (); + return; } } diff --git a/tests/mir-opt/const_prop/repeat.main.ConstProp.32bit.panic-abort.diff b/tests/mir-opt/const_prop/repeat.main.ConstProp.32bit.panic-abort.diff index 24c78ab992f15..e095dd01da674 100644 --- a/tests/mir-opt/const_prop/repeat.main.ConstProp.32bit.panic-abort.diff +++ b/tests/mir-opt/const_prop/repeat.main.ConstProp.32bit.panic-abort.diff @@ -2,43 +2,43 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/repeat.rs:+0:11: +0:11 - let _1: u32; // in scope 0 at $DIR/repeat.rs:+1:9: +1:10 - let mut _2: u32; // in scope 0 at $DIR/repeat.rs:+1:18: +1:28 - let mut _3: [u32; 8]; // in scope 0 at $DIR/repeat.rs:+1:18: +1:25 - let _4: usize; // in scope 0 at $DIR/repeat.rs:+1:26: +1:27 - let mut _5: usize; // in scope 0 at $DIR/repeat.rs:+1:18: +1:28 - let mut _6: bool; // in scope 0 at $DIR/repeat.rs:+1:18: +1:28 + let mut _0: (); + let _1: u32; + let mut _2: u32; + let mut _3: [u32; 8]; + let _4: usize; + let mut _5: usize; + let mut _6: bool; scope 1 { - debug x => _1; // in scope 1 at $DIR/repeat.rs:+1:9: +1:10 + debug x => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/repeat.rs:+1:9: +1:10 - StorageLive(_2); // scope 0 at $DIR/repeat.rs:+1:18: +1:28 - StorageLive(_3); // scope 0 at $DIR/repeat.rs:+1:18: +1:25 - _3 = [const 42_u32; 8]; // scope 0 at $DIR/repeat.rs:+1:18: +1:25 - StorageLive(_4); // scope 0 at $DIR/repeat.rs:+1:26: +1:27 - _4 = const 2_usize; // scope 0 at $DIR/repeat.rs:+1:26: +1:27 -- _5 = Len(_3); // scope 0 at $DIR/repeat.rs:+1:18: +1:28 -- _6 = Lt(_4, _5); // scope 0 at $DIR/repeat.rs:+1:18: +1:28 -- assert(move _6, "index out of bounds: the length is {} but the index is {}", move _5, _4) -> [success: bb1, unwind unreachable]; // scope 0 at $DIR/repeat.rs:+1:18: +1:28 -+ _5 = const 8_usize; // scope 0 at $DIR/repeat.rs:+1:18: +1:28 -+ _6 = const true; // scope 0 at $DIR/repeat.rs:+1:18: +1:28 -+ assert(const true, "index out of bounds: the length is {} but the index is {}", move _5, _4) -> [success: bb1, unwind unreachable]; // scope 0 at $DIR/repeat.rs:+1:18: +1:28 + StorageLive(_1); + StorageLive(_2); + StorageLive(_3); + _3 = [const 42_u32; 8]; + StorageLive(_4); + _4 = const 2_usize; +- _5 = Len(_3); +- _6 = Lt(_4, _5); +- assert(move _6, "index out of bounds: the length is {} but the index is {}", move _5, _4) -> [success: bb1, unwind unreachable]; ++ _5 = const 8_usize; ++ _6 = const true; ++ assert(const true, "index out of bounds: the length is {} but the index is {}", move _5, _4) -> [success: bb1, unwind unreachable]; } bb1: { -- _2 = _3[_4]; // scope 0 at $DIR/repeat.rs:+1:18: +1:28 -- _1 = Add(move _2, const 0_u32); // scope 0 at $DIR/repeat.rs:+1:18: +1:32 -+ _2 = const 42_u32; // scope 0 at $DIR/repeat.rs:+1:18: +1:28 -+ _1 = const 42_u32; // scope 0 at $DIR/repeat.rs:+1:18: +1:32 - StorageDead(_2); // scope 0 at $DIR/repeat.rs:+1:31: +1:32 - StorageDead(_4); // scope 0 at $DIR/repeat.rs:+1:32: +1:33 - StorageDead(_3); // scope 0 at $DIR/repeat.rs:+1:32: +1:33 - _0 = const (); // scope 0 at $DIR/repeat.rs:+0:11: +2:2 - StorageDead(_1); // scope 0 at $DIR/repeat.rs:+2:1: +2:2 - return; // scope 0 at $DIR/repeat.rs:+2:2: +2:2 +- _2 = _3[_4]; +- _1 = Add(move _2, const 0_u32); ++ _2 = const 42_u32; ++ _1 = const 42_u32; + StorageDead(_2); + StorageDead(_4); + StorageDead(_3); + _0 = const (); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/repeat.main.ConstProp.32bit.panic-unwind.diff b/tests/mir-opt/const_prop/repeat.main.ConstProp.32bit.panic-unwind.diff index 6641220db6966..f94708605eef8 100644 --- a/tests/mir-opt/const_prop/repeat.main.ConstProp.32bit.panic-unwind.diff +++ b/tests/mir-opt/const_prop/repeat.main.ConstProp.32bit.panic-unwind.diff @@ -2,43 +2,43 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/repeat.rs:+0:11: +0:11 - let _1: u32; // in scope 0 at $DIR/repeat.rs:+1:9: +1:10 - let mut _2: u32; // in scope 0 at $DIR/repeat.rs:+1:18: +1:28 - let mut _3: [u32; 8]; // in scope 0 at $DIR/repeat.rs:+1:18: +1:25 - let _4: usize; // in scope 0 at $DIR/repeat.rs:+1:26: +1:27 - let mut _5: usize; // in scope 0 at $DIR/repeat.rs:+1:18: +1:28 - let mut _6: bool; // in scope 0 at $DIR/repeat.rs:+1:18: +1:28 + let mut _0: (); + let _1: u32; + let mut _2: u32; + let mut _3: [u32; 8]; + let _4: usize; + let mut _5: usize; + let mut _6: bool; scope 1 { - debug x => _1; // in scope 1 at $DIR/repeat.rs:+1:9: +1:10 + debug x => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/repeat.rs:+1:9: +1:10 - StorageLive(_2); // scope 0 at $DIR/repeat.rs:+1:18: +1:28 - StorageLive(_3); // scope 0 at $DIR/repeat.rs:+1:18: +1:25 - _3 = [const 42_u32; 8]; // scope 0 at $DIR/repeat.rs:+1:18: +1:25 - StorageLive(_4); // scope 0 at $DIR/repeat.rs:+1:26: +1:27 - _4 = const 2_usize; // scope 0 at $DIR/repeat.rs:+1:26: +1:27 -- _5 = Len(_3); // scope 0 at $DIR/repeat.rs:+1:18: +1:28 -- _6 = Lt(_4, _5); // scope 0 at $DIR/repeat.rs:+1:18: +1:28 -- assert(move _6, "index out of bounds: the length is {} but the index is {}", move _5, _4) -> bb1; // scope 0 at $DIR/repeat.rs:+1:18: +1:28 -+ _5 = const 8_usize; // scope 0 at $DIR/repeat.rs:+1:18: +1:28 -+ _6 = const true; // scope 0 at $DIR/repeat.rs:+1:18: +1:28 -+ assert(const true, "index out of bounds: the length is {} but the index is {}", move _5, _4) -> bb1; // scope 0 at $DIR/repeat.rs:+1:18: +1:28 + StorageLive(_1); + StorageLive(_2); + StorageLive(_3); + _3 = [const 42_u32; 8]; + StorageLive(_4); + _4 = const 2_usize; +- _5 = Len(_3); +- _6 = Lt(_4, _5); +- assert(move _6, "index out of bounds: the length is {} but the index is {}", move _5, _4) -> bb1; ++ _5 = const 8_usize; ++ _6 = const true; ++ assert(const true, "index out of bounds: the length is {} but the index is {}", move _5, _4) -> bb1; } bb1: { -- _2 = _3[_4]; // scope 0 at $DIR/repeat.rs:+1:18: +1:28 -- _1 = Add(move _2, const 0_u32); // scope 0 at $DIR/repeat.rs:+1:18: +1:32 -+ _2 = const 42_u32; // scope 0 at $DIR/repeat.rs:+1:18: +1:28 -+ _1 = const 42_u32; // scope 0 at $DIR/repeat.rs:+1:18: +1:32 - StorageDead(_2); // scope 0 at $DIR/repeat.rs:+1:31: +1:32 - StorageDead(_4); // scope 0 at $DIR/repeat.rs:+1:32: +1:33 - StorageDead(_3); // scope 0 at $DIR/repeat.rs:+1:32: +1:33 - _0 = const (); // scope 0 at $DIR/repeat.rs:+0:11: +2:2 - StorageDead(_1); // scope 0 at $DIR/repeat.rs:+2:1: +2:2 - return; // scope 0 at $DIR/repeat.rs:+2:2: +2:2 +- _2 = _3[_4]; +- _1 = Add(move _2, const 0_u32); ++ _2 = const 42_u32; ++ _1 = const 42_u32; + StorageDead(_2); + StorageDead(_4); + StorageDead(_3); + _0 = const (); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/repeat.main.ConstProp.64bit.panic-abort.diff b/tests/mir-opt/const_prop/repeat.main.ConstProp.64bit.panic-abort.diff index 24c78ab992f15..e095dd01da674 100644 --- a/tests/mir-opt/const_prop/repeat.main.ConstProp.64bit.panic-abort.diff +++ b/tests/mir-opt/const_prop/repeat.main.ConstProp.64bit.panic-abort.diff @@ -2,43 +2,43 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/repeat.rs:+0:11: +0:11 - let _1: u32; // in scope 0 at $DIR/repeat.rs:+1:9: +1:10 - let mut _2: u32; // in scope 0 at $DIR/repeat.rs:+1:18: +1:28 - let mut _3: [u32; 8]; // in scope 0 at $DIR/repeat.rs:+1:18: +1:25 - let _4: usize; // in scope 0 at $DIR/repeat.rs:+1:26: +1:27 - let mut _5: usize; // in scope 0 at $DIR/repeat.rs:+1:18: +1:28 - let mut _6: bool; // in scope 0 at $DIR/repeat.rs:+1:18: +1:28 + let mut _0: (); + let _1: u32; + let mut _2: u32; + let mut _3: [u32; 8]; + let _4: usize; + let mut _5: usize; + let mut _6: bool; scope 1 { - debug x => _1; // in scope 1 at $DIR/repeat.rs:+1:9: +1:10 + debug x => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/repeat.rs:+1:9: +1:10 - StorageLive(_2); // scope 0 at $DIR/repeat.rs:+1:18: +1:28 - StorageLive(_3); // scope 0 at $DIR/repeat.rs:+1:18: +1:25 - _3 = [const 42_u32; 8]; // scope 0 at $DIR/repeat.rs:+1:18: +1:25 - StorageLive(_4); // scope 0 at $DIR/repeat.rs:+1:26: +1:27 - _4 = const 2_usize; // scope 0 at $DIR/repeat.rs:+1:26: +1:27 -- _5 = Len(_3); // scope 0 at $DIR/repeat.rs:+1:18: +1:28 -- _6 = Lt(_4, _5); // scope 0 at $DIR/repeat.rs:+1:18: +1:28 -- assert(move _6, "index out of bounds: the length is {} but the index is {}", move _5, _4) -> [success: bb1, unwind unreachable]; // scope 0 at $DIR/repeat.rs:+1:18: +1:28 -+ _5 = const 8_usize; // scope 0 at $DIR/repeat.rs:+1:18: +1:28 -+ _6 = const true; // scope 0 at $DIR/repeat.rs:+1:18: +1:28 -+ assert(const true, "index out of bounds: the length is {} but the index is {}", move _5, _4) -> [success: bb1, unwind unreachable]; // scope 0 at $DIR/repeat.rs:+1:18: +1:28 + StorageLive(_1); + StorageLive(_2); + StorageLive(_3); + _3 = [const 42_u32; 8]; + StorageLive(_4); + _4 = const 2_usize; +- _5 = Len(_3); +- _6 = Lt(_4, _5); +- assert(move _6, "index out of bounds: the length is {} but the index is {}", move _5, _4) -> [success: bb1, unwind unreachable]; ++ _5 = const 8_usize; ++ _6 = const true; ++ assert(const true, "index out of bounds: the length is {} but the index is {}", move _5, _4) -> [success: bb1, unwind unreachable]; } bb1: { -- _2 = _3[_4]; // scope 0 at $DIR/repeat.rs:+1:18: +1:28 -- _1 = Add(move _2, const 0_u32); // scope 0 at $DIR/repeat.rs:+1:18: +1:32 -+ _2 = const 42_u32; // scope 0 at $DIR/repeat.rs:+1:18: +1:28 -+ _1 = const 42_u32; // scope 0 at $DIR/repeat.rs:+1:18: +1:32 - StorageDead(_2); // scope 0 at $DIR/repeat.rs:+1:31: +1:32 - StorageDead(_4); // scope 0 at $DIR/repeat.rs:+1:32: +1:33 - StorageDead(_3); // scope 0 at $DIR/repeat.rs:+1:32: +1:33 - _0 = const (); // scope 0 at $DIR/repeat.rs:+0:11: +2:2 - StorageDead(_1); // scope 0 at $DIR/repeat.rs:+2:1: +2:2 - return; // scope 0 at $DIR/repeat.rs:+2:2: +2:2 +- _2 = _3[_4]; +- _1 = Add(move _2, const 0_u32); ++ _2 = const 42_u32; ++ _1 = const 42_u32; + StorageDead(_2); + StorageDead(_4); + StorageDead(_3); + _0 = const (); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/repeat.main.ConstProp.64bit.panic-unwind.diff b/tests/mir-opt/const_prop/repeat.main.ConstProp.64bit.panic-unwind.diff index 6641220db6966..f94708605eef8 100644 --- a/tests/mir-opt/const_prop/repeat.main.ConstProp.64bit.panic-unwind.diff +++ b/tests/mir-opt/const_prop/repeat.main.ConstProp.64bit.panic-unwind.diff @@ -2,43 +2,43 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/repeat.rs:+0:11: +0:11 - let _1: u32; // in scope 0 at $DIR/repeat.rs:+1:9: +1:10 - let mut _2: u32; // in scope 0 at $DIR/repeat.rs:+1:18: +1:28 - let mut _3: [u32; 8]; // in scope 0 at $DIR/repeat.rs:+1:18: +1:25 - let _4: usize; // in scope 0 at $DIR/repeat.rs:+1:26: +1:27 - let mut _5: usize; // in scope 0 at $DIR/repeat.rs:+1:18: +1:28 - let mut _6: bool; // in scope 0 at $DIR/repeat.rs:+1:18: +1:28 + let mut _0: (); + let _1: u32; + let mut _2: u32; + let mut _3: [u32; 8]; + let _4: usize; + let mut _5: usize; + let mut _6: bool; scope 1 { - debug x => _1; // in scope 1 at $DIR/repeat.rs:+1:9: +1:10 + debug x => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/repeat.rs:+1:9: +1:10 - StorageLive(_2); // scope 0 at $DIR/repeat.rs:+1:18: +1:28 - StorageLive(_3); // scope 0 at $DIR/repeat.rs:+1:18: +1:25 - _3 = [const 42_u32; 8]; // scope 0 at $DIR/repeat.rs:+1:18: +1:25 - StorageLive(_4); // scope 0 at $DIR/repeat.rs:+1:26: +1:27 - _4 = const 2_usize; // scope 0 at $DIR/repeat.rs:+1:26: +1:27 -- _5 = Len(_3); // scope 0 at $DIR/repeat.rs:+1:18: +1:28 -- _6 = Lt(_4, _5); // scope 0 at $DIR/repeat.rs:+1:18: +1:28 -- assert(move _6, "index out of bounds: the length is {} but the index is {}", move _5, _4) -> bb1; // scope 0 at $DIR/repeat.rs:+1:18: +1:28 -+ _5 = const 8_usize; // scope 0 at $DIR/repeat.rs:+1:18: +1:28 -+ _6 = const true; // scope 0 at $DIR/repeat.rs:+1:18: +1:28 -+ assert(const true, "index out of bounds: the length is {} but the index is {}", move _5, _4) -> bb1; // scope 0 at $DIR/repeat.rs:+1:18: +1:28 + StorageLive(_1); + StorageLive(_2); + StorageLive(_3); + _3 = [const 42_u32; 8]; + StorageLive(_4); + _4 = const 2_usize; +- _5 = Len(_3); +- _6 = Lt(_4, _5); +- assert(move _6, "index out of bounds: the length is {} but the index is {}", move _5, _4) -> bb1; ++ _5 = const 8_usize; ++ _6 = const true; ++ assert(const true, "index out of bounds: the length is {} but the index is {}", move _5, _4) -> bb1; } bb1: { -- _2 = _3[_4]; // scope 0 at $DIR/repeat.rs:+1:18: +1:28 -- _1 = Add(move _2, const 0_u32); // scope 0 at $DIR/repeat.rs:+1:18: +1:32 -+ _2 = const 42_u32; // scope 0 at $DIR/repeat.rs:+1:18: +1:28 -+ _1 = const 42_u32; // scope 0 at $DIR/repeat.rs:+1:18: +1:32 - StorageDead(_2); // scope 0 at $DIR/repeat.rs:+1:31: +1:32 - StorageDead(_4); // scope 0 at $DIR/repeat.rs:+1:32: +1:33 - StorageDead(_3); // scope 0 at $DIR/repeat.rs:+1:32: +1:33 - _0 = const (); // scope 0 at $DIR/repeat.rs:+0:11: +2:2 - StorageDead(_1); // scope 0 at $DIR/repeat.rs:+2:1: +2:2 - return; // scope 0 at $DIR/repeat.rs:+2:2: +2:2 +- _2 = _3[_4]; +- _1 = Add(move _2, const 0_u32); ++ _2 = const 42_u32; ++ _1 = const 42_u32; + StorageDead(_2); + StorageDead(_4); + StorageDead(_3); + _0 = const (); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/return_place.add.ConstProp.panic-abort.diff b/tests/mir-opt/const_prop/return_place.add.ConstProp.panic-abort.diff index e0daf107522d4..f3b30e0dcde46 100644 --- a/tests/mir-opt/const_prop/return_place.add.ConstProp.panic-abort.diff +++ b/tests/mir-opt/const_prop/return_place.add.ConstProp.panic-abort.diff @@ -2,20 +2,20 @@ + // MIR for `add` after ConstProp fn add() -> u32 { - let mut _0: u32; // return place in scope 0 at $DIR/return_place.rs:+0:13: +0:16 - let mut _1: (u32, bool); // in scope 0 at $DIR/return_place.rs:+1:5: +1:10 + let mut _0: u32; + let mut _1: (u32, bool); bb0: { -- _1 = CheckedAdd(const 2_u32, const 2_u32); // scope 0 at $DIR/return_place.rs:+1:5: +1:10 -- assert(!move (_1.1: bool), "attempt to compute `{} + {}`, which would overflow", const 2_u32, const 2_u32) -> [success: bb1, unwind unreachable]; // scope 0 at $DIR/return_place.rs:+1:5: +1:10 -+ _1 = const (4_u32, false); // scope 0 at $DIR/return_place.rs:+1:5: +1:10 -+ assert(!const false, "attempt to compute `{} + {}`, which would overflow", const 2_u32, const 2_u32) -> [success: bb1, unwind unreachable]; // scope 0 at $DIR/return_place.rs:+1:5: +1:10 +- _1 = CheckedAdd(const 2_u32, const 2_u32); +- assert(!move (_1.1: bool), "attempt to compute `{} + {}`, which would overflow", const 2_u32, const 2_u32) -> [success: bb1, unwind unreachable]; ++ _1 = const (4_u32, false); ++ assert(!const false, "attempt to compute `{} + {}`, which would overflow", const 2_u32, const 2_u32) -> [success: bb1, unwind unreachable]; } bb1: { -- _0 = move (_1.0: u32); // scope 0 at $DIR/return_place.rs:+1:5: +1:10 -+ _0 = const 4_u32; // scope 0 at $DIR/return_place.rs:+1:5: +1:10 - return; // scope 0 at $DIR/return_place.rs:+2:2: +2:2 +- _0 = move (_1.0: u32); ++ _0 = const 4_u32; + return; } } diff --git a/tests/mir-opt/const_prop/return_place.add.ConstProp.panic-unwind.diff b/tests/mir-opt/const_prop/return_place.add.ConstProp.panic-unwind.diff index 5ebd8a52079d7..f89e9dd5b6356 100644 --- a/tests/mir-opt/const_prop/return_place.add.ConstProp.panic-unwind.diff +++ b/tests/mir-opt/const_prop/return_place.add.ConstProp.panic-unwind.diff @@ -2,20 +2,20 @@ + // MIR for `add` after ConstProp fn add() -> u32 { - let mut _0: u32; // return place in scope 0 at $DIR/return_place.rs:+0:13: +0:16 - let mut _1: (u32, bool); // in scope 0 at $DIR/return_place.rs:+1:5: +1:10 + let mut _0: u32; + let mut _1: (u32, bool); bb0: { -- _1 = CheckedAdd(const 2_u32, const 2_u32); // scope 0 at $DIR/return_place.rs:+1:5: +1:10 -- assert(!move (_1.1: bool), "attempt to compute `{} + {}`, which would overflow", const 2_u32, const 2_u32) -> bb1; // scope 0 at $DIR/return_place.rs:+1:5: +1:10 -+ _1 = const (4_u32, false); // scope 0 at $DIR/return_place.rs:+1:5: +1:10 -+ assert(!const false, "attempt to compute `{} + {}`, which would overflow", const 2_u32, const 2_u32) -> bb1; // scope 0 at $DIR/return_place.rs:+1:5: +1:10 +- _1 = CheckedAdd(const 2_u32, const 2_u32); +- assert(!move (_1.1: bool), "attempt to compute `{} + {}`, which would overflow", const 2_u32, const 2_u32) -> bb1; ++ _1 = const (4_u32, false); ++ assert(!const false, "attempt to compute `{} + {}`, which would overflow", const 2_u32, const 2_u32) -> bb1; } bb1: { -- _0 = move (_1.0: u32); // scope 0 at $DIR/return_place.rs:+1:5: +1:10 -+ _0 = const 4_u32; // scope 0 at $DIR/return_place.rs:+1:5: +1:10 - return; // scope 0 at $DIR/return_place.rs:+2:2: +2:2 +- _0 = move (_1.0: u32); ++ _0 = const 4_u32; + return; } } diff --git a/tests/mir-opt/const_prop/return_place.add.PreCodegen.before.panic-abort.mir b/tests/mir-opt/const_prop/return_place.add.PreCodegen.before.panic-abort.mir index 58b2acfbad2a1..c8f3f641a6d75 100644 --- a/tests/mir-opt/const_prop/return_place.add.PreCodegen.before.panic-abort.mir +++ b/tests/mir-opt/const_prop/return_place.add.PreCodegen.before.panic-abort.mir @@ -1,16 +1,16 @@ // MIR for `add` before PreCodegen fn add() -> u32 { - let mut _0: u32; // return place in scope 0 at $DIR/return_place.rs:+0:13: +0:16 - let mut _1: (u32, bool); // in scope 0 at $DIR/return_place.rs:+1:5: +1:10 + let mut _0: u32; + let mut _1: (u32, bool); bb0: { - _1 = const (4_u32, false); // scope 0 at $DIR/return_place.rs:+1:5: +1:10 - assert(!const false, "attempt to compute `{} + {}`, which would overflow", const 2_u32, const 2_u32) -> [success: bb1, unwind unreachable]; // scope 0 at $DIR/return_place.rs:+1:5: +1:10 + _1 = const (4_u32, false); + assert(!const false, "attempt to compute `{} + {}`, which would overflow", const 2_u32, const 2_u32) -> [success: bb1, unwind unreachable]; } bb1: { - _0 = const 4_u32; // scope 0 at $DIR/return_place.rs:+1:5: +1:10 - return; // scope 0 at $DIR/return_place.rs:+2:2: +2:2 + _0 = const 4_u32; + return; } } diff --git a/tests/mir-opt/const_prop/return_place.add.PreCodegen.before.panic-unwind.mir b/tests/mir-opt/const_prop/return_place.add.PreCodegen.before.panic-unwind.mir index b12d84fa4790a..148f16c7ee2da 100644 --- a/tests/mir-opt/const_prop/return_place.add.PreCodegen.before.panic-unwind.mir +++ b/tests/mir-opt/const_prop/return_place.add.PreCodegen.before.panic-unwind.mir @@ -1,16 +1,16 @@ // MIR for `add` before PreCodegen fn add() -> u32 { - let mut _0: u32; // return place in scope 0 at $DIR/return_place.rs:+0:13: +0:16 - let mut _1: (u32, bool); // in scope 0 at $DIR/return_place.rs:+1:5: +1:10 + let mut _0: u32; + let mut _1: (u32, bool); bb0: { - _1 = const (4_u32, false); // scope 0 at $DIR/return_place.rs:+1:5: +1:10 - assert(!const false, "attempt to compute `{} + {}`, which would overflow", const 2_u32, const 2_u32) -> bb1; // scope 0 at $DIR/return_place.rs:+1:5: +1:10 + _1 = const (4_u32, false); + assert(!const false, "attempt to compute `{} + {}`, which would overflow", const 2_u32, const 2_u32) -> bb1; } bb1: { - _0 = const 4_u32; // scope 0 at $DIR/return_place.rs:+1:5: +1:10 - return; // scope 0 at $DIR/return_place.rs:+2:2: +2:2 + _0 = const 4_u32; + return; } } diff --git a/tests/mir-opt/const_prop/scalar_literal_propagation.main.ConstProp.panic-abort.diff b/tests/mir-opt/const_prop/scalar_literal_propagation.main.ConstProp.panic-abort.diff index 11bbe9da10f87..0677295d0785c 100644 --- a/tests/mir-opt/const_prop/scalar_literal_propagation.main.ConstProp.panic-abort.diff +++ b/tests/mir-opt/const_prop/scalar_literal_propagation.main.ConstProp.panic-abort.diff @@ -2,33 +2,30 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/scalar_literal_propagation.rs:+0:11: +0:11 - let _1: u32; // in scope 0 at $DIR/scalar_literal_propagation.rs:+1:9: +1:10 - let _2: (); // in scope 0 at $DIR/scalar_literal_propagation.rs:+2:5: +2:15 - let mut _3: u32; // in scope 0 at $DIR/scalar_literal_propagation.rs:+2:13: +2:14 + let mut _0: (); + let _1: u32; + let _2: (); + let mut _3: u32; scope 1 { - debug x => _1; // in scope 1 at $DIR/scalar_literal_propagation.rs:+1:9: +1:10 + debug x => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/scalar_literal_propagation.rs:+1:9: +1:10 - _1 = const 1_u32; // scope 0 at $DIR/scalar_literal_propagation.rs:+1:13: +1:14 - StorageLive(_2); // scope 1 at $DIR/scalar_literal_propagation.rs:+2:5: +2:15 - StorageLive(_3); // scope 1 at $DIR/scalar_literal_propagation.rs:+2:13: +2:14 -- _3 = _1; // scope 1 at $DIR/scalar_literal_propagation.rs:+2:13: +2:14 -+ _3 = const 1_u32; // scope 1 at $DIR/scalar_literal_propagation.rs:+2:13: +2:14 - _2 = consume(move _3) -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/scalar_literal_propagation.rs:+2:5: +2:15 - // mir::Constant - // + span: $DIR/scalar_literal_propagation.rs:6:5: 6:12 - // + literal: Const { ty: fn(u32) {consume}, val: Value() } + StorageLive(_1); + _1 = const 1_u32; + StorageLive(_2); + StorageLive(_3); +- _3 = _1; ++ _3 = const 1_u32; + _2 = consume(move _3) -> [return: bb1, unwind unreachable]; } bb1: { - StorageDead(_3); // scope 1 at $DIR/scalar_literal_propagation.rs:+2:14: +2:15 - StorageDead(_2); // scope 1 at $DIR/scalar_literal_propagation.rs:+2:15: +2:16 - _0 = const (); // scope 0 at $DIR/scalar_literal_propagation.rs:+0:11: +3:2 - StorageDead(_1); // scope 0 at $DIR/scalar_literal_propagation.rs:+3:1: +3:2 - return; // scope 0 at $DIR/scalar_literal_propagation.rs:+3:2: +3:2 + StorageDead(_3); + StorageDead(_2); + _0 = const (); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/scalar_literal_propagation.main.ConstProp.panic-unwind.diff b/tests/mir-opt/const_prop/scalar_literal_propagation.main.ConstProp.panic-unwind.diff index c2f97a0f62219..d7d6e8e435e24 100644 --- a/tests/mir-opt/const_prop/scalar_literal_propagation.main.ConstProp.panic-unwind.diff +++ b/tests/mir-opt/const_prop/scalar_literal_propagation.main.ConstProp.panic-unwind.diff @@ -2,33 +2,30 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/scalar_literal_propagation.rs:+0:11: +0:11 - let _1: u32; // in scope 0 at $DIR/scalar_literal_propagation.rs:+1:9: +1:10 - let _2: (); // in scope 0 at $DIR/scalar_literal_propagation.rs:+2:5: +2:15 - let mut _3: u32; // in scope 0 at $DIR/scalar_literal_propagation.rs:+2:13: +2:14 + let mut _0: (); + let _1: u32; + let _2: (); + let mut _3: u32; scope 1 { - debug x => _1; // in scope 1 at $DIR/scalar_literal_propagation.rs:+1:9: +1:10 + debug x => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/scalar_literal_propagation.rs:+1:9: +1:10 - _1 = const 1_u32; // scope 0 at $DIR/scalar_literal_propagation.rs:+1:13: +1:14 - StorageLive(_2); // scope 1 at $DIR/scalar_literal_propagation.rs:+2:5: +2:15 - StorageLive(_3); // scope 1 at $DIR/scalar_literal_propagation.rs:+2:13: +2:14 -- _3 = _1; // scope 1 at $DIR/scalar_literal_propagation.rs:+2:13: +2:14 -+ _3 = const 1_u32; // scope 1 at $DIR/scalar_literal_propagation.rs:+2:13: +2:14 - _2 = consume(move _3) -> bb1; // scope 1 at $DIR/scalar_literal_propagation.rs:+2:5: +2:15 - // mir::Constant - // + span: $DIR/scalar_literal_propagation.rs:6:5: 6:12 - // + literal: Const { ty: fn(u32) {consume}, val: Value() } + StorageLive(_1); + _1 = const 1_u32; + StorageLive(_2); + StorageLive(_3); +- _3 = _1; ++ _3 = const 1_u32; + _2 = consume(move _3) -> bb1; } bb1: { - StorageDead(_3); // scope 1 at $DIR/scalar_literal_propagation.rs:+2:14: +2:15 - StorageDead(_2); // scope 1 at $DIR/scalar_literal_propagation.rs:+2:15: +2:16 - _0 = const (); // scope 0 at $DIR/scalar_literal_propagation.rs:+0:11: +3:2 - StorageDead(_1); // scope 0 at $DIR/scalar_literal_propagation.rs:+3:1: +3:2 - return; // scope 0 at $DIR/scalar_literal_propagation.rs:+3:2: +3:2 + StorageDead(_3); + StorageDead(_2); + _0 = const (); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/slice_len.main.ConstProp.32bit.panic-abort.diff b/tests/mir-opt/const_prop/slice_len.main.ConstProp.32bit.panic-abort.diff index cd8ee121a2571..2f64a18510658 100644 --- a/tests/mir-opt/const_prop/slice_len.main.ConstProp.32bit.panic-abort.diff +++ b/tests/mir-opt/const_prop/slice_len.main.ConstProp.32bit.panic-abort.diff @@ -2,49 +2,46 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/slice_len.rs:+0:11: +0:11 - let _1: u32; // in scope 0 at $DIR/slice_len.rs:+1:5: +1:33 - let mut _2: &[u32]; // in scope 0 at $DIR/slice_len.rs:+1:5: +1:30 - let mut _3: &[u32; 3]; // in scope 0 at $DIR/slice_len.rs:+1:6: +1:19 - let _4: &[u32; 3]; // in scope 0 at $DIR/slice_len.rs:+1:6: +1:19 - let _5: [u32; 3]; // in scope 0 at $DIR/slice_len.rs:+1:7: +1:19 - let _6: usize; // in scope 0 at $DIR/slice_len.rs:+1:31: +1:32 - let mut _7: usize; // in scope 0 at $DIR/slice_len.rs:+1:5: +1:33 - let mut _8: bool; // in scope 0 at $DIR/slice_len.rs:+1:5: +1:33 - let mut _9: &[u32; 3]; // in scope 0 at $DIR/slice_len.rs:+1:6: +1:19 + let mut _0: (); + let _1: u32; + let mut _2: &[u32]; + let mut _3: &[u32; 3]; + let _4: &[u32; 3]; + let _5: [u32; 3]; + let _6: usize; + let mut _7: usize; + let mut _8: bool; + let mut _9: &[u32; 3]; bb0: { - StorageLive(_1); // scope 0 at $DIR/slice_len.rs:+1:5: +1:33 - StorageLive(_2); // scope 0 at $DIR/slice_len.rs:+1:5: +1:30 - StorageLive(_3); // scope 0 at $DIR/slice_len.rs:+1:6: +1:19 - StorageLive(_4); // scope 0 at $DIR/slice_len.rs:+1:6: +1:19 - _9 = const _; // scope 0 at $DIR/slice_len.rs:+1:6: +1:19 - // mir::Constant - // + span: $DIR/slice_len.rs:8:6: 8:19 - // + literal: Const { ty: &[u32; 3], val: Unevaluated(main, [], Some(promoted[0])) } - _4 = _9; // scope 0 at $DIR/slice_len.rs:+1:6: +1:19 - _3 = _4; // scope 0 at $DIR/slice_len.rs:+1:6: +1:19 - _2 = move _3 as &[u32] (Pointer(Unsize)); // scope 0 at $DIR/slice_len.rs:+1:6: +1:19 - StorageDead(_3); // scope 0 at $DIR/slice_len.rs:+1:18: +1:19 - StorageLive(_6); // scope 0 at $DIR/slice_len.rs:+1:31: +1:32 - _6 = const 1_usize; // scope 0 at $DIR/slice_len.rs:+1:31: +1:32 -- _7 = Len((*_2)); // scope 0 at $DIR/slice_len.rs:+1:5: +1:33 -- _8 = Lt(_6, _7); // scope 0 at $DIR/slice_len.rs:+1:5: +1:33 -- assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> [success: bb1, unwind unreachable]; // scope 0 at $DIR/slice_len.rs:+1:5: +1:33 -+ _7 = const 3_usize; // scope 0 at $DIR/slice_len.rs:+1:5: +1:33 -+ _8 = const true; // scope 0 at $DIR/slice_len.rs:+1:5: +1:33 -+ assert(const true, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> [success: bb1, unwind unreachable]; // scope 0 at $DIR/slice_len.rs:+1:5: +1:33 + StorageLive(_1); + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + _9 = const _; + _4 = _9; + _3 = _4; + _2 = move _3 as &[u32] (Pointer(Unsize)); + StorageDead(_3); + StorageLive(_6); + _6 = const 1_usize; +- _7 = Len((*_2)); +- _8 = Lt(_6, _7); +- assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> [success: bb1, unwind unreachable]; ++ _7 = const 3_usize; ++ _8 = const true; ++ assert(const true, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> [success: bb1, unwind unreachable]; } bb1: { -- _1 = (*_2)[_6]; // scope 0 at $DIR/slice_len.rs:+1:5: +1:33 -+ _1 = const 2_u32; // scope 0 at $DIR/slice_len.rs:+1:5: +1:33 - StorageDead(_6); // scope 0 at $DIR/slice_len.rs:+1:33: +1:34 - StorageDead(_4); // scope 0 at $DIR/slice_len.rs:+1:33: +1:34 - StorageDead(_2); // scope 0 at $DIR/slice_len.rs:+1:33: +1:34 - StorageDead(_1); // scope 0 at $DIR/slice_len.rs:+1:33: +1:34 - _0 = const (); // scope 0 at $DIR/slice_len.rs:+0:11: +2:2 - return; // scope 0 at $DIR/slice_len.rs:+2:2: +2:2 +- _1 = (*_2)[_6]; ++ _1 = const 2_u32; + StorageDead(_6); + StorageDead(_4); + StorageDead(_2); + StorageDead(_1); + _0 = const (); + return; } } diff --git a/tests/mir-opt/const_prop/slice_len.main.ConstProp.32bit.panic-unwind.diff b/tests/mir-opt/const_prop/slice_len.main.ConstProp.32bit.panic-unwind.diff index 8bd2b48d6d6af..b07ec0ad50251 100644 --- a/tests/mir-opt/const_prop/slice_len.main.ConstProp.32bit.panic-unwind.diff +++ b/tests/mir-opt/const_prop/slice_len.main.ConstProp.32bit.panic-unwind.diff @@ -2,49 +2,46 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/slice_len.rs:+0:11: +0:11 - let _1: u32; // in scope 0 at $DIR/slice_len.rs:+1:5: +1:33 - let mut _2: &[u32]; // in scope 0 at $DIR/slice_len.rs:+1:5: +1:30 - let mut _3: &[u32; 3]; // in scope 0 at $DIR/slice_len.rs:+1:6: +1:19 - let _4: &[u32; 3]; // in scope 0 at $DIR/slice_len.rs:+1:6: +1:19 - let _5: [u32; 3]; // in scope 0 at $DIR/slice_len.rs:+1:7: +1:19 - let _6: usize; // in scope 0 at $DIR/slice_len.rs:+1:31: +1:32 - let mut _7: usize; // in scope 0 at $DIR/slice_len.rs:+1:5: +1:33 - let mut _8: bool; // in scope 0 at $DIR/slice_len.rs:+1:5: +1:33 - let mut _9: &[u32; 3]; // in scope 0 at $DIR/slice_len.rs:+1:6: +1:19 + let mut _0: (); + let _1: u32; + let mut _2: &[u32]; + let mut _3: &[u32; 3]; + let _4: &[u32; 3]; + let _5: [u32; 3]; + let _6: usize; + let mut _7: usize; + let mut _8: bool; + let mut _9: &[u32; 3]; bb0: { - StorageLive(_1); // scope 0 at $DIR/slice_len.rs:+1:5: +1:33 - StorageLive(_2); // scope 0 at $DIR/slice_len.rs:+1:5: +1:30 - StorageLive(_3); // scope 0 at $DIR/slice_len.rs:+1:6: +1:19 - StorageLive(_4); // scope 0 at $DIR/slice_len.rs:+1:6: +1:19 - _9 = const _; // scope 0 at $DIR/slice_len.rs:+1:6: +1:19 - // mir::Constant - // + span: $DIR/slice_len.rs:8:6: 8:19 - // + literal: Const { ty: &[u32; 3], val: Unevaluated(main, [], Some(promoted[0])) } - _4 = _9; // scope 0 at $DIR/slice_len.rs:+1:6: +1:19 - _3 = _4; // scope 0 at $DIR/slice_len.rs:+1:6: +1:19 - _2 = move _3 as &[u32] (Pointer(Unsize)); // scope 0 at $DIR/slice_len.rs:+1:6: +1:19 - StorageDead(_3); // scope 0 at $DIR/slice_len.rs:+1:18: +1:19 - StorageLive(_6); // scope 0 at $DIR/slice_len.rs:+1:31: +1:32 - _6 = const 1_usize; // scope 0 at $DIR/slice_len.rs:+1:31: +1:32 -- _7 = Len((*_2)); // scope 0 at $DIR/slice_len.rs:+1:5: +1:33 -- _8 = Lt(_6, _7); // scope 0 at $DIR/slice_len.rs:+1:5: +1:33 -- assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> bb1; // scope 0 at $DIR/slice_len.rs:+1:5: +1:33 -+ _7 = const 3_usize; // scope 0 at $DIR/slice_len.rs:+1:5: +1:33 -+ _8 = const true; // scope 0 at $DIR/slice_len.rs:+1:5: +1:33 -+ assert(const true, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> bb1; // scope 0 at $DIR/slice_len.rs:+1:5: +1:33 + StorageLive(_1); + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + _9 = const _; + _4 = _9; + _3 = _4; + _2 = move _3 as &[u32] (Pointer(Unsize)); + StorageDead(_3); + StorageLive(_6); + _6 = const 1_usize; +- _7 = Len((*_2)); +- _8 = Lt(_6, _7); +- assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> bb1; ++ _7 = const 3_usize; ++ _8 = const true; ++ assert(const true, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> bb1; } bb1: { -- _1 = (*_2)[_6]; // scope 0 at $DIR/slice_len.rs:+1:5: +1:33 -+ _1 = const 2_u32; // scope 0 at $DIR/slice_len.rs:+1:5: +1:33 - StorageDead(_6); // scope 0 at $DIR/slice_len.rs:+1:33: +1:34 - StorageDead(_4); // scope 0 at $DIR/slice_len.rs:+1:33: +1:34 - StorageDead(_2); // scope 0 at $DIR/slice_len.rs:+1:33: +1:34 - StorageDead(_1); // scope 0 at $DIR/slice_len.rs:+1:33: +1:34 - _0 = const (); // scope 0 at $DIR/slice_len.rs:+0:11: +2:2 - return; // scope 0 at $DIR/slice_len.rs:+2:2: +2:2 +- _1 = (*_2)[_6]; ++ _1 = const 2_u32; + StorageDead(_6); + StorageDead(_4); + StorageDead(_2); + StorageDead(_1); + _0 = const (); + return; } } diff --git a/tests/mir-opt/const_prop/slice_len.main.ConstProp.64bit.panic-abort.diff b/tests/mir-opt/const_prop/slice_len.main.ConstProp.64bit.panic-abort.diff index cd8ee121a2571..2f64a18510658 100644 --- a/tests/mir-opt/const_prop/slice_len.main.ConstProp.64bit.panic-abort.diff +++ b/tests/mir-opt/const_prop/slice_len.main.ConstProp.64bit.panic-abort.diff @@ -2,49 +2,46 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/slice_len.rs:+0:11: +0:11 - let _1: u32; // in scope 0 at $DIR/slice_len.rs:+1:5: +1:33 - let mut _2: &[u32]; // in scope 0 at $DIR/slice_len.rs:+1:5: +1:30 - let mut _3: &[u32; 3]; // in scope 0 at $DIR/slice_len.rs:+1:6: +1:19 - let _4: &[u32; 3]; // in scope 0 at $DIR/slice_len.rs:+1:6: +1:19 - let _5: [u32; 3]; // in scope 0 at $DIR/slice_len.rs:+1:7: +1:19 - let _6: usize; // in scope 0 at $DIR/slice_len.rs:+1:31: +1:32 - let mut _7: usize; // in scope 0 at $DIR/slice_len.rs:+1:5: +1:33 - let mut _8: bool; // in scope 0 at $DIR/slice_len.rs:+1:5: +1:33 - let mut _9: &[u32; 3]; // in scope 0 at $DIR/slice_len.rs:+1:6: +1:19 + let mut _0: (); + let _1: u32; + let mut _2: &[u32]; + let mut _3: &[u32; 3]; + let _4: &[u32; 3]; + let _5: [u32; 3]; + let _6: usize; + let mut _7: usize; + let mut _8: bool; + let mut _9: &[u32; 3]; bb0: { - StorageLive(_1); // scope 0 at $DIR/slice_len.rs:+1:5: +1:33 - StorageLive(_2); // scope 0 at $DIR/slice_len.rs:+1:5: +1:30 - StorageLive(_3); // scope 0 at $DIR/slice_len.rs:+1:6: +1:19 - StorageLive(_4); // scope 0 at $DIR/slice_len.rs:+1:6: +1:19 - _9 = const _; // scope 0 at $DIR/slice_len.rs:+1:6: +1:19 - // mir::Constant - // + span: $DIR/slice_len.rs:8:6: 8:19 - // + literal: Const { ty: &[u32; 3], val: Unevaluated(main, [], Some(promoted[0])) } - _4 = _9; // scope 0 at $DIR/slice_len.rs:+1:6: +1:19 - _3 = _4; // scope 0 at $DIR/slice_len.rs:+1:6: +1:19 - _2 = move _3 as &[u32] (Pointer(Unsize)); // scope 0 at $DIR/slice_len.rs:+1:6: +1:19 - StorageDead(_3); // scope 0 at $DIR/slice_len.rs:+1:18: +1:19 - StorageLive(_6); // scope 0 at $DIR/slice_len.rs:+1:31: +1:32 - _6 = const 1_usize; // scope 0 at $DIR/slice_len.rs:+1:31: +1:32 -- _7 = Len((*_2)); // scope 0 at $DIR/slice_len.rs:+1:5: +1:33 -- _8 = Lt(_6, _7); // scope 0 at $DIR/slice_len.rs:+1:5: +1:33 -- assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> [success: bb1, unwind unreachable]; // scope 0 at $DIR/slice_len.rs:+1:5: +1:33 -+ _7 = const 3_usize; // scope 0 at $DIR/slice_len.rs:+1:5: +1:33 -+ _8 = const true; // scope 0 at $DIR/slice_len.rs:+1:5: +1:33 -+ assert(const true, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> [success: bb1, unwind unreachable]; // scope 0 at $DIR/slice_len.rs:+1:5: +1:33 + StorageLive(_1); + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + _9 = const _; + _4 = _9; + _3 = _4; + _2 = move _3 as &[u32] (Pointer(Unsize)); + StorageDead(_3); + StorageLive(_6); + _6 = const 1_usize; +- _7 = Len((*_2)); +- _8 = Lt(_6, _7); +- assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> [success: bb1, unwind unreachable]; ++ _7 = const 3_usize; ++ _8 = const true; ++ assert(const true, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> [success: bb1, unwind unreachable]; } bb1: { -- _1 = (*_2)[_6]; // scope 0 at $DIR/slice_len.rs:+1:5: +1:33 -+ _1 = const 2_u32; // scope 0 at $DIR/slice_len.rs:+1:5: +1:33 - StorageDead(_6); // scope 0 at $DIR/slice_len.rs:+1:33: +1:34 - StorageDead(_4); // scope 0 at $DIR/slice_len.rs:+1:33: +1:34 - StorageDead(_2); // scope 0 at $DIR/slice_len.rs:+1:33: +1:34 - StorageDead(_1); // scope 0 at $DIR/slice_len.rs:+1:33: +1:34 - _0 = const (); // scope 0 at $DIR/slice_len.rs:+0:11: +2:2 - return; // scope 0 at $DIR/slice_len.rs:+2:2: +2:2 +- _1 = (*_2)[_6]; ++ _1 = const 2_u32; + StorageDead(_6); + StorageDead(_4); + StorageDead(_2); + StorageDead(_1); + _0 = const (); + return; } } diff --git a/tests/mir-opt/const_prop/slice_len.main.ConstProp.64bit.panic-unwind.diff b/tests/mir-opt/const_prop/slice_len.main.ConstProp.64bit.panic-unwind.diff index 8bd2b48d6d6af..b07ec0ad50251 100644 --- a/tests/mir-opt/const_prop/slice_len.main.ConstProp.64bit.panic-unwind.diff +++ b/tests/mir-opt/const_prop/slice_len.main.ConstProp.64bit.panic-unwind.diff @@ -2,49 +2,46 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/slice_len.rs:+0:11: +0:11 - let _1: u32; // in scope 0 at $DIR/slice_len.rs:+1:5: +1:33 - let mut _2: &[u32]; // in scope 0 at $DIR/slice_len.rs:+1:5: +1:30 - let mut _3: &[u32; 3]; // in scope 0 at $DIR/slice_len.rs:+1:6: +1:19 - let _4: &[u32; 3]; // in scope 0 at $DIR/slice_len.rs:+1:6: +1:19 - let _5: [u32; 3]; // in scope 0 at $DIR/slice_len.rs:+1:7: +1:19 - let _6: usize; // in scope 0 at $DIR/slice_len.rs:+1:31: +1:32 - let mut _7: usize; // in scope 0 at $DIR/slice_len.rs:+1:5: +1:33 - let mut _8: bool; // in scope 0 at $DIR/slice_len.rs:+1:5: +1:33 - let mut _9: &[u32; 3]; // in scope 0 at $DIR/slice_len.rs:+1:6: +1:19 + let mut _0: (); + let _1: u32; + let mut _2: &[u32]; + let mut _3: &[u32; 3]; + let _4: &[u32; 3]; + let _5: [u32; 3]; + let _6: usize; + let mut _7: usize; + let mut _8: bool; + let mut _9: &[u32; 3]; bb0: { - StorageLive(_1); // scope 0 at $DIR/slice_len.rs:+1:5: +1:33 - StorageLive(_2); // scope 0 at $DIR/slice_len.rs:+1:5: +1:30 - StorageLive(_3); // scope 0 at $DIR/slice_len.rs:+1:6: +1:19 - StorageLive(_4); // scope 0 at $DIR/slice_len.rs:+1:6: +1:19 - _9 = const _; // scope 0 at $DIR/slice_len.rs:+1:6: +1:19 - // mir::Constant - // + span: $DIR/slice_len.rs:8:6: 8:19 - // + literal: Const { ty: &[u32; 3], val: Unevaluated(main, [], Some(promoted[0])) } - _4 = _9; // scope 0 at $DIR/slice_len.rs:+1:6: +1:19 - _3 = _4; // scope 0 at $DIR/slice_len.rs:+1:6: +1:19 - _2 = move _3 as &[u32] (Pointer(Unsize)); // scope 0 at $DIR/slice_len.rs:+1:6: +1:19 - StorageDead(_3); // scope 0 at $DIR/slice_len.rs:+1:18: +1:19 - StorageLive(_6); // scope 0 at $DIR/slice_len.rs:+1:31: +1:32 - _6 = const 1_usize; // scope 0 at $DIR/slice_len.rs:+1:31: +1:32 -- _7 = Len((*_2)); // scope 0 at $DIR/slice_len.rs:+1:5: +1:33 -- _8 = Lt(_6, _7); // scope 0 at $DIR/slice_len.rs:+1:5: +1:33 -- assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> bb1; // scope 0 at $DIR/slice_len.rs:+1:5: +1:33 -+ _7 = const 3_usize; // scope 0 at $DIR/slice_len.rs:+1:5: +1:33 -+ _8 = const true; // scope 0 at $DIR/slice_len.rs:+1:5: +1:33 -+ assert(const true, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> bb1; // scope 0 at $DIR/slice_len.rs:+1:5: +1:33 + StorageLive(_1); + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + _9 = const _; + _4 = _9; + _3 = _4; + _2 = move _3 as &[u32] (Pointer(Unsize)); + StorageDead(_3); + StorageLive(_6); + _6 = const 1_usize; +- _7 = Len((*_2)); +- _8 = Lt(_6, _7); +- assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> bb1; ++ _7 = const 3_usize; ++ _8 = const true; ++ assert(const true, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> bb1; } bb1: { -- _1 = (*_2)[_6]; // scope 0 at $DIR/slice_len.rs:+1:5: +1:33 -+ _1 = const 2_u32; // scope 0 at $DIR/slice_len.rs:+1:5: +1:33 - StorageDead(_6); // scope 0 at $DIR/slice_len.rs:+1:33: +1:34 - StorageDead(_4); // scope 0 at $DIR/slice_len.rs:+1:33: +1:34 - StorageDead(_2); // scope 0 at $DIR/slice_len.rs:+1:33: +1:34 - StorageDead(_1); // scope 0 at $DIR/slice_len.rs:+1:33: +1:34 - _0 = const (); // scope 0 at $DIR/slice_len.rs:+0:11: +2:2 - return; // scope 0 at $DIR/slice_len.rs:+2:2: +2:2 +- _1 = (*_2)[_6]; ++ _1 = const 2_u32; + StorageDead(_6); + StorageDead(_4); + StorageDead(_2); + StorageDead(_1); + _0 = const (); + return; } } diff --git a/tests/mir-opt/const_prop/switch_int.main.ConstProp.panic-abort.diff b/tests/mir-opt/const_prop/switch_int.main.ConstProp.panic-abort.diff index e334faa15cb91..508cc15732c0c 100644 --- a/tests/mir-opt/const_prop/switch_int.main.ConstProp.panic-abort.diff +++ b/tests/mir-opt/const_prop/switch_int.main.ConstProp.panic-abort.diff @@ -2,33 +2,27 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/switch_int.rs:+0:11: +0:11 - let mut _1: i32; // in scope 0 at $DIR/switch_int.rs:+1:11: +1:12 + let mut _0: (); + let mut _1: i32; bb0: { - StorageLive(_1); // scope 0 at $DIR/switch_int.rs:+1:11: +1:12 - _1 = const 1_i32; // scope 0 at $DIR/switch_int.rs:+1:11: +1:12 -- switchInt(_1) -> [1: bb2, otherwise: bb1]; // scope 0 at $DIR/switch_int.rs:+1:5: +1:12 -+ switchInt(const 1_i32) -> [1: bb2, otherwise: bb1]; // scope 0 at $DIR/switch_int.rs:+1:5: +1:12 + StorageLive(_1); + _1 = const 1_i32; +- switchInt(_1) -> [1: bb2, otherwise: bb1]; ++ switchInt(const 1_i32) -> [1: bb2, otherwise: bb1]; } bb1: { - _0 = foo(const -1_i32) -> [return: bb3, unwind unreachable]; // scope 0 at $DIR/switch_int.rs:+3:14: +3:21 - // mir::Constant - // + span: $DIR/switch_int.rs:12:14: 12:17 - // + literal: Const { ty: fn(i32) {foo}, val: Value() } + _0 = foo(const -1_i32) -> [return: bb3, unwind unreachable]; } bb2: { - _0 = foo(const 0_i32) -> [return: bb3, unwind unreachable]; // scope 0 at $DIR/switch_int.rs:+2:14: +2:20 - // mir::Constant - // + span: $DIR/switch_int.rs:11:14: 11:17 - // + literal: Const { ty: fn(i32) {foo}, val: Value() } + _0 = foo(const 0_i32) -> [return: bb3, unwind unreachable]; } bb3: { - StorageDead(_1); // scope 0 at $DIR/switch_int.rs:+5:1: +5:2 - return; // scope 0 at $DIR/switch_int.rs:+5:2: +5:2 + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/switch_int.main.ConstProp.panic-unwind.diff b/tests/mir-opt/const_prop/switch_int.main.ConstProp.panic-unwind.diff index 664b7839ffc28..02dca4d3dea56 100644 --- a/tests/mir-opt/const_prop/switch_int.main.ConstProp.panic-unwind.diff +++ b/tests/mir-opt/const_prop/switch_int.main.ConstProp.panic-unwind.diff @@ -2,33 +2,27 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/switch_int.rs:+0:11: +0:11 - let mut _1: i32; // in scope 0 at $DIR/switch_int.rs:+1:11: +1:12 + let mut _0: (); + let mut _1: i32; bb0: { - StorageLive(_1); // scope 0 at $DIR/switch_int.rs:+1:11: +1:12 - _1 = const 1_i32; // scope 0 at $DIR/switch_int.rs:+1:11: +1:12 -- switchInt(_1) -> [1: bb2, otherwise: bb1]; // scope 0 at $DIR/switch_int.rs:+1:5: +1:12 -+ switchInt(const 1_i32) -> [1: bb2, otherwise: bb1]; // scope 0 at $DIR/switch_int.rs:+1:5: +1:12 + StorageLive(_1); + _1 = const 1_i32; +- switchInt(_1) -> [1: bb2, otherwise: bb1]; ++ switchInt(const 1_i32) -> [1: bb2, otherwise: bb1]; } bb1: { - _0 = foo(const -1_i32) -> bb3; // scope 0 at $DIR/switch_int.rs:+3:14: +3:21 - // mir::Constant - // + span: $DIR/switch_int.rs:12:14: 12:17 - // + literal: Const { ty: fn(i32) {foo}, val: Value() } + _0 = foo(const -1_i32) -> bb3; } bb2: { - _0 = foo(const 0_i32) -> bb3; // scope 0 at $DIR/switch_int.rs:+2:14: +2:20 - // mir::Constant - // + span: $DIR/switch_int.rs:11:14: 11:17 - // + literal: Const { ty: fn(i32) {foo}, val: Value() } + _0 = foo(const 0_i32) -> bb3; } bb3: { - StorageDead(_1); // scope 0 at $DIR/switch_int.rs:+5:1: +5:2 - return; // scope 0 at $DIR/switch_int.rs:+5:2: +5:2 + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/switch_int.main.SimplifyConstCondition-after-const-prop.panic-abort.diff b/tests/mir-opt/const_prop/switch_int.main.SimplifyConstCondition-after-const-prop.panic-abort.diff index 865dd488f001f..ced5e500d946b 100644 --- a/tests/mir-opt/const_prop/switch_int.main.SimplifyConstCondition-after-const-prop.panic-abort.diff +++ b/tests/mir-opt/const_prop/switch_int.main.SimplifyConstCondition-after-const-prop.panic-abort.diff @@ -2,33 +2,27 @@ + // MIR for `main` after SimplifyConstCondition-after-const-prop fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/switch_int.rs:+0:11: +0:11 - let mut _1: i32; // in scope 0 at $DIR/switch_int.rs:+1:11: +1:12 + let mut _0: (); + let mut _1: i32; bb0: { - StorageLive(_1); // scope 0 at $DIR/switch_int.rs:+1:11: +1:12 - _1 = const 1_i32; // scope 0 at $DIR/switch_int.rs:+1:11: +1:12 -- switchInt(const 1_i32) -> [1: bb2, otherwise: bb1]; // scope 0 at $DIR/switch_int.rs:+1:5: +1:12 -+ goto -> bb2; // scope 0 at $DIR/switch_int.rs:+1:5: +1:12 + StorageLive(_1); + _1 = const 1_i32; +- switchInt(const 1_i32) -> [1: bb2, otherwise: bb1]; ++ goto -> bb2; } bb1: { - _0 = foo(const -1_i32) -> [return: bb3, unwind unreachable]; // scope 0 at $DIR/switch_int.rs:+3:14: +3:21 - // mir::Constant - // + span: $DIR/switch_int.rs:12:14: 12:17 - // + literal: Const { ty: fn(i32) {foo}, val: Value() } + _0 = foo(const -1_i32) -> [return: bb3, unwind unreachable]; } bb2: { - _0 = foo(const 0_i32) -> [return: bb3, unwind unreachable]; // scope 0 at $DIR/switch_int.rs:+2:14: +2:20 - // mir::Constant - // + span: $DIR/switch_int.rs:11:14: 11:17 - // + literal: Const { ty: fn(i32) {foo}, val: Value() } + _0 = foo(const 0_i32) -> [return: bb3, unwind unreachable]; } bb3: { - StorageDead(_1); // scope 0 at $DIR/switch_int.rs:+5:1: +5:2 - return; // scope 0 at $DIR/switch_int.rs:+5:2: +5:2 + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/switch_int.main.SimplifyConstCondition-after-const-prop.panic-unwind.diff b/tests/mir-opt/const_prop/switch_int.main.SimplifyConstCondition-after-const-prop.panic-unwind.diff index ef2c4d5faa613..72ce94e142950 100644 --- a/tests/mir-opt/const_prop/switch_int.main.SimplifyConstCondition-after-const-prop.panic-unwind.diff +++ b/tests/mir-opt/const_prop/switch_int.main.SimplifyConstCondition-after-const-prop.panic-unwind.diff @@ -2,33 +2,27 @@ + // MIR for `main` after SimplifyConstCondition-after-const-prop fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/switch_int.rs:+0:11: +0:11 - let mut _1: i32; // in scope 0 at $DIR/switch_int.rs:+1:11: +1:12 + let mut _0: (); + let mut _1: i32; bb0: { - StorageLive(_1); // scope 0 at $DIR/switch_int.rs:+1:11: +1:12 - _1 = const 1_i32; // scope 0 at $DIR/switch_int.rs:+1:11: +1:12 -- switchInt(const 1_i32) -> [1: bb2, otherwise: bb1]; // scope 0 at $DIR/switch_int.rs:+1:5: +1:12 -+ goto -> bb2; // scope 0 at $DIR/switch_int.rs:+1:5: +1:12 + StorageLive(_1); + _1 = const 1_i32; +- switchInt(const 1_i32) -> [1: bb2, otherwise: bb1]; ++ goto -> bb2; } bb1: { - _0 = foo(const -1_i32) -> bb3; // scope 0 at $DIR/switch_int.rs:+3:14: +3:21 - // mir::Constant - // + span: $DIR/switch_int.rs:12:14: 12:17 - // + literal: Const { ty: fn(i32) {foo}, val: Value() } + _0 = foo(const -1_i32) -> bb3; } bb2: { - _0 = foo(const 0_i32) -> bb3; // scope 0 at $DIR/switch_int.rs:+2:14: +2:20 - // mir::Constant - // + span: $DIR/switch_int.rs:11:14: 11:17 - // + literal: Const { ty: fn(i32) {foo}, val: Value() } + _0 = foo(const 0_i32) -> bb3; } bb3: { - StorageDead(_1); // scope 0 at $DIR/switch_int.rs:+5:1: +5:2 - return; // scope 0 at $DIR/switch_int.rs:+5:2: +5:2 + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/transmute.from_char.ConstProp.32bit.diff b/tests/mir-opt/const_prop/transmute.from_char.ConstProp.32bit.diff index 933dfbb5166d2..febfebc85347c 100644 --- a/tests/mir-opt/const_prop/transmute.from_char.ConstProp.32bit.diff +++ b/tests/mir-opt/const_prop/transmute.from_char.ConstProp.32bit.diff @@ -2,14 +2,14 @@ + // MIR for `from_char` after ConstProp fn from_char() -> i32 { - let mut _0: i32; // return place in scope 0 at $DIR/transmute.rs:+0:23: +0:26 + let mut _0: i32; scope 1 { } bb0: { -- _0 = const 'R' as i32 (Transmute); // scope 1 at $DIR/transmute.rs:+1:14: +1:28 -+ _0 = const 82_i32; // scope 1 at $DIR/transmute.rs:+1:14: +1:28 - return; // scope 0 at $DIR/transmute.rs:+2:2: +2:2 +- _0 = const 'R' as i32 (Transmute); ++ _0 = const 82_i32; + return; } } diff --git a/tests/mir-opt/const_prop/transmute.from_char.ConstProp.64bit.diff b/tests/mir-opt/const_prop/transmute.from_char.ConstProp.64bit.diff index 933dfbb5166d2..febfebc85347c 100644 --- a/tests/mir-opt/const_prop/transmute.from_char.ConstProp.64bit.diff +++ b/tests/mir-opt/const_prop/transmute.from_char.ConstProp.64bit.diff @@ -2,14 +2,14 @@ + // MIR for `from_char` after ConstProp fn from_char() -> i32 { - let mut _0: i32; // return place in scope 0 at $DIR/transmute.rs:+0:23: +0:26 + let mut _0: i32; scope 1 { } bb0: { -- _0 = const 'R' as i32 (Transmute); // scope 1 at $DIR/transmute.rs:+1:14: +1:28 -+ _0 = const 82_i32; // scope 1 at $DIR/transmute.rs:+1:14: +1:28 - return; // scope 0 at $DIR/transmute.rs:+2:2: +2:2 +- _0 = const 'R' as i32 (Transmute); ++ _0 = const 82_i32; + return; } } diff --git a/tests/mir-opt/const_prop/transmute.invalid_bool.ConstProp.32bit.diff b/tests/mir-opt/const_prop/transmute.invalid_bool.ConstProp.32bit.diff index 4a31194de6eed..38a1eb5a15b57 100644 --- a/tests/mir-opt/const_prop/transmute.invalid_bool.ConstProp.32bit.diff +++ b/tests/mir-opt/const_prop/transmute.invalid_bool.ConstProp.32bit.diff @@ -2,14 +2,14 @@ + // MIR for `invalid_bool` after ConstProp fn invalid_bool() -> bool { - let mut _0: bool; // return place in scope 0 at $DIR/transmute.rs:+0:33: +0:37 + let mut _0: bool; scope 1 { } bb0: { -- _0 = const -1_i8 as bool (Transmute); // scope 1 at $DIR/transmute.rs:+1:14: +1:30 -+ _0 = const {transmute(0xff): bool}; // scope 1 at $DIR/transmute.rs:+1:14: +1:30 - return; // scope 0 at $DIR/transmute.rs:+2:2: +2:2 +- _0 = const -1_i8 as bool (Transmute); ++ _0 = const {transmute(0xff): bool}; + return; } } diff --git a/tests/mir-opt/const_prop/transmute.invalid_bool.ConstProp.64bit.diff b/tests/mir-opt/const_prop/transmute.invalid_bool.ConstProp.64bit.diff index 4a31194de6eed..38a1eb5a15b57 100644 --- a/tests/mir-opt/const_prop/transmute.invalid_bool.ConstProp.64bit.diff +++ b/tests/mir-opt/const_prop/transmute.invalid_bool.ConstProp.64bit.diff @@ -2,14 +2,14 @@ + // MIR for `invalid_bool` after ConstProp fn invalid_bool() -> bool { - let mut _0: bool; // return place in scope 0 at $DIR/transmute.rs:+0:33: +0:37 + let mut _0: bool; scope 1 { } bb0: { -- _0 = const -1_i8 as bool (Transmute); // scope 1 at $DIR/transmute.rs:+1:14: +1:30 -+ _0 = const {transmute(0xff): bool}; // scope 1 at $DIR/transmute.rs:+1:14: +1:30 - return; // scope 0 at $DIR/transmute.rs:+2:2: +2:2 +- _0 = const -1_i8 as bool (Transmute); ++ _0 = const {transmute(0xff): bool}; + return; } } diff --git a/tests/mir-opt/const_prop/transmute.invalid_char.ConstProp.32bit.diff b/tests/mir-opt/const_prop/transmute.invalid_char.ConstProp.32bit.diff index 2c541f2f6a084..2c0998f77eaee 100644 --- a/tests/mir-opt/const_prop/transmute.invalid_char.ConstProp.32bit.diff +++ b/tests/mir-opt/const_prop/transmute.invalid_char.ConstProp.32bit.diff @@ -2,14 +2,14 @@ + // MIR for `invalid_char` after ConstProp fn invalid_char() -> char { - let mut _0: char; // return place in scope 0 at $DIR/transmute.rs:+0:33: +0:37 + let mut _0: char; scope 1 { } bb0: { -- _0 = const _ as char (Transmute); // scope 1 at $DIR/transmute.rs:+1:14: +1:33 -+ _0 = const {transmute(0x7fffffff): char}; // scope 1 at $DIR/transmute.rs:+1:14: +1:33 - return; // scope 0 at $DIR/transmute.rs:+2:2: +2:2 +- _0 = const _ as char (Transmute); ++ _0 = const {transmute(0x7fffffff): char}; + return; } } diff --git a/tests/mir-opt/const_prop/transmute.invalid_char.ConstProp.64bit.diff b/tests/mir-opt/const_prop/transmute.invalid_char.ConstProp.64bit.diff index 2c541f2f6a084..2c0998f77eaee 100644 --- a/tests/mir-opt/const_prop/transmute.invalid_char.ConstProp.64bit.diff +++ b/tests/mir-opt/const_prop/transmute.invalid_char.ConstProp.64bit.diff @@ -2,14 +2,14 @@ + // MIR for `invalid_char` after ConstProp fn invalid_char() -> char { - let mut _0: char; // return place in scope 0 at $DIR/transmute.rs:+0:33: +0:37 + let mut _0: char; scope 1 { } bb0: { -- _0 = const _ as char (Transmute); // scope 1 at $DIR/transmute.rs:+1:14: +1:33 -+ _0 = const {transmute(0x7fffffff): char}; // scope 1 at $DIR/transmute.rs:+1:14: +1:33 - return; // scope 0 at $DIR/transmute.rs:+2:2: +2:2 +- _0 = const _ as char (Transmute); ++ _0 = const {transmute(0x7fffffff): char}; + return; } } diff --git a/tests/mir-opt/const_prop/transmute.less_as_i8.ConstProp.32bit.diff b/tests/mir-opt/const_prop/transmute.less_as_i8.ConstProp.32bit.diff index 76d464789c191..7ac7bed8a5f70 100644 --- a/tests/mir-opt/const_prop/transmute.less_as_i8.ConstProp.32bit.diff +++ b/tests/mir-opt/const_prop/transmute.less_as_i8.ConstProp.32bit.diff @@ -2,22 +2,19 @@ + // MIR for `less_as_i8` after ConstProp fn less_as_i8() -> i8 { - let mut _0: i8; // return place in scope 0 at $DIR/transmute.rs:+0:24: +0:26 - let mut _1: std::cmp::Ordering; // in scope 0 at $DIR/transmute.rs:+1:24: +1:48 + let mut _0: i8; + let mut _1: std::cmp::Ordering; scope 1 { } bb0: { - StorageLive(_1); // scope 1 at $DIR/transmute.rs:+1:24: +1:48 -- _1 = Less; // scope 1 at $DIR/transmute.rs:+1:24: +1:48 -- _0 = move _1 as i8 (Transmute); // scope 1 at $DIR/transmute.rs:+1:14: +1:49 -+ _1 = const Less; // scope 1 at $DIR/transmute.rs:+1:24: +1:48 -+ // mir::Constant -+ // + span: no-location -+ // + literal: Const { ty: std::cmp::Ordering, val: Value(Scalar(0xff)) } -+ _0 = const -1_i8; // scope 1 at $DIR/transmute.rs:+1:14: +1:49 - StorageDead(_1); // scope 1 at $DIR/transmute.rs:+1:48: +1:49 - return; // scope 0 at $DIR/transmute.rs:+2:2: +2:2 + StorageLive(_1); +- _1 = Less; +- _0 = move _1 as i8 (Transmute); ++ _1 = const Less; ++ _0 = const -1_i8; + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/transmute.less_as_i8.ConstProp.64bit.diff b/tests/mir-opt/const_prop/transmute.less_as_i8.ConstProp.64bit.diff index 76d464789c191..7ac7bed8a5f70 100644 --- a/tests/mir-opt/const_prop/transmute.less_as_i8.ConstProp.64bit.diff +++ b/tests/mir-opt/const_prop/transmute.less_as_i8.ConstProp.64bit.diff @@ -2,22 +2,19 @@ + // MIR for `less_as_i8` after ConstProp fn less_as_i8() -> i8 { - let mut _0: i8; // return place in scope 0 at $DIR/transmute.rs:+0:24: +0:26 - let mut _1: std::cmp::Ordering; // in scope 0 at $DIR/transmute.rs:+1:24: +1:48 + let mut _0: i8; + let mut _1: std::cmp::Ordering; scope 1 { } bb0: { - StorageLive(_1); // scope 1 at $DIR/transmute.rs:+1:24: +1:48 -- _1 = Less; // scope 1 at $DIR/transmute.rs:+1:24: +1:48 -- _0 = move _1 as i8 (Transmute); // scope 1 at $DIR/transmute.rs:+1:14: +1:49 -+ _1 = const Less; // scope 1 at $DIR/transmute.rs:+1:24: +1:48 -+ // mir::Constant -+ // + span: no-location -+ // + literal: Const { ty: std::cmp::Ordering, val: Value(Scalar(0xff)) } -+ _0 = const -1_i8; // scope 1 at $DIR/transmute.rs:+1:14: +1:49 - StorageDead(_1); // scope 1 at $DIR/transmute.rs:+1:48: +1:49 - return; // scope 0 at $DIR/transmute.rs:+2:2: +2:2 + StorageLive(_1); +- _1 = Less; +- _0 = move _1 as i8 (Transmute); ++ _1 = const Less; ++ _0 = const -1_i8; + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/transmute.undef_union_as_integer.ConstProp.32bit.diff b/tests/mir-opt/const_prop/transmute.undef_union_as_integer.ConstProp.32bit.diff index 538b1f26e4c9b..afedf2a306137 100644 --- a/tests/mir-opt/const_prop/transmute.undef_union_as_integer.ConstProp.32bit.diff +++ b/tests/mir-opt/const_prop/transmute.undef_union_as_integer.ConstProp.32bit.diff @@ -2,21 +2,21 @@ + // MIR for `undef_union_as_integer` after ConstProp fn undef_union_as_integer() -> u32 { - let mut _0: u32; // return place in scope 0 at $DIR/transmute.rs:+0:43: +0:46 - let mut _1: undef_union_as_integer::Union32; // in scope 0 at $DIR/transmute.rs:+2:24: +2:44 - let mut _2: (); // in scope 0 at $DIR/transmute.rs:+2:40: +2:42 + let mut _0: u32; + let mut _1: undef_union_as_integer::Union32; + let mut _2: (); scope 1 { } bb0: { - StorageLive(_1); // scope 1 at $DIR/transmute.rs:+2:24: +2:44 - StorageLive(_2); // scope 1 at $DIR/transmute.rs:+2:40: +2:42 - _2 = (); // scope 1 at $DIR/transmute.rs:+2:40: +2:42 - _1 = Union32 { value: move _2 }; // scope 1 at $DIR/transmute.rs:+2:24: +2:44 - StorageDead(_2); // scope 1 at $DIR/transmute.rs:+2:43: +2:44 - _0 = move _1 as u32 (Transmute); // scope 1 at $DIR/transmute.rs:+2:14: +2:45 - StorageDead(_1); // scope 1 at $DIR/transmute.rs:+2:44: +2:45 - return; // scope 0 at $DIR/transmute.rs:+3:2: +3:2 + StorageLive(_1); + StorageLive(_2); + _2 = (); + _1 = Union32 { value: move _2 }; + StorageDead(_2); + _0 = move _1 as u32 (Transmute); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/transmute.undef_union_as_integer.ConstProp.64bit.diff b/tests/mir-opt/const_prop/transmute.undef_union_as_integer.ConstProp.64bit.diff index 538b1f26e4c9b..afedf2a306137 100644 --- a/tests/mir-opt/const_prop/transmute.undef_union_as_integer.ConstProp.64bit.diff +++ b/tests/mir-opt/const_prop/transmute.undef_union_as_integer.ConstProp.64bit.diff @@ -2,21 +2,21 @@ + // MIR for `undef_union_as_integer` after ConstProp fn undef_union_as_integer() -> u32 { - let mut _0: u32; // return place in scope 0 at $DIR/transmute.rs:+0:43: +0:46 - let mut _1: undef_union_as_integer::Union32; // in scope 0 at $DIR/transmute.rs:+2:24: +2:44 - let mut _2: (); // in scope 0 at $DIR/transmute.rs:+2:40: +2:42 + let mut _0: u32; + let mut _1: undef_union_as_integer::Union32; + let mut _2: (); scope 1 { } bb0: { - StorageLive(_1); // scope 1 at $DIR/transmute.rs:+2:24: +2:44 - StorageLive(_2); // scope 1 at $DIR/transmute.rs:+2:40: +2:42 - _2 = (); // scope 1 at $DIR/transmute.rs:+2:40: +2:42 - _1 = Union32 { value: move _2 }; // scope 1 at $DIR/transmute.rs:+2:24: +2:44 - StorageDead(_2); // scope 1 at $DIR/transmute.rs:+2:43: +2:44 - _0 = move _1 as u32 (Transmute); // scope 1 at $DIR/transmute.rs:+2:14: +2:45 - StorageDead(_1); // scope 1 at $DIR/transmute.rs:+2:44: +2:45 - return; // scope 0 at $DIR/transmute.rs:+3:2: +3:2 + StorageLive(_1); + StorageLive(_2); + _2 = (); + _1 = Union32 { value: move _2 }; + StorageDead(_2); + _0 = move _1 as u32 (Transmute); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/transmute.unreachable_box.ConstProp.32bit.diff b/tests/mir-opt/const_prop/transmute.unreachable_box.ConstProp.32bit.diff index 5258d75bdf786..100982382ddbf 100644 --- a/tests/mir-opt/const_prop/transmute.unreachable_box.ConstProp.32bit.diff +++ b/tests/mir-opt/const_prop/transmute.unreachable_box.ConstProp.32bit.diff @@ -2,22 +2,19 @@ + // MIR for `unreachable_box` after ConstProp fn unreachable_box() -> ! { - let mut _0: !; // return place in scope 0 at $DIR/transmute.rs:+0:36: +0:37 - let _1: std::boxed::Box; // in scope 0 at $DIR/transmute.rs:+1:9: +1:10 + let mut _0: !; + let _1: std::boxed::Box; scope 1 { - debug x => _1; // in scope 1 at $DIR/transmute.rs:+1:9: +1:10 + debug x => _1; } scope 2 { } bb0: { - StorageLive(_1); // scope 0 at $DIR/transmute.rs:+1:9: +1:10 -- _1 = const 1_usize as std::boxed::Box (Transmute); // scope 2 at $DIR/transmute.rs:+1:34: +1:52 -+ _1 = const Box::(Unique:: {{ pointer: NonNull:: {{ pointer: {0x1 as *const Never} }}, _marker: PhantomData:: }}, std::alloc::Global); // scope 2 at $DIR/transmute.rs:+1:34: +1:52 -+ // mir::Constant -+ // + span: no-location -+ // + literal: Const { ty: Box, val: Value(Scalar(0x00000001)) } - unreachable; // scope 1 at $DIR/transmute.rs:+2:11: +2:13 + StorageLive(_1); +- _1 = const 1_usize as std::boxed::Box (Transmute); ++ _1 = const Box::(Unique:: {{ pointer: NonNull:: {{ pointer: {0x1 as *const Never} }}, _marker: PhantomData:: }}, std::alloc::Global); + unreachable; } } diff --git a/tests/mir-opt/const_prop/transmute.unreachable_box.ConstProp.64bit.diff b/tests/mir-opt/const_prop/transmute.unreachable_box.ConstProp.64bit.diff index 7e57e06a5cf8b..100982382ddbf 100644 --- a/tests/mir-opt/const_prop/transmute.unreachable_box.ConstProp.64bit.diff +++ b/tests/mir-opt/const_prop/transmute.unreachable_box.ConstProp.64bit.diff @@ -2,22 +2,19 @@ + // MIR for `unreachable_box` after ConstProp fn unreachable_box() -> ! { - let mut _0: !; // return place in scope 0 at $DIR/transmute.rs:+0:36: +0:37 - let _1: std::boxed::Box; // in scope 0 at $DIR/transmute.rs:+1:9: +1:10 + let mut _0: !; + let _1: std::boxed::Box; scope 1 { - debug x => _1; // in scope 1 at $DIR/transmute.rs:+1:9: +1:10 + debug x => _1; } scope 2 { } bb0: { - StorageLive(_1); // scope 0 at $DIR/transmute.rs:+1:9: +1:10 -- _1 = const 1_usize as std::boxed::Box (Transmute); // scope 2 at $DIR/transmute.rs:+1:34: +1:52 -+ _1 = const Box::(Unique:: {{ pointer: NonNull:: {{ pointer: {0x1 as *const Never} }}, _marker: PhantomData:: }}, std::alloc::Global); // scope 2 at $DIR/transmute.rs:+1:34: +1:52 -+ // mir::Constant -+ // + span: no-location -+ // + literal: Const { ty: Box, val: Value(Scalar(0x0000000000000001)) } - unreachable; // scope 1 at $DIR/transmute.rs:+2:11: +2:13 + StorageLive(_1); +- _1 = const 1_usize as std::boxed::Box (Transmute); ++ _1 = const Box::(Unique:: {{ pointer: NonNull:: {{ pointer: {0x1 as *const Never} }}, _marker: PhantomData:: }}, std::alloc::Global); + unreachable; } } diff --git a/tests/mir-opt/const_prop/transmute.unreachable_direct.ConstProp.32bit.diff b/tests/mir-opt/const_prop/transmute.unreachable_direct.ConstProp.32bit.diff index 032681f230ba6..896608e7eff5d 100644 --- a/tests/mir-opt/const_prop/transmute.unreachable_direct.ConstProp.32bit.diff +++ b/tests/mir-opt/const_prop/transmute.unreachable_direct.ConstProp.32bit.diff @@ -2,21 +2,21 @@ + // MIR for `unreachable_direct` after ConstProp fn unreachable_direct() -> ! { - let mut _0: !; // return place in scope 0 at $DIR/transmute.rs:+0:39: +0:40 - let _1: Never; // in scope 0 at $DIR/transmute.rs:+1:9: +1:10 - let mut _2: (); // in scope 0 at $DIR/transmute.rs:+1:39: +1:41 + let mut _0: !; + let _1: Never; + let mut _2: (); scope 1 { - debug x => _1; // in scope 1 at $DIR/transmute.rs:+1:9: +1:10 + debug x => _1; } scope 2 { } bb0: { - StorageLive(_1); // scope 0 at $DIR/transmute.rs:+1:9: +1:10 - StorageLive(_2); // scope 2 at $DIR/transmute.rs:+1:39: +1:41 - _2 = (); // scope 2 at $DIR/transmute.rs:+1:39: +1:41 - _1 = move _2 as Never (Transmute); // scope 2 at $DIR/transmute.rs:+1:29: +1:42 - unreachable; // scope 2 at $DIR/transmute.rs:+1:29: +1:42 + StorageLive(_1); + StorageLive(_2); + _2 = (); + _1 = move _2 as Never (Transmute); + unreachable; } } diff --git a/tests/mir-opt/const_prop/transmute.unreachable_direct.ConstProp.64bit.diff b/tests/mir-opt/const_prop/transmute.unreachable_direct.ConstProp.64bit.diff index 032681f230ba6..896608e7eff5d 100644 --- a/tests/mir-opt/const_prop/transmute.unreachable_direct.ConstProp.64bit.diff +++ b/tests/mir-opt/const_prop/transmute.unreachable_direct.ConstProp.64bit.diff @@ -2,21 +2,21 @@ + // MIR for `unreachable_direct` after ConstProp fn unreachable_direct() -> ! { - let mut _0: !; // return place in scope 0 at $DIR/transmute.rs:+0:39: +0:40 - let _1: Never; // in scope 0 at $DIR/transmute.rs:+1:9: +1:10 - let mut _2: (); // in scope 0 at $DIR/transmute.rs:+1:39: +1:41 + let mut _0: !; + let _1: Never; + let mut _2: (); scope 1 { - debug x => _1; // in scope 1 at $DIR/transmute.rs:+1:9: +1:10 + debug x => _1; } scope 2 { } bb0: { - StorageLive(_1); // scope 0 at $DIR/transmute.rs:+1:9: +1:10 - StorageLive(_2); // scope 2 at $DIR/transmute.rs:+1:39: +1:41 - _2 = (); // scope 2 at $DIR/transmute.rs:+1:39: +1:41 - _1 = move _2 as Never (Transmute); // scope 2 at $DIR/transmute.rs:+1:29: +1:42 - unreachable; // scope 2 at $DIR/transmute.rs:+1:29: +1:42 + StorageLive(_1); + StorageLive(_2); + _2 = (); + _1 = move _2 as Never (Transmute); + unreachable; } } diff --git a/tests/mir-opt/const_prop/transmute.unreachable_mut.ConstProp.32bit.diff b/tests/mir-opt/const_prop/transmute.unreachable_mut.ConstProp.32bit.diff index ec8a62bd62cd6..c9d5ccf0bfdd1 100644 --- a/tests/mir-opt/const_prop/transmute.unreachable_mut.ConstProp.32bit.diff +++ b/tests/mir-opt/const_prop/transmute.unreachable_mut.ConstProp.32bit.diff @@ -2,26 +2,23 @@ + // MIR for `unreachable_mut` after ConstProp fn unreachable_mut() -> ! { - let mut _0: !; // return place in scope 0 at $DIR/transmute.rs:+0:36: +0:37 - let _1: &mut Never; // in scope 0 at $DIR/transmute.rs:+1:9: +1:10 - let mut _2: &mut Never; // in scope 0 at $DIR/transmute.rs:+1:34: +1:52 + let mut _0: !; + let _1: &mut Never; + let mut _2: &mut Never; scope 1 { - debug x => _1; // in scope 1 at $DIR/transmute.rs:+1:9: +1:10 + debug x => _1; } scope 2 { } bb0: { - StorageLive(_1); // scope 0 at $DIR/transmute.rs:+1:9: +1:10 - StorageLive(_2); // scope 0 at $DIR/transmute.rs:+1:34: +1:52 -- _2 = const 1_usize as &mut Never (Transmute); // scope 2 at $DIR/transmute.rs:+1:34: +1:52 -+ _2 = const {0x1 as &mut Never}; // scope 2 at $DIR/transmute.rs:+1:34: +1:52 -+ // mir::Constant -+ // + span: no-location -+ // + literal: Const { ty: &mut Never, val: Value(Scalar(0x00000001)) } - _1 = &mut (*_2); // scope 0 at $DIR/transmute.rs:+1:34: +1:52 - StorageDead(_2); // scope 0 at $DIR/transmute.rs:+1:54: +1:55 - unreachable; // scope 1 at $DIR/transmute.rs:+2:11: +2:13 + StorageLive(_1); + StorageLive(_2); +- _2 = const 1_usize as &mut Never (Transmute); ++ _2 = const {0x1 as &mut Never}; + _1 = &mut (*_2); + StorageDead(_2); + unreachable; } } diff --git a/tests/mir-opt/const_prop/transmute.unreachable_mut.ConstProp.64bit.diff b/tests/mir-opt/const_prop/transmute.unreachable_mut.ConstProp.64bit.diff index 288da6e56c53c..c9d5ccf0bfdd1 100644 --- a/tests/mir-opt/const_prop/transmute.unreachable_mut.ConstProp.64bit.diff +++ b/tests/mir-opt/const_prop/transmute.unreachable_mut.ConstProp.64bit.diff @@ -2,26 +2,23 @@ + // MIR for `unreachable_mut` after ConstProp fn unreachable_mut() -> ! { - let mut _0: !; // return place in scope 0 at $DIR/transmute.rs:+0:36: +0:37 - let _1: &mut Never; // in scope 0 at $DIR/transmute.rs:+1:9: +1:10 - let mut _2: &mut Never; // in scope 0 at $DIR/transmute.rs:+1:34: +1:52 + let mut _0: !; + let _1: &mut Never; + let mut _2: &mut Never; scope 1 { - debug x => _1; // in scope 1 at $DIR/transmute.rs:+1:9: +1:10 + debug x => _1; } scope 2 { } bb0: { - StorageLive(_1); // scope 0 at $DIR/transmute.rs:+1:9: +1:10 - StorageLive(_2); // scope 0 at $DIR/transmute.rs:+1:34: +1:52 -- _2 = const 1_usize as &mut Never (Transmute); // scope 2 at $DIR/transmute.rs:+1:34: +1:52 -+ _2 = const {0x1 as &mut Never}; // scope 2 at $DIR/transmute.rs:+1:34: +1:52 -+ // mir::Constant -+ // + span: no-location -+ // + literal: Const { ty: &mut Never, val: Value(Scalar(0x0000000000000001)) } - _1 = &mut (*_2); // scope 0 at $DIR/transmute.rs:+1:34: +1:52 - StorageDead(_2); // scope 0 at $DIR/transmute.rs:+1:54: +1:55 - unreachable; // scope 1 at $DIR/transmute.rs:+2:11: +2:13 + StorageLive(_1); + StorageLive(_2); +- _2 = const 1_usize as &mut Never (Transmute); ++ _2 = const {0x1 as &mut Never}; + _1 = &mut (*_2); + StorageDead(_2); + unreachable; } } diff --git a/tests/mir-opt/const_prop/transmute.unreachable_ref.ConstProp.32bit.diff b/tests/mir-opt/const_prop/transmute.unreachable_ref.ConstProp.32bit.diff index dcca0fca619b0..b684ba34c691a 100644 --- a/tests/mir-opt/const_prop/transmute.unreachable_ref.ConstProp.32bit.diff +++ b/tests/mir-opt/const_prop/transmute.unreachable_ref.ConstProp.32bit.diff @@ -2,22 +2,19 @@ + // MIR for `unreachable_ref` after ConstProp fn unreachable_ref() -> ! { - let mut _0: !; // return place in scope 0 at $DIR/transmute.rs:+0:36: +0:37 - let _1: &Never; // in scope 0 at $DIR/transmute.rs:+1:9: +1:10 + let mut _0: !; + let _1: &Never; scope 1 { - debug x => _1; // in scope 1 at $DIR/transmute.rs:+1:9: +1:10 + debug x => _1; } scope 2 { } bb0: { - StorageLive(_1); // scope 0 at $DIR/transmute.rs:+1:9: +1:10 -- _1 = const 1_usize as &Never (Transmute); // scope 2 at $DIR/transmute.rs:+1:30: +1:48 -+ _1 = const {0x1 as &Never}; // scope 2 at $DIR/transmute.rs:+1:30: +1:48 -+ // mir::Constant -+ // + span: no-location -+ // + literal: Const { ty: &Never, val: Value(Scalar(0x00000001)) } - unreachable; // scope 1 at $DIR/transmute.rs:+2:11: +2:13 + StorageLive(_1); +- _1 = const 1_usize as &Never (Transmute); ++ _1 = const {0x1 as &Never}; + unreachable; } } diff --git a/tests/mir-opt/const_prop/transmute.unreachable_ref.ConstProp.64bit.diff b/tests/mir-opt/const_prop/transmute.unreachable_ref.ConstProp.64bit.diff index 3a0b967e66f1a..b684ba34c691a 100644 --- a/tests/mir-opt/const_prop/transmute.unreachable_ref.ConstProp.64bit.diff +++ b/tests/mir-opt/const_prop/transmute.unreachable_ref.ConstProp.64bit.diff @@ -2,22 +2,19 @@ + // MIR for `unreachable_ref` after ConstProp fn unreachable_ref() -> ! { - let mut _0: !; // return place in scope 0 at $DIR/transmute.rs:+0:36: +0:37 - let _1: &Never; // in scope 0 at $DIR/transmute.rs:+1:9: +1:10 + let mut _0: !; + let _1: &Never; scope 1 { - debug x => _1; // in scope 1 at $DIR/transmute.rs:+1:9: +1:10 + debug x => _1; } scope 2 { } bb0: { - StorageLive(_1); // scope 0 at $DIR/transmute.rs:+1:9: +1:10 -- _1 = const 1_usize as &Never (Transmute); // scope 2 at $DIR/transmute.rs:+1:30: +1:48 -+ _1 = const {0x1 as &Never}; // scope 2 at $DIR/transmute.rs:+1:30: +1:48 -+ // mir::Constant -+ // + span: no-location -+ // + literal: Const { ty: &Never, val: Value(Scalar(0x0000000000000001)) } - unreachable; // scope 1 at $DIR/transmute.rs:+2:11: +2:13 + StorageLive(_1); +- _1 = const 1_usize as &Never (Transmute); ++ _1 = const {0x1 as &Never}; + unreachable; } } diff --git a/tests/mir-opt/const_prop/transmute.valid_char.ConstProp.32bit.diff b/tests/mir-opt/const_prop/transmute.valid_char.ConstProp.32bit.diff index eac33b7300348..f215b3ca398a7 100644 --- a/tests/mir-opt/const_prop/transmute.valid_char.ConstProp.32bit.diff +++ b/tests/mir-opt/const_prop/transmute.valid_char.ConstProp.32bit.diff @@ -2,14 +2,14 @@ + // MIR for `valid_char` after ConstProp fn valid_char() -> char { - let mut _0: char; // return place in scope 0 at $DIR/transmute.rs:+0:24: +0:28 + let mut _0: char; scope 1 { } bb0: { -- _0 = const 82_u32 as char (Transmute); // scope 1 at $DIR/transmute.rs:+1:14: +1:33 -+ _0 = const 'R'; // scope 1 at $DIR/transmute.rs:+1:14: +1:33 - return; // scope 0 at $DIR/transmute.rs:+2:2: +2:2 +- _0 = const 82_u32 as char (Transmute); ++ _0 = const 'R'; + return; } } diff --git a/tests/mir-opt/const_prop/transmute.valid_char.ConstProp.64bit.diff b/tests/mir-opt/const_prop/transmute.valid_char.ConstProp.64bit.diff index eac33b7300348..f215b3ca398a7 100644 --- a/tests/mir-opt/const_prop/transmute.valid_char.ConstProp.64bit.diff +++ b/tests/mir-opt/const_prop/transmute.valid_char.ConstProp.64bit.diff @@ -2,14 +2,14 @@ + // MIR for `valid_char` after ConstProp fn valid_char() -> char { - let mut _0: char; // return place in scope 0 at $DIR/transmute.rs:+0:24: +0:28 + let mut _0: char; scope 1 { } bb0: { -- _0 = const 82_u32 as char (Transmute); // scope 1 at $DIR/transmute.rs:+1:14: +1:33 -+ _0 = const 'R'; // scope 1 at $DIR/transmute.rs:+1:14: +1:33 - return; // scope 0 at $DIR/transmute.rs:+2:2: +2:2 +- _0 = const 82_u32 as char (Transmute); ++ _0 = const 'R'; + return; } } diff --git a/tests/mir-opt/const_prop/tuple_literal_propagation.main.ConstProp.panic-abort.diff b/tests/mir-opt/const_prop/tuple_literal_propagation.main.ConstProp.panic-abort.diff index f9ae4da800b0e..a72f24152fb4b 100644 --- a/tests/mir-opt/const_prop/tuple_literal_propagation.main.ConstProp.panic-abort.diff +++ b/tests/mir-opt/const_prop/tuple_literal_propagation.main.ConstProp.panic-abort.diff @@ -2,34 +2,31 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/tuple_literal_propagation.rs:+0:11: +0:11 - let _1: (u32, u32); // in scope 0 at $DIR/tuple_literal_propagation.rs:+1:9: +1:10 - let _2: (); // in scope 0 at $DIR/tuple_literal_propagation.rs:+3:5: +3:15 - let mut _3: (u32, u32); // in scope 0 at $DIR/tuple_literal_propagation.rs:+3:13: +3:14 + let mut _0: (); + let _1: (u32, u32); + let _2: (); + let mut _3: (u32, u32); scope 1 { - debug x => _1; // in scope 1 at $DIR/tuple_literal_propagation.rs:+1:9: +1:10 + debug x => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/tuple_literal_propagation.rs:+1:9: +1:10 -- _1 = (const 1_u32, const 2_u32); // scope 0 at $DIR/tuple_literal_propagation.rs:+1:13: +1:19 -+ _1 = const (1_u32, 2_u32); // scope 0 at $DIR/tuple_literal_propagation.rs:+1:13: +1:19 - StorageLive(_2); // scope 1 at $DIR/tuple_literal_propagation.rs:+3:5: +3:15 - StorageLive(_3); // scope 1 at $DIR/tuple_literal_propagation.rs:+3:13: +3:14 -- _3 = _1; // scope 1 at $DIR/tuple_literal_propagation.rs:+3:13: +3:14 -+ _3 = const (1_u32, 2_u32); // scope 1 at $DIR/tuple_literal_propagation.rs:+3:13: +3:14 - _2 = consume(move _3) -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/tuple_literal_propagation.rs:+3:5: +3:15 - // mir::Constant - // + span: $DIR/tuple_literal_propagation.rs:7:5: 7:12 - // + literal: Const { ty: fn((u32, u32)) {consume}, val: Value() } + StorageLive(_1); +- _1 = (const 1_u32, const 2_u32); ++ _1 = const (1_u32, 2_u32); + StorageLive(_2); + StorageLive(_3); +- _3 = _1; ++ _3 = const (1_u32, 2_u32); + _2 = consume(move _3) -> [return: bb1, unwind unreachable]; } bb1: { - StorageDead(_3); // scope 1 at $DIR/tuple_literal_propagation.rs:+3:14: +3:15 - StorageDead(_2); // scope 1 at $DIR/tuple_literal_propagation.rs:+3:15: +3:16 - _0 = const (); // scope 0 at $DIR/tuple_literal_propagation.rs:+0:11: +4:2 - StorageDead(_1); // scope 0 at $DIR/tuple_literal_propagation.rs:+4:1: +4:2 - return; // scope 0 at $DIR/tuple_literal_propagation.rs:+4:2: +4:2 + StorageDead(_3); + StorageDead(_2); + _0 = const (); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/tuple_literal_propagation.main.ConstProp.panic-unwind.diff b/tests/mir-opt/const_prop/tuple_literal_propagation.main.ConstProp.panic-unwind.diff index e4a7c0d1e7204..d44c69ca44038 100644 --- a/tests/mir-opt/const_prop/tuple_literal_propagation.main.ConstProp.panic-unwind.diff +++ b/tests/mir-opt/const_prop/tuple_literal_propagation.main.ConstProp.panic-unwind.diff @@ -2,34 +2,31 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/tuple_literal_propagation.rs:+0:11: +0:11 - let _1: (u32, u32); // in scope 0 at $DIR/tuple_literal_propagation.rs:+1:9: +1:10 - let _2: (); // in scope 0 at $DIR/tuple_literal_propagation.rs:+3:5: +3:15 - let mut _3: (u32, u32); // in scope 0 at $DIR/tuple_literal_propagation.rs:+3:13: +3:14 + let mut _0: (); + let _1: (u32, u32); + let _2: (); + let mut _3: (u32, u32); scope 1 { - debug x => _1; // in scope 1 at $DIR/tuple_literal_propagation.rs:+1:9: +1:10 + debug x => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/tuple_literal_propagation.rs:+1:9: +1:10 -- _1 = (const 1_u32, const 2_u32); // scope 0 at $DIR/tuple_literal_propagation.rs:+1:13: +1:19 -+ _1 = const (1_u32, 2_u32); // scope 0 at $DIR/tuple_literal_propagation.rs:+1:13: +1:19 - StorageLive(_2); // scope 1 at $DIR/tuple_literal_propagation.rs:+3:5: +3:15 - StorageLive(_3); // scope 1 at $DIR/tuple_literal_propagation.rs:+3:13: +3:14 -- _3 = _1; // scope 1 at $DIR/tuple_literal_propagation.rs:+3:13: +3:14 -+ _3 = const (1_u32, 2_u32); // scope 1 at $DIR/tuple_literal_propagation.rs:+3:13: +3:14 - _2 = consume(move _3) -> bb1; // scope 1 at $DIR/tuple_literal_propagation.rs:+3:5: +3:15 - // mir::Constant - // + span: $DIR/tuple_literal_propagation.rs:7:5: 7:12 - // + literal: Const { ty: fn((u32, u32)) {consume}, val: Value() } + StorageLive(_1); +- _1 = (const 1_u32, const 2_u32); ++ _1 = const (1_u32, 2_u32); + StorageLive(_2); + StorageLive(_3); +- _3 = _1; ++ _3 = const (1_u32, 2_u32); + _2 = consume(move _3) -> bb1; } bb1: { - StorageDead(_3); // scope 1 at $DIR/tuple_literal_propagation.rs:+3:14: +3:15 - StorageDead(_2); // scope 1 at $DIR/tuple_literal_propagation.rs:+3:15: +3:16 - _0 = const (); // scope 0 at $DIR/tuple_literal_propagation.rs:+0:11: +4:2 - StorageDead(_1); // scope 0 at $DIR/tuple_literal_propagation.rs:+4:1: +4:2 - return; // scope 0 at $DIR/tuple_literal_propagation.rs:+4:2: +4:2 + StorageDead(_3); + StorageDead(_2); + _0 = const (); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop/while_let_loops.change_loop_body.ConstProp.diff b/tests/mir-opt/const_prop/while_let_loops.change_loop_body.ConstProp.diff index 37732421870ab..f54908b4a38a6 100644 --- a/tests/mir-opt/const_prop/while_let_loops.change_loop_body.ConstProp.diff +++ b/tests/mir-opt/const_prop/while_let_loops.change_loop_body.ConstProp.diff @@ -2,53 +2,53 @@ + // MIR for `change_loop_body` after ConstProp fn change_loop_body() -> () { - let mut _0: (); // return place in scope 0 at $DIR/while_let_loops.rs:+0:27: +0:27 - let mut _1: i32; // in scope 0 at $DIR/while_let_loops.rs:+1:9: +1:15 - let mut _2: (); // in scope 0 at $DIR/while_let_loops.rs:+0:1: +6:2 - let mut _3: std::option::Option; // in scope 0 at $DIR/while_let_loops.rs:+2:28: +2:32 - let mut _4: isize; // in scope 0 at $DIR/while_let_loops.rs:+2:15: +2:25 - let mut _5: !; // in scope 0 at $DIR/while_let_loops.rs:+2:33: +5:6 - let mut _6: !; // in scope 0 at $DIR/while_let_loops.rs:+2:5: +5:6 - let _7: (); // in scope 0 at $DIR/while_let_loops.rs:+2:5: +5:6 - let mut _8: !; // in scope 0 at $DIR/while_let_loops.rs:+2:5: +5:6 + let mut _0: (); + let mut _1: i32; + let mut _2: (); + let mut _3: std::option::Option; + let mut _4: isize; + let mut _5: !; + let mut _6: !; + let _7: (); + let mut _8: !; scope 1 { - debug _x => _1; // in scope 1 at $DIR/while_let_loops.rs:+1:9: +1:15 + debug _x => _1; scope 2 { } } bb0: { - StorageLive(_1); // scope 0 at $DIR/while_let_loops.rs:+1:9: +1:15 - _1 = const 0_i32; // scope 0 at $DIR/while_let_loops.rs:+1:18: +1:19 - StorageLive(_3); // scope 2 at $DIR/while_let_loops.rs:+2:28: +2:32 - _3 = Option::::None; // scope 2 at $DIR/while_let_loops.rs:+2:28: +2:32 -- _4 = discriminant(_3); // scope 2 at $DIR/while_let_loops.rs:+2:15: +2:25 -- switchInt(move _4) -> [1: bb1, otherwise: bb3]; // scope 2 at $DIR/while_let_loops.rs:+2:15: +2:25 -+ _4 = const 0_isize; // scope 2 at $DIR/while_let_loops.rs:+2:15: +2:25 -+ switchInt(const 0_isize) -> [1: bb1, otherwise: bb3]; // scope 2 at $DIR/while_let_loops.rs:+2:15: +2:25 + StorageLive(_1); + _1 = const 0_i32; + StorageLive(_3); + _3 = Option::::None; +- _4 = discriminant(_3); +- switchInt(move _4) -> [1: bb1, otherwise: bb3]; ++ _4 = const 0_isize; ++ switchInt(const 0_isize) -> [1: bb1, otherwise: bb3]; } bb1: { - switchInt(((_3 as Some).0: u32)) -> [0: bb2, otherwise: bb3]; // scope 2 at $DIR/while_let_loops.rs:+2:15: +2:25 + switchInt(((_3 as Some).0: u32)) -> [0: bb2, otherwise: bb3]; } bb2: { - _1 = const 1_i32; // scope 2 at $DIR/while_let_loops.rs:+3:9: +3:15 - _0 = const (); // scope 2 at $DIR/while_let_loops.rs:+4:9: +4:14 - goto -> bb4; // scope 2 at $DIR/while_let_loops.rs:+4:9: +4:14 + _1 = const 1_i32; + _0 = const (); + goto -> bb4; } bb3: { - StorageLive(_7); // scope 1 at $DIR/while_let_loops.rs:+2:5: +5:6 - _0 = const (); // scope 1 at $DIR/while_let_loops.rs:+2:5: +5:6 - StorageDead(_7); // scope 1 at $DIR/while_let_loops.rs:+5:5: +5:6 - goto -> bb4; // scope 1 at no-location + StorageLive(_7); + _0 = const (); + StorageDead(_7); + goto -> bb4; } bb4: { - StorageDead(_3); // scope 1 at $DIR/while_let_loops.rs:+5:5: +5:6 - StorageDead(_1); // scope 0 at $DIR/while_let_loops.rs:+6:1: +6:2 - return; // scope 0 at $DIR/while_let_loops.rs:+6:2: +6:2 + StorageDead(_3); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop_miscompile.bar.ConstProp.diff b/tests/mir-opt/const_prop_miscompile.bar.ConstProp.diff index a5f52d08957c8..4eafb8d09178e 100644 --- a/tests/mir-opt/const_prop_miscompile.bar.ConstProp.diff +++ b/tests/mir-opt/const_prop_miscompile.bar.ConstProp.diff @@ -2,40 +2,40 @@ + // MIR for `bar` after ConstProp fn bar() -> () { - let mut _0: (); // return place in scope 0 at $DIR/const_prop_miscompile.rs:+0:10: +0:10 - let mut _1: (i32,); // in scope 0 at $DIR/const_prop_miscompile.rs:+1:9: +1:14 - let _2: (); // in scope 0 at $DIR/const_prop_miscompile.rs:+2:5: +4:6 - let mut _3: *mut i32; // in scope 0 at $DIR/const_prop_miscompile.rs:+3:10: +3:22 - let mut _5: i32; // in scope 0 at $DIR/const_prop_miscompile.rs:+5:13: +5:20 + let mut _0: (); + let mut _1: (i32,); + let _2: (); + let mut _3: *mut i32; + let mut _5: i32; scope 1 { - debug v => _1; // in scope 1 at $DIR/const_prop_miscompile.rs:+1:9: +1:14 - let _4: bool; // in scope 1 at $DIR/const_prop_miscompile.rs:+5:9: +5:10 + debug v => _1; + let _4: bool; scope 2 { } scope 3 { - debug y => _4; // in scope 3 at $DIR/const_prop_miscompile.rs:+5:9: +5:10 + debug y => _4; } } bb0: { - StorageLive(_1); // scope 0 at $DIR/const_prop_miscompile.rs:+1:9: +1:14 - _1 = (const 1_i32,); // scope 0 at $DIR/const_prop_miscompile.rs:+1:17: +1:21 - StorageLive(_2); // scope 1 at $DIR/const_prop_miscompile.rs:+2:5: +4:6 - StorageLive(_3); // scope 2 at $DIR/const_prop_miscompile.rs:+3:10: +3:22 - _3 = &raw mut (_1.0: i32); // scope 2 at $DIR/const_prop_miscompile.rs:+3:10: +3:22 - (*_3) = const 5_i32; // scope 2 at $DIR/const_prop_miscompile.rs:+3:9: +3:26 - StorageDead(_3); // scope 2 at $DIR/const_prop_miscompile.rs:+3:26: +3:27 - _2 = const (); // scope 2 at $DIR/const_prop_miscompile.rs:+2:5: +4:6 - StorageDead(_2); // scope 1 at $DIR/const_prop_miscompile.rs:+4:5: +4:6 - StorageLive(_4); // scope 1 at $DIR/const_prop_miscompile.rs:+5:9: +5:10 - StorageLive(_5); // scope 1 at $DIR/const_prop_miscompile.rs:+5:13: +5:20 - _5 = (_1.0: i32); // scope 1 at $DIR/const_prop_miscompile.rs:+5:15: +5:18 - _4 = Eq(move _5, const 5_i32); // scope 1 at $DIR/const_prop_miscompile.rs:+5:13: +5:25 - StorageDead(_5); // scope 1 at $DIR/const_prop_miscompile.rs:+5:24: +5:25 - _0 = const (); // scope 0 at $DIR/const_prop_miscompile.rs:+0:10: +6:2 - StorageDead(_4); // scope 1 at $DIR/const_prop_miscompile.rs:+6:1: +6:2 - StorageDead(_1); // scope 0 at $DIR/const_prop_miscompile.rs:+6:1: +6:2 - return; // scope 0 at $DIR/const_prop_miscompile.rs:+6:2: +6:2 + StorageLive(_1); + _1 = (const 1_i32,); + StorageLive(_2); + StorageLive(_3); + _3 = &raw mut (_1.0: i32); + (*_3) = const 5_i32; + StorageDead(_3); + _2 = const (); + StorageDead(_2); + StorageLive(_4); + StorageLive(_5); + _5 = (_1.0: i32); + _4 = Eq(move _5, const 5_i32); + StorageDead(_5); + _0 = const (); + StorageDead(_4); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/const_prop_miscompile.foo.ConstProp.diff b/tests/mir-opt/const_prop_miscompile.foo.ConstProp.diff index 42ddc2a56208a..445d9895d6a8f 100644 --- a/tests/mir-opt/const_prop_miscompile.foo.ConstProp.diff +++ b/tests/mir-opt/const_prop_miscompile.foo.ConstProp.diff @@ -2,34 +2,34 @@ + // MIR for `foo` after ConstProp fn foo() -> () { - let mut _0: (); // return place in scope 0 at $DIR/const_prop_miscompile.rs:+0:10: +0:10 - let mut _1: (i32,); // in scope 0 at $DIR/const_prop_miscompile.rs:+1:9: +1:14 - let mut _2: &mut i32; // in scope 0 at $DIR/const_prop_miscompile.rs:+2:6: +2:14 - let mut _4: i32; // in scope 0 at $DIR/const_prop_miscompile.rs:+3:13: +3:20 + let mut _0: (); + let mut _1: (i32,); + let mut _2: &mut i32; + let mut _4: i32; scope 1 { - debug u => _1; // in scope 1 at $DIR/const_prop_miscompile.rs:+1:9: +1:14 - let _3: bool; // in scope 1 at $DIR/const_prop_miscompile.rs:+3:9: +3:10 + debug u => _1; + let _3: bool; scope 2 { - debug y => _3; // in scope 2 at $DIR/const_prop_miscompile.rs:+3:9: +3:10 + debug y => _3; } } bb0: { - StorageLive(_1); // scope 0 at $DIR/const_prop_miscompile.rs:+1:9: +1:14 - _1 = (const 1_i32,); // scope 0 at $DIR/const_prop_miscompile.rs:+1:17: +1:21 - StorageLive(_2); // scope 1 at $DIR/const_prop_miscompile.rs:+2:6: +2:14 - _2 = &mut (_1.0: i32); // scope 1 at $DIR/const_prop_miscompile.rs:+2:6: +2:14 - (*_2) = const 5_i32; // scope 1 at $DIR/const_prop_miscompile.rs:+2:5: +2:18 - StorageDead(_2); // scope 1 at $DIR/const_prop_miscompile.rs:+2:18: +2:19 - StorageLive(_3); // scope 1 at $DIR/const_prop_miscompile.rs:+3:9: +3:10 - StorageLive(_4); // scope 1 at $DIR/const_prop_miscompile.rs:+3:13: +3:20 - _4 = (_1.0: i32); // scope 1 at $DIR/const_prop_miscompile.rs:+3:15: +3:18 - _3 = Eq(move _4, const 5_i32); // scope 1 at $DIR/const_prop_miscompile.rs:+3:13: +3:25 - StorageDead(_4); // scope 1 at $DIR/const_prop_miscompile.rs:+3:24: +3:25 - _0 = const (); // scope 0 at $DIR/const_prop_miscompile.rs:+0:10: +4:2 - StorageDead(_3); // scope 1 at $DIR/const_prop_miscompile.rs:+4:1: +4:2 - StorageDead(_1); // scope 0 at $DIR/const_prop_miscompile.rs:+4:1: +4:2 - return; // scope 0 at $DIR/const_prop_miscompile.rs:+4:2: +4:2 + StorageLive(_1); + _1 = (const 1_i32,); + StorageLive(_2); + _2 = &mut (_1.0: i32); + (*_2) = const 5_i32; + StorageDead(_2); + StorageLive(_3); + StorageLive(_4); + _4 = (_1.0: i32); + _3 = Eq(move _4, const 5_i32); + StorageDead(_4); + _0 = const (); + StorageDead(_3); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/copy-prop/borrowed_local.f.CopyProp.panic-abort.diff b/tests/mir-opt/copy-prop/borrowed_local.f.CopyProp.panic-abort.diff index 00d22c9313e61..46534076c293b 100644 --- a/tests/mir-opt/copy-prop/borrowed_local.f.CopyProp.panic-abort.diff +++ b/tests/mir-opt/copy-prop/borrowed_local.f.CopyProp.panic-abort.diff @@ -2,32 +2,26 @@ + // MIR for `f` after CopyProp fn f() -> bool { - let mut _0: bool; // return place in scope 0 at $DIR/borrowed_local.rs:+0:11: +0:15 - let mut _1: u8; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _2: &u8; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _3: u8; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _4: &u8; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL + let mut _0: bool; + let mut _1: u8; + let mut _2: &u8; + let mut _3: u8; + let mut _4: &u8; bb0: { - _1 = const 5_u8; // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - _2 = &_1; // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - _3 = _1; // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - _4 = &_3; // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - _0 = cmp_ref(_2, _4) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/borrowed_local.rs:+8:13: +8:45 - // mir::Constant - // + span: $DIR/borrowed_local.rs:24:29: 24:36 - // + literal: Const { ty: for<'a, 'b> fn(&'a u8, &'b u8) -> bool {cmp_ref}, val: Value() } + _1 = const 5_u8; + _2 = &_1; + _3 = _1; + _4 = &_3; + _0 = cmp_ref(_2, _4) -> [return: bb1, unwind unreachable]; } bb1: { - _0 = opaque::(_3) -> [return: bb2, unwind unreachable]; // scope 0 at $DIR/borrowed_local.rs:+12:13: +12:38 - // mir::Constant - // + span: $DIR/borrowed_local.rs:28:28: 28:34 - // + literal: Const { ty: fn(u8) -> bool {opaque::}, val: Value() } + _0 = opaque::(_3) -> [return: bb2, unwind unreachable]; } bb2: { - return; // scope 0 at $DIR/borrowed_local.rs:+15:13: +15:21 + return; } } diff --git a/tests/mir-opt/copy-prop/borrowed_local.f.CopyProp.panic-unwind.diff b/tests/mir-opt/copy-prop/borrowed_local.f.CopyProp.panic-unwind.diff index 51707e71661c5..074f827024189 100644 --- a/tests/mir-opt/copy-prop/borrowed_local.f.CopyProp.panic-unwind.diff +++ b/tests/mir-opt/copy-prop/borrowed_local.f.CopyProp.panic-unwind.diff @@ -2,32 +2,26 @@ + // MIR for `f` after CopyProp fn f() -> bool { - let mut _0: bool; // return place in scope 0 at $DIR/borrowed_local.rs:+0:11: +0:15 - let mut _1: u8; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _2: &u8; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _3: u8; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _4: &u8; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL + let mut _0: bool; + let mut _1: u8; + let mut _2: &u8; + let mut _3: u8; + let mut _4: &u8; bb0: { - _1 = const 5_u8; // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - _2 = &_1; // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - _3 = _1; // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - _4 = &_3; // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - _0 = cmp_ref(_2, _4) -> bb1; // scope 0 at $DIR/borrowed_local.rs:+8:13: +8:45 - // mir::Constant - // + span: $DIR/borrowed_local.rs:24:29: 24:36 - // + literal: Const { ty: for<'a, 'b> fn(&'a u8, &'b u8) -> bool {cmp_ref}, val: Value() } + _1 = const 5_u8; + _2 = &_1; + _3 = _1; + _4 = &_3; + _0 = cmp_ref(_2, _4) -> bb1; } bb1: { - _0 = opaque::(_3) -> bb2; // scope 0 at $DIR/borrowed_local.rs:+12:13: +12:38 - // mir::Constant - // + span: $DIR/borrowed_local.rs:28:28: 28:34 - // + literal: Const { ty: fn(u8) -> bool {opaque::}, val: Value() } + _0 = opaque::(_3) -> bb2; } bb2: { - return; // scope 0 at $DIR/borrowed_local.rs:+15:13: +15:21 + return; } } diff --git a/tests/mir-opt/copy-prop/branch.foo.CopyProp.panic-abort.diff b/tests/mir-opt/copy-prop/branch.foo.CopyProp.panic-abort.diff index e52005cd457fd..3334cdf92e7d7 100644 --- a/tests/mir-opt/copy-prop/branch.foo.CopyProp.panic-abort.diff +++ b/tests/mir-opt/copy-prop/branch.foo.CopyProp.panic-abort.diff @@ -2,64 +2,55 @@ + // MIR for `foo` after CopyProp fn foo() -> i32 { - let mut _0: i32; // return place in scope 0 at $DIR/branch.rs:+0:13: +0:16 - let _1: i32; // in scope 0 at $DIR/branch.rs:+1:9: +1:10 - let mut _3: bool; // in scope 0 at $DIR/branch.rs:+3:16: +3:22 - let _4: i32; // in scope 0 at $DIR/branch.rs:+6:9: +6:14 + let mut _0: i32; + let _1: i32; + let mut _3: bool; + let _4: i32; scope 1 { - debug x => _1; // in scope 1 at $DIR/branch.rs:+1:9: +1:10 - let _2: i32; // in scope 1 at $DIR/branch.rs:+3:9: +3:10 + debug x => _1; + let _2: i32; scope 2 { - debug y => _2; // in scope 2 at $DIR/branch.rs:+3:9: +3:10 + debug y => _2; } } bb0: { - StorageLive(_1); // scope 0 at $DIR/branch.rs:+1:9: +1:10 - _1 = val() -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/branch.rs:+1:13: +1:18 - // mir::Constant - // + span: $DIR/branch.rs:14:13: 14:16 - // + literal: Const { ty: fn() -> i32 {val}, val: Value() } + StorageLive(_1); + _1 = val() -> [return: bb1, unwind unreachable]; } bb1: { - StorageLive(_2); // scope 1 at $DIR/branch.rs:+3:9: +3:10 - StorageLive(_3); // scope 1 at $DIR/branch.rs:+3:16: +3:22 - _3 = cond() -> [return: bb2, unwind unreachable]; // scope 1 at $DIR/branch.rs:+3:16: +3:22 - // mir::Constant - // + span: $DIR/branch.rs:16:16: 16:20 - // + literal: Const { ty: fn() -> bool {cond}, val: Value() } + StorageLive(_2); + StorageLive(_3); + _3 = cond() -> [return: bb2, unwind unreachable]; } bb2: { - switchInt(move _3) -> [0: bb4, otherwise: bb3]; // scope 1 at $DIR/branch.rs:+3:16: +3:22 + switchInt(move _3) -> [0: bb4, otherwise: bb3]; } bb3: { - _2 = _1; // scope 1 at $DIR/branch.rs:+4:9: +4:10 - goto -> bb6; // scope 1 at $DIR/branch.rs:+3:13: +8:6 + _2 = _1; + goto -> bb6; } bb4: { - StorageLive(_4); // scope 1 at $DIR/branch.rs:+6:9: +6:14 - _4 = val() -> [return: bb5, unwind unreachable]; // scope 1 at $DIR/branch.rs:+6:9: +6:14 - // mir::Constant - // + span: $DIR/branch.rs:19:9: 19:12 - // + literal: Const { ty: fn() -> i32 {val}, val: Value() } + StorageLive(_4); + _4 = val() -> [return: bb5, unwind unreachable]; } bb5: { - StorageDead(_4); // scope 1 at $DIR/branch.rs:+6:14: +6:15 - _2 = _1; // scope 1 at $DIR/branch.rs:+7:9: +7:10 - goto -> bb6; // scope 1 at $DIR/branch.rs:+3:13: +8:6 + StorageDead(_4); + _2 = _1; + goto -> bb6; } bb6: { - StorageDead(_3); // scope 1 at $DIR/branch.rs:+8:5: +8:6 - _0 = _2; // scope 2 at $DIR/branch.rs:+10:5: +10:6 - StorageDead(_2); // scope 1 at $DIR/branch.rs:+11:1: +11:2 - StorageDead(_1); // scope 0 at $DIR/branch.rs:+11:1: +11:2 - return; // scope 0 at $DIR/branch.rs:+11:2: +11:2 + StorageDead(_3); + _0 = _2; + StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/copy-prop/branch.foo.CopyProp.panic-unwind.diff b/tests/mir-opt/copy-prop/branch.foo.CopyProp.panic-unwind.diff index b78c19d78d045..0dcc5cef7340a 100644 --- a/tests/mir-opt/copy-prop/branch.foo.CopyProp.panic-unwind.diff +++ b/tests/mir-opt/copy-prop/branch.foo.CopyProp.panic-unwind.diff @@ -2,64 +2,55 @@ + // MIR for `foo` after CopyProp fn foo() -> i32 { - let mut _0: i32; // return place in scope 0 at $DIR/branch.rs:+0:13: +0:16 - let _1: i32; // in scope 0 at $DIR/branch.rs:+1:9: +1:10 - let mut _3: bool; // in scope 0 at $DIR/branch.rs:+3:16: +3:22 - let _4: i32; // in scope 0 at $DIR/branch.rs:+6:9: +6:14 + let mut _0: i32; + let _1: i32; + let mut _3: bool; + let _4: i32; scope 1 { - debug x => _1; // in scope 1 at $DIR/branch.rs:+1:9: +1:10 - let _2: i32; // in scope 1 at $DIR/branch.rs:+3:9: +3:10 + debug x => _1; + let _2: i32; scope 2 { - debug y => _2; // in scope 2 at $DIR/branch.rs:+3:9: +3:10 + debug y => _2; } } bb0: { - StorageLive(_1); // scope 0 at $DIR/branch.rs:+1:9: +1:10 - _1 = val() -> bb1; // scope 0 at $DIR/branch.rs:+1:13: +1:18 - // mir::Constant - // + span: $DIR/branch.rs:14:13: 14:16 - // + literal: Const { ty: fn() -> i32 {val}, val: Value() } + StorageLive(_1); + _1 = val() -> bb1; } bb1: { - StorageLive(_2); // scope 1 at $DIR/branch.rs:+3:9: +3:10 - StorageLive(_3); // scope 1 at $DIR/branch.rs:+3:16: +3:22 - _3 = cond() -> bb2; // scope 1 at $DIR/branch.rs:+3:16: +3:22 - // mir::Constant - // + span: $DIR/branch.rs:16:16: 16:20 - // + literal: Const { ty: fn() -> bool {cond}, val: Value() } + StorageLive(_2); + StorageLive(_3); + _3 = cond() -> bb2; } bb2: { - switchInt(move _3) -> [0: bb4, otherwise: bb3]; // scope 1 at $DIR/branch.rs:+3:16: +3:22 + switchInt(move _3) -> [0: bb4, otherwise: bb3]; } bb3: { - _2 = _1; // scope 1 at $DIR/branch.rs:+4:9: +4:10 - goto -> bb6; // scope 1 at $DIR/branch.rs:+3:13: +8:6 + _2 = _1; + goto -> bb6; } bb4: { - StorageLive(_4); // scope 1 at $DIR/branch.rs:+6:9: +6:14 - _4 = val() -> bb5; // scope 1 at $DIR/branch.rs:+6:9: +6:14 - // mir::Constant - // + span: $DIR/branch.rs:19:9: 19:12 - // + literal: Const { ty: fn() -> i32 {val}, val: Value() } + StorageLive(_4); + _4 = val() -> bb5; } bb5: { - StorageDead(_4); // scope 1 at $DIR/branch.rs:+6:14: +6:15 - _2 = _1; // scope 1 at $DIR/branch.rs:+7:9: +7:10 - goto -> bb6; // scope 1 at $DIR/branch.rs:+3:13: +8:6 + StorageDead(_4); + _2 = _1; + goto -> bb6; } bb6: { - StorageDead(_3); // scope 1 at $DIR/branch.rs:+8:5: +8:6 - _0 = _2; // scope 2 at $DIR/branch.rs:+10:5: +10:6 - StorageDead(_2); // scope 1 at $DIR/branch.rs:+11:1: +11:2 - StorageDead(_1); // scope 0 at $DIR/branch.rs:+11:1: +11:2 - return; // scope 0 at $DIR/branch.rs:+11:2: +11:2 + StorageDead(_3); + _0 = _2; + StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/copy-prop/copy_propagation_arg.arg_src.CopyProp.panic-abort.diff b/tests/mir-opt/copy-prop/copy_propagation_arg.arg_src.CopyProp.panic-abort.diff index 1c7b6494d6dcc..70674a912edd2 100644 --- a/tests/mir-opt/copy-prop/copy_propagation_arg.arg_src.CopyProp.panic-abort.diff +++ b/tests/mir-opt/copy-prop/copy_propagation_arg.arg_src.CopyProp.panic-abort.diff @@ -2,22 +2,22 @@ + // MIR for `arg_src` after CopyProp fn arg_src(_1: i32) -> i32 { - debug x => _1; // in scope 0 at $DIR/copy_propagation_arg.rs:+0:12: +0:17 - let mut _0: i32; // return place in scope 0 at $DIR/copy_propagation_arg.rs:+0:27: +0:30 - let _2: i32; // in scope 0 at $DIR/copy_propagation_arg.rs:+1:9: +1:10 + debug x => _1; + let mut _0: i32; + let _2: i32; scope 1 { -- debug y => _2; // in scope 1 at $DIR/copy_propagation_arg.rs:+1:9: +1:10 -+ debug y => _0; // in scope 1 at $DIR/copy_propagation_arg.rs:+1:9: +1:10 +- debug y => _2; ++ debug y => _0; } bb0: { -- StorageLive(_2); // scope 0 at $DIR/copy_propagation_arg.rs:+1:9: +1:10 -- _2 = _1; // scope 0 at $DIR/copy_propagation_arg.rs:+1:13: +1:14 -+ _0 = _1; // scope 0 at $DIR/copy_propagation_arg.rs:+1:13: +1:14 - _1 = const 123_i32; // scope 1 at $DIR/copy_propagation_arg.rs:+2:5: +2:12 -- _0 = _2; // scope 1 at $DIR/copy_propagation_arg.rs:+3:5: +3:6 -- StorageDead(_2); // scope 0 at $DIR/copy_propagation_arg.rs:+4:1: +4:2 - return; // scope 0 at $DIR/copy_propagation_arg.rs:+4:2: +4:2 +- StorageLive(_2); +- _2 = _1; ++ _0 = _1; + _1 = const 123_i32; +- _0 = _2; +- StorageDead(_2); + return; } } diff --git a/tests/mir-opt/copy-prop/copy_propagation_arg.arg_src.CopyProp.panic-unwind.diff b/tests/mir-opt/copy-prop/copy_propagation_arg.arg_src.CopyProp.panic-unwind.diff index 1c7b6494d6dcc..70674a912edd2 100644 --- a/tests/mir-opt/copy-prop/copy_propagation_arg.arg_src.CopyProp.panic-unwind.diff +++ b/tests/mir-opt/copy-prop/copy_propagation_arg.arg_src.CopyProp.panic-unwind.diff @@ -2,22 +2,22 @@ + // MIR for `arg_src` after CopyProp fn arg_src(_1: i32) -> i32 { - debug x => _1; // in scope 0 at $DIR/copy_propagation_arg.rs:+0:12: +0:17 - let mut _0: i32; // return place in scope 0 at $DIR/copy_propagation_arg.rs:+0:27: +0:30 - let _2: i32; // in scope 0 at $DIR/copy_propagation_arg.rs:+1:9: +1:10 + debug x => _1; + let mut _0: i32; + let _2: i32; scope 1 { -- debug y => _2; // in scope 1 at $DIR/copy_propagation_arg.rs:+1:9: +1:10 -+ debug y => _0; // in scope 1 at $DIR/copy_propagation_arg.rs:+1:9: +1:10 +- debug y => _2; ++ debug y => _0; } bb0: { -- StorageLive(_2); // scope 0 at $DIR/copy_propagation_arg.rs:+1:9: +1:10 -- _2 = _1; // scope 0 at $DIR/copy_propagation_arg.rs:+1:13: +1:14 -+ _0 = _1; // scope 0 at $DIR/copy_propagation_arg.rs:+1:13: +1:14 - _1 = const 123_i32; // scope 1 at $DIR/copy_propagation_arg.rs:+2:5: +2:12 -- _0 = _2; // scope 1 at $DIR/copy_propagation_arg.rs:+3:5: +3:6 -- StorageDead(_2); // scope 0 at $DIR/copy_propagation_arg.rs:+4:1: +4:2 - return; // scope 0 at $DIR/copy_propagation_arg.rs:+4:2: +4:2 +- StorageLive(_2); +- _2 = _1; ++ _0 = _1; + _1 = const 123_i32; +- _0 = _2; +- StorageDead(_2); + return; } } diff --git a/tests/mir-opt/copy-prop/copy_propagation_arg.bar.CopyProp.panic-abort.diff b/tests/mir-opt/copy-prop/copy_propagation_arg.bar.CopyProp.panic-abort.diff index 3c494af01c0a5..9ec014e2b256b 100644 --- a/tests/mir-opt/copy-prop/copy_propagation_arg.bar.CopyProp.panic-abort.diff +++ b/tests/mir-opt/copy-prop/copy_propagation_arg.bar.CopyProp.panic-abort.diff @@ -2,27 +2,24 @@ + // MIR for `bar` after CopyProp fn bar(_1: u8) -> () { - debug x => _1; // in scope 0 at $DIR/copy_propagation_arg.rs:+0:8: +0:13 - let mut _0: (); // return place in scope 0 at $DIR/copy_propagation_arg.rs:+0:19: +0:19 - let _2: u8; // in scope 0 at $DIR/copy_propagation_arg.rs:+1:5: +1:13 - let mut _3: u8; // in scope 0 at $DIR/copy_propagation_arg.rs:+1:11: +1:12 + debug x => _1; + let mut _0: (); + let _2: u8; + let mut _3: u8; bb0: { - StorageLive(_2); // scope 0 at $DIR/copy_propagation_arg.rs:+1:5: +1:13 - StorageLive(_3); // scope 0 at $DIR/copy_propagation_arg.rs:+1:11: +1:12 - _3 = _1; // scope 0 at $DIR/copy_propagation_arg.rs:+1:11: +1:12 - _2 = dummy(move _3) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/copy_propagation_arg.rs:+1:5: +1:13 - // mir::Constant - // + span: $DIR/copy_propagation_arg.rs:17:5: 17:10 - // + literal: Const { ty: fn(u8) -> u8 {dummy}, val: Value() } + StorageLive(_2); + StorageLive(_3); + _3 = _1; + _2 = dummy(move _3) -> [return: bb1, unwind unreachable]; } bb1: { - StorageDead(_3); // scope 0 at $DIR/copy_propagation_arg.rs:+1:12: +1:13 - StorageDead(_2); // scope 0 at $DIR/copy_propagation_arg.rs:+1:13: +1:14 - _1 = const 5_u8; // scope 0 at $DIR/copy_propagation_arg.rs:+2:5: +2:10 - _0 = const (); // scope 0 at $DIR/copy_propagation_arg.rs:+0:19: +3:2 - return; // scope 0 at $DIR/copy_propagation_arg.rs:+3:2: +3:2 + StorageDead(_3); + StorageDead(_2); + _1 = const 5_u8; + _0 = const (); + return; } } diff --git a/tests/mir-opt/copy-prop/copy_propagation_arg.bar.CopyProp.panic-unwind.diff b/tests/mir-opt/copy-prop/copy_propagation_arg.bar.CopyProp.panic-unwind.diff index 24bca32207fa9..95c1c12ee6920 100644 --- a/tests/mir-opt/copy-prop/copy_propagation_arg.bar.CopyProp.panic-unwind.diff +++ b/tests/mir-opt/copy-prop/copy_propagation_arg.bar.CopyProp.panic-unwind.diff @@ -2,27 +2,24 @@ + // MIR for `bar` after CopyProp fn bar(_1: u8) -> () { - debug x => _1; // in scope 0 at $DIR/copy_propagation_arg.rs:+0:8: +0:13 - let mut _0: (); // return place in scope 0 at $DIR/copy_propagation_arg.rs:+0:19: +0:19 - let _2: u8; // in scope 0 at $DIR/copy_propagation_arg.rs:+1:5: +1:13 - let mut _3: u8; // in scope 0 at $DIR/copy_propagation_arg.rs:+1:11: +1:12 + debug x => _1; + let mut _0: (); + let _2: u8; + let mut _3: u8; bb0: { - StorageLive(_2); // scope 0 at $DIR/copy_propagation_arg.rs:+1:5: +1:13 - StorageLive(_3); // scope 0 at $DIR/copy_propagation_arg.rs:+1:11: +1:12 - _3 = _1; // scope 0 at $DIR/copy_propagation_arg.rs:+1:11: +1:12 - _2 = dummy(move _3) -> bb1; // scope 0 at $DIR/copy_propagation_arg.rs:+1:5: +1:13 - // mir::Constant - // + span: $DIR/copy_propagation_arg.rs:17:5: 17:10 - // + literal: Const { ty: fn(u8) -> u8 {dummy}, val: Value() } + StorageLive(_2); + StorageLive(_3); + _3 = _1; + _2 = dummy(move _3) -> bb1; } bb1: { - StorageDead(_3); // scope 0 at $DIR/copy_propagation_arg.rs:+1:12: +1:13 - StorageDead(_2); // scope 0 at $DIR/copy_propagation_arg.rs:+1:13: +1:14 - _1 = const 5_u8; // scope 0 at $DIR/copy_propagation_arg.rs:+2:5: +2:10 - _0 = const (); // scope 0 at $DIR/copy_propagation_arg.rs:+0:19: +3:2 - return; // scope 0 at $DIR/copy_propagation_arg.rs:+3:2: +3:2 + StorageDead(_3); + StorageDead(_2); + _1 = const 5_u8; + _0 = const (); + return; } } diff --git a/tests/mir-opt/copy-prop/copy_propagation_arg.baz.CopyProp.panic-abort.diff b/tests/mir-opt/copy-prop/copy_propagation_arg.baz.CopyProp.panic-abort.diff index 7ab6ebb7d53e0..71facf91df78c 100644 --- a/tests/mir-opt/copy-prop/copy_propagation_arg.baz.CopyProp.panic-abort.diff +++ b/tests/mir-opt/copy-prop/copy_propagation_arg.baz.CopyProp.panic-abort.diff @@ -2,17 +2,17 @@ + // MIR for `baz` after CopyProp fn baz(_1: i32) -> i32 { - debug x => _1; // in scope 0 at $DIR/copy_propagation_arg.rs:+0:8: +0:13 - let mut _0: i32; // return place in scope 0 at $DIR/copy_propagation_arg.rs:+0:23: +0:26 - let mut _2: i32; // in scope 0 at $DIR/copy_propagation_arg.rs:+2:9: +2:10 + debug x => _1; + let mut _0: i32; + let mut _2: i32; bb0: { - StorageLive(_2); // scope 0 at $DIR/copy_propagation_arg.rs:+2:9: +2:10 - _2 = _1; // scope 0 at $DIR/copy_propagation_arg.rs:+2:9: +2:10 - _1 = move _2; // scope 0 at $DIR/copy_propagation_arg.rs:+2:5: +2:10 - StorageDead(_2); // scope 0 at $DIR/copy_propagation_arg.rs:+2:9: +2:10 - _0 = _1; // scope 0 at $DIR/copy_propagation_arg.rs:+3:5: +3:6 - return; // scope 0 at $DIR/copy_propagation_arg.rs:+4:2: +4:2 + StorageLive(_2); + _2 = _1; + _1 = move _2; + StorageDead(_2); + _0 = _1; + return; } } diff --git a/tests/mir-opt/copy-prop/copy_propagation_arg.baz.CopyProp.panic-unwind.diff b/tests/mir-opt/copy-prop/copy_propagation_arg.baz.CopyProp.panic-unwind.diff index 7ab6ebb7d53e0..71facf91df78c 100644 --- a/tests/mir-opt/copy-prop/copy_propagation_arg.baz.CopyProp.panic-unwind.diff +++ b/tests/mir-opt/copy-prop/copy_propagation_arg.baz.CopyProp.panic-unwind.diff @@ -2,17 +2,17 @@ + // MIR for `baz` after CopyProp fn baz(_1: i32) -> i32 { - debug x => _1; // in scope 0 at $DIR/copy_propagation_arg.rs:+0:8: +0:13 - let mut _0: i32; // return place in scope 0 at $DIR/copy_propagation_arg.rs:+0:23: +0:26 - let mut _2: i32; // in scope 0 at $DIR/copy_propagation_arg.rs:+2:9: +2:10 + debug x => _1; + let mut _0: i32; + let mut _2: i32; bb0: { - StorageLive(_2); // scope 0 at $DIR/copy_propagation_arg.rs:+2:9: +2:10 - _2 = _1; // scope 0 at $DIR/copy_propagation_arg.rs:+2:9: +2:10 - _1 = move _2; // scope 0 at $DIR/copy_propagation_arg.rs:+2:5: +2:10 - StorageDead(_2); // scope 0 at $DIR/copy_propagation_arg.rs:+2:9: +2:10 - _0 = _1; // scope 0 at $DIR/copy_propagation_arg.rs:+3:5: +3:6 - return; // scope 0 at $DIR/copy_propagation_arg.rs:+4:2: +4:2 + StorageLive(_2); + _2 = _1; + _1 = move _2; + StorageDead(_2); + _0 = _1; + return; } } diff --git a/tests/mir-opt/copy-prop/copy_propagation_arg.foo.CopyProp.panic-abort.diff b/tests/mir-opt/copy-prop/copy_propagation_arg.foo.CopyProp.panic-abort.diff index 5845be331a5e3..81b73e18763fd 100644 --- a/tests/mir-opt/copy-prop/copy_propagation_arg.foo.CopyProp.panic-abort.diff +++ b/tests/mir-opt/copy-prop/copy_propagation_arg.foo.CopyProp.panic-abort.diff @@ -2,27 +2,24 @@ + // MIR for `foo` after CopyProp fn foo(_1: u8) -> () { - debug x => _1; // in scope 0 at $DIR/copy_propagation_arg.rs:+0:8: +0:13 - let mut _0: (); // return place in scope 0 at $DIR/copy_propagation_arg.rs:+0:19: +0:19 - let mut _2: u8; // in scope 0 at $DIR/copy_propagation_arg.rs:+2:9: +2:17 - let mut _3: u8; // in scope 0 at $DIR/copy_propagation_arg.rs:+2:15: +2:16 + debug x => _1; + let mut _0: (); + let mut _2: u8; + let mut _3: u8; bb0: { - StorageLive(_2); // scope 0 at $DIR/copy_propagation_arg.rs:+2:9: +2:17 - StorageLive(_3); // scope 0 at $DIR/copy_propagation_arg.rs:+2:15: +2:16 - _3 = _1; // scope 0 at $DIR/copy_propagation_arg.rs:+2:15: +2:16 - _2 = dummy(move _3) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/copy_propagation_arg.rs:+2:9: +2:17 - // mir::Constant - // + span: $DIR/copy_propagation_arg.rs:12:9: 12:14 - // + literal: Const { ty: fn(u8) -> u8 {dummy}, val: Value() } + StorageLive(_2); + StorageLive(_3); + _3 = _1; + _2 = dummy(move _3) -> [return: bb1, unwind unreachable]; } bb1: { - StorageDead(_3); // scope 0 at $DIR/copy_propagation_arg.rs:+2:16: +2:17 - _1 = move _2; // scope 0 at $DIR/copy_propagation_arg.rs:+2:5: +2:17 - StorageDead(_2); // scope 0 at $DIR/copy_propagation_arg.rs:+2:16: +2:17 - _0 = const (); // scope 0 at $DIR/copy_propagation_arg.rs:+0:19: +3:2 - return; // scope 0 at $DIR/copy_propagation_arg.rs:+3:2: +3:2 + StorageDead(_3); + _1 = move _2; + StorageDead(_2); + _0 = const (); + return; } } diff --git a/tests/mir-opt/copy-prop/copy_propagation_arg.foo.CopyProp.panic-unwind.diff b/tests/mir-opt/copy-prop/copy_propagation_arg.foo.CopyProp.panic-unwind.diff index 87708f3400543..e16d6220ef2c6 100644 --- a/tests/mir-opt/copy-prop/copy_propagation_arg.foo.CopyProp.panic-unwind.diff +++ b/tests/mir-opt/copy-prop/copy_propagation_arg.foo.CopyProp.panic-unwind.diff @@ -2,27 +2,24 @@ + // MIR for `foo` after CopyProp fn foo(_1: u8) -> () { - debug x => _1; // in scope 0 at $DIR/copy_propagation_arg.rs:+0:8: +0:13 - let mut _0: (); // return place in scope 0 at $DIR/copy_propagation_arg.rs:+0:19: +0:19 - let mut _2: u8; // in scope 0 at $DIR/copy_propagation_arg.rs:+2:9: +2:17 - let mut _3: u8; // in scope 0 at $DIR/copy_propagation_arg.rs:+2:15: +2:16 + debug x => _1; + let mut _0: (); + let mut _2: u8; + let mut _3: u8; bb0: { - StorageLive(_2); // scope 0 at $DIR/copy_propagation_arg.rs:+2:9: +2:17 - StorageLive(_3); // scope 0 at $DIR/copy_propagation_arg.rs:+2:15: +2:16 - _3 = _1; // scope 0 at $DIR/copy_propagation_arg.rs:+2:15: +2:16 - _2 = dummy(move _3) -> bb1; // scope 0 at $DIR/copy_propagation_arg.rs:+2:9: +2:17 - // mir::Constant - // + span: $DIR/copy_propagation_arg.rs:12:9: 12:14 - // + literal: Const { ty: fn(u8) -> u8 {dummy}, val: Value() } + StorageLive(_2); + StorageLive(_3); + _3 = _1; + _2 = dummy(move _3) -> bb1; } bb1: { - StorageDead(_3); // scope 0 at $DIR/copy_propagation_arg.rs:+2:16: +2:17 - _1 = move _2; // scope 0 at $DIR/copy_propagation_arg.rs:+2:5: +2:17 - StorageDead(_2); // scope 0 at $DIR/copy_propagation_arg.rs:+2:16: +2:17 - _0 = const (); // scope 0 at $DIR/copy_propagation_arg.rs:+0:19: +3:2 - return; // scope 0 at $DIR/copy_propagation_arg.rs:+3:2: +3:2 + StorageDead(_3); + _1 = move _2; + StorageDead(_2); + _0 = const (); + return; } } diff --git a/tests/mir-opt/copy-prop/custom_move_arg.f.CopyProp.panic-abort.diff b/tests/mir-opt/copy-prop/custom_move_arg.f.CopyProp.panic-abort.diff index ab13676908525..7ba8530105179 100644 --- a/tests/mir-opt/copy-prop/custom_move_arg.f.CopyProp.panic-abort.diff +++ b/tests/mir-opt/copy-prop/custom_move_arg.f.CopyProp.panic-abort.diff @@ -2,30 +2,24 @@ + // MIR for `f` after CopyProp fn f(_1: NotCopy) -> () { - let mut _0: (); // return place in scope 0 at $DIR/custom_move_arg.rs:+0:19: +0:19 - let mut _2: NotCopy; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _3: NotCopy; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL + let mut _0: (); + let mut _2: NotCopy; + let mut _3: NotCopy; bb0: { -- _2 = _1; // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL -- _0 = opaque::(move _1) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/custom_move_arg.rs:+3:9: +3:41 -+ _0 = opaque::(_1) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/custom_move_arg.rs:+3:9: +3:41 - // mir::Constant - // + span: $DIR/custom_move_arg.rs:16:24: 16:30 - // + literal: Const { ty: fn(NotCopy) {opaque::}, val: Value() } +- _2 = _1; +- _0 = opaque::(move _1) -> [return: bb1, unwind unreachable]; ++ _0 = opaque::(_1) -> [return: bb1, unwind unreachable]; } bb1: { -- _3 = move _2; // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL -- _0 = opaque::(_3) -> [return: bb2, unwind unreachable]; // scope 0 at $DIR/custom_move_arg.rs:+7:9: +7:35 -+ _0 = opaque::(_1) -> [return: bb2, unwind unreachable]; // scope 0 at $DIR/custom_move_arg.rs:+7:9: +7:35 - // mir::Constant - // + span: $DIR/custom_move_arg.rs:20:24: 20:30 - // + literal: Const { ty: fn(NotCopy) {opaque::}, val: Value() } +- _3 = move _2; +- _0 = opaque::(_3) -> [return: bb2, unwind unreachable]; ++ _0 = opaque::(_1) -> [return: bb2, unwind unreachable]; } bb2: { - return; // scope 0 at $DIR/custom_move_arg.rs:+10:9: +10:17 + return; } } diff --git a/tests/mir-opt/copy-prop/custom_move_arg.f.CopyProp.panic-unwind.diff b/tests/mir-opt/copy-prop/custom_move_arg.f.CopyProp.panic-unwind.diff index 160f47bdd8f7e..2d7e34f2d6e3c 100644 --- a/tests/mir-opt/copy-prop/custom_move_arg.f.CopyProp.panic-unwind.diff +++ b/tests/mir-opt/copy-prop/custom_move_arg.f.CopyProp.panic-unwind.diff @@ -2,30 +2,24 @@ + // MIR for `f` after CopyProp fn f(_1: NotCopy) -> () { - let mut _0: (); // return place in scope 0 at $DIR/custom_move_arg.rs:+0:19: +0:19 - let mut _2: NotCopy; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _3: NotCopy; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL + let mut _0: (); + let mut _2: NotCopy; + let mut _3: NotCopy; bb0: { -- _2 = _1; // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL -- _0 = opaque::(move _1) -> bb1; // scope 0 at $DIR/custom_move_arg.rs:+3:9: +3:41 -+ _0 = opaque::(_1) -> bb1; // scope 0 at $DIR/custom_move_arg.rs:+3:9: +3:41 - // mir::Constant - // + span: $DIR/custom_move_arg.rs:16:24: 16:30 - // + literal: Const { ty: fn(NotCopy) {opaque::}, val: Value() } +- _2 = _1; +- _0 = opaque::(move _1) -> bb1; ++ _0 = opaque::(_1) -> bb1; } bb1: { -- _3 = move _2; // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL -- _0 = opaque::(_3) -> bb2; // scope 0 at $DIR/custom_move_arg.rs:+7:9: +7:35 -+ _0 = opaque::(_1) -> bb2; // scope 0 at $DIR/custom_move_arg.rs:+7:9: +7:35 - // mir::Constant - // + span: $DIR/custom_move_arg.rs:20:24: 20:30 - // + literal: Const { ty: fn(NotCopy) {opaque::}, val: Value() } +- _3 = move _2; +- _0 = opaque::(_3) -> bb2; ++ _0 = opaque::(_1) -> bb2; } bb2: { - return; // scope 0 at $DIR/custom_move_arg.rs:+10:9: +10:17 + return; } } diff --git a/tests/mir-opt/copy-prop/cycle.main.CopyProp.panic-abort.diff b/tests/mir-opt/copy-prop/cycle.main.CopyProp.panic-abort.diff index 37158af7648c3..8f97c4e439e9d 100644 --- a/tests/mir-opt/copy-prop/cycle.main.CopyProp.panic-abort.diff +++ b/tests/mir-opt/copy-prop/cycle.main.CopyProp.panic-abort.diff @@ -2,59 +2,53 @@ + // MIR for `main` after CopyProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/cycle.rs:+0:11: +0:11 - let mut _1: i32; // in scope 0 at $DIR/cycle.rs:+1:9: +1:14 - let mut _4: i32; // in scope 0 at $DIR/cycle.rs:+4:9: +4:10 - let _5: (); // in scope 0 at $DIR/cycle.rs:+6:5: +6:12 - let mut _6: i32; // in scope 0 at $DIR/cycle.rs:+6:10: +6:11 + let mut _0: (); + let mut _1: i32; + let mut _4: i32; + let _5: (); + let mut _6: i32; scope 1 { - debug x => _1; // in scope 1 at $DIR/cycle.rs:+1:9: +1:14 - let _2: i32; // in scope 1 at $DIR/cycle.rs:+2:9: +2:10 + debug x => _1; + let _2: i32; scope 2 { - debug y => _2; // in scope 2 at $DIR/cycle.rs:+2:9: +2:10 - let _3: i32; // in scope 2 at $DIR/cycle.rs:+3:9: +3:10 + debug y => _2; + let _3: i32; scope 3 { -- debug z => _3; // in scope 3 at $DIR/cycle.rs:+3:9: +3:10 -+ debug z => _2; // in scope 3 at $DIR/cycle.rs:+3:9: +3:10 +- debug z => _3; ++ debug z => _2; } } } bb0: { - StorageLive(_1); // scope 0 at $DIR/cycle.rs:+1:9: +1:14 - _1 = val() -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/cycle.rs:+1:17: +1:22 - // mir::Constant - // + span: $DIR/cycle.rs:10:17: 10:20 - // + literal: Const { ty: fn() -> i32 {val}, val: Value() } + StorageLive(_1); + _1 = val() -> [return: bb1, unwind unreachable]; } bb1: { -- StorageLive(_2); // scope 1 at $DIR/cycle.rs:+2:9: +2:10 - _2 = _1; // scope 1 at $DIR/cycle.rs:+2:13: +2:14 -- StorageLive(_3); // scope 2 at $DIR/cycle.rs:+3:9: +3:10 -- _3 = _2; // scope 2 at $DIR/cycle.rs:+3:13: +3:14 -- StorageLive(_4); // scope 3 at $DIR/cycle.rs:+4:9: +4:10 -- _4 = _3; // scope 3 at $DIR/cycle.rs:+4:9: +4:10 -- _1 = move _4; // scope 3 at $DIR/cycle.rs:+4:5: +4:10 -- StorageDead(_4); // scope 3 at $DIR/cycle.rs:+4:9: +4:10 -+ _1 = _2; // scope 3 at $DIR/cycle.rs:+4:5: +4:10 - StorageLive(_5); // scope 3 at $DIR/cycle.rs:+6:5: +6:12 - StorageLive(_6); // scope 3 at $DIR/cycle.rs:+6:10: +6:11 - _6 = _1; // scope 3 at $DIR/cycle.rs:+6:10: +6:11 - _5 = std::mem::drop::(move _6) -> [return: bb2, unwind unreachable]; // scope 3 at $DIR/cycle.rs:+6:5: +6:12 - // mir::Constant - // + span: $DIR/cycle.rs:15:5: 15:9 - // + literal: Const { ty: fn(i32) {std::mem::drop::}, val: Value() } +- StorageLive(_2); + _2 = _1; +- StorageLive(_3); +- _3 = _2; +- StorageLive(_4); +- _4 = _3; +- _1 = move _4; +- StorageDead(_4); ++ _1 = _2; + StorageLive(_5); + StorageLive(_6); + _6 = _1; + _5 = std::mem::drop::(move _6) -> [return: bb2, unwind unreachable]; } bb2: { - StorageDead(_6); // scope 3 at $DIR/cycle.rs:+6:11: +6:12 - StorageDead(_5); // scope 3 at $DIR/cycle.rs:+6:12: +6:13 - _0 = const (); // scope 0 at $DIR/cycle.rs:+0:11: +7:2 -- StorageDead(_3); // scope 2 at $DIR/cycle.rs:+7:1: +7:2 -- StorageDead(_2); // scope 1 at $DIR/cycle.rs:+7:1: +7:2 - StorageDead(_1); // scope 0 at $DIR/cycle.rs:+7:1: +7:2 - return; // scope 0 at $DIR/cycle.rs:+7:2: +7:2 + StorageDead(_6); + StorageDead(_5); + _0 = const (); +- StorageDead(_3); +- StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/copy-prop/cycle.main.CopyProp.panic-unwind.diff b/tests/mir-opt/copy-prop/cycle.main.CopyProp.panic-unwind.diff index 23d92ed1ac5b9..bf9e941c7b653 100644 --- a/tests/mir-opt/copy-prop/cycle.main.CopyProp.panic-unwind.diff +++ b/tests/mir-opt/copy-prop/cycle.main.CopyProp.panic-unwind.diff @@ -2,59 +2,53 @@ + // MIR for `main` after CopyProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/cycle.rs:+0:11: +0:11 - let mut _1: i32; // in scope 0 at $DIR/cycle.rs:+1:9: +1:14 - let mut _4: i32; // in scope 0 at $DIR/cycle.rs:+4:9: +4:10 - let _5: (); // in scope 0 at $DIR/cycle.rs:+6:5: +6:12 - let mut _6: i32; // in scope 0 at $DIR/cycle.rs:+6:10: +6:11 + let mut _0: (); + let mut _1: i32; + let mut _4: i32; + let _5: (); + let mut _6: i32; scope 1 { - debug x => _1; // in scope 1 at $DIR/cycle.rs:+1:9: +1:14 - let _2: i32; // in scope 1 at $DIR/cycle.rs:+2:9: +2:10 + debug x => _1; + let _2: i32; scope 2 { - debug y => _2; // in scope 2 at $DIR/cycle.rs:+2:9: +2:10 - let _3: i32; // in scope 2 at $DIR/cycle.rs:+3:9: +3:10 + debug y => _2; + let _3: i32; scope 3 { -- debug z => _3; // in scope 3 at $DIR/cycle.rs:+3:9: +3:10 -+ debug z => _2; // in scope 3 at $DIR/cycle.rs:+3:9: +3:10 +- debug z => _3; ++ debug z => _2; } } } bb0: { - StorageLive(_1); // scope 0 at $DIR/cycle.rs:+1:9: +1:14 - _1 = val() -> bb1; // scope 0 at $DIR/cycle.rs:+1:17: +1:22 - // mir::Constant - // + span: $DIR/cycle.rs:10:17: 10:20 - // + literal: Const { ty: fn() -> i32 {val}, val: Value() } + StorageLive(_1); + _1 = val() -> bb1; } bb1: { -- StorageLive(_2); // scope 1 at $DIR/cycle.rs:+2:9: +2:10 - _2 = _1; // scope 1 at $DIR/cycle.rs:+2:13: +2:14 -- StorageLive(_3); // scope 2 at $DIR/cycle.rs:+3:9: +3:10 -- _3 = _2; // scope 2 at $DIR/cycle.rs:+3:13: +3:14 -- StorageLive(_4); // scope 3 at $DIR/cycle.rs:+4:9: +4:10 -- _4 = _3; // scope 3 at $DIR/cycle.rs:+4:9: +4:10 -- _1 = move _4; // scope 3 at $DIR/cycle.rs:+4:5: +4:10 -- StorageDead(_4); // scope 3 at $DIR/cycle.rs:+4:9: +4:10 -+ _1 = _2; // scope 3 at $DIR/cycle.rs:+4:5: +4:10 - StorageLive(_5); // scope 3 at $DIR/cycle.rs:+6:5: +6:12 - StorageLive(_6); // scope 3 at $DIR/cycle.rs:+6:10: +6:11 - _6 = _1; // scope 3 at $DIR/cycle.rs:+6:10: +6:11 - _5 = std::mem::drop::(move _6) -> bb2; // scope 3 at $DIR/cycle.rs:+6:5: +6:12 - // mir::Constant - // + span: $DIR/cycle.rs:15:5: 15:9 - // + literal: Const { ty: fn(i32) {std::mem::drop::}, val: Value() } +- StorageLive(_2); + _2 = _1; +- StorageLive(_3); +- _3 = _2; +- StorageLive(_4); +- _4 = _3; +- _1 = move _4; +- StorageDead(_4); ++ _1 = _2; + StorageLive(_5); + StorageLive(_6); + _6 = _1; + _5 = std::mem::drop::(move _6) -> bb2; } bb2: { - StorageDead(_6); // scope 3 at $DIR/cycle.rs:+6:11: +6:12 - StorageDead(_5); // scope 3 at $DIR/cycle.rs:+6:12: +6:13 - _0 = const (); // scope 0 at $DIR/cycle.rs:+0:11: +7:2 -- StorageDead(_3); // scope 2 at $DIR/cycle.rs:+7:1: +7:2 -- StorageDead(_2); // scope 1 at $DIR/cycle.rs:+7:1: +7:2 - StorageDead(_1); // scope 0 at $DIR/cycle.rs:+7:1: +7:2 - return; // scope 0 at $DIR/cycle.rs:+7:2: +7:2 + StorageDead(_6); + StorageDead(_5); + _0 = const (); +- StorageDead(_3); +- StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/copy-prop/dead_stores_79191.f.CopyProp.after.panic-abort.mir b/tests/mir-opt/copy-prop/dead_stores_79191.f.CopyProp.after.panic-abort.mir index 8de0a56c58cd6..02b88d1400353 100644 --- a/tests/mir-opt/copy-prop/dead_stores_79191.f.CopyProp.after.panic-abort.mir +++ b/tests/mir-opt/copy-prop/dead_stores_79191.f.CopyProp.after.panic-abort.mir @@ -1,29 +1,26 @@ // MIR for `f` after CopyProp fn f(_1: usize) -> usize { - debug a => _1; // in scope 0 at $DIR/dead_stores_79191.rs:+0:6: +0:11 - let mut _0: usize; // return place in scope 0 at $DIR/dead_stores_79191.rs:+0:23: +0:28 - let _2: usize; // in scope 0 at $DIR/dead_stores_79191.rs:+1:9: +1:10 - let mut _3: usize; // in scope 0 at $DIR/dead_stores_79191.rs:+3:9: +3:10 - let mut _4: usize; // in scope 0 at $DIR/dead_stores_79191.rs:+4:8: +4:9 + debug a => _1; + let mut _0: usize; + let _2: usize; + let mut _3: usize; + let mut _4: usize; scope 1 { - debug b => _2; // in scope 1 at $DIR/dead_stores_79191.rs:+1:9: +1:10 + debug b => _2; } bb0: { - _2 = _1; // scope 0 at $DIR/dead_stores_79191.rs:+1:13: +1:14 - _1 = const 5_usize; // scope 1 at $DIR/dead_stores_79191.rs:+2:5: +2:10 - _1 = _2; // scope 1 at $DIR/dead_stores_79191.rs:+3:5: +3:10 - StorageLive(_4); // scope 1 at $DIR/dead_stores_79191.rs:+4:8: +4:9 - _4 = _1; // scope 1 at $DIR/dead_stores_79191.rs:+4:8: +4:9 - _0 = id::(move _4) -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/dead_stores_79191.rs:+4:5: +4:10 - // mir::Constant - // + span: $DIR/dead_stores_79191.rs:13:5: 13:7 - // + literal: Const { ty: fn(usize) -> usize {id::}, val: Value() } + _2 = _1; + _1 = const 5_usize; + _1 = _2; + StorageLive(_4); + _4 = _1; + _0 = id::(move _4) -> [return: bb1, unwind unreachable]; } bb1: { - StorageDead(_4); // scope 1 at $DIR/dead_stores_79191.rs:+4:9: +4:10 - return; // scope 0 at $DIR/dead_stores_79191.rs:+5:2: +5:2 + StorageDead(_4); + return; } } diff --git a/tests/mir-opt/copy-prop/dead_stores_79191.f.CopyProp.after.panic-unwind.mir b/tests/mir-opt/copy-prop/dead_stores_79191.f.CopyProp.after.panic-unwind.mir index c56418d8893f2..617e57d884bfa 100644 --- a/tests/mir-opt/copy-prop/dead_stores_79191.f.CopyProp.after.panic-unwind.mir +++ b/tests/mir-opt/copy-prop/dead_stores_79191.f.CopyProp.after.panic-unwind.mir @@ -1,29 +1,26 @@ // MIR for `f` after CopyProp fn f(_1: usize) -> usize { - debug a => _1; // in scope 0 at $DIR/dead_stores_79191.rs:+0:6: +0:11 - let mut _0: usize; // return place in scope 0 at $DIR/dead_stores_79191.rs:+0:23: +0:28 - let _2: usize; // in scope 0 at $DIR/dead_stores_79191.rs:+1:9: +1:10 - let mut _3: usize; // in scope 0 at $DIR/dead_stores_79191.rs:+3:9: +3:10 - let mut _4: usize; // in scope 0 at $DIR/dead_stores_79191.rs:+4:8: +4:9 + debug a => _1; + let mut _0: usize; + let _2: usize; + let mut _3: usize; + let mut _4: usize; scope 1 { - debug b => _2; // in scope 1 at $DIR/dead_stores_79191.rs:+1:9: +1:10 + debug b => _2; } bb0: { - _2 = _1; // scope 0 at $DIR/dead_stores_79191.rs:+1:13: +1:14 - _1 = const 5_usize; // scope 1 at $DIR/dead_stores_79191.rs:+2:5: +2:10 - _1 = _2; // scope 1 at $DIR/dead_stores_79191.rs:+3:5: +3:10 - StorageLive(_4); // scope 1 at $DIR/dead_stores_79191.rs:+4:8: +4:9 - _4 = _1; // scope 1 at $DIR/dead_stores_79191.rs:+4:8: +4:9 - _0 = id::(move _4) -> bb1; // scope 1 at $DIR/dead_stores_79191.rs:+4:5: +4:10 - // mir::Constant - // + span: $DIR/dead_stores_79191.rs:13:5: 13:7 - // + literal: Const { ty: fn(usize) -> usize {id::}, val: Value() } + _2 = _1; + _1 = const 5_usize; + _1 = _2; + StorageLive(_4); + _4 = _1; + _0 = id::(move _4) -> bb1; } bb1: { - StorageDead(_4); // scope 1 at $DIR/dead_stores_79191.rs:+4:9: +4:10 - return; // scope 0 at $DIR/dead_stores_79191.rs:+5:2: +5:2 + StorageDead(_4); + return; } } diff --git a/tests/mir-opt/copy-prop/dead_stores_better.f.CopyProp.after.panic-abort.mir b/tests/mir-opt/copy-prop/dead_stores_better.f.CopyProp.after.panic-abort.mir index 606b94f3e70f4..02b88d1400353 100644 --- a/tests/mir-opt/copy-prop/dead_stores_better.f.CopyProp.after.panic-abort.mir +++ b/tests/mir-opt/copy-prop/dead_stores_better.f.CopyProp.after.panic-abort.mir @@ -1,29 +1,26 @@ // MIR for `f` after CopyProp fn f(_1: usize) -> usize { - debug a => _1; // in scope 0 at $DIR/dead_stores_better.rs:+0:10: +0:15 - let mut _0: usize; // return place in scope 0 at $DIR/dead_stores_better.rs:+0:27: +0:32 - let _2: usize; // in scope 0 at $DIR/dead_stores_better.rs:+1:9: +1:10 - let mut _3: usize; // in scope 0 at $DIR/dead_stores_better.rs:+3:9: +3:10 - let mut _4: usize; // in scope 0 at $DIR/dead_stores_better.rs:+4:8: +4:9 + debug a => _1; + let mut _0: usize; + let _2: usize; + let mut _3: usize; + let mut _4: usize; scope 1 { - debug b => _2; // in scope 1 at $DIR/dead_stores_better.rs:+1:9: +1:10 + debug b => _2; } bb0: { - _2 = _1; // scope 0 at $DIR/dead_stores_better.rs:+1:13: +1:14 - _1 = const 5_usize; // scope 1 at $DIR/dead_stores_better.rs:+2:5: +2:10 - _1 = _2; // scope 1 at $DIR/dead_stores_better.rs:+3:5: +3:10 - StorageLive(_4); // scope 1 at $DIR/dead_stores_better.rs:+4:8: +4:9 - _4 = _1; // scope 1 at $DIR/dead_stores_better.rs:+4:8: +4:9 - _0 = id::(move _4) -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/dead_stores_better.rs:+4:5: +4:10 - // mir::Constant - // + span: $DIR/dead_stores_better.rs:17:5: 17:7 - // + literal: Const { ty: fn(usize) -> usize {id::}, val: Value() } + _2 = _1; + _1 = const 5_usize; + _1 = _2; + StorageLive(_4); + _4 = _1; + _0 = id::(move _4) -> [return: bb1, unwind unreachable]; } bb1: { - StorageDead(_4); // scope 1 at $DIR/dead_stores_better.rs:+4:9: +4:10 - return; // scope 0 at $DIR/dead_stores_better.rs:+5:2: +5:2 + StorageDead(_4); + return; } } diff --git a/tests/mir-opt/copy-prop/dead_stores_better.f.CopyProp.after.panic-unwind.mir b/tests/mir-opt/copy-prop/dead_stores_better.f.CopyProp.after.panic-unwind.mir index f355421732e45..617e57d884bfa 100644 --- a/tests/mir-opt/copy-prop/dead_stores_better.f.CopyProp.after.panic-unwind.mir +++ b/tests/mir-opt/copy-prop/dead_stores_better.f.CopyProp.after.panic-unwind.mir @@ -1,29 +1,26 @@ // MIR for `f` after CopyProp fn f(_1: usize) -> usize { - debug a => _1; // in scope 0 at $DIR/dead_stores_better.rs:+0:10: +0:15 - let mut _0: usize; // return place in scope 0 at $DIR/dead_stores_better.rs:+0:27: +0:32 - let _2: usize; // in scope 0 at $DIR/dead_stores_better.rs:+1:9: +1:10 - let mut _3: usize; // in scope 0 at $DIR/dead_stores_better.rs:+3:9: +3:10 - let mut _4: usize; // in scope 0 at $DIR/dead_stores_better.rs:+4:8: +4:9 + debug a => _1; + let mut _0: usize; + let _2: usize; + let mut _3: usize; + let mut _4: usize; scope 1 { - debug b => _2; // in scope 1 at $DIR/dead_stores_better.rs:+1:9: +1:10 + debug b => _2; } bb0: { - _2 = _1; // scope 0 at $DIR/dead_stores_better.rs:+1:13: +1:14 - _1 = const 5_usize; // scope 1 at $DIR/dead_stores_better.rs:+2:5: +2:10 - _1 = _2; // scope 1 at $DIR/dead_stores_better.rs:+3:5: +3:10 - StorageLive(_4); // scope 1 at $DIR/dead_stores_better.rs:+4:8: +4:9 - _4 = _1; // scope 1 at $DIR/dead_stores_better.rs:+4:8: +4:9 - _0 = id::(move _4) -> bb1; // scope 1 at $DIR/dead_stores_better.rs:+4:5: +4:10 - // mir::Constant - // + span: $DIR/dead_stores_better.rs:17:5: 17:7 - // + literal: Const { ty: fn(usize) -> usize {id::}, val: Value() } + _2 = _1; + _1 = const 5_usize; + _1 = _2; + StorageLive(_4); + _4 = _1; + _0 = id::(move _4) -> bb1; } bb1: { - StorageDead(_4); // scope 1 at $DIR/dead_stores_better.rs:+4:9: +4:10 - return; // scope 0 at $DIR/dead_stores_better.rs:+5:2: +5:2 + StorageDead(_4); + return; } } diff --git a/tests/mir-opt/copy-prop/issue_107511.main.CopyProp.panic-abort.diff b/tests/mir-opt/copy-prop/issue_107511.main.CopyProp.panic-abort.diff index 701cdda0fceb5..a16d79d0e64f6 100644 --- a/tests/mir-opt/copy-prop/issue_107511.main.CopyProp.panic-abort.diff +++ b/tests/mir-opt/copy-prop/issue_107511.main.CopyProp.panic-abort.diff @@ -2,137 +2,128 @@ + // MIR for `main` after CopyProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/issue_107511.rs:+0:11: +0:11 - let mut _1: i32; // in scope 0 at $DIR/issue_107511.rs:+1:9: +1:16 - let mut _3: std::ops::Range; // in scope 0 at $DIR/issue_107511.rs:+6:14: +6:24 - let mut _4: std::ops::Range; // in scope 0 at $DIR/issue_107511.rs:+6:14: +6:24 - let mut _5: usize; // in scope 0 at $DIR/issue_107511.rs:+6:17: +6:24 - let mut _6: &[i32]; // in scope 0 at $DIR/issue_107511.rs:+6:17: +6:24 - let mut _7: &[i32; 4]; // in scope 0 at $DIR/issue_107511.rs:+6:17: +6:24 - let mut _9: (); // in scope 0 at $DIR/issue_107511.rs:+0:1: +9:2 - let _10: (); // in scope 0 at $DIR/issue_107511.rs:+6:14: +6:24 - let mut _11: std::option::Option; // in scope 0 at $DIR/issue_107511.rs:+6:14: +6:24 - let mut _12: &mut std::ops::Range; // in scope 0 at $DIR/issue_107511.rs:+6:14: +6:24 - let mut _13: &mut std::ops::Range; // in scope 0 at $DIR/issue_107511.rs:+6:14: +6:24 - let mut _14: isize; // in scope 0 at $DIR/issue_107511.rs:+6:5: +8:6 - let mut _15: !; // in scope 0 at $DIR/issue_107511.rs:+6:5: +8:6 - let mut _17: i32; // in scope 0 at $DIR/issue_107511.rs:+7:16: +7:20 - let _18: usize; // in scope 0 at $DIR/issue_107511.rs:+7:18: +7:19 - let mut _19: usize; // in scope 0 at $DIR/issue_107511.rs:+7:16: +7:20 - let mut _20: bool; // in scope 0 at $DIR/issue_107511.rs:+7:16: +7:20 + let mut _0: (); + let mut _1: i32; + let mut _3: std::ops::Range; + let mut _4: std::ops::Range; + let mut _5: usize; + let mut _6: &[i32]; + let mut _7: &[i32; 4]; + let mut _9: (); + let _10: (); + let mut _11: std::option::Option; + let mut _12: &mut std::ops::Range; + let mut _13: &mut std::ops::Range; + let mut _14: isize; + let mut _15: !; + let mut _17: i32; + let _18: usize; + let mut _19: usize; + let mut _20: bool; scope 1 { - debug sum => _1; // in scope 1 at $DIR/issue_107511.rs:+1:9: +1:16 - let _2: [i32; 4]; // in scope 1 at $DIR/issue_107511.rs:+2:9: +2:10 + debug sum => _1; + let _2: [i32; 4]; scope 2 { - debug a => _2; // in scope 2 at $DIR/issue_107511.rs:+2:9: +2:10 - let mut _8: std::ops::Range; // in scope 2 at $DIR/issue_107511.rs:+6:14: +6:24 + debug a => _2; + let mut _8: std::ops::Range; scope 3 { - debug iter => _8; // in scope 3 at $DIR/issue_107511.rs:+6:14: +6:24 - let _16: usize; // in scope 3 at $DIR/issue_107511.rs:+6:9: +6:10 + debug iter => _8; + let _16: usize; scope 4 { - debug i => _16; // in scope 4 at $DIR/issue_107511.rs:+6:9: +6:10 + debug i => _16; } } } } bb0: { - StorageLive(_1); // scope 0 at $DIR/issue_107511.rs:+1:9: +1:16 - _1 = const 0_i32; // scope 0 at $DIR/issue_107511.rs:+1:19: +1:20 - StorageLive(_2); // scope 1 at $DIR/issue_107511.rs:+2:9: +2:10 - _2 = [const 0_i32, const 10_i32, const 20_i32, const 30_i32]; // scope 1 at $DIR/issue_107511.rs:+2:13: +2:28 - StorageLive(_3); // scope 2 at $DIR/issue_107511.rs:+6:14: +6:24 - StorageLive(_4); // scope 2 at $DIR/issue_107511.rs:+6:14: +6:24 - StorageLive(_5); // scope 2 at $DIR/issue_107511.rs:+6:17: +6:24 - StorageLive(_6); // scope 2 at $DIR/issue_107511.rs:+6:17: +6:24 - StorageLive(_7); // scope 2 at $DIR/issue_107511.rs:+6:17: +6:24 - _7 = &_2; // scope 2 at $DIR/issue_107511.rs:+6:17: +6:24 - _6 = move _7 as &[i32] (Pointer(Unsize)); // scope 2 at $DIR/issue_107511.rs:+6:17: +6:24 - StorageDead(_7); // scope 2 at $DIR/issue_107511.rs:+6:17: +6:18 - _5 = core::slice::::len(move _6) -> [return: bb1, unwind unreachable]; // scope 2 at $DIR/issue_107511.rs:+6:17: +6:24 - // mir::Constant - // + span: $DIR/issue_107511.rs:11:19: 11:22 - // + literal: Const { ty: for<'a> fn(&'a [i32]) -> usize {core::slice::::len}, val: Value() } + StorageLive(_1); + _1 = const 0_i32; + StorageLive(_2); + _2 = [const 0_i32, const 10_i32, const 20_i32, const 30_i32]; + StorageLive(_3); + StorageLive(_4); + StorageLive(_5); + StorageLive(_6); + StorageLive(_7); + _7 = &_2; + _6 = move _7 as &[i32] (Pointer(Unsize)); + StorageDead(_7); + _5 = core::slice::::len(move _6) -> [return: bb1, unwind unreachable]; } bb1: { - StorageDead(_6); // scope 2 at $DIR/issue_107511.rs:+6:23: +6:24 - _4 = std::ops::Range:: { start: const 0_usize, end: move _5 }; // scope 2 at $DIR/issue_107511.rs:+6:14: +6:24 - StorageDead(_5); // scope 2 at $DIR/issue_107511.rs:+6:23: +6:24 - _3 = as IntoIterator>::into_iter(move _4) -> [return: bb2, unwind unreachable]; // scope 2 at $DIR/issue_107511.rs:+6:14: +6:24 - // mir::Constant - // + span: $DIR/issue_107511.rs:11:14: 11:24 - // + literal: Const { ty: fn(std::ops::Range) -> as IntoIterator>::IntoIter { as IntoIterator>::into_iter}, val: Value() } + StorageDead(_6); + _4 = std::ops::Range:: { start: const 0_usize, end: move _5 }; + StorageDead(_5); + _3 = as IntoIterator>::into_iter(move _4) -> [return: bb2, unwind unreachable]; } bb2: { - StorageDead(_4); // scope 2 at $DIR/issue_107511.rs:+6:23: +6:24 - StorageLive(_8); // scope 2 at $DIR/issue_107511.rs:+6:14: +6:24 - _8 = move _3; // scope 2 at $DIR/issue_107511.rs:+6:14: +6:24 - goto -> bb3; // scope 3 at $DIR/issue_107511.rs:+6:5: +8:6 + StorageDead(_4); + StorageLive(_8); + _8 = move _3; + goto -> bb3; } bb3: { -- StorageLive(_10); // scope 3 at $DIR/issue_107511.rs:+6:14: +6:24 - StorageLive(_11); // scope 3 at $DIR/issue_107511.rs:+6:14: +6:24 - StorageLive(_12); // scope 3 at $DIR/issue_107511.rs:+6:14: +6:24 - StorageLive(_13); // scope 3 at $DIR/issue_107511.rs:+6:14: +6:24 - _13 = &mut _8; // scope 3 at $DIR/issue_107511.rs:+6:14: +6:24 - _12 = &mut (*_13); // scope 3 at $DIR/issue_107511.rs:+6:14: +6:24 - _11 = as Iterator>::next(move _12) -> [return: bb4, unwind unreachable]; // scope 3 at $DIR/issue_107511.rs:+6:14: +6:24 - // mir::Constant - // + span: $DIR/issue_107511.rs:11:14: 11:24 - // + literal: Const { ty: for<'a> fn(&'a mut std::ops::Range) -> Option< as Iterator>::Item> { as Iterator>::next}, val: Value() } +- StorageLive(_10); + StorageLive(_11); + StorageLive(_12); + StorageLive(_13); + _13 = &mut _8; + _12 = &mut (*_13); + _11 = as Iterator>::next(move _12) -> [return: bb4, unwind unreachable]; } bb4: { - StorageDead(_12); // scope 3 at $DIR/issue_107511.rs:+6:23: +6:24 - _14 = discriminant(_11); // scope 3 at $DIR/issue_107511.rs:+6:14: +6:24 - switchInt(move _14) -> [0: bb7, 1: bb5, otherwise: bb6]; // scope 3 at $DIR/issue_107511.rs:+6:14: +6:24 + StorageDead(_12); + _14 = discriminant(_11); + switchInt(move _14) -> [0: bb7, 1: bb5, otherwise: bb6]; } bb5: { -- StorageLive(_16); // scope 3 at $DIR/issue_107511.rs:+6:9: +6:10 - _16 = ((_11 as Some).0: usize); // scope 3 at $DIR/issue_107511.rs:+6:9: +6:10 - StorageLive(_17); // scope 4 at $DIR/issue_107511.rs:+7:16: +7:20 -- StorageLive(_18); // scope 4 at $DIR/issue_107511.rs:+7:18: +7:19 -- _18 = _16; // scope 4 at $DIR/issue_107511.rs:+7:18: +7:19 - _19 = Len(_2); // scope 4 at $DIR/issue_107511.rs:+7:16: +7:20 -- _20 = Lt(_18, _19); // scope 4 at $DIR/issue_107511.rs:+7:16: +7:20 -- assert(move _20, "index out of bounds: the length is {} but the index is {}", move _19, _18) -> [success: bb8, unwind unreachable]; // scope 4 at $DIR/issue_107511.rs:+7:16: +7:20 -+ _20 = Lt(_16, _19); // scope 4 at $DIR/issue_107511.rs:+7:16: +7:20 -+ assert(move _20, "index out of bounds: the length is {} but the index is {}", move _19, _16) -> [success: bb8, unwind unreachable]; // scope 4 at $DIR/issue_107511.rs:+7:16: +7:20 +- StorageLive(_16); + _16 = ((_11 as Some).0: usize); + StorageLive(_17); +- StorageLive(_18); +- _18 = _16; + _19 = Len(_2); +- _20 = Lt(_18, _19); +- assert(move _20, "index out of bounds: the length is {} but the index is {}", move _19, _18) -> [success: bb8, unwind unreachable]; ++ _20 = Lt(_16, _19); ++ assert(move _20, "index out of bounds: the length is {} but the index is {}", move _19, _16) -> [success: bb8, unwind unreachable]; } bb6: { - unreachable; // scope 3 at $DIR/issue_107511.rs:+6:14: +6:24 + unreachable; } bb7: { - _0 = const (); // scope 3 at $DIR/issue_107511.rs:+6:5: +8:6 - StorageDead(_13); // scope 3 at $DIR/issue_107511.rs:+8:5: +8:6 - StorageDead(_11); // scope 3 at $DIR/issue_107511.rs:+8:5: +8:6 -- StorageDead(_10); // scope 3 at $DIR/issue_107511.rs:+8:5: +8:6 - StorageDead(_8); // scope 2 at $DIR/issue_107511.rs:+8:5: +8:6 - StorageDead(_3); // scope 2 at $DIR/issue_107511.rs:+8:5: +8:6 - StorageDead(_2); // scope 1 at $DIR/issue_107511.rs:+9:1: +9:2 - StorageDead(_1); // scope 0 at $DIR/issue_107511.rs:+9:1: +9:2 - return; // scope 0 at $DIR/issue_107511.rs:+9:2: +9:2 + _0 = const (); + StorageDead(_13); + StorageDead(_11); +- StorageDead(_10); + StorageDead(_8); + StorageDead(_3); + StorageDead(_2); + StorageDead(_1); + return; } bb8: { -- _17 = _2[_18]; // scope 4 at $DIR/issue_107511.rs:+7:16: +7:20 -+ _17 = _2[_16]; // scope 4 at $DIR/issue_107511.rs:+7:16: +7:20 - _1 = Add(_1, move _17); // scope 4 at $DIR/issue_107511.rs:+7:9: +7:20 - StorageDead(_17); // scope 4 at $DIR/issue_107511.rs:+7:19: +7:20 -- StorageDead(_18); // scope 4 at $DIR/issue_107511.rs:+7:20: +7:21 -- _10 = const (); // scope 4 at $DIR/issue_107511.rs:+6:25: +8:6 -- StorageDead(_16); // scope 3 at $DIR/issue_107511.rs:+8:5: +8:6 - StorageDead(_13); // scope 3 at $DIR/issue_107511.rs:+8:5: +8:6 - StorageDead(_11); // scope 3 at $DIR/issue_107511.rs:+8:5: +8:6 -- StorageDead(_10); // scope 3 at $DIR/issue_107511.rs:+8:5: +8:6 -- _9 = const (); // scope 3 at $DIR/issue_107511.rs:+6:5: +8:6 - goto -> bb3; // scope 3 at $DIR/issue_107511.rs:+6:5: +8:6 +- _17 = _2[_18]; ++ _17 = _2[_16]; + _1 = Add(_1, move _17); + StorageDead(_17); +- StorageDead(_18); +- _10 = const (); +- StorageDead(_16); + StorageDead(_13); + StorageDead(_11); +- StorageDead(_10); +- _9 = const (); + goto -> bb3; } } diff --git a/tests/mir-opt/copy-prop/issue_107511.main.CopyProp.panic-unwind.diff b/tests/mir-opt/copy-prop/issue_107511.main.CopyProp.panic-unwind.diff index e09ccb8311998..69f399bf1fa19 100644 --- a/tests/mir-opt/copy-prop/issue_107511.main.CopyProp.panic-unwind.diff +++ b/tests/mir-opt/copy-prop/issue_107511.main.CopyProp.panic-unwind.diff @@ -2,137 +2,128 @@ + // MIR for `main` after CopyProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/issue_107511.rs:+0:11: +0:11 - let mut _1: i32; // in scope 0 at $DIR/issue_107511.rs:+1:9: +1:16 - let mut _3: std::ops::Range; // in scope 0 at $DIR/issue_107511.rs:+6:14: +6:24 - let mut _4: std::ops::Range; // in scope 0 at $DIR/issue_107511.rs:+6:14: +6:24 - let mut _5: usize; // in scope 0 at $DIR/issue_107511.rs:+6:17: +6:24 - let mut _6: &[i32]; // in scope 0 at $DIR/issue_107511.rs:+6:17: +6:24 - let mut _7: &[i32; 4]; // in scope 0 at $DIR/issue_107511.rs:+6:17: +6:24 - let mut _9: (); // in scope 0 at $DIR/issue_107511.rs:+0:1: +9:2 - let _10: (); // in scope 0 at $DIR/issue_107511.rs:+6:14: +6:24 - let mut _11: std::option::Option; // in scope 0 at $DIR/issue_107511.rs:+6:14: +6:24 - let mut _12: &mut std::ops::Range; // in scope 0 at $DIR/issue_107511.rs:+6:14: +6:24 - let mut _13: &mut std::ops::Range; // in scope 0 at $DIR/issue_107511.rs:+6:14: +6:24 - let mut _14: isize; // in scope 0 at $DIR/issue_107511.rs:+6:5: +8:6 - let mut _15: !; // in scope 0 at $DIR/issue_107511.rs:+6:5: +8:6 - let mut _17: i32; // in scope 0 at $DIR/issue_107511.rs:+7:16: +7:20 - let _18: usize; // in scope 0 at $DIR/issue_107511.rs:+7:18: +7:19 - let mut _19: usize; // in scope 0 at $DIR/issue_107511.rs:+7:16: +7:20 - let mut _20: bool; // in scope 0 at $DIR/issue_107511.rs:+7:16: +7:20 + let mut _0: (); + let mut _1: i32; + let mut _3: std::ops::Range; + let mut _4: std::ops::Range; + let mut _5: usize; + let mut _6: &[i32]; + let mut _7: &[i32; 4]; + let mut _9: (); + let _10: (); + let mut _11: std::option::Option; + let mut _12: &mut std::ops::Range; + let mut _13: &mut std::ops::Range; + let mut _14: isize; + let mut _15: !; + let mut _17: i32; + let _18: usize; + let mut _19: usize; + let mut _20: bool; scope 1 { - debug sum => _1; // in scope 1 at $DIR/issue_107511.rs:+1:9: +1:16 - let _2: [i32; 4]; // in scope 1 at $DIR/issue_107511.rs:+2:9: +2:10 + debug sum => _1; + let _2: [i32; 4]; scope 2 { - debug a => _2; // in scope 2 at $DIR/issue_107511.rs:+2:9: +2:10 - let mut _8: std::ops::Range; // in scope 2 at $DIR/issue_107511.rs:+6:14: +6:24 + debug a => _2; + let mut _8: std::ops::Range; scope 3 { - debug iter => _8; // in scope 3 at $DIR/issue_107511.rs:+6:14: +6:24 - let _16: usize; // in scope 3 at $DIR/issue_107511.rs:+6:9: +6:10 + debug iter => _8; + let _16: usize; scope 4 { - debug i => _16; // in scope 4 at $DIR/issue_107511.rs:+6:9: +6:10 + debug i => _16; } } } } bb0: { - StorageLive(_1); // scope 0 at $DIR/issue_107511.rs:+1:9: +1:16 - _1 = const 0_i32; // scope 0 at $DIR/issue_107511.rs:+1:19: +1:20 - StorageLive(_2); // scope 1 at $DIR/issue_107511.rs:+2:9: +2:10 - _2 = [const 0_i32, const 10_i32, const 20_i32, const 30_i32]; // scope 1 at $DIR/issue_107511.rs:+2:13: +2:28 - StorageLive(_3); // scope 2 at $DIR/issue_107511.rs:+6:14: +6:24 - StorageLive(_4); // scope 2 at $DIR/issue_107511.rs:+6:14: +6:24 - StorageLive(_5); // scope 2 at $DIR/issue_107511.rs:+6:17: +6:24 - StorageLive(_6); // scope 2 at $DIR/issue_107511.rs:+6:17: +6:24 - StorageLive(_7); // scope 2 at $DIR/issue_107511.rs:+6:17: +6:24 - _7 = &_2; // scope 2 at $DIR/issue_107511.rs:+6:17: +6:24 - _6 = move _7 as &[i32] (Pointer(Unsize)); // scope 2 at $DIR/issue_107511.rs:+6:17: +6:24 - StorageDead(_7); // scope 2 at $DIR/issue_107511.rs:+6:17: +6:18 - _5 = core::slice::::len(move _6) -> bb1; // scope 2 at $DIR/issue_107511.rs:+6:17: +6:24 - // mir::Constant - // + span: $DIR/issue_107511.rs:11:19: 11:22 - // + literal: Const { ty: for<'a> fn(&'a [i32]) -> usize {core::slice::::len}, val: Value() } + StorageLive(_1); + _1 = const 0_i32; + StorageLive(_2); + _2 = [const 0_i32, const 10_i32, const 20_i32, const 30_i32]; + StorageLive(_3); + StorageLive(_4); + StorageLive(_5); + StorageLive(_6); + StorageLive(_7); + _7 = &_2; + _6 = move _7 as &[i32] (Pointer(Unsize)); + StorageDead(_7); + _5 = core::slice::::len(move _6) -> bb1; } bb1: { - StorageDead(_6); // scope 2 at $DIR/issue_107511.rs:+6:23: +6:24 - _4 = std::ops::Range:: { start: const 0_usize, end: move _5 }; // scope 2 at $DIR/issue_107511.rs:+6:14: +6:24 - StorageDead(_5); // scope 2 at $DIR/issue_107511.rs:+6:23: +6:24 - _3 = as IntoIterator>::into_iter(move _4) -> bb2; // scope 2 at $DIR/issue_107511.rs:+6:14: +6:24 - // mir::Constant - // + span: $DIR/issue_107511.rs:11:14: 11:24 - // + literal: Const { ty: fn(std::ops::Range) -> as IntoIterator>::IntoIter { as IntoIterator>::into_iter}, val: Value() } + StorageDead(_6); + _4 = std::ops::Range:: { start: const 0_usize, end: move _5 }; + StorageDead(_5); + _3 = as IntoIterator>::into_iter(move _4) -> bb2; } bb2: { - StorageDead(_4); // scope 2 at $DIR/issue_107511.rs:+6:23: +6:24 - StorageLive(_8); // scope 2 at $DIR/issue_107511.rs:+6:14: +6:24 - _8 = move _3; // scope 2 at $DIR/issue_107511.rs:+6:14: +6:24 - goto -> bb3; // scope 3 at $DIR/issue_107511.rs:+6:5: +8:6 + StorageDead(_4); + StorageLive(_8); + _8 = move _3; + goto -> bb3; } bb3: { -- StorageLive(_10); // scope 3 at $DIR/issue_107511.rs:+6:14: +6:24 - StorageLive(_11); // scope 3 at $DIR/issue_107511.rs:+6:14: +6:24 - StorageLive(_12); // scope 3 at $DIR/issue_107511.rs:+6:14: +6:24 - StorageLive(_13); // scope 3 at $DIR/issue_107511.rs:+6:14: +6:24 - _13 = &mut _8; // scope 3 at $DIR/issue_107511.rs:+6:14: +6:24 - _12 = &mut (*_13); // scope 3 at $DIR/issue_107511.rs:+6:14: +6:24 - _11 = as Iterator>::next(move _12) -> bb4; // scope 3 at $DIR/issue_107511.rs:+6:14: +6:24 - // mir::Constant - // + span: $DIR/issue_107511.rs:11:14: 11:24 - // + literal: Const { ty: for<'a> fn(&'a mut std::ops::Range) -> Option< as Iterator>::Item> { as Iterator>::next}, val: Value() } +- StorageLive(_10); + StorageLive(_11); + StorageLive(_12); + StorageLive(_13); + _13 = &mut _8; + _12 = &mut (*_13); + _11 = as Iterator>::next(move _12) -> bb4; } bb4: { - StorageDead(_12); // scope 3 at $DIR/issue_107511.rs:+6:23: +6:24 - _14 = discriminant(_11); // scope 3 at $DIR/issue_107511.rs:+6:14: +6:24 - switchInt(move _14) -> [0: bb7, 1: bb5, otherwise: bb6]; // scope 3 at $DIR/issue_107511.rs:+6:14: +6:24 + StorageDead(_12); + _14 = discriminant(_11); + switchInt(move _14) -> [0: bb7, 1: bb5, otherwise: bb6]; } bb5: { -- StorageLive(_16); // scope 3 at $DIR/issue_107511.rs:+6:9: +6:10 - _16 = ((_11 as Some).0: usize); // scope 3 at $DIR/issue_107511.rs:+6:9: +6:10 - StorageLive(_17); // scope 4 at $DIR/issue_107511.rs:+7:16: +7:20 -- StorageLive(_18); // scope 4 at $DIR/issue_107511.rs:+7:18: +7:19 -- _18 = _16; // scope 4 at $DIR/issue_107511.rs:+7:18: +7:19 - _19 = Len(_2); // scope 4 at $DIR/issue_107511.rs:+7:16: +7:20 -- _20 = Lt(_18, _19); // scope 4 at $DIR/issue_107511.rs:+7:16: +7:20 -- assert(move _20, "index out of bounds: the length is {} but the index is {}", move _19, _18) -> bb8; // scope 4 at $DIR/issue_107511.rs:+7:16: +7:20 -+ _20 = Lt(_16, _19); // scope 4 at $DIR/issue_107511.rs:+7:16: +7:20 -+ assert(move _20, "index out of bounds: the length is {} but the index is {}", move _19, _16) -> bb8; // scope 4 at $DIR/issue_107511.rs:+7:16: +7:20 +- StorageLive(_16); + _16 = ((_11 as Some).0: usize); + StorageLive(_17); +- StorageLive(_18); +- _18 = _16; + _19 = Len(_2); +- _20 = Lt(_18, _19); +- assert(move _20, "index out of bounds: the length is {} but the index is {}", move _19, _18) -> bb8; ++ _20 = Lt(_16, _19); ++ assert(move _20, "index out of bounds: the length is {} but the index is {}", move _19, _16) -> bb8; } bb6: { - unreachable; // scope 3 at $DIR/issue_107511.rs:+6:14: +6:24 + unreachable; } bb7: { - _0 = const (); // scope 3 at $DIR/issue_107511.rs:+6:5: +8:6 - StorageDead(_13); // scope 3 at $DIR/issue_107511.rs:+8:5: +8:6 - StorageDead(_11); // scope 3 at $DIR/issue_107511.rs:+8:5: +8:6 -- StorageDead(_10); // scope 3 at $DIR/issue_107511.rs:+8:5: +8:6 - StorageDead(_8); // scope 2 at $DIR/issue_107511.rs:+8:5: +8:6 - StorageDead(_3); // scope 2 at $DIR/issue_107511.rs:+8:5: +8:6 - StorageDead(_2); // scope 1 at $DIR/issue_107511.rs:+9:1: +9:2 - StorageDead(_1); // scope 0 at $DIR/issue_107511.rs:+9:1: +9:2 - return; // scope 0 at $DIR/issue_107511.rs:+9:2: +9:2 + _0 = const (); + StorageDead(_13); + StorageDead(_11); +- StorageDead(_10); + StorageDead(_8); + StorageDead(_3); + StorageDead(_2); + StorageDead(_1); + return; } bb8: { -- _17 = _2[_18]; // scope 4 at $DIR/issue_107511.rs:+7:16: +7:20 -+ _17 = _2[_16]; // scope 4 at $DIR/issue_107511.rs:+7:16: +7:20 - _1 = Add(_1, move _17); // scope 4 at $DIR/issue_107511.rs:+7:9: +7:20 - StorageDead(_17); // scope 4 at $DIR/issue_107511.rs:+7:19: +7:20 -- StorageDead(_18); // scope 4 at $DIR/issue_107511.rs:+7:20: +7:21 -- _10 = const (); // scope 4 at $DIR/issue_107511.rs:+6:25: +8:6 -- StorageDead(_16); // scope 3 at $DIR/issue_107511.rs:+8:5: +8:6 - StorageDead(_13); // scope 3 at $DIR/issue_107511.rs:+8:5: +8:6 - StorageDead(_11); // scope 3 at $DIR/issue_107511.rs:+8:5: +8:6 -- StorageDead(_10); // scope 3 at $DIR/issue_107511.rs:+8:5: +8:6 -- _9 = const (); // scope 3 at $DIR/issue_107511.rs:+6:5: +8:6 - goto -> bb3; // scope 3 at $DIR/issue_107511.rs:+6:5: +8:6 +- _17 = _2[_18]; ++ _17 = _2[_16]; + _1 = Add(_1, move _17); + StorageDead(_17); +- StorageDead(_18); +- _10 = const (); +- StorageDead(_16); + StorageDead(_13); + StorageDead(_11); +- StorageDead(_10); +- _9 = const (); + goto -> bb3; } } diff --git a/tests/mir-opt/copy-prop/move_arg.f.CopyProp.panic-abort.diff b/tests/mir-opt/copy-prop/move_arg.f.CopyProp.panic-abort.diff index b1ab5b542065c..cf04f213efb91 100644 --- a/tests/mir-opt/copy-prop/move_arg.f.CopyProp.panic-abort.diff +++ b/tests/mir-opt/copy-prop/move_arg.f.CopyProp.panic-abort.diff @@ -2,39 +2,36 @@ + // MIR for `f` after CopyProp fn f(_1: T) -> () { - debug a => _1; // in scope 0 at $DIR/move_arg.rs:+0:19: +0:20 - let mut _0: (); // return place in scope 0 at $DIR/move_arg.rs:+0:25: +0:25 - let _2: T; // in scope 0 at $DIR/move_arg.rs:+1:9: +1:10 - let _3: (); // in scope 0 at $DIR/move_arg.rs:+2:5: +2:12 - let mut _4: T; // in scope 0 at $DIR/move_arg.rs:+2:7: +2:8 - let mut _5: T; // in scope 0 at $DIR/move_arg.rs:+2:10: +2:11 + debug a => _1; + let mut _0: (); + let _2: T; + let _3: (); + let mut _4: T; + let mut _5: T; scope 1 { -- debug b => _2; // in scope 1 at $DIR/move_arg.rs:+1:9: +1:10 -+ debug b => _1; // in scope 1 at $DIR/move_arg.rs:+1:9: +1:10 +- debug b => _2; ++ debug b => _1; } bb0: { -- StorageLive(_2); // scope 0 at $DIR/move_arg.rs:+1:9: +1:10 -- _2 = _1; // scope 0 at $DIR/move_arg.rs:+1:13: +1:14 - StorageLive(_3); // scope 1 at $DIR/move_arg.rs:+2:5: +2:12 -- StorageLive(_4); // scope 1 at $DIR/move_arg.rs:+2:7: +2:8 -- _4 = _1; // scope 1 at $DIR/move_arg.rs:+2:7: +2:8 -- StorageLive(_5); // scope 1 at $DIR/move_arg.rs:+2:10: +2:11 -- _5 = _2; // scope 1 at $DIR/move_arg.rs:+2:10: +2:11 -- _3 = g::(move _4, move _5) -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/move_arg.rs:+2:5: +2:12 -+ _3 = g::(_1, _1) -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/move_arg.rs:+2:5: +2:12 - // mir::Constant - // + span: $DIR/move_arg.rs:8:5: 8:6 - // + literal: Const { ty: fn(T, T) {g::}, val: Value() } +- StorageLive(_2); +- _2 = _1; + StorageLive(_3); +- StorageLive(_4); +- _4 = _1; +- StorageLive(_5); +- _5 = _2; +- _3 = g::(move _4, move _5) -> [return: bb1, unwind unreachable]; ++ _3 = g::(_1, _1) -> [return: bb1, unwind unreachable]; } bb1: { -- StorageDead(_5); // scope 1 at $DIR/move_arg.rs:+2:11: +2:12 -- StorageDead(_4); // scope 1 at $DIR/move_arg.rs:+2:11: +2:12 - StorageDead(_3); // scope 1 at $DIR/move_arg.rs:+2:12: +2:13 - _0 = const (); // scope 0 at $DIR/move_arg.rs:+0:25: +3:2 -- StorageDead(_2); // scope 0 at $DIR/move_arg.rs:+3:1: +3:2 - return; // scope 0 at $DIR/move_arg.rs:+3:2: +3:2 +- StorageDead(_5); +- StorageDead(_4); + StorageDead(_3); + _0 = const (); +- StorageDead(_2); + return; } } diff --git a/tests/mir-opt/copy-prop/move_arg.f.CopyProp.panic-unwind.diff b/tests/mir-opt/copy-prop/move_arg.f.CopyProp.panic-unwind.diff index 650bd66a7d73e..cbbf6686b0492 100644 --- a/tests/mir-opt/copy-prop/move_arg.f.CopyProp.panic-unwind.diff +++ b/tests/mir-opt/copy-prop/move_arg.f.CopyProp.panic-unwind.diff @@ -2,39 +2,36 @@ + // MIR for `f` after CopyProp fn f(_1: T) -> () { - debug a => _1; // in scope 0 at $DIR/move_arg.rs:+0:19: +0:20 - let mut _0: (); // return place in scope 0 at $DIR/move_arg.rs:+0:25: +0:25 - let _2: T; // in scope 0 at $DIR/move_arg.rs:+1:9: +1:10 - let _3: (); // in scope 0 at $DIR/move_arg.rs:+2:5: +2:12 - let mut _4: T; // in scope 0 at $DIR/move_arg.rs:+2:7: +2:8 - let mut _5: T; // in scope 0 at $DIR/move_arg.rs:+2:10: +2:11 + debug a => _1; + let mut _0: (); + let _2: T; + let _3: (); + let mut _4: T; + let mut _5: T; scope 1 { -- debug b => _2; // in scope 1 at $DIR/move_arg.rs:+1:9: +1:10 -+ debug b => _1; // in scope 1 at $DIR/move_arg.rs:+1:9: +1:10 +- debug b => _2; ++ debug b => _1; } bb0: { -- StorageLive(_2); // scope 0 at $DIR/move_arg.rs:+1:9: +1:10 -- _2 = _1; // scope 0 at $DIR/move_arg.rs:+1:13: +1:14 - StorageLive(_3); // scope 1 at $DIR/move_arg.rs:+2:5: +2:12 -- StorageLive(_4); // scope 1 at $DIR/move_arg.rs:+2:7: +2:8 -- _4 = _1; // scope 1 at $DIR/move_arg.rs:+2:7: +2:8 -- StorageLive(_5); // scope 1 at $DIR/move_arg.rs:+2:10: +2:11 -- _5 = _2; // scope 1 at $DIR/move_arg.rs:+2:10: +2:11 -- _3 = g::(move _4, move _5) -> bb1; // scope 1 at $DIR/move_arg.rs:+2:5: +2:12 -+ _3 = g::(_1, _1) -> bb1; // scope 1 at $DIR/move_arg.rs:+2:5: +2:12 - // mir::Constant - // + span: $DIR/move_arg.rs:8:5: 8:6 - // + literal: Const { ty: fn(T, T) {g::}, val: Value() } +- StorageLive(_2); +- _2 = _1; + StorageLive(_3); +- StorageLive(_4); +- _4 = _1; +- StorageLive(_5); +- _5 = _2; +- _3 = g::(move _4, move _5) -> bb1; ++ _3 = g::(_1, _1) -> bb1; } bb1: { -- StorageDead(_5); // scope 1 at $DIR/move_arg.rs:+2:11: +2:12 -- StorageDead(_4); // scope 1 at $DIR/move_arg.rs:+2:11: +2:12 - StorageDead(_3); // scope 1 at $DIR/move_arg.rs:+2:12: +2:13 - _0 = const (); // scope 0 at $DIR/move_arg.rs:+0:25: +3:2 -- StorageDead(_2); // scope 0 at $DIR/move_arg.rs:+3:1: +3:2 - return; // scope 0 at $DIR/move_arg.rs:+3:2: +3:2 +- StorageDead(_5); +- StorageDead(_4); + StorageDead(_3); + _0 = const (); +- StorageDead(_2); + return; } } diff --git a/tests/mir-opt/copy-prop/move_projection.f.CopyProp.panic-abort.diff b/tests/mir-opt/copy-prop/move_projection.f.CopyProp.panic-abort.diff index 0871f64efedff..b2b89968d70b0 100644 --- a/tests/mir-opt/copy-prop/move_projection.f.CopyProp.panic-abort.diff +++ b/tests/mir-opt/copy-prop/move_projection.f.CopyProp.panic-abort.diff @@ -2,30 +2,24 @@ + // MIR for `f` after CopyProp fn f(_1: Foo) -> bool { - let mut _0: bool; // return place in scope 0 at $DIR/move_projection.rs:+0:17: +0:21 - let mut _2: Foo; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _3: u8; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL + let mut _0: bool; + let mut _2: Foo; + let mut _3: u8; bb0: { -- _2 = _1; // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL -- _3 = move (_2.0: u8); // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL -- _0 = opaque::(move _1) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/move_projection.rs:+6:13: +6:44 -+ _3 = (_1.0: u8); // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL -+ _0 = opaque::(_1) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/move_projection.rs:+6:13: +6:44 - // mir::Constant - // + span: $DIR/move_projection.rs:20:28: 20:34 - // + literal: Const { ty: fn(Foo) -> bool {opaque::}, val: Value() } +- _2 = _1; +- _3 = move (_2.0: u8); +- _0 = opaque::(move _1) -> [return: bb1, unwind unreachable]; ++ _3 = (_1.0: u8); ++ _0 = opaque::(_1) -> [return: bb1, unwind unreachable]; } bb1: { - _0 = opaque::(move _3) -> [return: bb2, unwind unreachable]; // scope 0 at $DIR/move_projection.rs:+9:13: +9:44 - // mir::Constant - // + span: $DIR/move_projection.rs:23:28: 23:34 - // + literal: Const { ty: fn(u8) -> bool {opaque::}, val: Value() } + _0 = opaque::(move _3) -> [return: bb2, unwind unreachable]; } bb2: { - return; // scope 0 at $DIR/move_projection.rs:+12:13: +12:21 + return; } } diff --git a/tests/mir-opt/copy-prop/move_projection.f.CopyProp.panic-unwind.diff b/tests/mir-opt/copy-prop/move_projection.f.CopyProp.panic-unwind.diff index beb85d68a660c..3ebee0ed80d42 100644 --- a/tests/mir-opt/copy-prop/move_projection.f.CopyProp.panic-unwind.diff +++ b/tests/mir-opt/copy-prop/move_projection.f.CopyProp.panic-unwind.diff @@ -2,30 +2,24 @@ + // MIR for `f` after CopyProp fn f(_1: Foo) -> bool { - let mut _0: bool; // return place in scope 0 at $DIR/move_projection.rs:+0:17: +0:21 - let mut _2: Foo; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _3: u8; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL + let mut _0: bool; + let mut _2: Foo; + let mut _3: u8; bb0: { -- _2 = _1; // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL -- _3 = move (_2.0: u8); // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL -- _0 = opaque::(move _1) -> bb1; // scope 0 at $DIR/move_projection.rs:+6:13: +6:44 -+ _3 = (_1.0: u8); // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL -+ _0 = opaque::(_1) -> bb1; // scope 0 at $DIR/move_projection.rs:+6:13: +6:44 - // mir::Constant - // + span: $DIR/move_projection.rs:20:28: 20:34 - // + literal: Const { ty: fn(Foo) -> bool {opaque::}, val: Value() } +- _2 = _1; +- _3 = move (_2.0: u8); +- _0 = opaque::(move _1) -> bb1; ++ _3 = (_1.0: u8); ++ _0 = opaque::(_1) -> bb1; } bb1: { - _0 = opaque::(move _3) -> bb2; // scope 0 at $DIR/move_projection.rs:+9:13: +9:44 - // mir::Constant - // + span: $DIR/move_projection.rs:23:28: 23:34 - // + literal: Const { ty: fn(u8) -> bool {opaque::}, val: Value() } + _0 = opaque::(move _3) -> bb2; } bb2: { - return; // scope 0 at $DIR/move_projection.rs:+12:13: +12:21 + return; } } diff --git a/tests/mir-opt/copy-prop/mutate_through_pointer.f.CopyProp.diff b/tests/mir-opt/copy-prop/mutate_through_pointer.f.CopyProp.diff index 61fdd6f8c05bf..7f6802beeae2f 100644 --- a/tests/mir-opt/copy-prop/mutate_through_pointer.f.CopyProp.diff +++ b/tests/mir-opt/copy-prop/mutate_through_pointer.f.CopyProp.diff @@ -2,18 +2,18 @@ + // MIR for `f` after CopyProp fn f(_1: bool) -> bool { - let mut _0: bool; // return place in scope 0 at $DIR/mutate_through_pointer.rs:+0:18: +0:22 - let mut _2: bool; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _3: *const bool; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _4: *mut bool; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL + let mut _0: bool; + let mut _2: bool; + let mut _3: *const bool; + let mut _4: *mut bool; bb0: { - _2 = _1; // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - _3 = &raw const _2; // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - _4 = &raw mut (*_3); // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - (*_4) = const false; // scope 0 at $DIR/mutate_through_pointer.rs:+5:9: +5:20 - _0 = _1; // scope 0 at $DIR/mutate_through_pointer.rs:+6:9: +6:16 - return; // scope 0 at $DIR/mutate_through_pointer.rs:+7:9: +7:17 + _2 = _1; + _3 = &raw const _2; + _4 = &raw mut (*_3); + (*_4) = const false; + _0 = _1; + return; } } diff --git a/tests/mir-opt/copy-prop/non_dominate.f.CopyProp.diff b/tests/mir-opt/copy-prop/non_dominate.f.CopyProp.diff index 9760fd3740fb9..5bf2335943cf6 100644 --- a/tests/mir-opt/copy-prop/non_dominate.f.CopyProp.diff +++ b/tests/mir-opt/copy-prop/non_dominate.f.CopyProp.diff @@ -2,28 +2,28 @@ + // MIR for `f` after CopyProp fn f(_1: bool) -> bool { - let mut _0: bool; // return place in scope 0 at $DIR/non_dominate.rs:+0:18: +0:22 - let mut _2: bool; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _3: bool; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL + let mut _0: bool; + let mut _2: bool; + let mut _3: bool; bb0: { - goto -> bb1; // scope 0 at $DIR/non_dominate.rs:+4:11: +4:20 + goto -> bb1; } bb1: { - _3 = _1; // scope 0 at $DIR/non_dominate.rs:+5:17: +5:22 - switchInt(_3) -> [0: bb3, otherwise: bb2]; // scope 0 at $DIR/non_dominate.rs:+5:24: +5:58 + _3 = _1; + switchInt(_3) -> [0: bb3, otherwise: bb2]; } bb2: { - _2 = _3; // scope 0 at $DIR/non_dominate.rs:+8:17: +8:22 - _1 = const false; // scope 0 at $DIR/non_dominate.rs:+8:24: +8:33 - goto -> bb1; // scope 0 at $DIR/non_dominate.rs:+8:35: +8:44 + _2 = _3; + _1 = const false; + goto -> bb1; } bb3: { - _0 = _2; // scope 0 at $DIR/non_dominate.rs:+9:17: +9:24 - return; // scope 0 at $DIR/non_dominate.rs:+9:26: +9:34 + _0 = _2; + return; } } diff --git a/tests/mir-opt/copy-prop/partial_init.main.CopyProp.diff b/tests/mir-opt/copy-prop/partial_init.main.CopyProp.diff index 5866439055e8d..7094ee3919213 100644 --- a/tests/mir-opt/copy-prop/partial_init.main.CopyProp.diff +++ b/tests/mir-opt/copy-prop/partial_init.main.CopyProp.diff @@ -2,12 +2,12 @@ + // MIR for `main` after CopyProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/partial_init.rs:+0:15: +0:15 - let mut _1: (isize,); // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL + let mut _0: (); + let mut _1: (isize,); bb0: { - (_1.0: isize) = const 1_isize; // scope 0 at $DIR/partial_init.rs:+4:13: +4:20 - return; // scope 0 at $DIR/partial_init.rs:+5:13: +5:21 + (_1.0: isize) = const 1_isize; + return; } } diff --git a/tests/mir-opt/copy-prop/reborrow.demiraw.CopyProp.panic-abort.diff b/tests/mir-opt/copy-prop/reborrow.demiraw.CopyProp.panic-abort.diff index f4d8e4ed67db8..ffb0c4b23fb27 100644 --- a/tests/mir-opt/copy-prop/reborrow.demiraw.CopyProp.panic-abort.diff +++ b/tests/mir-opt/copy-prop/reborrow.demiraw.CopyProp.panic-abort.diff @@ -2,21 +2,21 @@ + // MIR for `demiraw` after CopyProp fn demiraw(_1: u8) -> () { - debug x => _1; // in scope 0 at $DIR/reborrow.rs:+0:12: +0:17 - let mut _0: (); // return place in scope 0 at $DIR/reborrow.rs:+0:23: +0:23 - let _2: *mut u8; // in scope 0 at $DIR/reborrow.rs:+1:9: +1:10 - let mut _4: &mut u8; // in scope 0 at $DIR/reborrow.rs:+2:22: +2:29 - let _6: (); // in scope 0 at $DIR/reborrow.rs:+4:5: +4:14 - let mut _7: *mut u8; // in scope 0 at $DIR/reborrow.rs:+4:12: +4:13 + debug x => _1; + let mut _0: (); + let _2: *mut u8; + let mut _4: &mut u8; + let _6: (); + let mut _7: *mut u8; scope 1 { - debug a => _2; // in scope 1 at $DIR/reborrow.rs:+1:9: +1:10 - let _3: &mut u8; // in scope 1 at $DIR/reborrow.rs:+2:9: +2:10 + debug a => _2; + let _3: &mut u8; scope 2 { - debug b => _3; // in scope 2 at $DIR/reborrow.rs:+2:9: +2:10 - let _5: *mut u8; // in scope 2 at $DIR/reborrow.rs:+3:9: +3:10 + debug b => _3; + let _5: *mut u8; scope 4 { -- debug c => _5; // in scope 4 at $DIR/reborrow.rs:+3:9: +3:10 -+ debug c => _2; // in scope 4 at $DIR/reborrow.rs:+3:9: +3:10 +- debug c => _5; ++ debug c => _2; } } scope 3 { @@ -24,33 +24,30 @@ } bb0: { -- StorageLive(_2); // scope 0 at $DIR/reborrow.rs:+1:9: +1:10 - _2 = &raw mut _1; // scope 0 at $DIR/reborrow.rs:+1:13: +1:23 - StorageLive(_3); // scope 1 at $DIR/reborrow.rs:+2:9: +2:10 - StorageLive(_4); // scope 1 at $DIR/reborrow.rs:+2:22: +2:29 - _4 = &mut (*_2); // scope 3 at $DIR/reborrow.rs:+2:22: +2:29 - _3 = &mut (*_4); // scope 1 at $DIR/reborrow.rs:+2:22: +2:29 - StorageDead(_4); // scope 1 at $DIR/reborrow.rs:+2:31: +2:32 -- StorageLive(_5); // scope 2 at $DIR/reborrow.rs:+3:9: +3:10 -- _5 = _2; // scope 2 at $DIR/reborrow.rs:+3:13: +3:14 - StorageLive(_6); // scope 4 at $DIR/reborrow.rs:+4:5: +4:14 -- StorageLive(_7); // scope 4 at $DIR/reborrow.rs:+4:12: +4:13 -- _7 = _5; // scope 4 at $DIR/reborrow.rs:+4:12: +4:13 -- _6 = opaque::<*mut u8>(move _7) -> [return: bb1, unwind unreachable]; // scope 4 at $DIR/reborrow.rs:+4:5: +4:14 -+ _6 = opaque::<*mut u8>(_2) -> [return: bb1, unwind unreachable]; // scope 4 at $DIR/reborrow.rs:+4:5: +4:14 - // mir::Constant - // + span: $DIR/reborrow.rs:39:5: 39:11 - // + literal: Const { ty: fn(*mut u8) {opaque::<*mut u8>}, val: Value() } +- StorageLive(_2); + _2 = &raw mut _1; + StorageLive(_3); + StorageLive(_4); + _4 = &mut (*_2); + _3 = &mut (*_4); + StorageDead(_4); +- StorageLive(_5); +- _5 = _2; + StorageLive(_6); +- StorageLive(_7); +- _7 = _5; +- _6 = opaque::<*mut u8>(move _7) -> [return: bb1, unwind unreachable]; ++ _6 = opaque::<*mut u8>(_2) -> [return: bb1, unwind unreachable]; } bb1: { -- StorageDead(_7); // scope 4 at $DIR/reborrow.rs:+4:13: +4:14 - StorageDead(_6); // scope 4 at $DIR/reborrow.rs:+4:14: +4:15 - _0 = const (); // scope 0 at $DIR/reborrow.rs:+0:23: +5:2 -- StorageDead(_5); // scope 2 at $DIR/reborrow.rs:+5:1: +5:2 - StorageDead(_3); // scope 1 at $DIR/reborrow.rs:+5:1: +5:2 -- StorageDead(_2); // scope 0 at $DIR/reborrow.rs:+5:1: +5:2 - return; // scope 0 at $DIR/reborrow.rs:+5:2: +5:2 +- StorageDead(_7); + StorageDead(_6); + _0 = const (); +- StorageDead(_5); + StorageDead(_3); +- StorageDead(_2); + return; } } diff --git a/tests/mir-opt/copy-prop/reborrow.demiraw.CopyProp.panic-unwind.diff b/tests/mir-opt/copy-prop/reborrow.demiraw.CopyProp.panic-unwind.diff index b4a2482456636..0f14b53e9ade7 100644 --- a/tests/mir-opt/copy-prop/reborrow.demiraw.CopyProp.panic-unwind.diff +++ b/tests/mir-opt/copy-prop/reborrow.demiraw.CopyProp.panic-unwind.diff @@ -2,21 +2,21 @@ + // MIR for `demiraw` after CopyProp fn demiraw(_1: u8) -> () { - debug x => _1; // in scope 0 at $DIR/reborrow.rs:+0:12: +0:17 - let mut _0: (); // return place in scope 0 at $DIR/reborrow.rs:+0:23: +0:23 - let _2: *mut u8; // in scope 0 at $DIR/reborrow.rs:+1:9: +1:10 - let mut _4: &mut u8; // in scope 0 at $DIR/reborrow.rs:+2:22: +2:29 - let _6: (); // in scope 0 at $DIR/reborrow.rs:+4:5: +4:14 - let mut _7: *mut u8; // in scope 0 at $DIR/reborrow.rs:+4:12: +4:13 + debug x => _1; + let mut _0: (); + let _2: *mut u8; + let mut _4: &mut u8; + let _6: (); + let mut _7: *mut u8; scope 1 { - debug a => _2; // in scope 1 at $DIR/reborrow.rs:+1:9: +1:10 - let _3: &mut u8; // in scope 1 at $DIR/reborrow.rs:+2:9: +2:10 + debug a => _2; + let _3: &mut u8; scope 2 { - debug b => _3; // in scope 2 at $DIR/reborrow.rs:+2:9: +2:10 - let _5: *mut u8; // in scope 2 at $DIR/reborrow.rs:+3:9: +3:10 + debug b => _3; + let _5: *mut u8; scope 4 { -- debug c => _5; // in scope 4 at $DIR/reborrow.rs:+3:9: +3:10 -+ debug c => _2; // in scope 4 at $DIR/reborrow.rs:+3:9: +3:10 +- debug c => _5; ++ debug c => _2; } } scope 3 { @@ -24,33 +24,30 @@ } bb0: { -- StorageLive(_2); // scope 0 at $DIR/reborrow.rs:+1:9: +1:10 - _2 = &raw mut _1; // scope 0 at $DIR/reborrow.rs:+1:13: +1:23 - StorageLive(_3); // scope 1 at $DIR/reborrow.rs:+2:9: +2:10 - StorageLive(_4); // scope 1 at $DIR/reborrow.rs:+2:22: +2:29 - _4 = &mut (*_2); // scope 3 at $DIR/reborrow.rs:+2:22: +2:29 - _3 = &mut (*_4); // scope 1 at $DIR/reborrow.rs:+2:22: +2:29 - StorageDead(_4); // scope 1 at $DIR/reborrow.rs:+2:31: +2:32 -- StorageLive(_5); // scope 2 at $DIR/reborrow.rs:+3:9: +3:10 -- _5 = _2; // scope 2 at $DIR/reborrow.rs:+3:13: +3:14 - StorageLive(_6); // scope 4 at $DIR/reborrow.rs:+4:5: +4:14 -- StorageLive(_7); // scope 4 at $DIR/reborrow.rs:+4:12: +4:13 -- _7 = _5; // scope 4 at $DIR/reborrow.rs:+4:12: +4:13 -- _6 = opaque::<*mut u8>(move _7) -> bb1; // scope 4 at $DIR/reborrow.rs:+4:5: +4:14 -+ _6 = opaque::<*mut u8>(_2) -> bb1; // scope 4 at $DIR/reborrow.rs:+4:5: +4:14 - // mir::Constant - // + span: $DIR/reborrow.rs:39:5: 39:11 - // + literal: Const { ty: fn(*mut u8) {opaque::<*mut u8>}, val: Value() } +- StorageLive(_2); + _2 = &raw mut _1; + StorageLive(_3); + StorageLive(_4); + _4 = &mut (*_2); + _3 = &mut (*_4); + StorageDead(_4); +- StorageLive(_5); +- _5 = _2; + StorageLive(_6); +- StorageLive(_7); +- _7 = _5; +- _6 = opaque::<*mut u8>(move _7) -> bb1; ++ _6 = opaque::<*mut u8>(_2) -> bb1; } bb1: { -- StorageDead(_7); // scope 4 at $DIR/reborrow.rs:+4:13: +4:14 - StorageDead(_6); // scope 4 at $DIR/reborrow.rs:+4:14: +4:15 - _0 = const (); // scope 0 at $DIR/reborrow.rs:+0:23: +5:2 -- StorageDead(_5); // scope 2 at $DIR/reborrow.rs:+5:1: +5:2 - StorageDead(_3); // scope 1 at $DIR/reborrow.rs:+5:1: +5:2 -- StorageDead(_2); // scope 0 at $DIR/reborrow.rs:+5:1: +5:2 - return; // scope 0 at $DIR/reborrow.rs:+5:2: +5:2 +- StorageDead(_7); + StorageDead(_6); + _0 = const (); +- StorageDead(_5); + StorageDead(_3); +- StorageDead(_2); + return; } } diff --git a/tests/mir-opt/copy-prop/reborrow.miraw.CopyProp.panic-abort.diff b/tests/mir-opt/copy-prop/reborrow.miraw.CopyProp.panic-abort.diff index 3f34ec1600dac..0777a9135235f 100644 --- a/tests/mir-opt/copy-prop/reborrow.miraw.CopyProp.panic-abort.diff +++ b/tests/mir-opt/copy-prop/reborrow.miraw.CopyProp.panic-abort.diff @@ -2,20 +2,20 @@ + // MIR for `miraw` after CopyProp fn miraw(_1: u8) -> () { - debug x => _1; // in scope 0 at $DIR/reborrow.rs:+0:10: +0:15 - let mut _0: (); // return place in scope 0 at $DIR/reborrow.rs:+0:21: +0:21 - let _2: *mut u8; // in scope 0 at $DIR/reborrow.rs:+1:9: +1:10 - let _5: (); // in scope 0 at $DIR/reborrow.rs:+4:5: +4:14 - let mut _6: *mut u8; // in scope 0 at $DIR/reborrow.rs:+4:12: +4:13 + debug x => _1; + let mut _0: (); + let _2: *mut u8; + let _5: (); + let mut _6: *mut u8; scope 1 { - debug a => _2; // in scope 1 at $DIR/reborrow.rs:+1:9: +1:10 - let _3: *mut u8; // in scope 1 at $DIR/reborrow.rs:+2:9: +2:10 + debug a => _2; + let _3: *mut u8; scope 2 { - debug b => _3; // in scope 2 at $DIR/reborrow.rs:+2:9: +2:10 - let _4: *mut u8; // in scope 2 at $DIR/reborrow.rs:+3:9: +3:10 + debug b => _3; + let _4: *mut u8; scope 4 { -- debug c => _4; // in scope 4 at $DIR/reborrow.rs:+3:9: +3:10 -+ debug c => _2; // in scope 4 at $DIR/reborrow.rs:+3:9: +3:10 +- debug c => _4; ++ debug c => _2; } } scope 3 { @@ -23,30 +23,27 @@ } bb0: { -- StorageLive(_2); // scope 0 at $DIR/reborrow.rs:+1:9: +1:10 - _2 = &raw mut _1; // scope 0 at $DIR/reborrow.rs:+1:13: +1:23 - StorageLive(_3); // scope 1 at $DIR/reborrow.rs:+2:9: +2:10 - _3 = &raw mut (*_2); // scope 3 at $DIR/reborrow.rs:+2:22: +2:33 -- StorageLive(_4); // scope 2 at $DIR/reborrow.rs:+3:9: +3:10 -- _4 = _2; // scope 2 at $DIR/reborrow.rs:+3:13: +3:14 - StorageLive(_5); // scope 4 at $DIR/reborrow.rs:+4:5: +4:14 -- StorageLive(_6); // scope 4 at $DIR/reborrow.rs:+4:12: +4:13 -- _6 = _4; // scope 4 at $DIR/reborrow.rs:+4:12: +4:13 -- _5 = opaque::<*mut u8>(move _6) -> [return: bb1, unwind unreachable]; // scope 4 at $DIR/reborrow.rs:+4:5: +4:14 -+ _5 = opaque::<*mut u8>(_2) -> [return: bb1, unwind unreachable]; // scope 4 at $DIR/reborrow.rs:+4:5: +4:14 - // mir::Constant - // + span: $DIR/reborrow.rs:31:5: 31:11 - // + literal: Const { ty: fn(*mut u8) {opaque::<*mut u8>}, val: Value() } +- StorageLive(_2); + _2 = &raw mut _1; + StorageLive(_3); + _3 = &raw mut (*_2); +- StorageLive(_4); +- _4 = _2; + StorageLive(_5); +- StorageLive(_6); +- _6 = _4; +- _5 = opaque::<*mut u8>(move _6) -> [return: bb1, unwind unreachable]; ++ _5 = opaque::<*mut u8>(_2) -> [return: bb1, unwind unreachable]; } bb1: { -- StorageDead(_6); // scope 4 at $DIR/reborrow.rs:+4:13: +4:14 - StorageDead(_5); // scope 4 at $DIR/reborrow.rs:+4:14: +4:15 - _0 = const (); // scope 0 at $DIR/reborrow.rs:+0:21: +5:2 -- StorageDead(_4); // scope 2 at $DIR/reborrow.rs:+5:1: +5:2 - StorageDead(_3); // scope 1 at $DIR/reborrow.rs:+5:1: +5:2 -- StorageDead(_2); // scope 0 at $DIR/reborrow.rs:+5:1: +5:2 - return; // scope 0 at $DIR/reborrow.rs:+5:2: +5:2 +- StorageDead(_6); + StorageDead(_5); + _0 = const (); +- StorageDead(_4); + StorageDead(_3); +- StorageDead(_2); + return; } } diff --git a/tests/mir-opt/copy-prop/reborrow.miraw.CopyProp.panic-unwind.diff b/tests/mir-opt/copy-prop/reborrow.miraw.CopyProp.panic-unwind.diff index a6a6c05b24ae9..ba6e09fa95c6f 100644 --- a/tests/mir-opt/copy-prop/reborrow.miraw.CopyProp.panic-unwind.diff +++ b/tests/mir-opt/copy-prop/reborrow.miraw.CopyProp.panic-unwind.diff @@ -2,20 +2,20 @@ + // MIR for `miraw` after CopyProp fn miraw(_1: u8) -> () { - debug x => _1; // in scope 0 at $DIR/reborrow.rs:+0:10: +0:15 - let mut _0: (); // return place in scope 0 at $DIR/reborrow.rs:+0:21: +0:21 - let _2: *mut u8; // in scope 0 at $DIR/reborrow.rs:+1:9: +1:10 - let _5: (); // in scope 0 at $DIR/reborrow.rs:+4:5: +4:14 - let mut _6: *mut u8; // in scope 0 at $DIR/reborrow.rs:+4:12: +4:13 + debug x => _1; + let mut _0: (); + let _2: *mut u8; + let _5: (); + let mut _6: *mut u8; scope 1 { - debug a => _2; // in scope 1 at $DIR/reborrow.rs:+1:9: +1:10 - let _3: *mut u8; // in scope 1 at $DIR/reborrow.rs:+2:9: +2:10 + debug a => _2; + let _3: *mut u8; scope 2 { - debug b => _3; // in scope 2 at $DIR/reborrow.rs:+2:9: +2:10 - let _4: *mut u8; // in scope 2 at $DIR/reborrow.rs:+3:9: +3:10 + debug b => _3; + let _4: *mut u8; scope 4 { -- debug c => _4; // in scope 4 at $DIR/reborrow.rs:+3:9: +3:10 -+ debug c => _2; // in scope 4 at $DIR/reborrow.rs:+3:9: +3:10 +- debug c => _4; ++ debug c => _2; } } scope 3 { @@ -23,30 +23,27 @@ } bb0: { -- StorageLive(_2); // scope 0 at $DIR/reborrow.rs:+1:9: +1:10 - _2 = &raw mut _1; // scope 0 at $DIR/reborrow.rs:+1:13: +1:23 - StorageLive(_3); // scope 1 at $DIR/reborrow.rs:+2:9: +2:10 - _3 = &raw mut (*_2); // scope 3 at $DIR/reborrow.rs:+2:22: +2:33 -- StorageLive(_4); // scope 2 at $DIR/reborrow.rs:+3:9: +3:10 -- _4 = _2; // scope 2 at $DIR/reborrow.rs:+3:13: +3:14 - StorageLive(_5); // scope 4 at $DIR/reborrow.rs:+4:5: +4:14 -- StorageLive(_6); // scope 4 at $DIR/reborrow.rs:+4:12: +4:13 -- _6 = _4; // scope 4 at $DIR/reborrow.rs:+4:12: +4:13 -- _5 = opaque::<*mut u8>(move _6) -> bb1; // scope 4 at $DIR/reborrow.rs:+4:5: +4:14 -+ _5 = opaque::<*mut u8>(_2) -> bb1; // scope 4 at $DIR/reborrow.rs:+4:5: +4:14 - // mir::Constant - // + span: $DIR/reborrow.rs:31:5: 31:11 - // + literal: Const { ty: fn(*mut u8) {opaque::<*mut u8>}, val: Value() } +- StorageLive(_2); + _2 = &raw mut _1; + StorageLive(_3); + _3 = &raw mut (*_2); +- StorageLive(_4); +- _4 = _2; + StorageLive(_5); +- StorageLive(_6); +- _6 = _4; +- _5 = opaque::<*mut u8>(move _6) -> bb1; ++ _5 = opaque::<*mut u8>(_2) -> bb1; } bb1: { -- StorageDead(_6); // scope 4 at $DIR/reborrow.rs:+4:13: +4:14 - StorageDead(_5); // scope 4 at $DIR/reborrow.rs:+4:14: +4:15 - _0 = const (); // scope 0 at $DIR/reborrow.rs:+0:21: +5:2 -- StorageDead(_4); // scope 2 at $DIR/reborrow.rs:+5:1: +5:2 - StorageDead(_3); // scope 1 at $DIR/reborrow.rs:+5:1: +5:2 -- StorageDead(_2); // scope 0 at $DIR/reborrow.rs:+5:1: +5:2 - return; // scope 0 at $DIR/reborrow.rs:+5:2: +5:2 +- StorageDead(_6); + StorageDead(_5); + _0 = const (); +- StorageDead(_4); + StorageDead(_3); +- StorageDead(_2); + return; } } diff --git a/tests/mir-opt/copy-prop/reborrow.remut.CopyProp.panic-abort.diff b/tests/mir-opt/copy-prop/reborrow.remut.CopyProp.panic-abort.diff index 59f87b5b911fe..2026c1982f299 100644 --- a/tests/mir-opt/copy-prop/reborrow.remut.CopyProp.panic-abort.diff +++ b/tests/mir-opt/copy-prop/reborrow.remut.CopyProp.panic-abort.diff @@ -2,49 +2,46 @@ + // MIR for `remut` after CopyProp fn remut(_1: u8) -> () { - debug x => _1; // in scope 0 at $DIR/reborrow.rs:+0:10: +0:15 - let mut _0: (); // return place in scope 0 at $DIR/reborrow.rs:+0:21: +0:21 - let _2: &mut u8; // in scope 0 at $DIR/reborrow.rs:+1:9: +1:10 - let _5: (); // in scope 0 at $DIR/reborrow.rs:+4:5: +4:14 - let mut _6: &mut u8; // in scope 0 at $DIR/reborrow.rs:+4:12: +4:13 + debug x => _1; + let mut _0: (); + let _2: &mut u8; + let _5: (); + let mut _6: &mut u8; scope 1 { - debug a => _2; // in scope 1 at $DIR/reborrow.rs:+1:9: +1:10 - let _3: &mut u8; // in scope 1 at $DIR/reborrow.rs:+2:9: +2:10 + debug a => _2; + let _3: &mut u8; scope 2 { - debug b => _3; // in scope 2 at $DIR/reborrow.rs:+2:9: +2:10 - let _4: &mut u8; // in scope 2 at $DIR/reborrow.rs:+3:9: +3:10 + debug b => _3; + let _4: &mut u8; scope 3 { -- debug c => _4; // in scope 3 at $DIR/reborrow.rs:+3:9: +3:10 -+ debug c => _2; // in scope 3 at $DIR/reborrow.rs:+3:9: +3:10 +- debug c => _4; ++ debug c => _2; } } } bb0: { -- StorageLive(_2); // scope 0 at $DIR/reborrow.rs:+1:9: +1:10 - _2 = &mut _1; // scope 0 at $DIR/reborrow.rs:+1:13: +1:19 - StorageLive(_3); // scope 1 at $DIR/reborrow.rs:+2:9: +2:10 - _3 = &mut (*_2); // scope 1 at $DIR/reborrow.rs:+2:13: +2:20 -- StorageLive(_4); // scope 2 at $DIR/reborrow.rs:+3:9: +3:10 -- _4 = move _2; // scope 2 at $DIR/reborrow.rs:+3:13: +3:14 - StorageLive(_5); // scope 3 at $DIR/reborrow.rs:+4:5: +4:14 -- StorageLive(_6); // scope 3 at $DIR/reborrow.rs:+4:12: +4:13 -- _6 = move _4; // scope 3 at $DIR/reborrow.rs:+4:12: +4:13 -- _5 = opaque::<&mut u8>(move _6) -> [return: bb1, unwind unreachable]; // scope 3 at $DIR/reborrow.rs:+4:5: +4:14 -+ _5 = opaque::<&mut u8>(move _2) -> [return: bb1, unwind unreachable]; // scope 3 at $DIR/reborrow.rs:+4:5: +4:14 - // mir::Constant - // + span: $DIR/reborrow.rs:15:5: 15:11 - // + literal: Const { ty: fn(&mut u8) {opaque::<&mut u8>}, val: Value() } +- StorageLive(_2); + _2 = &mut _1; + StorageLive(_3); + _3 = &mut (*_2); +- StorageLive(_4); +- _4 = move _2; + StorageLive(_5); +- StorageLive(_6); +- _6 = move _4; +- _5 = opaque::<&mut u8>(move _6) -> [return: bb1, unwind unreachable]; ++ _5 = opaque::<&mut u8>(move _2) -> [return: bb1, unwind unreachable]; } bb1: { -- StorageDead(_6); // scope 3 at $DIR/reborrow.rs:+4:13: +4:14 - StorageDead(_5); // scope 3 at $DIR/reborrow.rs:+4:14: +4:15 - _0 = const (); // scope 0 at $DIR/reborrow.rs:+0:21: +5:2 -- StorageDead(_4); // scope 2 at $DIR/reborrow.rs:+5:1: +5:2 - StorageDead(_3); // scope 1 at $DIR/reborrow.rs:+5:1: +5:2 -- StorageDead(_2); // scope 0 at $DIR/reborrow.rs:+5:1: +5:2 - return; // scope 0 at $DIR/reborrow.rs:+5:2: +5:2 +- StorageDead(_6); + StorageDead(_5); + _0 = const (); +- StorageDead(_4); + StorageDead(_3); +- StorageDead(_2); + return; } } diff --git a/tests/mir-opt/copy-prop/reborrow.remut.CopyProp.panic-unwind.diff b/tests/mir-opt/copy-prop/reborrow.remut.CopyProp.panic-unwind.diff index f3d26cc6e2bfe..4379aa06385e9 100644 --- a/tests/mir-opt/copy-prop/reborrow.remut.CopyProp.panic-unwind.diff +++ b/tests/mir-opt/copy-prop/reborrow.remut.CopyProp.panic-unwind.diff @@ -2,49 +2,46 @@ + // MIR for `remut` after CopyProp fn remut(_1: u8) -> () { - debug x => _1; // in scope 0 at $DIR/reborrow.rs:+0:10: +0:15 - let mut _0: (); // return place in scope 0 at $DIR/reborrow.rs:+0:21: +0:21 - let _2: &mut u8; // in scope 0 at $DIR/reborrow.rs:+1:9: +1:10 - let _5: (); // in scope 0 at $DIR/reborrow.rs:+4:5: +4:14 - let mut _6: &mut u8; // in scope 0 at $DIR/reborrow.rs:+4:12: +4:13 + debug x => _1; + let mut _0: (); + let _2: &mut u8; + let _5: (); + let mut _6: &mut u8; scope 1 { - debug a => _2; // in scope 1 at $DIR/reborrow.rs:+1:9: +1:10 - let _3: &mut u8; // in scope 1 at $DIR/reborrow.rs:+2:9: +2:10 + debug a => _2; + let _3: &mut u8; scope 2 { - debug b => _3; // in scope 2 at $DIR/reborrow.rs:+2:9: +2:10 - let _4: &mut u8; // in scope 2 at $DIR/reborrow.rs:+3:9: +3:10 + debug b => _3; + let _4: &mut u8; scope 3 { -- debug c => _4; // in scope 3 at $DIR/reborrow.rs:+3:9: +3:10 -+ debug c => _2; // in scope 3 at $DIR/reborrow.rs:+3:9: +3:10 +- debug c => _4; ++ debug c => _2; } } } bb0: { -- StorageLive(_2); // scope 0 at $DIR/reborrow.rs:+1:9: +1:10 - _2 = &mut _1; // scope 0 at $DIR/reborrow.rs:+1:13: +1:19 - StorageLive(_3); // scope 1 at $DIR/reborrow.rs:+2:9: +2:10 - _3 = &mut (*_2); // scope 1 at $DIR/reborrow.rs:+2:13: +2:20 -- StorageLive(_4); // scope 2 at $DIR/reborrow.rs:+3:9: +3:10 -- _4 = move _2; // scope 2 at $DIR/reborrow.rs:+3:13: +3:14 - StorageLive(_5); // scope 3 at $DIR/reborrow.rs:+4:5: +4:14 -- StorageLive(_6); // scope 3 at $DIR/reborrow.rs:+4:12: +4:13 -- _6 = move _4; // scope 3 at $DIR/reborrow.rs:+4:12: +4:13 -- _5 = opaque::<&mut u8>(move _6) -> bb1; // scope 3 at $DIR/reborrow.rs:+4:5: +4:14 -+ _5 = opaque::<&mut u8>(move _2) -> bb1; // scope 3 at $DIR/reborrow.rs:+4:5: +4:14 - // mir::Constant - // + span: $DIR/reborrow.rs:15:5: 15:11 - // + literal: Const { ty: fn(&mut u8) {opaque::<&mut u8>}, val: Value() } +- StorageLive(_2); + _2 = &mut _1; + StorageLive(_3); + _3 = &mut (*_2); +- StorageLive(_4); +- _4 = move _2; + StorageLive(_5); +- StorageLive(_6); +- _6 = move _4; +- _5 = opaque::<&mut u8>(move _6) -> bb1; ++ _5 = opaque::<&mut u8>(move _2) -> bb1; } bb1: { -- StorageDead(_6); // scope 3 at $DIR/reborrow.rs:+4:13: +4:14 - StorageDead(_5); // scope 3 at $DIR/reborrow.rs:+4:14: +4:15 - _0 = const (); // scope 0 at $DIR/reborrow.rs:+0:21: +5:2 -- StorageDead(_4); // scope 2 at $DIR/reborrow.rs:+5:1: +5:2 - StorageDead(_3); // scope 1 at $DIR/reborrow.rs:+5:1: +5:2 -- StorageDead(_2); // scope 0 at $DIR/reborrow.rs:+5:1: +5:2 - return; // scope 0 at $DIR/reborrow.rs:+5:2: +5:2 +- StorageDead(_6); + StorageDead(_5); + _0 = const (); +- StorageDead(_4); + StorageDead(_3); +- StorageDead(_2); + return; } } diff --git a/tests/mir-opt/copy-prop/reborrow.reraw.CopyProp.panic-abort.diff b/tests/mir-opt/copy-prop/reborrow.reraw.CopyProp.panic-abort.diff index 08bb6d8b22b0a..dfc8dd0975638 100644 --- a/tests/mir-opt/copy-prop/reborrow.reraw.CopyProp.panic-abort.diff +++ b/tests/mir-opt/copy-prop/reborrow.reraw.CopyProp.panic-abort.diff @@ -2,49 +2,46 @@ + // MIR for `reraw` after CopyProp fn reraw(_1: u8) -> () { - debug x => _1; // in scope 0 at $DIR/reborrow.rs:+0:10: +0:15 - let mut _0: (); // return place in scope 0 at $DIR/reborrow.rs:+0:21: +0:21 - let _2: &mut u8; // in scope 0 at $DIR/reborrow.rs:+1:9: +1:10 - let _5: (); // in scope 0 at $DIR/reborrow.rs:+4:5: +4:14 - let mut _6: &mut u8; // in scope 0 at $DIR/reborrow.rs:+4:12: +4:13 + debug x => _1; + let mut _0: (); + let _2: &mut u8; + let _5: (); + let mut _6: &mut u8; scope 1 { - debug a => _2; // in scope 1 at $DIR/reborrow.rs:+1:9: +1:10 - let _3: *mut u8; // in scope 1 at $DIR/reborrow.rs:+2:9: +2:10 + debug a => _2; + let _3: *mut u8; scope 2 { - debug b => _3; // in scope 2 at $DIR/reborrow.rs:+2:9: +2:10 - let _4: &mut u8; // in scope 2 at $DIR/reborrow.rs:+3:9: +3:10 + debug b => _3; + let _4: &mut u8; scope 3 { -- debug c => _4; // in scope 3 at $DIR/reborrow.rs:+3:9: +3:10 -+ debug c => _2; // in scope 3 at $DIR/reborrow.rs:+3:9: +3:10 +- debug c => _4; ++ debug c => _2; } } } bb0: { -- StorageLive(_2); // scope 0 at $DIR/reborrow.rs:+1:9: +1:10 - _2 = &mut _1; // scope 0 at $DIR/reborrow.rs:+1:13: +1:19 - StorageLive(_3); // scope 1 at $DIR/reborrow.rs:+2:9: +2:10 - _3 = &raw mut (*_2); // scope 1 at $DIR/reborrow.rs:+2:13: +2:24 -- StorageLive(_4); // scope 2 at $DIR/reborrow.rs:+3:9: +3:10 -- _4 = move _2; // scope 2 at $DIR/reborrow.rs:+3:13: +3:14 - StorageLive(_5); // scope 3 at $DIR/reborrow.rs:+4:5: +4:14 -- StorageLive(_6); // scope 3 at $DIR/reborrow.rs:+4:12: +4:13 -- _6 = move _4; // scope 3 at $DIR/reborrow.rs:+4:12: +4:13 -- _5 = opaque::<&mut u8>(move _6) -> [return: bb1, unwind unreachable]; // scope 3 at $DIR/reborrow.rs:+4:5: +4:14 -+ _5 = opaque::<&mut u8>(move _2) -> [return: bb1, unwind unreachable]; // scope 3 at $DIR/reborrow.rs:+4:5: +4:14 - // mir::Constant - // + span: $DIR/reborrow.rs:23:5: 23:11 - // + literal: Const { ty: fn(&mut u8) {opaque::<&mut u8>}, val: Value() } +- StorageLive(_2); + _2 = &mut _1; + StorageLive(_3); + _3 = &raw mut (*_2); +- StorageLive(_4); +- _4 = move _2; + StorageLive(_5); +- StorageLive(_6); +- _6 = move _4; +- _5 = opaque::<&mut u8>(move _6) -> [return: bb1, unwind unreachable]; ++ _5 = opaque::<&mut u8>(move _2) -> [return: bb1, unwind unreachable]; } bb1: { -- StorageDead(_6); // scope 3 at $DIR/reborrow.rs:+4:13: +4:14 - StorageDead(_5); // scope 3 at $DIR/reborrow.rs:+4:14: +4:15 - _0 = const (); // scope 0 at $DIR/reborrow.rs:+0:21: +5:2 -- StorageDead(_4); // scope 2 at $DIR/reborrow.rs:+5:1: +5:2 - StorageDead(_3); // scope 1 at $DIR/reborrow.rs:+5:1: +5:2 -- StorageDead(_2); // scope 0 at $DIR/reborrow.rs:+5:1: +5:2 - return; // scope 0 at $DIR/reborrow.rs:+5:2: +5:2 +- StorageDead(_6); + StorageDead(_5); + _0 = const (); +- StorageDead(_4); + StorageDead(_3); +- StorageDead(_2); + return; } } diff --git a/tests/mir-opt/copy-prop/reborrow.reraw.CopyProp.panic-unwind.diff b/tests/mir-opt/copy-prop/reborrow.reraw.CopyProp.panic-unwind.diff index 63e42b4dc7711..53332f8161eae 100644 --- a/tests/mir-opt/copy-prop/reborrow.reraw.CopyProp.panic-unwind.diff +++ b/tests/mir-opt/copy-prop/reborrow.reraw.CopyProp.panic-unwind.diff @@ -2,49 +2,46 @@ + // MIR for `reraw` after CopyProp fn reraw(_1: u8) -> () { - debug x => _1; // in scope 0 at $DIR/reborrow.rs:+0:10: +0:15 - let mut _0: (); // return place in scope 0 at $DIR/reborrow.rs:+0:21: +0:21 - let _2: &mut u8; // in scope 0 at $DIR/reborrow.rs:+1:9: +1:10 - let _5: (); // in scope 0 at $DIR/reborrow.rs:+4:5: +4:14 - let mut _6: &mut u8; // in scope 0 at $DIR/reborrow.rs:+4:12: +4:13 + debug x => _1; + let mut _0: (); + let _2: &mut u8; + let _5: (); + let mut _6: &mut u8; scope 1 { - debug a => _2; // in scope 1 at $DIR/reborrow.rs:+1:9: +1:10 - let _3: *mut u8; // in scope 1 at $DIR/reborrow.rs:+2:9: +2:10 + debug a => _2; + let _3: *mut u8; scope 2 { - debug b => _3; // in scope 2 at $DIR/reborrow.rs:+2:9: +2:10 - let _4: &mut u8; // in scope 2 at $DIR/reborrow.rs:+3:9: +3:10 + debug b => _3; + let _4: &mut u8; scope 3 { -- debug c => _4; // in scope 3 at $DIR/reborrow.rs:+3:9: +3:10 -+ debug c => _2; // in scope 3 at $DIR/reborrow.rs:+3:9: +3:10 +- debug c => _4; ++ debug c => _2; } } } bb0: { -- StorageLive(_2); // scope 0 at $DIR/reborrow.rs:+1:9: +1:10 - _2 = &mut _1; // scope 0 at $DIR/reborrow.rs:+1:13: +1:19 - StorageLive(_3); // scope 1 at $DIR/reborrow.rs:+2:9: +2:10 - _3 = &raw mut (*_2); // scope 1 at $DIR/reborrow.rs:+2:13: +2:24 -- StorageLive(_4); // scope 2 at $DIR/reborrow.rs:+3:9: +3:10 -- _4 = move _2; // scope 2 at $DIR/reborrow.rs:+3:13: +3:14 - StorageLive(_5); // scope 3 at $DIR/reborrow.rs:+4:5: +4:14 -- StorageLive(_6); // scope 3 at $DIR/reborrow.rs:+4:12: +4:13 -- _6 = move _4; // scope 3 at $DIR/reborrow.rs:+4:12: +4:13 -- _5 = opaque::<&mut u8>(move _6) -> bb1; // scope 3 at $DIR/reborrow.rs:+4:5: +4:14 -+ _5 = opaque::<&mut u8>(move _2) -> bb1; // scope 3 at $DIR/reborrow.rs:+4:5: +4:14 - // mir::Constant - // + span: $DIR/reborrow.rs:23:5: 23:11 - // + literal: Const { ty: fn(&mut u8) {opaque::<&mut u8>}, val: Value() } +- StorageLive(_2); + _2 = &mut _1; + StorageLive(_3); + _3 = &raw mut (*_2); +- StorageLive(_4); +- _4 = move _2; + StorageLive(_5); +- StorageLive(_6); +- _6 = move _4; +- _5 = opaque::<&mut u8>(move _6) -> bb1; ++ _5 = opaque::<&mut u8>(move _2) -> bb1; } bb1: { -- StorageDead(_6); // scope 3 at $DIR/reborrow.rs:+4:13: +4:14 - StorageDead(_5); // scope 3 at $DIR/reborrow.rs:+4:14: +4:15 - _0 = const (); // scope 0 at $DIR/reborrow.rs:+0:21: +5:2 -- StorageDead(_4); // scope 2 at $DIR/reborrow.rs:+5:1: +5:2 - StorageDead(_3); // scope 1 at $DIR/reborrow.rs:+5:1: +5:2 -- StorageDead(_2); // scope 0 at $DIR/reborrow.rs:+5:1: +5:2 - return; // scope 0 at $DIR/reborrow.rs:+5:2: +5:2 +- StorageDead(_6); + StorageDead(_5); + _0 = const (); +- StorageDead(_4); + StorageDead(_3); +- StorageDead(_2); + return; } } diff --git a/tests/mir-opt/dataflow-const-prop/cast.main.DataflowConstProp.diff b/tests/mir-opt/dataflow-const-prop/cast.main.DataflowConstProp.diff index bf9ab8669380a..0ca446c89f2e0 100644 --- a/tests/mir-opt/dataflow-const-prop/cast.main.DataflowConstProp.diff +++ b/tests/mir-opt/dataflow-const-prop/cast.main.DataflowConstProp.diff @@ -2,36 +2,36 @@ + // MIR for `main` after DataflowConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/cast.rs:+0:11: +0:11 - let _1: i32; // in scope 0 at $DIR/cast.rs:+1:9: +1:10 - let mut _3: u8; // in scope 0 at $DIR/cast.rs:+2:13: +2:20 - let mut _4: i32; // in scope 0 at $DIR/cast.rs:+2:13: +2:14 + let mut _0: (); + let _1: i32; + let mut _3: u8; + let mut _4: i32; scope 1 { - debug a => _1; // in scope 1 at $DIR/cast.rs:+1:9: +1:10 - let _2: u8; // in scope 1 at $DIR/cast.rs:+2:9: +2:10 + debug a => _1; + let _2: u8; scope 2 { - debug b => _2; // in scope 2 at $DIR/cast.rs:+2:9: +2:10 + debug b => _2; } } bb0: { - StorageLive(_1); // scope 0 at $DIR/cast.rs:+1:9: +1:10 - _1 = const 257_i32; // scope 0 at $DIR/cast.rs:+1:13: +1:16 - StorageLive(_2); // scope 1 at $DIR/cast.rs:+2:9: +2:10 - StorageLive(_3); // scope 1 at $DIR/cast.rs:+2:13: +2:20 - StorageLive(_4); // scope 1 at $DIR/cast.rs:+2:13: +2:14 -- _4 = _1; // scope 1 at $DIR/cast.rs:+2:13: +2:14 -- _3 = move _4 as u8 (IntToInt); // scope 1 at $DIR/cast.rs:+2:13: +2:20 -+ _4 = const 257_i32; // scope 1 at $DIR/cast.rs:+2:13: +2:14 -+ _3 = const 1_u8; // scope 1 at $DIR/cast.rs:+2:13: +2:20 - StorageDead(_4); // scope 1 at $DIR/cast.rs:+2:19: +2:20 -- _2 = Add(move _3, const 1_u8); // scope 1 at $DIR/cast.rs:+2:13: +2:24 -+ _2 = const 2_u8; // scope 1 at $DIR/cast.rs:+2:13: +2:24 - StorageDead(_3); // scope 1 at $DIR/cast.rs:+2:23: +2:24 - _0 = const (); // scope 0 at $DIR/cast.rs:+0:11: +3:2 - StorageDead(_2); // scope 1 at $DIR/cast.rs:+3:1: +3:2 - StorageDead(_1); // scope 0 at $DIR/cast.rs:+3:1: +3:2 - return; // scope 0 at $DIR/cast.rs:+3:2: +3:2 + StorageLive(_1); + _1 = const 257_i32; + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); +- _4 = _1; +- _3 = move _4 as u8 (IntToInt); ++ _4 = const 257_i32; ++ _3 = const 1_u8; + StorageDead(_4); +- _2 = Add(move _3, const 1_u8); ++ _2 = const 2_u8; + StorageDead(_3); + _0 = const (); + StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/dataflow-const-prop/checked.main.DataflowConstProp.panic-abort.diff b/tests/mir-opt/dataflow-const-prop/checked.main.DataflowConstProp.panic-abort.diff index be96743c36279..2f1a70f32d03a 100644 --- a/tests/mir-opt/dataflow-const-prop/checked.main.DataflowConstProp.panic-abort.diff +++ b/tests/mir-opt/dataflow-const-prop/checked.main.DataflowConstProp.panic-abort.diff @@ -2,27 +2,27 @@ + // MIR for `main` after DataflowConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/checked.rs:+0:11: +0:11 - let _1: i32; // in scope 0 at $DIR/checked.rs:+1:9: +1:10 - let mut _4: i32; // in scope 0 at $DIR/checked.rs:+3:13: +3:14 - let mut _5: i32; // in scope 0 at $DIR/checked.rs:+3:17: +3:18 - let mut _6: (i32, bool); // in scope 0 at $DIR/checked.rs:+3:13: +3:18 - let mut _9: i32; // in scope 0 at $DIR/checked.rs:+6:13: +6:14 - let mut _10: (i32, bool); // in scope 0 at $DIR/checked.rs:+6:13: +6:18 + let mut _0: (); + let _1: i32; + let mut _4: i32; + let mut _5: i32; + let mut _6: (i32, bool); + let mut _9: i32; + let mut _10: (i32, bool); scope 1 { - debug a => _1; // in scope 1 at $DIR/checked.rs:+1:9: +1:10 - let _2: i32; // in scope 1 at $DIR/checked.rs:+2:9: +2:10 + debug a => _1; + let _2: i32; scope 2 { - debug b => _2; // in scope 2 at $DIR/checked.rs:+2:9: +2:10 - let _3: i32; // in scope 2 at $DIR/checked.rs:+3:9: +3:10 + debug b => _2; + let _3: i32; scope 3 { - debug c => _3; // in scope 3 at $DIR/checked.rs:+3:9: +3:10 - let _7: i32; // in scope 3 at $DIR/checked.rs:+5:9: +5:10 + debug c => _3; + let _7: i32; scope 4 { - debug d => _7; // in scope 4 at $DIR/checked.rs:+5:9: +5:10 - let _8: i32; // in scope 4 at $DIR/checked.rs:+6:9: +6:10 + debug d => _7; + let _8: i32; scope 5 { - debug e => _8; // in scope 5 at $DIR/checked.rs:+6:9: +6:10 + debug e => _8; } } } @@ -30,51 +30,51 @@ } bb0: { - StorageLive(_1); // scope 0 at $DIR/checked.rs:+1:9: +1:10 - _1 = const 1_i32; // scope 0 at $DIR/checked.rs:+1:13: +1:14 - StorageLive(_2); // scope 1 at $DIR/checked.rs:+2:9: +2:10 - _2 = const 2_i32; // scope 1 at $DIR/checked.rs:+2:13: +2:14 - StorageLive(_3); // scope 2 at $DIR/checked.rs:+3:9: +3:10 - StorageLive(_4); // scope 2 at $DIR/checked.rs:+3:13: +3:14 -- _4 = _1; // scope 2 at $DIR/checked.rs:+3:13: +3:14 -+ _4 = const 1_i32; // scope 2 at $DIR/checked.rs:+3:13: +3:14 - StorageLive(_5); // scope 2 at $DIR/checked.rs:+3:17: +3:18 -- _5 = _2; // scope 2 at $DIR/checked.rs:+3:17: +3:18 -- _6 = CheckedAdd(_4, _5); // scope 2 at $DIR/checked.rs:+3:13: +3:18 -- assert(!move (_6.1: bool), "attempt to compute `{} + {}`, which would overflow", move _4, move _5) -> [success: bb1, unwind unreachable]; // scope 2 at $DIR/checked.rs:+3:13: +3:18 -+ _5 = const 2_i32; // scope 2 at $DIR/checked.rs:+3:17: +3:18 -+ _6 = CheckedAdd(const 1_i32, const 2_i32); // scope 2 at $DIR/checked.rs:+3:13: +3:18 -+ assert(!const false, "attempt to compute `{} + {}`, which would overflow", const 1_i32, const 2_i32) -> [success: bb1, unwind unreachable]; // scope 2 at $DIR/checked.rs:+3:13: +3:18 + StorageLive(_1); + _1 = const 1_i32; + StorageLive(_2); + _2 = const 2_i32; + StorageLive(_3); + StorageLive(_4); +- _4 = _1; ++ _4 = const 1_i32; + StorageLive(_5); +- _5 = _2; +- _6 = CheckedAdd(_4, _5); +- assert(!move (_6.1: bool), "attempt to compute `{} + {}`, which would overflow", move _4, move _5) -> [success: bb1, unwind unreachable]; ++ _5 = const 2_i32; ++ _6 = CheckedAdd(const 1_i32, const 2_i32); ++ assert(!const false, "attempt to compute `{} + {}`, which would overflow", const 1_i32, const 2_i32) -> [success: bb1, unwind unreachable]; } bb1: { -- _3 = move (_6.0: i32); // scope 2 at $DIR/checked.rs:+3:13: +3:18 -+ _3 = const 3_i32; // scope 2 at $DIR/checked.rs:+3:13: +3:18 - StorageDead(_5); // scope 2 at $DIR/checked.rs:+3:17: +3:18 - StorageDead(_4); // scope 2 at $DIR/checked.rs:+3:17: +3:18 - StorageLive(_7); // scope 3 at $DIR/checked.rs:+5:9: +5:10 - _7 = const _; // scope 3 at $DIR/checked.rs:+5:13: +5:21 - StorageLive(_8); // scope 4 at $DIR/checked.rs:+6:9: +6:10 - StorageLive(_9); // scope 4 at $DIR/checked.rs:+6:13: +6:14 -- _9 = _7; // scope 4 at $DIR/checked.rs:+6:13: +6:14 -- _10 = CheckedAdd(_9, const 1_i32); // scope 4 at $DIR/checked.rs:+6:13: +6:18 -- assert(!move (_10.1: bool), "attempt to compute `{} + {}`, which would overflow", move _9, const 1_i32) -> [success: bb2, unwind unreachable]; // scope 4 at $DIR/checked.rs:+6:13: +6:18 -+ _9 = const i32::MAX; // scope 4 at $DIR/checked.rs:+6:13: +6:14 -+ _10 = CheckedAdd(const i32::MAX, const 1_i32); // scope 4 at $DIR/checked.rs:+6:13: +6:18 -+ assert(!const true, "attempt to compute `{} + {}`, which would overflow", const i32::MAX, const 1_i32) -> [success: bb2, unwind unreachable]; // scope 4 at $DIR/checked.rs:+6:13: +6:18 +- _3 = move (_6.0: i32); ++ _3 = const 3_i32; + StorageDead(_5); + StorageDead(_4); + StorageLive(_7); + _7 = const _; + StorageLive(_8); + StorageLive(_9); +- _9 = _7; +- _10 = CheckedAdd(_9, const 1_i32); +- assert(!move (_10.1: bool), "attempt to compute `{} + {}`, which would overflow", move _9, const 1_i32) -> [success: bb2, unwind unreachable]; ++ _9 = const i32::MAX; ++ _10 = CheckedAdd(const i32::MAX, const 1_i32); ++ assert(!const true, "attempt to compute `{} + {}`, which would overflow", const i32::MAX, const 1_i32) -> [success: bb2, unwind unreachable]; } bb2: { -- _8 = move (_10.0: i32); // scope 4 at $DIR/checked.rs:+6:13: +6:18 -+ _8 = const i32::MIN; // scope 4 at $DIR/checked.rs:+6:13: +6:18 - StorageDead(_9); // scope 4 at $DIR/checked.rs:+6:17: +6:18 - _0 = const (); // scope 0 at $DIR/checked.rs:+0:11: +7:2 - StorageDead(_8); // scope 4 at $DIR/checked.rs:+7:1: +7:2 - StorageDead(_7); // scope 3 at $DIR/checked.rs:+7:1: +7:2 - StorageDead(_3); // scope 2 at $DIR/checked.rs:+7:1: +7:2 - StorageDead(_2); // scope 1 at $DIR/checked.rs:+7:1: +7:2 - StorageDead(_1); // scope 0 at $DIR/checked.rs:+7:1: +7:2 - return; // scope 0 at $DIR/checked.rs:+7:2: +7:2 +- _8 = move (_10.0: i32); ++ _8 = const i32::MIN; + StorageDead(_9); + _0 = const (); + StorageDead(_8); + StorageDead(_7); + StorageDead(_3); + StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/dataflow-const-prop/checked.main.DataflowConstProp.panic-unwind.diff b/tests/mir-opt/dataflow-const-prop/checked.main.DataflowConstProp.panic-unwind.diff index 944afed8f465a..784841eacbfad 100644 --- a/tests/mir-opt/dataflow-const-prop/checked.main.DataflowConstProp.panic-unwind.diff +++ b/tests/mir-opt/dataflow-const-prop/checked.main.DataflowConstProp.panic-unwind.diff @@ -2,27 +2,27 @@ + // MIR for `main` after DataflowConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/checked.rs:+0:11: +0:11 - let _1: i32; // in scope 0 at $DIR/checked.rs:+1:9: +1:10 - let mut _4: i32; // in scope 0 at $DIR/checked.rs:+3:13: +3:14 - let mut _5: i32; // in scope 0 at $DIR/checked.rs:+3:17: +3:18 - let mut _6: (i32, bool); // in scope 0 at $DIR/checked.rs:+3:13: +3:18 - let mut _9: i32; // in scope 0 at $DIR/checked.rs:+6:13: +6:14 - let mut _10: (i32, bool); // in scope 0 at $DIR/checked.rs:+6:13: +6:18 + let mut _0: (); + let _1: i32; + let mut _4: i32; + let mut _5: i32; + let mut _6: (i32, bool); + let mut _9: i32; + let mut _10: (i32, bool); scope 1 { - debug a => _1; // in scope 1 at $DIR/checked.rs:+1:9: +1:10 - let _2: i32; // in scope 1 at $DIR/checked.rs:+2:9: +2:10 + debug a => _1; + let _2: i32; scope 2 { - debug b => _2; // in scope 2 at $DIR/checked.rs:+2:9: +2:10 - let _3: i32; // in scope 2 at $DIR/checked.rs:+3:9: +3:10 + debug b => _2; + let _3: i32; scope 3 { - debug c => _3; // in scope 3 at $DIR/checked.rs:+3:9: +3:10 - let _7: i32; // in scope 3 at $DIR/checked.rs:+5:9: +5:10 + debug c => _3; + let _7: i32; scope 4 { - debug d => _7; // in scope 4 at $DIR/checked.rs:+5:9: +5:10 - let _8: i32; // in scope 4 at $DIR/checked.rs:+6:9: +6:10 + debug d => _7; + let _8: i32; scope 5 { - debug e => _8; // in scope 5 at $DIR/checked.rs:+6:9: +6:10 + debug e => _8; } } } @@ -30,51 +30,51 @@ } bb0: { - StorageLive(_1); // scope 0 at $DIR/checked.rs:+1:9: +1:10 - _1 = const 1_i32; // scope 0 at $DIR/checked.rs:+1:13: +1:14 - StorageLive(_2); // scope 1 at $DIR/checked.rs:+2:9: +2:10 - _2 = const 2_i32; // scope 1 at $DIR/checked.rs:+2:13: +2:14 - StorageLive(_3); // scope 2 at $DIR/checked.rs:+3:9: +3:10 - StorageLive(_4); // scope 2 at $DIR/checked.rs:+3:13: +3:14 -- _4 = _1; // scope 2 at $DIR/checked.rs:+3:13: +3:14 -+ _4 = const 1_i32; // scope 2 at $DIR/checked.rs:+3:13: +3:14 - StorageLive(_5); // scope 2 at $DIR/checked.rs:+3:17: +3:18 -- _5 = _2; // scope 2 at $DIR/checked.rs:+3:17: +3:18 -- _6 = CheckedAdd(_4, _5); // scope 2 at $DIR/checked.rs:+3:13: +3:18 -- assert(!move (_6.1: bool), "attempt to compute `{} + {}`, which would overflow", move _4, move _5) -> bb1; // scope 2 at $DIR/checked.rs:+3:13: +3:18 -+ _5 = const 2_i32; // scope 2 at $DIR/checked.rs:+3:17: +3:18 -+ _6 = CheckedAdd(const 1_i32, const 2_i32); // scope 2 at $DIR/checked.rs:+3:13: +3:18 -+ assert(!const false, "attempt to compute `{} + {}`, which would overflow", const 1_i32, const 2_i32) -> bb1; // scope 2 at $DIR/checked.rs:+3:13: +3:18 + StorageLive(_1); + _1 = const 1_i32; + StorageLive(_2); + _2 = const 2_i32; + StorageLive(_3); + StorageLive(_4); +- _4 = _1; ++ _4 = const 1_i32; + StorageLive(_5); +- _5 = _2; +- _6 = CheckedAdd(_4, _5); +- assert(!move (_6.1: bool), "attempt to compute `{} + {}`, which would overflow", move _4, move _5) -> bb1; ++ _5 = const 2_i32; ++ _6 = CheckedAdd(const 1_i32, const 2_i32); ++ assert(!const false, "attempt to compute `{} + {}`, which would overflow", const 1_i32, const 2_i32) -> bb1; } bb1: { -- _3 = move (_6.0: i32); // scope 2 at $DIR/checked.rs:+3:13: +3:18 -+ _3 = const 3_i32; // scope 2 at $DIR/checked.rs:+3:13: +3:18 - StorageDead(_5); // scope 2 at $DIR/checked.rs:+3:17: +3:18 - StorageDead(_4); // scope 2 at $DIR/checked.rs:+3:17: +3:18 - StorageLive(_7); // scope 3 at $DIR/checked.rs:+5:9: +5:10 - _7 = const _; // scope 3 at $DIR/checked.rs:+5:13: +5:21 - StorageLive(_8); // scope 4 at $DIR/checked.rs:+6:9: +6:10 - StorageLive(_9); // scope 4 at $DIR/checked.rs:+6:13: +6:14 -- _9 = _7; // scope 4 at $DIR/checked.rs:+6:13: +6:14 -- _10 = CheckedAdd(_9, const 1_i32); // scope 4 at $DIR/checked.rs:+6:13: +6:18 -- assert(!move (_10.1: bool), "attempt to compute `{} + {}`, which would overflow", move _9, const 1_i32) -> bb2; // scope 4 at $DIR/checked.rs:+6:13: +6:18 -+ _9 = const i32::MAX; // scope 4 at $DIR/checked.rs:+6:13: +6:14 -+ _10 = CheckedAdd(const i32::MAX, const 1_i32); // scope 4 at $DIR/checked.rs:+6:13: +6:18 -+ assert(!const true, "attempt to compute `{} + {}`, which would overflow", const i32::MAX, const 1_i32) -> bb2; // scope 4 at $DIR/checked.rs:+6:13: +6:18 +- _3 = move (_6.0: i32); ++ _3 = const 3_i32; + StorageDead(_5); + StorageDead(_4); + StorageLive(_7); + _7 = const _; + StorageLive(_8); + StorageLive(_9); +- _9 = _7; +- _10 = CheckedAdd(_9, const 1_i32); +- assert(!move (_10.1: bool), "attempt to compute `{} + {}`, which would overflow", move _9, const 1_i32) -> bb2; ++ _9 = const i32::MAX; ++ _10 = CheckedAdd(const i32::MAX, const 1_i32); ++ assert(!const true, "attempt to compute `{} + {}`, which would overflow", const i32::MAX, const 1_i32) -> bb2; } bb2: { -- _8 = move (_10.0: i32); // scope 4 at $DIR/checked.rs:+6:13: +6:18 -+ _8 = const i32::MIN; // scope 4 at $DIR/checked.rs:+6:13: +6:18 - StorageDead(_9); // scope 4 at $DIR/checked.rs:+6:17: +6:18 - _0 = const (); // scope 0 at $DIR/checked.rs:+0:11: +7:2 - StorageDead(_8); // scope 4 at $DIR/checked.rs:+7:1: +7:2 - StorageDead(_7); // scope 3 at $DIR/checked.rs:+7:1: +7:2 - StorageDead(_3); // scope 2 at $DIR/checked.rs:+7:1: +7:2 - StorageDead(_2); // scope 1 at $DIR/checked.rs:+7:1: +7:2 - StorageDead(_1); // scope 0 at $DIR/checked.rs:+7:1: +7:2 - return; // scope 0 at $DIR/checked.rs:+7:2: +7:2 +- _8 = move (_10.0: i32); ++ _8 = const i32::MIN; + StorageDead(_9); + _0 = const (); + StorageDead(_8); + StorageDead(_7); + StorageDead(_3); + StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/dataflow-const-prop/enum.multiple.DataflowConstProp.diff b/tests/mir-opt/dataflow-const-prop/enum.multiple.DataflowConstProp.diff index c4002d65e5db5..775325c4d0626 100644 --- a/tests/mir-opt/dataflow-const-prop/enum.multiple.DataflowConstProp.diff +++ b/tests/mir-opt/dataflow-const-prop/enum.multiple.DataflowConstProp.diff @@ -2,81 +2,81 @@ + // MIR for `multiple` after DataflowConstProp fn multiple(_1: bool, _2: u8) -> () { - debug x => _1; // in scope 0 at $DIR/enum.rs:+0:13: +0:14 - debug i => _2; // in scope 0 at $DIR/enum.rs:+0:22: +0:23 - let mut _0: (); // return place in scope 0 at $DIR/enum.rs:+0:29: +0:29 - let _3: std::option::Option; // in scope 0 at $DIR/enum.rs:+1:9: +1:10 - let mut _4: bool; // in scope 0 at $DIR/enum.rs:+1:16: +1:17 - let mut _5: u8; // in scope 0 at $DIR/enum.rs:+2:14: +2:15 - let mut _7: isize; // in scope 0 at $DIR/enum.rs:+9:23: +9:30 + debug x => _1; + debug i => _2; + let mut _0: (); + let _3: std::option::Option; + let mut _4: bool; + let mut _5: u8; + let mut _7: isize; scope 1 { - debug e => _3; // in scope 1 at $DIR/enum.rs:+1:9: +1:10 - let _6: u8; // in scope 1 at $DIR/enum.rs:+9:9: +9:10 - let _8: u8; // in scope 1 at $DIR/enum.rs:+9:28: +9:29 + debug e => _3; + let _6: u8; + let _8: u8; scope 2 { - debug x => _6; // in scope 2 at $DIR/enum.rs:+9:9: +9:10 - let _9: u8; // in scope 2 at $DIR/enum.rs:+11:9: +11:10 + debug x => _6; + let _9: u8; scope 4 { - debug y => _9; // in scope 4 at $DIR/enum.rs:+11:9: +11:10 + debug y => _9; } } scope 3 { - debug i => _8; // in scope 3 at $DIR/enum.rs:+9:28: +9:29 + debug i => _8; } } bb0: { - StorageLive(_3); // scope 0 at $DIR/enum.rs:+1:9: +1:10 - StorageLive(_4); // scope 0 at $DIR/enum.rs:+1:16: +1:17 - _4 = _1; // scope 0 at $DIR/enum.rs:+1:16: +1:17 - switchInt(move _4) -> [0: bb2, otherwise: bb1]; // scope 0 at $DIR/enum.rs:+1:16: +1:17 + StorageLive(_3); + StorageLive(_4); + _4 = _1; + switchInt(move _4) -> [0: bb2, otherwise: bb1]; } bb1: { - StorageLive(_5); // scope 0 at $DIR/enum.rs:+2:14: +2:15 - _5 = _2; // scope 0 at $DIR/enum.rs:+2:14: +2:15 - _3 = Option::::Some(move _5); // scope 0 at $DIR/enum.rs:+2:9: +2:16 - StorageDead(_5); // scope 0 at $DIR/enum.rs:+2:15: +2:16 - goto -> bb3; // scope 0 at $DIR/enum.rs:+1:13: +5:6 + StorageLive(_5); + _5 = _2; + _3 = Option::::Some(move _5); + StorageDead(_5); + goto -> bb3; } bb2: { - _3 = Option::::None; // scope 0 at $DIR/enum.rs:+4:9: +4:13 - goto -> bb3; // scope 0 at $DIR/enum.rs:+1:13: +5:6 + _3 = Option::::None; + goto -> bb3; } bb3: { - StorageDead(_4); // scope 0 at $DIR/enum.rs:+5:5: +5:6 - StorageLive(_6); // scope 1 at $DIR/enum.rs:+9:9: +9:10 - _7 = discriminant(_3); // scope 1 at $DIR/enum.rs:+9:19: +9:20 - switchInt(move _7) -> [0: bb4, 1: bb6, otherwise: bb5]; // scope 1 at $DIR/enum.rs:+9:13: +9:20 + StorageDead(_4); + StorageLive(_6); + _7 = discriminant(_3); + switchInt(move _7) -> [0: bb4, 1: bb6, otherwise: bb5]; } bb4: { - _6 = const 0_u8; // scope 1 at $DIR/enum.rs:+9:45: +9:46 - goto -> bb7; // scope 1 at $DIR/enum.rs:+9:45: +9:46 + _6 = const 0_u8; + goto -> bb7; } bb5: { - unreachable; // scope 1 at $DIR/enum.rs:+9:19: +9:20 + unreachable; } bb6: { - StorageLive(_8); // scope 1 at $DIR/enum.rs:+9:28: +9:29 - _8 = ((_3 as Some).0: u8); // scope 1 at $DIR/enum.rs:+9:28: +9:29 - _6 = _8; // scope 3 at $DIR/enum.rs:+9:34: +9:35 - StorageDead(_8); // scope 1 at $DIR/enum.rs:+9:34: +9:35 - goto -> bb7; // scope 1 at $DIR/enum.rs:+9:34: +9:35 + StorageLive(_8); + _8 = ((_3 as Some).0: u8); + _6 = _8; + StorageDead(_8); + goto -> bb7; } bb7: { - StorageLive(_9); // scope 2 at $DIR/enum.rs:+11:9: +11:10 - _9 = _6; // scope 2 at $DIR/enum.rs:+11:13: +11:14 - _0 = const (); // scope 0 at $DIR/enum.rs:+0:29: +12:2 - StorageDead(_9); // scope 2 at $DIR/enum.rs:+12:1: +12:2 - StorageDead(_6); // scope 1 at $DIR/enum.rs:+12:1: +12:2 - StorageDead(_3); // scope 0 at $DIR/enum.rs:+12:1: +12:2 - return; // scope 0 at $DIR/enum.rs:+12:2: +12:2 + StorageLive(_9); + _9 = _6; + _0 = const (); + StorageDead(_9); + StorageDead(_6); + StorageDead(_3); + return; } } diff --git a/tests/mir-opt/dataflow-const-prop/enum.mutate_discriminant.DataflowConstProp.diff b/tests/mir-opt/dataflow-const-prop/enum.mutate_discriminant.DataflowConstProp.diff index 038e6c6bd9005..960e69ee9165e 100644 --- a/tests/mir-opt/dataflow-const-prop/enum.mutate_discriminant.DataflowConstProp.diff +++ b/tests/mir-opt/dataflow-const-prop/enum.mutate_discriminant.DataflowConstProp.diff @@ -2,25 +2,25 @@ + // MIR for `mutate_discriminant` after DataflowConstProp fn mutate_discriminant() -> u8 { - let mut _0: u8; // return place in scope 0 at $DIR/enum.rs:+0:29: +0:31 - let mut _1: std::option::Option; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _2: isize; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL + let mut _0: u8; + let mut _1: std::option::Option; + let mut _2: isize; bb0: { - discriminant(_1) = 1; // scope 0 at $DIR/enum.rs:+4:13: +4:34 - (((_1 as variant#1).0: NonZeroUsize).0: usize) = const 0_usize; // scope 0 at $DIR/enum.rs:+6:13: +6:64 - _2 = discriminant(_1); // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - switchInt(_2) -> [0: bb1, otherwise: bb2]; // scope 0 at $DIR/enum.rs:+9:13: +12:14 + discriminant(_1) = 1; + (((_1 as variant#1).0: NonZeroUsize).0: usize) = const 0_usize; + _2 = discriminant(_1); + switchInt(_2) -> [0: bb1, otherwise: bb2]; } bb1: { - _0 = const 1_u8; // scope 0 at $DIR/enum.rs:+15:13: +15:20 - return; // scope 0 at $DIR/enum.rs:+16:13: +16:21 + _0 = const 1_u8; + return; } bb2: { - _0 = const 2_u8; // scope 0 at $DIR/enum.rs:+19:13: +19:20 - unreachable; // scope 0 at $DIR/enum.rs:+20:13: +20:26 + _0 = const 2_u8; + unreachable; } } diff --git a/tests/mir-opt/dataflow-const-prop/enum.simple.DataflowConstProp.diff b/tests/mir-opt/dataflow-const-prop/enum.simple.DataflowConstProp.diff index 22bdc35d694c1..3946e7c7d96c1 100644 --- a/tests/mir-opt/dataflow-const-prop/enum.simple.DataflowConstProp.diff +++ b/tests/mir-opt/dataflow-const-prop/enum.simple.DataflowConstProp.diff @@ -2,62 +2,62 @@ + // MIR for `simple` after DataflowConstProp fn simple() -> () { - let mut _0: (); // return place in scope 0 at $DIR/enum.rs:+0:13: +0:13 - let _1: E; // in scope 0 at $DIR/enum.rs:+1:9: +1:10 - let mut _3: isize; // in scope 0 at $DIR/enum.rs:+2:23: +2:31 + let mut _0: (); + let _1: E; + let mut _3: isize; scope 1 { - debug e => _1; // in scope 1 at $DIR/enum.rs:+1:9: +1:10 - let _2: i32; // in scope 1 at $DIR/enum.rs:+2:9: +2:10 - let _4: i32; // in scope 1 at $DIR/enum.rs:+2:29: +2:30 - let _5: i32; // in scope 1 at $DIR/enum.rs:+2:44: +2:45 + debug e => _1; + let _2: i32; + let _4: i32; + let _5: i32; scope 2 { - debug x => _2; // in scope 2 at $DIR/enum.rs:+2:9: +2:10 + debug x => _2; } scope 3 { - debug x => _4; // in scope 3 at $DIR/enum.rs:+2:29: +2:30 + debug x => _4; } scope 4 { - debug x => _5; // in scope 4 at $DIR/enum.rs:+2:44: +2:45 + debug x => _5; } } bb0: { - StorageLive(_1); // scope 0 at $DIR/enum.rs:+1:9: +1:10 - _1 = E::V1(const 0_i32); // scope 0 at $DIR/enum.rs:+1:13: +1:21 - StorageLive(_2); // scope 1 at $DIR/enum.rs:+2:9: +2:10 -- _3 = discriminant(_1); // scope 1 at $DIR/enum.rs:+2:19: +2:20 -- switchInt(move _3) -> [0: bb3, 1: bb1, otherwise: bb2]; // scope 1 at $DIR/enum.rs:+2:13: +2:20 -+ _3 = const 0_isize; // scope 1 at $DIR/enum.rs:+2:19: +2:20 -+ switchInt(const 0_isize) -> [0: bb3, 1: bb1, otherwise: bb2]; // scope 1 at $DIR/enum.rs:+2:13: +2:20 + StorageLive(_1); + _1 = E::V1(const 0_i32); + StorageLive(_2); +- _3 = discriminant(_1); +- switchInt(move _3) -> [0: bb3, 1: bb1, otherwise: bb2]; ++ _3 = const 0_isize; ++ switchInt(const 0_isize) -> [0: bb3, 1: bb1, otherwise: bb2]; } bb1: { - StorageLive(_5); // scope 1 at $DIR/enum.rs:+2:44: +2:45 - _5 = ((_1 as V2).0: i32); // scope 1 at $DIR/enum.rs:+2:44: +2:45 - _2 = _5; // scope 4 at $DIR/enum.rs:+2:50: +2:51 - StorageDead(_5); // scope 1 at $DIR/enum.rs:+2:50: +2:51 - goto -> bb4; // scope 1 at $DIR/enum.rs:+2:50: +2:51 + StorageLive(_5); + _5 = ((_1 as V2).0: i32); + _2 = _5; + StorageDead(_5); + goto -> bb4; } bb2: { - unreachable; // scope 1 at $DIR/enum.rs:+2:19: +2:20 + unreachable; } bb3: { - StorageLive(_4); // scope 1 at $DIR/enum.rs:+2:29: +2:30 -- _4 = ((_1 as V1).0: i32); // scope 1 at $DIR/enum.rs:+2:29: +2:30 -- _2 = _4; // scope 3 at $DIR/enum.rs:+2:35: +2:36 -+ _4 = const 0_i32; // scope 1 at $DIR/enum.rs:+2:29: +2:30 -+ _2 = const 0_i32; // scope 3 at $DIR/enum.rs:+2:35: +2:36 - StorageDead(_4); // scope 1 at $DIR/enum.rs:+2:35: +2:36 - goto -> bb4; // scope 1 at $DIR/enum.rs:+2:35: +2:36 + StorageLive(_4); +- _4 = ((_1 as V1).0: i32); +- _2 = _4; ++ _4 = const 0_i32; ++ _2 = const 0_i32; + StorageDead(_4); + goto -> bb4; } bb4: { - _0 = const (); // scope 0 at $DIR/enum.rs:+0:13: +3:2 - StorageDead(_2); // scope 1 at $DIR/enum.rs:+3:1: +3:2 - StorageDead(_1); // scope 0 at $DIR/enum.rs:+3:1: +3:2 - return; // scope 0 at $DIR/enum.rs:+3:2: +3:2 + _0 = const (); + StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/dataflow-const-prop/if.main.DataflowConstProp.diff b/tests/mir-opt/dataflow-const-prop/if.main.DataflowConstProp.diff index 32489b4bd6bfe..08b599f9f5d0d 100644 --- a/tests/mir-opt/dataflow-const-prop/if.main.DataflowConstProp.diff +++ b/tests/mir-opt/dataflow-const-prop/if.main.DataflowConstProp.diff @@ -2,29 +2,29 @@ + // MIR for `main` after DataflowConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/if.rs:+0:11: +0:11 - let _1: i32; // in scope 0 at $DIR/if.rs:+1:9: +1:10 - let mut _3: bool; // in scope 0 at $DIR/if.rs:+2:16: +2:22 - let mut _4: i32; // in scope 0 at $DIR/if.rs:+2:16: +2:17 - let mut _6: i32; // in scope 0 at $DIR/if.rs:+3:13: +3:14 - let mut _8: bool; // in scope 0 at $DIR/if.rs:+5:16: +5:22 - let mut _9: i32; // in scope 0 at $DIR/if.rs:+5:16: +5:17 - let mut _10: i32; // in scope 0 at $DIR/if.rs:+5:36: +5:37 - let mut _12: i32; // in scope 0 at $DIR/if.rs:+6:13: +6:14 + let mut _0: (); + let _1: i32; + let mut _3: bool; + let mut _4: i32; + let mut _6: i32; + let mut _8: bool; + let mut _9: i32; + let mut _10: i32; + let mut _12: i32; scope 1 { - debug a => _1; // in scope 1 at $DIR/if.rs:+1:9: +1:10 - let _2: i32; // in scope 1 at $DIR/if.rs:+2:9: +2:10 + debug a => _1; + let _2: i32; scope 2 { - debug b => _2; // in scope 2 at $DIR/if.rs:+2:9: +2:10 - let _5: i32; // in scope 2 at $DIR/if.rs:+3:9: +3:10 + debug b => _2; + let _5: i32; scope 3 { - debug c => _5; // in scope 3 at $DIR/if.rs:+3:9: +3:10 - let _7: i32; // in scope 3 at $DIR/if.rs:+5:9: +5:10 + debug c => _5; + let _7: i32; scope 4 { - debug d => _7; // in scope 4 at $DIR/if.rs:+5:9: +5:10 - let _11: i32; // in scope 4 at $DIR/if.rs:+6:9: +6:10 + debug d => _7; + let _11: i32; scope 5 { - debug e => _11; // in scope 5 at $DIR/if.rs:+6:9: +6:10 + debug e => _11; } } } @@ -32,81 +32,81 @@ } bb0: { - StorageLive(_1); // scope 0 at $DIR/if.rs:+1:9: +1:10 - _1 = const 1_i32; // scope 0 at $DIR/if.rs:+1:13: +1:14 - StorageLive(_2); // scope 1 at $DIR/if.rs:+2:9: +2:10 - StorageLive(_3); // scope 1 at $DIR/if.rs:+2:16: +2:22 - StorageLive(_4); // scope 1 at $DIR/if.rs:+2:16: +2:17 -- _4 = _1; // scope 1 at $DIR/if.rs:+2:16: +2:17 -- _3 = Eq(move _4, const 1_i32); // scope 1 at $DIR/if.rs:+2:16: +2:22 -+ _4 = const 1_i32; // scope 1 at $DIR/if.rs:+2:16: +2:17 -+ _3 = const true; // scope 1 at $DIR/if.rs:+2:16: +2:22 - StorageDead(_4); // scope 1 at $DIR/if.rs:+2:21: +2:22 -- switchInt(move _3) -> [0: bb2, otherwise: bb1]; // scope 1 at $DIR/if.rs:+2:16: +2:22 -+ switchInt(const true) -> [0: bb2, otherwise: bb1]; // scope 1 at $DIR/if.rs:+2:16: +2:22 + StorageLive(_1); + _1 = const 1_i32; + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); +- _4 = _1; +- _3 = Eq(move _4, const 1_i32); ++ _4 = const 1_i32; ++ _3 = const true; + StorageDead(_4); +- switchInt(move _3) -> [0: bb2, otherwise: bb1]; ++ switchInt(const true) -> [0: bb2, otherwise: bb1]; } bb1: { - _2 = const 2_i32; // scope 1 at $DIR/if.rs:+2:25: +2:26 - goto -> bb3; // scope 1 at $DIR/if.rs:+2:13: +2:39 + _2 = const 2_i32; + goto -> bb3; } bb2: { - _2 = const 3_i32; // scope 1 at $DIR/if.rs:+2:36: +2:37 - goto -> bb3; // scope 1 at $DIR/if.rs:+2:13: +2:39 + _2 = const 3_i32; + goto -> bb3; } bb3: { - StorageDead(_3); // scope 1 at $DIR/if.rs:+2:38: +2:39 - StorageLive(_5); // scope 2 at $DIR/if.rs:+3:9: +3:10 - StorageLive(_6); // scope 2 at $DIR/if.rs:+3:13: +3:14 -- _6 = _2; // scope 2 at $DIR/if.rs:+3:13: +3:14 -- _5 = Add(move _6, const 1_i32); // scope 2 at $DIR/if.rs:+3:13: +3:18 -+ _6 = const 2_i32; // scope 2 at $DIR/if.rs:+3:13: +3:14 -+ _5 = const 3_i32; // scope 2 at $DIR/if.rs:+3:13: +3:18 - StorageDead(_6); // scope 2 at $DIR/if.rs:+3:17: +3:18 - StorageLive(_7); // scope 3 at $DIR/if.rs:+5:9: +5:10 - StorageLive(_8); // scope 3 at $DIR/if.rs:+5:16: +5:22 - StorageLive(_9); // scope 3 at $DIR/if.rs:+5:16: +5:17 -- _9 = _1; // scope 3 at $DIR/if.rs:+5:16: +5:17 -- _8 = Eq(move _9, const 1_i32); // scope 3 at $DIR/if.rs:+5:16: +5:22 -+ _9 = const 1_i32; // scope 3 at $DIR/if.rs:+5:16: +5:17 -+ _8 = const true; // scope 3 at $DIR/if.rs:+5:16: +5:22 - StorageDead(_9); // scope 3 at $DIR/if.rs:+5:21: +5:22 -- switchInt(move _8) -> [0: bb5, otherwise: bb4]; // scope 3 at $DIR/if.rs:+5:16: +5:22 -+ switchInt(const true) -> [0: bb5, otherwise: bb4]; // scope 3 at $DIR/if.rs:+5:16: +5:22 + StorageDead(_3); + StorageLive(_5); + StorageLive(_6); +- _6 = _2; +- _5 = Add(move _6, const 1_i32); ++ _6 = const 2_i32; ++ _5 = const 3_i32; + StorageDead(_6); + StorageLive(_7); + StorageLive(_8); + StorageLive(_9); +- _9 = _1; +- _8 = Eq(move _9, const 1_i32); ++ _9 = const 1_i32; ++ _8 = const true; + StorageDead(_9); +- switchInt(move _8) -> [0: bb5, otherwise: bb4]; ++ switchInt(const true) -> [0: bb5, otherwise: bb4]; } bb4: { -- _7 = _1; // scope 3 at $DIR/if.rs:+5:25: +5:26 -+ _7 = const 1_i32; // scope 3 at $DIR/if.rs:+5:25: +5:26 - goto -> bb6; // scope 3 at $DIR/if.rs:+5:13: +5:43 +- _7 = _1; ++ _7 = const 1_i32; + goto -> bb6; } bb5: { - StorageLive(_10); // scope 3 at $DIR/if.rs:+5:36: +5:37 - _10 = _1; // scope 3 at $DIR/if.rs:+5:36: +5:37 - _7 = Add(move _10, const 1_i32); // scope 3 at $DIR/if.rs:+5:36: +5:41 - StorageDead(_10); // scope 3 at $DIR/if.rs:+5:40: +5:41 - goto -> bb6; // scope 3 at $DIR/if.rs:+5:13: +5:43 + StorageLive(_10); + _10 = _1; + _7 = Add(move _10, const 1_i32); + StorageDead(_10); + goto -> bb6; } bb6: { - StorageDead(_8); // scope 3 at $DIR/if.rs:+5:42: +5:43 - StorageLive(_11); // scope 4 at $DIR/if.rs:+6:9: +6:10 - StorageLive(_12); // scope 4 at $DIR/if.rs:+6:13: +6:14 -- _12 = _7; // scope 4 at $DIR/if.rs:+6:13: +6:14 -- _11 = Add(move _12, const 1_i32); // scope 4 at $DIR/if.rs:+6:13: +6:18 -+ _12 = const 1_i32; // scope 4 at $DIR/if.rs:+6:13: +6:14 -+ _11 = const 2_i32; // scope 4 at $DIR/if.rs:+6:13: +6:18 - StorageDead(_12); // scope 4 at $DIR/if.rs:+6:17: +6:18 - _0 = const (); // scope 0 at $DIR/if.rs:+0:11: +7:2 - StorageDead(_11); // scope 4 at $DIR/if.rs:+7:1: +7:2 - StorageDead(_7); // scope 3 at $DIR/if.rs:+7:1: +7:2 - StorageDead(_5); // scope 2 at $DIR/if.rs:+7:1: +7:2 - StorageDead(_2); // scope 1 at $DIR/if.rs:+7:1: +7:2 - StorageDead(_1); // scope 0 at $DIR/if.rs:+7:1: +7:2 - return; // scope 0 at $DIR/if.rs:+7:2: +7:2 + StorageDead(_8); + StorageLive(_11); + StorageLive(_12); +- _12 = _7; +- _11 = Add(move _12, const 1_i32); ++ _12 = const 1_i32; ++ _11 = const 2_i32; + StorageDead(_12); + _0 = const (); + StorageDead(_11); + StorageDead(_7); + StorageDead(_5); + StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/dataflow-const-prop/inherit_overflow.main.DataflowConstProp.panic-abort.diff b/tests/mir-opt/dataflow-const-prop/inherit_overflow.main.DataflowConstProp.panic-abort.diff index ff95cba98ad6b..9a68d3b51b561 100644 --- a/tests/mir-opt/dataflow-const-prop/inherit_overflow.main.DataflowConstProp.panic-abort.diff +++ b/tests/mir-opt/dataflow-const-prop/inherit_overflow.main.DataflowConstProp.panic-abort.diff @@ -2,38 +2,38 @@ + // MIR for `main` after DataflowConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/inherit_overflow.rs:+0:11: +0:11 - let mut _1: u8; // in scope 0 at $DIR/inherit_overflow.rs:+3:13: +3:47 - let mut _2: u8; // in scope 0 at $DIR/inherit_overflow.rs:+3:13: +3:47 - let mut _3: u8; // in scope 0 at $DIR/inherit_overflow.rs:+3:13: +3:47 + let mut _0: (); + let mut _1: u8; + let mut _2: u8; + let mut _3: u8; scope 1 { } - scope 2 (inlined ::add) { // at $DIR/inherit_overflow.rs:9:13: 9:47 - debug self => _2; // in scope 2 at $SRC_DIR/core/src/ops/arith.rs:LL:COL - debug other => _3; // in scope 2 at $SRC_DIR/core/src/ops/arith.rs:LL:COL - let mut _4: (u8, bool); // in scope 2 at $SRC_DIR/core/src/ops/arith.rs:LL:COL + scope 2 (inlined ::add) { + debug self => _2; + debug other => _3; + let mut _4: (u8, bool); } bb0: { - StorageLive(_1); // scope 0 at $DIR/inherit_overflow.rs:+3:13: +3:47 - StorageLive(_2); // scope 0 at $DIR/inherit_overflow.rs:+3:13: +3:47 - _2 = const u8::MAX; // scope 0 at $DIR/inherit_overflow.rs:+3:13: +3:47 - StorageLive(_3); // scope 0 at $DIR/inherit_overflow.rs:+3:13: +3:47 - _3 = const 1_u8; // scope 0 at $DIR/inherit_overflow.rs:+3:13: +3:47 -- _4 = CheckedAdd(_2, _3); // scope 2 at $SRC_DIR/core/src/ops/arith.rs:LL:COL -- assert(!move (_4.1: bool), "attempt to compute `{} + {}`, which would overflow", _2, _3) -> [success: bb1, unwind unreachable]; // scope 2 at $SRC_DIR/core/src/ops/arith.rs:LL:COL -+ _4 = CheckedAdd(const u8::MAX, const 1_u8); // scope 2 at $SRC_DIR/core/src/ops/arith.rs:LL:COL -+ assert(!const true, "attempt to compute `{} + {}`, which would overflow", const u8::MAX, const 1_u8) -> [success: bb1, unwind unreachable]; // scope 2 at $SRC_DIR/core/src/ops/arith.rs:LL:COL + StorageLive(_1); + StorageLive(_2); + _2 = const u8::MAX; + StorageLive(_3); + _3 = const 1_u8; +- _4 = CheckedAdd(_2, _3); +- assert(!move (_4.1: bool), "attempt to compute `{} + {}`, which would overflow", _2, _3) -> [success: bb1, unwind unreachable]; ++ _4 = CheckedAdd(const u8::MAX, const 1_u8); ++ assert(!const true, "attempt to compute `{} + {}`, which would overflow", const u8::MAX, const 1_u8) -> [success: bb1, unwind unreachable]; } bb1: { -- _1 = move (_4.0: u8); // scope 2 at $SRC_DIR/core/src/ops/arith.rs:LL:COL -+ _1 = const 0_u8; // scope 2 at $SRC_DIR/core/src/ops/arith.rs:LL:COL - StorageDead(_3); // scope 0 at $DIR/inherit_overflow.rs:+3:13: +3:47 - StorageDead(_2); // scope 0 at $DIR/inherit_overflow.rs:+3:13: +3:47 - StorageDead(_1); // scope 0 at $DIR/inherit_overflow.rs:+3:47: +3:48 - _0 = const (); // scope 0 at $DIR/inherit_overflow.rs:+0:11: +4:2 - return; // scope 0 at $DIR/inherit_overflow.rs:+4:2: +4:2 +- _1 = move (_4.0: u8); ++ _1 = const 0_u8; + StorageDead(_3); + StorageDead(_2); + StorageDead(_1); + _0 = const (); + return; } } diff --git a/tests/mir-opt/dataflow-const-prop/inherit_overflow.main.DataflowConstProp.panic-unwind.diff b/tests/mir-opt/dataflow-const-prop/inherit_overflow.main.DataflowConstProp.panic-unwind.diff index 1edcc28e68c15..d79a2da1ddb78 100644 --- a/tests/mir-opt/dataflow-const-prop/inherit_overflow.main.DataflowConstProp.panic-unwind.diff +++ b/tests/mir-opt/dataflow-const-prop/inherit_overflow.main.DataflowConstProp.panic-unwind.diff @@ -2,38 +2,38 @@ + // MIR for `main` after DataflowConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/inherit_overflow.rs:+0:11: +0:11 - let mut _1: u8; // in scope 0 at $DIR/inherit_overflow.rs:+3:13: +3:47 - let mut _2: u8; // in scope 0 at $DIR/inherit_overflow.rs:+3:13: +3:47 - let mut _3: u8; // in scope 0 at $DIR/inherit_overflow.rs:+3:13: +3:47 + let mut _0: (); + let mut _1: u8; + let mut _2: u8; + let mut _3: u8; scope 1 { } - scope 2 (inlined ::add) { // at $DIR/inherit_overflow.rs:9:13: 9:47 - debug self => _2; // in scope 2 at $SRC_DIR/core/src/ops/arith.rs:LL:COL - debug other => _3; // in scope 2 at $SRC_DIR/core/src/ops/arith.rs:LL:COL - let mut _4: (u8, bool); // in scope 2 at $SRC_DIR/core/src/ops/arith.rs:LL:COL + scope 2 (inlined ::add) { + debug self => _2; + debug other => _3; + let mut _4: (u8, bool); } bb0: { - StorageLive(_1); // scope 0 at $DIR/inherit_overflow.rs:+3:13: +3:47 - StorageLive(_2); // scope 0 at $DIR/inherit_overflow.rs:+3:13: +3:47 - _2 = const u8::MAX; // scope 0 at $DIR/inherit_overflow.rs:+3:13: +3:47 - StorageLive(_3); // scope 0 at $DIR/inherit_overflow.rs:+3:13: +3:47 - _3 = const 1_u8; // scope 0 at $DIR/inherit_overflow.rs:+3:13: +3:47 -- _4 = CheckedAdd(_2, _3); // scope 2 at $SRC_DIR/core/src/ops/arith.rs:LL:COL -- assert(!move (_4.1: bool), "attempt to compute `{} + {}`, which would overflow", _2, _3) -> bb1; // scope 2 at $SRC_DIR/core/src/ops/arith.rs:LL:COL -+ _4 = CheckedAdd(const u8::MAX, const 1_u8); // scope 2 at $SRC_DIR/core/src/ops/arith.rs:LL:COL -+ assert(!const true, "attempt to compute `{} + {}`, which would overflow", const u8::MAX, const 1_u8) -> bb1; // scope 2 at $SRC_DIR/core/src/ops/arith.rs:LL:COL + StorageLive(_1); + StorageLive(_2); + _2 = const u8::MAX; + StorageLive(_3); + _3 = const 1_u8; +- _4 = CheckedAdd(_2, _3); +- assert(!move (_4.1: bool), "attempt to compute `{} + {}`, which would overflow", _2, _3) -> bb1; ++ _4 = CheckedAdd(const u8::MAX, const 1_u8); ++ assert(!const true, "attempt to compute `{} + {}`, which would overflow", const u8::MAX, const 1_u8) -> bb1; } bb1: { -- _1 = move (_4.0: u8); // scope 2 at $SRC_DIR/core/src/ops/arith.rs:LL:COL -+ _1 = const 0_u8; // scope 2 at $SRC_DIR/core/src/ops/arith.rs:LL:COL - StorageDead(_3); // scope 0 at $DIR/inherit_overflow.rs:+3:13: +3:47 - StorageDead(_2); // scope 0 at $DIR/inherit_overflow.rs:+3:13: +3:47 - StorageDead(_1); // scope 0 at $DIR/inherit_overflow.rs:+3:47: +3:48 - _0 = const (); // scope 0 at $DIR/inherit_overflow.rs:+0:11: +4:2 - return; // scope 0 at $DIR/inherit_overflow.rs:+4:2: +4:2 +- _1 = move (_4.0: u8); ++ _1 = const 0_u8; + StorageDead(_3); + StorageDead(_2); + StorageDead(_1); + _0 = const (); + return; } } diff --git a/tests/mir-opt/dataflow-const-prop/issue_81605.f.DataflowConstProp.diff b/tests/mir-opt/dataflow-const-prop/issue_81605.f.DataflowConstProp.diff index 5a87884977c39..3f65d3fff7e4b 100644 --- a/tests/mir-opt/dataflow-const-prop/issue_81605.f.DataflowConstProp.diff +++ b/tests/mir-opt/dataflow-const-prop/issue_81605.f.DataflowConstProp.diff @@ -2,34 +2,34 @@ + // MIR for `f` after DataflowConstProp fn f() -> usize { - let mut _0: usize; // return place in scope 0 at $DIR/issue_81605.rs:+0:11: +0:16 - let mut _1: usize; // in scope 0 at $DIR/issue_81605.rs:+1:9: +1:33 - let mut _2: bool; // in scope 0 at $DIR/issue_81605.rs:+1:12: +1:16 + let mut _0: usize; + let mut _1: usize; + let mut _2: bool; bb0: { - StorageLive(_1); // scope 0 at $DIR/issue_81605.rs:+1:9: +1:33 - StorageLive(_2); // scope 0 at $DIR/issue_81605.rs:+1:12: +1:16 - _2 = const true; // scope 0 at $DIR/issue_81605.rs:+1:12: +1:16 -- switchInt(move _2) -> [0: bb2, otherwise: bb1]; // scope 0 at $DIR/issue_81605.rs:+1:12: +1:16 -+ switchInt(const true) -> [0: bb2, otherwise: bb1]; // scope 0 at $DIR/issue_81605.rs:+1:12: +1:16 + StorageLive(_1); + StorageLive(_2); + _2 = const true; +- switchInt(move _2) -> [0: bb2, otherwise: bb1]; ++ switchInt(const true) -> [0: bb2, otherwise: bb1]; } bb1: { - _1 = const 1_usize; // scope 0 at $DIR/issue_81605.rs:+1:19: +1:20 - goto -> bb3; // scope 0 at $DIR/issue_81605.rs:+1:9: +1:33 + _1 = const 1_usize; + goto -> bb3; } bb2: { - _1 = const 2_usize; // scope 0 at $DIR/issue_81605.rs:+1:30: +1:31 - goto -> bb3; // scope 0 at $DIR/issue_81605.rs:+1:9: +1:33 + _1 = const 2_usize; + goto -> bb3; } bb3: { - StorageDead(_2); // scope 0 at $DIR/issue_81605.rs:+1:32: +1:33 -- _0 = Add(const 1_usize, move _1); // scope 0 at $DIR/issue_81605.rs:+1:5: +1:33 -+ _0 = const 2_usize; // scope 0 at $DIR/issue_81605.rs:+1:5: +1:33 - StorageDead(_1); // scope 0 at $DIR/issue_81605.rs:+1:32: +1:33 - return; // scope 0 at $DIR/issue_81605.rs:+2:2: +2:2 + StorageDead(_2); +- _0 = Add(const 1_usize, move _1); ++ _0 = const 2_usize; + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/dataflow-const-prop/ref_without_sb.main.DataflowConstProp.panic-abort.diff b/tests/mir-opt/dataflow-const-prop/ref_without_sb.main.DataflowConstProp.panic-abort.diff index 7a9ab39e0e59c..fbbfd61bbedc1 100644 --- a/tests/mir-opt/dataflow-const-prop/ref_without_sb.main.DataflowConstProp.panic-abort.diff +++ b/tests/mir-opt/dataflow-const-prop/ref_without_sb.main.DataflowConstProp.panic-abort.diff @@ -2,54 +2,48 @@ + // MIR for `main` after DataflowConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/ref_without_sb.rs:+0:11: +0:11 - let mut _1: i32; // in scope 0 at $DIR/ref_without_sb.rs:+1:9: +1:14 - let _2: (); // in scope 0 at $DIR/ref_without_sb.rs:+2:5: +2:15 - let mut _3: &i32; // in scope 0 at $DIR/ref_without_sb.rs:+2:12: +2:14 - let _4: &i32; // in scope 0 at $DIR/ref_without_sb.rs:+2:12: +2:14 - let _5: (); // in scope 0 at $DIR/ref_without_sb.rs:+4:5: +4:20 + let mut _0: (); + let mut _1: i32; + let _2: (); + let mut _3: &i32; + let _4: &i32; + let _5: (); scope 1 { - debug a => _1; // in scope 1 at $DIR/ref_without_sb.rs:+1:9: +1:14 - let _6: i32; // in scope 1 at $DIR/ref_without_sb.rs:+6:9: +6:10 + debug a => _1; + let _6: i32; scope 2 { - debug b => _6; // in scope 2 at $DIR/ref_without_sb.rs:+6:9: +6:10 + debug b => _6; } } bb0: { - StorageLive(_1); // scope 0 at $DIR/ref_without_sb.rs:+1:9: +1:14 - _1 = const 0_i32; // scope 0 at $DIR/ref_without_sb.rs:+1:17: +1:18 - StorageLive(_2); // scope 1 at $DIR/ref_without_sb.rs:+2:5: +2:15 - StorageLive(_3); // scope 1 at $DIR/ref_without_sb.rs:+2:12: +2:14 - StorageLive(_4); // scope 1 at $DIR/ref_without_sb.rs:+2:12: +2:14 - _4 = &_1; // scope 1 at $DIR/ref_without_sb.rs:+2:12: +2:14 - _3 = &(*_4); // scope 1 at $DIR/ref_without_sb.rs:+2:12: +2:14 - _2 = escape::(move _3) -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/ref_without_sb.rs:+2:5: +2:15 - // mir::Constant - // + span: $DIR/ref_without_sb.rs:13:5: 13:11 - // + literal: Const { ty: for<'a> fn(&'a i32) {escape::}, val: Value() } + StorageLive(_1); + _1 = const 0_i32; + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + _4 = &_1; + _3 = &(*_4); + _2 = escape::(move _3) -> [return: bb1, unwind unreachable]; } bb1: { - StorageDead(_3); // scope 1 at $DIR/ref_without_sb.rs:+2:14: +2:15 - StorageDead(_4); // scope 1 at $DIR/ref_without_sb.rs:+2:15: +2:16 - StorageDead(_2); // scope 1 at $DIR/ref_without_sb.rs:+2:15: +2:16 - _1 = const 1_i32; // scope 1 at $DIR/ref_without_sb.rs:+3:5: +3:10 - StorageLive(_5); // scope 1 at $DIR/ref_without_sb.rs:+4:5: +4:20 - _5 = some_function() -> [return: bb2, unwind unreachable]; // scope 1 at $DIR/ref_without_sb.rs:+4:5: +4:20 - // mir::Constant - // + span: $DIR/ref_without_sb.rs:15:5: 15:18 - // + literal: Const { ty: fn() {some_function}, val: Value() } + StorageDead(_3); + StorageDead(_4); + StorageDead(_2); + _1 = const 1_i32; + StorageLive(_5); + _5 = some_function() -> [return: bb2, unwind unreachable]; } bb2: { - StorageDead(_5); // scope 1 at $DIR/ref_without_sb.rs:+4:20: +4:21 - StorageLive(_6); // scope 1 at $DIR/ref_without_sb.rs:+6:9: +6:10 - _6 = _1; // scope 1 at $DIR/ref_without_sb.rs:+6:13: +6:14 - _0 = const (); // scope 0 at $DIR/ref_without_sb.rs:+0:11: +7:2 - StorageDead(_6); // scope 1 at $DIR/ref_without_sb.rs:+7:1: +7:2 - StorageDead(_1); // scope 0 at $DIR/ref_without_sb.rs:+7:1: +7:2 - return; // scope 0 at $DIR/ref_without_sb.rs:+7:2: +7:2 + StorageDead(_5); + StorageLive(_6); + _6 = _1; + _0 = const (); + StorageDead(_6); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/dataflow-const-prop/ref_without_sb.main.DataflowConstProp.panic-unwind.diff b/tests/mir-opt/dataflow-const-prop/ref_without_sb.main.DataflowConstProp.panic-unwind.diff index 70ef17afd659c..83d2f78323e76 100644 --- a/tests/mir-opt/dataflow-const-prop/ref_without_sb.main.DataflowConstProp.panic-unwind.diff +++ b/tests/mir-opt/dataflow-const-prop/ref_without_sb.main.DataflowConstProp.panic-unwind.diff @@ -2,54 +2,48 @@ + // MIR for `main` after DataflowConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/ref_without_sb.rs:+0:11: +0:11 - let mut _1: i32; // in scope 0 at $DIR/ref_without_sb.rs:+1:9: +1:14 - let _2: (); // in scope 0 at $DIR/ref_without_sb.rs:+2:5: +2:15 - let mut _3: &i32; // in scope 0 at $DIR/ref_without_sb.rs:+2:12: +2:14 - let _4: &i32; // in scope 0 at $DIR/ref_without_sb.rs:+2:12: +2:14 - let _5: (); // in scope 0 at $DIR/ref_without_sb.rs:+4:5: +4:20 + let mut _0: (); + let mut _1: i32; + let _2: (); + let mut _3: &i32; + let _4: &i32; + let _5: (); scope 1 { - debug a => _1; // in scope 1 at $DIR/ref_without_sb.rs:+1:9: +1:14 - let _6: i32; // in scope 1 at $DIR/ref_without_sb.rs:+6:9: +6:10 + debug a => _1; + let _6: i32; scope 2 { - debug b => _6; // in scope 2 at $DIR/ref_without_sb.rs:+6:9: +6:10 + debug b => _6; } } bb0: { - StorageLive(_1); // scope 0 at $DIR/ref_without_sb.rs:+1:9: +1:14 - _1 = const 0_i32; // scope 0 at $DIR/ref_without_sb.rs:+1:17: +1:18 - StorageLive(_2); // scope 1 at $DIR/ref_without_sb.rs:+2:5: +2:15 - StorageLive(_3); // scope 1 at $DIR/ref_without_sb.rs:+2:12: +2:14 - StorageLive(_4); // scope 1 at $DIR/ref_without_sb.rs:+2:12: +2:14 - _4 = &_1; // scope 1 at $DIR/ref_without_sb.rs:+2:12: +2:14 - _3 = &(*_4); // scope 1 at $DIR/ref_without_sb.rs:+2:12: +2:14 - _2 = escape::(move _3) -> bb1; // scope 1 at $DIR/ref_without_sb.rs:+2:5: +2:15 - // mir::Constant - // + span: $DIR/ref_without_sb.rs:13:5: 13:11 - // + literal: Const { ty: for<'a> fn(&'a i32) {escape::}, val: Value() } + StorageLive(_1); + _1 = const 0_i32; + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + _4 = &_1; + _3 = &(*_4); + _2 = escape::(move _3) -> bb1; } bb1: { - StorageDead(_3); // scope 1 at $DIR/ref_without_sb.rs:+2:14: +2:15 - StorageDead(_4); // scope 1 at $DIR/ref_without_sb.rs:+2:15: +2:16 - StorageDead(_2); // scope 1 at $DIR/ref_without_sb.rs:+2:15: +2:16 - _1 = const 1_i32; // scope 1 at $DIR/ref_without_sb.rs:+3:5: +3:10 - StorageLive(_5); // scope 1 at $DIR/ref_without_sb.rs:+4:5: +4:20 - _5 = some_function() -> bb2; // scope 1 at $DIR/ref_without_sb.rs:+4:5: +4:20 - // mir::Constant - // + span: $DIR/ref_without_sb.rs:15:5: 15:18 - // + literal: Const { ty: fn() {some_function}, val: Value() } + StorageDead(_3); + StorageDead(_4); + StorageDead(_2); + _1 = const 1_i32; + StorageLive(_5); + _5 = some_function() -> bb2; } bb2: { - StorageDead(_5); // scope 1 at $DIR/ref_without_sb.rs:+4:20: +4:21 - StorageLive(_6); // scope 1 at $DIR/ref_without_sb.rs:+6:9: +6:10 - _6 = _1; // scope 1 at $DIR/ref_without_sb.rs:+6:13: +6:14 - _0 = const (); // scope 0 at $DIR/ref_without_sb.rs:+0:11: +7:2 - StorageDead(_6); // scope 1 at $DIR/ref_without_sb.rs:+7:1: +7:2 - StorageDead(_1); // scope 0 at $DIR/ref_without_sb.rs:+7:1: +7:2 - return; // scope 0 at $DIR/ref_without_sb.rs:+7:2: +7:2 + StorageDead(_5); + StorageLive(_6); + _6 = _1; + _0 = const (); + StorageDead(_6); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/dataflow-const-prop/repr_transparent.main.DataflowConstProp.diff b/tests/mir-opt/dataflow-const-prop/repr_transparent.main.DataflowConstProp.diff index 8f045eedfb058..4b1a8d932c651 100644 --- a/tests/mir-opt/dataflow-const-prop/repr_transparent.main.DataflowConstProp.diff +++ b/tests/mir-opt/dataflow-const-prop/repr_transparent.main.DataflowConstProp.diff @@ -2,41 +2,41 @@ + // MIR for `main` after DataflowConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/repr_transparent.rs:+0:11: +0:11 - let _1: I32; // in scope 0 at $DIR/repr_transparent.rs:+1:9: +1:10 - let mut _3: i32; // in scope 0 at $DIR/repr_transparent.rs:+2:17: +2:26 - let mut _4: i32; // in scope 0 at $DIR/repr_transparent.rs:+2:17: +2:20 - let mut _5: i32; // in scope 0 at $DIR/repr_transparent.rs:+2:23: +2:26 + let mut _0: (); + let _1: I32; + let mut _3: i32; + let mut _4: i32; + let mut _5: i32; scope 1 { - debug x => _1; // in scope 1 at $DIR/repr_transparent.rs:+1:9: +1:10 - let _2: I32; // in scope 1 at $DIR/repr_transparent.rs:+2:9: +2:10 + debug x => _1; + let _2: I32; scope 2 { - debug y => _2; // in scope 2 at $DIR/repr_transparent.rs:+2:9: +2:10 + debug y => _2; } } bb0: { - StorageLive(_1); // scope 0 at $DIR/repr_transparent.rs:+1:9: +1:10 - _1 = I32(const 0_i32); // scope 0 at $DIR/repr_transparent.rs:+1:13: +1:19 - StorageLive(_2); // scope 1 at $DIR/repr_transparent.rs:+2:9: +2:10 - StorageLive(_3); // scope 1 at $DIR/repr_transparent.rs:+2:17: +2:26 - StorageLive(_4); // scope 1 at $DIR/repr_transparent.rs:+2:17: +2:20 -- _4 = (_1.0: i32); // scope 1 at $DIR/repr_transparent.rs:+2:17: +2:20 -+ _4 = const 0_i32; // scope 1 at $DIR/repr_transparent.rs:+2:17: +2:20 - StorageLive(_5); // scope 1 at $DIR/repr_transparent.rs:+2:23: +2:26 -- _5 = (_1.0: i32); // scope 1 at $DIR/repr_transparent.rs:+2:23: +2:26 -- _3 = Add(move _4, move _5); // scope 1 at $DIR/repr_transparent.rs:+2:17: +2:26 -+ _5 = const 0_i32; // scope 1 at $DIR/repr_transparent.rs:+2:23: +2:26 -+ _3 = const 0_i32; // scope 1 at $DIR/repr_transparent.rs:+2:17: +2:26 - StorageDead(_5); // scope 1 at $DIR/repr_transparent.rs:+2:25: +2:26 - StorageDead(_4); // scope 1 at $DIR/repr_transparent.rs:+2:25: +2:26 -- _2 = I32(move _3); // scope 1 at $DIR/repr_transparent.rs:+2:13: +2:27 -+ _2 = I32(const 0_i32); // scope 1 at $DIR/repr_transparent.rs:+2:13: +2:27 - StorageDead(_3); // scope 1 at $DIR/repr_transparent.rs:+2:26: +2:27 - _0 = const (); // scope 0 at $DIR/repr_transparent.rs:+0:11: +3:2 - StorageDead(_2); // scope 1 at $DIR/repr_transparent.rs:+3:1: +3:2 - StorageDead(_1); // scope 0 at $DIR/repr_transparent.rs:+3:1: +3:2 - return; // scope 0 at $DIR/repr_transparent.rs:+3:2: +3:2 + StorageLive(_1); + _1 = I32(const 0_i32); + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); +- _4 = (_1.0: i32); ++ _4 = const 0_i32; + StorageLive(_5); +- _5 = (_1.0: i32); +- _3 = Add(move _4, move _5); ++ _5 = const 0_i32; ++ _3 = const 0_i32; + StorageDead(_5); + StorageDead(_4); +- _2 = I32(move _3); ++ _2 = I32(const 0_i32); + StorageDead(_3); + _0 = const (); + StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/dataflow-const-prop/self_assign.main.DataflowConstProp.diff b/tests/mir-opt/dataflow-const-prop/self_assign.main.DataflowConstProp.diff index df08eff94cb27..fbdbb3fa35caf 100644 --- a/tests/mir-opt/dataflow-const-prop/self_assign.main.DataflowConstProp.diff +++ b/tests/mir-opt/dataflow-const-prop/self_assign.main.DataflowConstProp.diff @@ -2,45 +2,45 @@ + // MIR for `main` after DataflowConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/self_assign.rs:+0:11: +0:11 - let mut _1: i32; // in scope 0 at $DIR/self_assign.rs:+1:9: +1:14 - let mut _2: i32; // in scope 0 at $DIR/self_assign.rs:+2:9: +2:10 - let mut _3: i32; // in scope 0 at $DIR/self_assign.rs:+3:9: +3:10 - let mut _5: &i32; // in scope 0 at $DIR/self_assign.rs:+6:9: +6:10 - let mut _6: i32; // in scope 0 at $DIR/self_assign.rs:+7:9: +7:11 + let mut _0: (); + let mut _1: i32; + let mut _2: i32; + let mut _3: i32; + let mut _5: &i32; + let mut _6: i32; scope 1 { - debug a => _1; // in scope 1 at $DIR/self_assign.rs:+1:9: +1:14 - let mut _4: &i32; // in scope 1 at $DIR/self_assign.rs:+5:9: +5:14 + debug a => _1; + let mut _4: &i32; scope 2 { - debug b => _4; // in scope 2 at $DIR/self_assign.rs:+5:9: +5:14 + debug b => _4; } } bb0: { - StorageLive(_1); // scope 0 at $DIR/self_assign.rs:+1:9: +1:14 - _1 = const 0_i32; // scope 0 at $DIR/self_assign.rs:+1:17: +1:18 - StorageLive(_2); // scope 1 at $DIR/self_assign.rs:+2:9: +2:10 - _2 = _1; // scope 1 at $DIR/self_assign.rs:+2:9: +2:10 - _1 = Add(move _2, const 1_i32); // scope 1 at $DIR/self_assign.rs:+2:5: +2:14 - StorageDead(_2); // scope 1 at $DIR/self_assign.rs:+2:13: +2:14 - StorageLive(_3); // scope 1 at $DIR/self_assign.rs:+3:9: +3:10 - _3 = _1; // scope 1 at $DIR/self_assign.rs:+3:9: +3:10 - _1 = move _3; // scope 1 at $DIR/self_assign.rs:+3:5: +3:10 - StorageDead(_3); // scope 1 at $DIR/self_assign.rs:+3:9: +3:10 - StorageLive(_4); // scope 1 at $DIR/self_assign.rs:+5:9: +5:14 - _4 = &_1; // scope 1 at $DIR/self_assign.rs:+5:17: +5:19 - StorageLive(_5); // scope 2 at $DIR/self_assign.rs:+6:9: +6:10 - _5 = _4; // scope 2 at $DIR/self_assign.rs:+6:9: +6:10 - _4 = move _5; // scope 2 at $DIR/self_assign.rs:+6:5: +6:10 - StorageDead(_5); // scope 2 at $DIR/self_assign.rs:+6:9: +6:10 - StorageLive(_6); // scope 2 at $DIR/self_assign.rs:+7:9: +7:11 - _6 = (*_4); // scope 2 at $DIR/self_assign.rs:+7:9: +7:11 - _1 = move _6; // scope 2 at $DIR/self_assign.rs:+7:5: +7:11 - StorageDead(_6); // scope 2 at $DIR/self_assign.rs:+7:10: +7:11 - _0 = const (); // scope 0 at $DIR/self_assign.rs:+0:11: +8:2 - StorageDead(_4); // scope 1 at $DIR/self_assign.rs:+8:1: +8:2 - StorageDead(_1); // scope 0 at $DIR/self_assign.rs:+8:1: +8:2 - return; // scope 0 at $DIR/self_assign.rs:+8:2: +8:2 + StorageLive(_1); + _1 = const 0_i32; + StorageLive(_2); + _2 = _1; + _1 = Add(move _2, const 1_i32); + StorageDead(_2); + StorageLive(_3); + _3 = _1; + _1 = move _3; + StorageDead(_3); + StorageLive(_4); + _4 = &_1; + StorageLive(_5); + _5 = _4; + _4 = move _5; + StorageDead(_5); + StorageLive(_6); + _6 = (*_4); + _1 = move _6; + StorageDead(_6); + _0 = const (); + StorageDead(_4); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/dataflow-const-prop/self_assign_add.main.DataflowConstProp.diff b/tests/mir-opt/dataflow-const-prop/self_assign_add.main.DataflowConstProp.diff index c09e4061ededf..e2468a9645d61 100644 --- a/tests/mir-opt/dataflow-const-prop/self_assign_add.main.DataflowConstProp.diff +++ b/tests/mir-opt/dataflow-const-prop/self_assign_add.main.DataflowConstProp.diff @@ -2,22 +2,22 @@ + // MIR for `main` after DataflowConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/self_assign_add.rs:+0:11: +0:11 - let mut _1: i32; // in scope 0 at $DIR/self_assign_add.rs:+1:9: +1:14 + let mut _0: (); + let mut _1: i32; scope 1 { - debug a => _1; // in scope 1 at $DIR/self_assign_add.rs:+1:9: +1:14 + debug a => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/self_assign_add.rs:+1:9: +1:14 - _1 = const 0_i32; // scope 0 at $DIR/self_assign_add.rs:+1:17: +1:18 -- _1 = Add(_1, const 1_i32); // scope 1 at $DIR/self_assign_add.rs:+2:5: +2:11 -- _1 = Add(_1, const 1_i32); // scope 1 at $DIR/self_assign_add.rs:+3:5: +3:11 -+ _1 = const 1_i32; // scope 1 at $DIR/self_assign_add.rs:+2:5: +2:11 -+ _1 = const 2_i32; // scope 1 at $DIR/self_assign_add.rs:+3:5: +3:11 - _0 = const (); // scope 0 at $DIR/self_assign_add.rs:+0:11: +4:2 - StorageDead(_1); // scope 0 at $DIR/self_assign_add.rs:+4:1: +4:2 - return; // scope 0 at $DIR/self_assign_add.rs:+4:2: +4:2 + StorageLive(_1); + _1 = const 0_i32; +- _1 = Add(_1, const 1_i32); +- _1 = Add(_1, const 1_i32); ++ _1 = const 1_i32; ++ _1 = const 2_i32; + _0 = const (); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/dataflow-const-prop/sibling_ptr.main.DataflowConstProp.panic-abort.diff b/tests/mir-opt/dataflow-const-prop/sibling_ptr.main.DataflowConstProp.panic-abort.diff index ee857e716e2c0..cc96cbef2f519 100644 --- a/tests/mir-opt/dataflow-const-prop/sibling_ptr.main.DataflowConstProp.panic-abort.diff +++ b/tests/mir-opt/dataflow-const-prop/sibling_ptr.main.DataflowConstProp.panic-abort.diff @@ -2,53 +2,50 @@ + // MIR for `main` after DataflowConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/sibling_ptr.rs:+0:11: +0:11 - let mut _1: (u8, u8); // in scope 0 at $DIR/sibling_ptr.rs:+1:9: +1:14 - let _2: (); // in scope 0 at $DIR/sibling_ptr.rs:+2:5: +5:6 - let mut _4: *mut u8; // in scope 0 at $DIR/sibling_ptr.rs:+4:10: +4:18 - let mut _5: *mut u8; // in scope 0 at $DIR/sibling_ptr.rs:+4:10: +4:11 + let mut _0: (); + let mut _1: (u8, u8); + let _2: (); + let mut _4: *mut u8; + let mut _5: *mut u8; scope 1 { - debug x => _1; // in scope 1 at $DIR/sibling_ptr.rs:+1:9: +1:14 - let _6: u8; // in scope 1 at $DIR/sibling_ptr.rs:+6:9: +6:11 + debug x => _1; + let _6: u8; scope 2 { - let _3: *mut u8; // in scope 2 at $DIR/sibling_ptr.rs:+3:13: +3:14 + let _3: *mut u8; scope 3 { - debug p => _3; // in scope 3 at $DIR/sibling_ptr.rs:+3:13: +3:14 + debug p => _3; } } scope 4 { - debug x1 => _6; // in scope 4 at $DIR/sibling_ptr.rs:+6:9: +6:11 + debug x1 => _6; } } bb0: { - StorageLive(_1); // scope 0 at $DIR/sibling_ptr.rs:+1:9: +1:14 - _1 = (const 0_u8, const 0_u8); // scope 0 at $DIR/sibling_ptr.rs:+1:27: +1:33 - StorageLive(_2); // scope 1 at $DIR/sibling_ptr.rs:+2:5: +5:6 - StorageLive(_3); // scope 2 at $DIR/sibling_ptr.rs:+3:13: +3:14 - _3 = &raw mut (_1.0: u8); // scope 2 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL - StorageLive(_4); // scope 3 at $DIR/sibling_ptr.rs:+4:10: +4:18 - StorageLive(_5); // scope 3 at $DIR/sibling_ptr.rs:+4:10: +4:11 - _5 = _3; // scope 3 at $DIR/sibling_ptr.rs:+4:10: +4:11 - _4 = ptr::mut_ptr::::add(move _5, const 1_usize) -> [return: bb1, unwind unreachable]; // scope 3 at $DIR/sibling_ptr.rs:+4:10: +4:18 - // mir::Constant - // + span: $DIR/sibling_ptr.rs:16:12: 16:15 - // + literal: Const { ty: unsafe fn(*mut u8, usize) -> *mut u8 {ptr::mut_ptr::::add}, val: Value() } + StorageLive(_1); + _1 = (const 0_u8, const 0_u8); + StorageLive(_2); + StorageLive(_3); + _3 = &raw mut (_1.0: u8); + StorageLive(_4); + StorageLive(_5); + _5 = _3; + _4 = ptr::mut_ptr::::add(move _5, const 1_usize) -> [return: bb1, unwind unreachable]; } bb1: { - StorageDead(_5); // scope 3 at $DIR/sibling_ptr.rs:+4:17: +4:18 - (*_4) = const 1_u8; // scope 3 at $DIR/sibling_ptr.rs:+4:9: +4:22 - StorageDead(_4); // scope 3 at $DIR/sibling_ptr.rs:+4:22: +4:23 - _2 = const (); // scope 2 at $DIR/sibling_ptr.rs:+2:5: +5:6 - StorageDead(_3); // scope 2 at $DIR/sibling_ptr.rs:+5:5: +5:6 - StorageDead(_2); // scope 1 at $DIR/sibling_ptr.rs:+5:5: +5:6 - StorageLive(_6); // scope 1 at $DIR/sibling_ptr.rs:+6:9: +6:11 - _6 = (_1.1: u8); // scope 1 at $DIR/sibling_ptr.rs:+6:14: +6:17 - _0 = const (); // scope 0 at $DIR/sibling_ptr.rs:+0:11: +7:2 - StorageDead(_6); // scope 1 at $DIR/sibling_ptr.rs:+7:1: +7:2 - StorageDead(_1); // scope 0 at $DIR/sibling_ptr.rs:+7:1: +7:2 - return; // scope 0 at $DIR/sibling_ptr.rs:+7:2: +7:2 + StorageDead(_5); + (*_4) = const 1_u8; + StorageDead(_4); + _2 = const (); + StorageDead(_3); + StorageDead(_2); + StorageLive(_6); + _6 = (_1.1: u8); + _0 = const (); + StorageDead(_6); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/dataflow-const-prop/sibling_ptr.main.DataflowConstProp.panic-unwind.diff b/tests/mir-opt/dataflow-const-prop/sibling_ptr.main.DataflowConstProp.panic-unwind.diff index 6ca569f3d8e5b..927ca0124bbce 100644 --- a/tests/mir-opt/dataflow-const-prop/sibling_ptr.main.DataflowConstProp.panic-unwind.diff +++ b/tests/mir-opt/dataflow-const-prop/sibling_ptr.main.DataflowConstProp.panic-unwind.diff @@ -2,53 +2,50 @@ + // MIR for `main` after DataflowConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/sibling_ptr.rs:+0:11: +0:11 - let mut _1: (u8, u8); // in scope 0 at $DIR/sibling_ptr.rs:+1:9: +1:14 - let _2: (); // in scope 0 at $DIR/sibling_ptr.rs:+2:5: +5:6 - let mut _4: *mut u8; // in scope 0 at $DIR/sibling_ptr.rs:+4:10: +4:18 - let mut _5: *mut u8; // in scope 0 at $DIR/sibling_ptr.rs:+4:10: +4:11 + let mut _0: (); + let mut _1: (u8, u8); + let _2: (); + let mut _4: *mut u8; + let mut _5: *mut u8; scope 1 { - debug x => _1; // in scope 1 at $DIR/sibling_ptr.rs:+1:9: +1:14 - let _6: u8; // in scope 1 at $DIR/sibling_ptr.rs:+6:9: +6:11 + debug x => _1; + let _6: u8; scope 2 { - let _3: *mut u8; // in scope 2 at $DIR/sibling_ptr.rs:+3:13: +3:14 + let _3: *mut u8; scope 3 { - debug p => _3; // in scope 3 at $DIR/sibling_ptr.rs:+3:13: +3:14 + debug p => _3; } } scope 4 { - debug x1 => _6; // in scope 4 at $DIR/sibling_ptr.rs:+6:9: +6:11 + debug x1 => _6; } } bb0: { - StorageLive(_1); // scope 0 at $DIR/sibling_ptr.rs:+1:9: +1:14 - _1 = (const 0_u8, const 0_u8); // scope 0 at $DIR/sibling_ptr.rs:+1:27: +1:33 - StorageLive(_2); // scope 1 at $DIR/sibling_ptr.rs:+2:5: +5:6 - StorageLive(_3); // scope 2 at $DIR/sibling_ptr.rs:+3:13: +3:14 - _3 = &raw mut (_1.0: u8); // scope 2 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL - StorageLive(_4); // scope 3 at $DIR/sibling_ptr.rs:+4:10: +4:18 - StorageLive(_5); // scope 3 at $DIR/sibling_ptr.rs:+4:10: +4:11 - _5 = _3; // scope 3 at $DIR/sibling_ptr.rs:+4:10: +4:11 - _4 = ptr::mut_ptr::::add(move _5, const 1_usize) -> bb1; // scope 3 at $DIR/sibling_ptr.rs:+4:10: +4:18 - // mir::Constant - // + span: $DIR/sibling_ptr.rs:16:12: 16:15 - // + literal: Const { ty: unsafe fn(*mut u8, usize) -> *mut u8 {ptr::mut_ptr::::add}, val: Value() } + StorageLive(_1); + _1 = (const 0_u8, const 0_u8); + StorageLive(_2); + StorageLive(_3); + _3 = &raw mut (_1.0: u8); + StorageLive(_4); + StorageLive(_5); + _5 = _3; + _4 = ptr::mut_ptr::::add(move _5, const 1_usize) -> bb1; } bb1: { - StorageDead(_5); // scope 3 at $DIR/sibling_ptr.rs:+4:17: +4:18 - (*_4) = const 1_u8; // scope 3 at $DIR/sibling_ptr.rs:+4:9: +4:22 - StorageDead(_4); // scope 3 at $DIR/sibling_ptr.rs:+4:22: +4:23 - _2 = const (); // scope 2 at $DIR/sibling_ptr.rs:+2:5: +5:6 - StorageDead(_3); // scope 2 at $DIR/sibling_ptr.rs:+5:5: +5:6 - StorageDead(_2); // scope 1 at $DIR/sibling_ptr.rs:+5:5: +5:6 - StorageLive(_6); // scope 1 at $DIR/sibling_ptr.rs:+6:9: +6:11 - _6 = (_1.1: u8); // scope 1 at $DIR/sibling_ptr.rs:+6:14: +6:17 - _0 = const (); // scope 0 at $DIR/sibling_ptr.rs:+0:11: +7:2 - StorageDead(_6); // scope 1 at $DIR/sibling_ptr.rs:+7:1: +7:2 - StorageDead(_1); // scope 0 at $DIR/sibling_ptr.rs:+7:1: +7:2 - return; // scope 0 at $DIR/sibling_ptr.rs:+7:2: +7:2 + StorageDead(_5); + (*_4) = const 1_u8; + StorageDead(_4); + _2 = const (); + StorageDead(_3); + StorageDead(_2); + StorageLive(_6); + _6 = (_1.1: u8); + _0 = const (); + StorageDead(_6); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/dataflow-const-prop/struct.main.DataflowConstProp.diff b/tests/mir-opt/dataflow-const-prop/struct.main.DataflowConstProp.diff index 53c62c0817391..914bc8ac47e95 100644 --- a/tests/mir-opt/dataflow-const-prop/struct.main.DataflowConstProp.diff +++ b/tests/mir-opt/dataflow-const-prop/struct.main.DataflowConstProp.diff @@ -2,50 +2,50 @@ + // MIR for `main` after DataflowConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/struct.rs:+0:11: +0:11 - let mut _1: S; // in scope 0 at $DIR/struct.rs:+1:9: +1:14 - let mut _3: i32; // in scope 0 at $DIR/struct.rs:+2:13: +2:16 - let mut _5: i32; // in scope 0 at $DIR/struct.rs:+4:13: +4:14 - let mut _6: i32; // in scope 0 at $DIR/struct.rs:+4:17: +4:20 + let mut _0: (); + let mut _1: S; + let mut _3: i32; + let mut _5: i32; + let mut _6: i32; scope 1 { - debug s => _1; // in scope 1 at $DIR/struct.rs:+1:9: +1:14 - let _2: i32; // in scope 1 at $DIR/struct.rs:+2:9: +2:10 + debug s => _1; + let _2: i32; scope 2 { - debug a => _2; // in scope 2 at $DIR/struct.rs:+2:9: +2:10 - let _4: i32; // in scope 2 at $DIR/struct.rs:+4:9: +4:10 + debug a => _2; + let _4: i32; scope 3 { - debug b => _4; // in scope 3 at $DIR/struct.rs:+4:9: +4:10 + debug b => _4; } } } bb0: { - StorageLive(_1); // scope 0 at $DIR/struct.rs:+1:9: +1:14 - _1 = S(const 1_i32); // scope 0 at $DIR/struct.rs:+1:17: +1:21 - StorageLive(_2); // scope 1 at $DIR/struct.rs:+2:9: +2:10 - StorageLive(_3); // scope 1 at $DIR/struct.rs:+2:13: +2:16 -- _3 = (_1.0: i32); // scope 1 at $DIR/struct.rs:+2:13: +2:16 -- _2 = Add(move _3, const 2_i32); // scope 1 at $DIR/struct.rs:+2:13: +2:20 -+ _3 = const 1_i32; // scope 1 at $DIR/struct.rs:+2:13: +2:16 -+ _2 = const 3_i32; // scope 1 at $DIR/struct.rs:+2:13: +2:20 - StorageDead(_3); // scope 1 at $DIR/struct.rs:+2:19: +2:20 - (_1.0: i32) = const 3_i32; // scope 2 at $DIR/struct.rs:+3:5: +3:12 - StorageLive(_4); // scope 2 at $DIR/struct.rs:+4:9: +4:10 - StorageLive(_5); // scope 2 at $DIR/struct.rs:+4:13: +4:14 -- _5 = _2; // scope 2 at $DIR/struct.rs:+4:13: +4:14 -+ _5 = const 3_i32; // scope 2 at $DIR/struct.rs:+4:13: +4:14 - StorageLive(_6); // scope 2 at $DIR/struct.rs:+4:17: +4:20 -- _6 = (_1.0: i32); // scope 2 at $DIR/struct.rs:+4:17: +4:20 -- _4 = Add(move _5, move _6); // scope 2 at $DIR/struct.rs:+4:13: +4:20 -+ _6 = const 3_i32; // scope 2 at $DIR/struct.rs:+4:17: +4:20 -+ _4 = const 6_i32; // scope 2 at $DIR/struct.rs:+4:13: +4:20 - StorageDead(_6); // scope 2 at $DIR/struct.rs:+4:19: +4:20 - StorageDead(_5); // scope 2 at $DIR/struct.rs:+4:19: +4:20 - _0 = const (); // scope 0 at $DIR/struct.rs:+0:11: +5:2 - StorageDead(_4); // scope 2 at $DIR/struct.rs:+5:1: +5:2 - StorageDead(_2); // scope 1 at $DIR/struct.rs:+5:1: +5:2 - StorageDead(_1); // scope 0 at $DIR/struct.rs:+5:1: +5:2 - return; // scope 0 at $DIR/struct.rs:+5:2: +5:2 + StorageLive(_1); + _1 = S(const 1_i32); + StorageLive(_2); + StorageLive(_3); +- _3 = (_1.0: i32); +- _2 = Add(move _3, const 2_i32); ++ _3 = const 1_i32; ++ _2 = const 3_i32; + StorageDead(_3); + (_1.0: i32) = const 3_i32; + StorageLive(_4); + StorageLive(_5); +- _5 = _2; ++ _5 = const 3_i32; + StorageLive(_6); +- _6 = (_1.0: i32); +- _4 = Add(move _5, move _6); ++ _6 = const 3_i32; ++ _4 = const 6_i32; + StorageDead(_6); + StorageDead(_5); + _0 = const (); + StorageDead(_4); + StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/dataflow-const-prop/terminator.main.DataflowConstProp.panic-abort.diff b/tests/mir-opt/dataflow-const-prop/terminator.main.DataflowConstProp.panic-abort.diff index 94e9595a0e332..c0f378cc21f88 100644 --- a/tests/mir-opt/dataflow-const-prop/terminator.main.DataflowConstProp.panic-abort.diff +++ b/tests/mir-opt/dataflow-const-prop/terminator.main.DataflowConstProp.panic-abort.diff @@ -2,39 +2,36 @@ + // MIR for `main` after DataflowConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/terminator.rs:+0:11: +0:11 - let _1: i32; // in scope 0 at $DIR/terminator.rs:+1:9: +1:10 - let _2: (); // in scope 0 at $DIR/terminator.rs:+3:5: +3:15 - let mut _3: i32; // in scope 0 at $DIR/terminator.rs:+3:9: +3:14 - let mut _4: i32; // in scope 0 at $DIR/terminator.rs:+3:9: +3:10 + let mut _0: (); + let _1: i32; + let _2: (); + let mut _3: i32; + let mut _4: i32; scope 1 { - debug a => _1; // in scope 1 at $DIR/terminator.rs:+1:9: +1:10 + debug a => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/terminator.rs:+1:9: +1:10 - _1 = const 1_i32; // scope 0 at $DIR/terminator.rs:+1:13: +1:14 - StorageLive(_2); // scope 1 at $DIR/terminator.rs:+3:5: +3:15 - StorageLive(_3); // scope 1 at $DIR/terminator.rs:+3:9: +3:14 - StorageLive(_4); // scope 1 at $DIR/terminator.rs:+3:9: +3:10 -- _4 = _1; // scope 1 at $DIR/terminator.rs:+3:9: +3:10 -- _3 = Add(move _4, const 1_i32); // scope 1 at $DIR/terminator.rs:+3:9: +3:14 -+ _4 = const 1_i32; // scope 1 at $DIR/terminator.rs:+3:9: +3:10 -+ _3 = const 2_i32; // scope 1 at $DIR/terminator.rs:+3:9: +3:14 - StorageDead(_4); // scope 1 at $DIR/terminator.rs:+3:13: +3:14 -- _2 = foo(move _3) -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/terminator.rs:+3:5: +3:15 -+ _2 = foo(const 2_i32) -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/terminator.rs:+3:5: +3:15 - // mir::Constant - // + span: $DIR/terminator.rs:10:5: 10:8 - // + literal: Const { ty: fn(i32) {foo}, val: Value() } + StorageLive(_1); + _1 = const 1_i32; + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); +- _4 = _1; +- _3 = Add(move _4, const 1_i32); ++ _4 = const 1_i32; ++ _3 = const 2_i32; + StorageDead(_4); +- _2 = foo(move _3) -> [return: bb1, unwind unreachable]; ++ _2 = foo(const 2_i32) -> [return: bb1, unwind unreachable]; } bb1: { - StorageDead(_3); // scope 1 at $DIR/terminator.rs:+3:14: +3:15 - StorageDead(_2); // scope 1 at $DIR/terminator.rs:+3:15: +3:16 - _0 = const (); // scope 0 at $DIR/terminator.rs:+0:11: +4:2 - StorageDead(_1); // scope 0 at $DIR/terminator.rs:+4:1: +4:2 - return; // scope 0 at $DIR/terminator.rs:+4:2: +4:2 + StorageDead(_3); + StorageDead(_2); + _0 = const (); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/dataflow-const-prop/terminator.main.DataflowConstProp.panic-unwind.diff b/tests/mir-opt/dataflow-const-prop/terminator.main.DataflowConstProp.panic-unwind.diff index 9854beaeb217c..f9723a0498304 100644 --- a/tests/mir-opt/dataflow-const-prop/terminator.main.DataflowConstProp.panic-unwind.diff +++ b/tests/mir-opt/dataflow-const-prop/terminator.main.DataflowConstProp.panic-unwind.diff @@ -2,39 +2,36 @@ + // MIR for `main` after DataflowConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/terminator.rs:+0:11: +0:11 - let _1: i32; // in scope 0 at $DIR/terminator.rs:+1:9: +1:10 - let _2: (); // in scope 0 at $DIR/terminator.rs:+3:5: +3:15 - let mut _3: i32; // in scope 0 at $DIR/terminator.rs:+3:9: +3:14 - let mut _4: i32; // in scope 0 at $DIR/terminator.rs:+3:9: +3:10 + let mut _0: (); + let _1: i32; + let _2: (); + let mut _3: i32; + let mut _4: i32; scope 1 { - debug a => _1; // in scope 1 at $DIR/terminator.rs:+1:9: +1:10 + debug a => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/terminator.rs:+1:9: +1:10 - _1 = const 1_i32; // scope 0 at $DIR/terminator.rs:+1:13: +1:14 - StorageLive(_2); // scope 1 at $DIR/terminator.rs:+3:5: +3:15 - StorageLive(_3); // scope 1 at $DIR/terminator.rs:+3:9: +3:14 - StorageLive(_4); // scope 1 at $DIR/terminator.rs:+3:9: +3:10 -- _4 = _1; // scope 1 at $DIR/terminator.rs:+3:9: +3:10 -- _3 = Add(move _4, const 1_i32); // scope 1 at $DIR/terminator.rs:+3:9: +3:14 -+ _4 = const 1_i32; // scope 1 at $DIR/terminator.rs:+3:9: +3:10 -+ _3 = const 2_i32; // scope 1 at $DIR/terminator.rs:+3:9: +3:14 - StorageDead(_4); // scope 1 at $DIR/terminator.rs:+3:13: +3:14 -- _2 = foo(move _3) -> bb1; // scope 1 at $DIR/terminator.rs:+3:5: +3:15 -+ _2 = foo(const 2_i32) -> bb1; // scope 1 at $DIR/terminator.rs:+3:5: +3:15 - // mir::Constant - // + span: $DIR/terminator.rs:10:5: 10:8 - // + literal: Const { ty: fn(i32) {foo}, val: Value() } + StorageLive(_1); + _1 = const 1_i32; + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); +- _4 = _1; +- _3 = Add(move _4, const 1_i32); ++ _4 = const 1_i32; ++ _3 = const 2_i32; + StorageDead(_4); +- _2 = foo(move _3) -> bb1; ++ _2 = foo(const 2_i32) -> bb1; } bb1: { - StorageDead(_3); // scope 1 at $DIR/terminator.rs:+3:14: +3:15 - StorageDead(_2); // scope 1 at $DIR/terminator.rs:+3:15: +3:16 - _0 = const (); // scope 0 at $DIR/terminator.rs:+0:11: +4:2 - StorageDead(_1); // scope 0 at $DIR/terminator.rs:+4:1: +4:2 - return; // scope 0 at $DIR/terminator.rs:+4:2: +4:2 + StorageDead(_3); + StorageDead(_2); + _0 = const (); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/dataflow-const-prop/tuple.main.DataflowConstProp.diff b/tests/mir-opt/dataflow-const-prop/tuple.main.DataflowConstProp.diff index 8ce4ce4ba976d..5e385d21ec602 100644 --- a/tests/mir-opt/dataflow-const-prop/tuple.main.DataflowConstProp.diff +++ b/tests/mir-opt/dataflow-const-prop/tuple.main.DataflowConstProp.diff @@ -2,70 +2,70 @@ + // MIR for `main` after DataflowConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/tuple.rs:+0:11: +0:11 - let mut _1: (i32, i32); // in scope 0 at $DIR/tuple.rs:+1:9: +1:14 - let mut _3: i32; // in scope 0 at $DIR/tuple.rs:+2:13: +2:22 - let mut _4: i32; // in scope 0 at $DIR/tuple.rs:+2:13: +2:16 - let mut _5: i32; // in scope 0 at $DIR/tuple.rs:+2:19: +2:22 - let mut _7: i32; // in scope 0 at $DIR/tuple.rs:+4:13: +4:22 - let mut _8: i32; // in scope 0 at $DIR/tuple.rs:+4:13: +4:16 - let mut _9: i32; // in scope 0 at $DIR/tuple.rs:+4:19: +4:22 - let mut _10: i32; // in scope 0 at $DIR/tuple.rs:+4:25: +4:26 + let mut _0: (); + let mut _1: (i32, i32); + let mut _3: i32; + let mut _4: i32; + let mut _5: i32; + let mut _7: i32; + let mut _8: i32; + let mut _9: i32; + let mut _10: i32; scope 1 { - debug a => _1; // in scope 1 at $DIR/tuple.rs:+1:9: +1:14 - let _2: i32; // in scope 1 at $DIR/tuple.rs:+2:9: +2:10 + debug a => _1; + let _2: i32; scope 2 { - debug b => _2; // in scope 2 at $DIR/tuple.rs:+2:9: +2:10 - let _6: i32; // in scope 2 at $DIR/tuple.rs:+4:9: +4:10 + debug b => _2; + let _6: i32; scope 3 { - debug c => _6; // in scope 3 at $DIR/tuple.rs:+4:9: +4:10 + debug c => _6; } } } bb0: { - StorageLive(_1); // scope 0 at $DIR/tuple.rs:+1:9: +1:14 - _1 = (const 1_i32, const 2_i32); // scope 0 at $DIR/tuple.rs:+1:17: +1:23 - StorageLive(_2); // scope 1 at $DIR/tuple.rs:+2:9: +2:10 - StorageLive(_3); // scope 1 at $DIR/tuple.rs:+2:13: +2:22 - StorageLive(_4); // scope 1 at $DIR/tuple.rs:+2:13: +2:16 -- _4 = (_1.0: i32); // scope 1 at $DIR/tuple.rs:+2:13: +2:16 -+ _4 = const 1_i32; // scope 1 at $DIR/tuple.rs:+2:13: +2:16 - StorageLive(_5); // scope 1 at $DIR/tuple.rs:+2:19: +2:22 -- _5 = (_1.1: i32); // scope 1 at $DIR/tuple.rs:+2:19: +2:22 -- _3 = Add(move _4, move _5); // scope 1 at $DIR/tuple.rs:+2:13: +2:22 -+ _5 = const 2_i32; // scope 1 at $DIR/tuple.rs:+2:19: +2:22 -+ _3 = const 3_i32; // scope 1 at $DIR/tuple.rs:+2:13: +2:22 - StorageDead(_5); // scope 1 at $DIR/tuple.rs:+2:21: +2:22 - StorageDead(_4); // scope 1 at $DIR/tuple.rs:+2:21: +2:22 -- _2 = Add(move _3, const 3_i32); // scope 1 at $DIR/tuple.rs:+2:13: +2:26 -+ _2 = const 6_i32; // scope 1 at $DIR/tuple.rs:+2:13: +2:26 - StorageDead(_3); // scope 1 at $DIR/tuple.rs:+2:25: +2:26 - _1 = (const 2_i32, const 3_i32); // scope 2 at $DIR/tuple.rs:+3:5: +3:15 - StorageLive(_6); // scope 2 at $DIR/tuple.rs:+4:9: +4:10 - StorageLive(_7); // scope 2 at $DIR/tuple.rs:+4:13: +4:22 - StorageLive(_8); // scope 2 at $DIR/tuple.rs:+4:13: +4:16 -- _8 = (_1.0: i32); // scope 2 at $DIR/tuple.rs:+4:13: +4:16 -+ _8 = const 2_i32; // scope 2 at $DIR/tuple.rs:+4:13: +4:16 - StorageLive(_9); // scope 2 at $DIR/tuple.rs:+4:19: +4:22 -- _9 = (_1.1: i32); // scope 2 at $DIR/tuple.rs:+4:19: +4:22 -- _7 = Add(move _8, move _9); // scope 2 at $DIR/tuple.rs:+4:13: +4:22 -+ _9 = const 3_i32; // scope 2 at $DIR/tuple.rs:+4:19: +4:22 -+ _7 = const 5_i32; // scope 2 at $DIR/tuple.rs:+4:13: +4:22 - StorageDead(_9); // scope 2 at $DIR/tuple.rs:+4:21: +4:22 - StorageDead(_8); // scope 2 at $DIR/tuple.rs:+4:21: +4:22 - StorageLive(_10); // scope 2 at $DIR/tuple.rs:+4:25: +4:26 -- _10 = _2; // scope 2 at $DIR/tuple.rs:+4:25: +4:26 -- _6 = Add(move _7, move _10); // scope 2 at $DIR/tuple.rs:+4:13: +4:26 -+ _10 = const 6_i32; // scope 2 at $DIR/tuple.rs:+4:25: +4:26 -+ _6 = const 11_i32; // scope 2 at $DIR/tuple.rs:+4:13: +4:26 - StorageDead(_10); // scope 2 at $DIR/tuple.rs:+4:25: +4:26 - StorageDead(_7); // scope 2 at $DIR/tuple.rs:+4:25: +4:26 - _0 = const (); // scope 0 at $DIR/tuple.rs:+0:11: +5:2 - StorageDead(_6); // scope 2 at $DIR/tuple.rs:+5:1: +5:2 - StorageDead(_2); // scope 1 at $DIR/tuple.rs:+5:1: +5:2 - StorageDead(_1); // scope 0 at $DIR/tuple.rs:+5:1: +5:2 - return; // scope 0 at $DIR/tuple.rs:+5:2: +5:2 + StorageLive(_1); + _1 = (const 1_i32, const 2_i32); + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); +- _4 = (_1.0: i32); ++ _4 = const 1_i32; + StorageLive(_5); +- _5 = (_1.1: i32); +- _3 = Add(move _4, move _5); ++ _5 = const 2_i32; ++ _3 = const 3_i32; + StorageDead(_5); + StorageDead(_4); +- _2 = Add(move _3, const 3_i32); ++ _2 = const 6_i32; + StorageDead(_3); + _1 = (const 2_i32, const 3_i32); + StorageLive(_6); + StorageLive(_7); + StorageLive(_8); +- _8 = (_1.0: i32); ++ _8 = const 2_i32; + StorageLive(_9); +- _9 = (_1.1: i32); +- _7 = Add(move _8, move _9); ++ _9 = const 3_i32; ++ _7 = const 5_i32; + StorageDead(_9); + StorageDead(_8); + StorageLive(_10); +- _10 = _2; +- _6 = Add(move _7, move _10); ++ _10 = const 6_i32; ++ _6 = const 11_i32; + StorageDead(_10); + StorageDead(_7); + _0 = const (); + StorageDead(_6); + StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/dead-store-elimination/cycle.cycle.DeadStoreElimination.panic-abort.diff b/tests/mir-opt/dead-store-elimination/cycle.cycle.DeadStoreElimination.panic-abort.diff index 23cd812cabe54..6221d478041a2 100644 --- a/tests/mir-opt/dead-store-elimination/cycle.cycle.DeadStoreElimination.panic-abort.diff +++ b/tests/mir-opt/dead-store-elimination/cycle.cycle.DeadStoreElimination.panic-abort.diff @@ -2,75 +2,72 @@ + // MIR for `cycle` after DeadStoreElimination fn cycle(_1: i32, _2: i32, _3: i32) -> () { - debug x => _1; // in scope 0 at $DIR/cycle.rs:+0:10: +0:15 - debug y => _2; // in scope 0 at $DIR/cycle.rs:+0:22: +0:27 - debug z => _3; // in scope 0 at $DIR/cycle.rs:+0:34: +0:39 - let mut _0: (); // return place in scope 0 at $DIR/cycle.rs:+0:46: +0:46 -- let mut _4: (); // in scope 0 at $DIR/cycle.rs:+0:1: +9:2 -- let mut _5: bool; // in scope 0 at $DIR/cycle.rs:+3:11: +3:17 -- let _6: i32; // in scope 0 at $DIR/cycle.rs:+4:13: +4:17 -- let mut _7: i32; // in scope 0 at $DIR/cycle.rs:+5:13: +5:14 -- let mut _8: i32; // in scope 0 at $DIR/cycle.rs:+6:13: +6:14 -- let mut _9: i32; // in scope 0 at $DIR/cycle.rs:+7:13: +7:17 -- let mut _10: !; // in scope 0 at $DIR/cycle.rs:+3:5: +8:6 -- let _11: (); // in scope 0 at $DIR/cycle.rs:+3:5: +8:6 -- let mut _12: !; // in scope 0 at $DIR/cycle.rs:+3:5: +8:6 -+ let mut _4: bool; // in scope 0 at $DIR/cycle.rs:+3:11: +3:17 -+ let _5: i32; // in scope 0 at $DIR/cycle.rs:+4:13: +4:17 + debug x => _1; + debug y => _2; + debug z => _3; + let mut _0: (); +- let mut _4: (); +- let mut _5: bool; +- let _6: i32; +- let mut _7: i32; +- let mut _8: i32; +- let mut _9: i32; +- let mut _10: !; +- let _11: (); +- let mut _12: !; ++ let mut _4: bool; ++ let _5: i32; scope 1 { -- debug temp => _6; // in scope 1 at $DIR/cycle.rs:+4:13: +4:17 -+ debug temp => _5; // in scope 1 at $DIR/cycle.rs:+4:13: +4:17 +- debug temp => _6; ++ debug temp => _5; } bb0: { - goto -> bb1; // scope 0 at $DIR/cycle.rs:+3:5: +8:6 + goto -> bb1; } bb1: { -- StorageLive(_5); // scope 0 at $DIR/cycle.rs:+3:11: +3:17 -- _5 = cond() -> [return: bb2, unwind unreachable]; // scope 0 at $DIR/cycle.rs:+3:11: +3:17 -+ StorageLive(_4); // scope 0 at $DIR/cycle.rs:+3:11: +3:17 -+ _4 = cond() -> [return: bb2, unwind unreachable]; // scope 0 at $DIR/cycle.rs:+3:11: +3:17 - // mir::Constant - // + span: $DIR/cycle.rs:13:11: 13:15 - // + literal: Const { ty: fn() -> bool {cond}, val: Value() } +- StorageLive(_5); +- _5 = cond() -> [return: bb2, unwind unreachable]; ++ StorageLive(_4); ++ _4 = cond() -> [return: bb2, unwind unreachable]; } bb2: { -- switchInt(move _5) -> [0: bb4, otherwise: bb3]; // scope 0 at $DIR/cycle.rs:+3:11: +3:17 -+ switchInt(move _4) -> [0: bb4, otherwise: bb3]; // scope 0 at $DIR/cycle.rs:+3:11: +3:17 +- switchInt(move _5) -> [0: bb4, otherwise: bb3]; ++ switchInt(move _4) -> [0: bb4, otherwise: bb3]; } bb3: { -- StorageLive(_6); // scope 0 at $DIR/cycle.rs:+4:13: +4:17 -- _6 = _3; // scope 0 at $DIR/cycle.rs:+4:20: +4:21 -- StorageLive(_7); // scope 1 at $DIR/cycle.rs:+5:13: +5:14 -- _7 = _2; // scope 1 at $DIR/cycle.rs:+5:13: +5:14 -- _3 = move _7; // scope 1 at $DIR/cycle.rs:+5:9: +5:14 -- StorageDead(_7); // scope 1 at $DIR/cycle.rs:+5:13: +5:14 -- StorageLive(_8); // scope 1 at $DIR/cycle.rs:+6:13: +6:14 -- _8 = _1; // scope 1 at $DIR/cycle.rs:+6:13: +6:14 -- _2 = move _8; // scope 1 at $DIR/cycle.rs:+6:9: +6:14 -- StorageDead(_8); // scope 1 at $DIR/cycle.rs:+6:13: +6:14 -- StorageLive(_9); // scope 1 at $DIR/cycle.rs:+7:13: +7:17 -- _9 = _6; // scope 1 at $DIR/cycle.rs:+7:13: +7:17 -- _1 = move _9; // scope 1 at $DIR/cycle.rs:+7:9: +7:17 -- StorageDead(_9); // scope 1 at $DIR/cycle.rs:+7:16: +7:17 -- _4 = const (); // scope 0 at $DIR/cycle.rs:+3:18: +8:6 -- StorageDead(_6); // scope 0 at $DIR/cycle.rs:+8:5: +8:6 -+ StorageLive(_5); // scope 0 at $DIR/cycle.rs:+4:13: +4:17 - StorageDead(_5); // scope 0 at $DIR/cycle.rs:+8:5: +8:6 -+ StorageDead(_4); // scope 0 at $DIR/cycle.rs:+8:5: +8:6 - goto -> bb1; // scope 0 at $DIR/cycle.rs:+3:5: +8:6 +- StorageLive(_6); +- _6 = _3; +- StorageLive(_7); +- _7 = _2; +- _3 = move _7; +- StorageDead(_7); +- StorageLive(_8); +- _8 = _1; +- _2 = move _8; +- StorageDead(_8); +- StorageLive(_9); +- _9 = _6; +- _1 = move _9; +- StorageDead(_9); +- _4 = const (); +- StorageDead(_6); ++ StorageLive(_5); + StorageDead(_5); ++ StorageDead(_4); + goto -> bb1; } bb4: { -- StorageLive(_11); // scope 0 at $DIR/cycle.rs:+3:5: +8:6 - _0 = const (); // scope 0 at $DIR/cycle.rs:+3:5: +8:6 -- StorageDead(_11); // scope 0 at $DIR/cycle.rs:+8:5: +8:6 -- StorageDead(_5); // scope 0 at $DIR/cycle.rs:+8:5: +8:6 -+ StorageDead(_4); // scope 0 at $DIR/cycle.rs:+8:5: +8:6 - return; // scope 0 at $DIR/cycle.rs:+9:2: +9:2 +- StorageLive(_11); + _0 = const (); +- StorageDead(_11); +- StorageDead(_5); ++ StorageDead(_4); + return; } } diff --git a/tests/mir-opt/dead-store-elimination/cycle.cycle.DeadStoreElimination.panic-unwind.diff b/tests/mir-opt/dead-store-elimination/cycle.cycle.DeadStoreElimination.panic-unwind.diff index 2776ff51d85a1..80a4dd371839c 100644 --- a/tests/mir-opt/dead-store-elimination/cycle.cycle.DeadStoreElimination.panic-unwind.diff +++ b/tests/mir-opt/dead-store-elimination/cycle.cycle.DeadStoreElimination.panic-unwind.diff @@ -2,75 +2,72 @@ + // MIR for `cycle` after DeadStoreElimination fn cycle(_1: i32, _2: i32, _3: i32) -> () { - debug x => _1; // in scope 0 at $DIR/cycle.rs:+0:10: +0:15 - debug y => _2; // in scope 0 at $DIR/cycle.rs:+0:22: +0:27 - debug z => _3; // in scope 0 at $DIR/cycle.rs:+0:34: +0:39 - let mut _0: (); // return place in scope 0 at $DIR/cycle.rs:+0:46: +0:46 -- let mut _4: (); // in scope 0 at $DIR/cycle.rs:+0:1: +9:2 -- let mut _5: bool; // in scope 0 at $DIR/cycle.rs:+3:11: +3:17 -- let _6: i32; // in scope 0 at $DIR/cycle.rs:+4:13: +4:17 -- let mut _7: i32; // in scope 0 at $DIR/cycle.rs:+5:13: +5:14 -- let mut _8: i32; // in scope 0 at $DIR/cycle.rs:+6:13: +6:14 -- let mut _9: i32; // in scope 0 at $DIR/cycle.rs:+7:13: +7:17 -- let mut _10: !; // in scope 0 at $DIR/cycle.rs:+3:5: +8:6 -- let _11: (); // in scope 0 at $DIR/cycle.rs:+3:5: +8:6 -- let mut _12: !; // in scope 0 at $DIR/cycle.rs:+3:5: +8:6 -+ let mut _4: bool; // in scope 0 at $DIR/cycle.rs:+3:11: +3:17 -+ let _5: i32; // in scope 0 at $DIR/cycle.rs:+4:13: +4:17 + debug x => _1; + debug y => _2; + debug z => _3; + let mut _0: (); +- let mut _4: (); +- let mut _5: bool; +- let _6: i32; +- let mut _7: i32; +- let mut _8: i32; +- let mut _9: i32; +- let mut _10: !; +- let _11: (); +- let mut _12: !; ++ let mut _4: bool; ++ let _5: i32; scope 1 { -- debug temp => _6; // in scope 1 at $DIR/cycle.rs:+4:13: +4:17 -+ debug temp => _5; // in scope 1 at $DIR/cycle.rs:+4:13: +4:17 +- debug temp => _6; ++ debug temp => _5; } bb0: { - goto -> bb1; // scope 0 at $DIR/cycle.rs:+3:5: +8:6 + goto -> bb1; } bb1: { -- StorageLive(_5); // scope 0 at $DIR/cycle.rs:+3:11: +3:17 -- _5 = cond() -> bb2; // scope 0 at $DIR/cycle.rs:+3:11: +3:17 -+ StorageLive(_4); // scope 0 at $DIR/cycle.rs:+3:11: +3:17 -+ _4 = cond() -> bb2; // scope 0 at $DIR/cycle.rs:+3:11: +3:17 - // mir::Constant - // + span: $DIR/cycle.rs:13:11: 13:15 - // + literal: Const { ty: fn() -> bool {cond}, val: Value() } +- StorageLive(_5); +- _5 = cond() -> bb2; ++ StorageLive(_4); ++ _4 = cond() -> bb2; } bb2: { -- switchInt(move _5) -> [0: bb4, otherwise: bb3]; // scope 0 at $DIR/cycle.rs:+3:11: +3:17 -+ switchInt(move _4) -> [0: bb4, otherwise: bb3]; // scope 0 at $DIR/cycle.rs:+3:11: +3:17 +- switchInt(move _5) -> [0: bb4, otherwise: bb3]; ++ switchInt(move _4) -> [0: bb4, otherwise: bb3]; } bb3: { -- StorageLive(_6); // scope 0 at $DIR/cycle.rs:+4:13: +4:17 -- _6 = _3; // scope 0 at $DIR/cycle.rs:+4:20: +4:21 -- StorageLive(_7); // scope 1 at $DIR/cycle.rs:+5:13: +5:14 -- _7 = _2; // scope 1 at $DIR/cycle.rs:+5:13: +5:14 -- _3 = move _7; // scope 1 at $DIR/cycle.rs:+5:9: +5:14 -- StorageDead(_7); // scope 1 at $DIR/cycle.rs:+5:13: +5:14 -- StorageLive(_8); // scope 1 at $DIR/cycle.rs:+6:13: +6:14 -- _8 = _1; // scope 1 at $DIR/cycle.rs:+6:13: +6:14 -- _2 = move _8; // scope 1 at $DIR/cycle.rs:+6:9: +6:14 -- StorageDead(_8); // scope 1 at $DIR/cycle.rs:+6:13: +6:14 -- StorageLive(_9); // scope 1 at $DIR/cycle.rs:+7:13: +7:17 -- _9 = _6; // scope 1 at $DIR/cycle.rs:+7:13: +7:17 -- _1 = move _9; // scope 1 at $DIR/cycle.rs:+7:9: +7:17 -- StorageDead(_9); // scope 1 at $DIR/cycle.rs:+7:16: +7:17 -- _4 = const (); // scope 0 at $DIR/cycle.rs:+3:18: +8:6 -- StorageDead(_6); // scope 0 at $DIR/cycle.rs:+8:5: +8:6 -+ StorageLive(_5); // scope 0 at $DIR/cycle.rs:+4:13: +4:17 - StorageDead(_5); // scope 0 at $DIR/cycle.rs:+8:5: +8:6 -+ StorageDead(_4); // scope 0 at $DIR/cycle.rs:+8:5: +8:6 - goto -> bb1; // scope 0 at $DIR/cycle.rs:+3:5: +8:6 +- StorageLive(_6); +- _6 = _3; +- StorageLive(_7); +- _7 = _2; +- _3 = move _7; +- StorageDead(_7); +- StorageLive(_8); +- _8 = _1; +- _2 = move _8; +- StorageDead(_8); +- StorageLive(_9); +- _9 = _6; +- _1 = move _9; +- StorageDead(_9); +- _4 = const (); +- StorageDead(_6); ++ StorageLive(_5); + StorageDead(_5); ++ StorageDead(_4); + goto -> bb1; } bb4: { -- StorageLive(_11); // scope 0 at $DIR/cycle.rs:+3:5: +8:6 - _0 = const (); // scope 0 at $DIR/cycle.rs:+3:5: +8:6 -- StorageDead(_11); // scope 0 at $DIR/cycle.rs:+8:5: +8:6 -- StorageDead(_5); // scope 0 at $DIR/cycle.rs:+8:5: +8:6 -+ StorageDead(_4); // scope 0 at $DIR/cycle.rs:+8:5: +8:6 - return; // scope 0 at $DIR/cycle.rs:+9:2: +9:2 +- StorageLive(_11); + _0 = const (); +- StorageDead(_11); +- StorageDead(_5); ++ StorageDead(_4); + return; } } diff --git a/tests/mir-opt/dead-store-elimination/place_mention.main.DeadStoreElimination.diff b/tests/mir-opt/dead-store-elimination/place_mention.main.DeadStoreElimination.diff index 761c074ed9450..2130518771a58 100644 --- a/tests/mir-opt/dead-store-elimination/place_mention.main.DeadStoreElimination.diff +++ b/tests/mir-opt/dead-store-elimination/place_mention.main.DeadStoreElimination.diff @@ -2,24 +2,18 @@ + // MIR for `main` after DeadStoreElimination fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/place_mention.rs:+0:11: +0:11 - let mut _1: (&str, &str); // in scope 0 at $DIR/place_mention.rs:+3:18: +3:36 + let mut _0: (); + let mut _1: (&str, &str); scope 1 { } bb0: { - StorageLive(_1); // scope 0 at $DIR/place_mention.rs:+3:18: +3:36 - _1 = (const "Hello", const "World"); // scope 0 at $DIR/place_mention.rs:+3:18: +3:36 - // mir::Constant - // + span: $DIR/place_mention.rs:8:19: 8:26 - // + literal: Const { ty: &str, val: Value(Slice(..)) } - // mir::Constant - // + span: $DIR/place_mention.rs:8:28: 8:35 - // + literal: Const { ty: &str, val: Value(Slice(..)) } - PlaceMention(_1); // scope 0 at $DIR/place_mention.rs:+3:18: +3:36 - StorageDead(_1); // scope 0 at $DIR/place_mention.rs:+3:36: +3:37 - _0 = const (); // scope 0 at $DIR/place_mention.rs:+0:11: +4:2 - return; // scope 0 at $DIR/place_mention.rs:+4:2: +4:2 + StorageLive(_1); + _1 = (const "Hello", const "World"); + PlaceMention(_1); + StorageDead(_1); + _0 = const (); + return; } } diff --git a/tests/mir-opt/dead-store-elimination/provenance_soundness.pointer_to_int.DeadStoreElimination.diff b/tests/mir-opt/dead-store-elimination/provenance_soundness.pointer_to_int.DeadStoreElimination.diff index 89f1846b45de8..31f727e5fb350 100644 --- a/tests/mir-opt/dead-store-elimination/provenance_soundness.pointer_to_int.DeadStoreElimination.diff +++ b/tests/mir-opt/dead-store-elimination/provenance_soundness.pointer_to_int.DeadStoreElimination.diff @@ -2,34 +2,34 @@ + // MIR for `pointer_to_int` after DeadStoreElimination fn pointer_to_int(_1: *mut i32) -> () { - debug p => _1; // in scope 0 at $DIR/provenance_soundness.rs:+0:19: +0:20 - let mut _0: (); // return place in scope 0 at $DIR/provenance_soundness.rs:+0:32: +0:32 - let _2: usize; // in scope 0 at $DIR/provenance_soundness.rs:+1:9: +1:11 - let mut _3: *mut i32; // in scope 0 at $DIR/provenance_soundness.rs:+1:14: +1:15 - let mut _5: *mut i32; // in scope 0 at $DIR/provenance_soundness.rs:+2:14: +2:15 + debug p => _1; + let mut _0: (); + let _2: usize; + let mut _3: *mut i32; + let mut _5: *mut i32; scope 1 { - debug _x => _2; // in scope 1 at $DIR/provenance_soundness.rs:+1:9: +1:11 - let _4: isize; // in scope 1 at $DIR/provenance_soundness.rs:+2:9: +2:11 + debug _x => _2; + let _4: isize; scope 2 { - debug _y => _4; // in scope 2 at $DIR/provenance_soundness.rs:+2:9: +2:11 + debug _y => _4; } } bb0: { - StorageLive(_2); // scope 0 at $DIR/provenance_soundness.rs:+1:9: +1:11 - StorageLive(_3); // scope 0 at $DIR/provenance_soundness.rs:+1:14: +1:15 - _3 = _1; // scope 0 at $DIR/provenance_soundness.rs:+1:14: +1:15 - _2 = move _3 as usize (PointerExposeAddress); // scope 0 at $DIR/provenance_soundness.rs:+1:14: +1:24 - StorageDead(_3); // scope 0 at $DIR/provenance_soundness.rs:+1:23: +1:24 - StorageLive(_4); // scope 1 at $DIR/provenance_soundness.rs:+2:9: +2:11 - StorageLive(_5); // scope 1 at $DIR/provenance_soundness.rs:+2:14: +2:15 - _5 = _1; // scope 1 at $DIR/provenance_soundness.rs:+2:14: +2:15 - _4 = move _5 as isize (PointerExposeAddress); // scope 1 at $DIR/provenance_soundness.rs:+2:14: +2:24 - StorageDead(_5); // scope 1 at $DIR/provenance_soundness.rs:+2:23: +2:24 - _0 = const (); // scope 0 at $DIR/provenance_soundness.rs:+0:32: +3:2 - StorageDead(_4); // scope 1 at $DIR/provenance_soundness.rs:+3:1: +3:2 - StorageDead(_2); // scope 0 at $DIR/provenance_soundness.rs:+3:1: +3:2 - return; // scope 0 at $DIR/provenance_soundness.rs:+3:2: +3:2 + StorageLive(_2); + StorageLive(_3); + _3 = _1; + _2 = move _3 as usize (PointerExposeAddress); + StorageDead(_3); + StorageLive(_4); + StorageLive(_5); + _5 = _1; + _4 = move _5 as isize (PointerExposeAddress); + StorageDead(_5); + _0 = const (); + StorageDead(_4); + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/dead-store-elimination/provenance_soundness.retags.DeadStoreElimination.diff b/tests/mir-opt/dead-store-elimination/provenance_soundness.retags.DeadStoreElimination.diff index b5f98233b3d7a..e1ebc39aacc4a 100644 --- a/tests/mir-opt/dead-store-elimination/provenance_soundness.retags.DeadStoreElimination.diff +++ b/tests/mir-opt/dead-store-elimination/provenance_soundness.retags.DeadStoreElimination.diff @@ -2,13 +2,13 @@ + // MIR for `retags` after DeadStoreElimination fn retags(_1: &mut i32) -> () { - debug _r => _1; // in scope 0 at $DIR/provenance_soundness.rs:+0:11: +0:13 - let mut _0: (); // return place in scope 0 at $DIR/provenance_soundness.rs:+0:25: +0:25 + debug _r => _1; + let mut _0: (); bb0: { - Retag([fn entry] _1); // scope 0 at $DIR/provenance_soundness.rs:+0:11: +0:13 - _0 = const (); // scope 0 at $DIR/provenance_soundness.rs:+0:25: +0:27 - return; // scope 0 at $DIR/provenance_soundness.rs:+0:27: +0:27 + Retag([fn entry] _1); + _0 = const (); + return; } } diff --git a/tests/mir-opt/deduplicate_blocks.is_line_doc_comment_2.DeduplicateBlocks.panic-abort.diff b/tests/mir-opt/deduplicate_blocks.is_line_doc_comment_2.DeduplicateBlocks.panic-abort.diff index 89de03000ae70..5c4fc06a2baec 100644 --- a/tests/mir-opt/deduplicate_blocks.is_line_doc_comment_2.DeduplicateBlocks.panic-abort.diff +++ b/tests/mir-opt/deduplicate_blocks.is_line_doc_comment_2.DeduplicateBlocks.panic-abort.diff @@ -2,99 +2,95 @@ + // MIR for `is_line_doc_comment_2` after DeduplicateBlocks fn is_line_doc_comment_2(_1: &str) -> bool { - debug s => _1; // in scope 0 at $DIR/deduplicate_blocks.rs:+0:36: +0:37 - let mut _0: bool; // return place in scope 0 at $DIR/deduplicate_blocks.rs:+0:48: +0:52 - let mut _2: &[u8]; // in scope 0 at $DIR/deduplicate_blocks.rs:+1:11: +1:23 - let mut _3: &str; // in scope 0 at $DIR/deduplicate_blocks.rs:+1:11: +1:23 - let mut _4: usize; // in scope 0 at $DIR/deduplicate_blocks.rs:+3:9: +3:31 - let mut _5: usize; // in scope 0 at $DIR/deduplicate_blocks.rs:+3:9: +3:31 - let mut _6: bool; // in scope 0 at $DIR/deduplicate_blocks.rs:+3:9: +3:31 - let mut _7: usize; // in scope 0 at $DIR/deduplicate_blocks.rs:+2:9: +2:37 - let mut _8: usize; // in scope 0 at $DIR/deduplicate_blocks.rs:+2:9: +2:37 - let mut _9: bool; // in scope 0 at $DIR/deduplicate_blocks.rs:+2:9: +2:37 + debug s => _1; + let mut _0: bool; + let mut _2: &[u8]; + let mut _3: &str; + let mut _4: usize; + let mut _5: usize; + let mut _6: bool; + let mut _7: usize; + let mut _8: usize; + let mut _9: bool; bb0: { - StorageLive(_2); // scope 0 at $DIR/deduplicate_blocks.rs:+1:11: +1:23 - StorageLive(_3); // scope 0 at $DIR/deduplicate_blocks.rs:+1:11: +1:23 - _3 = &(*_1); // scope 0 at $DIR/deduplicate_blocks.rs:+1:11: +1:23 - _2 = core::str::::as_bytes(move _3) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/deduplicate_blocks.rs:+1:11: +1:23 - // mir::Constant - // + span: $DIR/deduplicate_blocks.rs:6:13: 6:21 - // + literal: Const { ty: for<'a> fn(&'a str) -> &'a [u8] {core::str::::as_bytes}, val: Value() } + StorageLive(_2); + StorageLive(_3); + _3 = &(*_1); + _2 = core::str::::as_bytes(move _3) -> [return: bb1, unwind unreachable]; } bb1: { - StorageDead(_3); // scope 0 at $DIR/deduplicate_blocks.rs:+1:22: +1:23 - _7 = Len((*_2)); // scope 0 at $DIR/deduplicate_blocks.rs:+2:9: +2:37 - _8 = const 4_usize; // scope 0 at $DIR/deduplicate_blocks.rs:+2:9: +2:37 - _9 = Ge(move _7, move _8); // scope 0 at $DIR/deduplicate_blocks.rs:+2:9: +2:37 - switchInt(move _9) -> [0: bb6, otherwise: bb2]; // scope 0 at $DIR/deduplicate_blocks.rs:+2:9: +2:37 + StorageDead(_3); + _7 = Len((*_2)); + _8 = const 4_usize; + _9 = Ge(move _7, move _8); + switchInt(move _9) -> [0: bb6, otherwise: bb2]; } bb2: { - switchInt((*_2)[0 of 4]) -> [47: bb3, otherwise: bb6]; // scope 0 at $DIR/deduplicate_blocks.rs:+1:5: +1:23 + switchInt((*_2)[0 of 4]) -> [47: bb3, otherwise: bb6]; } bb3: { - switchInt((*_2)[1 of 4]) -> [47: bb4, otherwise: bb6]; // scope 0 at $DIR/deduplicate_blocks.rs:+1:5: +1:23 + switchInt((*_2)[1 of 4]) -> [47: bb4, otherwise: bb6]; } bb4: { - switchInt((*_2)[2 of 4]) -> [47: bb5, otherwise: bb6]; // scope 0 at $DIR/deduplicate_blocks.rs:+1:5: +1:23 + switchInt((*_2)[2 of 4]) -> [47: bb5, otherwise: bb6]; } bb5: { -- switchInt((*_2)[3 of 4]) -> [47: bb11, otherwise: bb6]; // scope 0 at $DIR/deduplicate_blocks.rs:+1:5: +1:23 -+ switchInt((*_2)[3 of 4]) -> [47: bb10, otherwise: bb6]; // scope 0 at $DIR/deduplicate_blocks.rs:+1:5: +1:23 +- switchInt((*_2)[3 of 4]) -> [47: bb11, otherwise: bb6]; ++ switchInt((*_2)[3 of 4]) -> [47: bb10, otherwise: bb6]; } bb6: { - _4 = Len((*_2)); // scope 0 at $DIR/deduplicate_blocks.rs:+3:9: +3:31 - _5 = const 3_usize; // scope 0 at $DIR/deduplicate_blocks.rs:+3:9: +3:31 - _6 = Ge(move _4, move _5); // scope 0 at $DIR/deduplicate_blocks.rs:+3:9: +3:31 - switchInt(move _6) -> [0: bb10, otherwise: bb7]; // scope 0 at $DIR/deduplicate_blocks.rs:+3:9: +3:31 + _4 = Len((*_2)); + _5 = const 3_usize; + _6 = Ge(move _4, move _5); + switchInt(move _6) -> [0: bb10, otherwise: bb7]; } bb7: { - switchInt((*_2)[0 of 3]) -> [47: bb8, otherwise: bb10]; // scope 0 at $DIR/deduplicate_blocks.rs:+1:5: +1:23 + switchInt((*_2)[0 of 3]) -> [47: bb8, otherwise: bb10]; } bb8: { - switchInt((*_2)[1 of 3]) -> [47: bb9, otherwise: bb10]; // scope 0 at $DIR/deduplicate_blocks.rs:+1:5: +1:23 + switchInt((*_2)[1 of 3]) -> [47: bb9, otherwise: bb10]; } bb9: { -- switchInt((*_2)[2 of 3]) -> [47: bb12, 33: bb13, otherwise: bb10]; // scope 0 at $DIR/deduplicate_blocks.rs:+1:5: +1:23 -+ switchInt((*_2)[2 of 3]) -> [47: bb11, 33: bb11, otherwise: bb10]; // scope 0 at $DIR/deduplicate_blocks.rs:+1:5: +1:23 +- switchInt((*_2)[2 of 3]) -> [47: bb12, 33: bb13, otherwise: bb10]; ++ switchInt((*_2)[2 of 3]) -> [47: bb11, 33: bb11, otherwise: bb10]; } bb10: { -- _0 = const false; // scope 0 at $DIR/deduplicate_blocks.rs:+5:14: +5:19 -- goto -> bb14; // scope 0 at $DIR/deduplicate_blocks.rs:+5:14: +5:19 -- } -- -- bb11: { - _0 = const false; // scope 0 at $DIR/deduplicate_blocks.rs:+2:41: +2:46 -- goto -> bb14; // scope 0 at $DIR/deduplicate_blocks.rs:+2:41: +2:46 -+ goto -> bb12; // scope 0 at $DIR/deduplicate_blocks.rs:+2:41: +2:46 + _0 = const false; +- goto -> bb14; ++ goto -> bb12; } -- bb12: { -- _0 = const true; // scope 0 at $DIR/deduplicate_blocks.rs:+3:35: +3:39 -- goto -> bb14; // scope 0 at $DIR/deduplicate_blocks.rs:+3:35: +3:39 + bb11: { +- _0 = const false; +- goto -> bb14; - } - -- bb13: { -+ bb11: { - _0 = const true; // scope 0 at $DIR/deduplicate_blocks.rs:+4:35: +4:39 -- goto -> bb14; // scope 0 at $DIR/deduplicate_blocks.rs:+4:35: +4:39 -+ goto -> bb12; // scope 0 at $DIR/deduplicate_blocks.rs:+4:35: +4:39 +- bb12: { + _0 = const true; +- goto -> bb14; ++ goto -> bb12; } +- bb13: { +- _0 = const true; +- goto -> bb14; +- } +- - bb14: { + bb12: { - StorageDead(_2); // scope 0 at $DIR/deduplicate_blocks.rs:+7:1: +7:2 - return; // scope 0 at $DIR/deduplicate_blocks.rs:+7:2: +7:2 + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/deduplicate_blocks.is_line_doc_comment_2.DeduplicateBlocks.panic-unwind.diff b/tests/mir-opt/deduplicate_blocks.is_line_doc_comment_2.DeduplicateBlocks.panic-unwind.diff index c4ebf1ca834f9..66396d28e704e 100644 --- a/tests/mir-opt/deduplicate_blocks.is_line_doc_comment_2.DeduplicateBlocks.panic-unwind.diff +++ b/tests/mir-opt/deduplicate_blocks.is_line_doc_comment_2.DeduplicateBlocks.panic-unwind.diff @@ -2,99 +2,95 @@ + // MIR for `is_line_doc_comment_2` after DeduplicateBlocks fn is_line_doc_comment_2(_1: &str) -> bool { - debug s => _1; // in scope 0 at $DIR/deduplicate_blocks.rs:+0:36: +0:37 - let mut _0: bool; // return place in scope 0 at $DIR/deduplicate_blocks.rs:+0:48: +0:52 - let mut _2: &[u8]; // in scope 0 at $DIR/deduplicate_blocks.rs:+1:11: +1:23 - let mut _3: &str; // in scope 0 at $DIR/deduplicate_blocks.rs:+1:11: +1:23 - let mut _4: usize; // in scope 0 at $DIR/deduplicate_blocks.rs:+3:9: +3:31 - let mut _5: usize; // in scope 0 at $DIR/deduplicate_blocks.rs:+3:9: +3:31 - let mut _6: bool; // in scope 0 at $DIR/deduplicate_blocks.rs:+3:9: +3:31 - let mut _7: usize; // in scope 0 at $DIR/deduplicate_blocks.rs:+2:9: +2:37 - let mut _8: usize; // in scope 0 at $DIR/deduplicate_blocks.rs:+2:9: +2:37 - let mut _9: bool; // in scope 0 at $DIR/deduplicate_blocks.rs:+2:9: +2:37 + debug s => _1; + let mut _0: bool; + let mut _2: &[u8]; + let mut _3: &str; + let mut _4: usize; + let mut _5: usize; + let mut _6: bool; + let mut _7: usize; + let mut _8: usize; + let mut _9: bool; bb0: { - StorageLive(_2); // scope 0 at $DIR/deduplicate_blocks.rs:+1:11: +1:23 - StorageLive(_3); // scope 0 at $DIR/deduplicate_blocks.rs:+1:11: +1:23 - _3 = &(*_1); // scope 0 at $DIR/deduplicate_blocks.rs:+1:11: +1:23 - _2 = core::str::::as_bytes(move _3) -> bb1; // scope 0 at $DIR/deduplicate_blocks.rs:+1:11: +1:23 - // mir::Constant - // + span: $DIR/deduplicate_blocks.rs:6:13: 6:21 - // + literal: Const { ty: for<'a> fn(&'a str) -> &'a [u8] {core::str::::as_bytes}, val: Value() } + StorageLive(_2); + StorageLive(_3); + _3 = &(*_1); + _2 = core::str::::as_bytes(move _3) -> bb1; } bb1: { - StorageDead(_3); // scope 0 at $DIR/deduplicate_blocks.rs:+1:22: +1:23 - _7 = Len((*_2)); // scope 0 at $DIR/deduplicate_blocks.rs:+2:9: +2:37 - _8 = const 4_usize; // scope 0 at $DIR/deduplicate_blocks.rs:+2:9: +2:37 - _9 = Ge(move _7, move _8); // scope 0 at $DIR/deduplicate_blocks.rs:+2:9: +2:37 - switchInt(move _9) -> [0: bb6, otherwise: bb2]; // scope 0 at $DIR/deduplicate_blocks.rs:+2:9: +2:37 + StorageDead(_3); + _7 = Len((*_2)); + _8 = const 4_usize; + _9 = Ge(move _7, move _8); + switchInt(move _9) -> [0: bb6, otherwise: bb2]; } bb2: { - switchInt((*_2)[0 of 4]) -> [47: bb3, otherwise: bb6]; // scope 0 at $DIR/deduplicate_blocks.rs:+1:5: +1:23 + switchInt((*_2)[0 of 4]) -> [47: bb3, otherwise: bb6]; } bb3: { - switchInt((*_2)[1 of 4]) -> [47: bb4, otherwise: bb6]; // scope 0 at $DIR/deduplicate_blocks.rs:+1:5: +1:23 + switchInt((*_2)[1 of 4]) -> [47: bb4, otherwise: bb6]; } bb4: { - switchInt((*_2)[2 of 4]) -> [47: bb5, otherwise: bb6]; // scope 0 at $DIR/deduplicate_blocks.rs:+1:5: +1:23 + switchInt((*_2)[2 of 4]) -> [47: bb5, otherwise: bb6]; } bb5: { -- switchInt((*_2)[3 of 4]) -> [47: bb11, otherwise: bb6]; // scope 0 at $DIR/deduplicate_blocks.rs:+1:5: +1:23 -+ switchInt((*_2)[3 of 4]) -> [47: bb10, otherwise: bb6]; // scope 0 at $DIR/deduplicate_blocks.rs:+1:5: +1:23 +- switchInt((*_2)[3 of 4]) -> [47: bb11, otherwise: bb6]; ++ switchInt((*_2)[3 of 4]) -> [47: bb10, otherwise: bb6]; } bb6: { - _4 = Len((*_2)); // scope 0 at $DIR/deduplicate_blocks.rs:+3:9: +3:31 - _5 = const 3_usize; // scope 0 at $DIR/deduplicate_blocks.rs:+3:9: +3:31 - _6 = Ge(move _4, move _5); // scope 0 at $DIR/deduplicate_blocks.rs:+3:9: +3:31 - switchInt(move _6) -> [0: bb10, otherwise: bb7]; // scope 0 at $DIR/deduplicate_blocks.rs:+3:9: +3:31 + _4 = Len((*_2)); + _5 = const 3_usize; + _6 = Ge(move _4, move _5); + switchInt(move _6) -> [0: bb10, otherwise: bb7]; } bb7: { - switchInt((*_2)[0 of 3]) -> [47: bb8, otherwise: bb10]; // scope 0 at $DIR/deduplicate_blocks.rs:+1:5: +1:23 + switchInt((*_2)[0 of 3]) -> [47: bb8, otherwise: bb10]; } bb8: { - switchInt((*_2)[1 of 3]) -> [47: bb9, otherwise: bb10]; // scope 0 at $DIR/deduplicate_blocks.rs:+1:5: +1:23 + switchInt((*_2)[1 of 3]) -> [47: bb9, otherwise: bb10]; } bb9: { -- switchInt((*_2)[2 of 3]) -> [47: bb12, 33: bb13, otherwise: bb10]; // scope 0 at $DIR/deduplicate_blocks.rs:+1:5: +1:23 -+ switchInt((*_2)[2 of 3]) -> [47: bb11, 33: bb11, otherwise: bb10]; // scope 0 at $DIR/deduplicate_blocks.rs:+1:5: +1:23 +- switchInt((*_2)[2 of 3]) -> [47: bb12, 33: bb13, otherwise: bb10]; ++ switchInt((*_2)[2 of 3]) -> [47: bb11, 33: bb11, otherwise: bb10]; } bb10: { -- _0 = const false; // scope 0 at $DIR/deduplicate_blocks.rs:+5:14: +5:19 -- goto -> bb14; // scope 0 at $DIR/deduplicate_blocks.rs:+5:14: +5:19 -- } -- -- bb11: { - _0 = const false; // scope 0 at $DIR/deduplicate_blocks.rs:+2:41: +2:46 -- goto -> bb14; // scope 0 at $DIR/deduplicate_blocks.rs:+2:41: +2:46 -+ goto -> bb12; // scope 0 at $DIR/deduplicate_blocks.rs:+2:41: +2:46 + _0 = const false; +- goto -> bb14; ++ goto -> bb12; } -- bb12: { -- _0 = const true; // scope 0 at $DIR/deduplicate_blocks.rs:+3:35: +3:39 -- goto -> bb14; // scope 0 at $DIR/deduplicate_blocks.rs:+3:35: +3:39 + bb11: { +- _0 = const false; +- goto -> bb14; - } - -- bb13: { -+ bb11: { - _0 = const true; // scope 0 at $DIR/deduplicate_blocks.rs:+4:35: +4:39 -- goto -> bb14; // scope 0 at $DIR/deduplicate_blocks.rs:+4:35: +4:39 -+ goto -> bb12; // scope 0 at $DIR/deduplicate_blocks.rs:+4:35: +4:39 +- bb12: { + _0 = const true; +- goto -> bb14; ++ goto -> bb12; } +- bb13: { +- _0 = const true; +- goto -> bb14; +- } +- - bb14: { + bb12: { - StorageDead(_2); // scope 0 at $DIR/deduplicate_blocks.rs:+7:1: +7:2 - return; // scope 0 at $DIR/deduplicate_blocks.rs:+7:2: +7:2 + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/deref-patterns/string.foo.PreCodegen.after.mir b/tests/mir-opt/deref-patterns/string.foo.PreCodegen.after.mir index 61ce5e54fdc1a..1e4f7485089ec 100644 --- a/tests/mir-opt/deref-patterns/string.foo.PreCodegen.after.mir +++ b/tests/mir-opt/deref-patterns/string.foo.PreCodegen.after.mir @@ -1,74 +1,65 @@ // MIR for `foo` after PreCodegen fn foo(_1: Option) -> i32 { - debug s => _1; // in scope 0 at $DIR/string.rs:+0:12: +0:13 - let mut _0: i32; // return place in scope 0 at $DIR/string.rs:+0:34: +0:37 - let mut _2: bool; // in scope 0 at $DIR/string.rs:+5:1: +5:2 - let mut _3: isize; // in scope 0 at $DIR/string.rs:+2:9: +2:18 - let mut _4: &std::string::String; // in scope 0 at $DIR/string.rs:+2:14: +2:17 - let mut _5: &str; // in scope 0 at $DIR/string.rs:+2:14: +2:17 - let mut _6: bool; // in scope 0 at $DIR/string.rs:+2:14: +2:17 - let _7: std::option::Option; // in scope 0 at $DIR/string.rs:+3:9: +3:10 + debug s => _1; + let mut _0: i32; + let mut _2: bool; + let mut _3: isize; + let mut _4: &std::string::String; + let mut _5: &str; + let mut _6: bool; + let _7: std::option::Option; scope 1 { - debug s => _7; // in scope 1 at $DIR/string.rs:+3:9: +3:10 + debug s => _7; } bb0: { - _2 = const false; // scope 0 at $DIR/string.rs:+1:11: +1:12 - _2 = const true; // scope 0 at $DIR/string.rs:+1:11: +1:12 - _3 = discriminant(_1); // scope 0 at $DIR/string.rs:+1:11: +1:12 - switchInt(move _3) -> [1: bb1, otherwise: bb5]; // scope 0 at $DIR/string.rs:+1:5: +1:12 + _2 = const false; + _2 = const true; + _3 = discriminant(_1); + switchInt(move _3) -> [1: bb1, otherwise: bb5]; } bb1: { - _4 = &((_1 as Some).0: std::string::String); // scope 0 at $DIR/string.rs:+2:14: +2:17 - _5 = ::deref(move _4) -> [return: bb2, unwind unreachable]; // scope 0 at $DIR/string.rs:+2:14: +2:17 - // mir::Constant - // + span: $DIR/string.rs:9:14: 9:17 - // + literal: Const { ty: for<'a> fn(&'a String) -> &'a ::Target {::deref}, val: Value() } + _4 = &((_1 as Some).0: std::string::String); + _5 = ::deref(move _4) -> [return: bb2, unwind unreachable]; } bb2: { - _6 = ::eq(_5, const "a") -> [return: bb3, unwind unreachable]; // scope 0 at $DIR/string.rs:+2:14: +2:17 - // mir::Constant - // + span: $DIR/string.rs:9:14: 9:17 - // + literal: Const { ty: for<'a, 'b> fn(&'a str, &'b str) -> bool {::eq}, val: Value() } - // mir::Constant - // + span: $DIR/string.rs:9:14: 9:17 - // + literal: Const { ty: &str, val: Value(ValTree::Branch(..)) } + _6 = ::eq(_5, const "a") -> [return: bb3, unwind unreachable]; } bb3: { - switchInt(move _6) -> [0: bb5, otherwise: bb4]; // scope 0 at $DIR/string.rs:+2:14: +2:17 + switchInt(move _6) -> [0: bb5, otherwise: bb4]; } bb4: { - _0 = const 1234_i32; // scope 0 at $DIR/string.rs:+2:22: +2:26 - goto -> bb7; // scope 0 at $DIR/string.rs:+2:22: +2:26 + _0 = const 1234_i32; + goto -> bb7; } bb5: { - StorageLive(_7); // scope 0 at $DIR/string.rs:+3:9: +3:10 - _2 = const false; // scope 0 at $DIR/string.rs:+3:9: +3:10 - _7 = move _1; // scope 0 at $DIR/string.rs:+3:9: +3:10 - _0 = const 4321_i32; // scope 1 at $DIR/string.rs:+3:14: +3:18 - drop(_7) -> [return: bb6, unwind unreachable]; // scope 0 at $DIR/string.rs:+3:17: +3:18 + StorageLive(_7); + _2 = const false; + _7 = move _1; + _0 = const 4321_i32; + drop(_7) -> [return: bb6, unwind unreachable]; } bb6: { - StorageDead(_7); // scope 0 at $DIR/string.rs:+3:17: +3:18 - goto -> bb7; // scope 0 at $DIR/string.rs:+3:17: +3:18 + StorageDead(_7); + goto -> bb7; } bb7: { - switchInt(_2) -> [0: bb9, otherwise: bb8]; // scope 0 at $DIR/string.rs:+5:1: +5:2 + switchInt(_2) -> [0: bb9, otherwise: bb8]; } bb8: { - drop(_1) -> [return: bb9, unwind unreachable]; // scope 0 at $DIR/string.rs:+5:1: +5:2 + drop(_1) -> [return: bb9, unwind unreachable]; } bb9: { - return; // scope 0 at $DIR/string.rs:+5:2: +5:2 + return; } } diff --git a/tests/mir-opt/derefer_complex_case.main.Derefer.panic-abort.diff b/tests/mir-opt/derefer_complex_case.main.Derefer.panic-abort.diff index 6458b06f0e08e..1f3b3ad649d6c 100644 --- a/tests/mir-opt/derefer_complex_case.main.Derefer.panic-abort.diff +++ b/tests/mir-opt/derefer_complex_case.main.Derefer.panic-abort.diff @@ -2,108 +2,96 @@ + // MIR for `main` after Derefer fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/derefer_complex_case.rs:+0:11: +0:11 - let mut _1: std::slice::Iter<'_, i32>; // in scope 0 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - let mut _2: &[i32; 2]; // in scope 0 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - let _3: [i32; 2]; // in scope 0 at $DIR/derefer_complex_case.rs:+1:18: +1:26 - let mut _4: std::slice::Iter<'_, i32>; // in scope 0 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - let mut _5: (); // in scope 0 at $DIR/derefer_complex_case.rs:+0:1: +2:2 - let _6: (); // in scope 0 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - let mut _7: std::option::Option<&i32>; // in scope 0 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - let mut _8: &mut std::slice::Iter<'_, i32>; // in scope 0 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - let mut _9: &mut std::slice::Iter<'_, i32>; // in scope 0 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - let mut _10: isize; // in scope 0 at $DIR/derefer_complex_case.rs:+1:5: +1:40 - let mut _11: !; // in scope 0 at $DIR/derefer_complex_case.rs:+1:5: +1:40 - let mut _13: i32; // in scope 0 at $DIR/derefer_complex_case.rs:+1:34: +1:37 - let mut _14: &[i32; 2]; // in scope 0 at $DIR/derefer_complex_case.rs:+1:17: +1:26 -+ let mut _15: &i32; // in scope 0 at $DIR/derefer_complex_case.rs:+1:17: +1:26 + let mut _0: (); + let mut _1: std::slice::Iter<'_, i32>; + let mut _2: &[i32; 2]; + let _3: [i32; 2]; + let mut _4: std::slice::Iter<'_, i32>; + let mut _5: (); + let _6: (); + let mut _7: std::option::Option<&i32>; + let mut _8: &mut std::slice::Iter<'_, i32>; + let mut _9: &mut std::slice::Iter<'_, i32>; + let mut _10: isize; + let mut _11: !; + let mut _13: i32; + let mut _14: &[i32; 2]; ++ let mut _15: &i32; scope 1 { - debug iter => _4; // in scope 1 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - let _12: i32; // in scope 1 at $DIR/derefer_complex_case.rs:+1:10: +1:13 + debug iter => _4; + let _12: i32; scope 2 { - debug foo => _12; // in scope 2 at $DIR/derefer_complex_case.rs:+1:10: +1:13 + debug foo => _12; } } bb0: { - StorageLive(_1); // scope 0 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - StorageLive(_2); // scope 0 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - _14 = const _; // scope 0 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - // mir::Constant - // + span: $DIR/derefer_complex_case.rs:6:17: 6:26 - // + literal: Const { ty: &[i32; 2], val: Unevaluated(main, [], Some(promoted[0])) } - _2 = &(*_14); // scope 0 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - _1 = <&[i32; 2] as IntoIterator>::into_iter(move _2) -> [return: bb1, unwind: bb8]; // scope 0 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - // mir::Constant - // + span: $DIR/derefer_complex_case.rs:6:17: 6:26 - // + literal: Const { ty: fn(&[i32; 2]) -> <&[i32; 2] as IntoIterator>::IntoIter {<&[i32; 2] as IntoIterator>::into_iter}, val: Value() } + StorageLive(_1); + StorageLive(_2); + _14 = const _; + _2 = &(*_14); + _1 = <&[i32; 2] as IntoIterator>::into_iter(move _2) -> [return: bb1, unwind: bb8]; } bb1: { - StorageDead(_2); // scope 0 at $DIR/derefer_complex_case.rs:+1:25: +1:26 - StorageLive(_4); // scope 0 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - _4 = move _1; // scope 0 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - goto -> bb2; // scope 1 at $DIR/derefer_complex_case.rs:+1:5: +1:40 + StorageDead(_2); + StorageLive(_4); + _4 = move _1; + goto -> bb2; } bb2: { - StorageLive(_6); // scope 1 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - StorageLive(_7); // scope 1 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - StorageLive(_8); // scope 1 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - StorageLive(_9); // scope 1 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - _9 = &mut _4; // scope 1 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - _8 = &mut (*_9); // scope 1 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - _7 = as Iterator>::next(move _8) -> [return: bb3, unwind: bb8]; // scope 1 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - // mir::Constant - // + span: $DIR/derefer_complex_case.rs:6:17: 6:26 - // + literal: Const { ty: for<'a> fn(&'a mut std::slice::Iter<'_, i32>) -> Option< as Iterator>::Item> { as Iterator>::next}, val: Value() } + StorageLive(_6); + StorageLive(_7); + StorageLive(_8); + StorageLive(_9); + _9 = &mut _4; + _8 = &mut (*_9); + _7 = as Iterator>::next(move _8) -> [return: bb3, unwind: bb8]; } bb3: { - StorageDead(_8); // scope 1 at $DIR/derefer_complex_case.rs:+1:25: +1:26 - _10 = discriminant(_7); // scope 1 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - switchInt(move _10) -> [0: bb6, 1: bb4, otherwise: bb5]; // scope 1 at $DIR/derefer_complex_case.rs:+1:17: +1:26 + StorageDead(_8); + _10 = discriminant(_7); + switchInt(move _10) -> [0: bb6, 1: bb4, otherwise: bb5]; } bb4: { - StorageLive(_12); // scope 1 at $DIR/derefer_complex_case.rs:+1:10: +1:13 -- _12 = (*((_7 as Some).0: &i32)); // scope 1 at $DIR/derefer_complex_case.rs:+1:10: +1:13 -+ _15 = deref_copy ((_7 as Some).0: &i32); // scope 1 at $DIR/derefer_complex_case.rs:+1:10: +1:13 -+ _12 = (*_15); // scope 1 at $DIR/derefer_complex_case.rs:+1:10: +1:13 - StorageLive(_13); // scope 2 at $DIR/derefer_complex_case.rs:+1:34: +1:37 - _13 = _12; // scope 2 at $DIR/derefer_complex_case.rs:+1:34: +1:37 - _6 = std::mem::drop::(move _13) -> [return: bb7, unwind: bb8]; // scope 2 at $DIR/derefer_complex_case.rs:+1:29: +1:38 - // mir::Constant - // + span: $DIR/derefer_complex_case.rs:6:29: 6:33 - // + literal: Const { ty: fn(i32) {std::mem::drop::}, val: Value() } + StorageLive(_12); +- _12 = (*((_7 as Some).0: &i32)); ++ _15 = deref_copy ((_7 as Some).0: &i32); ++ _12 = (*_15); + StorageLive(_13); + _13 = _12; + _6 = std::mem::drop::(move _13) -> [return: bb7, unwind: bb8]; } bb5: { - unreachable; // scope 1 at $DIR/derefer_complex_case.rs:+1:17: +1:26 + unreachable; } bb6: { - _0 = const (); // scope 1 at $DIR/derefer_complex_case.rs:+1:5: +1:40 - StorageDead(_9); // scope 1 at $DIR/derefer_complex_case.rs:+1:39: +1:40 - StorageDead(_7); // scope 1 at $DIR/derefer_complex_case.rs:+1:39: +1:40 - StorageDead(_6); // scope 1 at $DIR/derefer_complex_case.rs:+1:39: +1:40 - StorageDead(_4); // scope 0 at $DIR/derefer_complex_case.rs:+1:39: +1:40 - StorageDead(_1); // scope 0 at $DIR/derefer_complex_case.rs:+1:39: +1:40 - return; // scope 0 at $DIR/derefer_complex_case.rs:+2:2: +2:2 + _0 = const (); + StorageDead(_9); + StorageDead(_7); + StorageDead(_6); + StorageDead(_4); + StorageDead(_1); + return; } bb7: { - StorageDead(_13); // scope 2 at $DIR/derefer_complex_case.rs:+1:37: +1:38 - StorageDead(_12); // scope 1 at $DIR/derefer_complex_case.rs:+1:39: +1:40 - StorageDead(_9); // scope 1 at $DIR/derefer_complex_case.rs:+1:39: +1:40 - StorageDead(_7); // scope 1 at $DIR/derefer_complex_case.rs:+1:39: +1:40 - StorageDead(_6); // scope 1 at $DIR/derefer_complex_case.rs:+1:39: +1:40 - _5 = const (); // scope 1 at $DIR/derefer_complex_case.rs:+1:5: +1:40 - goto -> bb2; // scope 1 at $DIR/derefer_complex_case.rs:+1:5: +1:40 + StorageDead(_13); + StorageDead(_12); + StorageDead(_9); + StorageDead(_7); + StorageDead(_6); + _5 = const (); + goto -> bb2; } bb8 (cleanup): { - resume; // scope 0 at $DIR/derefer_complex_case.rs:+0:1: +2:2 + resume; } } diff --git a/tests/mir-opt/derefer_complex_case.main.Derefer.panic-unwind.diff b/tests/mir-opt/derefer_complex_case.main.Derefer.panic-unwind.diff index fa3eeedc40fff..62085341d378c 100644 --- a/tests/mir-opt/derefer_complex_case.main.Derefer.panic-unwind.diff +++ b/tests/mir-opt/derefer_complex_case.main.Derefer.panic-unwind.diff @@ -2,104 +2,92 @@ + // MIR for `main` after Derefer fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/derefer_complex_case.rs:+0:11: +0:11 - let mut _1: std::slice::Iter<'_, i32>; // in scope 0 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - let mut _2: &[i32; 2]; // in scope 0 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - let _3: [i32; 2]; // in scope 0 at $DIR/derefer_complex_case.rs:+1:18: +1:26 - let mut _4: std::slice::Iter<'_, i32>; // in scope 0 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - let mut _5: (); // in scope 0 at $DIR/derefer_complex_case.rs:+0:1: +2:2 - let _6: (); // in scope 0 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - let mut _7: std::option::Option<&i32>; // in scope 0 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - let mut _8: &mut std::slice::Iter<'_, i32>; // in scope 0 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - let mut _9: &mut std::slice::Iter<'_, i32>; // in scope 0 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - let mut _10: isize; // in scope 0 at $DIR/derefer_complex_case.rs:+1:5: +1:40 - let mut _11: !; // in scope 0 at $DIR/derefer_complex_case.rs:+1:5: +1:40 - let mut _13: i32; // in scope 0 at $DIR/derefer_complex_case.rs:+1:34: +1:37 - let mut _14: &[i32; 2]; // in scope 0 at $DIR/derefer_complex_case.rs:+1:17: +1:26 -+ let mut _15: &i32; // in scope 0 at $DIR/derefer_complex_case.rs:+1:17: +1:26 + let mut _0: (); + let mut _1: std::slice::Iter<'_, i32>; + let mut _2: &[i32; 2]; + let _3: [i32; 2]; + let mut _4: std::slice::Iter<'_, i32>; + let mut _5: (); + let _6: (); + let mut _7: std::option::Option<&i32>; + let mut _8: &mut std::slice::Iter<'_, i32>; + let mut _9: &mut std::slice::Iter<'_, i32>; + let mut _10: isize; + let mut _11: !; + let mut _13: i32; + let mut _14: &[i32; 2]; ++ let mut _15: &i32; scope 1 { - debug iter => _4; // in scope 1 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - let _12: i32; // in scope 1 at $DIR/derefer_complex_case.rs:+1:10: +1:13 + debug iter => _4; + let _12: i32; scope 2 { - debug foo => _12; // in scope 2 at $DIR/derefer_complex_case.rs:+1:10: +1:13 + debug foo => _12; } } bb0: { - StorageLive(_1); // scope 0 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - StorageLive(_2); // scope 0 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - _14 = const _; // scope 0 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - // mir::Constant - // + span: $DIR/derefer_complex_case.rs:6:17: 6:26 - // + literal: Const { ty: &[i32; 2], val: Unevaluated(main, [], Some(promoted[0])) } - _2 = &(*_14); // scope 0 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - _1 = <&[i32; 2] as IntoIterator>::into_iter(move _2) -> bb1; // scope 0 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - // mir::Constant - // + span: $DIR/derefer_complex_case.rs:6:17: 6:26 - // + literal: Const { ty: fn(&[i32; 2]) -> <&[i32; 2] as IntoIterator>::IntoIter {<&[i32; 2] as IntoIterator>::into_iter}, val: Value() } + StorageLive(_1); + StorageLive(_2); + _14 = const _; + _2 = &(*_14); + _1 = <&[i32; 2] as IntoIterator>::into_iter(move _2) -> bb1; } bb1: { - StorageDead(_2); // scope 0 at $DIR/derefer_complex_case.rs:+1:25: +1:26 - StorageLive(_4); // scope 0 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - _4 = move _1; // scope 0 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - goto -> bb2; // scope 1 at $DIR/derefer_complex_case.rs:+1:5: +1:40 + StorageDead(_2); + StorageLive(_4); + _4 = move _1; + goto -> bb2; } bb2: { - StorageLive(_6); // scope 1 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - StorageLive(_7); // scope 1 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - StorageLive(_8); // scope 1 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - StorageLive(_9); // scope 1 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - _9 = &mut _4; // scope 1 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - _8 = &mut (*_9); // scope 1 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - _7 = as Iterator>::next(move _8) -> bb3; // scope 1 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - // mir::Constant - // + span: $DIR/derefer_complex_case.rs:6:17: 6:26 - // + literal: Const { ty: for<'a> fn(&'a mut std::slice::Iter<'_, i32>) -> Option< as Iterator>::Item> { as Iterator>::next}, val: Value() } + StorageLive(_6); + StorageLive(_7); + StorageLive(_8); + StorageLive(_9); + _9 = &mut _4; + _8 = &mut (*_9); + _7 = as Iterator>::next(move _8) -> bb3; } bb3: { - StorageDead(_8); // scope 1 at $DIR/derefer_complex_case.rs:+1:25: +1:26 - _10 = discriminant(_7); // scope 1 at $DIR/derefer_complex_case.rs:+1:17: +1:26 - switchInt(move _10) -> [0: bb6, 1: bb4, otherwise: bb5]; // scope 1 at $DIR/derefer_complex_case.rs:+1:17: +1:26 + StorageDead(_8); + _10 = discriminant(_7); + switchInt(move _10) -> [0: bb6, 1: bb4, otherwise: bb5]; } bb4: { - StorageLive(_12); // scope 1 at $DIR/derefer_complex_case.rs:+1:10: +1:13 -- _12 = (*((_7 as Some).0: &i32)); // scope 1 at $DIR/derefer_complex_case.rs:+1:10: +1:13 -+ _15 = deref_copy ((_7 as Some).0: &i32); // scope 1 at $DIR/derefer_complex_case.rs:+1:10: +1:13 -+ _12 = (*_15); // scope 1 at $DIR/derefer_complex_case.rs:+1:10: +1:13 - StorageLive(_13); // scope 2 at $DIR/derefer_complex_case.rs:+1:34: +1:37 - _13 = _12; // scope 2 at $DIR/derefer_complex_case.rs:+1:34: +1:37 - _6 = std::mem::drop::(move _13) -> bb7; // scope 2 at $DIR/derefer_complex_case.rs:+1:29: +1:38 - // mir::Constant - // + span: $DIR/derefer_complex_case.rs:6:29: 6:33 - // + literal: Const { ty: fn(i32) {std::mem::drop::}, val: Value() } + StorageLive(_12); +- _12 = (*((_7 as Some).0: &i32)); ++ _15 = deref_copy ((_7 as Some).0: &i32); ++ _12 = (*_15); + StorageLive(_13); + _13 = _12; + _6 = std::mem::drop::(move _13) -> bb7; } bb5: { - unreachable; // scope 1 at $DIR/derefer_complex_case.rs:+1:17: +1:26 + unreachable; } bb6: { - _0 = const (); // scope 1 at $DIR/derefer_complex_case.rs:+1:5: +1:40 - StorageDead(_9); // scope 1 at $DIR/derefer_complex_case.rs:+1:39: +1:40 - StorageDead(_7); // scope 1 at $DIR/derefer_complex_case.rs:+1:39: +1:40 - StorageDead(_6); // scope 1 at $DIR/derefer_complex_case.rs:+1:39: +1:40 - StorageDead(_4); // scope 0 at $DIR/derefer_complex_case.rs:+1:39: +1:40 - StorageDead(_1); // scope 0 at $DIR/derefer_complex_case.rs:+1:39: +1:40 - return; // scope 0 at $DIR/derefer_complex_case.rs:+2:2: +2:2 + _0 = const (); + StorageDead(_9); + StorageDead(_7); + StorageDead(_6); + StorageDead(_4); + StorageDead(_1); + return; } bb7: { - StorageDead(_13); // scope 2 at $DIR/derefer_complex_case.rs:+1:37: +1:38 - StorageDead(_12); // scope 1 at $DIR/derefer_complex_case.rs:+1:39: +1:40 - StorageDead(_9); // scope 1 at $DIR/derefer_complex_case.rs:+1:39: +1:40 - StorageDead(_7); // scope 1 at $DIR/derefer_complex_case.rs:+1:39: +1:40 - StorageDead(_6); // scope 1 at $DIR/derefer_complex_case.rs:+1:39: +1:40 - _5 = const (); // scope 1 at $DIR/derefer_complex_case.rs:+1:5: +1:40 - goto -> bb2; // scope 1 at $DIR/derefer_complex_case.rs:+1:5: +1:40 + StorageDead(_13); + StorageDead(_12); + StorageDead(_9); + StorageDead(_7); + StorageDead(_6); + _5 = const (); + goto -> bb2; } } diff --git a/tests/mir-opt/derefer_inline_test.main.Derefer.panic-abort.diff b/tests/mir-opt/derefer_inline_test.main.Derefer.panic-abort.diff index 92c8f2059e86d..024d9bc7f5141 100644 --- a/tests/mir-opt/derefer_inline_test.main.Derefer.panic-abort.diff +++ b/tests/mir-opt/derefer_inline_test.main.Derefer.panic-abort.diff @@ -2,44 +2,37 @@ + // MIR for `main` after Derefer fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/derefer_inline_test.rs:+0:11: +0:11 - let _1: std::boxed::Box>; // in scope 0 at $DIR/derefer_inline_test.rs:+1:5: +1:18 - let mut _2: std::boxed::Box; // in scope 0 at $DIR/derefer_inline_test.rs:+1:14: +1:17 + let mut _0: (); + let _1: std::boxed::Box>; + let mut _2: std::boxed::Box; bb0: { - StorageLive(_1); // scope 0 at $DIR/derefer_inline_test.rs:+1:5: +1:18 - StorageLive(_2); // scope 0 at $DIR/derefer_inline_test.rs:+1:14: +1:17 - _2 = f() -> [return: bb1, unwind: bb5]; // scope 0 at $DIR/derefer_inline_test.rs:+1:14: +1:17 - // mir::Constant - // + span: $DIR/derefer_inline_test.rs:10:14: 10:15 - // + literal: Const { ty: fn() -> Box {f}, val: Value() } + StorageLive(_1); + StorageLive(_2); + _2 = f() -> [return: bb1, unwind: bb5]; } bb1: { - _1 = Box::>::new(move _2) -> [return: bb2, unwind: bb4]; // scope 0 at $DIR/derefer_inline_test.rs:+1:5: +1:18 - // mir::Constant - // + span: $DIR/derefer_inline_test.rs:10:5: 10:13 - // + user_ty: UserType(0) - // + literal: Const { ty: fn(Box) -> Box> {Box::>::new}, val: Value() } + _1 = Box::>::new(move _2) -> [return: bb2, unwind: bb4]; } bb2: { - StorageDead(_2); // scope 0 at $DIR/derefer_inline_test.rs:+1:17: +1:18 - drop(_1) -> [return: bb3, unwind: bb5]; // scope 0 at $DIR/derefer_inline_test.rs:+1:18: +1:19 + StorageDead(_2); + drop(_1) -> [return: bb3, unwind: bb5]; } bb3: { - StorageDead(_1); // scope 0 at $DIR/derefer_inline_test.rs:+1:18: +1:19 - _0 = const (); // scope 0 at $DIR/derefer_inline_test.rs:+0:11: +2:2 - return; // scope 0 at $DIR/derefer_inline_test.rs:+2:2: +2:2 + StorageDead(_1); + _0 = const (); + return; } bb4 (cleanup): { - drop(_2) -> [return: bb5, unwind terminate]; // scope 0 at $DIR/derefer_inline_test.rs:+1:17: +1:18 + drop(_2) -> [return: bb5, unwind terminate]; } bb5 (cleanup): { - resume; // scope 0 at $DIR/derefer_inline_test.rs:+0:1: +2:2 + resume; } } diff --git a/tests/mir-opt/derefer_inline_test.main.Derefer.panic-unwind.diff b/tests/mir-opt/derefer_inline_test.main.Derefer.panic-unwind.diff index 426d4fb213cdb..50683837097ac 100644 --- a/tests/mir-opt/derefer_inline_test.main.Derefer.panic-unwind.diff +++ b/tests/mir-opt/derefer_inline_test.main.Derefer.panic-unwind.diff @@ -2,44 +2,37 @@ + // MIR for `main` after Derefer fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/derefer_inline_test.rs:+0:11: +0:11 - let _1: std::boxed::Box>; // in scope 0 at $DIR/derefer_inline_test.rs:+1:5: +1:18 - let mut _2: std::boxed::Box; // in scope 0 at $DIR/derefer_inline_test.rs:+1:14: +1:17 + let mut _0: (); + let _1: std::boxed::Box>; + let mut _2: std::boxed::Box; bb0: { - StorageLive(_1); // scope 0 at $DIR/derefer_inline_test.rs:+1:5: +1:18 - StorageLive(_2); // scope 0 at $DIR/derefer_inline_test.rs:+1:14: +1:17 - _2 = f() -> bb1; // scope 0 at $DIR/derefer_inline_test.rs:+1:14: +1:17 - // mir::Constant - // + span: $DIR/derefer_inline_test.rs:10:14: 10:15 - // + literal: Const { ty: fn() -> Box {f}, val: Value() } + StorageLive(_1); + StorageLive(_2); + _2 = f() -> bb1; } bb1: { - _1 = Box::>::new(move _2) -> [return: bb2, unwind: bb4]; // scope 0 at $DIR/derefer_inline_test.rs:+1:5: +1:18 - // mir::Constant - // + span: $DIR/derefer_inline_test.rs:10:5: 10:13 - // + user_ty: UserType(0) - // + literal: Const { ty: fn(Box) -> Box> {Box::>::new}, val: Value() } + _1 = Box::>::new(move _2) -> [return: bb2, unwind: bb4]; } bb2: { - StorageDead(_2); // scope 0 at $DIR/derefer_inline_test.rs:+1:17: +1:18 - drop(_1) -> bb3; // scope 0 at $DIR/derefer_inline_test.rs:+1:18: +1:19 + StorageDead(_2); + drop(_1) -> bb3; } bb3: { - StorageDead(_1); // scope 0 at $DIR/derefer_inline_test.rs:+1:18: +1:19 - _0 = const (); // scope 0 at $DIR/derefer_inline_test.rs:+0:11: +2:2 - return; // scope 0 at $DIR/derefer_inline_test.rs:+2:2: +2:2 + StorageDead(_1); + _0 = const (); + return; } bb4 (cleanup): { - drop(_2) -> [return: bb5, unwind terminate]; // scope 0 at $DIR/derefer_inline_test.rs:+1:17: +1:18 + drop(_2) -> [return: bb5, unwind terminate]; } bb5 (cleanup): { - resume; // scope 0 at $DIR/derefer_inline_test.rs:+0:1: +2:2 + resume; } } diff --git a/tests/mir-opt/derefer_terminator_test.main.Derefer.panic-abort.diff b/tests/mir-opt/derefer_terminator_test.main.Derefer.panic-abort.diff index 5a218df95b724..895dcf5798ebb 100644 --- a/tests/mir-opt/derefer_terminator_test.main.Derefer.panic-abort.diff +++ b/tests/mir-opt/derefer_terminator_test.main.Derefer.panic-abort.diff @@ -2,95 +2,89 @@ + // MIR for `main` after Derefer fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/derefer_terminator_test.rs:+0:11: +0:11 - let _1: bool; // in scope 0 at $DIR/derefer_terminator_test.rs:+1:9: +1:10 - let _3: (); // in scope 0 at $DIR/derefer_terminator_test.rs:+3:5: +6:6 - let mut _4: &&&&bool; // in scope 0 at $DIR/derefer_terminator_test.rs:+3:15: +3:22 - let _5: &&&bool; // in scope 0 at $DIR/derefer_terminator_test.rs:+3:17: +3:21 - let _6: &&bool; // in scope 0 at $DIR/derefer_terminator_test.rs:+3:18: +3:21 - let _7: &bool; // in scope 0 at $DIR/derefer_terminator_test.rs:+3:19: +3:21 -+ let mut _10: &&&bool; // in scope 0 at $DIR/derefer_terminator_test.rs:+3:15: +3:22 -+ let mut _11: &&bool; // in scope 0 at $DIR/derefer_terminator_test.rs:+3:15: +3:22 -+ let mut _12: &bool; // in scope 0 at $DIR/derefer_terminator_test.rs:+3:15: +3:22 + let mut _0: (); + let _1: bool; + let _3: (); + let mut _4: &&&&bool; + let _5: &&&bool; + let _6: &&bool; + let _7: &bool; ++ let mut _10: &&&bool; ++ let mut _11: &&bool; ++ let mut _12: &bool; scope 1 { - debug b => _1; // in scope 1 at $DIR/derefer_terminator_test.rs:+1:9: +1:10 - let _2: bool; // in scope 1 at $DIR/derefer_terminator_test.rs:+2:9: +2:10 + debug b => _1; + let _2: bool; scope 2 { - debug d => _2; // in scope 2 at $DIR/derefer_terminator_test.rs:+2:9: +2:10 - let _8: i32; // in scope 2 at $DIR/derefer_terminator_test.rs:+4:22: +4:23 - let _9: i32; // in scope 2 at $DIR/derefer_terminator_test.rs:+7:9: +7:10 + debug d => _2; + let _8: i32; + let _9: i32; scope 3 { - debug x => _8; // in scope 3 at $DIR/derefer_terminator_test.rs:+4:22: +4:23 + debug x => _8; } scope 4 { - debug y => _9; // in scope 4 at $DIR/derefer_terminator_test.rs:+7:9: +7:10 + debug y => _9; } } } bb0: { - StorageLive(_1); // scope 0 at $DIR/derefer_terminator_test.rs:+1:9: +1:10 - _1 = foo() -> [return: bb1, unwind: bb6]; // scope 0 at $DIR/derefer_terminator_test.rs:+1:13: +1:18 - // mir::Constant - // + span: $DIR/derefer_terminator_test.rs:6:13: 6:16 - // + literal: Const { ty: fn() -> bool {foo}, val: Value() } + StorageLive(_1); + _1 = foo() -> [return: bb1, unwind: bb6]; } bb1: { - StorageLive(_2); // scope 1 at $DIR/derefer_terminator_test.rs:+2:9: +2:10 - _2 = foo() -> [return: bb2, unwind: bb6]; // scope 1 at $DIR/derefer_terminator_test.rs:+2:13: +2:18 - // mir::Constant - // + span: $DIR/derefer_terminator_test.rs:7:13: 7:16 - // + literal: Const { ty: fn() -> bool {foo}, val: Value() } + StorageLive(_2); + _2 = foo() -> [return: bb2, unwind: bb6]; } bb2: { - StorageLive(_3); // scope 2 at $DIR/derefer_terminator_test.rs:+3:5: +6:6 - StorageLive(_4); // scope 2 at $DIR/derefer_terminator_test.rs:+3:15: +3:22 - StorageLive(_5); // scope 2 at $DIR/derefer_terminator_test.rs:+3:17: +3:21 - StorageLive(_6); // scope 2 at $DIR/derefer_terminator_test.rs:+3:18: +3:21 - StorageLive(_7); // scope 2 at $DIR/derefer_terminator_test.rs:+3:19: +3:21 - _7 = &_1; // scope 2 at $DIR/derefer_terminator_test.rs:+3:19: +3:21 - _6 = &_7; // scope 2 at $DIR/derefer_terminator_test.rs:+3:18: +3:21 - _5 = &_6; // scope 2 at $DIR/derefer_terminator_test.rs:+3:17: +3:21 - _4 = &_5; // scope 2 at $DIR/derefer_terminator_test.rs:+3:15: +3:22 -- switchInt((*(*(*(*_4))))) -> [0: bb3, otherwise: bb4]; // scope 2 at $DIR/derefer_terminator_test.rs:+3:5: +3:22 -+ _10 = deref_copy (*_4); // scope 2 at $DIR/derefer_terminator_test.rs:+3:5: +3:22 -+ _11 = deref_copy (*_10); // scope 2 at $DIR/derefer_terminator_test.rs:+3:5: +3:22 -+ _12 = deref_copy (*_11); // scope 2 at $DIR/derefer_terminator_test.rs:+3:5: +3:22 -+ switchInt((*_12)) -> [0: bb3, otherwise: bb4]; // scope 2 at $DIR/derefer_terminator_test.rs:+3:5: +3:22 + StorageLive(_3); + StorageLive(_4); + StorageLive(_5); + StorageLive(_6); + StorageLive(_7); + _7 = &_1; + _6 = &_7; + _5 = &_6; + _4 = &_5; +- switchInt((*(*(*(*_4))))) -> [0: bb3, otherwise: bb4]; ++ _10 = deref_copy (*_4); ++ _11 = deref_copy (*_10); ++ _12 = deref_copy (*_11); ++ switchInt((*_12)) -> [0: bb3, otherwise: bb4]; } bb3: { - _3 = const (); // scope 2 at $DIR/derefer_terminator_test.rs:+5:18: +5:20 - goto -> bb5; // scope 2 at $DIR/derefer_terminator_test.rs:+5:18: +5:20 + _3 = const (); + goto -> bb5; } bb4: { - StorageLive(_8); // scope 2 at $DIR/derefer_terminator_test.rs:+4:22: +4:23 - _8 = const 5_i32; // scope 2 at $DIR/derefer_terminator_test.rs:+4:26: +4:27 - _3 = const (); // scope 2 at $DIR/derefer_terminator_test.rs:+4:17: +4:29 - StorageDead(_8); // scope 2 at $DIR/derefer_terminator_test.rs:+4:28: +4:29 - goto -> bb5; // scope 2 at $DIR/derefer_terminator_test.rs:+4:28: +4:29 + StorageLive(_8); + _8 = const 5_i32; + _3 = const (); + StorageDead(_8); + goto -> bb5; } bb5: { - StorageDead(_7); // scope 2 at $DIR/derefer_terminator_test.rs:+6:5: +6:6 - StorageDead(_6); // scope 2 at $DIR/derefer_terminator_test.rs:+6:5: +6:6 - StorageDead(_5); // scope 2 at $DIR/derefer_terminator_test.rs:+6:5: +6:6 - StorageDead(_4); // scope 2 at $DIR/derefer_terminator_test.rs:+6:5: +6:6 - StorageDead(_3); // scope 2 at $DIR/derefer_terminator_test.rs:+6:5: +6:6 - StorageLive(_9); // scope 2 at $DIR/derefer_terminator_test.rs:+7:9: +7:10 - _9 = const 42_i32; // scope 2 at $DIR/derefer_terminator_test.rs:+7:13: +7:15 - _0 = const (); // scope 0 at $DIR/derefer_terminator_test.rs:+0:11: +8:2 - StorageDead(_9); // scope 2 at $DIR/derefer_terminator_test.rs:+8:1: +8:2 - StorageDead(_2); // scope 1 at $DIR/derefer_terminator_test.rs:+8:1: +8:2 - StorageDead(_1); // scope 0 at $DIR/derefer_terminator_test.rs:+8:1: +8:2 - return; // scope 0 at $DIR/derefer_terminator_test.rs:+8:2: +8:2 + StorageDead(_7); + StorageDead(_6); + StorageDead(_5); + StorageDead(_4); + StorageDead(_3); + StorageLive(_9); + _9 = const 42_i32; + _0 = const (); + StorageDead(_9); + StorageDead(_2); + StorageDead(_1); + return; } bb6 (cleanup): { - resume; // scope 0 at $DIR/derefer_terminator_test.rs:+0:1: +8:2 + resume; } } diff --git a/tests/mir-opt/derefer_terminator_test.main.Derefer.panic-unwind.diff b/tests/mir-opt/derefer_terminator_test.main.Derefer.panic-unwind.diff index ab2388d1323a8..59168eda2f3e7 100644 --- a/tests/mir-opt/derefer_terminator_test.main.Derefer.panic-unwind.diff +++ b/tests/mir-opt/derefer_terminator_test.main.Derefer.panic-unwind.diff @@ -2,91 +2,85 @@ + // MIR for `main` after Derefer fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/derefer_terminator_test.rs:+0:11: +0:11 - let _1: bool; // in scope 0 at $DIR/derefer_terminator_test.rs:+1:9: +1:10 - let _3: (); // in scope 0 at $DIR/derefer_terminator_test.rs:+3:5: +6:6 - let mut _4: &&&&bool; // in scope 0 at $DIR/derefer_terminator_test.rs:+3:15: +3:22 - let _5: &&&bool; // in scope 0 at $DIR/derefer_terminator_test.rs:+3:17: +3:21 - let _6: &&bool; // in scope 0 at $DIR/derefer_terminator_test.rs:+3:18: +3:21 - let _7: &bool; // in scope 0 at $DIR/derefer_terminator_test.rs:+3:19: +3:21 -+ let mut _10: &&&bool; // in scope 0 at $DIR/derefer_terminator_test.rs:+3:15: +3:22 -+ let mut _11: &&bool; // in scope 0 at $DIR/derefer_terminator_test.rs:+3:15: +3:22 -+ let mut _12: &bool; // in scope 0 at $DIR/derefer_terminator_test.rs:+3:15: +3:22 + let mut _0: (); + let _1: bool; + let _3: (); + let mut _4: &&&&bool; + let _5: &&&bool; + let _6: &&bool; + let _7: &bool; ++ let mut _10: &&&bool; ++ let mut _11: &&bool; ++ let mut _12: &bool; scope 1 { - debug b => _1; // in scope 1 at $DIR/derefer_terminator_test.rs:+1:9: +1:10 - let _2: bool; // in scope 1 at $DIR/derefer_terminator_test.rs:+2:9: +2:10 + debug b => _1; + let _2: bool; scope 2 { - debug d => _2; // in scope 2 at $DIR/derefer_terminator_test.rs:+2:9: +2:10 - let _8: i32; // in scope 2 at $DIR/derefer_terminator_test.rs:+4:22: +4:23 - let _9: i32; // in scope 2 at $DIR/derefer_terminator_test.rs:+7:9: +7:10 + debug d => _2; + let _8: i32; + let _9: i32; scope 3 { - debug x => _8; // in scope 3 at $DIR/derefer_terminator_test.rs:+4:22: +4:23 + debug x => _8; } scope 4 { - debug y => _9; // in scope 4 at $DIR/derefer_terminator_test.rs:+7:9: +7:10 + debug y => _9; } } } bb0: { - StorageLive(_1); // scope 0 at $DIR/derefer_terminator_test.rs:+1:9: +1:10 - _1 = foo() -> bb1; // scope 0 at $DIR/derefer_terminator_test.rs:+1:13: +1:18 - // mir::Constant - // + span: $DIR/derefer_terminator_test.rs:6:13: 6:16 - // + literal: Const { ty: fn() -> bool {foo}, val: Value() } + StorageLive(_1); + _1 = foo() -> bb1; } bb1: { - StorageLive(_2); // scope 1 at $DIR/derefer_terminator_test.rs:+2:9: +2:10 - _2 = foo() -> bb2; // scope 1 at $DIR/derefer_terminator_test.rs:+2:13: +2:18 - // mir::Constant - // + span: $DIR/derefer_terminator_test.rs:7:13: 7:16 - // + literal: Const { ty: fn() -> bool {foo}, val: Value() } + StorageLive(_2); + _2 = foo() -> bb2; } bb2: { - StorageLive(_3); // scope 2 at $DIR/derefer_terminator_test.rs:+3:5: +6:6 - StorageLive(_4); // scope 2 at $DIR/derefer_terminator_test.rs:+3:15: +3:22 - StorageLive(_5); // scope 2 at $DIR/derefer_terminator_test.rs:+3:17: +3:21 - StorageLive(_6); // scope 2 at $DIR/derefer_terminator_test.rs:+3:18: +3:21 - StorageLive(_7); // scope 2 at $DIR/derefer_terminator_test.rs:+3:19: +3:21 - _7 = &_1; // scope 2 at $DIR/derefer_terminator_test.rs:+3:19: +3:21 - _6 = &_7; // scope 2 at $DIR/derefer_terminator_test.rs:+3:18: +3:21 - _5 = &_6; // scope 2 at $DIR/derefer_terminator_test.rs:+3:17: +3:21 - _4 = &_5; // scope 2 at $DIR/derefer_terminator_test.rs:+3:15: +3:22 -- switchInt((*(*(*(*_4))))) -> [0: bb3, otherwise: bb4]; // scope 2 at $DIR/derefer_terminator_test.rs:+3:5: +3:22 -+ _10 = deref_copy (*_4); // scope 2 at $DIR/derefer_terminator_test.rs:+3:5: +3:22 -+ _11 = deref_copy (*_10); // scope 2 at $DIR/derefer_terminator_test.rs:+3:5: +3:22 -+ _12 = deref_copy (*_11); // scope 2 at $DIR/derefer_terminator_test.rs:+3:5: +3:22 -+ switchInt((*_12)) -> [0: bb3, otherwise: bb4]; // scope 2 at $DIR/derefer_terminator_test.rs:+3:5: +3:22 + StorageLive(_3); + StorageLive(_4); + StorageLive(_5); + StorageLive(_6); + StorageLive(_7); + _7 = &_1; + _6 = &_7; + _5 = &_6; + _4 = &_5; +- switchInt((*(*(*(*_4))))) -> [0: bb3, otherwise: bb4]; ++ _10 = deref_copy (*_4); ++ _11 = deref_copy (*_10); ++ _12 = deref_copy (*_11); ++ switchInt((*_12)) -> [0: bb3, otherwise: bb4]; } bb3: { - _3 = const (); // scope 2 at $DIR/derefer_terminator_test.rs:+5:18: +5:20 - goto -> bb5; // scope 2 at $DIR/derefer_terminator_test.rs:+5:18: +5:20 + _3 = const (); + goto -> bb5; } bb4: { - StorageLive(_8); // scope 2 at $DIR/derefer_terminator_test.rs:+4:22: +4:23 - _8 = const 5_i32; // scope 2 at $DIR/derefer_terminator_test.rs:+4:26: +4:27 - _3 = const (); // scope 2 at $DIR/derefer_terminator_test.rs:+4:17: +4:29 - StorageDead(_8); // scope 2 at $DIR/derefer_terminator_test.rs:+4:28: +4:29 - goto -> bb5; // scope 2 at $DIR/derefer_terminator_test.rs:+4:28: +4:29 + StorageLive(_8); + _8 = const 5_i32; + _3 = const (); + StorageDead(_8); + goto -> bb5; } bb5: { - StorageDead(_7); // scope 2 at $DIR/derefer_terminator_test.rs:+6:5: +6:6 - StorageDead(_6); // scope 2 at $DIR/derefer_terminator_test.rs:+6:5: +6:6 - StorageDead(_5); // scope 2 at $DIR/derefer_terminator_test.rs:+6:5: +6:6 - StorageDead(_4); // scope 2 at $DIR/derefer_terminator_test.rs:+6:5: +6:6 - StorageDead(_3); // scope 2 at $DIR/derefer_terminator_test.rs:+6:5: +6:6 - StorageLive(_9); // scope 2 at $DIR/derefer_terminator_test.rs:+7:9: +7:10 - _9 = const 42_i32; // scope 2 at $DIR/derefer_terminator_test.rs:+7:13: +7:15 - _0 = const (); // scope 0 at $DIR/derefer_terminator_test.rs:+0:11: +8:2 - StorageDead(_9); // scope 2 at $DIR/derefer_terminator_test.rs:+8:1: +8:2 - StorageDead(_2); // scope 1 at $DIR/derefer_terminator_test.rs:+8:1: +8:2 - StorageDead(_1); // scope 0 at $DIR/derefer_terminator_test.rs:+8:1: +8:2 - return; // scope 0 at $DIR/derefer_terminator_test.rs:+8:2: +8:2 + StorageDead(_7); + StorageDead(_6); + StorageDead(_5); + StorageDead(_4); + StorageDead(_3); + StorageLive(_9); + _9 = const 42_i32; + _0 = const (); + StorageDead(_9); + StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/derefer_test.main.Derefer.diff b/tests/mir-opt/derefer_test.main.Derefer.diff index 87306d818ff91..c50b74051fd54 100644 --- a/tests/mir-opt/derefer_test.main.Derefer.diff +++ b/tests/mir-opt/derefer_test.main.Derefer.diff @@ -2,49 +2,49 @@ + // MIR for `main` after Derefer fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/derefer_test.rs:+0:11: +0:11 - let mut _1: (i32, i32); // in scope 0 at $DIR/derefer_test.rs:+1:9: +1:14 - let mut _3: &mut (i32, i32); // in scope 0 at $DIR/derefer_test.rs:+2:22: +2:28 -+ let mut _6: &mut (i32, i32); // in scope 0 at $DIR/derefer_test.rs:+2:9: +2:14 -+ let mut _7: &mut (i32, i32); // in scope 0 at $DIR/derefer_test.rs:+2:9: +2:14 + let mut _0: (); + let mut _1: (i32, i32); + let mut _3: &mut (i32, i32); ++ let mut _6: &mut (i32, i32); ++ let mut _7: &mut (i32, i32); scope 1 { - debug a => _1; // in scope 1 at $DIR/derefer_test.rs:+1:9: +1:14 - let mut _2: (i32, &mut (i32, i32)); // in scope 1 at $DIR/derefer_test.rs:+2:9: +2:14 + debug a => _1; + let mut _2: (i32, &mut (i32, i32)); scope 2 { - debug b => _2; // in scope 2 at $DIR/derefer_test.rs:+2:9: +2:14 - let _4: &mut i32; // in scope 2 at $DIR/derefer_test.rs:+3:9: +3:10 + debug b => _2; + let _4: &mut i32; scope 3 { - debug x => _4; // in scope 3 at $DIR/derefer_test.rs:+3:9: +3:10 - let _5: &mut i32; // in scope 3 at $DIR/derefer_test.rs:+4:9: +4:10 + debug x => _4; + let _5: &mut i32; scope 4 { - debug y => _5; // in scope 4 at $DIR/derefer_test.rs:+4:9: +4:10 + debug y => _5; } } } } bb0: { - StorageLive(_1); // scope 0 at $DIR/derefer_test.rs:+1:9: +1:14 - _1 = (const 42_i32, const 43_i32); // scope 0 at $DIR/derefer_test.rs:+1:17: +1:24 - StorageLive(_2); // scope 1 at $DIR/derefer_test.rs:+2:9: +2:14 - StorageLive(_3); // scope 1 at $DIR/derefer_test.rs:+2:22: +2:28 - _3 = &mut _1; // scope 1 at $DIR/derefer_test.rs:+2:22: +2:28 - _2 = (const 99_i32, move _3); // scope 1 at $DIR/derefer_test.rs:+2:17: +2:29 - StorageDead(_3); // scope 1 at $DIR/derefer_test.rs:+2:28: +2:29 - StorageLive(_4); // scope 2 at $DIR/derefer_test.rs:+3:9: +3:10 -- _4 = &mut ((*(_2.1: &mut (i32, i32))).0: i32); // scope 2 at $DIR/derefer_test.rs:+3:13: +3:26 -+ _6 = deref_copy (_2.1: &mut (i32, i32)); // scope 2 at $DIR/derefer_test.rs:+3:13: +3:26 -+ _4 = &mut ((*_6).0: i32); // scope 2 at $DIR/derefer_test.rs:+3:13: +3:26 - StorageLive(_5); // scope 3 at $DIR/derefer_test.rs:+4:9: +4:10 -- _5 = &mut ((*(_2.1: &mut (i32, i32))).1: i32); // scope 3 at $DIR/derefer_test.rs:+4:13: +4:26 -+ _7 = deref_copy (_2.1: &mut (i32, i32)); // scope 3 at $DIR/derefer_test.rs:+4:13: +4:26 -+ _5 = &mut ((*_7).1: i32); // scope 3 at $DIR/derefer_test.rs:+4:13: +4:26 - _0 = const (); // scope 0 at $DIR/derefer_test.rs:+0:11: +5:2 - StorageDead(_5); // scope 3 at $DIR/derefer_test.rs:+5:1: +5:2 - StorageDead(_4); // scope 2 at $DIR/derefer_test.rs:+5:1: +5:2 - StorageDead(_2); // scope 1 at $DIR/derefer_test.rs:+5:1: +5:2 - StorageDead(_1); // scope 0 at $DIR/derefer_test.rs:+5:1: +5:2 - return; // scope 0 at $DIR/derefer_test.rs:+5:2: +5:2 + StorageLive(_1); + _1 = (const 42_i32, const 43_i32); + StorageLive(_2); + StorageLive(_3); + _3 = &mut _1; + _2 = (const 99_i32, move _3); + StorageDead(_3); + StorageLive(_4); +- _4 = &mut ((*(_2.1: &mut (i32, i32))).0: i32); ++ _6 = deref_copy (_2.1: &mut (i32, i32)); ++ _4 = &mut ((*_6).0: i32); + StorageLive(_5); +- _5 = &mut ((*(_2.1: &mut (i32, i32))).1: i32); ++ _7 = deref_copy (_2.1: &mut (i32, i32)); ++ _5 = &mut ((*_7).1: i32); + _0 = const (); + StorageDead(_5); + StorageDead(_4); + StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/derefer_test_multiple.main.Derefer.diff b/tests/mir-opt/derefer_test_multiple.main.Derefer.diff index 3e40db1186523..7961316969a3b 100644 --- a/tests/mir-opt/derefer_test_multiple.main.Derefer.diff +++ b/tests/mir-opt/derefer_test_multiple.main.Derefer.diff @@ -2,34 +2,34 @@ + // MIR for `main` after Derefer fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/derefer_test_multiple.rs:+0:12: +0:12 - let mut _1: (i32, i32); // in scope 0 at $DIR/derefer_test_multiple.rs:+1:9: +1:14 - let mut _3: &mut (i32, i32); // in scope 0 at $DIR/derefer_test_multiple.rs:+2:22: +2:28 - let mut _5: &mut (i32, &mut (i32, i32)); // in scope 0 at $DIR/derefer_test_multiple.rs:+3:22: +3:28 - let mut _7: &mut (i32, &mut (i32, &mut (i32, i32))); // in scope 0 at $DIR/derefer_test_multiple.rs:+4:22: +4:28 -+ let mut _10: &mut (i32, &mut (i32, &mut (i32, i32))); // in scope 0 at $DIR/derefer_test_multiple.rs:+4:9: +4:14 -+ let mut _11: &mut (i32, &mut (i32, i32)); // in scope 0 at $DIR/derefer_test_multiple.rs:+4:9: +4:14 -+ let mut _12: &mut (i32, i32); // in scope 0 at $DIR/derefer_test_multiple.rs:+4:9: +4:14 -+ let mut _13: &mut (i32, &mut (i32, &mut (i32, i32))); // in scope 0 at $DIR/derefer_test_multiple.rs:+4:9: +4:14 -+ let mut _14: &mut (i32, &mut (i32, i32)); // in scope 0 at $DIR/derefer_test_multiple.rs:+4:9: +4:14 -+ let mut _15: &mut (i32, i32); // in scope 0 at $DIR/derefer_test_multiple.rs:+4:9: +4:14 + let mut _0: (); + let mut _1: (i32, i32); + let mut _3: &mut (i32, i32); + let mut _5: &mut (i32, &mut (i32, i32)); + let mut _7: &mut (i32, &mut (i32, &mut (i32, i32))); ++ let mut _10: &mut (i32, &mut (i32, &mut (i32, i32))); ++ let mut _11: &mut (i32, &mut (i32, i32)); ++ let mut _12: &mut (i32, i32); ++ let mut _13: &mut (i32, &mut (i32, &mut (i32, i32))); ++ let mut _14: &mut (i32, &mut (i32, i32)); ++ let mut _15: &mut (i32, i32); scope 1 { - debug a => _1; // in scope 1 at $DIR/derefer_test_multiple.rs:+1:9: +1:14 - let mut _2: (i32, &mut (i32, i32)); // in scope 1 at $DIR/derefer_test_multiple.rs:+2:9: +2:14 + debug a => _1; + let mut _2: (i32, &mut (i32, i32)); scope 2 { - debug b => _2; // in scope 2 at $DIR/derefer_test_multiple.rs:+2:9: +2:14 - let mut _4: (i32, &mut (i32, &mut (i32, i32))); // in scope 2 at $DIR/derefer_test_multiple.rs:+3:9: +3:14 + debug b => _2; + let mut _4: (i32, &mut (i32, &mut (i32, i32))); scope 3 { - debug c => _4; // in scope 3 at $DIR/derefer_test_multiple.rs:+3:9: +3:14 - let mut _6: (i32, &mut (i32, &mut (i32, &mut (i32, i32)))); // in scope 3 at $DIR/derefer_test_multiple.rs:+4:9: +4:14 + debug c => _4; + let mut _6: (i32, &mut (i32, &mut (i32, &mut (i32, i32)))); scope 4 { - debug d => _6; // in scope 4 at $DIR/derefer_test_multiple.rs:+4:9: +4:14 - let _8: &mut i32; // in scope 4 at $DIR/derefer_test_multiple.rs:+5:9: +5:10 + debug d => _6; + let _8: &mut i32; scope 5 { - debug x => _8; // in scope 5 at $DIR/derefer_test_multiple.rs:+5:9: +5:10 - let _9: &mut i32; // in scope 5 at $DIR/derefer_test_multiple.rs:+6:9: +6:10 + debug x => _8; + let _9: &mut i32; scope 6 { - debug y => _9; // in scope 6 at $DIR/derefer_test_multiple.rs:+6:9: +6:10 + debug y => _9; } } } @@ -38,43 +38,43 @@ } bb0: { - StorageLive(_1); // scope 0 at $DIR/derefer_test_multiple.rs:+1:9: +1:14 - _1 = (const 42_i32, const 43_i32); // scope 0 at $DIR/derefer_test_multiple.rs:+1:17: +1:25 - StorageLive(_2); // scope 1 at $DIR/derefer_test_multiple.rs:+2:9: +2:14 - StorageLive(_3); // scope 1 at $DIR/derefer_test_multiple.rs:+2:22: +2:28 - _3 = &mut _1; // scope 1 at $DIR/derefer_test_multiple.rs:+2:22: +2:28 - _2 = (const 99_i32, move _3); // scope 1 at $DIR/derefer_test_multiple.rs:+2:17: +2:29 - StorageDead(_3); // scope 1 at $DIR/derefer_test_multiple.rs:+2:28: +2:29 - StorageLive(_4); // scope 2 at $DIR/derefer_test_multiple.rs:+3:9: +3:14 - StorageLive(_5); // scope 2 at $DIR/derefer_test_multiple.rs:+3:22: +3:28 - _5 = &mut _2; // scope 2 at $DIR/derefer_test_multiple.rs:+3:22: +3:28 - _4 = (const 11_i32, move _5); // scope 2 at $DIR/derefer_test_multiple.rs:+3:17: +3:29 - StorageDead(_5); // scope 2 at $DIR/derefer_test_multiple.rs:+3:28: +3:29 - StorageLive(_6); // scope 3 at $DIR/derefer_test_multiple.rs:+4:9: +4:14 - StorageLive(_7); // scope 3 at $DIR/derefer_test_multiple.rs:+4:22: +4:28 - _7 = &mut _4; // scope 3 at $DIR/derefer_test_multiple.rs:+4:22: +4:28 - _6 = (const 13_i32, move _7); // scope 3 at $DIR/derefer_test_multiple.rs:+4:17: +4:29 - StorageDead(_7); // scope 3 at $DIR/derefer_test_multiple.rs:+4:28: +4:29 - StorageLive(_8); // scope 4 at $DIR/derefer_test_multiple.rs:+5:9: +5:10 -- _8 = &mut ((*((*((*(_6.1: &mut (i32, &mut (i32, &mut (i32, i32))))).1: &mut (i32, &mut (i32, i32)))).1: &mut (i32, i32))).1: i32); // scope 4 at $DIR/derefer_test_multiple.rs:+5:13: +5:30 -+ _10 = deref_copy (_6.1: &mut (i32, &mut (i32, &mut (i32, i32)))); // scope 4 at $DIR/derefer_test_multiple.rs:+5:13: +5:30 -+ _11 = deref_copy ((*_10).1: &mut (i32, &mut (i32, i32))); // scope 4 at $DIR/derefer_test_multiple.rs:+5:13: +5:30 -+ _12 = deref_copy ((*_11).1: &mut (i32, i32)); // scope 4 at $DIR/derefer_test_multiple.rs:+5:13: +5:30 -+ _8 = &mut ((*_12).1: i32); // scope 4 at $DIR/derefer_test_multiple.rs:+5:13: +5:30 - StorageLive(_9); // scope 5 at $DIR/derefer_test_multiple.rs:+6:9: +6:10 -- _9 = &mut ((*((*((*(_6.1: &mut (i32, &mut (i32, &mut (i32, i32))))).1: &mut (i32, &mut (i32, i32)))).1: &mut (i32, i32))).1: i32); // scope 5 at $DIR/derefer_test_multiple.rs:+6:13: +6:30 -+ _13 = deref_copy (_6.1: &mut (i32, &mut (i32, &mut (i32, i32)))); // scope 5 at $DIR/derefer_test_multiple.rs:+6:13: +6:30 -+ _14 = deref_copy ((*_13).1: &mut (i32, &mut (i32, i32))); // scope 5 at $DIR/derefer_test_multiple.rs:+6:13: +6:30 -+ _15 = deref_copy ((*_14).1: &mut (i32, i32)); // scope 5 at $DIR/derefer_test_multiple.rs:+6:13: +6:30 -+ _9 = &mut ((*_15).1: i32); // scope 5 at $DIR/derefer_test_multiple.rs:+6:13: +6:30 - _0 = const (); // scope 0 at $DIR/derefer_test_multiple.rs:+0:12: +7:2 - StorageDead(_9); // scope 5 at $DIR/derefer_test_multiple.rs:+7:1: +7:2 - StorageDead(_8); // scope 4 at $DIR/derefer_test_multiple.rs:+7:1: +7:2 - StorageDead(_6); // scope 3 at $DIR/derefer_test_multiple.rs:+7:1: +7:2 - StorageDead(_4); // scope 2 at $DIR/derefer_test_multiple.rs:+7:1: +7:2 - StorageDead(_2); // scope 1 at $DIR/derefer_test_multiple.rs:+7:1: +7:2 - StorageDead(_1); // scope 0 at $DIR/derefer_test_multiple.rs:+7:1: +7:2 - return; // scope 0 at $DIR/derefer_test_multiple.rs:+7:2: +7:2 + StorageLive(_1); + _1 = (const 42_i32, const 43_i32); + StorageLive(_2); + StorageLive(_3); + _3 = &mut _1; + _2 = (const 99_i32, move _3); + StorageDead(_3); + StorageLive(_4); + StorageLive(_5); + _5 = &mut _2; + _4 = (const 11_i32, move _5); + StorageDead(_5); + StorageLive(_6); + StorageLive(_7); + _7 = &mut _4; + _6 = (const 13_i32, move _7); + StorageDead(_7); + StorageLive(_8); +- _8 = &mut ((*((*((*(_6.1: &mut (i32, &mut (i32, &mut (i32, i32))))).1: &mut (i32, &mut (i32, i32)))).1: &mut (i32, i32))).1: i32); ++ _10 = deref_copy (_6.1: &mut (i32, &mut (i32, &mut (i32, i32)))); ++ _11 = deref_copy ((*_10).1: &mut (i32, &mut (i32, i32))); ++ _12 = deref_copy ((*_11).1: &mut (i32, i32)); ++ _8 = &mut ((*_12).1: i32); + StorageLive(_9); +- _9 = &mut ((*((*((*(_6.1: &mut (i32, &mut (i32, &mut (i32, i32))))).1: &mut (i32, &mut (i32, i32)))).1: &mut (i32, i32))).1: i32); ++ _13 = deref_copy (_6.1: &mut (i32, &mut (i32, &mut (i32, i32)))); ++ _14 = deref_copy ((*_13).1: &mut (i32, &mut (i32, i32))); ++ _15 = deref_copy ((*_14).1: &mut (i32, i32)); ++ _9 = &mut ((*_15).1: i32); + _0 = const (); + StorageDead(_9); + StorageDead(_8); + StorageDead(_6); + StorageDead(_4); + StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/dest-prop/branch.foo.DestinationPropagation.panic-abort.diff b/tests/mir-opt/dest-prop/branch.foo.DestinationPropagation.panic-abort.diff index c039fc76b7694..10ec3aa555ee1 100644 --- a/tests/mir-opt/dest-prop/branch.foo.DestinationPropagation.panic-abort.diff +++ b/tests/mir-opt/dest-prop/branch.foo.DestinationPropagation.panic-abort.diff @@ -2,74 +2,65 @@ + // MIR for `foo` after DestinationPropagation fn foo() -> i32 { - let mut _0: i32; // return place in scope 0 at $DIR/branch.rs:+0:13: +0:16 - let _1: i32; // in scope 0 at $DIR/branch.rs:+1:9: +1:10 - let mut _3: bool; // in scope 0 at $DIR/branch.rs:+3:16: +3:22 - let _4: i32; // in scope 0 at $DIR/branch.rs:+6:9: +6:14 + let mut _0: i32; + let _1: i32; + let mut _3: bool; + let _4: i32; scope 1 { -- debug x => _1; // in scope 1 at $DIR/branch.rs:+1:9: +1:10 -+ debug x => _0; // in scope 1 at $DIR/branch.rs:+1:9: +1:10 - let _2: i32; // in scope 1 at $DIR/branch.rs:+3:9: +3:10 +- debug x => _1; ++ debug x => _0; + let _2: i32; scope 2 { -- debug y => _2; // in scope 2 at $DIR/branch.rs:+3:9: +3:10 -+ debug y => _0; // in scope 2 at $DIR/branch.rs:+3:9: +3:10 +- debug y => _2; ++ debug y => _0; } } bb0: { -- StorageLive(_1); // scope 0 at $DIR/branch.rs:+1:9: +1:10 -- _1 = val() -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/branch.rs:+1:13: +1:18 -+ nop; // scope 0 at $DIR/branch.rs:+1:9: +1:10 -+ _0 = val() -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/branch.rs:+1:13: +1:18 - // mir::Constant - // + span: $DIR/branch.rs:14:13: 14:16 - // + literal: Const { ty: fn() -> i32 {val}, val: Value() } +- StorageLive(_1); +- _1 = val() -> [return: bb1, unwind unreachable]; ++ nop; ++ _0 = val() -> [return: bb1, unwind unreachable]; } bb1: { -- StorageLive(_2); // scope 1 at $DIR/branch.rs:+3:9: +3:10 -+ nop; // scope 1 at $DIR/branch.rs:+3:9: +3:10 - StorageLive(_3); // scope 1 at $DIR/branch.rs:+3:16: +3:22 - _3 = cond() -> [return: bb2, unwind unreachable]; // scope 1 at $DIR/branch.rs:+3:16: +3:22 - // mir::Constant - // + span: $DIR/branch.rs:16:16: 16:20 - // + literal: Const { ty: fn() -> bool {cond}, val: Value() } +- StorageLive(_2); ++ nop; + StorageLive(_3); + _3 = cond() -> [return: bb2, unwind unreachable]; } bb2: { - switchInt(move _3) -> [0: bb4, otherwise: bb3]; // scope 1 at $DIR/branch.rs:+3:16: +3:22 + switchInt(move _3) -> [0: bb4, otherwise: bb3]; } bb3: { -- _2 = _1; // scope 1 at $DIR/branch.rs:+4:9: +4:10 -+ nop; // scope 1 at $DIR/branch.rs:+4:9: +4:10 - goto -> bb6; // scope 1 at $DIR/branch.rs:+3:13: +8:6 +- _2 = _1; ++ nop; + goto -> bb6; } bb4: { - StorageLive(_4); // scope 1 at $DIR/branch.rs:+6:9: +6:14 - _4 = val() -> [return: bb5, unwind unreachable]; // scope 1 at $DIR/branch.rs:+6:9: +6:14 - // mir::Constant - // + span: $DIR/branch.rs:19:9: 19:12 - // + literal: Const { ty: fn() -> i32 {val}, val: Value() } + StorageLive(_4); + _4 = val() -> [return: bb5, unwind unreachable]; } bb5: { - StorageDead(_4); // scope 1 at $DIR/branch.rs:+6:14: +6:15 -- _2 = _1; // scope 1 at $DIR/branch.rs:+7:9: +7:10 -+ nop; // scope 1 at $DIR/branch.rs:+7:9: +7:10 - goto -> bb6; // scope 1 at $DIR/branch.rs:+3:13: +8:6 + StorageDead(_4); +- _2 = _1; ++ nop; + goto -> bb6; } bb6: { - StorageDead(_3); // scope 1 at $DIR/branch.rs:+8:5: +8:6 -- _0 = _2; // scope 2 at $DIR/branch.rs:+10:5: +10:6 -- StorageDead(_2); // scope 1 at $DIR/branch.rs:+11:1: +11:2 -- StorageDead(_1); // scope 0 at $DIR/branch.rs:+11:1: +11:2 -+ nop; // scope 2 at $DIR/branch.rs:+10:5: +10:6 -+ nop; // scope 1 at $DIR/branch.rs:+11:1: +11:2 -+ nop; // scope 0 at $DIR/branch.rs:+11:1: +11:2 - return; // scope 0 at $DIR/branch.rs:+11:2: +11:2 + StorageDead(_3); +- _0 = _2; +- StorageDead(_2); +- StorageDead(_1); ++ nop; ++ nop; ++ nop; + return; } } diff --git a/tests/mir-opt/dest-prop/branch.foo.DestinationPropagation.panic-unwind.diff b/tests/mir-opt/dest-prop/branch.foo.DestinationPropagation.panic-unwind.diff index b7416d389ef7b..e0734f47de2a0 100644 --- a/tests/mir-opt/dest-prop/branch.foo.DestinationPropagation.panic-unwind.diff +++ b/tests/mir-opt/dest-prop/branch.foo.DestinationPropagation.panic-unwind.diff @@ -2,74 +2,65 @@ + // MIR for `foo` after DestinationPropagation fn foo() -> i32 { - let mut _0: i32; // return place in scope 0 at $DIR/branch.rs:+0:13: +0:16 - let _1: i32; // in scope 0 at $DIR/branch.rs:+1:9: +1:10 - let mut _3: bool; // in scope 0 at $DIR/branch.rs:+3:16: +3:22 - let _4: i32; // in scope 0 at $DIR/branch.rs:+6:9: +6:14 + let mut _0: i32; + let _1: i32; + let mut _3: bool; + let _4: i32; scope 1 { -- debug x => _1; // in scope 1 at $DIR/branch.rs:+1:9: +1:10 -+ debug x => _0; // in scope 1 at $DIR/branch.rs:+1:9: +1:10 - let _2: i32; // in scope 1 at $DIR/branch.rs:+3:9: +3:10 +- debug x => _1; ++ debug x => _0; + let _2: i32; scope 2 { -- debug y => _2; // in scope 2 at $DIR/branch.rs:+3:9: +3:10 -+ debug y => _0; // in scope 2 at $DIR/branch.rs:+3:9: +3:10 +- debug y => _2; ++ debug y => _0; } } bb0: { -- StorageLive(_1); // scope 0 at $DIR/branch.rs:+1:9: +1:10 -- _1 = val() -> bb1; // scope 0 at $DIR/branch.rs:+1:13: +1:18 -+ nop; // scope 0 at $DIR/branch.rs:+1:9: +1:10 -+ _0 = val() -> bb1; // scope 0 at $DIR/branch.rs:+1:13: +1:18 - // mir::Constant - // + span: $DIR/branch.rs:14:13: 14:16 - // + literal: Const { ty: fn() -> i32 {val}, val: Value() } +- StorageLive(_1); +- _1 = val() -> bb1; ++ nop; ++ _0 = val() -> bb1; } bb1: { -- StorageLive(_2); // scope 1 at $DIR/branch.rs:+3:9: +3:10 -+ nop; // scope 1 at $DIR/branch.rs:+3:9: +3:10 - StorageLive(_3); // scope 1 at $DIR/branch.rs:+3:16: +3:22 - _3 = cond() -> bb2; // scope 1 at $DIR/branch.rs:+3:16: +3:22 - // mir::Constant - // + span: $DIR/branch.rs:16:16: 16:20 - // + literal: Const { ty: fn() -> bool {cond}, val: Value() } +- StorageLive(_2); ++ nop; + StorageLive(_3); + _3 = cond() -> bb2; } bb2: { - switchInt(move _3) -> [0: bb4, otherwise: bb3]; // scope 1 at $DIR/branch.rs:+3:16: +3:22 + switchInt(move _3) -> [0: bb4, otherwise: bb3]; } bb3: { -- _2 = _1; // scope 1 at $DIR/branch.rs:+4:9: +4:10 -+ nop; // scope 1 at $DIR/branch.rs:+4:9: +4:10 - goto -> bb6; // scope 1 at $DIR/branch.rs:+3:13: +8:6 +- _2 = _1; ++ nop; + goto -> bb6; } bb4: { - StorageLive(_4); // scope 1 at $DIR/branch.rs:+6:9: +6:14 - _4 = val() -> bb5; // scope 1 at $DIR/branch.rs:+6:9: +6:14 - // mir::Constant - // + span: $DIR/branch.rs:19:9: 19:12 - // + literal: Const { ty: fn() -> i32 {val}, val: Value() } + StorageLive(_4); + _4 = val() -> bb5; } bb5: { - StorageDead(_4); // scope 1 at $DIR/branch.rs:+6:14: +6:15 -- _2 = _1; // scope 1 at $DIR/branch.rs:+7:9: +7:10 -+ nop; // scope 1 at $DIR/branch.rs:+7:9: +7:10 - goto -> bb6; // scope 1 at $DIR/branch.rs:+3:13: +8:6 + StorageDead(_4); +- _2 = _1; ++ nop; + goto -> bb6; } bb6: { - StorageDead(_3); // scope 1 at $DIR/branch.rs:+8:5: +8:6 -- _0 = _2; // scope 2 at $DIR/branch.rs:+10:5: +10:6 -- StorageDead(_2); // scope 1 at $DIR/branch.rs:+11:1: +11:2 -- StorageDead(_1); // scope 0 at $DIR/branch.rs:+11:1: +11:2 -+ nop; // scope 2 at $DIR/branch.rs:+10:5: +10:6 -+ nop; // scope 1 at $DIR/branch.rs:+11:1: +11:2 -+ nop; // scope 0 at $DIR/branch.rs:+11:1: +11:2 - return; // scope 0 at $DIR/branch.rs:+11:2: +11:2 + StorageDead(_3); +- _0 = _2; +- StorageDead(_2); +- StorageDead(_1); ++ nop; ++ nop; ++ nop; + return; } } diff --git a/tests/mir-opt/dest-prop/copy_propagation_arg.arg_src.DestinationPropagation.panic-abort.diff b/tests/mir-opt/dest-prop/copy_propagation_arg.arg_src.DestinationPropagation.panic-abort.diff index 4343a593542ba..1aed07f9e6ab1 100644 --- a/tests/mir-opt/dest-prop/copy_propagation_arg.arg_src.DestinationPropagation.panic-abort.diff +++ b/tests/mir-opt/dest-prop/copy_propagation_arg.arg_src.DestinationPropagation.panic-abort.diff @@ -2,25 +2,25 @@ + // MIR for `arg_src` after DestinationPropagation fn arg_src(_1: i32) -> i32 { - debug x => _1; // in scope 0 at $DIR/copy_propagation_arg.rs:+0:12: +0:17 - let mut _0: i32; // return place in scope 0 at $DIR/copy_propagation_arg.rs:+0:27: +0:30 - let _2: i32; // in scope 0 at $DIR/copy_propagation_arg.rs:+1:9: +1:10 + debug x => _1; + let mut _0: i32; + let _2: i32; scope 1 { -- debug y => _2; // in scope 1 at $DIR/copy_propagation_arg.rs:+1:9: +1:10 -+ debug y => _0; // in scope 1 at $DIR/copy_propagation_arg.rs:+1:9: +1:10 +- debug y => _2; ++ debug y => _0; } bb0: { -- StorageLive(_2); // scope 0 at $DIR/copy_propagation_arg.rs:+1:9: +1:10 -- _2 = _1; // scope 0 at $DIR/copy_propagation_arg.rs:+1:13: +1:14 -+ nop; // scope 0 at $DIR/copy_propagation_arg.rs:+1:9: +1:10 -+ _0 = _1; // scope 0 at $DIR/copy_propagation_arg.rs:+1:13: +1:14 - _1 = const 123_i32; // scope 1 at $DIR/copy_propagation_arg.rs:+2:5: +2:12 -- _0 = _2; // scope 1 at $DIR/copy_propagation_arg.rs:+3:5: +3:6 -- StorageDead(_2); // scope 0 at $DIR/copy_propagation_arg.rs:+4:1: +4:2 -+ nop; // scope 1 at $DIR/copy_propagation_arg.rs:+3:5: +3:6 -+ nop; // scope 0 at $DIR/copy_propagation_arg.rs:+4:1: +4:2 - return; // scope 0 at $DIR/copy_propagation_arg.rs:+4:2: +4:2 +- StorageLive(_2); +- _2 = _1; ++ nop; ++ _0 = _1; + _1 = const 123_i32; +- _0 = _2; +- StorageDead(_2); ++ nop; ++ nop; + return; } } diff --git a/tests/mir-opt/dest-prop/copy_propagation_arg.arg_src.DestinationPropagation.panic-unwind.diff b/tests/mir-opt/dest-prop/copy_propagation_arg.arg_src.DestinationPropagation.panic-unwind.diff index 4343a593542ba..1aed07f9e6ab1 100644 --- a/tests/mir-opt/dest-prop/copy_propagation_arg.arg_src.DestinationPropagation.panic-unwind.diff +++ b/tests/mir-opt/dest-prop/copy_propagation_arg.arg_src.DestinationPropagation.panic-unwind.diff @@ -2,25 +2,25 @@ + // MIR for `arg_src` after DestinationPropagation fn arg_src(_1: i32) -> i32 { - debug x => _1; // in scope 0 at $DIR/copy_propagation_arg.rs:+0:12: +0:17 - let mut _0: i32; // return place in scope 0 at $DIR/copy_propagation_arg.rs:+0:27: +0:30 - let _2: i32; // in scope 0 at $DIR/copy_propagation_arg.rs:+1:9: +1:10 + debug x => _1; + let mut _0: i32; + let _2: i32; scope 1 { -- debug y => _2; // in scope 1 at $DIR/copy_propagation_arg.rs:+1:9: +1:10 -+ debug y => _0; // in scope 1 at $DIR/copy_propagation_arg.rs:+1:9: +1:10 +- debug y => _2; ++ debug y => _0; } bb0: { -- StorageLive(_2); // scope 0 at $DIR/copy_propagation_arg.rs:+1:9: +1:10 -- _2 = _1; // scope 0 at $DIR/copy_propagation_arg.rs:+1:13: +1:14 -+ nop; // scope 0 at $DIR/copy_propagation_arg.rs:+1:9: +1:10 -+ _0 = _1; // scope 0 at $DIR/copy_propagation_arg.rs:+1:13: +1:14 - _1 = const 123_i32; // scope 1 at $DIR/copy_propagation_arg.rs:+2:5: +2:12 -- _0 = _2; // scope 1 at $DIR/copy_propagation_arg.rs:+3:5: +3:6 -- StorageDead(_2); // scope 0 at $DIR/copy_propagation_arg.rs:+4:1: +4:2 -+ nop; // scope 1 at $DIR/copy_propagation_arg.rs:+3:5: +3:6 -+ nop; // scope 0 at $DIR/copy_propagation_arg.rs:+4:1: +4:2 - return; // scope 0 at $DIR/copy_propagation_arg.rs:+4:2: +4:2 +- StorageLive(_2); +- _2 = _1; ++ nop; ++ _0 = _1; + _1 = const 123_i32; +- _0 = _2; +- StorageDead(_2); ++ nop; ++ nop; + return; } } diff --git a/tests/mir-opt/dest-prop/copy_propagation_arg.bar.DestinationPropagation.panic-abort.diff b/tests/mir-opt/dest-prop/copy_propagation_arg.bar.DestinationPropagation.panic-abort.diff index 2e1bb2a79ecac..641dea594e119 100644 --- a/tests/mir-opt/dest-prop/copy_propagation_arg.bar.DestinationPropagation.panic-abort.diff +++ b/tests/mir-opt/dest-prop/copy_propagation_arg.bar.DestinationPropagation.panic-abort.diff @@ -2,31 +2,28 @@ + // MIR for `bar` after DestinationPropagation fn bar(_1: u8) -> () { - debug x => _1; // in scope 0 at $DIR/copy_propagation_arg.rs:+0:8: +0:13 - let mut _0: (); // return place in scope 0 at $DIR/copy_propagation_arg.rs:+0:19: +0:19 - let _2: u8; // in scope 0 at $DIR/copy_propagation_arg.rs:+1:5: +1:13 - let mut _3: u8; // in scope 0 at $DIR/copy_propagation_arg.rs:+1:11: +1:12 + debug x => _1; + let mut _0: (); + let _2: u8; + let mut _3: u8; bb0: { - StorageLive(_2); // scope 0 at $DIR/copy_propagation_arg.rs:+1:5: +1:13 -- StorageLive(_3); // scope 0 at $DIR/copy_propagation_arg.rs:+1:11: +1:12 -- _3 = _1; // scope 0 at $DIR/copy_propagation_arg.rs:+1:11: +1:12 -- _2 = dummy(move _3) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/copy_propagation_arg.rs:+1:5: +1:13 -+ nop; // scope 0 at $DIR/copy_propagation_arg.rs:+1:11: +1:12 -+ nop; // scope 0 at $DIR/copy_propagation_arg.rs:+1:11: +1:12 -+ _2 = dummy(move _1) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/copy_propagation_arg.rs:+1:5: +1:13 - // mir::Constant - // + span: $DIR/copy_propagation_arg.rs:17:5: 17:10 - // + literal: Const { ty: fn(u8) -> u8 {dummy}, val: Value() } + StorageLive(_2); +- StorageLive(_3); +- _3 = _1; +- _2 = dummy(move _3) -> [return: bb1, unwind unreachable]; ++ nop; ++ nop; ++ _2 = dummy(move _1) -> [return: bb1, unwind unreachable]; } bb1: { -- StorageDead(_3); // scope 0 at $DIR/copy_propagation_arg.rs:+1:12: +1:13 -+ nop; // scope 0 at $DIR/copy_propagation_arg.rs:+1:12: +1:13 - StorageDead(_2); // scope 0 at $DIR/copy_propagation_arg.rs:+1:13: +1:14 - _1 = const 5_u8; // scope 0 at $DIR/copy_propagation_arg.rs:+2:5: +2:10 - _0 = const (); // scope 0 at $DIR/copy_propagation_arg.rs:+0:19: +3:2 - return; // scope 0 at $DIR/copy_propagation_arg.rs:+3:2: +3:2 +- StorageDead(_3); ++ nop; + StorageDead(_2); + _1 = const 5_u8; + _0 = const (); + return; } } diff --git a/tests/mir-opt/dest-prop/copy_propagation_arg.bar.DestinationPropagation.panic-unwind.diff b/tests/mir-opt/dest-prop/copy_propagation_arg.bar.DestinationPropagation.panic-unwind.diff index a61e741f73dcd..b181066df0470 100644 --- a/tests/mir-opt/dest-prop/copy_propagation_arg.bar.DestinationPropagation.panic-unwind.diff +++ b/tests/mir-opt/dest-prop/copy_propagation_arg.bar.DestinationPropagation.panic-unwind.diff @@ -2,31 +2,28 @@ + // MIR for `bar` after DestinationPropagation fn bar(_1: u8) -> () { - debug x => _1; // in scope 0 at $DIR/copy_propagation_arg.rs:+0:8: +0:13 - let mut _0: (); // return place in scope 0 at $DIR/copy_propagation_arg.rs:+0:19: +0:19 - let _2: u8; // in scope 0 at $DIR/copy_propagation_arg.rs:+1:5: +1:13 - let mut _3: u8; // in scope 0 at $DIR/copy_propagation_arg.rs:+1:11: +1:12 + debug x => _1; + let mut _0: (); + let _2: u8; + let mut _3: u8; bb0: { - StorageLive(_2); // scope 0 at $DIR/copy_propagation_arg.rs:+1:5: +1:13 -- StorageLive(_3); // scope 0 at $DIR/copy_propagation_arg.rs:+1:11: +1:12 -- _3 = _1; // scope 0 at $DIR/copy_propagation_arg.rs:+1:11: +1:12 -- _2 = dummy(move _3) -> bb1; // scope 0 at $DIR/copy_propagation_arg.rs:+1:5: +1:13 -+ nop; // scope 0 at $DIR/copy_propagation_arg.rs:+1:11: +1:12 -+ nop; // scope 0 at $DIR/copy_propagation_arg.rs:+1:11: +1:12 -+ _2 = dummy(move _1) -> bb1; // scope 0 at $DIR/copy_propagation_arg.rs:+1:5: +1:13 - // mir::Constant - // + span: $DIR/copy_propagation_arg.rs:17:5: 17:10 - // + literal: Const { ty: fn(u8) -> u8 {dummy}, val: Value() } + StorageLive(_2); +- StorageLive(_3); +- _3 = _1; +- _2 = dummy(move _3) -> bb1; ++ nop; ++ nop; ++ _2 = dummy(move _1) -> bb1; } bb1: { -- StorageDead(_3); // scope 0 at $DIR/copy_propagation_arg.rs:+1:12: +1:13 -+ nop; // scope 0 at $DIR/copy_propagation_arg.rs:+1:12: +1:13 - StorageDead(_2); // scope 0 at $DIR/copy_propagation_arg.rs:+1:13: +1:14 - _1 = const 5_u8; // scope 0 at $DIR/copy_propagation_arg.rs:+2:5: +2:10 - _0 = const (); // scope 0 at $DIR/copy_propagation_arg.rs:+0:19: +3:2 - return; // scope 0 at $DIR/copy_propagation_arg.rs:+3:2: +3:2 +- StorageDead(_3); ++ nop; + StorageDead(_2); + _1 = const 5_u8; + _0 = const (); + return; } } diff --git a/tests/mir-opt/dest-prop/copy_propagation_arg.baz.DestinationPropagation.panic-abort.diff b/tests/mir-opt/dest-prop/copy_propagation_arg.baz.DestinationPropagation.panic-abort.diff index bc88787e64b2d..4cddaec01d2d3 100644 --- a/tests/mir-opt/dest-prop/copy_propagation_arg.baz.DestinationPropagation.panic-abort.diff +++ b/tests/mir-opt/dest-prop/copy_propagation_arg.baz.DestinationPropagation.panic-abort.diff @@ -2,21 +2,21 @@ + // MIR for `baz` after DestinationPropagation fn baz(_1: i32) -> i32 { - debug x => _1; // in scope 0 at $DIR/copy_propagation_arg.rs:+0:8: +0:13 - let mut _0: i32; // return place in scope 0 at $DIR/copy_propagation_arg.rs:+0:23: +0:26 - let mut _2: i32; // in scope 0 at $DIR/copy_propagation_arg.rs:+2:9: +2:10 + debug x => _1; + let mut _0: i32; + let mut _2: i32; bb0: { -- StorageLive(_2); // scope 0 at $DIR/copy_propagation_arg.rs:+2:9: +2:10 -- _2 = _1; // scope 0 at $DIR/copy_propagation_arg.rs:+2:9: +2:10 -- _1 = move _2; // scope 0 at $DIR/copy_propagation_arg.rs:+2:5: +2:10 -- StorageDead(_2); // scope 0 at $DIR/copy_propagation_arg.rs:+2:9: +2:10 -+ nop; // scope 0 at $DIR/copy_propagation_arg.rs:+2:9: +2:10 -+ nop; // scope 0 at $DIR/copy_propagation_arg.rs:+2:9: +2:10 -+ nop; // scope 0 at $DIR/copy_propagation_arg.rs:+2:5: +2:10 -+ nop; // scope 0 at $DIR/copy_propagation_arg.rs:+2:9: +2:10 - _0 = _1; // scope 0 at $DIR/copy_propagation_arg.rs:+3:5: +3:6 - return; // scope 0 at $DIR/copy_propagation_arg.rs:+4:2: +4:2 +- StorageLive(_2); +- _2 = _1; +- _1 = move _2; +- StorageDead(_2); ++ nop; ++ nop; ++ nop; ++ nop; + _0 = _1; + return; } } diff --git a/tests/mir-opt/dest-prop/copy_propagation_arg.baz.DestinationPropagation.panic-unwind.diff b/tests/mir-opt/dest-prop/copy_propagation_arg.baz.DestinationPropagation.panic-unwind.diff index bc88787e64b2d..4cddaec01d2d3 100644 --- a/tests/mir-opt/dest-prop/copy_propagation_arg.baz.DestinationPropagation.panic-unwind.diff +++ b/tests/mir-opt/dest-prop/copy_propagation_arg.baz.DestinationPropagation.panic-unwind.diff @@ -2,21 +2,21 @@ + // MIR for `baz` after DestinationPropagation fn baz(_1: i32) -> i32 { - debug x => _1; // in scope 0 at $DIR/copy_propagation_arg.rs:+0:8: +0:13 - let mut _0: i32; // return place in scope 0 at $DIR/copy_propagation_arg.rs:+0:23: +0:26 - let mut _2: i32; // in scope 0 at $DIR/copy_propagation_arg.rs:+2:9: +2:10 + debug x => _1; + let mut _0: i32; + let mut _2: i32; bb0: { -- StorageLive(_2); // scope 0 at $DIR/copy_propagation_arg.rs:+2:9: +2:10 -- _2 = _1; // scope 0 at $DIR/copy_propagation_arg.rs:+2:9: +2:10 -- _1 = move _2; // scope 0 at $DIR/copy_propagation_arg.rs:+2:5: +2:10 -- StorageDead(_2); // scope 0 at $DIR/copy_propagation_arg.rs:+2:9: +2:10 -+ nop; // scope 0 at $DIR/copy_propagation_arg.rs:+2:9: +2:10 -+ nop; // scope 0 at $DIR/copy_propagation_arg.rs:+2:9: +2:10 -+ nop; // scope 0 at $DIR/copy_propagation_arg.rs:+2:5: +2:10 -+ nop; // scope 0 at $DIR/copy_propagation_arg.rs:+2:9: +2:10 - _0 = _1; // scope 0 at $DIR/copy_propagation_arg.rs:+3:5: +3:6 - return; // scope 0 at $DIR/copy_propagation_arg.rs:+4:2: +4:2 +- StorageLive(_2); +- _2 = _1; +- _1 = move _2; +- StorageDead(_2); ++ nop; ++ nop; ++ nop; ++ nop; + _0 = _1; + return; } } diff --git a/tests/mir-opt/dest-prop/copy_propagation_arg.foo.DestinationPropagation.panic-abort.diff b/tests/mir-opt/dest-prop/copy_propagation_arg.foo.DestinationPropagation.panic-abort.diff index fce57a0359220..54875cadec5b6 100644 --- a/tests/mir-opt/dest-prop/copy_propagation_arg.foo.DestinationPropagation.panic-abort.diff +++ b/tests/mir-opt/dest-prop/copy_propagation_arg.foo.DestinationPropagation.panic-abort.diff @@ -2,31 +2,28 @@ + // MIR for `foo` after DestinationPropagation fn foo(_1: u8) -> () { - debug x => _1; // in scope 0 at $DIR/copy_propagation_arg.rs:+0:8: +0:13 - let mut _0: (); // return place in scope 0 at $DIR/copy_propagation_arg.rs:+0:19: +0:19 - let mut _2: u8; // in scope 0 at $DIR/copy_propagation_arg.rs:+2:9: +2:17 - let mut _3: u8; // in scope 0 at $DIR/copy_propagation_arg.rs:+2:15: +2:16 + debug x => _1; + let mut _0: (); + let mut _2: u8; + let mut _3: u8; bb0: { -- StorageLive(_2); // scope 0 at $DIR/copy_propagation_arg.rs:+2:9: +2:17 -+ nop; // scope 0 at $DIR/copy_propagation_arg.rs:+2:9: +2:17 - StorageLive(_3); // scope 0 at $DIR/copy_propagation_arg.rs:+2:15: +2:16 - _3 = _1; // scope 0 at $DIR/copy_propagation_arg.rs:+2:15: +2:16 -- _2 = dummy(move _3) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/copy_propagation_arg.rs:+2:9: +2:17 -+ _1 = dummy(move _3) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/copy_propagation_arg.rs:+2:9: +2:17 - // mir::Constant - // + span: $DIR/copy_propagation_arg.rs:12:9: 12:14 - // + literal: Const { ty: fn(u8) -> u8 {dummy}, val: Value() } +- StorageLive(_2); ++ nop; + StorageLive(_3); + _3 = _1; +- _2 = dummy(move _3) -> [return: bb1, unwind unreachable]; ++ _1 = dummy(move _3) -> [return: bb1, unwind unreachable]; } bb1: { - StorageDead(_3); // scope 0 at $DIR/copy_propagation_arg.rs:+2:16: +2:17 -- _1 = move _2; // scope 0 at $DIR/copy_propagation_arg.rs:+2:5: +2:17 -- StorageDead(_2); // scope 0 at $DIR/copy_propagation_arg.rs:+2:16: +2:17 -+ nop; // scope 0 at $DIR/copy_propagation_arg.rs:+2:5: +2:17 -+ nop; // scope 0 at $DIR/copy_propagation_arg.rs:+2:16: +2:17 - _0 = const (); // scope 0 at $DIR/copy_propagation_arg.rs:+0:19: +3:2 - return; // scope 0 at $DIR/copy_propagation_arg.rs:+3:2: +3:2 + StorageDead(_3); +- _1 = move _2; +- StorageDead(_2); ++ nop; ++ nop; + _0 = const (); + return; } } diff --git a/tests/mir-opt/dest-prop/copy_propagation_arg.foo.DestinationPropagation.panic-unwind.diff b/tests/mir-opt/dest-prop/copy_propagation_arg.foo.DestinationPropagation.panic-unwind.diff index c7fbecac5c47f..f19728669368e 100644 --- a/tests/mir-opt/dest-prop/copy_propagation_arg.foo.DestinationPropagation.panic-unwind.diff +++ b/tests/mir-opt/dest-prop/copy_propagation_arg.foo.DestinationPropagation.panic-unwind.diff @@ -2,31 +2,28 @@ + // MIR for `foo` after DestinationPropagation fn foo(_1: u8) -> () { - debug x => _1; // in scope 0 at $DIR/copy_propagation_arg.rs:+0:8: +0:13 - let mut _0: (); // return place in scope 0 at $DIR/copy_propagation_arg.rs:+0:19: +0:19 - let mut _2: u8; // in scope 0 at $DIR/copy_propagation_arg.rs:+2:9: +2:17 - let mut _3: u8; // in scope 0 at $DIR/copy_propagation_arg.rs:+2:15: +2:16 + debug x => _1; + let mut _0: (); + let mut _2: u8; + let mut _3: u8; bb0: { -- StorageLive(_2); // scope 0 at $DIR/copy_propagation_arg.rs:+2:9: +2:17 -+ nop; // scope 0 at $DIR/copy_propagation_arg.rs:+2:9: +2:17 - StorageLive(_3); // scope 0 at $DIR/copy_propagation_arg.rs:+2:15: +2:16 - _3 = _1; // scope 0 at $DIR/copy_propagation_arg.rs:+2:15: +2:16 -- _2 = dummy(move _3) -> bb1; // scope 0 at $DIR/copy_propagation_arg.rs:+2:9: +2:17 -+ _1 = dummy(move _3) -> bb1; // scope 0 at $DIR/copy_propagation_arg.rs:+2:9: +2:17 - // mir::Constant - // + span: $DIR/copy_propagation_arg.rs:12:9: 12:14 - // + literal: Const { ty: fn(u8) -> u8 {dummy}, val: Value() } +- StorageLive(_2); ++ nop; + StorageLive(_3); + _3 = _1; +- _2 = dummy(move _3) -> bb1; ++ _1 = dummy(move _3) -> bb1; } bb1: { - StorageDead(_3); // scope 0 at $DIR/copy_propagation_arg.rs:+2:16: +2:17 -- _1 = move _2; // scope 0 at $DIR/copy_propagation_arg.rs:+2:5: +2:17 -- StorageDead(_2); // scope 0 at $DIR/copy_propagation_arg.rs:+2:16: +2:17 -+ nop; // scope 0 at $DIR/copy_propagation_arg.rs:+2:5: +2:17 -+ nop; // scope 0 at $DIR/copy_propagation_arg.rs:+2:16: +2:17 - _0 = const (); // scope 0 at $DIR/copy_propagation_arg.rs:+0:19: +3:2 - return; // scope 0 at $DIR/copy_propagation_arg.rs:+3:2: +3:2 + StorageDead(_3); +- _1 = move _2; +- StorageDead(_2); ++ nop; ++ nop; + _0 = const (); + return; } } diff --git a/tests/mir-opt/dest-prop/cycle.main.DestinationPropagation.panic-abort.diff b/tests/mir-opt/dest-prop/cycle.main.DestinationPropagation.panic-abort.diff index 35947cace2968..98b4ee866d2b6 100644 --- a/tests/mir-opt/dest-prop/cycle.main.DestinationPropagation.panic-abort.diff +++ b/tests/mir-opt/dest-prop/cycle.main.DestinationPropagation.panic-abort.diff @@ -2,76 +2,70 @@ + // MIR for `main` after DestinationPropagation fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/cycle.rs:+0:11: +0:11 - let mut _1: i32; // in scope 0 at $DIR/cycle.rs:+1:9: +1:14 - let mut _4: i32; // in scope 0 at $DIR/cycle.rs:+4:9: +4:10 - let _5: (); // in scope 0 at $DIR/cycle.rs:+6:5: +6:12 - let mut _6: i32; // in scope 0 at $DIR/cycle.rs:+6:10: +6:11 + let mut _0: (); + let mut _1: i32; + let mut _4: i32; + let _5: (); + let mut _6: i32; scope 1 { -- debug x => _1; // in scope 1 at $DIR/cycle.rs:+1:9: +1:14 -+ debug x => _6; // in scope 1 at $DIR/cycle.rs:+1:9: +1:14 - let _2: i32; // in scope 1 at $DIR/cycle.rs:+2:9: +2:10 +- debug x => _1; ++ debug x => _6; + let _2: i32; scope 2 { -- debug y => _2; // in scope 2 at $DIR/cycle.rs:+2:9: +2:10 -+ debug y => _6; // in scope 2 at $DIR/cycle.rs:+2:9: +2:10 - let _3: i32; // in scope 2 at $DIR/cycle.rs:+3:9: +3:10 +- debug y => _2; ++ debug y => _6; + let _3: i32; scope 3 { -- debug z => _3; // in scope 3 at $DIR/cycle.rs:+3:9: +3:10 -+ debug z => _6; // in scope 3 at $DIR/cycle.rs:+3:9: +3:10 +- debug z => _3; ++ debug z => _6; } } } bb0: { -- StorageLive(_1); // scope 0 at $DIR/cycle.rs:+1:9: +1:14 -- _1 = val() -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/cycle.rs:+1:17: +1:22 -+ nop; // scope 0 at $DIR/cycle.rs:+1:9: +1:14 -+ _6 = val() -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/cycle.rs:+1:17: +1:22 - // mir::Constant - // + span: $DIR/cycle.rs:10:17: 10:20 - // + literal: Const { ty: fn() -> i32 {val}, val: Value() } +- StorageLive(_1); +- _1 = val() -> [return: bb1, unwind unreachable]; ++ nop; ++ _6 = val() -> [return: bb1, unwind unreachable]; } bb1: { -- StorageLive(_2); // scope 1 at $DIR/cycle.rs:+2:9: +2:10 -- _2 = _1; // scope 1 at $DIR/cycle.rs:+2:13: +2:14 -- StorageLive(_3); // scope 2 at $DIR/cycle.rs:+3:9: +3:10 -- _3 = _2; // scope 2 at $DIR/cycle.rs:+3:13: +3:14 -- StorageLive(_4); // scope 3 at $DIR/cycle.rs:+4:9: +4:10 -- _4 = _3; // scope 3 at $DIR/cycle.rs:+4:9: +4:10 -- _1 = move _4; // scope 3 at $DIR/cycle.rs:+4:5: +4:10 -- StorageDead(_4); // scope 3 at $DIR/cycle.rs:+4:9: +4:10 -+ nop; // scope 1 at $DIR/cycle.rs:+2:9: +2:10 -+ nop; // scope 1 at $DIR/cycle.rs:+2:13: +2:14 -+ nop; // scope 2 at $DIR/cycle.rs:+3:9: +3:10 -+ nop; // scope 2 at $DIR/cycle.rs:+3:13: +3:14 -+ nop; // scope 3 at $DIR/cycle.rs:+4:9: +4:10 -+ nop; // scope 3 at $DIR/cycle.rs:+4:9: +4:10 -+ nop; // scope 3 at $DIR/cycle.rs:+4:5: +4:10 -+ nop; // scope 3 at $DIR/cycle.rs:+4:9: +4:10 - StorageLive(_5); // scope 3 at $DIR/cycle.rs:+6:5: +6:12 -- StorageLive(_6); // scope 3 at $DIR/cycle.rs:+6:10: +6:11 -- _6 = _1; // scope 3 at $DIR/cycle.rs:+6:10: +6:11 -+ nop; // scope 3 at $DIR/cycle.rs:+6:10: +6:11 -+ nop; // scope 3 at $DIR/cycle.rs:+6:10: +6:11 - _5 = std::mem::drop::(move _6) -> [return: bb2, unwind unreachable]; // scope 3 at $DIR/cycle.rs:+6:5: +6:12 - // mir::Constant - // + span: $DIR/cycle.rs:15:5: 15:9 - // + literal: Const { ty: fn(i32) {std::mem::drop::}, val: Value() } +- StorageLive(_2); +- _2 = _1; +- StorageLive(_3); +- _3 = _2; +- StorageLive(_4); +- _4 = _3; +- _1 = move _4; +- StorageDead(_4); ++ nop; ++ nop; ++ nop; ++ nop; ++ nop; ++ nop; ++ nop; ++ nop; + StorageLive(_5); +- StorageLive(_6); +- _6 = _1; ++ nop; ++ nop; + _5 = std::mem::drop::(move _6) -> [return: bb2, unwind unreachable]; } bb2: { -- StorageDead(_6); // scope 3 at $DIR/cycle.rs:+6:11: +6:12 -+ nop; // scope 3 at $DIR/cycle.rs:+6:11: +6:12 - StorageDead(_5); // scope 3 at $DIR/cycle.rs:+6:12: +6:13 - _0 = const (); // scope 0 at $DIR/cycle.rs:+0:11: +7:2 -- StorageDead(_3); // scope 2 at $DIR/cycle.rs:+7:1: +7:2 -- StorageDead(_2); // scope 1 at $DIR/cycle.rs:+7:1: +7:2 -- StorageDead(_1); // scope 0 at $DIR/cycle.rs:+7:1: +7:2 -+ nop; // scope 2 at $DIR/cycle.rs:+7:1: +7:2 -+ nop; // scope 1 at $DIR/cycle.rs:+7:1: +7:2 -+ nop; // scope 0 at $DIR/cycle.rs:+7:1: +7:2 - return; // scope 0 at $DIR/cycle.rs:+7:2: +7:2 +- StorageDead(_6); ++ nop; + StorageDead(_5); + _0 = const (); +- StorageDead(_3); +- StorageDead(_2); +- StorageDead(_1); ++ nop; ++ nop; ++ nop; + return; } } diff --git a/tests/mir-opt/dest-prop/cycle.main.DestinationPropagation.panic-unwind.diff b/tests/mir-opt/dest-prop/cycle.main.DestinationPropagation.panic-unwind.diff index b06f069a2e4ff..0dc7de31cc47b 100644 --- a/tests/mir-opt/dest-prop/cycle.main.DestinationPropagation.panic-unwind.diff +++ b/tests/mir-opt/dest-prop/cycle.main.DestinationPropagation.panic-unwind.diff @@ -2,76 +2,70 @@ + // MIR for `main` after DestinationPropagation fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/cycle.rs:+0:11: +0:11 - let mut _1: i32; // in scope 0 at $DIR/cycle.rs:+1:9: +1:14 - let mut _4: i32; // in scope 0 at $DIR/cycle.rs:+4:9: +4:10 - let _5: (); // in scope 0 at $DIR/cycle.rs:+6:5: +6:12 - let mut _6: i32; // in scope 0 at $DIR/cycle.rs:+6:10: +6:11 + let mut _0: (); + let mut _1: i32; + let mut _4: i32; + let _5: (); + let mut _6: i32; scope 1 { -- debug x => _1; // in scope 1 at $DIR/cycle.rs:+1:9: +1:14 -+ debug x => _6; // in scope 1 at $DIR/cycle.rs:+1:9: +1:14 - let _2: i32; // in scope 1 at $DIR/cycle.rs:+2:9: +2:10 +- debug x => _1; ++ debug x => _6; + let _2: i32; scope 2 { -- debug y => _2; // in scope 2 at $DIR/cycle.rs:+2:9: +2:10 -+ debug y => _6; // in scope 2 at $DIR/cycle.rs:+2:9: +2:10 - let _3: i32; // in scope 2 at $DIR/cycle.rs:+3:9: +3:10 +- debug y => _2; ++ debug y => _6; + let _3: i32; scope 3 { -- debug z => _3; // in scope 3 at $DIR/cycle.rs:+3:9: +3:10 -+ debug z => _6; // in scope 3 at $DIR/cycle.rs:+3:9: +3:10 +- debug z => _3; ++ debug z => _6; } } } bb0: { -- StorageLive(_1); // scope 0 at $DIR/cycle.rs:+1:9: +1:14 -- _1 = val() -> bb1; // scope 0 at $DIR/cycle.rs:+1:17: +1:22 -+ nop; // scope 0 at $DIR/cycle.rs:+1:9: +1:14 -+ _6 = val() -> bb1; // scope 0 at $DIR/cycle.rs:+1:17: +1:22 - // mir::Constant - // + span: $DIR/cycle.rs:10:17: 10:20 - // + literal: Const { ty: fn() -> i32 {val}, val: Value() } +- StorageLive(_1); +- _1 = val() -> bb1; ++ nop; ++ _6 = val() -> bb1; } bb1: { -- StorageLive(_2); // scope 1 at $DIR/cycle.rs:+2:9: +2:10 -- _2 = _1; // scope 1 at $DIR/cycle.rs:+2:13: +2:14 -- StorageLive(_3); // scope 2 at $DIR/cycle.rs:+3:9: +3:10 -- _3 = _2; // scope 2 at $DIR/cycle.rs:+3:13: +3:14 -- StorageLive(_4); // scope 3 at $DIR/cycle.rs:+4:9: +4:10 -- _4 = _3; // scope 3 at $DIR/cycle.rs:+4:9: +4:10 -- _1 = move _4; // scope 3 at $DIR/cycle.rs:+4:5: +4:10 -- StorageDead(_4); // scope 3 at $DIR/cycle.rs:+4:9: +4:10 -+ nop; // scope 1 at $DIR/cycle.rs:+2:9: +2:10 -+ nop; // scope 1 at $DIR/cycle.rs:+2:13: +2:14 -+ nop; // scope 2 at $DIR/cycle.rs:+3:9: +3:10 -+ nop; // scope 2 at $DIR/cycle.rs:+3:13: +3:14 -+ nop; // scope 3 at $DIR/cycle.rs:+4:9: +4:10 -+ nop; // scope 3 at $DIR/cycle.rs:+4:9: +4:10 -+ nop; // scope 3 at $DIR/cycle.rs:+4:5: +4:10 -+ nop; // scope 3 at $DIR/cycle.rs:+4:9: +4:10 - StorageLive(_5); // scope 3 at $DIR/cycle.rs:+6:5: +6:12 -- StorageLive(_6); // scope 3 at $DIR/cycle.rs:+6:10: +6:11 -- _6 = _1; // scope 3 at $DIR/cycle.rs:+6:10: +6:11 -+ nop; // scope 3 at $DIR/cycle.rs:+6:10: +6:11 -+ nop; // scope 3 at $DIR/cycle.rs:+6:10: +6:11 - _5 = std::mem::drop::(move _6) -> bb2; // scope 3 at $DIR/cycle.rs:+6:5: +6:12 - // mir::Constant - // + span: $DIR/cycle.rs:15:5: 15:9 - // + literal: Const { ty: fn(i32) {std::mem::drop::}, val: Value() } +- StorageLive(_2); +- _2 = _1; +- StorageLive(_3); +- _3 = _2; +- StorageLive(_4); +- _4 = _3; +- _1 = move _4; +- StorageDead(_4); ++ nop; ++ nop; ++ nop; ++ nop; ++ nop; ++ nop; ++ nop; ++ nop; + StorageLive(_5); +- StorageLive(_6); +- _6 = _1; ++ nop; ++ nop; + _5 = std::mem::drop::(move _6) -> bb2; } bb2: { -- StorageDead(_6); // scope 3 at $DIR/cycle.rs:+6:11: +6:12 -+ nop; // scope 3 at $DIR/cycle.rs:+6:11: +6:12 - StorageDead(_5); // scope 3 at $DIR/cycle.rs:+6:12: +6:13 - _0 = const (); // scope 0 at $DIR/cycle.rs:+0:11: +7:2 -- StorageDead(_3); // scope 2 at $DIR/cycle.rs:+7:1: +7:2 -- StorageDead(_2); // scope 1 at $DIR/cycle.rs:+7:1: +7:2 -- StorageDead(_1); // scope 0 at $DIR/cycle.rs:+7:1: +7:2 -+ nop; // scope 2 at $DIR/cycle.rs:+7:1: +7:2 -+ nop; // scope 1 at $DIR/cycle.rs:+7:1: +7:2 -+ nop; // scope 0 at $DIR/cycle.rs:+7:1: +7:2 - return; // scope 0 at $DIR/cycle.rs:+7:2: +7:2 +- StorageDead(_6); ++ nop; + StorageDead(_5); + _0 = const (); +- StorageDead(_3); +- StorageDead(_2); +- StorageDead(_1); ++ nop; ++ nop; ++ nop; + return; } } diff --git a/tests/mir-opt/dest-prop/dead_stores_79191.f.DestinationPropagation.after.panic-abort.mir b/tests/mir-opt/dest-prop/dead_stores_79191.f.DestinationPropagation.after.panic-abort.mir index 5882e0aee109a..eb160fc194a81 100644 --- a/tests/mir-opt/dest-prop/dead_stores_79191.f.DestinationPropagation.after.panic-abort.mir +++ b/tests/mir-opt/dest-prop/dead_stores_79191.f.DestinationPropagation.after.panic-abort.mir @@ -1,34 +1,31 @@ // MIR for `f` after DestinationPropagation fn f(_1: usize) -> usize { - debug a => _1; // in scope 0 at $DIR/dead_stores_79191.rs:+0:6: +0:11 - let mut _0: usize; // return place in scope 0 at $DIR/dead_stores_79191.rs:+0:23: +0:28 - let _2: usize; // in scope 0 at $DIR/dead_stores_79191.rs:+1:9: +1:10 - let mut _3: usize; // in scope 0 at $DIR/dead_stores_79191.rs:+3:9: +3:10 - let mut _4: usize; // in scope 0 at $DIR/dead_stores_79191.rs:+4:8: +4:9 + debug a => _1; + let mut _0: usize; + let _2: usize; + let mut _3: usize; + let mut _4: usize; scope 1 { - debug b => _3; // in scope 1 at $DIR/dead_stores_79191.rs:+1:9: +1:10 + debug b => _3; } bb0: { - nop; // scope 0 at $DIR/dead_stores_79191.rs:+1:9: +1:10 - _3 = _1; // scope 0 at $DIR/dead_stores_79191.rs:+1:13: +1:14 - _1 = const 5_usize; // scope 1 at $DIR/dead_stores_79191.rs:+2:5: +2:10 - nop; // scope 1 at $DIR/dead_stores_79191.rs:+3:9: +3:10 - nop; // scope 1 at $DIR/dead_stores_79191.rs:+3:9: +3:10 - _1 = move _3; // scope 1 at $DIR/dead_stores_79191.rs:+3:5: +3:10 - nop; // scope 1 at $DIR/dead_stores_79191.rs:+3:9: +3:10 - nop; // scope 1 at $DIR/dead_stores_79191.rs:+4:8: +4:9 - nop; // scope 1 at $DIR/dead_stores_79191.rs:+4:8: +4:9 - _0 = id::(move _1) -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/dead_stores_79191.rs:+4:5: +4:10 - // mir::Constant - // + span: $DIR/dead_stores_79191.rs:13:5: 13:7 - // + literal: Const { ty: fn(usize) -> usize {id::}, val: Value() } + nop; + _3 = _1; + _1 = const 5_usize; + nop; + nop; + _1 = move _3; + nop; + nop; + nop; + _0 = id::(move _1) -> [return: bb1, unwind unreachable]; } bb1: { - nop; // scope 1 at $DIR/dead_stores_79191.rs:+4:9: +4:10 - nop; // scope 0 at $DIR/dead_stores_79191.rs:+5:1: +5:2 - return; // scope 0 at $DIR/dead_stores_79191.rs:+5:2: +5:2 + nop; + nop; + return; } } diff --git a/tests/mir-opt/dest-prop/dead_stores_79191.f.DestinationPropagation.after.panic-unwind.mir b/tests/mir-opt/dest-prop/dead_stores_79191.f.DestinationPropagation.after.panic-unwind.mir index b9d4b59d2f7a1..bf515d328aef8 100644 --- a/tests/mir-opt/dest-prop/dead_stores_79191.f.DestinationPropagation.after.panic-unwind.mir +++ b/tests/mir-opt/dest-prop/dead_stores_79191.f.DestinationPropagation.after.panic-unwind.mir @@ -1,34 +1,31 @@ // MIR for `f` after DestinationPropagation fn f(_1: usize) -> usize { - debug a => _1; // in scope 0 at $DIR/dead_stores_79191.rs:+0:6: +0:11 - let mut _0: usize; // return place in scope 0 at $DIR/dead_stores_79191.rs:+0:23: +0:28 - let _2: usize; // in scope 0 at $DIR/dead_stores_79191.rs:+1:9: +1:10 - let mut _3: usize; // in scope 0 at $DIR/dead_stores_79191.rs:+3:9: +3:10 - let mut _4: usize; // in scope 0 at $DIR/dead_stores_79191.rs:+4:8: +4:9 + debug a => _1; + let mut _0: usize; + let _2: usize; + let mut _3: usize; + let mut _4: usize; scope 1 { - debug b => _3; // in scope 1 at $DIR/dead_stores_79191.rs:+1:9: +1:10 + debug b => _3; } bb0: { - nop; // scope 0 at $DIR/dead_stores_79191.rs:+1:9: +1:10 - _3 = _1; // scope 0 at $DIR/dead_stores_79191.rs:+1:13: +1:14 - _1 = const 5_usize; // scope 1 at $DIR/dead_stores_79191.rs:+2:5: +2:10 - nop; // scope 1 at $DIR/dead_stores_79191.rs:+3:9: +3:10 - nop; // scope 1 at $DIR/dead_stores_79191.rs:+3:9: +3:10 - _1 = move _3; // scope 1 at $DIR/dead_stores_79191.rs:+3:5: +3:10 - nop; // scope 1 at $DIR/dead_stores_79191.rs:+3:9: +3:10 - nop; // scope 1 at $DIR/dead_stores_79191.rs:+4:8: +4:9 - nop; // scope 1 at $DIR/dead_stores_79191.rs:+4:8: +4:9 - _0 = id::(move _1) -> bb1; // scope 1 at $DIR/dead_stores_79191.rs:+4:5: +4:10 - // mir::Constant - // + span: $DIR/dead_stores_79191.rs:13:5: 13:7 - // + literal: Const { ty: fn(usize) -> usize {id::}, val: Value() } + nop; + _3 = _1; + _1 = const 5_usize; + nop; + nop; + _1 = move _3; + nop; + nop; + nop; + _0 = id::(move _1) -> bb1; } bb1: { - nop; // scope 1 at $DIR/dead_stores_79191.rs:+4:9: +4:10 - nop; // scope 0 at $DIR/dead_stores_79191.rs:+5:1: +5:2 - return; // scope 0 at $DIR/dead_stores_79191.rs:+5:2: +5:2 + nop; + nop; + return; } } diff --git a/tests/mir-opt/dest-prop/dead_stores_better.f.DestinationPropagation.after.panic-abort.mir b/tests/mir-opt/dest-prop/dead_stores_better.f.DestinationPropagation.after.panic-abort.mir index f4568111d2e15..a3ec090107514 100644 --- a/tests/mir-opt/dest-prop/dead_stores_better.f.DestinationPropagation.after.panic-abort.mir +++ b/tests/mir-opt/dest-prop/dead_stores_better.f.DestinationPropagation.after.panic-abort.mir @@ -1,33 +1,30 @@ // MIR for `f` after DestinationPropagation fn f(_1: usize) -> usize { - debug a => _1; // in scope 0 at $DIR/dead_stores_better.rs:+0:10: +0:15 - let mut _0: usize; // return place in scope 0 at $DIR/dead_stores_better.rs:+0:27: +0:32 - let _2: usize; // in scope 0 at $DIR/dead_stores_better.rs:+1:9: +1:10 - let mut _3: usize; // in scope 0 at $DIR/dead_stores_better.rs:+3:9: +3:10 - let mut _4: usize; // in scope 0 at $DIR/dead_stores_better.rs:+4:8: +4:9 + debug a => _1; + let mut _0: usize; + let _2: usize; + let mut _3: usize; + let mut _4: usize; scope 1 { - debug b => _1; // in scope 1 at $DIR/dead_stores_better.rs:+1:9: +1:10 + debug b => _1; } bb0: { - nop; // scope 0 at $DIR/dead_stores_better.rs:+1:9: +1:10 - nop; // scope 0 at $DIR/dead_stores_better.rs:+1:13: +1:14 - nop; // scope 1 at $DIR/dead_stores_better.rs:+3:9: +3:10 - nop; // scope 1 at $DIR/dead_stores_better.rs:+3:9: +3:10 - nop; // scope 1 at $DIR/dead_stores_better.rs:+3:5: +3:10 - nop; // scope 1 at $DIR/dead_stores_better.rs:+3:9: +3:10 - nop; // scope 1 at $DIR/dead_stores_better.rs:+4:8: +4:9 - nop; // scope 1 at $DIR/dead_stores_better.rs:+4:8: +4:9 - _0 = id::(move _1) -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/dead_stores_better.rs:+4:5: +4:10 - // mir::Constant - // + span: $DIR/dead_stores_better.rs:17:5: 17:7 - // + literal: Const { ty: fn(usize) -> usize {id::}, val: Value() } + nop; + nop; + nop; + nop; + nop; + nop; + nop; + nop; + _0 = id::(move _1) -> [return: bb1, unwind unreachable]; } bb1: { - nop; // scope 1 at $DIR/dead_stores_better.rs:+4:9: +4:10 - nop; // scope 0 at $DIR/dead_stores_better.rs:+5:1: +5:2 - return; // scope 0 at $DIR/dead_stores_better.rs:+5:2: +5:2 + nop; + nop; + return; } } diff --git a/tests/mir-opt/dest-prop/dead_stores_better.f.DestinationPropagation.after.panic-unwind.mir b/tests/mir-opt/dest-prop/dead_stores_better.f.DestinationPropagation.after.panic-unwind.mir index 9eb0e09bf1b21..038bd4b6da9d4 100644 --- a/tests/mir-opt/dest-prop/dead_stores_better.f.DestinationPropagation.after.panic-unwind.mir +++ b/tests/mir-opt/dest-prop/dead_stores_better.f.DestinationPropagation.after.panic-unwind.mir @@ -1,33 +1,30 @@ // MIR for `f` after DestinationPropagation fn f(_1: usize) -> usize { - debug a => _1; // in scope 0 at $DIR/dead_stores_better.rs:+0:10: +0:15 - let mut _0: usize; // return place in scope 0 at $DIR/dead_stores_better.rs:+0:27: +0:32 - let _2: usize; // in scope 0 at $DIR/dead_stores_better.rs:+1:9: +1:10 - let mut _3: usize; // in scope 0 at $DIR/dead_stores_better.rs:+3:9: +3:10 - let mut _4: usize; // in scope 0 at $DIR/dead_stores_better.rs:+4:8: +4:9 + debug a => _1; + let mut _0: usize; + let _2: usize; + let mut _3: usize; + let mut _4: usize; scope 1 { - debug b => _1; // in scope 1 at $DIR/dead_stores_better.rs:+1:9: +1:10 + debug b => _1; } bb0: { - nop; // scope 0 at $DIR/dead_stores_better.rs:+1:9: +1:10 - nop; // scope 0 at $DIR/dead_stores_better.rs:+1:13: +1:14 - nop; // scope 1 at $DIR/dead_stores_better.rs:+3:9: +3:10 - nop; // scope 1 at $DIR/dead_stores_better.rs:+3:9: +3:10 - nop; // scope 1 at $DIR/dead_stores_better.rs:+3:5: +3:10 - nop; // scope 1 at $DIR/dead_stores_better.rs:+3:9: +3:10 - nop; // scope 1 at $DIR/dead_stores_better.rs:+4:8: +4:9 - nop; // scope 1 at $DIR/dead_stores_better.rs:+4:8: +4:9 - _0 = id::(move _1) -> bb1; // scope 1 at $DIR/dead_stores_better.rs:+4:5: +4:10 - // mir::Constant - // + span: $DIR/dead_stores_better.rs:17:5: 17:7 - // + literal: Const { ty: fn(usize) -> usize {id::}, val: Value() } + nop; + nop; + nop; + nop; + nop; + nop; + nop; + nop; + _0 = id::(move _1) -> bb1; } bb1: { - nop; // scope 1 at $DIR/dead_stores_better.rs:+4:9: +4:10 - nop; // scope 0 at $DIR/dead_stores_better.rs:+5:1: +5:2 - return; // scope 0 at $DIR/dead_stores_better.rs:+5:2: +5:2 + nop; + nop; + return; } } diff --git a/tests/mir-opt/dest-prop/simple.nrvo.DestinationPropagation.panic-abort.diff b/tests/mir-opt/dest-prop/simple.nrvo.DestinationPropagation.panic-abort.diff index 0b0eb03b652f9..4d34f43fd5ce6 100644 --- a/tests/mir-opt/dest-prop/simple.nrvo.DestinationPropagation.panic-abort.diff +++ b/tests/mir-opt/dest-prop/simple.nrvo.DestinationPropagation.panic-abort.diff @@ -2,42 +2,42 @@ + // MIR for `nrvo` after DestinationPropagation fn nrvo(_1: for<'a> fn(&'a mut [u8; 1024])) -> [u8; 1024] { - debug init => _1; // in scope 0 at $DIR/simple.rs:+0:9: +0:13 - let mut _0: [u8; 1024]; // return place in scope 0 at $DIR/simple.rs:+0:39: +0:49 - let mut _2: [u8; 1024]; // in scope 0 at $DIR/simple.rs:+1:9: +1:16 - let _3: (); // in scope 0 at $DIR/simple.rs:+2:5: +2:19 - let mut _4: for<'a> fn(&'a mut [u8; 1024]); // in scope 0 at $DIR/simple.rs:+2:5: +2:9 - let mut _5: &mut [u8; 1024]; // in scope 0 at $DIR/simple.rs:+2:10: +2:18 - let mut _6: &mut [u8; 1024]; // in scope 0 at $DIR/simple.rs:+2:10: +2:18 + debug init => _1; + let mut _0: [u8; 1024]; + let mut _2: [u8; 1024]; + let _3: (); + let mut _4: for<'a> fn(&'a mut [u8; 1024]); + let mut _5: &mut [u8; 1024]; + let mut _6: &mut [u8; 1024]; scope 1 { - debug buf => _2; // in scope 1 at $DIR/simple.rs:+1:9: +1:16 + debug buf => _2; } bb0: { - StorageLive(_2); // scope 0 at $DIR/simple.rs:+1:9: +1:16 - _2 = [const 0_u8; 1024]; // scope 0 at $DIR/simple.rs:+1:19: +1:28 - StorageLive(_3); // scope 1 at $DIR/simple.rs:+2:5: +2:19 -- StorageLive(_4); // scope 1 at $DIR/simple.rs:+2:5: +2:9 -- _4 = _1; // scope 1 at $DIR/simple.rs:+2:5: +2:9 -+ nop; // scope 1 at $DIR/simple.rs:+2:5: +2:9 -+ nop; // scope 1 at $DIR/simple.rs:+2:5: +2:9 - StorageLive(_5); // scope 1 at $DIR/simple.rs:+2:10: +2:18 - StorageLive(_6); // scope 1 at $DIR/simple.rs:+2:10: +2:18 - _6 = &mut _2; // scope 1 at $DIR/simple.rs:+2:10: +2:18 - _5 = &mut (*_6); // scope 1 at $DIR/simple.rs:+2:10: +2:18 -- _3 = move _4(move _5) -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/simple.rs:+2:5: +2:19 -+ _3 = move _1(move _5) -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/simple.rs:+2:5: +2:19 + StorageLive(_2); + _2 = [const 0_u8; 1024]; + StorageLive(_3); +- StorageLive(_4); +- _4 = _1; ++ nop; ++ nop; + StorageLive(_5); + StorageLive(_6); + _6 = &mut _2; + _5 = &mut (*_6); +- _3 = move _4(move _5) -> [return: bb1, unwind unreachable]; ++ _3 = move _1(move _5) -> [return: bb1, unwind unreachable]; } bb1: { - StorageDead(_5); // scope 1 at $DIR/simple.rs:+2:18: +2:19 -- StorageDead(_4); // scope 1 at $DIR/simple.rs:+2:18: +2:19 -+ nop; // scope 1 at $DIR/simple.rs:+2:18: +2:19 - StorageDead(_6); // scope 1 at $DIR/simple.rs:+2:19: +2:20 - StorageDead(_3); // scope 1 at $DIR/simple.rs:+2:19: +2:20 - _0 = _2; // scope 1 at $DIR/simple.rs:+3:5: +3:8 - StorageDead(_2); // scope 0 at $DIR/simple.rs:+4:1: +4:2 - return; // scope 0 at $DIR/simple.rs:+4:2: +4:2 + StorageDead(_5); +- StorageDead(_4); ++ nop; + StorageDead(_6); + StorageDead(_3); + _0 = _2; + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/dest-prop/simple.nrvo.DestinationPropagation.panic-unwind.diff b/tests/mir-opt/dest-prop/simple.nrvo.DestinationPropagation.panic-unwind.diff index c2a3a0025840a..4e32823c1ee91 100644 --- a/tests/mir-opt/dest-prop/simple.nrvo.DestinationPropagation.panic-unwind.diff +++ b/tests/mir-opt/dest-prop/simple.nrvo.DestinationPropagation.panic-unwind.diff @@ -2,42 +2,42 @@ + // MIR for `nrvo` after DestinationPropagation fn nrvo(_1: for<'a> fn(&'a mut [u8; 1024])) -> [u8; 1024] { - debug init => _1; // in scope 0 at $DIR/simple.rs:+0:9: +0:13 - let mut _0: [u8; 1024]; // return place in scope 0 at $DIR/simple.rs:+0:39: +0:49 - let mut _2: [u8; 1024]; // in scope 0 at $DIR/simple.rs:+1:9: +1:16 - let _3: (); // in scope 0 at $DIR/simple.rs:+2:5: +2:19 - let mut _4: for<'a> fn(&'a mut [u8; 1024]); // in scope 0 at $DIR/simple.rs:+2:5: +2:9 - let mut _5: &mut [u8; 1024]; // in scope 0 at $DIR/simple.rs:+2:10: +2:18 - let mut _6: &mut [u8; 1024]; // in scope 0 at $DIR/simple.rs:+2:10: +2:18 + debug init => _1; + let mut _0: [u8; 1024]; + let mut _2: [u8; 1024]; + let _3: (); + let mut _4: for<'a> fn(&'a mut [u8; 1024]); + let mut _5: &mut [u8; 1024]; + let mut _6: &mut [u8; 1024]; scope 1 { - debug buf => _2; // in scope 1 at $DIR/simple.rs:+1:9: +1:16 + debug buf => _2; } bb0: { - StorageLive(_2); // scope 0 at $DIR/simple.rs:+1:9: +1:16 - _2 = [const 0_u8; 1024]; // scope 0 at $DIR/simple.rs:+1:19: +1:28 - StorageLive(_3); // scope 1 at $DIR/simple.rs:+2:5: +2:19 -- StorageLive(_4); // scope 1 at $DIR/simple.rs:+2:5: +2:9 -- _4 = _1; // scope 1 at $DIR/simple.rs:+2:5: +2:9 -+ nop; // scope 1 at $DIR/simple.rs:+2:5: +2:9 -+ nop; // scope 1 at $DIR/simple.rs:+2:5: +2:9 - StorageLive(_5); // scope 1 at $DIR/simple.rs:+2:10: +2:18 - StorageLive(_6); // scope 1 at $DIR/simple.rs:+2:10: +2:18 - _6 = &mut _2; // scope 1 at $DIR/simple.rs:+2:10: +2:18 - _5 = &mut (*_6); // scope 1 at $DIR/simple.rs:+2:10: +2:18 -- _3 = move _4(move _5) -> bb1; // scope 1 at $DIR/simple.rs:+2:5: +2:19 -+ _3 = move _1(move _5) -> bb1; // scope 1 at $DIR/simple.rs:+2:5: +2:19 + StorageLive(_2); + _2 = [const 0_u8; 1024]; + StorageLive(_3); +- StorageLive(_4); +- _4 = _1; ++ nop; ++ nop; + StorageLive(_5); + StorageLive(_6); + _6 = &mut _2; + _5 = &mut (*_6); +- _3 = move _4(move _5) -> bb1; ++ _3 = move _1(move _5) -> bb1; } bb1: { - StorageDead(_5); // scope 1 at $DIR/simple.rs:+2:18: +2:19 -- StorageDead(_4); // scope 1 at $DIR/simple.rs:+2:18: +2:19 -+ nop; // scope 1 at $DIR/simple.rs:+2:18: +2:19 - StorageDead(_6); // scope 1 at $DIR/simple.rs:+2:19: +2:20 - StorageDead(_3); // scope 1 at $DIR/simple.rs:+2:19: +2:20 - _0 = _2; // scope 1 at $DIR/simple.rs:+3:5: +3:8 - StorageDead(_2); // scope 0 at $DIR/simple.rs:+4:1: +4:2 - return; // scope 0 at $DIR/simple.rs:+4:2: +4:2 + StorageDead(_5); +- StorageDead(_4); ++ nop; + StorageDead(_6); + StorageDead(_3); + _0 = _2; + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/dest-prop/union.main.DestinationPropagation.panic-abort.diff b/tests/mir-opt/dest-prop/union.main.DestinationPropagation.panic-abort.diff index 61cdc26dcdc80..459a9c442b3e9 100644 --- a/tests/mir-opt/dest-prop/union.main.DestinationPropagation.panic-abort.diff +++ b/tests/mir-opt/dest-prop/union.main.DestinationPropagation.panic-abort.diff @@ -2,34 +2,31 @@ + // MIR for `main` after DestinationPropagation fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/union.rs:+0:11: +0:11 - let _1: main::Un; // in scope 0 at $DIR/union.rs:+5:9: +5:11 - let mut _2: u32; // in scope 0 at $DIR/union.rs:+5:23: +5:28 - let mut _3: u32; // in scope 0 at $DIR/union.rs:+7:10: +7:26 + let mut _0: (); + let _1: main::Un; + let mut _2: u32; + let mut _3: u32; scope 1 { - debug un => _1; // in scope 1 at $DIR/union.rs:+5:9: +5:11 + debug un => _1; scope 2 { } - scope 3 (inlined std::mem::drop::) { // at $DIR/union.rs:16:5: 16:27 - debug _x => _3; // in scope 3 at $SRC_DIR/core/src/mem/mod.rs:LL:COL + scope 3 (inlined std::mem::drop::) { + debug _x => _3; } } bb0: { - StorageLive(_1); // scope 0 at $DIR/union.rs:+5:9: +5:11 - StorageLive(_2); // scope 0 at $DIR/union.rs:+5:23: +5:28 - _2 = val() -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/union.rs:+5:23: +5:28 - // mir::Constant - // + span: $DIR/union.rs:14:23: 14:26 - // + literal: Const { ty: fn() -> u32 {val}, val: Value() } + StorageLive(_1); + StorageLive(_2); + _2 = val() -> [return: bb1, unwind unreachable]; } bb1: { - StorageDead(_2); // scope 0 at $DIR/union.rs:+5:29: +5:30 - StorageLive(_3); // scope 1 at $DIR/union.rs:+7:10: +7:26 - StorageDead(_3); // scope 1 at $DIR/union.rs:+7:26: +7:27 - StorageDead(_1); // scope 0 at $DIR/union.rs:+8:1: +8:2 - return; // scope 0 at $DIR/union.rs:+8:2: +8:2 + StorageDead(_2); + StorageLive(_3); + StorageDead(_3); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/dest-prop/union.main.DestinationPropagation.panic-unwind.diff b/tests/mir-opt/dest-prop/union.main.DestinationPropagation.panic-unwind.diff index 457fc830874da..8d1297d029963 100644 --- a/tests/mir-opt/dest-prop/union.main.DestinationPropagation.panic-unwind.diff +++ b/tests/mir-opt/dest-prop/union.main.DestinationPropagation.panic-unwind.diff @@ -2,34 +2,31 @@ + // MIR for `main` after DestinationPropagation fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/union.rs:+0:11: +0:11 - let _1: main::Un; // in scope 0 at $DIR/union.rs:+5:9: +5:11 - let mut _2: u32; // in scope 0 at $DIR/union.rs:+5:23: +5:28 - let mut _3: u32; // in scope 0 at $DIR/union.rs:+7:10: +7:26 + let mut _0: (); + let _1: main::Un; + let mut _2: u32; + let mut _3: u32; scope 1 { - debug un => _1; // in scope 1 at $DIR/union.rs:+5:9: +5:11 + debug un => _1; scope 2 { } - scope 3 (inlined std::mem::drop::) { // at $DIR/union.rs:16:5: 16:27 - debug _x => _3; // in scope 3 at $SRC_DIR/core/src/mem/mod.rs:LL:COL + scope 3 (inlined std::mem::drop::) { + debug _x => _3; } } bb0: { - StorageLive(_1); // scope 0 at $DIR/union.rs:+5:9: +5:11 - StorageLive(_2); // scope 0 at $DIR/union.rs:+5:23: +5:28 - _2 = val() -> bb1; // scope 0 at $DIR/union.rs:+5:23: +5:28 - // mir::Constant - // + span: $DIR/union.rs:14:23: 14:26 - // + literal: Const { ty: fn() -> u32 {val}, val: Value() } + StorageLive(_1); + StorageLive(_2); + _2 = val() -> bb1; } bb1: { - StorageDead(_2); // scope 0 at $DIR/union.rs:+5:29: +5:30 - StorageLive(_3); // scope 1 at $DIR/union.rs:+7:10: +7:26 - StorageDead(_3); // scope 1 at $DIR/union.rs:+7:26: +7:27 - StorageDead(_1); // scope 0 at $DIR/union.rs:+8:1: +8:2 - return; // scope 0 at $DIR/union.rs:+8:2: +8:2 + StorageDead(_2); + StorageLive(_3); + StorageDead(_3); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/dest-prop/unreachable.f.DestinationPropagation.panic-abort.diff b/tests/mir-opt/dest-prop/unreachable.f.DestinationPropagation.panic-abort.diff index e8f0b25c59b35..97ca825092e4a 100644 --- a/tests/mir-opt/dest-prop/unreachable.f.DestinationPropagation.panic-abort.diff +++ b/tests/mir-opt/dest-prop/unreachable.f.DestinationPropagation.panic-abort.diff @@ -2,85 +2,79 @@ + // MIR for `f` after DestinationPropagation fn f(_1: T) -> () { - debug a => _1; // in scope 0 at $DIR/unreachable.rs:+0:19: +0:20 - let mut _0: (); // return place in scope 0 at $DIR/unreachable.rs:+0:25: +0:25 - let _2: T; // in scope 0 at $DIR/unreachable.rs:+1:9: +1:10 - let mut _3: bool; // in scope 0 at $DIR/unreachable.rs:+2:8: +2:13 - let _4: (); // in scope 0 at $DIR/unreachable.rs:+3:9: +3:16 - let mut _5: T; // in scope 0 at $DIR/unreachable.rs:+3:11: +3:12 - let mut _6: T; // in scope 0 at $DIR/unreachable.rs:+3:14: +3:15 - let _7: (); // in scope 0 at $DIR/unreachable.rs:+5:9: +5:16 - let mut _8: T; // in scope 0 at $DIR/unreachable.rs:+5:11: +5:12 - let mut _9: T; // in scope 0 at $DIR/unreachable.rs:+5:14: +5:15 + debug a => _1; + let mut _0: (); + let _2: T; + let mut _3: bool; + let _4: (); + let mut _5: T; + let mut _6: T; + let _7: (); + let mut _8: T; + let mut _9: T; scope 1 { -- debug b => _2; // in scope 1 at $DIR/unreachable.rs:+1:9: +1:10 -+ debug b => _1; // in scope 1 at $DIR/unreachable.rs:+1:9: +1:10 +- debug b => _2; ++ debug b => _1; } bb0: { -- StorageLive(_2); // scope 0 at $DIR/unreachable.rs:+1:9: +1:10 -- _2 = _1; // scope 0 at $DIR/unreachable.rs:+1:13: +1:14 -+ nop; // scope 0 at $DIR/unreachable.rs:+1:9: +1:10 -+ nop; // scope 0 at $DIR/unreachable.rs:+1:13: +1:14 - StorageLive(_3); // scope 1 at $DIR/unreachable.rs:+2:8: +2:13 - _3 = const false; // scope 1 at $DIR/unreachable.rs:+2:8: +2:13 -- goto -> bb3; // scope 1 at $DIR/unreachable.rs:+2:8: +2:13 -+ goto -> bb1; // scope 1 at $DIR/unreachable.rs:+2:8: +2:13 +- StorageLive(_2); +- _2 = _1; ++ nop; ++ nop; + StorageLive(_3); + _3 = const false; +- goto -> bb3; ++ goto -> bb1; } bb1: { -- StorageLive(_4); // scope 1 at $DIR/unreachable.rs:+3:9: +3:16 -- StorageLive(_5); // scope 1 at $DIR/unreachable.rs:+3:11: +3:12 -- _5 = _1; // scope 1 at $DIR/unreachable.rs:+3:11: +3:12 -- StorageLive(_6); // scope 1 at $DIR/unreachable.rs:+3:14: +3:15 -- _6 = _2; // scope 1 at $DIR/unreachable.rs:+3:14: +3:15 -- _4 = g::(move _5, move _6) -> [return: bb2, unwind unreachable]; // scope 1 at $DIR/unreachable.rs:+3:9: +3:16 -- // mir::Constant -- // + span: $DIR/unreachable.rs:12:9: 12:10 -- // + literal: Const { ty: fn(T, T) {g::}, val: Value() } +- StorageLive(_4); +- StorageLive(_5); +- _5 = _1; +- StorageLive(_6); +- _6 = _2; +- _4 = g::(move _5, move _6) -> [return: bb2, unwind unreachable]; - } - - bb2: { -- StorageDead(_6); // scope 1 at $DIR/unreachable.rs:+3:15: +3:16 -- StorageDead(_5); // scope 1 at $DIR/unreachable.rs:+3:15: +3:16 -- StorageDead(_4); // scope 1 at $DIR/unreachable.rs:+3:16: +3:17 -- _0 = const (); // scope 1 at $DIR/unreachable.rs:+2:14: +4:6 -- goto -> bb5; // scope 1 at $DIR/unreachable.rs:+2:5: +6:6 +- StorageDead(_6); +- StorageDead(_5); +- StorageDead(_4); +- _0 = const (); +- goto -> bb5; - } - - bb3: { - StorageLive(_7); // scope 1 at $DIR/unreachable.rs:+5:9: +5:16 -- StorageLive(_8); // scope 1 at $DIR/unreachable.rs:+5:11: +5:12 -- _8 = _2; // scope 1 at $DIR/unreachable.rs:+5:11: +5:12 -+ nop; // scope 1 at $DIR/unreachable.rs:+5:11: +5:12 -+ nop; // scope 1 at $DIR/unreachable.rs:+5:11: +5:12 - StorageLive(_9); // scope 1 at $DIR/unreachable.rs:+5:14: +5:15 -- _9 = _2; // scope 1 at $DIR/unreachable.rs:+5:14: +5:15 -- _7 = g::(move _8, move _9) -> [return: bb4, unwind unreachable]; // scope 1 at $DIR/unreachable.rs:+5:9: +5:16 -+ _9 = _1; // scope 1 at $DIR/unreachable.rs:+5:14: +5:15 -+ _7 = g::(move _1, move _9) -> [return: bb2, unwind unreachable]; // scope 1 at $DIR/unreachable.rs:+5:9: +5:16 - // mir::Constant - // + span: $DIR/unreachable.rs:14:9: 14:10 - // + literal: Const { ty: fn(T, T) {g::}, val: Value() } + StorageLive(_7); +- StorageLive(_8); +- _8 = _2; ++ nop; ++ nop; + StorageLive(_9); +- _9 = _2; +- _7 = g::(move _8, move _9) -> [return: bb4, unwind unreachable]; ++ _9 = _1; ++ _7 = g::(move _1, move _9) -> [return: bb2, unwind unreachable]; } - bb4: { + bb2: { - StorageDead(_9); // scope 1 at $DIR/unreachable.rs:+5:15: +5:16 -- StorageDead(_8); // scope 1 at $DIR/unreachable.rs:+5:15: +5:16 -+ nop; // scope 1 at $DIR/unreachable.rs:+5:15: +5:16 - StorageDead(_7); // scope 1 at $DIR/unreachable.rs:+5:16: +5:17 - _0 = const (); // scope 1 at $DIR/unreachable.rs:+4:12: +6:6 -- goto -> bb5; // scope 1 at $DIR/unreachable.rs:+2:5: +6:6 -+ goto -> bb3; // scope 1 at $DIR/unreachable.rs:+2:5: +6:6 + StorageDead(_9); +- StorageDead(_8); ++ nop; + StorageDead(_7); + _0 = const (); +- goto -> bb5; ++ goto -> bb3; } - bb5: { + bb3: { - StorageDead(_3); // scope 1 at $DIR/unreachable.rs:+6:5: +6:6 -- StorageDead(_2); // scope 0 at $DIR/unreachable.rs:+7:1: +7:2 -+ nop; // scope 0 at $DIR/unreachable.rs:+7:1: +7:2 - return; // scope 0 at $DIR/unreachable.rs:+7:2: +7:2 + StorageDead(_3); +- StorageDead(_2); ++ nop; + return; } } diff --git a/tests/mir-opt/dest-prop/unreachable.f.DestinationPropagation.panic-unwind.diff b/tests/mir-opt/dest-prop/unreachable.f.DestinationPropagation.panic-unwind.diff index ae63d724d0a51..e46a318f51ab7 100644 --- a/tests/mir-opt/dest-prop/unreachable.f.DestinationPropagation.panic-unwind.diff +++ b/tests/mir-opt/dest-prop/unreachable.f.DestinationPropagation.panic-unwind.diff @@ -2,85 +2,79 @@ + // MIR for `f` after DestinationPropagation fn f(_1: T) -> () { - debug a => _1; // in scope 0 at $DIR/unreachable.rs:+0:19: +0:20 - let mut _0: (); // return place in scope 0 at $DIR/unreachable.rs:+0:25: +0:25 - let _2: T; // in scope 0 at $DIR/unreachable.rs:+1:9: +1:10 - let mut _3: bool; // in scope 0 at $DIR/unreachable.rs:+2:8: +2:13 - let _4: (); // in scope 0 at $DIR/unreachable.rs:+3:9: +3:16 - let mut _5: T; // in scope 0 at $DIR/unreachable.rs:+3:11: +3:12 - let mut _6: T; // in scope 0 at $DIR/unreachable.rs:+3:14: +3:15 - let _7: (); // in scope 0 at $DIR/unreachable.rs:+5:9: +5:16 - let mut _8: T; // in scope 0 at $DIR/unreachable.rs:+5:11: +5:12 - let mut _9: T; // in scope 0 at $DIR/unreachable.rs:+5:14: +5:15 + debug a => _1; + let mut _0: (); + let _2: T; + let mut _3: bool; + let _4: (); + let mut _5: T; + let mut _6: T; + let _7: (); + let mut _8: T; + let mut _9: T; scope 1 { -- debug b => _2; // in scope 1 at $DIR/unreachable.rs:+1:9: +1:10 -+ debug b => _1; // in scope 1 at $DIR/unreachable.rs:+1:9: +1:10 +- debug b => _2; ++ debug b => _1; } bb0: { -- StorageLive(_2); // scope 0 at $DIR/unreachable.rs:+1:9: +1:10 -- _2 = _1; // scope 0 at $DIR/unreachable.rs:+1:13: +1:14 -+ nop; // scope 0 at $DIR/unreachable.rs:+1:9: +1:10 -+ nop; // scope 0 at $DIR/unreachable.rs:+1:13: +1:14 - StorageLive(_3); // scope 1 at $DIR/unreachable.rs:+2:8: +2:13 - _3 = const false; // scope 1 at $DIR/unreachable.rs:+2:8: +2:13 -- goto -> bb3; // scope 1 at $DIR/unreachable.rs:+2:8: +2:13 -+ goto -> bb1; // scope 1 at $DIR/unreachable.rs:+2:8: +2:13 +- StorageLive(_2); +- _2 = _1; ++ nop; ++ nop; + StorageLive(_3); + _3 = const false; +- goto -> bb3; ++ goto -> bb1; } bb1: { -- StorageLive(_4); // scope 1 at $DIR/unreachable.rs:+3:9: +3:16 -- StorageLive(_5); // scope 1 at $DIR/unreachable.rs:+3:11: +3:12 -- _5 = _1; // scope 1 at $DIR/unreachable.rs:+3:11: +3:12 -- StorageLive(_6); // scope 1 at $DIR/unreachable.rs:+3:14: +3:15 -- _6 = _2; // scope 1 at $DIR/unreachable.rs:+3:14: +3:15 -- _4 = g::(move _5, move _6) -> bb2; // scope 1 at $DIR/unreachable.rs:+3:9: +3:16 -- // mir::Constant -- // + span: $DIR/unreachable.rs:12:9: 12:10 -- // + literal: Const { ty: fn(T, T) {g::}, val: Value() } +- StorageLive(_4); +- StorageLive(_5); +- _5 = _1; +- StorageLive(_6); +- _6 = _2; +- _4 = g::(move _5, move _6) -> bb2; - } - - bb2: { -- StorageDead(_6); // scope 1 at $DIR/unreachable.rs:+3:15: +3:16 -- StorageDead(_5); // scope 1 at $DIR/unreachable.rs:+3:15: +3:16 -- StorageDead(_4); // scope 1 at $DIR/unreachable.rs:+3:16: +3:17 -- _0 = const (); // scope 1 at $DIR/unreachable.rs:+2:14: +4:6 -- goto -> bb5; // scope 1 at $DIR/unreachable.rs:+2:5: +6:6 +- StorageDead(_6); +- StorageDead(_5); +- StorageDead(_4); +- _0 = const (); +- goto -> bb5; - } - - bb3: { - StorageLive(_7); // scope 1 at $DIR/unreachable.rs:+5:9: +5:16 -- StorageLive(_8); // scope 1 at $DIR/unreachable.rs:+5:11: +5:12 -- _8 = _2; // scope 1 at $DIR/unreachable.rs:+5:11: +5:12 -+ nop; // scope 1 at $DIR/unreachable.rs:+5:11: +5:12 -+ nop; // scope 1 at $DIR/unreachable.rs:+5:11: +5:12 - StorageLive(_9); // scope 1 at $DIR/unreachable.rs:+5:14: +5:15 -- _9 = _2; // scope 1 at $DIR/unreachable.rs:+5:14: +5:15 -- _7 = g::(move _8, move _9) -> bb4; // scope 1 at $DIR/unreachable.rs:+5:9: +5:16 -+ _9 = _1; // scope 1 at $DIR/unreachable.rs:+5:14: +5:15 -+ _7 = g::(move _1, move _9) -> bb2; // scope 1 at $DIR/unreachable.rs:+5:9: +5:16 - // mir::Constant - // + span: $DIR/unreachable.rs:14:9: 14:10 - // + literal: Const { ty: fn(T, T) {g::}, val: Value() } + StorageLive(_7); +- StorageLive(_8); +- _8 = _2; ++ nop; ++ nop; + StorageLive(_9); +- _9 = _2; +- _7 = g::(move _8, move _9) -> bb4; ++ _9 = _1; ++ _7 = g::(move _1, move _9) -> bb2; } - bb4: { + bb2: { - StorageDead(_9); // scope 1 at $DIR/unreachable.rs:+5:15: +5:16 -- StorageDead(_8); // scope 1 at $DIR/unreachable.rs:+5:15: +5:16 -+ nop; // scope 1 at $DIR/unreachable.rs:+5:15: +5:16 - StorageDead(_7); // scope 1 at $DIR/unreachable.rs:+5:16: +5:17 - _0 = const (); // scope 1 at $DIR/unreachable.rs:+4:12: +6:6 -- goto -> bb5; // scope 1 at $DIR/unreachable.rs:+2:5: +6:6 -+ goto -> bb3; // scope 1 at $DIR/unreachable.rs:+2:5: +6:6 + StorageDead(_9); +- StorageDead(_8); ++ nop; + StorageDead(_7); + _0 = const (); +- goto -> bb5; ++ goto -> bb3; } - bb5: { + bb3: { - StorageDead(_3); // scope 1 at $DIR/unreachable.rs:+6:5: +6:6 -- StorageDead(_2); // scope 0 at $DIR/unreachable.rs:+7:1: +7:2 -+ nop; // scope 0 at $DIR/unreachable.rs:+7:1: +7:2 - return; // scope 0 at $DIR/unreachable.rs:+7:2: +7:2 + StorageDead(_3); +- StorageDead(_2); ++ nop; + return; } } diff --git a/tests/mir-opt/dont_yeet_assert.generic.InstSimplify.diff b/tests/mir-opt/dont_yeet_assert.generic.InstSimplify.diff index cadf05152a43f..98d9d24af3497 100644 --- a/tests/mir-opt/dont_yeet_assert.generic.InstSimplify.diff +++ b/tests/mir-opt/dont_yeet_assert.generic.InstSimplify.diff @@ -2,22 +2,18 @@ + // MIR for `generic` after InstSimplify fn generic() -> () { - let mut _0: (); // return place in scope 0 at $DIR/dont_yeet_assert.rs:+0:21: +0:21 - let _1: (); // in scope 0 at $DIR/dont_yeet_assert.rs:+1:5: +1:61 + let mut _0: (); + let _1: (); bb0: { - StorageLive(_1); // scope 0 at $DIR/dont_yeet_assert.rs:+1:5: +1:61 - _1 = assert_mem_uninitialized_valid::<&T>() -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/dont_yeet_assert.rs:+1:5: +1:61 - // mir::Constant - // + span: $DIR/dont_yeet_assert.rs:10:5: 10:59 - // + user_ty: UserType(0) - // + literal: Const { ty: extern "rust-intrinsic" fn() {assert_mem_uninitialized_valid::<&T>}, val: Value() } + StorageLive(_1); + _1 = assert_mem_uninitialized_valid::<&T>() -> [return: bb1, unwind unreachable]; } bb1: { - StorageDead(_1); // scope 0 at $DIR/dont_yeet_assert.rs:+1:61: +1:62 - _0 = const (); // scope 0 at $DIR/dont_yeet_assert.rs:+0:21: +2:2 - return; // scope 0 at $DIR/dont_yeet_assert.rs:+2:2: +2:2 + StorageDead(_1); + _0 = const (); + return; } } diff --git a/tests/mir-opt/early_otherwise_branch.opt1.EarlyOtherwiseBranch.diff b/tests/mir-opt/early_otherwise_branch.opt1.EarlyOtherwiseBranch.diff index 5383d1be12982..7a374c5675ab9 100644 --- a/tests/mir-opt/early_otherwise_branch.opt1.EarlyOtherwiseBranch.diff +++ b/tests/mir-opt/early_otherwise_branch.opt1.EarlyOtherwiseBranch.diff @@ -2,75 +2,75 @@ + // MIR for `opt1` after EarlyOtherwiseBranch fn opt1(_1: Option, _2: Option) -> u32 { - debug x => _1; // in scope 0 at $DIR/early_otherwise_branch.rs:+0:9: +0:10 - debug y => _2; // in scope 0 at $DIR/early_otherwise_branch.rs:+0:25: +0:26 - let mut _0: u32; // return place in scope 0 at $DIR/early_otherwise_branch.rs:+0:44: +0:47 - let mut _3: (std::option::Option, std::option::Option); // in scope 0 at $DIR/early_otherwise_branch.rs:+1:11: +1:17 - let mut _4: std::option::Option; // in scope 0 at $DIR/early_otherwise_branch.rs:+1:12: +1:13 - let mut _5: std::option::Option; // in scope 0 at $DIR/early_otherwise_branch.rs:+1:15: +1:16 - let mut _6: isize; // in scope 0 at $DIR/early_otherwise_branch.rs:+2:19: +2:26 - let mut _7: isize; // in scope 0 at $DIR/early_otherwise_branch.rs:+2:10: +2:17 - let _8: u32; // in scope 0 at $DIR/early_otherwise_branch.rs:+2:15: +2:16 - let _9: u32; // in scope 0 at $DIR/early_otherwise_branch.rs:+2:24: +2:25 -+ let mut _10: isize; // in scope 0 at $DIR/early_otherwise_branch.rs:+1:5: +1:17 -+ let mut _11: bool; // in scope 0 at $DIR/early_otherwise_branch.rs:+1:5: +1:17 + debug x => _1; + debug y => _2; + let mut _0: u32; + let mut _3: (std::option::Option, std::option::Option); + let mut _4: std::option::Option; + let mut _5: std::option::Option; + let mut _6: isize; + let mut _7: isize; + let _8: u32; + let _9: u32; ++ let mut _10: isize; ++ let mut _11: bool; scope 1 { - debug a => _8; // in scope 1 at $DIR/early_otherwise_branch.rs:+2:15: +2:16 - debug b => _9; // in scope 1 at $DIR/early_otherwise_branch.rs:+2:24: +2:25 + debug a => _8; + debug b => _9; } bb0: { - StorageLive(_3); // scope 0 at $DIR/early_otherwise_branch.rs:+1:11: +1:17 - StorageLive(_4); // scope 0 at $DIR/early_otherwise_branch.rs:+1:12: +1:13 - _4 = _1; // scope 0 at $DIR/early_otherwise_branch.rs:+1:12: +1:13 - StorageLive(_5); // scope 0 at $DIR/early_otherwise_branch.rs:+1:15: +1:16 - _5 = _2; // scope 0 at $DIR/early_otherwise_branch.rs:+1:15: +1:16 - _3 = (move _4, move _5); // scope 0 at $DIR/early_otherwise_branch.rs:+1:11: +1:17 - StorageDead(_5); // scope 0 at $DIR/early_otherwise_branch.rs:+1:16: +1:17 - StorageDead(_4); // scope 0 at $DIR/early_otherwise_branch.rs:+1:16: +1:17 - _7 = discriminant((_3.0: std::option::Option)); // scope 0 at $DIR/early_otherwise_branch.rs:+1:11: +1:17 -- switchInt(move _7) -> [1: bb2, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch.rs:+1:5: +1:17 -+ StorageLive(_10); // scope 0 at $DIR/early_otherwise_branch.rs:+1:5: +1:17 -+ _10 = discriminant((_3.1: std::option::Option)); // scope 0 at $DIR/early_otherwise_branch.rs:+1:5: +1:17 -+ StorageLive(_11); // scope 0 at $DIR/early_otherwise_branch.rs:+1:5: +1:17 -+ _11 = Ne(_7, move _10); // scope 0 at $DIR/early_otherwise_branch.rs:+1:5: +1:17 -+ StorageDead(_10); // scope 0 at $DIR/early_otherwise_branch.rs:+1:5: +1:17 -+ switchInt(move _11) -> [0: bb4, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch.rs:+1:5: +1:17 + StorageLive(_3); + StorageLive(_4); + _4 = _1; + StorageLive(_5); + _5 = _2; + _3 = (move _4, move _5); + StorageDead(_5); + StorageDead(_4); + _7 = discriminant((_3.0: std::option::Option)); +- switchInt(move _7) -> [1: bb2, otherwise: bb1]; ++ StorageLive(_10); ++ _10 = discriminant((_3.1: std::option::Option)); ++ StorageLive(_11); ++ _11 = Ne(_7, move _10); ++ StorageDead(_10); ++ switchInt(move _11) -> [0: bb4, otherwise: bb1]; } bb1: { -+ StorageDead(_11); // scope 0 at $DIR/early_otherwise_branch.rs:+3:14: +3:15 - _0 = const 1_u32; // scope 0 at $DIR/early_otherwise_branch.rs:+3:14: +3:15 -- goto -> bb4; // scope 0 at $DIR/early_otherwise_branch.rs:+3:14: +3:15 -+ goto -> bb3; // scope 0 at $DIR/early_otherwise_branch.rs:+3:14: +3:15 ++ StorageDead(_11); + _0 = const 1_u32; +- goto -> bb4; ++ goto -> bb3; } bb2: { -- _6 = discriminant((_3.1: std::option::Option)); // scope 0 at $DIR/early_otherwise_branch.rs:+1:11: +1:17 -- switchInt(move _6) -> [1: bb3, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch.rs:+1:5: +1:17 +- _6 = discriminant((_3.1: std::option::Option)); +- switchInt(move _6) -> [1: bb3, otherwise: bb1]; - } - - bb3: { - StorageLive(_8); // scope 0 at $DIR/early_otherwise_branch.rs:+2:15: +2:16 - _8 = (((_3.0: std::option::Option) as Some).0: u32); // scope 0 at $DIR/early_otherwise_branch.rs:+2:15: +2:16 - StorageLive(_9); // scope 0 at $DIR/early_otherwise_branch.rs:+2:24: +2:25 - _9 = (((_3.1: std::option::Option) as Some).0: u32); // scope 0 at $DIR/early_otherwise_branch.rs:+2:24: +2:25 - _0 = const 0_u32; // scope 1 at $DIR/early_otherwise_branch.rs:+2:31: +2:32 - StorageDead(_9); // scope 0 at $DIR/early_otherwise_branch.rs:+2:31: +2:32 - StorageDead(_8); // scope 0 at $DIR/early_otherwise_branch.rs:+2:31: +2:32 -- goto -> bb4; // scope 0 at $DIR/early_otherwise_branch.rs:+2:31: +2:32 -+ goto -> bb3; // scope 0 at $DIR/early_otherwise_branch.rs:+2:31: +2:32 + StorageLive(_8); + _8 = (((_3.0: std::option::Option) as Some).0: u32); + StorageLive(_9); + _9 = (((_3.1: std::option::Option) as Some).0: u32); + _0 = const 0_u32; + StorageDead(_9); + StorageDead(_8); +- goto -> bb4; ++ goto -> bb3; } - bb4: { + bb3: { - StorageDead(_3); // scope 0 at $DIR/early_otherwise_branch.rs:+5:1: +5:2 - return; // scope 0 at $DIR/early_otherwise_branch.rs:+5:2: +5:2 + StorageDead(_3); + return; + } + + bb4: { -+ StorageDead(_11); // scope 0 at $DIR/early_otherwise_branch.rs:+1:5: +1:17 -+ switchInt(_7) -> [1: bb2, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch.rs:+1:5: +1:17 ++ StorageDead(_11); ++ switchInt(_7) -> [1: bb2, otherwise: bb1]; } } diff --git a/tests/mir-opt/early_otherwise_branch.opt2.EarlyOtherwiseBranch.diff b/tests/mir-opt/early_otherwise_branch.opt2.EarlyOtherwiseBranch.diff index b3e21ff49bdf3..21f58a14a2b3f 100644 --- a/tests/mir-opt/early_otherwise_branch.opt2.EarlyOtherwiseBranch.diff +++ b/tests/mir-opt/early_otherwise_branch.opt2.EarlyOtherwiseBranch.diff @@ -2,89 +2,89 @@ + // MIR for `opt2` after EarlyOtherwiseBranch fn opt2(_1: Option, _2: Option) -> u32 { - debug x => _1; // in scope 0 at $DIR/early_otherwise_branch.rs:+0:9: +0:10 - debug y => _2; // in scope 0 at $DIR/early_otherwise_branch.rs:+0:25: +0:26 - let mut _0: u32; // return place in scope 0 at $DIR/early_otherwise_branch.rs:+0:44: +0:47 - let mut _3: (std::option::Option, std::option::Option); // in scope 0 at $DIR/early_otherwise_branch.rs:+1:11: +1:17 - let mut _4: std::option::Option; // in scope 0 at $DIR/early_otherwise_branch.rs:+1:12: +1:13 - let mut _5: std::option::Option; // in scope 0 at $DIR/early_otherwise_branch.rs:+1:15: +1:16 - let mut _6: isize; // in scope 0 at $DIR/early_otherwise_branch.rs:+3:16: +3:20 - let mut _7: isize; // in scope 0 at $DIR/early_otherwise_branch.rs:+2:19: +2:26 - let mut _8: isize; // in scope 0 at $DIR/early_otherwise_branch.rs:+2:10: +2:17 - let _9: u32; // in scope 0 at $DIR/early_otherwise_branch.rs:+2:15: +2:16 - let _10: u32; // in scope 0 at $DIR/early_otherwise_branch.rs:+2:24: +2:25 -+ let mut _11: isize; // in scope 0 at $DIR/early_otherwise_branch.rs:+1:5: +1:17 -+ let mut _12: bool; // in scope 0 at $DIR/early_otherwise_branch.rs:+1:5: +1:17 + debug x => _1; + debug y => _2; + let mut _0: u32; + let mut _3: (std::option::Option, std::option::Option); + let mut _4: std::option::Option; + let mut _5: std::option::Option; + let mut _6: isize; + let mut _7: isize; + let mut _8: isize; + let _9: u32; + let _10: u32; ++ let mut _11: isize; ++ let mut _12: bool; scope 1 { - debug a => _9; // in scope 1 at $DIR/early_otherwise_branch.rs:+2:15: +2:16 - debug b => _10; // in scope 1 at $DIR/early_otherwise_branch.rs:+2:24: +2:25 + debug a => _9; + debug b => _10; } bb0: { - StorageLive(_3); // scope 0 at $DIR/early_otherwise_branch.rs:+1:11: +1:17 - StorageLive(_4); // scope 0 at $DIR/early_otherwise_branch.rs:+1:12: +1:13 - _4 = _1; // scope 0 at $DIR/early_otherwise_branch.rs:+1:12: +1:13 - StorageLive(_5); // scope 0 at $DIR/early_otherwise_branch.rs:+1:15: +1:16 - _5 = _2; // scope 0 at $DIR/early_otherwise_branch.rs:+1:15: +1:16 - _3 = (move _4, move _5); // scope 0 at $DIR/early_otherwise_branch.rs:+1:11: +1:17 - StorageDead(_5); // scope 0 at $DIR/early_otherwise_branch.rs:+1:16: +1:17 - StorageDead(_4); // scope 0 at $DIR/early_otherwise_branch.rs:+1:16: +1:17 - _8 = discriminant((_3.0: std::option::Option)); // scope 0 at $DIR/early_otherwise_branch.rs:+1:11: +1:17 -- switchInt(move _8) -> [0: bb1, 1: bb3, otherwise: bb2]; // scope 0 at $DIR/early_otherwise_branch.rs:+1:5: +1:17 -+ StorageLive(_11); // scope 0 at $DIR/early_otherwise_branch.rs:+1:5: +1:17 -+ _11 = discriminant((_3.1: std::option::Option)); // scope 0 at $DIR/early_otherwise_branch.rs:+1:5: +1:17 -+ StorageLive(_12); // scope 0 at $DIR/early_otherwise_branch.rs:+1:5: +1:17 -+ _12 = Ne(_8, move _11); // scope 0 at $DIR/early_otherwise_branch.rs:+1:5: +1:17 -+ StorageDead(_11); // scope 0 at $DIR/early_otherwise_branch.rs:+1:5: +1:17 -+ switchInt(move _12) -> [0: bb5, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch.rs:+1:5: +1:17 + StorageLive(_3); + StorageLive(_4); + _4 = _1; + StorageLive(_5); + _5 = _2; + _3 = (move _4, move _5); + StorageDead(_5); + StorageDead(_4); + _8 = discriminant((_3.0: std::option::Option)); +- switchInt(move _8) -> [0: bb1, 1: bb3, otherwise: bb2]; ++ StorageLive(_11); ++ _11 = discriminant((_3.1: std::option::Option)); ++ StorageLive(_12); ++ _12 = Ne(_8, move _11); ++ StorageDead(_11); ++ switchInt(move _12) -> [0: bb5, otherwise: bb1]; } bb1: { -- _6 = discriminant((_3.1: std::option::Option)); // scope 0 at $DIR/early_otherwise_branch.rs:+1:11: +1:17 -- switchInt(move _6) -> [0: bb5, otherwise: bb2]; // scope 0 at $DIR/early_otherwise_branch.rs:+1:5: +1:17 +- _6 = discriminant((_3.1: std::option::Option)); +- switchInt(move _6) -> [0: bb5, otherwise: bb2]; - } - - bb2: { -+ StorageDead(_12); // scope 0 at $DIR/early_otherwise_branch.rs:+4:14: +4:15 - _0 = const 1_u32; // scope 0 at $DIR/early_otherwise_branch.rs:+4:14: +4:15 -- goto -> bb6; // scope 0 at $DIR/early_otherwise_branch.rs:+4:14: +4:15 -+ goto -> bb4; // scope 0 at $DIR/early_otherwise_branch.rs:+4:14: +4:15 ++ StorageDead(_12); + _0 = const 1_u32; +- goto -> bb6; ++ goto -> bb4; } - bb3: { -- _7 = discriminant((_3.1: std::option::Option)); // scope 0 at $DIR/early_otherwise_branch.rs:+1:11: +1:17 -- switchInt(move _7) -> [1: bb4, otherwise: bb2]; // scope 0 at $DIR/early_otherwise_branch.rs:+1:5: +1:17 +- _7 = discriminant((_3.1: std::option::Option)); +- switchInt(move _7) -> [1: bb4, otherwise: bb2]; - } - - bb4: { + bb2: { - StorageLive(_9); // scope 0 at $DIR/early_otherwise_branch.rs:+2:15: +2:16 - _9 = (((_3.0: std::option::Option) as Some).0: u32); // scope 0 at $DIR/early_otherwise_branch.rs:+2:15: +2:16 - StorageLive(_10); // scope 0 at $DIR/early_otherwise_branch.rs:+2:24: +2:25 - _10 = (((_3.1: std::option::Option) as Some).0: u32); // scope 0 at $DIR/early_otherwise_branch.rs:+2:24: +2:25 - _0 = const 0_u32; // scope 1 at $DIR/early_otherwise_branch.rs:+2:31: +2:32 - StorageDead(_10); // scope 0 at $DIR/early_otherwise_branch.rs:+2:31: +2:32 - StorageDead(_9); // scope 0 at $DIR/early_otherwise_branch.rs:+2:31: +2:32 -- goto -> bb6; // scope 0 at $DIR/early_otherwise_branch.rs:+2:31: +2:32 -+ goto -> bb4; // scope 0 at $DIR/early_otherwise_branch.rs:+2:31: +2:32 + StorageLive(_9); + _9 = (((_3.0: std::option::Option) as Some).0: u32); + StorageLive(_10); + _10 = (((_3.1: std::option::Option) as Some).0: u32); + _0 = const 0_u32; + StorageDead(_10); + StorageDead(_9); +- goto -> bb6; ++ goto -> bb4; } - bb5: { + bb3: { - _0 = const 0_u32; // scope 0 at $DIR/early_otherwise_branch.rs:+3:25: +3:26 -- goto -> bb6; // scope 0 at $DIR/early_otherwise_branch.rs:+3:25: +3:26 -+ goto -> bb4; // scope 0 at $DIR/early_otherwise_branch.rs:+3:25: +3:26 + _0 = const 0_u32; +- goto -> bb6; ++ goto -> bb4; } - bb6: { + bb4: { - StorageDead(_3); // scope 0 at $DIR/early_otherwise_branch.rs:+6:1: +6:2 - return; // scope 0 at $DIR/early_otherwise_branch.rs:+6:2: +6:2 + StorageDead(_3); + return; + } + + bb5: { -+ StorageDead(_12); // scope 0 at $DIR/early_otherwise_branch.rs:+1:5: +1:17 -+ switchInt(_8) -> [0: bb3, 1: bb2, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch.rs:+1:5: +1:17 ++ StorageDead(_12); ++ switchInt(_8) -> [0: bb3, 1: bb2, otherwise: bb1]; } } diff --git a/tests/mir-opt/early_otherwise_branch.opt3.EarlyOtherwiseBranch.diff b/tests/mir-opt/early_otherwise_branch.opt3.EarlyOtherwiseBranch.diff index e098a88eb5578..e058c409cb596 100644 --- a/tests/mir-opt/early_otherwise_branch.opt3.EarlyOtherwiseBranch.diff +++ b/tests/mir-opt/early_otherwise_branch.opt3.EarlyOtherwiseBranch.diff @@ -2,75 +2,75 @@ + // MIR for `opt3` after EarlyOtherwiseBranch fn opt3(_1: Option, _2: Option) -> u32 { - debug x => _1; // in scope 0 at $DIR/early_otherwise_branch.rs:+0:9: +0:10 - debug y => _2; // in scope 0 at $DIR/early_otherwise_branch.rs:+0:25: +0:26 - let mut _0: u32; // return place in scope 0 at $DIR/early_otherwise_branch.rs:+0:45: +0:48 - let mut _3: (std::option::Option, std::option::Option); // in scope 0 at $DIR/early_otherwise_branch.rs:+1:11: +1:17 - let mut _4: std::option::Option; // in scope 0 at $DIR/early_otherwise_branch.rs:+1:12: +1:13 - let mut _5: std::option::Option; // in scope 0 at $DIR/early_otherwise_branch.rs:+1:15: +1:16 - let mut _6: isize; // in scope 0 at $DIR/early_otherwise_branch.rs:+2:19: +2:26 - let mut _7: isize; // in scope 0 at $DIR/early_otherwise_branch.rs:+2:10: +2:17 - let _8: u32; // in scope 0 at $DIR/early_otherwise_branch.rs:+2:15: +2:16 - let _9: bool; // in scope 0 at $DIR/early_otherwise_branch.rs:+2:24: +2:25 -+ let mut _10: isize; // in scope 0 at $DIR/early_otherwise_branch.rs:+1:5: +1:17 -+ let mut _11: bool; // in scope 0 at $DIR/early_otherwise_branch.rs:+1:5: +1:17 + debug x => _1; + debug y => _2; + let mut _0: u32; + let mut _3: (std::option::Option, std::option::Option); + let mut _4: std::option::Option; + let mut _5: std::option::Option; + let mut _6: isize; + let mut _7: isize; + let _8: u32; + let _9: bool; ++ let mut _10: isize; ++ let mut _11: bool; scope 1 { - debug a => _8; // in scope 1 at $DIR/early_otherwise_branch.rs:+2:15: +2:16 - debug b => _9; // in scope 1 at $DIR/early_otherwise_branch.rs:+2:24: +2:25 + debug a => _8; + debug b => _9; } bb0: { - StorageLive(_3); // scope 0 at $DIR/early_otherwise_branch.rs:+1:11: +1:17 - StorageLive(_4); // scope 0 at $DIR/early_otherwise_branch.rs:+1:12: +1:13 - _4 = _1; // scope 0 at $DIR/early_otherwise_branch.rs:+1:12: +1:13 - StorageLive(_5); // scope 0 at $DIR/early_otherwise_branch.rs:+1:15: +1:16 - _5 = _2; // scope 0 at $DIR/early_otherwise_branch.rs:+1:15: +1:16 - _3 = (move _4, move _5); // scope 0 at $DIR/early_otherwise_branch.rs:+1:11: +1:17 - StorageDead(_5); // scope 0 at $DIR/early_otherwise_branch.rs:+1:16: +1:17 - StorageDead(_4); // scope 0 at $DIR/early_otherwise_branch.rs:+1:16: +1:17 - _7 = discriminant((_3.0: std::option::Option)); // scope 0 at $DIR/early_otherwise_branch.rs:+1:11: +1:17 -- switchInt(move _7) -> [1: bb2, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch.rs:+1:5: +1:17 -+ StorageLive(_10); // scope 0 at $DIR/early_otherwise_branch.rs:+1:5: +1:17 -+ _10 = discriminant((_3.1: std::option::Option)); // scope 0 at $DIR/early_otherwise_branch.rs:+1:5: +1:17 -+ StorageLive(_11); // scope 0 at $DIR/early_otherwise_branch.rs:+1:5: +1:17 -+ _11 = Ne(_7, move _10); // scope 0 at $DIR/early_otherwise_branch.rs:+1:5: +1:17 -+ StorageDead(_10); // scope 0 at $DIR/early_otherwise_branch.rs:+1:5: +1:17 -+ switchInt(move _11) -> [0: bb4, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch.rs:+1:5: +1:17 + StorageLive(_3); + StorageLive(_4); + _4 = _1; + StorageLive(_5); + _5 = _2; + _3 = (move _4, move _5); + StorageDead(_5); + StorageDead(_4); + _7 = discriminant((_3.0: std::option::Option)); +- switchInt(move _7) -> [1: bb2, otherwise: bb1]; ++ StorageLive(_10); ++ _10 = discriminant((_3.1: std::option::Option)); ++ StorageLive(_11); ++ _11 = Ne(_7, move _10); ++ StorageDead(_10); ++ switchInt(move _11) -> [0: bb4, otherwise: bb1]; } bb1: { -+ StorageDead(_11); // scope 0 at $DIR/early_otherwise_branch.rs:+3:14: +3:15 - _0 = const 1_u32; // scope 0 at $DIR/early_otherwise_branch.rs:+3:14: +3:15 -- goto -> bb4; // scope 0 at $DIR/early_otherwise_branch.rs:+3:14: +3:15 -+ goto -> bb3; // scope 0 at $DIR/early_otherwise_branch.rs:+3:14: +3:15 ++ StorageDead(_11); + _0 = const 1_u32; +- goto -> bb4; ++ goto -> bb3; } bb2: { -- _6 = discriminant((_3.1: std::option::Option)); // scope 0 at $DIR/early_otherwise_branch.rs:+1:11: +1:17 -- switchInt(move _6) -> [1: bb3, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch.rs:+1:5: +1:17 +- _6 = discriminant((_3.1: std::option::Option)); +- switchInt(move _6) -> [1: bb3, otherwise: bb1]; - } - - bb3: { - StorageLive(_8); // scope 0 at $DIR/early_otherwise_branch.rs:+2:15: +2:16 - _8 = (((_3.0: std::option::Option) as Some).0: u32); // scope 0 at $DIR/early_otherwise_branch.rs:+2:15: +2:16 - StorageLive(_9); // scope 0 at $DIR/early_otherwise_branch.rs:+2:24: +2:25 - _9 = (((_3.1: std::option::Option) as Some).0: bool); // scope 0 at $DIR/early_otherwise_branch.rs:+2:24: +2:25 - _0 = const 0_u32; // scope 1 at $DIR/early_otherwise_branch.rs:+2:31: +2:32 - StorageDead(_9); // scope 0 at $DIR/early_otherwise_branch.rs:+2:31: +2:32 - StorageDead(_8); // scope 0 at $DIR/early_otherwise_branch.rs:+2:31: +2:32 -- goto -> bb4; // scope 0 at $DIR/early_otherwise_branch.rs:+2:31: +2:32 -+ goto -> bb3; // scope 0 at $DIR/early_otherwise_branch.rs:+2:31: +2:32 + StorageLive(_8); + _8 = (((_3.0: std::option::Option) as Some).0: u32); + StorageLive(_9); + _9 = (((_3.1: std::option::Option) as Some).0: bool); + _0 = const 0_u32; + StorageDead(_9); + StorageDead(_8); +- goto -> bb4; ++ goto -> bb3; } - bb4: { + bb3: { - StorageDead(_3); // scope 0 at $DIR/early_otherwise_branch.rs:+5:1: +5:2 - return; // scope 0 at $DIR/early_otherwise_branch.rs:+5:2: +5:2 + StorageDead(_3); + return; + } + + bb4: { -+ StorageDead(_11); // scope 0 at $DIR/early_otherwise_branch.rs:+1:5: +1:17 -+ switchInt(_7) -> [1: bb2, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch.rs:+1:5: +1:17 ++ StorageDead(_11); ++ switchInt(_7) -> [1: bb2, otherwise: bb1]; } } diff --git a/tests/mir-opt/early_otherwise_branch_3_element_tuple.opt1.EarlyOtherwiseBranch.diff b/tests/mir-opt/early_otherwise_branch_3_element_tuple.opt1.EarlyOtherwiseBranch.diff index ec3b4bbdff42f..f98d68e6ffce3 100644 --- a/tests/mir-opt/early_otherwise_branch_3_element_tuple.opt1.EarlyOtherwiseBranch.diff +++ b/tests/mir-opt/early_otherwise_branch_3_element_tuple.opt1.EarlyOtherwiseBranch.diff @@ -2,96 +2,96 @@ + // MIR for `opt1` after EarlyOtherwiseBranch fn opt1(_1: Option, _2: Option, _3: Option) -> u32 { - debug x => _1; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+0:9: +0:10 - debug y => _2; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+0:25: +0:26 - debug z => _3; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+0:41: +0:42 - let mut _0: u32; // return place in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+0:60: +0:63 - let mut _4: (std::option::Option, std::option::Option, std::option::Option); // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+1:11: +1:20 - let mut _5: std::option::Option; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+1:12: +1:13 - let mut _6: std::option::Option; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+1:15: +1:16 - let mut _7: std::option::Option; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+1:18: +1:19 - let mut _8: isize; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+2:28: +2:35 - let mut _9: isize; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+2:19: +2:26 - let mut _10: isize; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+2:10: +2:17 - let _11: u32; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+2:15: +2:16 - let _12: u32; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+2:24: +2:25 - let _13: u32; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+2:33: +2:34 -+ let mut _14: isize; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+1:5: +1:20 -+ let mut _15: bool; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+1:5: +1:20 -+ let mut _16: isize; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+1:5: +1:20 -+ let mut _17: bool; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+1:5: +1:20 + debug x => _1; + debug y => _2; + debug z => _3; + let mut _0: u32; + let mut _4: (std::option::Option, std::option::Option, std::option::Option); + let mut _5: std::option::Option; + let mut _6: std::option::Option; + let mut _7: std::option::Option; + let mut _8: isize; + let mut _9: isize; + let mut _10: isize; + let _11: u32; + let _12: u32; + let _13: u32; ++ let mut _14: isize; ++ let mut _15: bool; ++ let mut _16: isize; ++ let mut _17: bool; scope 1 { - debug a => _11; // in scope 1 at $DIR/early_otherwise_branch_3_element_tuple.rs:+2:15: +2:16 - debug b => _12; // in scope 1 at $DIR/early_otherwise_branch_3_element_tuple.rs:+2:24: +2:25 - debug c => _13; // in scope 1 at $DIR/early_otherwise_branch_3_element_tuple.rs:+2:33: +2:34 + debug a => _11; + debug b => _12; + debug c => _13; } bb0: { - StorageLive(_4); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+1:11: +1:20 - StorageLive(_5); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+1:12: +1:13 - _5 = _1; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+1:12: +1:13 - StorageLive(_6); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+1:15: +1:16 - _6 = _2; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+1:15: +1:16 - StorageLive(_7); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+1:18: +1:19 - _7 = _3; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+1:18: +1:19 - _4 = (move _5, move _6, move _7); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+1:11: +1:20 - StorageDead(_7); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+1:19: +1:20 - StorageDead(_6); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+1:19: +1:20 - StorageDead(_5); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+1:19: +1:20 - _10 = discriminant((_4.0: std::option::Option)); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+1:11: +1:20 -- switchInt(move _10) -> [1: bb2, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+1:5: +1:20 -+ StorageLive(_14); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+1:5: +1:20 -+ _14 = discriminant((_4.1: std::option::Option)); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+1:5: +1:20 -+ StorageLive(_15); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+1:5: +1:20 -+ _15 = Ne(_10, move _14); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+1:5: +1:20 -+ StorageDead(_14); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+1:5: +1:20 -+ switchInt(move _15) -> [0: bb5, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+1:5: +1:20 + StorageLive(_4); + StorageLive(_5); + _5 = _1; + StorageLive(_6); + _6 = _2; + StorageLive(_7); + _7 = _3; + _4 = (move _5, move _6, move _7); + StorageDead(_7); + StorageDead(_6); + StorageDead(_5); + _10 = discriminant((_4.0: std::option::Option)); +- switchInt(move _10) -> [1: bb2, otherwise: bb1]; ++ StorageLive(_14); ++ _14 = discriminant((_4.1: std::option::Option)); ++ StorageLive(_15); ++ _15 = Ne(_10, move _14); ++ StorageDead(_14); ++ switchInt(move _15) -> [0: bb5, otherwise: bb1]; } bb1: { -+ StorageDead(_17); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+3:14: +3:15 -+ StorageDead(_15); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+3:14: +3:15 - _0 = const 1_u32; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+3:14: +3:15 -- goto -> bb5; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+3:14: +3:15 -+ goto -> bb4; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+3:14: +3:15 ++ StorageDead(_17); ++ StorageDead(_15); + _0 = const 1_u32; +- goto -> bb5; ++ goto -> bb4; } bb2: { -- _9 = discriminant((_4.1: std::option::Option)); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+1:11: +1:20 -- switchInt(move _9) -> [1: bb3, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+1:5: +1:20 +- _9 = discriminant((_4.1: std::option::Option)); +- switchInt(move _9) -> [1: bb3, otherwise: bb1]; - } - - bb3: { - _8 = discriminant((_4.2: std::option::Option)); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+1:11: +1:20 -- switchInt(move _8) -> [1: bb4, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+1:5: +1:20 -+ switchInt(move _8) -> [1: bb3, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+1:5: +1:20 + _8 = discriminant((_4.2: std::option::Option)); +- switchInt(move _8) -> [1: bb4, otherwise: bb1]; ++ switchInt(move _8) -> [1: bb3, otherwise: bb1]; } - bb4: { + bb3: { - StorageLive(_11); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+2:15: +2:16 - _11 = (((_4.0: std::option::Option) as Some).0: u32); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+2:15: +2:16 - StorageLive(_12); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+2:24: +2:25 - _12 = (((_4.1: std::option::Option) as Some).0: u32); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+2:24: +2:25 - StorageLive(_13); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+2:33: +2:34 - _13 = (((_4.2: std::option::Option) as Some).0: u32); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+2:33: +2:34 - _0 = const 0_u32; // scope 1 at $DIR/early_otherwise_branch_3_element_tuple.rs:+2:40: +2:41 - StorageDead(_13); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+2:40: +2:41 - StorageDead(_12); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+2:40: +2:41 - StorageDead(_11); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+2:40: +2:41 -- goto -> bb5; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+2:40: +2:41 -+ goto -> bb4; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+2:40: +2:41 + StorageLive(_11); + _11 = (((_4.0: std::option::Option) as Some).0: u32); + StorageLive(_12); + _12 = (((_4.1: std::option::Option) as Some).0: u32); + StorageLive(_13); + _13 = (((_4.2: std::option::Option) as Some).0: u32); + _0 = const 0_u32; + StorageDead(_13); + StorageDead(_12); + StorageDead(_11); +- goto -> bb5; ++ goto -> bb4; } - bb5: { + bb4: { - StorageDead(_4); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+5:1: +5:2 - return; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+5:2: +5:2 + StorageDead(_4); + return; + } + + bb5: { -+ StorageDead(_15); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+1:5: +1:20 -+ switchInt(_10) -> [1: bb2, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:+1:5: +1:20 ++ StorageDead(_15); ++ switchInt(_10) -> [1: bb2, otherwise: bb1]; } } diff --git a/tests/mir-opt/early_otherwise_branch_68867.try_sum.EarlyOtherwiseBranch.diff b/tests/mir-opt/early_otherwise_branch_68867.try_sum.EarlyOtherwiseBranch.diff index a91d0d7cf730f..0c94794fa3ffe 100644 --- a/tests/mir-opt/early_otherwise_branch_68867.try_sum.EarlyOtherwiseBranch.diff +++ b/tests/mir-opt/early_otherwise_branch_68867.try_sum.EarlyOtherwiseBranch.diff @@ -2,216 +2,216 @@ + // MIR for `try_sum` after EarlyOtherwiseBranch fn try_sum(_1: &ViewportPercentageLength, _2: &ViewportPercentageLength) -> Result { - debug x => _1; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+1:5: +1:6 - debug other => _2; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+2:5: +2:10 - let mut _0: std::result::Result; // return place in scope 0 at $DIR/early_otherwise_branch_68867.rs:+3:6: +3:42 - let mut _3: ViewportPercentageLength; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:8: +11:6 - let mut _4: (&ViewportPercentageLength, &ViewportPercentageLength); // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:14: +5:24 - let mut _5: &ViewportPercentageLength; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:15: +5:16 - let mut _6: &ViewportPercentageLength; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:18: +5:23 - let mut _7: isize; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+6:21: +6:30 - let mut _8: isize; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+7:21: +7:30 - let mut _9: isize; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+8:23: +8:34 - let mut _10: isize; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+9:23: +9:34 - let mut _11: isize; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+6:11: +6:18 - let _12: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+6:14: +6:17 - let _13: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+6:24: +6:29 - let mut _14: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+6:38: +6:49 - let mut _15: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+6:38: +6:41 - let mut _16: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+6:44: +6:49 - let _17: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+7:14: +7:17 - let _18: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+7:24: +7:29 - let mut _19: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+7:38: +7:49 - let mut _20: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+7:38: +7:41 - let mut _21: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+7:44: +7:49 - let _22: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+8:16: +8:19 - let _23: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+8:28: +8:33 - let mut _24: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+8:44: +8:55 - let mut _25: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+8:44: +8:47 - let mut _26: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+8:50: +8:55 - let _27: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+9:16: +9:19 - let _28: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+9:28: +9:33 - let mut _29: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+9:44: +9:55 - let mut _30: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+9:44: +9:47 - let mut _31: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+9:50: +9:55 - let mut _32: !; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+10:14: +10:28 - let mut _33: (); // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+10:25: +10:27 - let mut _34: &ViewportPercentageLength; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:14: +5:24 - let mut _35: &ViewportPercentageLength; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:14: +5:24 - let mut _36: &ViewportPercentageLength; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:14: +5:24 - let mut _37: &ViewportPercentageLength; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:14: +5:24 - let mut _38: &ViewportPercentageLength; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:14: +5:24 - let mut _39: &ViewportPercentageLength; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:14: +5:24 - let mut _40: &ViewportPercentageLength; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:14: +5:24 - let mut _41: &ViewportPercentageLength; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:14: +5:24 - let mut _42: &ViewportPercentageLength; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:14: +5:24 - let mut _43: &ViewportPercentageLength; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:14: +5:24 - let mut _44: &ViewportPercentageLength; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:14: +5:24 - let mut _45: &ViewportPercentageLength; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:14: +5:24 - let mut _46: &ViewportPercentageLength; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:14: +5:24 + debug x => _1; + debug other => _2; + let mut _0: std::result::Result; + let mut _3: ViewportPercentageLength; + let mut _4: (&ViewportPercentageLength, &ViewportPercentageLength); + let mut _5: &ViewportPercentageLength; + let mut _6: &ViewportPercentageLength; + let mut _7: isize; + let mut _8: isize; + let mut _9: isize; + let mut _10: isize; + let mut _11: isize; + let _12: f32; + let _13: f32; + let mut _14: f32; + let mut _15: f32; + let mut _16: f32; + let _17: f32; + let _18: f32; + let mut _19: f32; + let mut _20: f32; + let mut _21: f32; + let _22: f32; + let _23: f32; + let mut _24: f32; + let mut _25: f32; + let mut _26: f32; + let _27: f32; + let _28: f32; + let mut _29: f32; + let mut _30: f32; + let mut _31: f32; + let mut _32: !; + let mut _33: (); + let mut _34: &ViewportPercentageLength; + let mut _35: &ViewportPercentageLength; + let mut _36: &ViewportPercentageLength; + let mut _37: &ViewportPercentageLength; + let mut _38: &ViewportPercentageLength; + let mut _39: &ViewportPercentageLength; + let mut _40: &ViewportPercentageLength; + let mut _41: &ViewportPercentageLength; + let mut _42: &ViewportPercentageLength; + let mut _43: &ViewportPercentageLength; + let mut _44: &ViewportPercentageLength; + let mut _45: &ViewportPercentageLength; + let mut _46: &ViewportPercentageLength; scope 1 { - debug one => _12; // in scope 1 at $DIR/early_otherwise_branch_68867.rs:+6:14: +6:17 - debug other => _13; // in scope 1 at $DIR/early_otherwise_branch_68867.rs:+6:24: +6:29 + debug one => _12; + debug other => _13; } scope 2 { - debug one => _17; // in scope 2 at $DIR/early_otherwise_branch_68867.rs:+7:14: +7:17 - debug other => _18; // in scope 2 at $DIR/early_otherwise_branch_68867.rs:+7:24: +7:29 + debug one => _17; + debug other => _18; } scope 3 { - debug one => _22; // in scope 3 at $DIR/early_otherwise_branch_68867.rs:+8:16: +8:19 - debug other => _23; // in scope 3 at $DIR/early_otherwise_branch_68867.rs:+8:28: +8:33 + debug one => _22; + debug other => _23; } scope 4 { - debug one => _27; // in scope 4 at $DIR/early_otherwise_branch_68867.rs:+9:16: +9:19 - debug other => _28; // in scope 4 at $DIR/early_otherwise_branch_68867.rs:+9:28: +9:33 + debug one => _27; + debug other => _28; } bb0: { - StorageLive(_3); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:8: +11:6 - StorageLive(_4); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:14: +5:24 - StorageLive(_5); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:15: +5:16 - _5 = _1; // scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:15: +5:16 - StorageLive(_6); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:18: +5:23 - _6 = _2; // scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:18: +5:23 - _4 = (move _5, move _6); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:14: +5:24 - StorageDead(_6); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:23: +5:24 - StorageDead(_5); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:23: +5:24 - _34 = deref_copy (_4.0: &ViewportPercentageLength); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:14: +5:24 - _11 = discriminant((*_34)); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:14: +5:24 - switchInt(move _11) -> [0: bb1, 1: bb3, 2: bb4, 3: bb5, otherwise: bb2]; // scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:8: +5:24 + StorageLive(_3); + StorageLive(_4); + StorageLive(_5); + _5 = _1; + StorageLive(_6); + _6 = _2; + _4 = (move _5, move _6); + StorageDead(_6); + StorageDead(_5); + _34 = deref_copy (_4.0: &ViewportPercentageLength); + _11 = discriminant((*_34)); + switchInt(move _11) -> [0: bb1, 1: bb3, 2: bb4, 3: bb5, otherwise: bb2]; } bb1: { - _35 = deref_copy (_4.1: &ViewportPercentageLength); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:14: +5:24 - _7 = discriminant((*_35)); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:14: +5:24 - switchInt(move _7) -> [0: bb6, otherwise: bb2]; // scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:8: +5:24 + _35 = deref_copy (_4.1: &ViewportPercentageLength); + _7 = discriminant((*_35)); + switchInt(move _7) -> [0: bb6, otherwise: bb2]; } bb2: { - StorageLive(_33); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+10:25: +10:27 - _33 = (); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+10:25: +10:27 - _0 = Result::::Err(move _33); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+10:21: +10:28 - StorageDead(_33); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+10:27: +10:28 - StorageDead(_3); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+11:6: +11:7 - StorageDead(_4); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+12:1: +12:2 - goto -> bb11; // scope 0 at $DIR/early_otherwise_branch_68867.rs:+12:2: +12:2 + StorageLive(_33); + _33 = (); + _0 = Result::::Err(move _33); + StorageDead(_33); + StorageDead(_3); + StorageDead(_4); + goto -> bb11; } bb3: { - _36 = deref_copy (_4.1: &ViewportPercentageLength); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:14: +5:24 - _8 = discriminant((*_36)); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:14: +5:24 - switchInt(move _8) -> [1: bb7, otherwise: bb2]; // scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:8: +5:24 + _36 = deref_copy (_4.1: &ViewportPercentageLength); + _8 = discriminant((*_36)); + switchInt(move _8) -> [1: bb7, otherwise: bb2]; } bb4: { - _37 = deref_copy (_4.1: &ViewportPercentageLength); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:14: +5:24 - _9 = discriminant((*_37)); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:14: +5:24 - switchInt(move _9) -> [2: bb8, otherwise: bb2]; // scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:8: +5:24 + _37 = deref_copy (_4.1: &ViewportPercentageLength); + _9 = discriminant((*_37)); + switchInt(move _9) -> [2: bb8, otherwise: bb2]; } bb5: { - _38 = deref_copy (_4.1: &ViewportPercentageLength); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:14: +5:24 - _10 = discriminant((*_38)); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:14: +5:24 - switchInt(move _10) -> [3: bb9, otherwise: bb2]; // scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:8: +5:24 + _38 = deref_copy (_4.1: &ViewportPercentageLength); + _10 = discriminant((*_38)); + switchInt(move _10) -> [3: bb9, otherwise: bb2]; } bb6: { - StorageLive(_12); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+6:14: +6:17 - _39 = deref_copy (_4.0: &ViewportPercentageLength); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+6:14: +6:17 - _12 = (((*_39) as Vw).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+6:14: +6:17 - StorageLive(_13); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+6:24: +6:29 - _40 = deref_copy (_4.1: &ViewportPercentageLength); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+6:24: +6:29 - _13 = (((*_40) as Vw).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+6:24: +6:29 - StorageLive(_14); // scope 1 at $DIR/early_otherwise_branch_68867.rs:+6:38: +6:49 - StorageLive(_15); // scope 1 at $DIR/early_otherwise_branch_68867.rs:+6:38: +6:41 - _15 = _12; // scope 1 at $DIR/early_otherwise_branch_68867.rs:+6:38: +6:41 - StorageLive(_16); // scope 1 at $DIR/early_otherwise_branch_68867.rs:+6:44: +6:49 - _16 = _13; // scope 1 at $DIR/early_otherwise_branch_68867.rs:+6:44: +6:49 - _14 = Add(move _15, move _16); // scope 1 at $DIR/early_otherwise_branch_68867.rs:+6:38: +6:49 - StorageDead(_16); // scope 1 at $DIR/early_otherwise_branch_68867.rs:+6:48: +6:49 - StorageDead(_15); // scope 1 at $DIR/early_otherwise_branch_68867.rs:+6:48: +6:49 - _3 = ViewportPercentageLength::Vw(move _14); // scope 1 at $DIR/early_otherwise_branch_68867.rs:+6:35: +6:50 - StorageDead(_14); // scope 1 at $DIR/early_otherwise_branch_68867.rs:+6:49: +6:50 - StorageDead(_13); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+6:49: +6:50 - StorageDead(_12); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+6:49: +6:50 - goto -> bb10; // scope 0 at $DIR/early_otherwise_branch_68867.rs:+6:49: +6:50 + StorageLive(_12); + _39 = deref_copy (_4.0: &ViewportPercentageLength); + _12 = (((*_39) as Vw).0: f32); + StorageLive(_13); + _40 = deref_copy (_4.1: &ViewportPercentageLength); + _13 = (((*_40) as Vw).0: f32); + StorageLive(_14); + StorageLive(_15); + _15 = _12; + StorageLive(_16); + _16 = _13; + _14 = Add(move _15, move _16); + StorageDead(_16); + StorageDead(_15); + _3 = ViewportPercentageLength::Vw(move _14); + StorageDead(_14); + StorageDead(_13); + StorageDead(_12); + goto -> bb10; } bb7: { - StorageLive(_17); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+7:14: +7:17 - _41 = deref_copy (_4.0: &ViewportPercentageLength); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+7:14: +7:17 - _17 = (((*_41) as Vh).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+7:14: +7:17 - StorageLive(_18); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+7:24: +7:29 - _42 = deref_copy (_4.1: &ViewportPercentageLength); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+7:24: +7:29 - _18 = (((*_42) as Vh).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+7:24: +7:29 - StorageLive(_19); // scope 2 at $DIR/early_otherwise_branch_68867.rs:+7:38: +7:49 - StorageLive(_20); // scope 2 at $DIR/early_otherwise_branch_68867.rs:+7:38: +7:41 - _20 = _17; // scope 2 at $DIR/early_otherwise_branch_68867.rs:+7:38: +7:41 - StorageLive(_21); // scope 2 at $DIR/early_otherwise_branch_68867.rs:+7:44: +7:49 - _21 = _18; // scope 2 at $DIR/early_otherwise_branch_68867.rs:+7:44: +7:49 - _19 = Add(move _20, move _21); // scope 2 at $DIR/early_otherwise_branch_68867.rs:+7:38: +7:49 - StorageDead(_21); // scope 2 at $DIR/early_otherwise_branch_68867.rs:+7:48: +7:49 - StorageDead(_20); // scope 2 at $DIR/early_otherwise_branch_68867.rs:+7:48: +7:49 - _3 = ViewportPercentageLength::Vh(move _19); // scope 2 at $DIR/early_otherwise_branch_68867.rs:+7:35: +7:50 - StorageDead(_19); // scope 2 at $DIR/early_otherwise_branch_68867.rs:+7:49: +7:50 - StorageDead(_18); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+7:49: +7:50 - StorageDead(_17); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+7:49: +7:50 - goto -> bb10; // scope 0 at $DIR/early_otherwise_branch_68867.rs:+7:49: +7:50 + StorageLive(_17); + _41 = deref_copy (_4.0: &ViewportPercentageLength); + _17 = (((*_41) as Vh).0: f32); + StorageLive(_18); + _42 = deref_copy (_4.1: &ViewportPercentageLength); + _18 = (((*_42) as Vh).0: f32); + StorageLive(_19); + StorageLive(_20); + _20 = _17; + StorageLive(_21); + _21 = _18; + _19 = Add(move _20, move _21); + StorageDead(_21); + StorageDead(_20); + _3 = ViewportPercentageLength::Vh(move _19); + StorageDead(_19); + StorageDead(_18); + StorageDead(_17); + goto -> bb10; } bb8: { - StorageLive(_22); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+8:16: +8:19 - _43 = deref_copy (_4.0: &ViewportPercentageLength); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+8:16: +8:19 - _22 = (((*_43) as Vmin).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+8:16: +8:19 - StorageLive(_23); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+8:28: +8:33 - _44 = deref_copy (_4.1: &ViewportPercentageLength); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+8:28: +8:33 - _23 = (((*_44) as Vmin).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+8:28: +8:33 - StorageLive(_24); // scope 3 at $DIR/early_otherwise_branch_68867.rs:+8:44: +8:55 - StorageLive(_25); // scope 3 at $DIR/early_otherwise_branch_68867.rs:+8:44: +8:47 - _25 = _22; // scope 3 at $DIR/early_otherwise_branch_68867.rs:+8:44: +8:47 - StorageLive(_26); // scope 3 at $DIR/early_otherwise_branch_68867.rs:+8:50: +8:55 - _26 = _23; // scope 3 at $DIR/early_otherwise_branch_68867.rs:+8:50: +8:55 - _24 = Add(move _25, move _26); // scope 3 at $DIR/early_otherwise_branch_68867.rs:+8:44: +8:55 - StorageDead(_26); // scope 3 at $DIR/early_otherwise_branch_68867.rs:+8:54: +8:55 - StorageDead(_25); // scope 3 at $DIR/early_otherwise_branch_68867.rs:+8:54: +8:55 - _3 = ViewportPercentageLength::Vmin(move _24); // scope 3 at $DIR/early_otherwise_branch_68867.rs:+8:39: +8:56 - StorageDead(_24); // scope 3 at $DIR/early_otherwise_branch_68867.rs:+8:55: +8:56 - StorageDead(_23); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+8:55: +8:56 - StorageDead(_22); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+8:55: +8:56 - goto -> bb10; // scope 0 at $DIR/early_otherwise_branch_68867.rs:+8:55: +8:56 + StorageLive(_22); + _43 = deref_copy (_4.0: &ViewportPercentageLength); + _22 = (((*_43) as Vmin).0: f32); + StorageLive(_23); + _44 = deref_copy (_4.1: &ViewportPercentageLength); + _23 = (((*_44) as Vmin).0: f32); + StorageLive(_24); + StorageLive(_25); + _25 = _22; + StorageLive(_26); + _26 = _23; + _24 = Add(move _25, move _26); + StorageDead(_26); + StorageDead(_25); + _3 = ViewportPercentageLength::Vmin(move _24); + StorageDead(_24); + StorageDead(_23); + StorageDead(_22); + goto -> bb10; } bb9: { - StorageLive(_27); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+9:16: +9:19 - _45 = deref_copy (_4.0: &ViewportPercentageLength); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+9:16: +9:19 - _27 = (((*_45) as Vmax).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+9:16: +9:19 - StorageLive(_28); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+9:28: +9:33 - _46 = deref_copy (_4.1: &ViewportPercentageLength); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+9:28: +9:33 - _28 = (((*_46) as Vmax).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+9:28: +9:33 - StorageLive(_29); // scope 4 at $DIR/early_otherwise_branch_68867.rs:+9:44: +9:55 - StorageLive(_30); // scope 4 at $DIR/early_otherwise_branch_68867.rs:+9:44: +9:47 - _30 = _27; // scope 4 at $DIR/early_otherwise_branch_68867.rs:+9:44: +9:47 - StorageLive(_31); // scope 4 at $DIR/early_otherwise_branch_68867.rs:+9:50: +9:55 - _31 = _28; // scope 4 at $DIR/early_otherwise_branch_68867.rs:+9:50: +9:55 - _29 = Add(move _30, move _31); // scope 4 at $DIR/early_otherwise_branch_68867.rs:+9:44: +9:55 - StorageDead(_31); // scope 4 at $DIR/early_otherwise_branch_68867.rs:+9:54: +9:55 - StorageDead(_30); // scope 4 at $DIR/early_otherwise_branch_68867.rs:+9:54: +9:55 - _3 = ViewportPercentageLength::Vmax(move _29); // scope 4 at $DIR/early_otherwise_branch_68867.rs:+9:39: +9:56 - StorageDead(_29); // scope 4 at $DIR/early_otherwise_branch_68867.rs:+9:55: +9:56 - StorageDead(_28); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+9:55: +9:56 - StorageDead(_27); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+9:55: +9:56 - goto -> bb10; // scope 0 at $DIR/early_otherwise_branch_68867.rs:+9:55: +9:56 + StorageLive(_27); + _45 = deref_copy (_4.0: &ViewportPercentageLength); + _27 = (((*_45) as Vmax).0: f32); + StorageLive(_28); + _46 = deref_copy (_4.1: &ViewportPercentageLength); + _28 = (((*_46) as Vmax).0: f32); + StorageLive(_29); + StorageLive(_30); + _30 = _27; + StorageLive(_31); + _31 = _28; + _29 = Add(move _30, move _31); + StorageDead(_31); + StorageDead(_30); + _3 = ViewportPercentageLength::Vmax(move _29); + StorageDead(_29); + StorageDead(_28); + StorageDead(_27); + goto -> bb10; } bb10: { - _0 = Result::::Ok(move _3); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:5: +11:7 - StorageDead(_3); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+11:6: +11:7 - StorageDead(_4); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+12:1: +12:2 - goto -> bb11; // scope 0 at $DIR/early_otherwise_branch_68867.rs:+12:2: +12:2 + _0 = Result::::Ok(move _3); + StorageDead(_3); + StorageDead(_4); + goto -> bb11; } bb11: { - return; // scope 0 at $DIR/early_otherwise_branch_68867.rs:+12:2: +12:2 + return; } } diff --git a/tests/mir-opt/early_otherwise_branch_noopt.noopt1.EarlyOtherwiseBranch.diff b/tests/mir-opt/early_otherwise_branch_noopt.noopt1.EarlyOtherwiseBranch.diff index 6468eb5f8dde5..09cdce718572e 100644 --- a/tests/mir-opt/early_otherwise_branch_noopt.noopt1.EarlyOtherwiseBranch.diff +++ b/tests/mir-opt/early_otherwise_branch_noopt.noopt1.EarlyOtherwiseBranch.diff @@ -2,92 +2,92 @@ + // MIR for `noopt1` after EarlyOtherwiseBranch fn noopt1(_1: Option, _2: Option) -> u32 { - debug x => _1; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:+0:11: +0:12 - debug y => _2; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:+0:27: +0:28 - let mut _0: u32; // return place in scope 0 at $DIR/early_otherwise_branch_noopt.rs:+0:46: +0:49 - let mut _3: (std::option::Option, std::option::Option); // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:+1:11: +1:17 - let mut _4: std::option::Option; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:+1:12: +1:13 - let mut _5: std::option::Option; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:+1:15: +1:16 - let mut _6: isize; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:+4:16: +4:23 - let mut _7: isize; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:+2:19: +2:26 - let mut _8: isize; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:+2:10: +2:17 - let _9: u32; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:+2:15: +2:16 - let _10: u32; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:+2:24: +2:25 - let _11: u32; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:+3:15: +3:16 - let _12: u32; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:+4:21: +4:22 + debug x => _1; + debug y => _2; + let mut _0: u32; + let mut _3: (std::option::Option, std::option::Option); + let mut _4: std::option::Option; + let mut _5: std::option::Option; + let mut _6: isize; + let mut _7: isize; + let mut _8: isize; + let _9: u32; + let _10: u32; + let _11: u32; + let _12: u32; scope 1 { - debug a => _9; // in scope 1 at $DIR/early_otherwise_branch_noopt.rs:+2:15: +2:16 - debug b => _10; // in scope 1 at $DIR/early_otherwise_branch_noopt.rs:+2:24: +2:25 + debug a => _9; + debug b => _10; } scope 2 { - debug a => _11; // in scope 2 at $DIR/early_otherwise_branch_noopt.rs:+3:15: +3:16 + debug a => _11; } scope 3 { - debug b => _12; // in scope 3 at $DIR/early_otherwise_branch_noopt.rs:+4:21: +4:22 + debug b => _12; } bb0: { - StorageLive(_3); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:+1:11: +1:17 - StorageLive(_4); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:+1:12: +1:13 - _4 = _1; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:+1:12: +1:13 - StorageLive(_5); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:+1:15: +1:16 - _5 = _2; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:+1:15: +1:16 - _3 = (move _4, move _5); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:+1:11: +1:17 - StorageDead(_5); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:+1:16: +1:17 - StorageDead(_4); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:+1:16: +1:17 - _8 = discriminant((_3.0: std::option::Option)); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:+1:11: +1:17 - switchInt(move _8) -> [0: bb1, 1: bb4, otherwise: bb3]; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:+1:5: +1:17 + StorageLive(_3); + StorageLive(_4); + _4 = _1; + StorageLive(_5); + _5 = _2; + _3 = (move _4, move _5); + StorageDead(_5); + StorageDead(_4); + _8 = discriminant((_3.0: std::option::Option)); + switchInt(move _8) -> [0: bb1, 1: bb4, otherwise: bb3]; } bb1: { - _6 = discriminant((_3.1: std::option::Option)); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:+1:11: +1:17 - switchInt(move _6) -> [0: bb2, 1: bb7, otherwise: bb3]; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:+1:5: +1:17 + _6 = discriminant((_3.1: std::option::Option)); + switchInt(move _6) -> [0: bb2, 1: bb7, otherwise: bb3]; } bb2: { - _0 = const 3_u32; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:+5:25: +5:26 - goto -> bb8; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:+5:25: +5:26 + _0 = const 3_u32; + goto -> bb8; } bb3: { - unreachable; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:+1:11: +1:17 + unreachable; } bb4: { - _7 = discriminant((_3.1: std::option::Option)); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:+1:11: +1:17 - switchInt(move _7) -> [0: bb6, 1: bb5, otherwise: bb3]; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:+1:5: +1:17 + _7 = discriminant((_3.1: std::option::Option)); + switchInt(move _7) -> [0: bb6, 1: bb5, otherwise: bb3]; } bb5: { - StorageLive(_9); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:+2:15: +2:16 - _9 = (((_3.0: std::option::Option) as Some).0: u32); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:+2:15: +2:16 - StorageLive(_10); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:+2:24: +2:25 - _10 = (((_3.1: std::option::Option) as Some).0: u32); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:+2:24: +2:25 - _0 = const 0_u32; // scope 1 at $DIR/early_otherwise_branch_noopt.rs:+2:31: +2:32 - StorageDead(_10); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:+2:31: +2:32 - StorageDead(_9); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:+2:31: +2:32 - goto -> bb8; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:+2:31: +2:32 + StorageLive(_9); + _9 = (((_3.0: std::option::Option) as Some).0: u32); + StorageLive(_10); + _10 = (((_3.1: std::option::Option) as Some).0: u32); + _0 = const 0_u32; + StorageDead(_10); + StorageDead(_9); + goto -> bb8; } bb6: { - StorageLive(_11); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:+3:15: +3:16 - _11 = (((_3.0: std::option::Option) as Some).0: u32); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:+3:15: +3:16 - _0 = const 1_u32; // scope 2 at $DIR/early_otherwise_branch_noopt.rs:+3:28: +3:29 - StorageDead(_11); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:+3:28: +3:29 - goto -> bb8; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:+3:28: +3:29 + StorageLive(_11); + _11 = (((_3.0: std::option::Option) as Some).0: u32); + _0 = const 1_u32; + StorageDead(_11); + goto -> bb8; } bb7: { - StorageLive(_12); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:+4:21: +4:22 - _12 = (((_3.1: std::option::Option) as Some).0: u32); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:+4:21: +4:22 - _0 = const 2_u32; // scope 3 at $DIR/early_otherwise_branch_noopt.rs:+4:28: +4:29 - StorageDead(_12); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:+4:28: +4:29 - goto -> bb8; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:+4:28: +4:29 + StorageLive(_12); + _12 = (((_3.1: std::option::Option) as Some).0: u32); + _0 = const 2_u32; + StorageDead(_12); + goto -> bb8; } bb8: { - StorageDead(_3); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:+7:1: +7:2 - return; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:+7:2: +7:2 + StorageDead(_3); + return; } } diff --git a/tests/mir-opt/early_otherwise_branch_soundness.no_deref_ptr.EarlyOtherwiseBranch.diff b/tests/mir-opt/early_otherwise_branch_soundness.no_deref_ptr.EarlyOtherwiseBranch.diff index a3fa2529b1868..b24ff6ec74bcd 100644 --- a/tests/mir-opt/early_otherwise_branch_soundness.no_deref_ptr.EarlyOtherwiseBranch.diff +++ b/tests/mir-opt/early_otherwise_branch_soundness.no_deref_ptr.EarlyOtherwiseBranch.diff @@ -2,46 +2,46 @@ + // MIR for `no_deref_ptr` after EarlyOtherwiseBranch fn no_deref_ptr(_1: Option, _2: *const Option) -> i32 { - debug a => _1; // in scope 0 at $DIR/early_otherwise_branch_soundness.rs:+0:24: +0:25 - debug b => _2; // in scope 0 at $DIR/early_otherwise_branch_soundness.rs:+0:40: +0:41 - let mut _0: i32; // return place in scope 0 at $DIR/early_otherwise_branch_soundness.rs:+0:66: +0:69 - let mut _3: isize; // in scope 0 at $DIR/early_otherwise_branch_soundness.rs:+3:9: +3:16 - let mut _4: isize; // in scope 0 at $DIR/early_otherwise_branch_soundness.rs:+4:13: +4:20 - let _5: i32; // in scope 0 at $DIR/early_otherwise_branch_soundness.rs:+4:18: +4:19 + debug a => _1; + debug b => _2; + let mut _0: i32; + let mut _3: isize; + let mut _4: isize; + let _5: i32; scope 1 { - debug v => _5; // in scope 1 at $DIR/early_otherwise_branch_soundness.rs:+4:18: +4:19 + debug v => _5; } bb0: { - _3 = discriminant(_1); // scope 0 at $DIR/early_otherwise_branch_soundness.rs:+1:11: +1:12 - switchInt(move _3) -> [1: bb2, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch_soundness.rs:+1:5: +1:12 + _3 = discriminant(_1); + switchInt(move _3) -> [1: bb2, otherwise: bb1]; } bb1: { - _0 = const 0_i32; // scope 0 at $DIR/early_otherwise_branch_soundness.rs:+7:14: +7:15 - goto -> bb5; // scope 0 at $DIR/early_otherwise_branch_soundness.rs:+7:14: +7:15 + _0 = const 0_i32; + goto -> bb5; } bb2: { - _4 = discriminant((*_2)); // scope 0 at $DIR/early_otherwise_branch_soundness.rs:+3:26: +3:28 - switchInt(move _4) -> [1: bb4, otherwise: bb3]; // scope 0 at $DIR/early_otherwise_branch_soundness.rs:+3:20: +3:28 + _4 = discriminant((*_2)); + switchInt(move _4) -> [1: bb4, otherwise: bb3]; } bb3: { - _0 = const 0_i32; // scope 0 at $DIR/early_otherwise_branch_soundness.rs:+5:18: +5:19 - goto -> bb5; // scope 0 at $DIR/early_otherwise_branch_soundness.rs:+5:18: +5:19 + _0 = const 0_i32; + goto -> bb5; } bb4: { - StorageLive(_5); // scope 0 at $DIR/early_otherwise_branch_soundness.rs:+4:18: +4:19 - _5 = (((*_2) as Some).0: i32); // scope 0 at $DIR/early_otherwise_branch_soundness.rs:+4:18: +4:19 - _0 = _5; // scope 1 at $DIR/early_otherwise_branch_soundness.rs:+4:24: +4:25 - StorageDead(_5); // scope 0 at $DIR/early_otherwise_branch_soundness.rs:+4:24: +4:25 - goto -> bb5; // scope 0 at $DIR/early_otherwise_branch_soundness.rs:+4:24: +4:25 + StorageLive(_5); + _5 = (((*_2) as Some).0: i32); + _0 = _5; + StorageDead(_5); + goto -> bb5; } bb5: { - return; // scope 0 at $DIR/early_otherwise_branch_soundness.rs:+9:2: +9:2 + return; } } diff --git a/tests/mir-opt/early_otherwise_branch_soundness.no_downcast.EarlyOtherwiseBranch.diff b/tests/mir-opt/early_otherwise_branch_soundness.no_downcast.EarlyOtherwiseBranch.diff index 6d0224b547f4f..c3ea975ce0333 100644 --- a/tests/mir-opt/early_otherwise_branch_soundness.no_downcast.EarlyOtherwiseBranch.diff +++ b/tests/mir-opt/early_otherwise_branch_soundness.no_downcast.EarlyOtherwiseBranch.diff @@ -2,37 +2,37 @@ + // MIR for `no_downcast` after EarlyOtherwiseBranch fn no_downcast(_1: &E<'_>) -> u32 { - debug e => _1; // in scope 0 at $DIR/early_otherwise_branch_soundness.rs:+0:16: +0:17 - let mut _0: u32; // return place in scope 0 at $DIR/early_otherwise_branch_soundness.rs:+0:26: +0:29 - let mut _2: isize; // in scope 0 at $DIR/early_otherwise_branch_soundness.rs:+1:20: +1:30 - let mut _3: isize; // in scope 0 at $DIR/early_otherwise_branch_soundness.rs:+1:12: +1:31 - let mut _4: &E<'_>; // in scope 0 at $DIR/early_otherwise_branch_soundness.rs:+0:16: +0:17 + debug e => _1; + let mut _0: u32; + let mut _2: isize; + let mut _3: isize; + let mut _4: &E<'_>; scope 1 { } bb0: { - _3 = discriminant((*_1)); // scope 1 at $DIR/early_otherwise_branch_soundness.rs:+1:12: +1:31 - switchInt(move _3) -> [1: bb1, otherwise: bb3]; // scope 1 at $DIR/early_otherwise_branch_soundness.rs:+1:12: +1:31 + _3 = discriminant((*_1)); + switchInt(move _3) -> [1: bb1, otherwise: bb3]; } bb1: { - _4 = deref_copy (((*_1) as Some).0: &E<'_>); // scope 1 at $DIR/early_otherwise_branch_soundness.rs:+1:12: +1:31 - _2 = discriminant((*_4)); // scope 1 at $DIR/early_otherwise_branch_soundness.rs:+1:12: +1:31 - switchInt(move _2) -> [1: bb2, otherwise: bb3]; // scope 1 at $DIR/early_otherwise_branch_soundness.rs:+1:12: +1:31 + _4 = deref_copy (((*_1) as Some).0: &E<'_>); + _2 = discriminant((*_4)); + switchInt(move _2) -> [1: bb2, otherwise: bb3]; } bb2: { - _0 = const 1_u32; // scope 1 at $DIR/early_otherwise_branch_soundness.rs:+1:38: +1:39 - goto -> bb4; // scope 0 at $DIR/early_otherwise_branch_soundness.rs:+1:5: +1:52 + _0 = const 1_u32; + goto -> bb4; } bb3: { - _0 = const 2_u32; // scope 0 at $DIR/early_otherwise_branch_soundness.rs:+1:49: +1:50 - goto -> bb4; // scope 0 at $DIR/early_otherwise_branch_soundness.rs:+1:5: +1:52 + _0 = const 2_u32; + goto -> bb4; } bb4: { - return; // scope 0 at $DIR/early_otherwise_branch_soundness.rs:+2:2: +2:2 + return; } } diff --git a/tests/mir-opt/enum_opt.cand.EnumSizeOpt.32bit.diff b/tests/mir-opt/enum_opt.cand.EnumSizeOpt.32bit.diff index b139deeee1fc9..9d9a7a1e4854b 100644 --- a/tests/mir-opt/enum_opt.cand.EnumSizeOpt.32bit.diff +++ b/tests/mir-opt/enum_opt.cand.EnumSizeOpt.32bit.diff @@ -2,67 +2,67 @@ + // MIR for `cand` after EnumSizeOpt fn cand() -> Candidate { - let mut _0: Candidate; // return place in scope 0 at $DIR/enum_opt.rs:+0:18: +0:27 - let mut _1: Candidate; // in scope 0 at $DIR/enum_opt.rs:+1:7: +1:12 - let mut _2: Candidate; // in scope 0 at $DIR/enum_opt.rs:+2:7: +2:34 - let mut _3: [u8; 8196]; // in scope 0 at $DIR/enum_opt.rs:+2:24: +2:33 -+ let mut _4: [usize; 2]; // in scope 0 at $DIR/enum_opt.rs:+2:3: +2:34 -+ let mut _5: isize; // in scope 0 at $DIR/enum_opt.rs:+2:3: +2:34 -+ let mut _6: usize; // in scope 0 at $DIR/enum_opt.rs:+2:3: +2:34 -+ let mut _7: usize; // in scope 0 at $DIR/enum_opt.rs:+2:3: +2:34 -+ let mut _8: *mut Candidate; // in scope 0 at $DIR/enum_opt.rs:+2:3: +2:34 -+ let mut _9: *mut u8; // in scope 0 at $DIR/enum_opt.rs:+2:3: +2:34 -+ let mut _10: *const Candidate; // in scope 0 at $DIR/enum_opt.rs:+2:3: +2:34 -+ let mut _11: *const u8; // in scope 0 at $DIR/enum_opt.rs:+2:3: +2:34 -+ let mut _12: [usize; 2]; // in scope 0 at $DIR/enum_opt.rs:+3:3: +3:4 -+ let mut _13: isize; // in scope 0 at $DIR/enum_opt.rs:+3:3: +3:4 -+ let mut _14: usize; // in scope 0 at $DIR/enum_opt.rs:+3:3: +3:4 -+ let mut _15: usize; // in scope 0 at $DIR/enum_opt.rs:+3:3: +3:4 -+ let mut _16: *mut Candidate; // in scope 0 at $DIR/enum_opt.rs:+3:3: +3:4 -+ let mut _17: *mut u8; // in scope 0 at $DIR/enum_opt.rs:+3:3: +3:4 -+ let mut _18: *const Candidate; // in scope 0 at $DIR/enum_opt.rs:+3:3: +3:4 -+ let mut _19: *const u8; // in scope 0 at $DIR/enum_opt.rs:+3:3: +3:4 + let mut _0: Candidate; + let mut _1: Candidate; + let mut _2: Candidate; + let mut _3: [u8; 8196]; ++ let mut _4: [usize; 2]; ++ let mut _5: isize; ++ let mut _6: usize; ++ let mut _7: usize; ++ let mut _8: *mut Candidate; ++ let mut _9: *mut u8; ++ let mut _10: *const Candidate; ++ let mut _11: *const u8; ++ let mut _12: [usize; 2]; ++ let mut _13: isize; ++ let mut _14: usize; ++ let mut _15: usize; ++ let mut _16: *mut Candidate; ++ let mut _17: *mut u8; ++ let mut _18: *const Candidate; ++ let mut _19: *const u8; scope 1 { - debug a => _1; // in scope 1 at $DIR/enum_opt.rs:+1:7: +1:12 + debug a => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/enum_opt.rs:+1:7: +1:12 - _1 = Candidate::Small(const 1_u8); // scope 0 at $DIR/enum_opt.rs:+1:15: +1:34 - StorageLive(_2); // scope 1 at $DIR/enum_opt.rs:+2:7: +2:34 - StorageLive(_3); // scope 1 at $DIR/enum_opt.rs:+2:24: +2:33 - _3 = [const 1_u8; 8196]; // scope 1 at $DIR/enum_opt.rs:+2:24: +2:33 - _2 = Candidate::Large(move _3); // scope 1 at $DIR/enum_opt.rs:+2:7: +2:34 - StorageDead(_3); // scope 1 at $DIR/enum_opt.rs:+2:33: +2:34 -- _1 = move _2; // scope 1 at $DIR/enum_opt.rs:+2:3: +2:34 -+ StorageLive(_4); // scope 1 at $DIR/enum_opt.rs:+2:3: +2:34 -+ _4 = const [2_usize, 8197_usize]; // scope 1 at $DIR/enum_opt.rs:+2:3: +2:34 -+ _5 = discriminant(_2); // scope 1 at $DIR/enum_opt.rs:+2:3: +2:34 -+ _6 = _5 as usize (IntToInt); // scope 1 at $DIR/enum_opt.rs:+2:3: +2:34 -+ _7 = _4[_6]; // scope 1 at $DIR/enum_opt.rs:+2:3: +2:34 -+ _8 = &raw mut _1; // scope 1 at $DIR/enum_opt.rs:+2:3: +2:34 -+ _9 = _8 as *mut u8 (PtrToPtr); // scope 1 at $DIR/enum_opt.rs:+2:3: +2:34 -+ _10 = &raw const _2; // scope 1 at $DIR/enum_opt.rs:+2:3: +2:34 -+ _11 = _10 as *const u8 (PtrToPtr); // scope 1 at $DIR/enum_opt.rs:+2:3: +2:34 -+ Deinit(_8); // scope 1 at $DIR/enum_opt.rs:+2:3: +2:34 -+ copy_nonoverlapping(dst = _9, src = _11, count = _7); // scope 1 at $DIR/enum_opt.rs:+2:3: +2:34 -+ StorageDead(_4); // scope 1 at $DIR/enum_opt.rs:+2:3: +2:34 - StorageDead(_2); // scope 1 at $DIR/enum_opt.rs:+2:33: +2:34 -- _0 = move _1; // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ StorageLive(_12); // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ _12 = const [2_usize, 8197_usize]; // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ _13 = discriminant(_1); // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ _14 = _13 as usize (IntToInt); // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ _15 = _12[_14]; // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ _16 = &raw mut _0; // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ _17 = _16 as *mut u8 (PtrToPtr); // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ _18 = &raw const _1; // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ _19 = _18 as *const u8 (PtrToPtr); // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ Deinit(_16); // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ copy_nonoverlapping(dst = _17, src = _19, count = _15); // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ StorageDead(_12); // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 - StorageDead(_1); // scope 0 at $DIR/enum_opt.rs:+4:1: +4:2 - return; // scope 0 at $DIR/enum_opt.rs:+4:2: +4:2 + StorageLive(_1); + _1 = Candidate::Small(const 1_u8); + StorageLive(_2); + StorageLive(_3); + _3 = [const 1_u8; 8196]; + _2 = Candidate::Large(move _3); + StorageDead(_3); +- _1 = move _2; ++ StorageLive(_4); ++ _4 = const [2_usize, 8197_usize]; ++ _5 = discriminant(_2); ++ _6 = _5 as usize (IntToInt); ++ _7 = _4[_6]; ++ _8 = &raw mut _1; ++ _9 = _8 as *mut u8 (PtrToPtr); ++ _10 = &raw const _2; ++ _11 = _10 as *const u8 (PtrToPtr); ++ Deinit(_8); ++ copy_nonoverlapping(dst = _9, src = _11, count = _7); ++ StorageDead(_4); + StorageDead(_2); +- _0 = move _1; ++ StorageLive(_12); ++ _12 = const [2_usize, 8197_usize]; ++ _13 = discriminant(_1); ++ _14 = _13 as usize (IntToInt); ++ _15 = _12[_14]; ++ _16 = &raw mut _0; ++ _17 = _16 as *mut u8 (PtrToPtr); ++ _18 = &raw const _1; ++ _19 = _18 as *const u8 (PtrToPtr); ++ Deinit(_16); ++ copy_nonoverlapping(dst = _17, src = _19, count = _15); ++ StorageDead(_12); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/enum_opt.cand.EnumSizeOpt.64bit.diff b/tests/mir-opt/enum_opt.cand.EnumSizeOpt.64bit.diff index b139deeee1fc9..9d9a7a1e4854b 100644 --- a/tests/mir-opt/enum_opt.cand.EnumSizeOpt.64bit.diff +++ b/tests/mir-opt/enum_opt.cand.EnumSizeOpt.64bit.diff @@ -2,67 +2,67 @@ + // MIR for `cand` after EnumSizeOpt fn cand() -> Candidate { - let mut _0: Candidate; // return place in scope 0 at $DIR/enum_opt.rs:+0:18: +0:27 - let mut _1: Candidate; // in scope 0 at $DIR/enum_opt.rs:+1:7: +1:12 - let mut _2: Candidate; // in scope 0 at $DIR/enum_opt.rs:+2:7: +2:34 - let mut _3: [u8; 8196]; // in scope 0 at $DIR/enum_opt.rs:+2:24: +2:33 -+ let mut _4: [usize; 2]; // in scope 0 at $DIR/enum_opt.rs:+2:3: +2:34 -+ let mut _5: isize; // in scope 0 at $DIR/enum_opt.rs:+2:3: +2:34 -+ let mut _6: usize; // in scope 0 at $DIR/enum_opt.rs:+2:3: +2:34 -+ let mut _7: usize; // in scope 0 at $DIR/enum_opt.rs:+2:3: +2:34 -+ let mut _8: *mut Candidate; // in scope 0 at $DIR/enum_opt.rs:+2:3: +2:34 -+ let mut _9: *mut u8; // in scope 0 at $DIR/enum_opt.rs:+2:3: +2:34 -+ let mut _10: *const Candidate; // in scope 0 at $DIR/enum_opt.rs:+2:3: +2:34 -+ let mut _11: *const u8; // in scope 0 at $DIR/enum_opt.rs:+2:3: +2:34 -+ let mut _12: [usize; 2]; // in scope 0 at $DIR/enum_opt.rs:+3:3: +3:4 -+ let mut _13: isize; // in scope 0 at $DIR/enum_opt.rs:+3:3: +3:4 -+ let mut _14: usize; // in scope 0 at $DIR/enum_opt.rs:+3:3: +3:4 -+ let mut _15: usize; // in scope 0 at $DIR/enum_opt.rs:+3:3: +3:4 -+ let mut _16: *mut Candidate; // in scope 0 at $DIR/enum_opt.rs:+3:3: +3:4 -+ let mut _17: *mut u8; // in scope 0 at $DIR/enum_opt.rs:+3:3: +3:4 -+ let mut _18: *const Candidate; // in scope 0 at $DIR/enum_opt.rs:+3:3: +3:4 -+ let mut _19: *const u8; // in scope 0 at $DIR/enum_opt.rs:+3:3: +3:4 + let mut _0: Candidate; + let mut _1: Candidate; + let mut _2: Candidate; + let mut _3: [u8; 8196]; ++ let mut _4: [usize; 2]; ++ let mut _5: isize; ++ let mut _6: usize; ++ let mut _7: usize; ++ let mut _8: *mut Candidate; ++ let mut _9: *mut u8; ++ let mut _10: *const Candidate; ++ let mut _11: *const u8; ++ let mut _12: [usize; 2]; ++ let mut _13: isize; ++ let mut _14: usize; ++ let mut _15: usize; ++ let mut _16: *mut Candidate; ++ let mut _17: *mut u8; ++ let mut _18: *const Candidate; ++ let mut _19: *const u8; scope 1 { - debug a => _1; // in scope 1 at $DIR/enum_opt.rs:+1:7: +1:12 + debug a => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/enum_opt.rs:+1:7: +1:12 - _1 = Candidate::Small(const 1_u8); // scope 0 at $DIR/enum_opt.rs:+1:15: +1:34 - StorageLive(_2); // scope 1 at $DIR/enum_opt.rs:+2:7: +2:34 - StorageLive(_3); // scope 1 at $DIR/enum_opt.rs:+2:24: +2:33 - _3 = [const 1_u8; 8196]; // scope 1 at $DIR/enum_opt.rs:+2:24: +2:33 - _2 = Candidate::Large(move _3); // scope 1 at $DIR/enum_opt.rs:+2:7: +2:34 - StorageDead(_3); // scope 1 at $DIR/enum_opt.rs:+2:33: +2:34 -- _1 = move _2; // scope 1 at $DIR/enum_opt.rs:+2:3: +2:34 -+ StorageLive(_4); // scope 1 at $DIR/enum_opt.rs:+2:3: +2:34 -+ _4 = const [2_usize, 8197_usize]; // scope 1 at $DIR/enum_opt.rs:+2:3: +2:34 -+ _5 = discriminant(_2); // scope 1 at $DIR/enum_opt.rs:+2:3: +2:34 -+ _6 = _5 as usize (IntToInt); // scope 1 at $DIR/enum_opt.rs:+2:3: +2:34 -+ _7 = _4[_6]; // scope 1 at $DIR/enum_opt.rs:+2:3: +2:34 -+ _8 = &raw mut _1; // scope 1 at $DIR/enum_opt.rs:+2:3: +2:34 -+ _9 = _8 as *mut u8 (PtrToPtr); // scope 1 at $DIR/enum_opt.rs:+2:3: +2:34 -+ _10 = &raw const _2; // scope 1 at $DIR/enum_opt.rs:+2:3: +2:34 -+ _11 = _10 as *const u8 (PtrToPtr); // scope 1 at $DIR/enum_opt.rs:+2:3: +2:34 -+ Deinit(_8); // scope 1 at $DIR/enum_opt.rs:+2:3: +2:34 -+ copy_nonoverlapping(dst = _9, src = _11, count = _7); // scope 1 at $DIR/enum_opt.rs:+2:3: +2:34 -+ StorageDead(_4); // scope 1 at $DIR/enum_opt.rs:+2:3: +2:34 - StorageDead(_2); // scope 1 at $DIR/enum_opt.rs:+2:33: +2:34 -- _0 = move _1; // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ StorageLive(_12); // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ _12 = const [2_usize, 8197_usize]; // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ _13 = discriminant(_1); // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ _14 = _13 as usize (IntToInt); // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ _15 = _12[_14]; // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ _16 = &raw mut _0; // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ _17 = _16 as *mut u8 (PtrToPtr); // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ _18 = &raw const _1; // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ _19 = _18 as *const u8 (PtrToPtr); // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ Deinit(_16); // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ copy_nonoverlapping(dst = _17, src = _19, count = _15); // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ StorageDead(_12); // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 - StorageDead(_1); // scope 0 at $DIR/enum_opt.rs:+4:1: +4:2 - return; // scope 0 at $DIR/enum_opt.rs:+4:2: +4:2 + StorageLive(_1); + _1 = Candidate::Small(const 1_u8); + StorageLive(_2); + StorageLive(_3); + _3 = [const 1_u8; 8196]; + _2 = Candidate::Large(move _3); + StorageDead(_3); +- _1 = move _2; ++ StorageLive(_4); ++ _4 = const [2_usize, 8197_usize]; ++ _5 = discriminant(_2); ++ _6 = _5 as usize (IntToInt); ++ _7 = _4[_6]; ++ _8 = &raw mut _1; ++ _9 = _8 as *mut u8 (PtrToPtr); ++ _10 = &raw const _2; ++ _11 = _10 as *const u8 (PtrToPtr); ++ Deinit(_8); ++ copy_nonoverlapping(dst = _9, src = _11, count = _7); ++ StorageDead(_4); + StorageDead(_2); +- _0 = move _1; ++ StorageLive(_12); ++ _12 = const [2_usize, 8197_usize]; ++ _13 = discriminant(_1); ++ _14 = _13 as usize (IntToInt); ++ _15 = _12[_14]; ++ _16 = &raw mut _0; ++ _17 = _16 as *mut u8 (PtrToPtr); ++ _18 = &raw const _1; ++ _19 = _18 as *const u8 (PtrToPtr); ++ Deinit(_16); ++ copy_nonoverlapping(dst = _17, src = _19, count = _15); ++ StorageDead(_12); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/enum_opt.invalid.EnumSizeOpt.32bit.diff b/tests/mir-opt/enum_opt.invalid.EnumSizeOpt.32bit.diff index a80001149ebb7..b627fd279071f 100644 --- a/tests/mir-opt/enum_opt.invalid.EnumSizeOpt.32bit.diff +++ b/tests/mir-opt/enum_opt.invalid.EnumSizeOpt.32bit.diff @@ -2,27 +2,27 @@ + // MIR for `invalid` after EnumSizeOpt fn invalid() -> InvalidIdxs { - let mut _0: InvalidIdxs; // return place in scope 0 at $DIR/enum_opt.rs:+0:21: +0:32 - let mut _1: InvalidIdxs; // in scope 0 at $DIR/enum_opt.rs:+1:7: +1:12 - let mut _2: InvalidIdxs; // in scope 0 at $DIR/enum_opt.rs:+2:7: +2:36 - let mut _3: [u64; 1024]; // in scope 0 at $DIR/enum_opt.rs:+2:26: +2:35 + let mut _0: InvalidIdxs; + let mut _1: InvalidIdxs; + let mut _2: InvalidIdxs; + let mut _3: [u64; 1024]; scope 1 { - debug a => _1; // in scope 1 at $DIR/enum_opt.rs:+1:7: +1:12 + debug a => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/enum_opt.rs:+1:7: +1:12 - _1 = InvalidIdxs::A; // scope 0 at $DIR/enum_opt.rs:+1:15: +1:29 - StorageLive(_2); // scope 1 at $DIR/enum_opt.rs:+2:7: +2:36 - StorageLive(_3); // scope 1 at $DIR/enum_opt.rs:+2:26: +2:35 - _3 = [const 0_u64; 1024]; // scope 1 at $DIR/enum_opt.rs:+2:26: +2:35 - _2 = InvalidIdxs::Large(move _3); // scope 1 at $DIR/enum_opt.rs:+2:7: +2:36 - StorageDead(_3); // scope 1 at $DIR/enum_opt.rs:+2:35: +2:36 - _1 = move _2; // scope 1 at $DIR/enum_opt.rs:+2:3: +2:36 - StorageDead(_2); // scope 1 at $DIR/enum_opt.rs:+2:35: +2:36 - _0 = move _1; // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 - StorageDead(_1); // scope 0 at $DIR/enum_opt.rs:+4:1: +4:2 - return; // scope 0 at $DIR/enum_opt.rs:+4:2: +4:2 + StorageLive(_1); + _1 = InvalidIdxs::A; + StorageLive(_2); + StorageLive(_3); + _3 = [const 0_u64; 1024]; + _2 = InvalidIdxs::Large(move _3); + StorageDead(_3); + _1 = move _2; + StorageDead(_2); + _0 = move _1; + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/enum_opt.invalid.EnumSizeOpt.64bit.diff b/tests/mir-opt/enum_opt.invalid.EnumSizeOpt.64bit.diff index a80001149ebb7..b627fd279071f 100644 --- a/tests/mir-opt/enum_opt.invalid.EnumSizeOpt.64bit.diff +++ b/tests/mir-opt/enum_opt.invalid.EnumSizeOpt.64bit.diff @@ -2,27 +2,27 @@ + // MIR for `invalid` after EnumSizeOpt fn invalid() -> InvalidIdxs { - let mut _0: InvalidIdxs; // return place in scope 0 at $DIR/enum_opt.rs:+0:21: +0:32 - let mut _1: InvalidIdxs; // in scope 0 at $DIR/enum_opt.rs:+1:7: +1:12 - let mut _2: InvalidIdxs; // in scope 0 at $DIR/enum_opt.rs:+2:7: +2:36 - let mut _3: [u64; 1024]; // in scope 0 at $DIR/enum_opt.rs:+2:26: +2:35 + let mut _0: InvalidIdxs; + let mut _1: InvalidIdxs; + let mut _2: InvalidIdxs; + let mut _3: [u64; 1024]; scope 1 { - debug a => _1; // in scope 1 at $DIR/enum_opt.rs:+1:7: +1:12 + debug a => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/enum_opt.rs:+1:7: +1:12 - _1 = InvalidIdxs::A; // scope 0 at $DIR/enum_opt.rs:+1:15: +1:29 - StorageLive(_2); // scope 1 at $DIR/enum_opt.rs:+2:7: +2:36 - StorageLive(_3); // scope 1 at $DIR/enum_opt.rs:+2:26: +2:35 - _3 = [const 0_u64; 1024]; // scope 1 at $DIR/enum_opt.rs:+2:26: +2:35 - _2 = InvalidIdxs::Large(move _3); // scope 1 at $DIR/enum_opt.rs:+2:7: +2:36 - StorageDead(_3); // scope 1 at $DIR/enum_opt.rs:+2:35: +2:36 - _1 = move _2; // scope 1 at $DIR/enum_opt.rs:+2:3: +2:36 - StorageDead(_2); // scope 1 at $DIR/enum_opt.rs:+2:35: +2:36 - _0 = move _1; // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 - StorageDead(_1); // scope 0 at $DIR/enum_opt.rs:+4:1: +4:2 - return; // scope 0 at $DIR/enum_opt.rs:+4:2: +4:2 + StorageLive(_1); + _1 = InvalidIdxs::A; + StorageLive(_2); + StorageLive(_3); + _3 = [const 0_u64; 1024]; + _2 = InvalidIdxs::Large(move _3); + StorageDead(_3); + _1 = move _2; + StorageDead(_2); + _0 = move _1; + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/enum_opt.trunc.EnumSizeOpt.32bit.diff b/tests/mir-opt/enum_opt.trunc.EnumSizeOpt.32bit.diff index 1ef79044d4fc6..100a73e56f22a 100644 --- a/tests/mir-opt/enum_opt.trunc.EnumSizeOpt.32bit.diff +++ b/tests/mir-opt/enum_opt.trunc.EnumSizeOpt.32bit.diff @@ -2,36 +2,36 @@ + // MIR for `trunc` after EnumSizeOpt fn trunc() -> NotTrunctable { - let mut _0: NotTrunctable; // return place in scope 0 at $DIR/enum_opt.rs:+0:19: +0:32 - let mut _1: NotTrunctable; // in scope 0 at $DIR/enum_opt.rs:+1:7: +1:12 - let mut _2: NotTrunctable; // in scope 0 at $DIR/enum_opt.rs:+2:7: +2:34 - let mut _3: [u8; 1024]; // in scope 0 at $DIR/enum_opt.rs:+2:24: +2:33 - let mut _4: NotTrunctable; // in scope 0 at $DIR/enum_opt.rs:+3:7: +3:34 - let mut _5: [u8; 4096]; // in scope 0 at $DIR/enum_opt.rs:+3:24: +3:33 + let mut _0: NotTrunctable; + let mut _1: NotTrunctable; + let mut _2: NotTrunctable; + let mut _3: [u8; 1024]; + let mut _4: NotTrunctable; + let mut _5: [u8; 4096]; scope 1 { - debug a => _1; // in scope 1 at $DIR/enum_opt.rs:+1:7: +1:12 + debug a => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/enum_opt.rs:+1:7: +1:12 - _1 = NotTrunctable::A; // scope 0 at $DIR/enum_opt.rs:+1:15: +1:31 - StorageLive(_2); // scope 1 at $DIR/enum_opt.rs:+2:7: +2:34 - StorageLive(_3); // scope 1 at $DIR/enum_opt.rs:+2:24: +2:33 - _3 = [const 0_u8; 1024]; // scope 1 at $DIR/enum_opt.rs:+2:24: +2:33 - _2 = NotTrunctable::B(move _3); // scope 1 at $DIR/enum_opt.rs:+2:7: +2:34 - StorageDead(_3); // scope 1 at $DIR/enum_opt.rs:+2:33: +2:34 - _1 = move _2; // scope 1 at $DIR/enum_opt.rs:+2:3: +2:34 - StorageDead(_2); // scope 1 at $DIR/enum_opt.rs:+2:33: +2:34 - StorageLive(_4); // scope 1 at $DIR/enum_opt.rs:+3:7: +3:34 - StorageLive(_5); // scope 1 at $DIR/enum_opt.rs:+3:24: +3:33 - _5 = [const 0_u8; 4096]; // scope 1 at $DIR/enum_opt.rs:+3:24: +3:33 - _4 = NotTrunctable::C(move _5); // scope 1 at $DIR/enum_opt.rs:+3:7: +3:34 - StorageDead(_5); // scope 1 at $DIR/enum_opt.rs:+3:33: +3:34 - _1 = move _4; // scope 1 at $DIR/enum_opt.rs:+3:3: +3:34 - StorageDead(_4); // scope 1 at $DIR/enum_opt.rs:+3:33: +3:34 - _0 = move _1; // scope 1 at $DIR/enum_opt.rs:+4:3: +4:4 - StorageDead(_1); // scope 0 at $DIR/enum_opt.rs:+5:1: +5:2 - return; // scope 0 at $DIR/enum_opt.rs:+5:2: +5:2 + StorageLive(_1); + _1 = NotTrunctable::A; + StorageLive(_2); + StorageLive(_3); + _3 = [const 0_u8; 1024]; + _2 = NotTrunctable::B(move _3); + StorageDead(_3); + _1 = move _2; + StorageDead(_2); + StorageLive(_4); + StorageLive(_5); + _5 = [const 0_u8; 4096]; + _4 = NotTrunctable::C(move _5); + StorageDead(_5); + _1 = move _4; + StorageDead(_4); + _0 = move _1; + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/enum_opt.trunc.EnumSizeOpt.64bit.diff b/tests/mir-opt/enum_opt.trunc.EnumSizeOpt.64bit.diff index 1ef79044d4fc6..100a73e56f22a 100644 --- a/tests/mir-opt/enum_opt.trunc.EnumSizeOpt.64bit.diff +++ b/tests/mir-opt/enum_opt.trunc.EnumSizeOpt.64bit.diff @@ -2,36 +2,36 @@ + // MIR for `trunc` after EnumSizeOpt fn trunc() -> NotTrunctable { - let mut _0: NotTrunctable; // return place in scope 0 at $DIR/enum_opt.rs:+0:19: +0:32 - let mut _1: NotTrunctable; // in scope 0 at $DIR/enum_opt.rs:+1:7: +1:12 - let mut _2: NotTrunctable; // in scope 0 at $DIR/enum_opt.rs:+2:7: +2:34 - let mut _3: [u8; 1024]; // in scope 0 at $DIR/enum_opt.rs:+2:24: +2:33 - let mut _4: NotTrunctable; // in scope 0 at $DIR/enum_opt.rs:+3:7: +3:34 - let mut _5: [u8; 4096]; // in scope 0 at $DIR/enum_opt.rs:+3:24: +3:33 + let mut _0: NotTrunctable; + let mut _1: NotTrunctable; + let mut _2: NotTrunctable; + let mut _3: [u8; 1024]; + let mut _4: NotTrunctable; + let mut _5: [u8; 4096]; scope 1 { - debug a => _1; // in scope 1 at $DIR/enum_opt.rs:+1:7: +1:12 + debug a => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/enum_opt.rs:+1:7: +1:12 - _1 = NotTrunctable::A; // scope 0 at $DIR/enum_opt.rs:+1:15: +1:31 - StorageLive(_2); // scope 1 at $DIR/enum_opt.rs:+2:7: +2:34 - StorageLive(_3); // scope 1 at $DIR/enum_opt.rs:+2:24: +2:33 - _3 = [const 0_u8; 1024]; // scope 1 at $DIR/enum_opt.rs:+2:24: +2:33 - _2 = NotTrunctable::B(move _3); // scope 1 at $DIR/enum_opt.rs:+2:7: +2:34 - StorageDead(_3); // scope 1 at $DIR/enum_opt.rs:+2:33: +2:34 - _1 = move _2; // scope 1 at $DIR/enum_opt.rs:+2:3: +2:34 - StorageDead(_2); // scope 1 at $DIR/enum_opt.rs:+2:33: +2:34 - StorageLive(_4); // scope 1 at $DIR/enum_opt.rs:+3:7: +3:34 - StorageLive(_5); // scope 1 at $DIR/enum_opt.rs:+3:24: +3:33 - _5 = [const 0_u8; 4096]; // scope 1 at $DIR/enum_opt.rs:+3:24: +3:33 - _4 = NotTrunctable::C(move _5); // scope 1 at $DIR/enum_opt.rs:+3:7: +3:34 - StorageDead(_5); // scope 1 at $DIR/enum_opt.rs:+3:33: +3:34 - _1 = move _4; // scope 1 at $DIR/enum_opt.rs:+3:3: +3:34 - StorageDead(_4); // scope 1 at $DIR/enum_opt.rs:+3:33: +3:34 - _0 = move _1; // scope 1 at $DIR/enum_opt.rs:+4:3: +4:4 - StorageDead(_1); // scope 0 at $DIR/enum_opt.rs:+5:1: +5:2 - return; // scope 0 at $DIR/enum_opt.rs:+5:2: +5:2 + StorageLive(_1); + _1 = NotTrunctable::A; + StorageLive(_2); + StorageLive(_3); + _3 = [const 0_u8; 1024]; + _2 = NotTrunctable::B(move _3); + StorageDead(_3); + _1 = move _2; + StorageDead(_2); + StorageLive(_4); + StorageLive(_5); + _5 = [const 0_u8; 4096]; + _4 = NotTrunctable::C(move _5); + StorageDead(_5); + _1 = move _4; + StorageDead(_4); + _0 = move _1; + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/enum_opt.unin.EnumSizeOpt.32bit.diff b/tests/mir-opt/enum_opt.unin.EnumSizeOpt.32bit.diff index ad9f12cf95953..4306f38b82a55 100644 --- a/tests/mir-opt/enum_opt.unin.EnumSizeOpt.32bit.diff +++ b/tests/mir-opt/enum_opt.unin.EnumSizeOpt.32bit.diff @@ -2,67 +2,67 @@ + // MIR for `unin` after EnumSizeOpt fn unin() -> NoData { - let mut _0: NoData; // return place in scope 0 at $DIR/enum_opt.rs:+0:18: +0:24 - let mut _1: NoData; // in scope 0 at $DIR/enum_opt.rs:+1:7: +1:12 - let mut _2: NoData; // in scope 0 at $DIR/enum_opt.rs:+2:7: +2:31 - let mut _3: [u8; 8196]; // in scope 0 at $DIR/enum_opt.rs:+2:21: +2:30 -+ let mut _4: [usize; 2]; // in scope 0 at $DIR/enum_opt.rs:+2:3: +2:31 -+ let mut _5: isize; // in scope 0 at $DIR/enum_opt.rs:+2:3: +2:31 -+ let mut _6: usize; // in scope 0 at $DIR/enum_opt.rs:+2:3: +2:31 -+ let mut _7: usize; // in scope 0 at $DIR/enum_opt.rs:+2:3: +2:31 -+ let mut _8: *mut NoData; // in scope 0 at $DIR/enum_opt.rs:+2:3: +2:31 -+ let mut _9: *mut u8; // in scope 0 at $DIR/enum_opt.rs:+2:3: +2:31 -+ let mut _10: *const NoData; // in scope 0 at $DIR/enum_opt.rs:+2:3: +2:31 -+ let mut _11: *const u8; // in scope 0 at $DIR/enum_opt.rs:+2:3: +2:31 -+ let mut _12: [usize; 2]; // in scope 0 at $DIR/enum_opt.rs:+3:3: +3:4 -+ let mut _13: isize; // in scope 0 at $DIR/enum_opt.rs:+3:3: +3:4 -+ let mut _14: usize; // in scope 0 at $DIR/enum_opt.rs:+3:3: +3:4 -+ let mut _15: usize; // in scope 0 at $DIR/enum_opt.rs:+3:3: +3:4 -+ let mut _16: *mut NoData; // in scope 0 at $DIR/enum_opt.rs:+3:3: +3:4 -+ let mut _17: *mut u8; // in scope 0 at $DIR/enum_opt.rs:+3:3: +3:4 -+ let mut _18: *const NoData; // in scope 0 at $DIR/enum_opt.rs:+3:3: +3:4 -+ let mut _19: *const u8; // in scope 0 at $DIR/enum_opt.rs:+3:3: +3:4 + let mut _0: NoData; + let mut _1: NoData; + let mut _2: NoData; + let mut _3: [u8; 8196]; ++ let mut _4: [usize; 2]; ++ let mut _5: isize; ++ let mut _6: usize; ++ let mut _7: usize; ++ let mut _8: *mut NoData; ++ let mut _9: *mut u8; ++ let mut _10: *const NoData; ++ let mut _11: *const u8; ++ let mut _12: [usize; 2]; ++ let mut _13: isize; ++ let mut _14: usize; ++ let mut _15: usize; ++ let mut _16: *mut NoData; ++ let mut _17: *mut u8; ++ let mut _18: *const NoData; ++ let mut _19: *const u8; scope 1 { - debug a => _1; // in scope 1 at $DIR/enum_opt.rs:+1:7: +1:12 + debug a => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/enum_opt.rs:+1:7: +1:12 - _1 = NoData::None; // scope 0 at $DIR/enum_opt.rs:+1:15: +1:27 - StorageLive(_2); // scope 1 at $DIR/enum_opt.rs:+2:7: +2:31 - StorageLive(_3); // scope 1 at $DIR/enum_opt.rs:+2:21: +2:30 - _3 = [const 1_u8; 8196]; // scope 1 at $DIR/enum_opt.rs:+2:21: +2:30 - _2 = NoData::Large(move _3); // scope 1 at $DIR/enum_opt.rs:+2:7: +2:31 - StorageDead(_3); // scope 1 at $DIR/enum_opt.rs:+2:30: +2:31 -- _1 = move _2; // scope 1 at $DIR/enum_opt.rs:+2:3: +2:31 -+ StorageLive(_4); // scope 1 at $DIR/enum_opt.rs:+2:3: +2:31 -+ _4 = const [8197_usize, 1_usize]; // scope 1 at $DIR/enum_opt.rs:+2:3: +2:31 -+ _5 = discriminant(_2); // scope 1 at $DIR/enum_opt.rs:+2:3: +2:31 -+ _6 = _5 as usize (IntToInt); // scope 1 at $DIR/enum_opt.rs:+2:3: +2:31 -+ _7 = _4[_6]; // scope 1 at $DIR/enum_opt.rs:+2:3: +2:31 -+ _8 = &raw mut _1; // scope 1 at $DIR/enum_opt.rs:+2:3: +2:31 -+ _9 = _8 as *mut u8 (PtrToPtr); // scope 1 at $DIR/enum_opt.rs:+2:3: +2:31 -+ _10 = &raw const _2; // scope 1 at $DIR/enum_opt.rs:+2:3: +2:31 -+ _11 = _10 as *const u8 (PtrToPtr); // scope 1 at $DIR/enum_opt.rs:+2:3: +2:31 -+ Deinit(_8); // scope 1 at $DIR/enum_opt.rs:+2:3: +2:31 -+ copy_nonoverlapping(dst = _9, src = _11, count = _7); // scope 1 at $DIR/enum_opt.rs:+2:3: +2:31 -+ StorageDead(_4); // scope 1 at $DIR/enum_opt.rs:+2:3: +2:31 - StorageDead(_2); // scope 1 at $DIR/enum_opt.rs:+2:30: +2:31 -- _0 = move _1; // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ StorageLive(_12); // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ _12 = const [8197_usize, 1_usize]; // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ _13 = discriminant(_1); // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ _14 = _13 as usize (IntToInt); // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ _15 = _12[_14]; // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ _16 = &raw mut _0; // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ _17 = _16 as *mut u8 (PtrToPtr); // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ _18 = &raw const _1; // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ _19 = _18 as *const u8 (PtrToPtr); // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ Deinit(_16); // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ copy_nonoverlapping(dst = _17, src = _19, count = _15); // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ StorageDead(_12); // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 - StorageDead(_1); // scope 0 at $DIR/enum_opt.rs:+4:1: +4:2 - return; // scope 0 at $DIR/enum_opt.rs:+4:2: +4:2 + StorageLive(_1); + _1 = NoData::None; + StorageLive(_2); + StorageLive(_3); + _3 = [const 1_u8; 8196]; + _2 = NoData::Large(move _3); + StorageDead(_3); +- _1 = move _2; ++ StorageLive(_4); ++ _4 = const [8197_usize, 1_usize]; ++ _5 = discriminant(_2); ++ _6 = _5 as usize (IntToInt); ++ _7 = _4[_6]; ++ _8 = &raw mut _1; ++ _9 = _8 as *mut u8 (PtrToPtr); ++ _10 = &raw const _2; ++ _11 = _10 as *const u8 (PtrToPtr); ++ Deinit(_8); ++ copy_nonoverlapping(dst = _9, src = _11, count = _7); ++ StorageDead(_4); + StorageDead(_2); +- _0 = move _1; ++ StorageLive(_12); ++ _12 = const [8197_usize, 1_usize]; ++ _13 = discriminant(_1); ++ _14 = _13 as usize (IntToInt); ++ _15 = _12[_14]; ++ _16 = &raw mut _0; ++ _17 = _16 as *mut u8 (PtrToPtr); ++ _18 = &raw const _1; ++ _19 = _18 as *const u8 (PtrToPtr); ++ Deinit(_16); ++ copy_nonoverlapping(dst = _17, src = _19, count = _15); ++ StorageDead(_12); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/enum_opt.unin.EnumSizeOpt.64bit.diff b/tests/mir-opt/enum_opt.unin.EnumSizeOpt.64bit.diff index ad9f12cf95953..4306f38b82a55 100644 --- a/tests/mir-opt/enum_opt.unin.EnumSizeOpt.64bit.diff +++ b/tests/mir-opt/enum_opt.unin.EnumSizeOpt.64bit.diff @@ -2,67 +2,67 @@ + // MIR for `unin` after EnumSizeOpt fn unin() -> NoData { - let mut _0: NoData; // return place in scope 0 at $DIR/enum_opt.rs:+0:18: +0:24 - let mut _1: NoData; // in scope 0 at $DIR/enum_opt.rs:+1:7: +1:12 - let mut _2: NoData; // in scope 0 at $DIR/enum_opt.rs:+2:7: +2:31 - let mut _3: [u8; 8196]; // in scope 0 at $DIR/enum_opt.rs:+2:21: +2:30 -+ let mut _4: [usize; 2]; // in scope 0 at $DIR/enum_opt.rs:+2:3: +2:31 -+ let mut _5: isize; // in scope 0 at $DIR/enum_opt.rs:+2:3: +2:31 -+ let mut _6: usize; // in scope 0 at $DIR/enum_opt.rs:+2:3: +2:31 -+ let mut _7: usize; // in scope 0 at $DIR/enum_opt.rs:+2:3: +2:31 -+ let mut _8: *mut NoData; // in scope 0 at $DIR/enum_opt.rs:+2:3: +2:31 -+ let mut _9: *mut u8; // in scope 0 at $DIR/enum_opt.rs:+2:3: +2:31 -+ let mut _10: *const NoData; // in scope 0 at $DIR/enum_opt.rs:+2:3: +2:31 -+ let mut _11: *const u8; // in scope 0 at $DIR/enum_opt.rs:+2:3: +2:31 -+ let mut _12: [usize; 2]; // in scope 0 at $DIR/enum_opt.rs:+3:3: +3:4 -+ let mut _13: isize; // in scope 0 at $DIR/enum_opt.rs:+3:3: +3:4 -+ let mut _14: usize; // in scope 0 at $DIR/enum_opt.rs:+3:3: +3:4 -+ let mut _15: usize; // in scope 0 at $DIR/enum_opt.rs:+3:3: +3:4 -+ let mut _16: *mut NoData; // in scope 0 at $DIR/enum_opt.rs:+3:3: +3:4 -+ let mut _17: *mut u8; // in scope 0 at $DIR/enum_opt.rs:+3:3: +3:4 -+ let mut _18: *const NoData; // in scope 0 at $DIR/enum_opt.rs:+3:3: +3:4 -+ let mut _19: *const u8; // in scope 0 at $DIR/enum_opt.rs:+3:3: +3:4 + let mut _0: NoData; + let mut _1: NoData; + let mut _2: NoData; + let mut _3: [u8; 8196]; ++ let mut _4: [usize; 2]; ++ let mut _5: isize; ++ let mut _6: usize; ++ let mut _7: usize; ++ let mut _8: *mut NoData; ++ let mut _9: *mut u8; ++ let mut _10: *const NoData; ++ let mut _11: *const u8; ++ let mut _12: [usize; 2]; ++ let mut _13: isize; ++ let mut _14: usize; ++ let mut _15: usize; ++ let mut _16: *mut NoData; ++ let mut _17: *mut u8; ++ let mut _18: *const NoData; ++ let mut _19: *const u8; scope 1 { - debug a => _1; // in scope 1 at $DIR/enum_opt.rs:+1:7: +1:12 + debug a => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/enum_opt.rs:+1:7: +1:12 - _1 = NoData::None; // scope 0 at $DIR/enum_opt.rs:+1:15: +1:27 - StorageLive(_2); // scope 1 at $DIR/enum_opt.rs:+2:7: +2:31 - StorageLive(_3); // scope 1 at $DIR/enum_opt.rs:+2:21: +2:30 - _3 = [const 1_u8; 8196]; // scope 1 at $DIR/enum_opt.rs:+2:21: +2:30 - _2 = NoData::Large(move _3); // scope 1 at $DIR/enum_opt.rs:+2:7: +2:31 - StorageDead(_3); // scope 1 at $DIR/enum_opt.rs:+2:30: +2:31 -- _1 = move _2; // scope 1 at $DIR/enum_opt.rs:+2:3: +2:31 -+ StorageLive(_4); // scope 1 at $DIR/enum_opt.rs:+2:3: +2:31 -+ _4 = const [8197_usize, 1_usize]; // scope 1 at $DIR/enum_opt.rs:+2:3: +2:31 -+ _5 = discriminant(_2); // scope 1 at $DIR/enum_opt.rs:+2:3: +2:31 -+ _6 = _5 as usize (IntToInt); // scope 1 at $DIR/enum_opt.rs:+2:3: +2:31 -+ _7 = _4[_6]; // scope 1 at $DIR/enum_opt.rs:+2:3: +2:31 -+ _8 = &raw mut _1; // scope 1 at $DIR/enum_opt.rs:+2:3: +2:31 -+ _9 = _8 as *mut u8 (PtrToPtr); // scope 1 at $DIR/enum_opt.rs:+2:3: +2:31 -+ _10 = &raw const _2; // scope 1 at $DIR/enum_opt.rs:+2:3: +2:31 -+ _11 = _10 as *const u8 (PtrToPtr); // scope 1 at $DIR/enum_opt.rs:+2:3: +2:31 -+ Deinit(_8); // scope 1 at $DIR/enum_opt.rs:+2:3: +2:31 -+ copy_nonoverlapping(dst = _9, src = _11, count = _7); // scope 1 at $DIR/enum_opt.rs:+2:3: +2:31 -+ StorageDead(_4); // scope 1 at $DIR/enum_opt.rs:+2:3: +2:31 - StorageDead(_2); // scope 1 at $DIR/enum_opt.rs:+2:30: +2:31 -- _0 = move _1; // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ StorageLive(_12); // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ _12 = const [8197_usize, 1_usize]; // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ _13 = discriminant(_1); // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ _14 = _13 as usize (IntToInt); // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ _15 = _12[_14]; // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ _16 = &raw mut _0; // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ _17 = _16 as *mut u8 (PtrToPtr); // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ _18 = &raw const _1; // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ _19 = _18 as *const u8 (PtrToPtr); // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ Deinit(_16); // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ copy_nonoverlapping(dst = _17, src = _19, count = _15); // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 -+ StorageDead(_12); // scope 1 at $DIR/enum_opt.rs:+3:3: +3:4 - StorageDead(_1); // scope 0 at $DIR/enum_opt.rs:+4:1: +4:2 - return; // scope 0 at $DIR/enum_opt.rs:+4:2: +4:2 + StorageLive(_1); + _1 = NoData::None; + StorageLive(_2); + StorageLive(_3); + _3 = [const 1_u8; 8196]; + _2 = NoData::Large(move _3); + StorageDead(_3); +- _1 = move _2; ++ StorageLive(_4); ++ _4 = const [8197_usize, 1_usize]; ++ _5 = discriminant(_2); ++ _6 = _5 as usize (IntToInt); ++ _7 = _4[_6]; ++ _8 = &raw mut _1; ++ _9 = _8 as *mut u8 (PtrToPtr); ++ _10 = &raw const _2; ++ _11 = _10 as *const u8 (PtrToPtr); ++ Deinit(_8); ++ copy_nonoverlapping(dst = _9, src = _11, count = _7); ++ StorageDead(_4); + StorageDead(_2); +- _0 = move _1; ++ StorageLive(_12); ++ _12 = const [8197_usize, 1_usize]; ++ _13 = discriminant(_1); ++ _14 = _13 as usize (IntToInt); ++ _15 = _12[_14]; ++ _16 = &raw mut _0; ++ _17 = _16 as *mut u8 (PtrToPtr); ++ _18 = &raw const _1; ++ _19 = _18 as *const u8 (PtrToPtr); ++ Deinit(_16); ++ copy_nonoverlapping(dst = _17, src = _19, count = _15); ++ StorageDead(_12); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/equal_true.opt.InstSimplify.diff b/tests/mir-opt/equal_true.opt.InstSimplify.diff index 4ef4132008eaa..7b38862e4d563 100644 --- a/tests/mir-opt/equal_true.opt.InstSimplify.diff +++ b/tests/mir-opt/equal_true.opt.InstSimplify.diff @@ -2,34 +2,34 @@ + // MIR for `opt` after InstSimplify fn opt(_1: bool) -> i32 { - debug x => _1; // in scope 0 at $DIR/equal_true.rs:+0:8: +0:9 - let mut _0: i32; // return place in scope 0 at $DIR/equal_true.rs:+0:20: +0:23 - let mut _2: bool; // in scope 0 at $DIR/equal_true.rs:+1:8: +1:17 - let mut _3: bool; // in scope 0 at $DIR/equal_true.rs:+1:8: +1:9 + debug x => _1; + let mut _0: i32; + let mut _2: bool; + let mut _3: bool; bb0: { - StorageLive(_2); // scope 0 at $DIR/equal_true.rs:+1:8: +1:17 - StorageLive(_3); // scope 0 at $DIR/equal_true.rs:+1:8: +1:9 - _3 = _1; // scope 0 at $DIR/equal_true.rs:+1:8: +1:9 -- _2 = Eq(move _3, const true); // scope 0 at $DIR/equal_true.rs:+1:8: +1:17 -+ _2 = move _3; // scope 0 at $DIR/equal_true.rs:+1:8: +1:17 - StorageDead(_3); // scope 0 at $DIR/equal_true.rs:+1:16: +1:17 - switchInt(move _2) -> [0: bb2, otherwise: bb1]; // scope 0 at $DIR/equal_true.rs:+1:8: +1:17 + StorageLive(_2); + StorageLive(_3); + _3 = _1; +- _2 = Eq(move _3, const true); ++ _2 = move _3; + StorageDead(_3); + switchInt(move _2) -> [0: bb2, otherwise: bb1]; } bb1: { - _0 = const 0_i32; // scope 0 at $DIR/equal_true.rs:+1:20: +1:21 - goto -> bb3; // scope 0 at $DIR/equal_true.rs:+1:5: +1:34 + _0 = const 0_i32; + goto -> bb3; } bb2: { - _0 = const 1_i32; // scope 0 at $DIR/equal_true.rs:+1:31: +1:32 - goto -> bb3; // scope 0 at $DIR/equal_true.rs:+1:5: +1:34 + _0 = const 1_i32; + goto -> bb3; } bb3: { - StorageDead(_2); // scope 0 at $DIR/equal_true.rs:+1:33: +1:34 - return; // scope 0 at $DIR/equal_true.rs:+2:2: +2:2 + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/exponential_or.match_tuple.SimplifyCfg-initial.after.mir b/tests/mir-opt/exponential_or.match_tuple.SimplifyCfg-initial.after.mir index ab955049965ad..fba616d0474f1 100644 --- a/tests/mir-opt/exponential_or.match_tuple.SimplifyCfg-initial.after.mir +++ b/tests/mir-opt/exponential_or.match_tuple.SimplifyCfg-initial.after.mir @@ -1,83 +1,83 @@ // MIR for `match_tuple` after SimplifyCfg-initial fn match_tuple(_1: (u32, bool, Option, u32)) -> u32 { - debug x => _1; // in scope 0 at $DIR/exponential_or.rs:+0:16: +0:17 - let mut _0: u32; // return place in scope 0 at $DIR/exponential_or.rs:+0:53: +0:56 - let mut _2: isize; // in scope 0 at $DIR/exponential_or.rs:+2:37: +2:48 - let mut _3: bool; // in scope 0 at $DIR/exponential_or.rs:+2:70: +2:77 - let mut _4: bool; // in scope 0 at $DIR/exponential_or.rs:+2:70: +2:77 - let mut _5: bool; // in scope 0 at $DIR/exponential_or.rs:+2:62: +2:67 - let mut _6: bool; // in scope 0 at $DIR/exponential_or.rs:+2:62: +2:67 - let _7: u32; // in scope 0 at $DIR/exponential_or.rs:+2:10: +2:11 - let _8: u32; // in scope 0 at $DIR/exponential_or.rs:+2:57: +2:58 - let mut _9: u32; // in scope 0 at $DIR/exponential_or.rs:+2:83: +2:84 - let mut _10: u32; // in scope 0 at $DIR/exponential_or.rs:+2:87: +2:88 + debug x => _1; + let mut _0: u32; + let mut _2: isize; + let mut _3: bool; + let mut _4: bool; + let mut _5: bool; + let mut _6: bool; + let _7: u32; + let _8: u32; + let mut _9: u32; + let mut _10: u32; scope 1 { - debug y => _7; // in scope 1 at $DIR/exponential_or.rs:+2:10: +2:11 - debug z => _8; // in scope 1 at $DIR/exponential_or.rs:+2:57: +2:58 + debug y => _7; + debug z => _8; } bb0: { - FakeRead(ForMatchedPlace(None), _1); // scope 0 at $DIR/exponential_or.rs:+1:11: +1:12 - switchInt((_1.0: u32)) -> [1: bb2, 4: bb2, otherwise: bb1]; // scope 0 at $DIR/exponential_or.rs:+2:15: +2:20 + FakeRead(ForMatchedPlace(None), _1); + switchInt((_1.0: u32)) -> [1: bb2, 4: bb2, otherwise: bb1]; } bb1: { - _0 = const 0_u32; // scope 0 at $DIR/exponential_or.rs:+3:14: +3:15 - goto -> bb10; // scope 0 at $DIR/exponential_or.rs:+3:14: +3:15 + _0 = const 0_u32; + goto -> bb10; } bb2: { - _2 = discriminant((_1.2: std::option::Option)); // scope 0 at $DIR/exponential_or.rs:+2:37: +2:55 - switchInt(move _2) -> [0: bb4, 1: bb3, otherwise: bb1]; // scope 0 at $DIR/exponential_or.rs:+2:37: +2:55 + _2 = discriminant((_1.2: std::option::Option)); + switchInt(move _2) -> [0: bb4, 1: bb3, otherwise: bb1]; } bb3: { - switchInt((((_1.2: std::option::Option) as Some).0: i32)) -> [1: bb4, 8: bb4, otherwise: bb1]; // scope 0 at $DIR/exponential_or.rs:+2:37: +2:55 + switchInt((((_1.2: std::option::Option) as Some).0: i32)) -> [1: bb4, 8: bb4, otherwise: bb1]; } bb4: { - _5 = Le(const 6_u32, (_1.3: u32)); // scope 0 at $DIR/exponential_or.rs:+2:62: +2:67 - switchInt(move _5) -> [0: bb6, otherwise: bb5]; // scope 0 at $DIR/exponential_or.rs:+2:62: +2:67 + _5 = Le(const 6_u32, (_1.3: u32)); + switchInt(move _5) -> [0: bb6, otherwise: bb5]; } bb5: { - _6 = Le((_1.3: u32), const 9_u32); // scope 0 at $DIR/exponential_or.rs:+2:62: +2:67 - switchInt(move _6) -> [0: bb6, otherwise: bb8]; // scope 0 at $DIR/exponential_or.rs:+2:62: +2:67 + _6 = Le((_1.3: u32), const 9_u32); + switchInt(move _6) -> [0: bb6, otherwise: bb8]; } bb6: { - _3 = Le(const 13_u32, (_1.3: u32)); // scope 0 at $DIR/exponential_or.rs:+2:70: +2:77 - switchInt(move _3) -> [0: bb1, otherwise: bb7]; // scope 0 at $DIR/exponential_or.rs:+2:70: +2:77 + _3 = Le(const 13_u32, (_1.3: u32)); + switchInt(move _3) -> [0: bb1, otherwise: bb7]; } bb7: { - _4 = Le((_1.3: u32), const 16_u32); // scope 0 at $DIR/exponential_or.rs:+2:70: +2:77 - switchInt(move _4) -> [0: bb1, otherwise: bb8]; // scope 0 at $DIR/exponential_or.rs:+2:70: +2:77 + _4 = Le((_1.3: u32), const 16_u32); + switchInt(move _4) -> [0: bb1, otherwise: bb8]; } bb8: { - falseEdge -> [real: bb9, imaginary: bb1]; // scope 0 at $DIR/exponential_or.rs:+2:9: +2:79 + falseEdge -> [real: bb9, imaginary: bb1]; } bb9: { - StorageLive(_7); // scope 0 at $DIR/exponential_or.rs:+2:10: +2:11 - _7 = (_1.0: u32); // scope 0 at $DIR/exponential_or.rs:+2:10: +2:11 - StorageLive(_8); // scope 0 at $DIR/exponential_or.rs:+2:57: +2:58 - _8 = (_1.3: u32); // scope 0 at $DIR/exponential_or.rs:+2:57: +2:58 - StorageLive(_9); // scope 1 at $DIR/exponential_or.rs:+2:83: +2:84 - _9 = _7; // scope 1 at $DIR/exponential_or.rs:+2:83: +2:84 - StorageLive(_10); // scope 1 at $DIR/exponential_or.rs:+2:87: +2:88 - _10 = _8; // scope 1 at $DIR/exponential_or.rs:+2:87: +2:88 - _0 = BitXor(move _9, move _10); // scope 1 at $DIR/exponential_or.rs:+2:83: +2:88 - StorageDead(_10); // scope 1 at $DIR/exponential_or.rs:+2:87: +2:88 - StorageDead(_9); // scope 1 at $DIR/exponential_or.rs:+2:87: +2:88 - StorageDead(_8); // scope 0 at $DIR/exponential_or.rs:+2:87: +2:88 - StorageDead(_7); // scope 0 at $DIR/exponential_or.rs:+2:87: +2:88 - goto -> bb10; // scope 0 at $DIR/exponential_or.rs:+2:87: +2:88 + StorageLive(_7); + _7 = (_1.0: u32); + StorageLive(_8); + _8 = (_1.3: u32); + StorageLive(_9); + _9 = _7; + StorageLive(_10); + _10 = _8; + _0 = BitXor(move _9, move _10); + StorageDead(_10); + StorageDead(_9); + StorageDead(_8); + StorageDead(_7); + goto -> bb10; } bb10: { - return; // scope 0 at $DIR/exponential_or.rs:+5:2: +5:2 + return; } } diff --git a/tests/mir-opt/fn_ptr_shim.core.ops-function-Fn-call.AddMovesForPackedDrops.before.mir b/tests/mir-opt/fn_ptr_shim.core.ops-function-Fn-call.AddMovesForPackedDrops.before.mir index c63433d36203d..4fe11435fab96 100644 --- a/tests/mir-opt/fn_ptr_shim.core.ops-function-Fn-call.AddMovesForPackedDrops.before.mir +++ b/tests/mir-opt/fn_ptr_shim.core.ops-function-Fn-call.AddMovesForPackedDrops.before.mir @@ -1,13 +1,13 @@ // MIR for `std::ops::Fn::call` before AddMovesForPackedDrops fn std::ops::Fn::call(_1: *const fn(), _2: ()) -> >::Output { - let mut _0: >::Output; // return place in scope 0 at $SRC_DIR/core/src/ops/function.rs:+0:5: +0:67 + let mut _0: >::Output; bb0: { - _0 = move (*_1)() -> bb1; // scope 0 at $SRC_DIR/core/src/ops/function.rs:+0:5: +0:67 + _0 = move (*_1)() -> bb1; } bb1: { - return; // scope 0 at $SRC_DIR/core/src/ops/function.rs:+0:5: +0:67 + return; } } diff --git a/tests/mir-opt/funky_arms.float_to_exponential_common.ConstProp.panic-abort.diff b/tests/mir-opt/funky_arms.float_to_exponential_common.ConstProp.panic-abort.diff index a10c5a7901968..a538756ba2d04 100644 --- a/tests/mir-opt/funky_arms.float_to_exponential_common.ConstProp.panic-abort.diff +++ b/tests/mir-opt/funky_arms.float_to_exponential_common.ConstProp.panic-abort.diff @@ -2,128 +2,110 @@ + // MIR for `float_to_exponential_common` after ConstProp fn float_to_exponential_common(_1: &mut Formatter<'_>, _2: &T, _3: bool) -> Result<(), std::fmt::Error> { - debug fmt => _1; // in scope 0 at $DIR/funky_arms.rs:+0:35: +0:38 - debug num => _2; // in scope 0 at $DIR/funky_arms.rs:+0:60: +0:63 - debug upper => _3; // in scope 0 at $DIR/funky_arms.rs:+0:69: +0:74 - let mut _0: std::result::Result<(), std::fmt::Error>; // return place in scope 0 at $DIR/funky_arms.rs:+0:85: +0:91 - let _4: bool; // in scope 0 at $DIR/funky_arms.rs:+4:9: +4:19 - let mut _5: &std::fmt::Formatter<'_>; // in scope 0 at $DIR/funky_arms.rs:+4:22: +4:37 - let mut _7: std::option::Option; // in scope 0 at $DIR/funky_arms.rs:+13:30: +13:45 - let mut _8: &std::fmt::Formatter<'_>; // in scope 0 at $DIR/funky_arms.rs:+13:30: +13:45 - let mut _9: isize; // in scope 0 at $DIR/funky_arms.rs:+13:12: +13:27 - let mut _11: &mut std::fmt::Formatter<'_>; // in scope 0 at $DIR/funky_arms.rs:+15:43: +15:46 - let mut _12: &T; // in scope 0 at $DIR/funky_arms.rs:+15:48: +15:51 - let mut _13: core::num::flt2dec::Sign; // in scope 0 at $DIR/funky_arms.rs:+15:53: +15:57 - let mut _14: u32; // in scope 0 at $DIR/funky_arms.rs:+15:59: +15:79 - let mut _15: u32; // in scope 0 at $DIR/funky_arms.rs:+15:59: +15:75 - let mut _16: usize; // in scope 0 at $DIR/funky_arms.rs:+15:59: +15:68 - let mut _17: bool; // in scope 0 at $DIR/funky_arms.rs:+15:81: +15:86 - let mut _18: &mut std::fmt::Formatter<'_>; // in scope 0 at $DIR/funky_arms.rs:+17:46: +17:49 - let mut _19: &T; // in scope 0 at $DIR/funky_arms.rs:+17:51: +17:54 - let mut _20: core::num::flt2dec::Sign; // in scope 0 at $DIR/funky_arms.rs:+17:56: +17:60 - let mut _21: bool; // in scope 0 at $DIR/funky_arms.rs:+17:62: +17:67 + debug fmt => _1; + debug num => _2; + debug upper => _3; + let mut _0: std::result::Result<(), std::fmt::Error>; + let _4: bool; + let mut _5: &std::fmt::Formatter<'_>; + let mut _7: std::option::Option; + let mut _8: &std::fmt::Formatter<'_>; + let mut _9: isize; + let mut _11: &mut std::fmt::Formatter<'_>; + let mut _12: &T; + let mut _13: core::num::flt2dec::Sign; + let mut _14: u32; + let mut _15: u32; + let mut _16: usize; + let mut _17: bool; + let mut _18: &mut std::fmt::Formatter<'_>; + let mut _19: &T; + let mut _20: core::num::flt2dec::Sign; + let mut _21: bool; scope 1 { - debug force_sign => _4; // in scope 1 at $DIR/funky_arms.rs:+4:9: +4:19 - let _6: core::num::flt2dec::Sign; // in scope 1 at $DIR/funky_arms.rs:+8:9: +8:13 + debug force_sign => _4; + let _6: core::num::flt2dec::Sign; scope 2 { - debug sign => _6; // in scope 2 at $DIR/funky_arms.rs:+8:9: +8:13 + debug sign => _6; scope 3 { - debug precision => _10; // in scope 3 at $DIR/funky_arms.rs:+13:17: +13:26 - let _10: usize; // in scope 3 at $DIR/funky_arms.rs:+13:17: +13:26 + debug precision => _10; + let _10: usize; } } } bb0: { - StorageLive(_4); // scope 0 at $DIR/funky_arms.rs:+4:9: +4:19 - StorageLive(_5); // scope 0 at $DIR/funky_arms.rs:+4:22: +4:37 - _5 = &(*_1); // scope 0 at $DIR/funky_arms.rs:+4:22: +4:37 - _4 = Formatter::<'_>::sign_plus(move _5) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/funky_arms.rs:+4:22: +4:37 - // mir::Constant - // + span: $DIR/funky_arms.rs:16:26: 16:35 - // + literal: Const { ty: for<'a> fn(&'a Formatter<'_>) -> bool {Formatter::<'_>::sign_plus}, val: Value() } + StorageLive(_4); + StorageLive(_5); + _5 = &(*_1); + _4 = Formatter::<'_>::sign_plus(move _5) -> [return: bb1, unwind unreachable]; } bb1: { - StorageDead(_5); // scope 0 at $DIR/funky_arms.rs:+4:36: +4:37 - StorageLive(_6); // scope 1 at $DIR/funky_arms.rs:+8:9: +8:13 - switchInt(_4) -> [0: bb3, otherwise: bb2]; // scope 1 at $DIR/funky_arms.rs:+8:16: +8:32 + StorageDead(_5); + StorageLive(_6); + switchInt(_4) -> [0: bb3, otherwise: bb2]; } bb2: { -- _6 = MinusPlus; // scope 1 at $DIR/funky_arms.rs:+10:17: +10:41 -+ _6 = const MinusPlus; // scope 1 at $DIR/funky_arms.rs:+10:17: +10:41 -+ // mir::Constant -+ // + span: no-location -+ // + literal: Const { ty: Sign, val: Value(Scalar(0x01)) } - goto -> bb4; // scope 1 at $DIR/funky_arms.rs:+10:17: +10:41 +- _6 = MinusPlus; ++ _6 = const MinusPlus; + goto -> bb4; } bb3: { -- _6 = Minus; // scope 1 at $DIR/funky_arms.rs:+9:18: +9:38 -+ _6 = const Minus; // scope 1 at $DIR/funky_arms.rs:+9:18: +9:38 -+ // mir::Constant -+ // + span: no-location -+ // + literal: Const { ty: Sign, val: Value(Scalar(0x00)) } - goto -> bb4; // scope 1 at $DIR/funky_arms.rs:+9:18: +9:38 +- _6 = Minus; ++ _6 = const Minus; + goto -> bb4; } bb4: { - StorageLive(_7); // scope 3 at $DIR/funky_arms.rs:+13:30: +13:45 - StorageLive(_8); // scope 3 at $DIR/funky_arms.rs:+13:30: +13:45 - _8 = &(*_1); // scope 3 at $DIR/funky_arms.rs:+13:30: +13:45 - _7 = Formatter::<'_>::precision(move _8) -> [return: bb5, unwind unreachable]; // scope 3 at $DIR/funky_arms.rs:+13:30: +13:45 - // mir::Constant - // + span: $DIR/funky_arms.rs:25:34: 25:43 - // + literal: Const { ty: for<'a> fn(&'a Formatter<'_>) -> Option {Formatter::<'_>::precision}, val: Value() } + StorageLive(_7); + StorageLive(_8); + _8 = &(*_1); + _7 = Formatter::<'_>::precision(move _8) -> [return: bb5, unwind unreachable]; } bb5: { - StorageDead(_8); // scope 3 at $DIR/funky_arms.rs:+13:44: +13:45 - _9 = discriminant(_7); // scope 3 at $DIR/funky_arms.rs:+13:12: +13:27 - switchInt(move _9) -> [1: bb6, otherwise: bb8]; // scope 3 at $DIR/funky_arms.rs:+13:12: +13:27 + StorageDead(_8); + _9 = discriminant(_7); + switchInt(move _9) -> [1: bb6, otherwise: bb8]; } bb6: { - _10 = ((_7 as Some).0: usize); // scope 3 at $DIR/funky_arms.rs:+13:17: +13:26 - StorageLive(_13); // scope 3 at $DIR/funky_arms.rs:+15:53: +15:57 - _13 = _6; // scope 3 at $DIR/funky_arms.rs:+15:53: +15:57 - StorageLive(_14); // scope 3 at $DIR/funky_arms.rs:+15:59: +15:79 - StorageLive(_15); // scope 3 at $DIR/funky_arms.rs:+15:59: +15:75 - _15 = _10 as u32 (IntToInt); // scope 3 at $DIR/funky_arms.rs:+15:59: +15:75 - _14 = Add(move _15, const 1_u32); // scope 3 at $DIR/funky_arms.rs:+15:59: +15:79 - StorageDead(_15); // scope 3 at $DIR/funky_arms.rs:+15:78: +15:79 - _0 = float_to_exponential_common_exact::(_1, _2, move _13, move _14, _3) -> [return: bb7, unwind unreachable]; // scope 3 at $DIR/funky_arms.rs:+15:9: +15:87 - // mir::Constant - // + span: $DIR/funky_arms.rs:27:9: 27:42 - // + literal: Const { ty: for<'a, 'b, 'c> fn(&'a mut Formatter<'b>, &'c T, Sign, u32, bool) -> Result<(), std::fmt::Error> {float_to_exponential_common_exact::}, val: Value() } + _10 = ((_7 as Some).0: usize); + StorageLive(_13); + _13 = _6; + StorageLive(_14); + StorageLive(_15); + _15 = _10 as u32 (IntToInt); + _14 = Add(move _15, const 1_u32); + StorageDead(_15); + _0 = float_to_exponential_common_exact::(_1, _2, move _13, move _14, _3) -> [return: bb7, unwind unreachable]; } bb7: { - StorageDead(_14); // scope 3 at $DIR/funky_arms.rs:+15:86: +15:87 - StorageDead(_13); // scope 3 at $DIR/funky_arms.rs:+15:86: +15:87 - goto -> bb10; // scope 2 at $DIR/funky_arms.rs:+13:5: +18:6 + StorageDead(_14); + StorageDead(_13); + goto -> bb10; } bb8: { - StorageLive(_20); // scope 2 at $DIR/funky_arms.rs:+17:56: +17:60 - _20 = _6; // scope 2 at $DIR/funky_arms.rs:+17:56: +17:60 - _0 = float_to_exponential_common_shortest::(_1, _2, move _20, _3) -> [return: bb9, unwind unreachable]; // scope 2 at $DIR/funky_arms.rs:+17:9: +17:68 - // mir::Constant - // + span: $DIR/funky_arms.rs:29:9: 29:45 - // + literal: Const { ty: for<'a, 'b, 'c> fn(&'a mut Formatter<'b>, &'c T, Sign, bool) -> Result<(), std::fmt::Error> {float_to_exponential_common_shortest::}, val: Value() } + StorageLive(_20); + _20 = _6; + _0 = float_to_exponential_common_shortest::(_1, _2, move _20, _3) -> [return: bb9, unwind unreachable]; } bb9: { - StorageDead(_20); // scope 2 at $DIR/funky_arms.rs:+17:67: +17:68 - goto -> bb10; // scope 2 at $DIR/funky_arms.rs:+13:5: +18:6 + StorageDead(_20); + goto -> bb10; } bb10: { - StorageDead(_6); // scope 1 at $DIR/funky_arms.rs:+19:1: +19:2 - StorageDead(_4); // scope 0 at $DIR/funky_arms.rs:+19:1: +19:2 - StorageDead(_7); // scope 0 at $DIR/funky_arms.rs:+19:1: +19:2 - return; // scope 0 at $DIR/funky_arms.rs:+19:2: +19:2 + StorageDead(_6); + StorageDead(_4); + StorageDead(_7); + return; } } diff --git a/tests/mir-opt/funky_arms.float_to_exponential_common.ConstProp.panic-unwind.diff b/tests/mir-opt/funky_arms.float_to_exponential_common.ConstProp.panic-unwind.diff index 8a4a16825195c..513ff03c4261a 100644 --- a/tests/mir-opt/funky_arms.float_to_exponential_common.ConstProp.panic-unwind.diff +++ b/tests/mir-opt/funky_arms.float_to_exponential_common.ConstProp.panic-unwind.diff @@ -2,128 +2,110 @@ + // MIR for `float_to_exponential_common` after ConstProp fn float_to_exponential_common(_1: &mut Formatter<'_>, _2: &T, _3: bool) -> Result<(), std::fmt::Error> { - debug fmt => _1; // in scope 0 at $DIR/funky_arms.rs:+0:35: +0:38 - debug num => _2; // in scope 0 at $DIR/funky_arms.rs:+0:60: +0:63 - debug upper => _3; // in scope 0 at $DIR/funky_arms.rs:+0:69: +0:74 - let mut _0: std::result::Result<(), std::fmt::Error>; // return place in scope 0 at $DIR/funky_arms.rs:+0:85: +0:91 - let _4: bool; // in scope 0 at $DIR/funky_arms.rs:+4:9: +4:19 - let mut _5: &std::fmt::Formatter<'_>; // in scope 0 at $DIR/funky_arms.rs:+4:22: +4:37 - let mut _7: std::option::Option; // in scope 0 at $DIR/funky_arms.rs:+13:30: +13:45 - let mut _8: &std::fmt::Formatter<'_>; // in scope 0 at $DIR/funky_arms.rs:+13:30: +13:45 - let mut _9: isize; // in scope 0 at $DIR/funky_arms.rs:+13:12: +13:27 - let mut _11: &mut std::fmt::Formatter<'_>; // in scope 0 at $DIR/funky_arms.rs:+15:43: +15:46 - let mut _12: &T; // in scope 0 at $DIR/funky_arms.rs:+15:48: +15:51 - let mut _13: core::num::flt2dec::Sign; // in scope 0 at $DIR/funky_arms.rs:+15:53: +15:57 - let mut _14: u32; // in scope 0 at $DIR/funky_arms.rs:+15:59: +15:79 - let mut _15: u32; // in scope 0 at $DIR/funky_arms.rs:+15:59: +15:75 - let mut _16: usize; // in scope 0 at $DIR/funky_arms.rs:+15:59: +15:68 - let mut _17: bool; // in scope 0 at $DIR/funky_arms.rs:+15:81: +15:86 - let mut _18: &mut std::fmt::Formatter<'_>; // in scope 0 at $DIR/funky_arms.rs:+17:46: +17:49 - let mut _19: &T; // in scope 0 at $DIR/funky_arms.rs:+17:51: +17:54 - let mut _20: core::num::flt2dec::Sign; // in scope 0 at $DIR/funky_arms.rs:+17:56: +17:60 - let mut _21: bool; // in scope 0 at $DIR/funky_arms.rs:+17:62: +17:67 + debug fmt => _1; + debug num => _2; + debug upper => _3; + let mut _0: std::result::Result<(), std::fmt::Error>; + let _4: bool; + let mut _5: &std::fmt::Formatter<'_>; + let mut _7: std::option::Option; + let mut _8: &std::fmt::Formatter<'_>; + let mut _9: isize; + let mut _11: &mut std::fmt::Formatter<'_>; + let mut _12: &T; + let mut _13: core::num::flt2dec::Sign; + let mut _14: u32; + let mut _15: u32; + let mut _16: usize; + let mut _17: bool; + let mut _18: &mut std::fmt::Formatter<'_>; + let mut _19: &T; + let mut _20: core::num::flt2dec::Sign; + let mut _21: bool; scope 1 { - debug force_sign => _4; // in scope 1 at $DIR/funky_arms.rs:+4:9: +4:19 - let _6: core::num::flt2dec::Sign; // in scope 1 at $DIR/funky_arms.rs:+8:9: +8:13 + debug force_sign => _4; + let _6: core::num::flt2dec::Sign; scope 2 { - debug sign => _6; // in scope 2 at $DIR/funky_arms.rs:+8:9: +8:13 + debug sign => _6; scope 3 { - debug precision => _10; // in scope 3 at $DIR/funky_arms.rs:+13:17: +13:26 - let _10: usize; // in scope 3 at $DIR/funky_arms.rs:+13:17: +13:26 + debug precision => _10; + let _10: usize; } } } bb0: { - StorageLive(_4); // scope 0 at $DIR/funky_arms.rs:+4:9: +4:19 - StorageLive(_5); // scope 0 at $DIR/funky_arms.rs:+4:22: +4:37 - _5 = &(*_1); // scope 0 at $DIR/funky_arms.rs:+4:22: +4:37 - _4 = Formatter::<'_>::sign_plus(move _5) -> bb1; // scope 0 at $DIR/funky_arms.rs:+4:22: +4:37 - // mir::Constant - // + span: $DIR/funky_arms.rs:16:26: 16:35 - // + literal: Const { ty: for<'a> fn(&'a Formatter<'_>) -> bool {Formatter::<'_>::sign_plus}, val: Value() } + StorageLive(_4); + StorageLive(_5); + _5 = &(*_1); + _4 = Formatter::<'_>::sign_plus(move _5) -> bb1; } bb1: { - StorageDead(_5); // scope 0 at $DIR/funky_arms.rs:+4:36: +4:37 - StorageLive(_6); // scope 1 at $DIR/funky_arms.rs:+8:9: +8:13 - switchInt(_4) -> [0: bb3, otherwise: bb2]; // scope 1 at $DIR/funky_arms.rs:+8:16: +8:32 + StorageDead(_5); + StorageLive(_6); + switchInt(_4) -> [0: bb3, otherwise: bb2]; } bb2: { -- _6 = MinusPlus; // scope 1 at $DIR/funky_arms.rs:+10:17: +10:41 -+ _6 = const MinusPlus; // scope 1 at $DIR/funky_arms.rs:+10:17: +10:41 -+ // mir::Constant -+ // + span: no-location -+ // + literal: Const { ty: Sign, val: Value(Scalar(0x01)) } - goto -> bb4; // scope 1 at $DIR/funky_arms.rs:+10:17: +10:41 +- _6 = MinusPlus; ++ _6 = const MinusPlus; + goto -> bb4; } bb3: { -- _6 = Minus; // scope 1 at $DIR/funky_arms.rs:+9:18: +9:38 -+ _6 = const Minus; // scope 1 at $DIR/funky_arms.rs:+9:18: +9:38 -+ // mir::Constant -+ // + span: no-location -+ // + literal: Const { ty: Sign, val: Value(Scalar(0x00)) } - goto -> bb4; // scope 1 at $DIR/funky_arms.rs:+9:18: +9:38 +- _6 = Minus; ++ _6 = const Minus; + goto -> bb4; } bb4: { - StorageLive(_7); // scope 3 at $DIR/funky_arms.rs:+13:30: +13:45 - StorageLive(_8); // scope 3 at $DIR/funky_arms.rs:+13:30: +13:45 - _8 = &(*_1); // scope 3 at $DIR/funky_arms.rs:+13:30: +13:45 - _7 = Formatter::<'_>::precision(move _8) -> bb5; // scope 3 at $DIR/funky_arms.rs:+13:30: +13:45 - // mir::Constant - // + span: $DIR/funky_arms.rs:25:34: 25:43 - // + literal: Const { ty: for<'a> fn(&'a Formatter<'_>) -> Option {Formatter::<'_>::precision}, val: Value() } + StorageLive(_7); + StorageLive(_8); + _8 = &(*_1); + _7 = Formatter::<'_>::precision(move _8) -> bb5; } bb5: { - StorageDead(_8); // scope 3 at $DIR/funky_arms.rs:+13:44: +13:45 - _9 = discriminant(_7); // scope 3 at $DIR/funky_arms.rs:+13:12: +13:27 - switchInt(move _9) -> [1: bb6, otherwise: bb8]; // scope 3 at $DIR/funky_arms.rs:+13:12: +13:27 + StorageDead(_8); + _9 = discriminant(_7); + switchInt(move _9) -> [1: bb6, otherwise: bb8]; } bb6: { - _10 = ((_7 as Some).0: usize); // scope 3 at $DIR/funky_arms.rs:+13:17: +13:26 - StorageLive(_13); // scope 3 at $DIR/funky_arms.rs:+15:53: +15:57 - _13 = _6; // scope 3 at $DIR/funky_arms.rs:+15:53: +15:57 - StorageLive(_14); // scope 3 at $DIR/funky_arms.rs:+15:59: +15:79 - StorageLive(_15); // scope 3 at $DIR/funky_arms.rs:+15:59: +15:75 - _15 = _10 as u32 (IntToInt); // scope 3 at $DIR/funky_arms.rs:+15:59: +15:75 - _14 = Add(move _15, const 1_u32); // scope 3 at $DIR/funky_arms.rs:+15:59: +15:79 - StorageDead(_15); // scope 3 at $DIR/funky_arms.rs:+15:78: +15:79 - _0 = float_to_exponential_common_exact::(_1, _2, move _13, move _14, _3) -> bb7; // scope 3 at $DIR/funky_arms.rs:+15:9: +15:87 - // mir::Constant - // + span: $DIR/funky_arms.rs:27:9: 27:42 - // + literal: Const { ty: for<'a, 'b, 'c> fn(&'a mut Formatter<'b>, &'c T, Sign, u32, bool) -> Result<(), std::fmt::Error> {float_to_exponential_common_exact::}, val: Value() } + _10 = ((_7 as Some).0: usize); + StorageLive(_13); + _13 = _6; + StorageLive(_14); + StorageLive(_15); + _15 = _10 as u32 (IntToInt); + _14 = Add(move _15, const 1_u32); + StorageDead(_15); + _0 = float_to_exponential_common_exact::(_1, _2, move _13, move _14, _3) -> bb7; } bb7: { - StorageDead(_14); // scope 3 at $DIR/funky_arms.rs:+15:86: +15:87 - StorageDead(_13); // scope 3 at $DIR/funky_arms.rs:+15:86: +15:87 - goto -> bb10; // scope 2 at $DIR/funky_arms.rs:+13:5: +18:6 + StorageDead(_14); + StorageDead(_13); + goto -> bb10; } bb8: { - StorageLive(_20); // scope 2 at $DIR/funky_arms.rs:+17:56: +17:60 - _20 = _6; // scope 2 at $DIR/funky_arms.rs:+17:56: +17:60 - _0 = float_to_exponential_common_shortest::(_1, _2, move _20, _3) -> bb9; // scope 2 at $DIR/funky_arms.rs:+17:9: +17:68 - // mir::Constant - // + span: $DIR/funky_arms.rs:29:9: 29:45 - // + literal: Const { ty: for<'a, 'b, 'c> fn(&'a mut Formatter<'b>, &'c T, Sign, bool) -> Result<(), std::fmt::Error> {float_to_exponential_common_shortest::}, val: Value() } + StorageLive(_20); + _20 = _6; + _0 = float_to_exponential_common_shortest::(_1, _2, move _20, _3) -> bb9; } bb9: { - StorageDead(_20); // scope 2 at $DIR/funky_arms.rs:+17:67: +17:68 - goto -> bb10; // scope 2 at $DIR/funky_arms.rs:+13:5: +18:6 + StorageDead(_20); + goto -> bb10; } bb10: { - StorageDead(_6); // scope 1 at $DIR/funky_arms.rs:+19:1: +19:2 - StorageDead(_4); // scope 0 at $DIR/funky_arms.rs:+19:1: +19:2 - StorageDead(_7); // scope 0 at $DIR/funky_arms.rs:+19:1: +19:2 - return; // scope 0 at $DIR/funky_arms.rs:+19:2: +19:2 + StorageDead(_6); + StorageDead(_4); + StorageDead(_7); + return; } } diff --git a/tests/mir-opt/generator_drop_cleanup.main-{closure#0}.generator_drop.0.panic-abort.mir b/tests/mir-opt/generator_drop_cleanup.main-{closure#0}.generator_drop.0.panic-abort.mir index 16e8c2a8e5813..958078b97064e 100644 --- a/tests/mir-opt/generator_drop_cleanup.main-{closure#0}.generator_drop.0.panic-abort.mir +++ b/tests/mir-opt/generator_drop_cleanup.main-{closure#0}.generator_drop.0.panic-abort.mir @@ -22,61 +22,61 @@ } */ fn main::{closure#0}(_1: *mut [generator@$DIR/generator_drop_cleanup.rs:10:15: 10:17]) -> () { - let mut _0: (); // return place in scope 0 at $DIR/generator_drop_cleanup.rs:+0:15: +3:6 - let mut _2: (); // in scope 0 at $DIR/generator_drop_cleanup.rs:+0:15: +3:6 - let _3: std::string::String; // in scope 0 at $DIR/generator_drop_cleanup.rs:+1:13: +1:15 - let _4: (); // in scope 0 at $DIR/generator_drop_cleanup.rs:+2:9: +2:14 - let mut _5: (); // in scope 0 at $DIR/generator_drop_cleanup.rs:+2:9: +2:14 - let mut _6: (); // in scope 0 at $DIR/generator_drop_cleanup.rs:+0:18: +0:18 - let mut _7: (); // in scope 0 at $DIR/generator_drop_cleanup.rs:+0:15: +3:6 - let mut _8: u32; // in scope 0 at $DIR/generator_drop_cleanup.rs:+0:15: +3:6 + let mut _0: (); + let mut _2: (); + let _3: std::string::String; + let _4: (); + let mut _5: (); + let mut _6: (); + let mut _7: (); + let mut _8: u32; scope 1 { - debug _s => (((*_1) as variant#3).0: std::string::String); // in scope 1 at $DIR/generator_drop_cleanup.rs:+1:13: +1:15 + debug _s => (((*_1) as variant#3).0: std::string::String); } bb0: { - _8 = discriminant((*_1)); // scope 0 at $DIR/generator_drop_cleanup.rs:+0:15: +3:6 - switchInt(move _8) -> [0: bb5, 3: bb8, otherwise: bb9]; // scope 0 at $DIR/generator_drop_cleanup.rs:+0:15: +3:6 + _8 = discriminant((*_1)); + switchInt(move _8) -> [0: bb5, 3: bb8, otherwise: bb9]; } bb1: { - StorageDead(_5); // scope 1 at $DIR/generator_drop_cleanup.rs:+2:13: +2:14 - StorageDead(_4); // scope 1 at $DIR/generator_drop_cleanup.rs:+2:14: +2:15 - drop((((*_1) as variant#3).0: std::string::String)) -> [return: bb2, unwind unreachable]; // scope 0 at $DIR/generator_drop_cleanup.rs:+3:5: +3:6 + StorageDead(_5); + StorageDead(_4); + drop((((*_1) as variant#3).0: std::string::String)) -> [return: bb2, unwind unreachable]; } bb2: { - nop; // scope 0 at $DIR/generator_drop_cleanup.rs:+3:5: +3:6 - goto -> bb6; // scope 0 at $DIR/generator_drop_cleanup.rs:+3:5: +3:6 + nop; + goto -> bb6; } bb3: { - return; // scope 0 at $DIR/generator_drop_cleanup.rs:+0:15: +3:6 + return; } bb4: { - return; // scope 0 at $DIR/generator_drop_cleanup.rs:+0:15: +3:6 + return; } bb5: { - goto -> bb7; // scope 0 at $DIR/generator_drop_cleanup.rs:+0:15: +3:6 + goto -> bb7; } bb6: { - goto -> bb3; // scope 0 at $DIR/generator_drop_cleanup.rs:+3:5: +3:6 + goto -> bb3; } bb7: { - goto -> bb4; // scope 0 at $DIR/generator_drop_cleanup.rs:+0:15: +3:6 + goto -> bb4; } bb8: { - StorageLive(_4); // scope 0 at $DIR/generator_drop_cleanup.rs:+0:15: +3:6 - StorageLive(_5); // scope 0 at $DIR/generator_drop_cleanup.rs:+0:15: +3:6 - goto -> bb1; // scope 0 at $DIR/generator_drop_cleanup.rs:+0:15: +3:6 + StorageLive(_4); + StorageLive(_5); + goto -> bb1; } bb9: { - return; // scope 0 at $DIR/generator_drop_cleanup.rs:+0:15: +3:6 + return; } } diff --git a/tests/mir-opt/generator_drop_cleanup.main-{closure#0}.generator_drop.0.panic-unwind.mir b/tests/mir-opt/generator_drop_cleanup.main-{closure#0}.generator_drop.0.panic-unwind.mir index afe518642146f..7e050e585b1db 100644 --- a/tests/mir-opt/generator_drop_cleanup.main-{closure#0}.generator_drop.0.panic-unwind.mir +++ b/tests/mir-opt/generator_drop_cleanup.main-{closure#0}.generator_drop.0.panic-unwind.mir @@ -22,70 +22,70 @@ } */ fn main::{closure#0}(_1: *mut [generator@$DIR/generator_drop_cleanup.rs:10:15: 10:17]) -> () { - let mut _0: (); // return place in scope 0 at $DIR/generator_drop_cleanup.rs:+0:15: +3:6 - let mut _2: (); // in scope 0 at $DIR/generator_drop_cleanup.rs:+0:15: +3:6 - let _3: std::string::String; // in scope 0 at $DIR/generator_drop_cleanup.rs:+1:13: +1:15 - let _4: (); // in scope 0 at $DIR/generator_drop_cleanup.rs:+2:9: +2:14 - let mut _5: (); // in scope 0 at $DIR/generator_drop_cleanup.rs:+2:9: +2:14 - let mut _6: (); // in scope 0 at $DIR/generator_drop_cleanup.rs:+0:18: +0:18 - let mut _7: (); // in scope 0 at $DIR/generator_drop_cleanup.rs:+0:15: +3:6 - let mut _8: u32; // in scope 0 at $DIR/generator_drop_cleanup.rs:+0:15: +3:6 + let mut _0: (); + let mut _2: (); + let _3: std::string::String; + let _4: (); + let mut _5: (); + let mut _6: (); + let mut _7: (); + let mut _8: u32; scope 1 { - debug _s => (((*_1) as variant#3).0: std::string::String); // in scope 1 at $DIR/generator_drop_cleanup.rs:+1:13: +1:15 + debug _s => (((*_1) as variant#3).0: std::string::String); } bb0: { - _8 = discriminant((*_1)); // scope 0 at $DIR/generator_drop_cleanup.rs:+0:15: +3:6 - switchInt(move _8) -> [0: bb7, 3: bb10, otherwise: bb11]; // scope 0 at $DIR/generator_drop_cleanup.rs:+0:15: +3:6 + _8 = discriminant((*_1)); + switchInt(move _8) -> [0: bb7, 3: bb10, otherwise: bb11]; } bb1: { - StorageDead(_5); // scope 1 at $DIR/generator_drop_cleanup.rs:+2:13: +2:14 - StorageDead(_4); // scope 1 at $DIR/generator_drop_cleanup.rs:+2:14: +2:15 - drop((((*_1) as variant#3).0: std::string::String)) -> [return: bb2, unwind: bb5]; // scope 0 at $DIR/generator_drop_cleanup.rs:+3:5: +3:6 + StorageDead(_5); + StorageDead(_4); + drop((((*_1) as variant#3).0: std::string::String)) -> [return: bb2, unwind: bb5]; } bb2: { - nop; // scope 0 at $DIR/generator_drop_cleanup.rs:+3:5: +3:6 - goto -> bb8; // scope 0 at $DIR/generator_drop_cleanup.rs:+3:5: +3:6 + nop; + goto -> bb8; } bb3: { - return; // scope 0 at $DIR/generator_drop_cleanup.rs:+0:15: +3:6 + return; } bb4 (cleanup): { - resume; // scope 0 at $DIR/generator_drop_cleanup.rs:+0:15: +3:6 + resume; } bb5 (cleanup): { - nop; // scope 0 at $DIR/generator_drop_cleanup.rs:+3:5: +3:6 - goto -> bb4; // scope 0 at $DIR/generator_drop_cleanup.rs:+3:5: +3:6 + nop; + goto -> bb4; } bb6: { - return; // scope 0 at $DIR/generator_drop_cleanup.rs:+0:15: +3:6 + return; } bb7: { - goto -> bb9; // scope 0 at $DIR/generator_drop_cleanup.rs:+0:15: +3:6 + goto -> bb9; } bb8: { - goto -> bb3; // scope 0 at $DIR/generator_drop_cleanup.rs:+3:5: +3:6 + goto -> bb3; } bb9: { - goto -> bb6; // scope 0 at $DIR/generator_drop_cleanup.rs:+0:15: +3:6 + goto -> bb6; } bb10: { - StorageLive(_4); // scope 0 at $DIR/generator_drop_cleanup.rs:+0:15: +3:6 - StorageLive(_5); // scope 0 at $DIR/generator_drop_cleanup.rs:+0:15: +3:6 - goto -> bb1; // scope 0 at $DIR/generator_drop_cleanup.rs:+0:15: +3:6 + StorageLive(_4); + StorageLive(_5); + goto -> bb1; } bb11: { - return; // scope 0 at $DIR/generator_drop_cleanup.rs:+0:15: +3:6 + return; } } diff --git a/tests/mir-opt/generator_storage_dead_unwind.main-{closure#0}.StateTransform.before.panic-abort.mir b/tests/mir-opt/generator_storage_dead_unwind.main-{closure#0}.StateTransform.before.panic-abort.mir index 5b24dd4602f4f..25c656b3a7332 100644 --- a/tests/mir-opt/generator_storage_dead_unwind.main-{closure#0}.StateTransform.before.panic-abort.mir +++ b/tests/mir-opt/generator_storage_dead_unwind.main-{closure#0}.StateTransform.before.panic-abort.mir @@ -3,87 +3,81 @@ fn main::{closure#0}(_1: [generator@$DIR/generator_storage_dead_unwind.rs:22:16: 22:18], _2: ()) -> () yields () { - let mut _0: (); // return place in scope 0 at $DIR/generator_storage_dead_unwind.rs:+0:19: +0:19 - let _3: Foo; // in scope 0 at $DIR/generator_storage_dead_unwind.rs:+1:13: +1:14 - let _5: (); // in scope 0 at $DIR/generator_storage_dead_unwind.rs:+3:9: +3:14 - let mut _6: (); // in scope 0 at $DIR/generator_storage_dead_unwind.rs:+3:9: +3:14 - let _7: (); // in scope 0 at $DIR/generator_storage_dead_unwind.rs:+4:9: +4:16 - let mut _8: Foo; // in scope 0 at $DIR/generator_storage_dead_unwind.rs:+4:14: +4:15 - let _9: (); // in scope 0 at $DIR/generator_storage_dead_unwind.rs:+5:9: +5:16 - let mut _10: Bar; // in scope 0 at $DIR/generator_storage_dead_unwind.rs:+5:14: +5:15 + let mut _0: (); + let _3: Foo; + let _5: (); + let mut _6: (); + let _7: (); + let mut _8: Foo; + let _9: (); + let mut _10: Bar; scope 1 { - debug a => _3; // in scope 1 at $DIR/generator_storage_dead_unwind.rs:+1:13: +1:14 - let _4: Bar; // in scope 1 at $DIR/generator_storage_dead_unwind.rs:+2:13: +2:14 + debug a => _3; + let _4: Bar; scope 2 { - debug b => _4; // in scope 2 at $DIR/generator_storage_dead_unwind.rs:+2:13: +2:14 + debug b => _4; } } bb0: { - StorageLive(_3); // scope 0 at $DIR/generator_storage_dead_unwind.rs:+1:13: +1:14 - _3 = Foo(const 5_i32); // scope 0 at $DIR/generator_storage_dead_unwind.rs:+1:17: +1:23 - StorageLive(_4); // scope 1 at $DIR/generator_storage_dead_unwind.rs:+2:13: +2:14 - _4 = Bar(const 6_i32); // scope 1 at $DIR/generator_storage_dead_unwind.rs:+2:17: +2:23 - StorageLive(_5); // scope 2 at $DIR/generator_storage_dead_unwind.rs:+3:9: +3:14 - StorageLive(_6); // scope 2 at $DIR/generator_storage_dead_unwind.rs:+3:9: +3:14 - _6 = (); // scope 2 at $DIR/generator_storage_dead_unwind.rs:+3:9: +3:14 - _5 = yield(move _6) -> [resume: bb1, drop: bb6]; // scope 2 at $DIR/generator_storage_dead_unwind.rs:+3:9: +3:14 + StorageLive(_3); + _3 = Foo(const 5_i32); + StorageLive(_4); + _4 = Bar(const 6_i32); + StorageLive(_5); + StorageLive(_6); + _6 = (); + _5 = yield(move _6) -> [resume: bb1, drop: bb6]; } bb1: { - StorageDead(_6); // scope 2 at $DIR/generator_storage_dead_unwind.rs:+3:13: +3:14 - StorageDead(_5); // scope 2 at $DIR/generator_storage_dead_unwind.rs:+3:14: +3:15 - StorageLive(_7); // scope 2 at $DIR/generator_storage_dead_unwind.rs:+4:9: +4:16 - StorageLive(_8); // scope 2 at $DIR/generator_storage_dead_unwind.rs:+4:14: +4:15 - _8 = move _3; // scope 2 at $DIR/generator_storage_dead_unwind.rs:+4:14: +4:15 - _7 = take::(move _8) -> [return: bb2, unwind unreachable]; // scope 2 at $DIR/generator_storage_dead_unwind.rs:+4:9: +4:16 - // mir::Constant - // + span: $DIR/generator_storage_dead_unwind.rs:26:9: 26:13 - // + literal: Const { ty: fn(Foo) {take::}, val: Value() } + StorageDead(_6); + StorageDead(_5); + StorageLive(_7); + StorageLive(_8); + _8 = move _3; + _7 = take::(move _8) -> [return: bb2, unwind unreachable]; } bb2: { - StorageDead(_8); // scope 2 at $DIR/generator_storage_dead_unwind.rs:+4:15: +4:16 - StorageDead(_7); // scope 2 at $DIR/generator_storage_dead_unwind.rs:+4:16: +4:17 - StorageLive(_9); // scope 2 at $DIR/generator_storage_dead_unwind.rs:+5:9: +5:16 - StorageLive(_10); // scope 2 at $DIR/generator_storage_dead_unwind.rs:+5:14: +5:15 - _10 = move _4; // scope 2 at $DIR/generator_storage_dead_unwind.rs:+5:14: +5:15 - _9 = take::(move _10) -> [return: bb3, unwind unreachable]; // scope 2 at $DIR/generator_storage_dead_unwind.rs:+5:9: +5:16 - // mir::Constant - // + span: $DIR/generator_storage_dead_unwind.rs:27:9: 27:13 - // + literal: Const { ty: fn(Bar) {take::}, val: Value() } + StorageDead(_8); + StorageDead(_7); + StorageLive(_9); + StorageLive(_10); + _10 = move _4; + _9 = take::(move _10) -> [return: bb3, unwind unreachable]; } bb3: { - StorageDead(_10); // scope 2 at $DIR/generator_storage_dead_unwind.rs:+5:15: +5:16 - StorageDead(_9); // scope 2 at $DIR/generator_storage_dead_unwind.rs:+5:16: +5:17 - _0 = const (); // scope 0 at $DIR/generator_storage_dead_unwind.rs:+0:19: +6:6 - StorageDead(_4); // scope 1 at $DIR/generator_storage_dead_unwind.rs:+6:5: +6:6 - goto -> bb4; // scope 0 at $DIR/generator_storage_dead_unwind.rs:+6:5: +6:6 + StorageDead(_10); + StorageDead(_9); + _0 = const (); + StorageDead(_4); + goto -> bb4; } bb4: { - StorageDead(_3); // scope 0 at $DIR/generator_storage_dead_unwind.rs:+6:5: +6:6 - drop(_1) -> [return: bb5, unwind unreachable]; // scope 0 at $DIR/generator_storage_dead_unwind.rs:+6:5: +6:6 + StorageDead(_3); + drop(_1) -> [return: bb5, unwind unreachable]; } bb5: { - return; // scope 0 at $DIR/generator_storage_dead_unwind.rs:+6:6: +6:6 + return; } bb6: { - StorageDead(_6); // scope 2 at $DIR/generator_storage_dead_unwind.rs:+3:13: +3:14 - StorageDead(_5); // scope 2 at $DIR/generator_storage_dead_unwind.rs:+3:14: +3:15 - StorageDead(_4); // scope 1 at $DIR/generator_storage_dead_unwind.rs:+6:5: +6:6 - drop(_3) -> [return: bb7, unwind unreachable]; // scope 0 at $DIR/generator_storage_dead_unwind.rs:+6:5: +6:6 + StorageDead(_6); + StorageDead(_5); + StorageDead(_4); + drop(_3) -> [return: bb7, unwind unreachable]; } bb7: { - StorageDead(_3); // scope 0 at $DIR/generator_storage_dead_unwind.rs:+6:5: +6:6 - drop(_1) -> [return: bb8, unwind unreachable]; // scope 0 at $DIR/generator_storage_dead_unwind.rs:+6:5: +6:6 + StorageDead(_3); + drop(_1) -> [return: bb8, unwind unreachable]; } bb8: { - generator_drop; // scope 0 at $DIR/generator_storage_dead_unwind.rs:+0:16: +6:6 + generator_drop; } } diff --git a/tests/mir-opt/generator_storage_dead_unwind.main-{closure#0}.StateTransform.before.panic-unwind.mir b/tests/mir-opt/generator_storage_dead_unwind.main-{closure#0}.StateTransform.before.panic-unwind.mir index 32b472ebeeb58..6a4c5436fce46 100644 --- a/tests/mir-opt/generator_storage_dead_unwind.main-{closure#0}.StateTransform.before.panic-unwind.mir +++ b/tests/mir-opt/generator_storage_dead_unwind.main-{closure#0}.StateTransform.before.panic-unwind.mir @@ -3,122 +3,116 @@ fn main::{closure#0}(_1: [generator@$DIR/generator_storage_dead_unwind.rs:22:16: 22:18], _2: ()) -> () yields () { - let mut _0: (); // return place in scope 0 at $DIR/generator_storage_dead_unwind.rs:+0:19: +0:19 - let _3: Foo; // in scope 0 at $DIR/generator_storage_dead_unwind.rs:+1:13: +1:14 - let _5: (); // in scope 0 at $DIR/generator_storage_dead_unwind.rs:+3:9: +3:14 - let mut _6: (); // in scope 0 at $DIR/generator_storage_dead_unwind.rs:+3:9: +3:14 - let _7: (); // in scope 0 at $DIR/generator_storage_dead_unwind.rs:+4:9: +4:16 - let mut _8: Foo; // in scope 0 at $DIR/generator_storage_dead_unwind.rs:+4:14: +4:15 - let _9: (); // in scope 0 at $DIR/generator_storage_dead_unwind.rs:+5:9: +5:16 - let mut _10: Bar; // in scope 0 at $DIR/generator_storage_dead_unwind.rs:+5:14: +5:15 + let mut _0: (); + let _3: Foo; + let _5: (); + let mut _6: (); + let _7: (); + let mut _8: Foo; + let _9: (); + let mut _10: Bar; scope 1 { - debug a => _3; // in scope 1 at $DIR/generator_storage_dead_unwind.rs:+1:13: +1:14 - let _4: Bar; // in scope 1 at $DIR/generator_storage_dead_unwind.rs:+2:13: +2:14 + debug a => _3; + let _4: Bar; scope 2 { - debug b => _4; // in scope 2 at $DIR/generator_storage_dead_unwind.rs:+2:13: +2:14 + debug b => _4; } } bb0: { - StorageLive(_3); // scope 0 at $DIR/generator_storage_dead_unwind.rs:+1:13: +1:14 - _3 = Foo(const 5_i32); // scope 0 at $DIR/generator_storage_dead_unwind.rs:+1:17: +1:23 - StorageLive(_4); // scope 1 at $DIR/generator_storage_dead_unwind.rs:+2:13: +2:14 - _4 = Bar(const 6_i32); // scope 1 at $DIR/generator_storage_dead_unwind.rs:+2:17: +2:23 - StorageLive(_5); // scope 2 at $DIR/generator_storage_dead_unwind.rs:+3:9: +3:14 - StorageLive(_6); // scope 2 at $DIR/generator_storage_dead_unwind.rs:+3:9: +3:14 - _6 = (); // scope 2 at $DIR/generator_storage_dead_unwind.rs:+3:9: +3:14 - _5 = yield(move _6) -> [resume: bb1, drop: bb6]; // scope 2 at $DIR/generator_storage_dead_unwind.rs:+3:9: +3:14 + StorageLive(_3); + _3 = Foo(const 5_i32); + StorageLive(_4); + _4 = Bar(const 6_i32); + StorageLive(_5); + StorageLive(_6); + _6 = (); + _5 = yield(move _6) -> [resume: bb1, drop: bb6]; } bb1: { - StorageDead(_6); // scope 2 at $DIR/generator_storage_dead_unwind.rs:+3:13: +3:14 - StorageDead(_5); // scope 2 at $DIR/generator_storage_dead_unwind.rs:+3:14: +3:15 - StorageLive(_7); // scope 2 at $DIR/generator_storage_dead_unwind.rs:+4:9: +4:16 - StorageLive(_8); // scope 2 at $DIR/generator_storage_dead_unwind.rs:+4:14: +4:15 - _8 = move _3; // scope 2 at $DIR/generator_storage_dead_unwind.rs:+4:14: +4:15 - _7 = take::(move _8) -> [return: bb2, unwind: bb10]; // scope 2 at $DIR/generator_storage_dead_unwind.rs:+4:9: +4:16 - // mir::Constant - // + span: $DIR/generator_storage_dead_unwind.rs:26:9: 26:13 - // + literal: Const { ty: fn(Foo) {take::}, val: Value() } + StorageDead(_6); + StorageDead(_5); + StorageLive(_7); + StorageLive(_8); + _8 = move _3; + _7 = take::(move _8) -> [return: bb2, unwind: bb10]; } bb2: { - StorageDead(_8); // scope 2 at $DIR/generator_storage_dead_unwind.rs:+4:15: +4:16 - StorageDead(_7); // scope 2 at $DIR/generator_storage_dead_unwind.rs:+4:16: +4:17 - StorageLive(_9); // scope 2 at $DIR/generator_storage_dead_unwind.rs:+5:9: +5:16 - StorageLive(_10); // scope 2 at $DIR/generator_storage_dead_unwind.rs:+5:14: +5:15 - _10 = move _4; // scope 2 at $DIR/generator_storage_dead_unwind.rs:+5:14: +5:15 - _9 = take::(move _10) -> [return: bb3, unwind: bb9]; // scope 2 at $DIR/generator_storage_dead_unwind.rs:+5:9: +5:16 - // mir::Constant - // + span: $DIR/generator_storage_dead_unwind.rs:27:9: 27:13 - // + literal: Const { ty: fn(Bar) {take::}, val: Value() } + StorageDead(_8); + StorageDead(_7); + StorageLive(_9); + StorageLive(_10); + _10 = move _4; + _9 = take::(move _10) -> [return: bb3, unwind: bb9]; } bb3: { - StorageDead(_10); // scope 2 at $DIR/generator_storage_dead_unwind.rs:+5:15: +5:16 - StorageDead(_9); // scope 2 at $DIR/generator_storage_dead_unwind.rs:+5:16: +5:17 - _0 = const (); // scope 0 at $DIR/generator_storage_dead_unwind.rs:+0:19: +6:6 - StorageDead(_4); // scope 1 at $DIR/generator_storage_dead_unwind.rs:+6:5: +6:6 - goto -> bb4; // scope 0 at $DIR/generator_storage_dead_unwind.rs:+6:5: +6:6 + StorageDead(_10); + StorageDead(_9); + _0 = const (); + StorageDead(_4); + goto -> bb4; } bb4: { - StorageDead(_3); // scope 0 at $DIR/generator_storage_dead_unwind.rs:+6:5: +6:6 - drop(_1) -> [return: bb5, unwind: bb14]; // scope 0 at $DIR/generator_storage_dead_unwind.rs:+6:5: +6:6 + StorageDead(_3); + drop(_1) -> [return: bb5, unwind: bb14]; } bb5: { - return; // scope 0 at $DIR/generator_storage_dead_unwind.rs:+6:6: +6:6 + return; } bb6: { - StorageDead(_6); // scope 2 at $DIR/generator_storage_dead_unwind.rs:+3:13: +3:14 - StorageDead(_5); // scope 2 at $DIR/generator_storage_dead_unwind.rs:+3:14: +3:15 - StorageDead(_4); // scope 1 at $DIR/generator_storage_dead_unwind.rs:+6:5: +6:6 - drop(_3) -> [return: bb7, unwind: bb15]; // scope 0 at $DIR/generator_storage_dead_unwind.rs:+6:5: +6:6 + StorageDead(_6); + StorageDead(_5); + StorageDead(_4); + drop(_3) -> [return: bb7, unwind: bb15]; } bb7: { - StorageDead(_3); // scope 0 at $DIR/generator_storage_dead_unwind.rs:+6:5: +6:6 - drop(_1) -> [return: bb8, unwind: bb14]; // scope 0 at $DIR/generator_storage_dead_unwind.rs:+6:5: +6:6 + StorageDead(_3); + drop(_1) -> [return: bb8, unwind: bb14]; } bb8: { - generator_drop; // scope 0 at $DIR/generator_storage_dead_unwind.rs:+0:16: +6:6 + generator_drop; } bb9 (cleanup): { - StorageDead(_10); // scope 2 at $DIR/generator_storage_dead_unwind.rs:+5:15: +5:16 - StorageDead(_9); // scope 2 at $DIR/generator_storage_dead_unwind.rs:+5:16: +5:17 - goto -> bb12; // scope 2 at no-location + StorageDead(_10); + StorageDead(_9); + goto -> bb12; } bb10 (cleanup): { - goto -> bb11; // scope 2 at $DIR/generator_storage_dead_unwind.rs:+4:15: +4:16 + goto -> bb11; } bb11 (cleanup): { - StorageDead(_8); // scope 2 at $DIR/generator_storage_dead_unwind.rs:+4:15: +4:16 - StorageDead(_7); // scope 2 at $DIR/generator_storage_dead_unwind.rs:+4:16: +4:17 - goto -> bb12; // scope 2 at no-location + StorageDead(_8); + StorageDead(_7); + goto -> bb12; } bb12 (cleanup): { - StorageDead(_4); // scope 1 at $DIR/generator_storage_dead_unwind.rs:+6:5: +6:6 - goto -> bb13; // scope 0 at $DIR/generator_storage_dead_unwind.rs:+6:5: +6:6 + StorageDead(_4); + goto -> bb13; } bb13 (cleanup): { - StorageDead(_3); // scope 0 at $DIR/generator_storage_dead_unwind.rs:+6:5: +6:6 - drop(_1) -> [return: bb14, unwind terminate]; // scope 0 at $DIR/generator_storage_dead_unwind.rs:+6:5: +6:6 + StorageDead(_3); + drop(_1) -> [return: bb14, unwind terminate]; } bb14 (cleanup): { - resume; // scope 0 at $DIR/generator_storage_dead_unwind.rs:+0:16: +6:6 + resume; } bb15 (cleanup): { - StorageDead(_3); // scope 0 at $DIR/generator_storage_dead_unwind.rs:+6:5: +6:6 - drop(_1) -> [return: bb14, unwind terminate]; // scope 0 at $DIR/generator_storage_dead_unwind.rs:+6:5: +6:6 + StorageDead(_3); + drop(_1) -> [return: bb14, unwind terminate]; } } diff --git a/tests/mir-opt/generator_tiny.main-{closure#0}.generator_resume.0.mir b/tests/mir-opt/generator_tiny.main-{closure#0}.generator_resume.0.mir index dc9bb533f132b..13d703b908cc8 100644 --- a/tests/mir-opt/generator_tiny.main-{closure#0}.generator_resume.0.mir +++ b/tests/mir-opt/generator_tiny.main-{closure#0}.generator_resume.0.mir @@ -22,68 +22,65 @@ } */ fn main::{closure#0}(_1: Pin<&mut [generator@$DIR/generator_tiny.rs:19:16: 19:24]>, _2: u8) -> GeneratorState<(), ()> { - debug _x => _10; // in scope 0 at $DIR/generator_tiny.rs:+0:17: +0:19 - let mut _0: std::ops::GeneratorState<(), ()>; // return place in scope 0 at $DIR/generator_tiny.rs:+0:16: +6:6 - let _3: HasDrop; // in scope 0 at $DIR/generator_tiny.rs:+1:13: +1:15 - let mut _4: !; // in scope 0 at $DIR/generator_tiny.rs:+2:9: +5:10 - let mut _5: (); // in scope 0 at $DIR/generator_tiny.rs:+0:16: +6:6 - let _6: u8; // in scope 0 at $DIR/generator_tiny.rs:+3:13: +3:18 - let mut _7: (); // in scope 0 at $DIR/generator_tiny.rs:+3:13: +3:18 - let _8: (); // in scope 0 at $DIR/generator_tiny.rs:+4:13: +4:21 - let mut _9: (); // in scope 0 at $DIR/generator_tiny.rs:+0:25: +0:25 - let _10: u8; // in scope 0 at $DIR/generator_tiny.rs:+0:17: +0:19 - let mut _11: u32; // in scope 0 at $DIR/generator_tiny.rs:+0:16: +6:6 + debug _x => _10; + let mut _0: std::ops::GeneratorState<(), ()>; + let _3: HasDrop; + let mut _4: !; + let mut _5: (); + let _6: u8; + let mut _7: (); + let _8: (); + let mut _9: (); + let _10: u8; + let mut _11: u32; scope 1 { - debug _d => (((*(_1.0: &mut [generator@$DIR/generator_tiny.rs:19:16: 19:24])) as variant#3).0: HasDrop); // in scope 1 at $DIR/generator_tiny.rs:+1:13: +1:15 + debug _d => (((*(_1.0: &mut [generator@$DIR/generator_tiny.rs:19:16: 19:24])) as variant#3).0: HasDrop); } bb0: { - _11 = discriminant((*(_1.0: &mut [generator@$DIR/generator_tiny.rs:19:16: 19:24]))); // scope 0 at $DIR/generator_tiny.rs:+0:16: +6:6 - switchInt(move _11) -> [0: bb1, 3: bb5, otherwise: bb6]; // scope 0 at $DIR/generator_tiny.rs:+0:16: +6:6 + _11 = discriminant((*(_1.0: &mut [generator@$DIR/generator_tiny.rs:19:16: 19:24]))); + switchInt(move _11) -> [0: bb1, 3: bb5, otherwise: bb6]; } bb1: { - _10 = move _2; // scope 0 at $DIR/generator_tiny.rs:+0:16: +6:6 - nop; // scope 0 at $DIR/generator_tiny.rs:+1:13: +1:15 - (((*(_1.0: &mut [generator@$DIR/generator_tiny.rs:19:16: 19:24])) as variant#3).0: HasDrop) = HasDrop; // scope 0 at $DIR/generator_tiny.rs:+1:18: +1:25 - StorageLive(_4); // scope 1 at $DIR/generator_tiny.rs:+2:9: +5:10 - goto -> bb2; // scope 1 at $DIR/generator_tiny.rs:+2:9: +5:10 + _10 = move _2; + nop; + (((*(_1.0: &mut [generator@$DIR/generator_tiny.rs:19:16: 19:24])) as variant#3).0: HasDrop) = HasDrop; + StorageLive(_4); + goto -> bb2; } bb2: { - StorageLive(_6); // scope 1 at $DIR/generator_tiny.rs:+3:13: +3:18 - StorageLive(_7); // scope 1 at $DIR/generator_tiny.rs:+3:13: +3:18 - _7 = (); // scope 1 at $DIR/generator_tiny.rs:+3:13: +3:18 - _0 = GeneratorState::<(), ()>::Yielded(move _7); // scope 1 at $DIR/generator_tiny.rs:+3:13: +3:18 - discriminant((*(_1.0: &mut [generator@$DIR/generator_tiny.rs:19:16: 19:24]))) = 3; // scope 1 at $DIR/generator_tiny.rs:+3:13: +3:18 - return; // scope 1 at $DIR/generator_tiny.rs:+3:13: +3:18 + StorageLive(_6); + StorageLive(_7); + _7 = (); + _0 = GeneratorState::<(), ()>::Yielded(move _7); + discriminant((*(_1.0: &mut [generator@$DIR/generator_tiny.rs:19:16: 19:24]))) = 3; + return; } bb3: { - StorageDead(_7); // scope 1 at $DIR/generator_tiny.rs:+3:17: +3:18 - StorageDead(_6); // scope 1 at $DIR/generator_tiny.rs:+3:18: +3:19 - StorageLive(_8); // scope 1 at $DIR/generator_tiny.rs:+4:13: +4:21 - _8 = callee() -> [return: bb4, unwind unreachable]; // scope 1 at $DIR/generator_tiny.rs:+4:13: +4:21 - // mir::Constant - // + span: $DIR/generator_tiny.rs:23:13: 23:19 - // + literal: Const { ty: fn() {callee}, val: Value() } + StorageDead(_7); + StorageDead(_6); + StorageLive(_8); + _8 = callee() -> [return: bb4, unwind unreachable]; } bb4: { - StorageDead(_8); // scope 1 at $DIR/generator_tiny.rs:+4:21: +4:22 - _5 = const (); // scope 1 at $DIR/generator_tiny.rs:+2:14: +5:10 - goto -> bb2; // scope 1 at $DIR/generator_tiny.rs:+2:9: +5:10 + StorageDead(_8); + _5 = const (); + goto -> bb2; } bb5: { - StorageLive(_4); // scope 0 at $DIR/generator_tiny.rs:+0:16: +6:6 - StorageLive(_6); // scope 0 at $DIR/generator_tiny.rs:+0:16: +6:6 - StorageLive(_7); // scope 0 at $DIR/generator_tiny.rs:+0:16: +6:6 - _6 = move _2; // scope 0 at $DIR/generator_tiny.rs:+0:16: +6:6 - goto -> bb3; // scope 0 at $DIR/generator_tiny.rs:+0:16: +6:6 + StorageLive(_4); + StorageLive(_6); + StorageLive(_7); + _6 = move _2; + goto -> bb3; } bb6: { - unreachable; // scope 0 at $DIR/generator_tiny.rs:+0:16: +6:6 + unreachable; } } diff --git a/tests/mir-opt/if_condition_int.dont_opt_bool.SimplifyComparisonIntegral.diff b/tests/mir-opt/if_condition_int.dont_opt_bool.SimplifyComparisonIntegral.diff index de4235c9e9e93..083515aebc69d 100644 --- a/tests/mir-opt/if_condition_int.dont_opt_bool.SimplifyComparisonIntegral.diff +++ b/tests/mir-opt/if_condition_int.dont_opt_bool.SimplifyComparisonIntegral.diff @@ -2,29 +2,29 @@ + // MIR for `dont_opt_bool` after SimplifyComparisonIntegral fn dont_opt_bool(_1: bool) -> u32 { - debug x => _1; // in scope 0 at $DIR/if_condition_int.rs:+0:18: +0:19 - let mut _0: u32; // return place in scope 0 at $DIR/if_condition_int.rs:+0:30: +0:33 - let mut _2: bool; // in scope 0 at $DIR/if_condition_int.rs:+1:8: +1:9 + debug x => _1; + let mut _0: u32; + let mut _2: bool; bb0: { - StorageLive(_2); // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:9 - _2 = _1; // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:9 - switchInt(move _2) -> [0: bb2, otherwise: bb1]; // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:9 + StorageLive(_2); + _2 = _1; + switchInt(move _2) -> [0: bb2, otherwise: bb1]; } bb1: { - _0 = const 0_u32; // scope 0 at $DIR/if_condition_int.rs:+1:12: +1:13 - goto -> bb3; // scope 0 at $DIR/if_condition_int.rs:+1:5: +1:26 + _0 = const 0_u32; + goto -> bb3; } bb2: { - _0 = const 1_u32; // scope 0 at $DIR/if_condition_int.rs:+1:23: +1:24 - goto -> bb3; // scope 0 at $DIR/if_condition_int.rs:+1:5: +1:26 + _0 = const 1_u32; + goto -> bb3; } bb3: { - StorageDead(_2); // scope 0 at $DIR/if_condition_int.rs:+1:25: +1:26 - return; // scope 0 at $DIR/if_condition_int.rs:+2:2: +2:2 + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/if_condition_int.dont_opt_floats.SimplifyComparisonIntegral.diff b/tests/mir-opt/if_condition_int.dont_opt_floats.SimplifyComparisonIntegral.diff index 754c6579af08f..8483b89f81477 100644 --- a/tests/mir-opt/if_condition_int.dont_opt_floats.SimplifyComparisonIntegral.diff +++ b/tests/mir-opt/if_condition_int.dont_opt_floats.SimplifyComparisonIntegral.diff @@ -2,33 +2,33 @@ + // MIR for `dont_opt_floats` after SimplifyComparisonIntegral fn dont_opt_floats(_1: f32) -> i32 { - debug a => _1; // in scope 0 at $DIR/if_condition_int.rs:+0:20: +0:21 - let mut _0: i32; // return place in scope 0 at $DIR/if_condition_int.rs:+0:31: +0:34 - let mut _2: bool; // in scope 0 at $DIR/if_condition_int.rs:+1:8: +1:18 - let mut _3: f32; // in scope 0 at $DIR/if_condition_int.rs:+1:8: +1:9 + debug a => _1; + let mut _0: i32; + let mut _2: bool; + let mut _3: f32; bb0: { - StorageLive(_2); // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:18 - StorageLive(_3); // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:9 - _3 = _1; // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:9 - _2 = Eq(move _3, const -42f32); // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:18 - StorageDead(_3); // scope 0 at $DIR/if_condition_int.rs:+1:17: +1:18 - switchInt(move _2) -> [0: bb2, otherwise: bb1]; // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:18 + StorageLive(_2); + StorageLive(_3); + _3 = _1; + _2 = Eq(move _3, const -42f32); + StorageDead(_3); + switchInt(move _2) -> [0: bb2, otherwise: bb1]; } bb1: { - _0 = const 0_i32; // scope 0 at $DIR/if_condition_int.rs:+1:21: +1:22 - goto -> bb3; // scope 0 at $DIR/if_condition_int.rs:+1:5: +1:35 + _0 = const 0_i32; + goto -> bb3; } bb2: { - _0 = const 1_i32; // scope 0 at $DIR/if_condition_int.rs:+1:32: +1:33 - goto -> bb3; // scope 0 at $DIR/if_condition_int.rs:+1:5: +1:35 + _0 = const 1_i32; + goto -> bb3; } bb3: { - StorageDead(_2); // scope 0 at $DIR/if_condition_int.rs:+1:34: +1:35 - return; // scope 0 at $DIR/if_condition_int.rs:+2:2: +2:2 + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/if_condition_int.dont_remove_comparison.SimplifyComparisonIntegral.diff b/tests/mir-opt/if_condition_int.dont_remove_comparison.SimplifyComparisonIntegral.diff index ff23839e29179..218d7fd59b735 100644 --- a/tests/mir-opt/if_condition_int.dont_remove_comparison.SimplifyComparisonIntegral.diff +++ b/tests/mir-opt/if_condition_int.dont_remove_comparison.SimplifyComparisonIntegral.diff @@ -2,57 +2,57 @@ + // MIR for `dont_remove_comparison` after SimplifyComparisonIntegral fn dont_remove_comparison(_1: i8) -> i32 { - debug a => _1; // in scope 0 at $DIR/if_condition_int.rs:+0:27: +0:28 - let mut _0: i32; // return place in scope 0 at $DIR/if_condition_int.rs:+0:37: +0:40 - let _2: bool; // in scope 0 at $DIR/if_condition_int.rs:+1:9: +1:10 - let mut _3: i8; // in scope 0 at $DIR/if_condition_int.rs:+1:13: +1:14 - let mut _4: i32; // in scope 0 at $DIR/if_condition_int.rs:+3:23: +3:31 - let mut _5: bool; // in scope 0 at $DIR/if_condition_int.rs:+3:23: +3:24 - let mut _6: i32; // in scope 0 at $DIR/if_condition_int.rs:+4:23: +4:31 - let mut _7: bool; // in scope 0 at $DIR/if_condition_int.rs:+4:23: +4:24 + debug a => _1; + let mut _0: i32; + let _2: bool; + let mut _3: i8; + let mut _4: i32; + let mut _5: bool; + let mut _6: i32; + let mut _7: bool; scope 1 { - debug b => _2; // in scope 1 at $DIR/if_condition_int.rs:+1:9: +1:10 + debug b => _2; } bb0: { - StorageLive(_2); // scope 0 at $DIR/if_condition_int.rs:+1:9: +1:10 - StorageLive(_3); // scope 0 at $DIR/if_condition_int.rs:+1:13: +1:14 - _3 = _1; // scope 0 at $DIR/if_condition_int.rs:+1:13: +1:14 -- _2 = Eq(move _3, const 17_i8); // scope 0 at $DIR/if_condition_int.rs:+1:13: +1:20 -- StorageDead(_3); // scope 0 at $DIR/if_condition_int.rs:+1:19: +1:20 -- switchInt(_2) -> [0: bb2, otherwise: bb1]; // scope 1 at $DIR/if_condition_int.rs:+2:5: +2:12 -+ _2 = Eq(_3, const 17_i8); // scope 0 at $DIR/if_condition_int.rs:+1:13: +1:20 -+ nop; // scope 0 at $DIR/if_condition_int.rs:+1:19: +1:20 -+ switchInt(move _3) -> [17: bb1, otherwise: bb2]; // scope 1 at $DIR/if_condition_int.rs:+2:5: +2:12 + StorageLive(_2); + StorageLive(_3); + _3 = _1; +- _2 = Eq(move _3, const 17_i8); +- StorageDead(_3); +- switchInt(_2) -> [0: bb2, otherwise: bb1]; ++ _2 = Eq(_3, const 17_i8); ++ nop; ++ switchInt(move _3) -> [17: bb1, otherwise: bb2]; } bb1: { -+ StorageDead(_3); // scope 1 at $DIR/if_condition_int.rs:+2:5: +2:12 - StorageLive(_6); // scope 1 at $DIR/if_condition_int.rs:+4:23: +4:31 - StorageLive(_7); // scope 1 at $DIR/if_condition_int.rs:+4:23: +4:24 - _7 = _2; // scope 1 at $DIR/if_condition_int.rs:+4:23: +4:24 - _6 = move _7 as i32 (IntToInt); // scope 1 at $DIR/if_condition_int.rs:+4:23: +4:31 - StorageDead(_7); // scope 1 at $DIR/if_condition_int.rs:+4:30: +4:31 - _0 = Add(const 100_i32, move _6); // scope 1 at $DIR/if_condition_int.rs:+4:17: +4:31 - StorageDead(_6); // scope 1 at $DIR/if_condition_int.rs:+4:30: +4:31 - goto -> bb3; // scope 1 at $DIR/if_condition_int.rs:+4:30: +4:31 ++ StorageDead(_3); + StorageLive(_6); + StorageLive(_7); + _7 = _2; + _6 = move _7 as i32 (IntToInt); + StorageDead(_7); + _0 = Add(const 100_i32, move _6); + StorageDead(_6); + goto -> bb3; } bb2: { -+ StorageDead(_3); // scope 1 at $DIR/if_condition_int.rs:+2:5: +2:12 - StorageLive(_4); // scope 1 at $DIR/if_condition_int.rs:+3:23: +3:31 - StorageLive(_5); // scope 1 at $DIR/if_condition_int.rs:+3:23: +3:24 - _5 = _2; // scope 1 at $DIR/if_condition_int.rs:+3:23: +3:24 - _4 = move _5 as i32 (IntToInt); // scope 1 at $DIR/if_condition_int.rs:+3:23: +3:31 - StorageDead(_5); // scope 1 at $DIR/if_condition_int.rs:+3:30: +3:31 - _0 = Add(const 10_i32, move _4); // scope 1 at $DIR/if_condition_int.rs:+3:18: +3:31 - StorageDead(_4); // scope 1 at $DIR/if_condition_int.rs:+3:30: +3:31 - goto -> bb3; // scope 1 at $DIR/if_condition_int.rs:+3:30: +3:31 ++ StorageDead(_3); + StorageLive(_4); + StorageLive(_5); + _5 = _2; + _4 = move _5 as i32 (IntToInt); + StorageDead(_5); + _0 = Add(const 10_i32, move _4); + StorageDead(_4); + goto -> bb3; } bb3: { - StorageDead(_2); // scope 0 at $DIR/if_condition_int.rs:+6:1: +6:2 - return; // scope 0 at $DIR/if_condition_int.rs:+6:2: +6:2 + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/if_condition_int.opt_char.SimplifyComparisonIntegral.diff b/tests/mir-opt/if_condition_int.opt_char.SimplifyComparisonIntegral.diff index 5964d76a4b96f..837841b009b79 100644 --- a/tests/mir-opt/if_condition_int.opt_char.SimplifyComparisonIntegral.diff +++ b/tests/mir-opt/if_condition_int.opt_char.SimplifyComparisonIntegral.diff @@ -2,38 +2,38 @@ + // MIR for `opt_char` after SimplifyComparisonIntegral fn opt_char(_1: char) -> u32 { - debug x => _1; // in scope 0 at $DIR/if_condition_int.rs:+0:13: +0:14 - let mut _0: u32; // return place in scope 0 at $DIR/if_condition_int.rs:+0:25: +0:28 - let mut _2: bool; // in scope 0 at $DIR/if_condition_int.rs:+1:8: +1:16 - let mut _3: char; // in scope 0 at $DIR/if_condition_int.rs:+1:8: +1:9 + debug x => _1; + let mut _0: u32; + let mut _2: bool; + let mut _3: char; bb0: { - StorageLive(_2); // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:16 - StorageLive(_3); // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:9 - _3 = _1; // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:9 -- _2 = Eq(move _3, const 'x'); // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:16 -- StorageDead(_3); // scope 0 at $DIR/if_condition_int.rs:+1:15: +1:16 -- switchInt(move _2) -> [0: bb2, otherwise: bb1]; // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:16 -+ nop; // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:16 -+ nop; // scope 0 at $DIR/if_condition_int.rs:+1:15: +1:16 -+ switchInt(move _3) -> [120: bb1, otherwise: bb2]; // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:16 + StorageLive(_2); + StorageLive(_3); + _3 = _1; +- _2 = Eq(move _3, const 'x'); +- StorageDead(_3); +- switchInt(move _2) -> [0: bb2, otherwise: bb1]; ++ nop; ++ nop; ++ switchInt(move _3) -> [120: bb1, otherwise: bb2]; } bb1: { -+ StorageDead(_3); // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:16 - _0 = const 0_u32; // scope 0 at $DIR/if_condition_int.rs:+1:19: +1:20 - goto -> bb3; // scope 0 at $DIR/if_condition_int.rs:+1:5: +1:33 ++ StorageDead(_3); + _0 = const 0_u32; + goto -> bb3; } bb2: { -+ StorageDead(_3); // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:16 - _0 = const 1_u32; // scope 0 at $DIR/if_condition_int.rs:+1:30: +1:31 - goto -> bb3; // scope 0 at $DIR/if_condition_int.rs:+1:5: +1:33 ++ StorageDead(_3); + _0 = const 1_u32; + goto -> bb3; } bb3: { - StorageDead(_2); // scope 0 at $DIR/if_condition_int.rs:+1:32: +1:33 - return; // scope 0 at $DIR/if_condition_int.rs:+2:2: +2:2 + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/if_condition_int.opt_i8.SimplifyComparisonIntegral.diff b/tests/mir-opt/if_condition_int.opt_i8.SimplifyComparisonIntegral.diff index 98918cc743ce0..3cbf912996cc5 100644 --- a/tests/mir-opt/if_condition_int.opt_i8.SimplifyComparisonIntegral.diff +++ b/tests/mir-opt/if_condition_int.opt_i8.SimplifyComparisonIntegral.diff @@ -2,38 +2,38 @@ + // MIR for `opt_i8` after SimplifyComparisonIntegral fn opt_i8(_1: i8) -> u32 { - debug x => _1; // in scope 0 at $DIR/if_condition_int.rs:+0:11: +0:12 - let mut _0: u32; // return place in scope 0 at $DIR/if_condition_int.rs:+0:21: +0:24 - let mut _2: bool; // in scope 0 at $DIR/if_condition_int.rs:+1:8: +1:15 - let mut _3: i8; // in scope 0 at $DIR/if_condition_int.rs:+1:8: +1:9 + debug x => _1; + let mut _0: u32; + let mut _2: bool; + let mut _3: i8; bb0: { - StorageLive(_2); // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:15 - StorageLive(_3); // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:9 - _3 = _1; // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:9 -- _2 = Eq(move _3, const 42_i8); // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:15 -- StorageDead(_3); // scope 0 at $DIR/if_condition_int.rs:+1:14: +1:15 -- switchInt(move _2) -> [0: bb2, otherwise: bb1]; // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:15 -+ nop; // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:15 -+ nop; // scope 0 at $DIR/if_condition_int.rs:+1:14: +1:15 -+ switchInt(move _3) -> [42: bb1, otherwise: bb2]; // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:15 + StorageLive(_2); + StorageLive(_3); + _3 = _1; +- _2 = Eq(move _3, const 42_i8); +- StorageDead(_3); +- switchInt(move _2) -> [0: bb2, otherwise: bb1]; ++ nop; ++ nop; ++ switchInt(move _3) -> [42: bb1, otherwise: bb2]; } bb1: { -+ StorageDead(_3); // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:15 - _0 = const 0_u32; // scope 0 at $DIR/if_condition_int.rs:+1:18: +1:19 - goto -> bb3; // scope 0 at $DIR/if_condition_int.rs:+1:5: +1:32 ++ StorageDead(_3); + _0 = const 0_u32; + goto -> bb3; } bb2: { -+ StorageDead(_3); // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:15 - _0 = const 1_u32; // scope 0 at $DIR/if_condition_int.rs:+1:29: +1:30 - goto -> bb3; // scope 0 at $DIR/if_condition_int.rs:+1:5: +1:32 ++ StorageDead(_3); + _0 = const 1_u32; + goto -> bb3; } bb3: { - StorageDead(_2); // scope 0 at $DIR/if_condition_int.rs:+1:31: +1:32 - return; // scope 0 at $DIR/if_condition_int.rs:+2:2: +2:2 + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/if_condition_int.opt_multiple_ifs.SimplifyComparisonIntegral.diff b/tests/mir-opt/if_condition_int.opt_multiple_ifs.SimplifyComparisonIntegral.diff index db38140b8d00b..8d6f3b2249e87 100644 --- a/tests/mir-opt/if_condition_int.opt_multiple_ifs.SimplifyComparisonIntegral.diff +++ b/tests/mir-opt/if_condition_int.opt_multiple_ifs.SimplifyComparisonIntegral.diff @@ -2,64 +2,64 @@ + // MIR for `opt_multiple_ifs` after SimplifyComparisonIntegral fn opt_multiple_ifs(_1: u32) -> u32 { - debug x => _1; // in scope 0 at $DIR/if_condition_int.rs:+0:21: +0:22 - let mut _0: u32; // return place in scope 0 at $DIR/if_condition_int.rs:+0:32: +0:35 - let mut _2: bool; // in scope 0 at $DIR/if_condition_int.rs:+1:8: +1:15 - let mut _3: u32; // in scope 0 at $DIR/if_condition_int.rs:+1:8: +1:9 - let mut _4: bool; // in scope 0 at $DIR/if_condition_int.rs:+3:15: +3:22 - let mut _5: u32; // in scope 0 at $DIR/if_condition_int.rs:+3:15: +3:16 + debug x => _1; + let mut _0: u32; + let mut _2: bool; + let mut _3: u32; + let mut _4: bool; + let mut _5: u32; bb0: { - StorageLive(_2); // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:15 - StorageLive(_3); // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:9 - _3 = _1; // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:9 -- _2 = Eq(move _3, const 42_u32); // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:15 -- StorageDead(_3); // scope 0 at $DIR/if_condition_int.rs:+1:14: +1:15 -- switchInt(move _2) -> [0: bb2, otherwise: bb1]; // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:15 -+ nop; // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:15 -+ nop; // scope 0 at $DIR/if_condition_int.rs:+1:14: +1:15 -+ switchInt(move _3) -> [42: bb1, otherwise: bb2]; // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:15 + StorageLive(_2); + StorageLive(_3); + _3 = _1; +- _2 = Eq(move _3, const 42_u32); +- StorageDead(_3); +- switchInt(move _2) -> [0: bb2, otherwise: bb1]; ++ nop; ++ nop; ++ switchInt(move _3) -> [42: bb1, otherwise: bb2]; } bb1: { -+ StorageDead(_3); // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:15 - _0 = const 0_u32; // scope 0 at $DIR/if_condition_int.rs:+2:9: +2:10 - goto -> bb6; // scope 0 at $DIR/if_condition_int.rs:+1:5: +7:6 ++ StorageDead(_3); + _0 = const 0_u32; + goto -> bb6; } bb2: { -+ StorageDead(_3); // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:15 - StorageLive(_4); // scope 0 at $DIR/if_condition_int.rs:+3:15: +3:22 - StorageLive(_5); // scope 0 at $DIR/if_condition_int.rs:+3:15: +3:16 - _5 = _1; // scope 0 at $DIR/if_condition_int.rs:+3:15: +3:16 -- _4 = Ne(move _5, const 21_u32); // scope 0 at $DIR/if_condition_int.rs:+3:15: +3:22 -- StorageDead(_5); // scope 0 at $DIR/if_condition_int.rs:+3:21: +3:22 -- switchInt(move _4) -> [0: bb4, otherwise: bb3]; // scope 0 at $DIR/if_condition_int.rs:+3:15: +3:22 -+ nop; // scope 0 at $DIR/if_condition_int.rs:+3:15: +3:22 -+ nop; // scope 0 at $DIR/if_condition_int.rs:+3:21: +3:22 -+ switchInt(move _5) -> [21: bb4, otherwise: bb3]; // scope 0 at $DIR/if_condition_int.rs:+3:15: +3:22 ++ StorageDead(_3); + StorageLive(_4); + StorageLive(_5); + _5 = _1; +- _4 = Ne(move _5, const 21_u32); +- StorageDead(_5); +- switchInt(move _4) -> [0: bb4, otherwise: bb3]; ++ nop; ++ nop; ++ switchInt(move _5) -> [21: bb4, otherwise: bb3]; } bb3: { -+ StorageDead(_5); // scope 0 at $DIR/if_condition_int.rs:+3:15: +3:22 - _0 = const 1_u32; // scope 0 at $DIR/if_condition_int.rs:+4:9: +4:10 - goto -> bb5; // scope 0 at $DIR/if_condition_int.rs:+3:12: +7:6 ++ StorageDead(_5); + _0 = const 1_u32; + goto -> bb5; } bb4: { -+ StorageDead(_5); // scope 0 at $DIR/if_condition_int.rs:+3:15: +3:22 - _0 = const 2_u32; // scope 0 at $DIR/if_condition_int.rs:+6:9: +6:10 - goto -> bb5; // scope 0 at $DIR/if_condition_int.rs:+3:12: +7:6 ++ StorageDead(_5); + _0 = const 2_u32; + goto -> bb5; } bb5: { - StorageDead(_4); // scope 0 at $DIR/if_condition_int.rs:+7:5: +7:6 - goto -> bb6; // scope 0 at $DIR/if_condition_int.rs:+1:5: +7:6 + StorageDead(_4); + goto -> bb6; } bb6: { - StorageDead(_2); // scope 0 at $DIR/if_condition_int.rs:+7:5: +7:6 - return; // scope 0 at $DIR/if_condition_int.rs:+8:2: +8:2 + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/if_condition_int.opt_negative.SimplifyComparisonIntegral.diff b/tests/mir-opt/if_condition_int.opt_negative.SimplifyComparisonIntegral.diff index 1a1ac4caafaf0..e2566b13c598c 100644 --- a/tests/mir-opt/if_condition_int.opt_negative.SimplifyComparisonIntegral.diff +++ b/tests/mir-opt/if_condition_int.opt_negative.SimplifyComparisonIntegral.diff @@ -2,38 +2,38 @@ + // MIR for `opt_negative` after SimplifyComparisonIntegral fn opt_negative(_1: i32) -> u32 { - debug x => _1; // in scope 0 at $DIR/if_condition_int.rs:+0:17: +0:18 - let mut _0: u32; // return place in scope 0 at $DIR/if_condition_int.rs:+0:28: +0:31 - let mut _2: bool; // in scope 0 at $DIR/if_condition_int.rs:+1:8: +1:16 - let mut _3: i32; // in scope 0 at $DIR/if_condition_int.rs:+1:8: +1:9 + debug x => _1; + let mut _0: u32; + let mut _2: bool; + let mut _3: i32; bb0: { - StorageLive(_2); // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:16 - StorageLive(_3); // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:9 - _3 = _1; // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:9 -- _2 = Eq(move _3, const -42_i32); // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:16 -- StorageDead(_3); // scope 0 at $DIR/if_condition_int.rs:+1:15: +1:16 -- switchInt(move _2) -> [0: bb2, otherwise: bb1]; // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:16 -+ nop; // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:16 -+ nop; // scope 0 at $DIR/if_condition_int.rs:+1:15: +1:16 -+ switchInt(move _3) -> [4294967254: bb1, otherwise: bb2]; // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:16 + StorageLive(_2); + StorageLive(_3); + _3 = _1; +- _2 = Eq(move _3, const -42_i32); +- StorageDead(_3); +- switchInt(move _2) -> [0: bb2, otherwise: bb1]; ++ nop; ++ nop; ++ switchInt(move _3) -> [4294967254: bb1, otherwise: bb2]; } bb1: { -+ StorageDead(_3); // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:16 - _0 = const 0_u32; // scope 0 at $DIR/if_condition_int.rs:+1:19: +1:20 - goto -> bb3; // scope 0 at $DIR/if_condition_int.rs:+1:5: +1:33 ++ StorageDead(_3); + _0 = const 0_u32; + goto -> bb3; } bb2: { -+ StorageDead(_3); // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:16 - _0 = const 1_u32; // scope 0 at $DIR/if_condition_int.rs:+1:30: +1:31 - goto -> bb3; // scope 0 at $DIR/if_condition_int.rs:+1:5: +1:33 ++ StorageDead(_3); + _0 = const 1_u32; + goto -> bb3; } bb3: { - StorageDead(_2); // scope 0 at $DIR/if_condition_int.rs:+1:32: +1:33 - return; // scope 0 at $DIR/if_condition_int.rs:+2:2: +2:2 + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/if_condition_int.opt_u32.SimplifyComparisonIntegral.diff b/tests/mir-opt/if_condition_int.opt_u32.SimplifyComparisonIntegral.diff index fc3f50227dcb9..dc8da5b44b219 100644 --- a/tests/mir-opt/if_condition_int.opt_u32.SimplifyComparisonIntegral.diff +++ b/tests/mir-opt/if_condition_int.opt_u32.SimplifyComparisonIntegral.diff @@ -2,38 +2,38 @@ + // MIR for `opt_u32` after SimplifyComparisonIntegral fn opt_u32(_1: u32) -> u32 { - debug x => _1; // in scope 0 at $DIR/if_condition_int.rs:+0:12: +0:13 - let mut _0: u32; // return place in scope 0 at $DIR/if_condition_int.rs:+0:23: +0:26 - let mut _2: bool; // in scope 0 at $DIR/if_condition_int.rs:+1:8: +1:15 - let mut _3: u32; // in scope 0 at $DIR/if_condition_int.rs:+1:8: +1:9 + debug x => _1; + let mut _0: u32; + let mut _2: bool; + let mut _3: u32; bb0: { - StorageLive(_2); // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:15 - StorageLive(_3); // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:9 - _3 = _1; // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:9 -- _2 = Eq(move _3, const 42_u32); // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:15 -- StorageDead(_3); // scope 0 at $DIR/if_condition_int.rs:+1:14: +1:15 -- switchInt(move _2) -> [0: bb2, otherwise: bb1]; // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:15 -+ nop; // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:15 -+ nop; // scope 0 at $DIR/if_condition_int.rs:+1:14: +1:15 -+ switchInt(move _3) -> [42: bb1, otherwise: bb2]; // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:15 + StorageLive(_2); + StorageLive(_3); + _3 = _1; +- _2 = Eq(move _3, const 42_u32); +- StorageDead(_3); +- switchInt(move _2) -> [0: bb2, otherwise: bb1]; ++ nop; ++ nop; ++ switchInt(move _3) -> [42: bb1, otherwise: bb2]; } bb1: { -+ StorageDead(_3); // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:15 - _0 = const 0_u32; // scope 0 at $DIR/if_condition_int.rs:+1:18: +1:19 - goto -> bb3; // scope 0 at $DIR/if_condition_int.rs:+1:5: +1:32 ++ StorageDead(_3); + _0 = const 0_u32; + goto -> bb3; } bb2: { -+ StorageDead(_3); // scope 0 at $DIR/if_condition_int.rs:+1:8: +1:15 - _0 = const 1_u32; // scope 0 at $DIR/if_condition_int.rs:+1:29: +1:30 - goto -> bb3; // scope 0 at $DIR/if_condition_int.rs:+1:5: +1:32 ++ StorageDead(_3); + _0 = const 1_u32; + goto -> bb3; } bb3: { - StorageDead(_2); // scope 0 at $DIR/if_condition_int.rs:+1:31: +1:32 - return; // scope 0 at $DIR/if_condition_int.rs:+2:2: +2:2 + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/inline/asm_unwind.main.Inline.panic-abort.diff b/tests/mir-opt/inline/asm_unwind.main.Inline.panic-abort.diff index 8c68e215e4af7..503dc5beb1947 100644 --- a/tests/mir-opt/inline/asm_unwind.main.Inline.panic-abort.diff +++ b/tests/mir-opt/inline/asm_unwind.main.Inline.panic-abort.diff @@ -2,36 +2,33 @@ + // MIR for `main` after Inline fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/asm_unwind.rs:+0:15: +0:15 - let _1: (); // in scope 0 at $DIR/asm_unwind.rs:+1:5: +1:10 -+ scope 1 (inlined foo) { // at $DIR/asm_unwind.rs:21:5: 21:10 -+ let _2: D; // in scope 1 at $DIR/asm_unwind.rs:15:9: 15:11 + let mut _0: (); + let _1: (); ++ scope 1 (inlined foo) { ++ let _2: D; + scope 2 { -+ debug _d => const D; // in scope 2 at $DIR/asm_unwind.rs:15:9: 15:11 ++ debug _d => const D; + scope 3 { + } + } + } bb0: { - StorageLive(_1); // scope 0 at $DIR/asm_unwind.rs:+1:5: +1:10 -- _1 = foo() -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/asm_unwind.rs:+1:5: +1:10 -- // mir::Constant -- // + span: $DIR/asm_unwind.rs:21:5: 21:8 -- // + literal: Const { ty: fn() {foo}, val: Value() } -+ StorageLive(_2); // scope 0 at $DIR/asm_unwind.rs:+1:5: +1:10 -+ asm!("", options(MAY_UNWIND)) -> [return: bb2, unwind terminate]; // scope 3 at $DIR/asm_unwind.rs:16:14: 16:54 + StorageLive(_1); +- _1 = foo() -> [return: bb1, unwind unreachable]; ++ StorageLive(_2); ++ asm!("", options(MAY_UNWIND)) -> [return: bb2, unwind terminate]; } bb1: { -+ StorageDead(_2); // scope 0 at $DIR/asm_unwind.rs:+1:5: +1:10 - StorageDead(_1); // scope 0 at $DIR/asm_unwind.rs:+1:10: +1:11 - _0 = const (); // scope 0 at $DIR/asm_unwind.rs:+0:15: +2:2 - return; // scope 0 at $DIR/asm_unwind.rs:+2:2: +2:2 ++ StorageDead(_2); + StorageDead(_1); + _0 = const (); + return; + } + + bb2: { -+ drop(_2) -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/asm_unwind.rs:17:1: 17:2 ++ drop(_2) -> [return: bb1, unwind unreachable]; } } diff --git a/tests/mir-opt/inline/asm_unwind.main.Inline.panic-unwind.diff b/tests/mir-opt/inline/asm_unwind.main.Inline.panic-unwind.diff index ba1bfec05d218..af67723d9371c 100644 --- a/tests/mir-opt/inline/asm_unwind.main.Inline.panic-unwind.diff +++ b/tests/mir-opt/inline/asm_unwind.main.Inline.panic-unwind.diff @@ -2,44 +2,41 @@ + // MIR for `main` after Inline fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/asm_unwind.rs:+0:15: +0:15 - let _1: (); // in scope 0 at $DIR/asm_unwind.rs:+1:5: +1:10 -+ scope 1 (inlined foo) { // at $DIR/asm_unwind.rs:21:5: 21:10 -+ let _2: D; // in scope 1 at $DIR/asm_unwind.rs:15:9: 15:11 + let mut _0: (); + let _1: (); ++ scope 1 (inlined foo) { ++ let _2: D; + scope 2 { -+ debug _d => const D; // in scope 2 at $DIR/asm_unwind.rs:15:9: 15:11 ++ debug _d => const D; + scope 3 { + } + } + } bb0: { - StorageLive(_1); // scope 0 at $DIR/asm_unwind.rs:+1:5: +1:10 -- _1 = foo() -> bb1; // scope 0 at $DIR/asm_unwind.rs:+1:5: +1:10 -- // mir::Constant -- // + span: $DIR/asm_unwind.rs:21:5: 21:8 -- // + literal: Const { ty: fn() {foo}, val: Value() } -+ StorageLive(_2); // scope 0 at $DIR/asm_unwind.rs:+1:5: +1:10 -+ asm!("", options(MAY_UNWIND)) -> [return: bb2, unwind: bb3]; // scope 3 at $DIR/asm_unwind.rs:16:14: 16:54 + StorageLive(_1); +- _1 = foo() -> bb1; ++ StorageLive(_2); ++ asm!("", options(MAY_UNWIND)) -> [return: bb2, unwind: bb3]; } bb1: { -+ StorageDead(_2); // scope 0 at $DIR/asm_unwind.rs:+1:5: +1:10 - StorageDead(_1); // scope 0 at $DIR/asm_unwind.rs:+1:10: +1:11 - _0 = const (); // scope 0 at $DIR/asm_unwind.rs:+0:15: +2:2 - return; // scope 0 at $DIR/asm_unwind.rs:+2:2: +2:2 ++ StorageDead(_2); + StorageDead(_1); + _0 = const (); + return; + } + + bb2: { -+ drop(_2) -> bb1; // scope 1 at $DIR/asm_unwind.rs:17:1: 17:2 ++ drop(_2) -> bb1; + } + + bb3 (cleanup): { -+ drop(_2) -> [return: bb4, unwind terminate]; // scope 1 at $DIR/asm_unwind.rs:17:1: 17:2 ++ drop(_2) -> [return: bb4, unwind terminate]; + } + + bb4 (cleanup): { -+ resume; // scope 1 at $DIR/asm_unwind.rs:14:1: 17:2 ++ resume; } } diff --git a/tests/mir-opt/inline/caller_with_trivial_bound.foo.Inline.panic-unwind.diff b/tests/mir-opt/inline/caller_with_trivial_bound.foo.Inline.panic-unwind.diff index 8b03006782b2c..67f16833435de 100644 --- a/tests/mir-opt/inline/caller_with_trivial_bound.foo.Inline.panic-unwind.diff +++ b/tests/mir-opt/inline/caller_with_trivial_bound.foo.Inline.panic-unwind.diff @@ -2,32 +2,29 @@ + // MIR for `foo` after Inline fn foo() -> () { - let mut _0: (); // return place in scope 0 at $DIR/caller_with_trivial_bound.rs:+1:1: +1:1 - let mut _1: >::Item; // in scope 0 at $DIR/caller_with_trivial_bound.rs:+4:9: +4:14 + let mut _0: (); + let mut _1: >::Item; scope 1 { - debug x => _1; // in scope 1 at $DIR/caller_with_trivial_bound.rs:+4:9: +4:14 + debug x => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/caller_with_trivial_bound.rs:+4:9: +4:14 - _1 = bar::() -> bb1; // scope 0 at $DIR/caller_with_trivial_bound.rs:+4:51: +4:61 - // mir::Constant - // + span: $DIR/caller_with_trivial_bound.rs:20:51: 20:59 - // + literal: Const { ty: fn() -> >::Item {bar::}, val: Value() } + StorageLive(_1); + _1 = bar::() -> bb1; } bb1: { - _0 = const (); // scope 0 at $DIR/caller_with_trivial_bound.rs:+3:1: +5:2 - drop(_1) -> [return: bb2, unwind: bb3]; // scope 0 at $DIR/caller_with_trivial_bound.rs:+5:1: +5:2 + _0 = const (); + drop(_1) -> [return: bb2, unwind: bb3]; } bb2: { - StorageDead(_1); // scope 0 at $DIR/caller_with_trivial_bound.rs:+5:1: +5:2 - return; // scope 0 at $DIR/caller_with_trivial_bound.rs:+5:2: +5:2 + StorageDead(_1); + return; } bb3 (cleanup): { - resume; // scope 0 at $DIR/caller_with_trivial_bound.rs:+0:1: +5:2 + resume; } } diff --git a/tests/mir-opt/inline/cycle.f.Inline.panic-abort.diff b/tests/mir-opt/inline/cycle.f.Inline.panic-abort.diff index a4cb48e66c101..861b2fc9fb5b1 100644 --- a/tests/mir-opt/inline/cycle.f.Inline.panic-abort.diff +++ b/tests/mir-opt/inline/cycle.f.Inline.panic-abort.diff @@ -2,34 +2,31 @@ + // MIR for `f` after Inline fn f(_1: impl Fn()) -> () { - debug g => _1; // in scope 0 at $DIR/cycle.rs:+0:6: +0:7 - let mut _0: (); // return place in scope 0 at $DIR/cycle.rs:+0:20: +0:20 - let _2: (); // in scope 0 at $DIR/cycle.rs:+1:5: +1:8 - let mut _3: &impl Fn(); // in scope 0 at $DIR/cycle.rs:+1:5: +1:6 - let mut _4: (); // in scope 0 at $DIR/cycle.rs:+1:5: +1:8 + debug g => _1; + let mut _0: (); + let _2: (); + let mut _3: &impl Fn(); + let mut _4: (); bb0: { - StorageLive(_2); // scope 0 at $DIR/cycle.rs:+1:5: +1:8 - StorageLive(_3); // scope 0 at $DIR/cycle.rs:+1:5: +1:6 - _3 = &_1; // scope 0 at $DIR/cycle.rs:+1:5: +1:6 - StorageLive(_4); // scope 0 at $DIR/cycle.rs:+1:5: +1:8 - _4 = (); // scope 0 at $DIR/cycle.rs:+1:5: +1:8 - _2 = >::call(move _3, move _4) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/cycle.rs:+1:5: +1:8 - // mir::Constant - // + span: $DIR/cycle.rs:6:5: 6:6 - // + literal: Const { ty: for<'a> extern "rust-call" fn(&'a impl Fn(), ()) -> >::Output {>::call}, val: Value() } + StorageLive(_2); + StorageLive(_3); + _3 = &_1; + StorageLive(_4); + _4 = (); + _2 = >::call(move _3, move _4) -> [return: bb1, unwind unreachable]; } bb1: { - StorageDead(_4); // scope 0 at $DIR/cycle.rs:+1:7: +1:8 - StorageDead(_3); // scope 0 at $DIR/cycle.rs:+1:7: +1:8 - StorageDead(_2); // scope 0 at $DIR/cycle.rs:+1:8: +1:9 - _0 = const (); // scope 0 at $DIR/cycle.rs:+0:20: +2:2 - drop(_1) -> [return: bb2, unwind unreachable]; // scope 0 at $DIR/cycle.rs:+2:1: +2:2 + StorageDead(_4); + StorageDead(_3); + StorageDead(_2); + _0 = const (); + drop(_1) -> [return: bb2, unwind unreachable]; } bb2: { - return; // scope 0 at $DIR/cycle.rs:+2:2: +2:2 + return; } } diff --git a/tests/mir-opt/inline/cycle.f.Inline.panic-unwind.diff b/tests/mir-opt/inline/cycle.f.Inline.panic-unwind.diff index 8da597577431b..f3a6ee22c2080 100644 --- a/tests/mir-opt/inline/cycle.f.Inline.panic-unwind.diff +++ b/tests/mir-opt/inline/cycle.f.Inline.panic-unwind.diff @@ -2,42 +2,39 @@ + // MIR for `f` after Inline fn f(_1: impl Fn()) -> () { - debug g => _1; // in scope 0 at $DIR/cycle.rs:+0:6: +0:7 - let mut _0: (); // return place in scope 0 at $DIR/cycle.rs:+0:20: +0:20 - let _2: (); // in scope 0 at $DIR/cycle.rs:+1:5: +1:8 - let mut _3: &impl Fn(); // in scope 0 at $DIR/cycle.rs:+1:5: +1:6 - let mut _4: (); // in scope 0 at $DIR/cycle.rs:+1:5: +1:8 + debug g => _1; + let mut _0: (); + let _2: (); + let mut _3: &impl Fn(); + let mut _4: (); bb0: { - StorageLive(_2); // scope 0 at $DIR/cycle.rs:+1:5: +1:8 - StorageLive(_3); // scope 0 at $DIR/cycle.rs:+1:5: +1:6 - _3 = &_1; // scope 0 at $DIR/cycle.rs:+1:5: +1:6 - StorageLive(_4); // scope 0 at $DIR/cycle.rs:+1:5: +1:8 - _4 = (); // scope 0 at $DIR/cycle.rs:+1:5: +1:8 - _2 = >::call(move _3, move _4) -> [return: bb1, unwind: bb3]; // scope 0 at $DIR/cycle.rs:+1:5: +1:8 - // mir::Constant - // + span: $DIR/cycle.rs:6:5: 6:6 - // + literal: Const { ty: for<'a> extern "rust-call" fn(&'a impl Fn(), ()) -> >::Output {>::call}, val: Value() } + StorageLive(_2); + StorageLive(_3); + _3 = &_1; + StorageLive(_4); + _4 = (); + _2 = >::call(move _3, move _4) -> [return: bb1, unwind: bb3]; } bb1: { - StorageDead(_4); // scope 0 at $DIR/cycle.rs:+1:7: +1:8 - StorageDead(_3); // scope 0 at $DIR/cycle.rs:+1:7: +1:8 - StorageDead(_2); // scope 0 at $DIR/cycle.rs:+1:8: +1:9 - _0 = const (); // scope 0 at $DIR/cycle.rs:+0:20: +2:2 - drop(_1) -> [return: bb2, unwind: bb4]; // scope 0 at $DIR/cycle.rs:+2:1: +2:2 + StorageDead(_4); + StorageDead(_3); + StorageDead(_2); + _0 = const (); + drop(_1) -> [return: bb2, unwind: bb4]; } bb2: { - return; // scope 0 at $DIR/cycle.rs:+2:2: +2:2 + return; } bb3 (cleanup): { - drop(_1) -> [return: bb4, unwind terminate]; // scope 0 at $DIR/cycle.rs:+2:1: +2:2 + drop(_1) -> [return: bb4, unwind terminate]; } bb4 (cleanup): { - resume; // scope 0 at $DIR/cycle.rs:+0:1: +2:2 + resume; } } diff --git a/tests/mir-opt/inline/cycle.g.Inline.panic-abort.diff b/tests/mir-opt/inline/cycle.g.Inline.panic-abort.diff index faa0b120ed543..f3f4d895ae238 100644 --- a/tests/mir-opt/inline/cycle.g.Inline.panic-abort.diff +++ b/tests/mir-opt/inline/cycle.g.Inline.panic-abort.diff @@ -2,49 +2,43 @@ + // MIR for `g` after Inline fn g() -> () { - let mut _0: (); // return place in scope 0 at $DIR/cycle.rs:+0:8: +0:8 - let _1: (); // in scope 0 at $DIR/cycle.rs:+1:5: +1:12 -+ let mut _2: fn() {main}; // in scope 0 at $DIR/cycle.rs:+1:5: +1:12 -+ let mut _5: (); // in scope 0 at $DIR/cycle.rs:6:5: 6:8 -+ scope 1 (inlined f::) { // at $DIR/cycle.rs:12:5: 12:12 -+ debug g => _2; // in scope 1 at $DIR/cycle.rs:5:6: 5:7 -+ let mut _3: &fn() {main}; // in scope 1 at $DIR/cycle.rs:6:5: 6:6 -+ let _4: (); // in scope 1 at $DIR/cycle.rs:6:5: 6:8 -+ scope 2 (inlined >::call - shim(fn() {main})) { // at $DIR/cycle.rs:6:5: 6:8 + let mut _0: (); + let _1: (); ++ let mut _2: fn() {main}; ++ let mut _5: (); ++ scope 1 (inlined f::) { ++ debug g => _2; ++ let mut _3: &fn() {main}; ++ let _4: (); ++ scope 2 (inlined >::call - shim(fn() {main})) { + } + } bb0: { - StorageLive(_1); // scope 0 at $DIR/cycle.rs:+1:5: +1:12 -- _1 = f::(main) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/cycle.rs:+1:5: +1:12 -+ StorageLive(_2); // scope 0 at $DIR/cycle.rs:+1:5: +1:12 -+ _2 = main; // scope 0 at $DIR/cycle.rs:+1:5: +1:12 - // mir::Constant -- // + span: $DIR/cycle.rs:12:5: 12:6 -- // + literal: Const { ty: fn(fn() {main}) {f::}, val: Value() } -- // mir::Constant - // + span: $DIR/cycle.rs:12:7: 12:11 - // + literal: Const { ty: fn() {main}, val: Value() } -+ StorageLive(_4); // scope 0 at $DIR/cycle.rs:+1:5: +1:12 -+ StorageLive(_3); // scope 1 at $DIR/cycle.rs:6:5: 6:6 -+ _3 = &_2; // scope 1 at $DIR/cycle.rs:6:5: 6:6 -+ StorageLive(_5); // scope 1 at $DIR/cycle.rs:6:5: 6:8 -+ _5 = const (); // scope 1 at $DIR/cycle.rs:6:5: 6:8 -+ _4 = move (*_3)() -> [return: bb2, unwind unreachable]; // scope 2 at $SRC_DIR/core/src/ops/function.rs:LL:COL + StorageLive(_1); +- _1 = f::(main) -> [return: bb1, unwind unreachable]; ++ StorageLive(_2); ++ _2 = main; ++ StorageLive(_4); ++ StorageLive(_3); ++ _3 = &_2; ++ StorageLive(_5); ++ _5 = const (); ++ _4 = move (*_3)() -> [return: bb2, unwind unreachable]; } bb1: { -+ StorageDead(_4); // scope 0 at $DIR/cycle.rs:+1:5: +1:12 -+ StorageDead(_2); // scope 0 at $DIR/cycle.rs:+1:5: +1:12 - StorageDead(_1); // scope 0 at $DIR/cycle.rs:+1:12: +1:13 - _0 = const (); // scope 0 at $DIR/cycle.rs:+0:8: +2:2 - return; // scope 0 at $DIR/cycle.rs:+2:2: +2:2 ++ StorageDead(_4); ++ StorageDead(_2); + StorageDead(_1); + _0 = const (); + return; + } + + bb2: { -+ StorageDead(_5); // scope 1 at $DIR/cycle.rs:6:5: 6:8 -+ StorageDead(_3); // scope 1 at $DIR/cycle.rs:6:7: 6:8 -+ drop(_2) -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/cycle.rs:7:1: 7:2 ++ StorageDead(_5); ++ StorageDead(_3); ++ drop(_2) -> [return: bb1, unwind unreachable]; } } diff --git a/tests/mir-opt/inline/cycle.g.Inline.panic-unwind.diff b/tests/mir-opt/inline/cycle.g.Inline.panic-unwind.diff index 53bf14a0ab6e9..2bdb942379ca6 100644 --- a/tests/mir-opt/inline/cycle.g.Inline.panic-unwind.diff +++ b/tests/mir-opt/inline/cycle.g.Inline.panic-unwind.diff @@ -2,57 +2,51 @@ + // MIR for `g` after Inline fn g() -> () { - let mut _0: (); // return place in scope 0 at $DIR/cycle.rs:+0:8: +0:8 - let _1: (); // in scope 0 at $DIR/cycle.rs:+1:5: +1:12 -+ let mut _2: fn() {main}; // in scope 0 at $DIR/cycle.rs:+1:5: +1:12 -+ let mut _5: (); // in scope 0 at $DIR/cycle.rs:6:5: 6:8 -+ scope 1 (inlined f::) { // at $DIR/cycle.rs:12:5: 12:12 -+ debug g => _2; // in scope 1 at $DIR/cycle.rs:5:6: 5:7 -+ let mut _3: &fn() {main}; // in scope 1 at $DIR/cycle.rs:6:5: 6:6 -+ let _4: (); // in scope 1 at $DIR/cycle.rs:6:5: 6:8 -+ scope 2 (inlined >::call - shim(fn() {main})) { // at $DIR/cycle.rs:6:5: 6:8 + let mut _0: (); + let _1: (); ++ let mut _2: fn() {main}; ++ let mut _5: (); ++ scope 1 (inlined f::) { ++ debug g => _2; ++ let mut _3: &fn() {main}; ++ let _4: (); ++ scope 2 (inlined >::call - shim(fn() {main})) { + } + } bb0: { - StorageLive(_1); // scope 0 at $DIR/cycle.rs:+1:5: +1:12 -- _1 = f::(main) -> bb1; // scope 0 at $DIR/cycle.rs:+1:5: +1:12 -+ StorageLive(_2); // scope 0 at $DIR/cycle.rs:+1:5: +1:12 -+ _2 = main; // scope 0 at $DIR/cycle.rs:+1:5: +1:12 - // mir::Constant -- // + span: $DIR/cycle.rs:12:5: 12:6 -- // + literal: Const { ty: fn(fn() {main}) {f::}, val: Value() } -- // mir::Constant - // + span: $DIR/cycle.rs:12:7: 12:11 - // + literal: Const { ty: fn() {main}, val: Value() } -+ StorageLive(_4); // scope 0 at $DIR/cycle.rs:+1:5: +1:12 -+ StorageLive(_3); // scope 1 at $DIR/cycle.rs:6:5: 6:6 -+ _3 = &_2; // scope 1 at $DIR/cycle.rs:6:5: 6:6 -+ StorageLive(_5); // scope 1 at $DIR/cycle.rs:6:5: 6:8 -+ _5 = const (); // scope 1 at $DIR/cycle.rs:6:5: 6:8 -+ _4 = move (*_3)() -> [return: bb4, unwind: bb2]; // scope 2 at $SRC_DIR/core/src/ops/function.rs:LL:COL + StorageLive(_1); +- _1 = f::(main) -> bb1; ++ StorageLive(_2); ++ _2 = main; ++ StorageLive(_4); ++ StorageLive(_3); ++ _3 = &_2; ++ StorageLive(_5); ++ _5 = const (); ++ _4 = move (*_3)() -> [return: bb4, unwind: bb2]; } bb1: { -+ StorageDead(_4); // scope 0 at $DIR/cycle.rs:+1:5: +1:12 -+ StorageDead(_2); // scope 0 at $DIR/cycle.rs:+1:5: +1:12 - StorageDead(_1); // scope 0 at $DIR/cycle.rs:+1:12: +1:13 - _0 = const (); // scope 0 at $DIR/cycle.rs:+0:8: +2:2 - return; // scope 0 at $DIR/cycle.rs:+2:2: +2:2 ++ StorageDead(_4); ++ StorageDead(_2); + StorageDead(_1); + _0 = const (); + return; + } + + bb2 (cleanup): { -+ drop(_2) -> [return: bb3, unwind terminate]; // scope 1 at $DIR/cycle.rs:7:1: 7:2 ++ drop(_2) -> [return: bb3, unwind terminate]; + } + + bb3 (cleanup): { -+ resume; // scope 1 at $DIR/cycle.rs:5:1: 7:2 ++ resume; + } + + bb4: { -+ StorageDead(_5); // scope 1 at $DIR/cycle.rs:6:5: 6:8 -+ StorageDead(_3); // scope 1 at $DIR/cycle.rs:6:7: 6:8 -+ drop(_2) -> bb1; // scope 1 at $DIR/cycle.rs:7:1: 7:2 ++ StorageDead(_5); ++ StorageDead(_3); ++ drop(_2) -> bb1; } } diff --git a/tests/mir-opt/inline/cycle.main.Inline.panic-abort.diff b/tests/mir-opt/inline/cycle.main.Inline.panic-abort.diff index 55a0f92197bcc..eb00763541691 100644 --- a/tests/mir-opt/inline/cycle.main.Inline.panic-abort.diff +++ b/tests/mir-opt/inline/cycle.main.Inline.panic-abort.diff @@ -2,20 +2,20 @@ + // MIR for `main` after Inline fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/cycle.rs:+0:11: +0:11 - let _1: (); // in scope 0 at $DIR/cycle.rs:+1:5: +1:9 -+ let mut _2: fn() {g}; // in scope 0 at $DIR/cycle.rs:+1:5: +1:9 -+ let mut _5: (); // in scope 0 at $DIR/cycle.rs:6:5: 6:8 -+ scope 1 (inlined f::) { // at $DIR/cycle.rs:17:5: 17:9 -+ debug g => _2; // in scope 1 at $DIR/cycle.rs:5:6: 5:7 -+ let mut _3: &fn() {g}; // in scope 1 at $DIR/cycle.rs:6:5: 6:6 -+ let _4: (); // in scope 1 at $DIR/cycle.rs:6:5: 6:8 -+ scope 2 (inlined >::call - shim(fn() {g})) { // at $DIR/cycle.rs:6:5: 6:8 -+ scope 3 (inlined g) { // at $SRC_DIR/core/src/ops/function.rs:LL:COL -+ scope 4 (inlined f::) { // at $DIR/cycle.rs:12:5: 12:12 -+ debug g => main; // in scope 4 at $DIR/cycle.rs:5:6: 5:7 -+ let _6: (); // in scope 4 at $DIR/cycle.rs:6:5: 6:8 -+ scope 5 (inlined >::call - shim(fn() {main})) { // at $DIR/cycle.rs:6:5: 6:8 + let mut _0: (); + let _1: (); ++ let mut _2: fn() {g}; ++ let mut _5: (); ++ scope 1 (inlined f::) { ++ debug g => _2; ++ let mut _3: &fn() {g}; ++ let _4: (); ++ scope 2 (inlined >::call - shim(fn() {g})) { ++ scope 3 (inlined g) { ++ scope 4 (inlined f::) { ++ debug g => main; ++ let _6: (); ++ scope 5 (inlined >::call - shim(fn() {main})) { + } + } + } @@ -23,41 +23,32 @@ + } bb0: { - StorageLive(_1); // scope 0 at $DIR/cycle.rs:+1:5: +1:9 -- _1 = f::(g) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/cycle.rs:+1:5: +1:9 -+ StorageLive(_2); // scope 0 at $DIR/cycle.rs:+1:5: +1:9 -+ _2 = g; // scope 0 at $DIR/cycle.rs:+1:5: +1:9 - // mir::Constant -- // + span: $DIR/cycle.rs:17:5: 17:6 -- // + literal: Const { ty: fn(fn() {g}) {f::}, val: Value() } -- // mir::Constant - // + span: $DIR/cycle.rs:17:7: 17:8 - // + literal: Const { ty: fn() {g}, val: Value() } -+ StorageLive(_4); // scope 0 at $DIR/cycle.rs:+1:5: +1:9 -+ StorageLive(_3); // scope 1 at $DIR/cycle.rs:6:5: 6:6 -+ _3 = &_2; // scope 1 at $DIR/cycle.rs:6:5: 6:6 -+ StorageLive(_5); // scope 1 at $DIR/cycle.rs:6:5: 6:8 -+ _5 = const (); // scope 1 at $DIR/cycle.rs:6:5: 6:8 -+ StorageLive(_6); // scope 2 at $SRC_DIR/core/src/ops/function.rs:LL:COL -+ _6 = main() -> [return: bb2, unwind unreachable]; // scope 5 at $SRC_DIR/core/src/ops/function.rs:LL:COL -+ // mir::Constant -+ // + span: no-location -+ // + literal: Const { ty: fn() {main}, val: Value() } + StorageLive(_1); +- _1 = f::(g) -> [return: bb1, unwind unreachable]; ++ StorageLive(_2); ++ _2 = g; ++ StorageLive(_4); ++ StorageLive(_3); ++ _3 = &_2; ++ StorageLive(_5); ++ _5 = const (); ++ StorageLive(_6); ++ _6 = main() -> [return: bb2, unwind unreachable]; } bb1: { -+ StorageDead(_4); // scope 0 at $DIR/cycle.rs:+1:5: +1:9 -+ StorageDead(_2); // scope 0 at $DIR/cycle.rs:+1:5: +1:9 - StorageDead(_1); // scope 0 at $DIR/cycle.rs:+1:9: +1:10 - _0 = const (); // scope 0 at $DIR/cycle.rs:+0:11: +2:2 - return; // scope 0 at $DIR/cycle.rs:+2:2: +2:2 ++ StorageDead(_4); ++ StorageDead(_2); + StorageDead(_1); + _0 = const (); + return; + } + + bb2: { -+ StorageDead(_6); // scope 2 at $SRC_DIR/core/src/ops/function.rs:LL:COL -+ StorageDead(_5); // scope 1 at $DIR/cycle.rs:6:5: 6:8 -+ StorageDead(_3); // scope 1 at $DIR/cycle.rs:6:7: 6:8 -+ drop(_2) -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/cycle.rs:7:1: 7:2 ++ StorageDead(_6); ++ StorageDead(_5); ++ StorageDead(_3); ++ drop(_2) -> [return: bb1, unwind unreachable]; } } diff --git a/tests/mir-opt/inline/cycle.main.Inline.panic-unwind.diff b/tests/mir-opt/inline/cycle.main.Inline.panic-unwind.diff index 7a39aae1baf5d..c4f97d75308fb 100644 --- a/tests/mir-opt/inline/cycle.main.Inline.panic-unwind.diff +++ b/tests/mir-opt/inline/cycle.main.Inline.panic-unwind.diff @@ -2,20 +2,20 @@ + // MIR for `main` after Inline fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/cycle.rs:+0:11: +0:11 - let _1: (); // in scope 0 at $DIR/cycle.rs:+1:5: +1:9 -+ let mut _2: fn() {g}; // in scope 0 at $DIR/cycle.rs:+1:5: +1:9 -+ let mut _5: (); // in scope 0 at $DIR/cycle.rs:6:5: 6:8 -+ scope 1 (inlined f::) { // at $DIR/cycle.rs:17:5: 17:9 -+ debug g => _2; // in scope 1 at $DIR/cycle.rs:5:6: 5:7 -+ let mut _3: &fn() {g}; // in scope 1 at $DIR/cycle.rs:6:5: 6:6 -+ let _4: (); // in scope 1 at $DIR/cycle.rs:6:5: 6:8 -+ scope 2 (inlined >::call - shim(fn() {g})) { // at $DIR/cycle.rs:6:5: 6:8 -+ scope 3 (inlined g) { // at $SRC_DIR/core/src/ops/function.rs:LL:COL -+ scope 4 (inlined f::) { // at $DIR/cycle.rs:12:5: 12:12 -+ debug g => main; // in scope 4 at $DIR/cycle.rs:5:6: 5:7 -+ let _6: (); // in scope 4 at $DIR/cycle.rs:6:5: 6:8 -+ scope 5 (inlined >::call - shim(fn() {main})) { // at $DIR/cycle.rs:6:5: 6:8 + let mut _0: (); + let _1: (); ++ let mut _2: fn() {g}; ++ let mut _5: (); ++ scope 1 (inlined f::) { ++ debug g => _2; ++ let mut _3: &fn() {g}; ++ let _4: (); ++ scope 2 (inlined >::call - shim(fn() {g})) { ++ scope 3 (inlined g) { ++ scope 4 (inlined f::) { ++ debug g => main; ++ let _6: (); ++ scope 5 (inlined >::call - shim(fn() {main})) { + } + } + } @@ -23,49 +23,40 @@ + } bb0: { - StorageLive(_1); // scope 0 at $DIR/cycle.rs:+1:5: +1:9 -- _1 = f::(g) -> bb1; // scope 0 at $DIR/cycle.rs:+1:5: +1:9 -+ StorageLive(_2); // scope 0 at $DIR/cycle.rs:+1:5: +1:9 -+ _2 = g; // scope 0 at $DIR/cycle.rs:+1:5: +1:9 - // mir::Constant -- // + span: $DIR/cycle.rs:17:5: 17:6 -- // + literal: Const { ty: fn(fn() {g}) {f::}, val: Value() } -- // mir::Constant - // + span: $DIR/cycle.rs:17:7: 17:8 - // + literal: Const { ty: fn() {g}, val: Value() } -+ StorageLive(_4); // scope 0 at $DIR/cycle.rs:+1:5: +1:9 -+ StorageLive(_3); // scope 1 at $DIR/cycle.rs:6:5: 6:6 -+ _3 = &_2; // scope 1 at $DIR/cycle.rs:6:5: 6:6 -+ StorageLive(_5); // scope 1 at $DIR/cycle.rs:6:5: 6:8 -+ _5 = const (); // scope 1 at $DIR/cycle.rs:6:5: 6:8 -+ StorageLive(_6); // scope 2 at $SRC_DIR/core/src/ops/function.rs:LL:COL -+ _6 = main() -> [return: bb4, unwind: bb2]; // scope 5 at $SRC_DIR/core/src/ops/function.rs:LL:COL -+ // mir::Constant -+ // + span: no-location -+ // + literal: Const { ty: fn() {main}, val: Value() } + StorageLive(_1); +- _1 = f::(g) -> bb1; ++ StorageLive(_2); ++ _2 = g; ++ StorageLive(_4); ++ StorageLive(_3); ++ _3 = &_2; ++ StorageLive(_5); ++ _5 = const (); ++ StorageLive(_6); ++ _6 = main() -> [return: bb4, unwind: bb2]; } bb1: { -+ StorageDead(_4); // scope 0 at $DIR/cycle.rs:+1:5: +1:9 -+ StorageDead(_2); // scope 0 at $DIR/cycle.rs:+1:5: +1:9 - StorageDead(_1); // scope 0 at $DIR/cycle.rs:+1:9: +1:10 - _0 = const (); // scope 0 at $DIR/cycle.rs:+0:11: +2:2 - return; // scope 0 at $DIR/cycle.rs:+2:2: +2:2 ++ StorageDead(_4); ++ StorageDead(_2); + StorageDead(_1); + _0 = const (); + return; + } + + bb2 (cleanup): { -+ drop(_2) -> [return: bb3, unwind terminate]; // scope 1 at $DIR/cycle.rs:7:1: 7:2 ++ drop(_2) -> [return: bb3, unwind terminate]; + } + + bb3 (cleanup): { -+ resume; // scope 1 at $DIR/cycle.rs:5:1: 7:2 ++ resume; + } + + bb4: { -+ StorageDead(_6); // scope 2 at $SRC_DIR/core/src/ops/function.rs:LL:COL -+ StorageDead(_5); // scope 1 at $DIR/cycle.rs:6:5: 6:8 -+ StorageDead(_3); // scope 1 at $DIR/cycle.rs:6:7: 6:8 -+ drop(_2) -> bb1; // scope 1 at $DIR/cycle.rs:7:1: 7:2 ++ StorageDead(_6); ++ StorageDead(_5); ++ StorageDead(_3); ++ drop(_2) -> bb1; } } diff --git a/tests/mir-opt/inline/dyn_trait.get_query.Inline.panic-abort.diff b/tests/mir-opt/inline/dyn_trait.get_query.Inline.panic-abort.diff index 2e5afd6cece6a..1f5e2428095bf 100644 --- a/tests/mir-opt/inline/dyn_trait.get_query.Inline.panic-abort.diff +++ b/tests/mir-opt/inline/dyn_trait.get_query.Inline.panic-abort.diff @@ -2,53 +2,44 @@ + // MIR for `get_query` after Inline fn get_query(_1: &T) -> () { - debug t => _1; // in scope 0 at $DIR/dyn_trait.rs:+0:31: +0:32 - let mut _0: (); // return place in scope 0 at $DIR/dyn_trait.rs:+0:38: +0:38 - let _2: &::C; // in scope 0 at $DIR/dyn_trait.rs:+1:9: +1:10 - let mut _3: &T; // in scope 0 at $DIR/dyn_trait.rs:+1:22: +1:23 - let mut _4: &::C; // in scope 0 at $DIR/dyn_trait.rs:+2:23: +2:24 + debug t => _1; + let mut _0: (); + let _2: &::C; + let mut _3: &T; + let mut _4: &::C; scope 1 { - debug c => _2; // in scope 1 at $DIR/dyn_trait.rs:+1:9: +1:10 -+ scope 2 (inlined try_execute_query::<::C>) { // at $DIR/dyn_trait.rs:35:5: 35:25 -+ debug c => _4; // in scope 2 at $DIR/dyn_trait.rs:27:36: 27:37 -+ let mut _5: &dyn Cache::V>; // in scope 2 at $DIR/dyn_trait.rs:28:14: 28:15 -+ scope 3 (inlined mk_cycle::<::V>) { // at $DIR/dyn_trait.rs:28:5: 28:16 -+ debug c => _5; // in scope 3 at $DIR/dyn_trait.rs:21:27: 21:28 + debug c => _2; ++ scope 2 (inlined try_execute_query::<::C>) { ++ debug c => _4; ++ let mut _5: &dyn Cache::V>; ++ scope 3 (inlined mk_cycle::<::V>) { ++ debug c => _5; + } + } } bb0: { - StorageLive(_2); // scope 0 at $DIR/dyn_trait.rs:+1:9: +1:10 - StorageLive(_3); // scope 0 at $DIR/dyn_trait.rs:+1:22: +1:23 - _3 = &(*_1); // scope 0 at $DIR/dyn_trait.rs:+1:22: +1:23 - _2 = ::cache::(move _3) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/dyn_trait.rs:+1:13: +1:24 - // mir::Constant - // + span: $DIR/dyn_trait.rs:34:13: 34:21 - // + user_ty: UserType(0) - // + literal: Const { ty: for<'a> fn(&'a T) -> &'a ::C {::cache::}, val: Value() } + StorageLive(_2); + StorageLive(_3); + _3 = &(*_1); + _2 = ::cache::(move _3) -> [return: bb1, unwind unreachable]; } bb1: { - StorageDead(_3); // scope 0 at $DIR/dyn_trait.rs:+1:23: +1:24 - StorageLive(_4); // scope 1 at $DIR/dyn_trait.rs:+2:23: +2:24 - _4 = &(*_2); // scope 1 at $DIR/dyn_trait.rs:+2:23: +2:24 -- _0 = try_execute_query::<::C>(move _4) -> [return: bb2, unwind unreachable]; // scope 1 at $DIR/dyn_trait.rs:+2:5: +2:25 -+ StorageLive(_5); // scope 2 at $DIR/dyn_trait.rs:28:14: 28:15 -+ _5 = _4 as &dyn Cache::V> (Pointer(Unsize)); // scope 2 at $DIR/dyn_trait.rs:28:14: 28:15 -+ _0 = ::V> as Cache>::store_nocache(_5) -> [return: bb2, unwind unreachable]; // scope 3 at $DIR/dyn_trait.rs:22:5: 22:22 - // mir::Constant -- // + span: $DIR/dyn_trait.rs:35:5: 35:22 -- // + literal: Const { ty: for<'a> fn(&'a ::C) {try_execute_query::<::C>}, val: Value() } -+ // + span: $DIR/dyn_trait.rs:22:7: 22:20 -+ // + literal: Const { ty: for<'a> fn(&'a dyn Cache::V>) {::V> as Cache>::store_nocache}, val: Value() } + StorageDead(_3); + StorageLive(_4); + _4 = &(*_2); +- _0 = try_execute_query::<::C>(move _4) -> [return: bb2, unwind unreachable]; ++ StorageLive(_5); ++ _5 = _4 as &dyn Cache::V> (Pointer(Unsize)); ++ _0 = ::V> as Cache>::store_nocache(_5) -> [return: bb2, unwind unreachable]; } bb2: { -+ StorageDead(_5); // scope 2 at $DIR/dyn_trait.rs:28:15: 28:16 - StorageDead(_4); // scope 1 at $DIR/dyn_trait.rs:+2:24: +2:25 - StorageDead(_2); // scope 0 at $DIR/dyn_trait.rs:+3:1: +3:2 - return; // scope 0 at $DIR/dyn_trait.rs:+3:2: +3:2 ++ StorageDead(_5); + StorageDead(_4); + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/inline/dyn_trait.get_query.Inline.panic-unwind.diff b/tests/mir-opt/inline/dyn_trait.get_query.Inline.panic-unwind.diff index 75d9bd54d5ba9..ca772cf438397 100644 --- a/tests/mir-opt/inline/dyn_trait.get_query.Inline.panic-unwind.diff +++ b/tests/mir-opt/inline/dyn_trait.get_query.Inline.panic-unwind.diff @@ -2,53 +2,44 @@ + // MIR for `get_query` after Inline fn get_query(_1: &T) -> () { - debug t => _1; // in scope 0 at $DIR/dyn_trait.rs:+0:31: +0:32 - let mut _0: (); // return place in scope 0 at $DIR/dyn_trait.rs:+0:38: +0:38 - let _2: &::C; // in scope 0 at $DIR/dyn_trait.rs:+1:9: +1:10 - let mut _3: &T; // in scope 0 at $DIR/dyn_trait.rs:+1:22: +1:23 - let mut _4: &::C; // in scope 0 at $DIR/dyn_trait.rs:+2:23: +2:24 + debug t => _1; + let mut _0: (); + let _2: &::C; + let mut _3: &T; + let mut _4: &::C; scope 1 { - debug c => _2; // in scope 1 at $DIR/dyn_trait.rs:+1:9: +1:10 -+ scope 2 (inlined try_execute_query::<::C>) { // at $DIR/dyn_trait.rs:35:5: 35:25 -+ debug c => _4; // in scope 2 at $DIR/dyn_trait.rs:27:36: 27:37 -+ let mut _5: &dyn Cache::V>; // in scope 2 at $DIR/dyn_trait.rs:28:14: 28:15 -+ scope 3 (inlined mk_cycle::<::V>) { // at $DIR/dyn_trait.rs:28:5: 28:16 -+ debug c => _5; // in scope 3 at $DIR/dyn_trait.rs:21:27: 21:28 + debug c => _2; ++ scope 2 (inlined try_execute_query::<::C>) { ++ debug c => _4; ++ let mut _5: &dyn Cache::V>; ++ scope 3 (inlined mk_cycle::<::V>) { ++ debug c => _5; + } + } } bb0: { - StorageLive(_2); // scope 0 at $DIR/dyn_trait.rs:+1:9: +1:10 - StorageLive(_3); // scope 0 at $DIR/dyn_trait.rs:+1:22: +1:23 - _3 = &(*_1); // scope 0 at $DIR/dyn_trait.rs:+1:22: +1:23 - _2 = ::cache::(move _3) -> bb1; // scope 0 at $DIR/dyn_trait.rs:+1:13: +1:24 - // mir::Constant - // + span: $DIR/dyn_trait.rs:34:13: 34:21 - // + user_ty: UserType(0) - // + literal: Const { ty: for<'a> fn(&'a T) -> &'a ::C {::cache::}, val: Value() } + StorageLive(_2); + StorageLive(_3); + _3 = &(*_1); + _2 = ::cache::(move _3) -> bb1; } bb1: { - StorageDead(_3); // scope 0 at $DIR/dyn_trait.rs:+1:23: +1:24 - StorageLive(_4); // scope 1 at $DIR/dyn_trait.rs:+2:23: +2:24 - _4 = &(*_2); // scope 1 at $DIR/dyn_trait.rs:+2:23: +2:24 -- _0 = try_execute_query::<::C>(move _4) -> bb2; // scope 1 at $DIR/dyn_trait.rs:+2:5: +2:25 -+ StorageLive(_5); // scope 2 at $DIR/dyn_trait.rs:28:14: 28:15 -+ _5 = _4 as &dyn Cache::V> (Pointer(Unsize)); // scope 2 at $DIR/dyn_trait.rs:28:14: 28:15 -+ _0 = ::V> as Cache>::store_nocache(_5) -> bb2; // scope 3 at $DIR/dyn_trait.rs:22:5: 22:22 - // mir::Constant -- // + span: $DIR/dyn_trait.rs:35:5: 35:22 -- // + literal: Const { ty: for<'a> fn(&'a ::C) {try_execute_query::<::C>}, val: Value() } -+ // + span: $DIR/dyn_trait.rs:22:7: 22:20 -+ // + literal: Const { ty: for<'a> fn(&'a dyn Cache::V>) {::V> as Cache>::store_nocache}, val: Value() } + StorageDead(_3); + StorageLive(_4); + _4 = &(*_2); +- _0 = try_execute_query::<::C>(move _4) -> bb2; ++ StorageLive(_5); ++ _5 = _4 as &dyn Cache::V> (Pointer(Unsize)); ++ _0 = ::V> as Cache>::store_nocache(_5) -> bb2; } bb2: { -+ StorageDead(_5); // scope 2 at $DIR/dyn_trait.rs:28:15: 28:16 - StorageDead(_4); // scope 1 at $DIR/dyn_trait.rs:+2:24: +2:25 - StorageDead(_2); // scope 0 at $DIR/dyn_trait.rs:+3:1: +3:2 - return; // scope 0 at $DIR/dyn_trait.rs:+3:2: +3:2 ++ StorageDead(_5); + StorageDead(_4); + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/inline/dyn_trait.mk_cycle.Inline.panic-abort.diff b/tests/mir-opt/inline/dyn_trait.mk_cycle.Inline.panic-abort.diff index 46a1ea59bc27a..d7801b7a0cc22 100644 --- a/tests/mir-opt/inline/dyn_trait.mk_cycle.Inline.panic-abort.diff +++ b/tests/mir-opt/inline/dyn_trait.mk_cycle.Inline.panic-abort.diff @@ -2,22 +2,19 @@ + // MIR for `mk_cycle` after Inline fn mk_cycle(_1: &dyn Cache) -> () { - debug c => _1; // in scope 0 at $DIR/dyn_trait.rs:+0:27: +0:28 - let mut _0: (); // return place in scope 0 at $DIR/dyn_trait.rs:+0:49: +0:49 - let mut _2: &dyn Cache; // in scope 0 at $DIR/dyn_trait.rs:+1:5: +1:22 + debug c => _1; + let mut _0: (); + let mut _2: &dyn Cache; bb0: { - StorageLive(_2); // scope 0 at $DIR/dyn_trait.rs:+1:5: +1:22 - _2 = &(*_1); // scope 0 at $DIR/dyn_trait.rs:+1:5: +1:22 - _0 = as Cache>::store_nocache(move _2) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/dyn_trait.rs:+1:5: +1:22 - // mir::Constant - // + span: $DIR/dyn_trait.rs:22:7: 22:20 - // + literal: Const { ty: for<'a> fn(&'a dyn Cache) { as Cache>::store_nocache}, val: Value() } + StorageLive(_2); + _2 = &(*_1); + _0 = as Cache>::store_nocache(move _2) -> [return: bb1, unwind unreachable]; } bb1: { - StorageDead(_2); // scope 0 at $DIR/dyn_trait.rs:+1:21: +1:22 - return; // scope 0 at $DIR/dyn_trait.rs:+2:2: +2:2 + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/inline/dyn_trait.mk_cycle.Inline.panic-unwind.diff b/tests/mir-opt/inline/dyn_trait.mk_cycle.Inline.panic-unwind.diff index 925c95988b795..12b539fc250c6 100644 --- a/tests/mir-opt/inline/dyn_trait.mk_cycle.Inline.panic-unwind.diff +++ b/tests/mir-opt/inline/dyn_trait.mk_cycle.Inline.panic-unwind.diff @@ -2,22 +2,19 @@ + // MIR for `mk_cycle` after Inline fn mk_cycle(_1: &dyn Cache) -> () { - debug c => _1; // in scope 0 at $DIR/dyn_trait.rs:+0:27: +0:28 - let mut _0: (); // return place in scope 0 at $DIR/dyn_trait.rs:+0:49: +0:49 - let mut _2: &dyn Cache; // in scope 0 at $DIR/dyn_trait.rs:+1:5: +1:22 + debug c => _1; + let mut _0: (); + let mut _2: &dyn Cache; bb0: { - StorageLive(_2); // scope 0 at $DIR/dyn_trait.rs:+1:5: +1:22 - _2 = &(*_1); // scope 0 at $DIR/dyn_trait.rs:+1:5: +1:22 - _0 = as Cache>::store_nocache(move _2) -> bb1; // scope 0 at $DIR/dyn_trait.rs:+1:5: +1:22 - // mir::Constant - // + span: $DIR/dyn_trait.rs:22:7: 22:20 - // + literal: Const { ty: for<'a> fn(&'a dyn Cache) { as Cache>::store_nocache}, val: Value() } + StorageLive(_2); + _2 = &(*_1); + _0 = as Cache>::store_nocache(move _2) -> bb1; } bb1: { - StorageDead(_2); // scope 0 at $DIR/dyn_trait.rs:+1:21: +1:22 - return; // scope 0 at $DIR/dyn_trait.rs:+2:2: +2:2 + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/inline/dyn_trait.try_execute_query.Inline.panic-abort.diff b/tests/mir-opt/inline/dyn_trait.try_execute_query.Inline.panic-abort.diff index 5d84f0f508a1c..1e4c6fcca7ac2 100644 --- a/tests/mir-opt/inline/dyn_trait.try_execute_query.Inline.panic-abort.diff +++ b/tests/mir-opt/inline/dyn_trait.try_execute_query.Inline.panic-abort.diff @@ -2,32 +2,27 @@ + // MIR for `try_execute_query` after Inline fn try_execute_query(_1: &C) -> () { - debug c => _1; // in scope 0 at $DIR/dyn_trait.rs:+0:36: +0:37 - let mut _0: (); // return place in scope 0 at $DIR/dyn_trait.rs:+0:43: +0:43 - let mut _2: &dyn Cache::V>; // in scope 0 at $DIR/dyn_trait.rs:+1:14: +1:15 - let mut _3: &C; // in scope 0 at $DIR/dyn_trait.rs:+1:14: +1:15 -+ scope 1 (inlined mk_cycle::<::V>) { // at $DIR/dyn_trait.rs:28:5: 28:16 -+ debug c => _2; // in scope 1 at $DIR/dyn_trait.rs:21:27: 21:28 + debug c => _1; + let mut _0: (); + let mut _2: &dyn Cache::V>; + let mut _3: &C; ++ scope 1 (inlined mk_cycle::<::V>) { ++ debug c => _2; + } bb0: { - StorageLive(_2); // scope 0 at $DIR/dyn_trait.rs:+1:14: +1:15 - StorageLive(_3); // scope 0 at $DIR/dyn_trait.rs:+1:14: +1:15 - _3 = &(*_1); // scope 0 at $DIR/dyn_trait.rs:+1:14: +1:15 - _2 = move _3 as &dyn Cache::V> (Pointer(Unsize)); // scope 0 at $DIR/dyn_trait.rs:+1:14: +1:15 - StorageDead(_3); // scope 0 at $DIR/dyn_trait.rs:+1:14: +1:15 -- _0 = mk_cycle::<::V>(move _2) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/dyn_trait.rs:+1:5: +1:16 -+ _0 = ::V> as Cache>::store_nocache(_2) -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/dyn_trait.rs:22:5: 22:22 - // mir::Constant -- // + span: $DIR/dyn_trait.rs:28:5: 28:13 -- // + literal: Const { ty: for<'a> fn(&'a (dyn Cache::V> + 'a)) {mk_cycle::<::V>}, val: Value() } -+ // + span: $DIR/dyn_trait.rs:22:7: 22:20 -+ // + literal: Const { ty: for<'a> fn(&'a dyn Cache::V>) {::V> as Cache>::store_nocache}, val: Value() } + StorageLive(_2); + StorageLive(_3); + _3 = &(*_1); + _2 = move _3 as &dyn Cache::V> (Pointer(Unsize)); + StorageDead(_3); +- _0 = mk_cycle::<::V>(move _2) -> [return: bb1, unwind unreachable]; ++ _0 = ::V> as Cache>::store_nocache(_2) -> [return: bb1, unwind unreachable]; } bb1: { - StorageDead(_2); // scope 0 at $DIR/dyn_trait.rs:+1:15: +1:16 - return; // scope 0 at $DIR/dyn_trait.rs:+2:2: +2:2 + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/inline/dyn_trait.try_execute_query.Inline.panic-unwind.diff b/tests/mir-opt/inline/dyn_trait.try_execute_query.Inline.panic-unwind.diff index f4e5272abfc8a..9bcd73e1c8ba5 100644 --- a/tests/mir-opt/inline/dyn_trait.try_execute_query.Inline.panic-unwind.diff +++ b/tests/mir-opt/inline/dyn_trait.try_execute_query.Inline.panic-unwind.diff @@ -2,32 +2,27 @@ + // MIR for `try_execute_query` after Inline fn try_execute_query(_1: &C) -> () { - debug c => _1; // in scope 0 at $DIR/dyn_trait.rs:+0:36: +0:37 - let mut _0: (); // return place in scope 0 at $DIR/dyn_trait.rs:+0:43: +0:43 - let mut _2: &dyn Cache::V>; // in scope 0 at $DIR/dyn_trait.rs:+1:14: +1:15 - let mut _3: &C; // in scope 0 at $DIR/dyn_trait.rs:+1:14: +1:15 -+ scope 1 (inlined mk_cycle::<::V>) { // at $DIR/dyn_trait.rs:28:5: 28:16 -+ debug c => _2; // in scope 1 at $DIR/dyn_trait.rs:21:27: 21:28 + debug c => _1; + let mut _0: (); + let mut _2: &dyn Cache::V>; + let mut _3: &C; ++ scope 1 (inlined mk_cycle::<::V>) { ++ debug c => _2; + } bb0: { - StorageLive(_2); // scope 0 at $DIR/dyn_trait.rs:+1:14: +1:15 - StorageLive(_3); // scope 0 at $DIR/dyn_trait.rs:+1:14: +1:15 - _3 = &(*_1); // scope 0 at $DIR/dyn_trait.rs:+1:14: +1:15 - _2 = move _3 as &dyn Cache::V> (Pointer(Unsize)); // scope 0 at $DIR/dyn_trait.rs:+1:14: +1:15 - StorageDead(_3); // scope 0 at $DIR/dyn_trait.rs:+1:14: +1:15 -- _0 = mk_cycle::<::V>(move _2) -> bb1; // scope 0 at $DIR/dyn_trait.rs:+1:5: +1:16 -+ _0 = ::V> as Cache>::store_nocache(_2) -> bb1; // scope 1 at $DIR/dyn_trait.rs:22:5: 22:22 - // mir::Constant -- // + span: $DIR/dyn_trait.rs:28:5: 28:13 -- // + literal: Const { ty: for<'a> fn(&'a (dyn Cache::V> + 'a)) {mk_cycle::<::V>}, val: Value() } -+ // + span: $DIR/dyn_trait.rs:22:7: 22:20 -+ // + literal: Const { ty: for<'a> fn(&'a dyn Cache::V>) {::V> as Cache>::store_nocache}, val: Value() } + StorageLive(_2); + StorageLive(_3); + _3 = &(*_1); + _2 = move _3 as &dyn Cache::V> (Pointer(Unsize)); + StorageDead(_3); +- _0 = mk_cycle::<::V>(move _2) -> bb1; ++ _0 = ::V> as Cache>::store_nocache(_2) -> bb1; } bb1: { - StorageDead(_2); // scope 0 at $DIR/dyn_trait.rs:+1:15: +1:16 - return; // scope 0 at $DIR/dyn_trait.rs:+2:2: +2:2 + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/inline/exponential_runtime.main.Inline.panic-abort.diff b/tests/mir-opt/inline/exponential_runtime.main.Inline.panic-abort.diff index 967186b1989a6..217c8b802caac 100644 --- a/tests/mir-opt/inline/exponential_runtime.main.Inline.panic-abort.diff +++ b/tests/mir-opt/inline/exponential_runtime.main.Inline.panic-abort.diff @@ -2,32 +2,32 @@ + // MIR for `main` after Inline fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/exponential_runtime.rs:+0:11: +0:11 - let _1: (); // in scope 0 at $DIR/exponential_runtime.rs:+1:5: +1:22 -+ scope 1 (inlined <() as G>::call) { // at $DIR/exponential_runtime.rs:87:5: 87:22 -+ let _2: (); // in scope 1 at $DIR/exponential_runtime.rs:74:9: 74:25 -+ let _3: (); // in scope 1 at $DIR/exponential_runtime.rs:75:9: 75:25 -+ let _4: (); // in scope 1 at $DIR/exponential_runtime.rs:76:9: 76:25 -+ scope 2 (inlined <() as F>::call) { // at $DIR/exponential_runtime.rs:74:9: 74:25 -+ let _5: (); // in scope 2 at $DIR/exponential_runtime.rs:62:9: 62:25 -+ let _6: (); // in scope 2 at $DIR/exponential_runtime.rs:63:9: 63:25 -+ let _7: (); // in scope 2 at $DIR/exponential_runtime.rs:64:9: 64:25 -+ scope 3 (inlined <() as E>::call) { // at $DIR/exponential_runtime.rs:62:9: 62:25 -+ let _8: (); // in scope 3 at $DIR/exponential_runtime.rs:50:9: 50:25 -+ let _9: (); // in scope 3 at $DIR/exponential_runtime.rs:51:9: 51:25 -+ let _10: (); // in scope 3 at $DIR/exponential_runtime.rs:52:9: 52:25 -+ scope 4 (inlined <() as D>::call) { // at $DIR/exponential_runtime.rs:50:9: 50:25 -+ let _11: (); // in scope 4 at $DIR/exponential_runtime.rs:38:9: 38:25 -+ let _12: (); // in scope 4 at $DIR/exponential_runtime.rs:39:9: 39:25 -+ let _13: (); // in scope 4 at $DIR/exponential_runtime.rs:40:9: 40:25 -+ scope 5 (inlined <() as C>::call) { // at $DIR/exponential_runtime.rs:38:9: 38:25 -+ let _14: (); // in scope 5 at $DIR/exponential_runtime.rs:26:9: 26:25 -+ let _15: (); // in scope 5 at $DIR/exponential_runtime.rs:27:9: 27:25 -+ let _16: (); // in scope 5 at $DIR/exponential_runtime.rs:28:9: 28:25 -+ scope 6 (inlined <() as B>::call) { // at $DIR/exponential_runtime.rs:26:9: 26:25 -+ let _17: (); // in scope 6 at $DIR/exponential_runtime.rs:14:9: 14:25 -+ let _18: (); // in scope 6 at $DIR/exponential_runtime.rs:15:9: 15:25 -+ let _19: (); // in scope 6 at $DIR/exponential_runtime.rs:16:9: 16:25 + let mut _0: (); + let _1: (); ++ scope 1 (inlined <() as G>::call) { ++ let _2: (); ++ let _3: (); ++ let _4: (); ++ scope 2 (inlined <() as F>::call) { ++ let _5: (); ++ let _6: (); ++ let _7: (); ++ scope 3 (inlined <() as E>::call) { ++ let _8: (); ++ let _9: (); ++ let _10: (); ++ scope 4 (inlined <() as D>::call) { ++ let _11: (); ++ let _12: (); ++ let _13: (); ++ scope 5 (inlined <() as C>::call) { ++ let _14: (); ++ let _15: (); ++ let _16: (); ++ scope 6 (inlined <() as B>::call) { ++ let _17: (); ++ let _18: (); ++ let _19: (); + } + } + } @@ -36,140 +36,99 @@ + } bb0: { - StorageLive(_1); // scope 0 at $DIR/exponential_runtime.rs:+1:5: +1:22 -- _1 = <() as G>::call() -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/exponential_runtime.rs:+1:5: +1:22 -+ StorageLive(_2); // scope 0 at $DIR/exponential_runtime.rs:+1:5: +1:22 -+ StorageLive(_3); // scope 0 at $DIR/exponential_runtime.rs:+1:5: +1:22 -+ StorageLive(_4); // scope 0 at $DIR/exponential_runtime.rs:+1:5: +1:22 -+ StorageLive(_5); // scope 1 at $DIR/exponential_runtime.rs:74:9: 74:25 -+ StorageLive(_6); // scope 1 at $DIR/exponential_runtime.rs:74:9: 74:25 -+ StorageLive(_7); // scope 1 at $DIR/exponential_runtime.rs:74:9: 74:25 -+ StorageLive(_8); // scope 2 at $DIR/exponential_runtime.rs:62:9: 62:25 -+ StorageLive(_9); // scope 2 at $DIR/exponential_runtime.rs:62:9: 62:25 -+ StorageLive(_10); // scope 2 at $DIR/exponential_runtime.rs:62:9: 62:25 -+ StorageLive(_11); // scope 3 at $DIR/exponential_runtime.rs:50:9: 50:25 -+ StorageLive(_12); // scope 3 at $DIR/exponential_runtime.rs:50:9: 50:25 -+ StorageLive(_13); // scope 3 at $DIR/exponential_runtime.rs:50:9: 50:25 -+ StorageLive(_14); // scope 4 at $DIR/exponential_runtime.rs:38:9: 38:25 -+ StorageLive(_15); // scope 4 at $DIR/exponential_runtime.rs:38:9: 38:25 -+ StorageLive(_16); // scope 4 at $DIR/exponential_runtime.rs:38:9: 38:25 -+ StorageLive(_17); // scope 5 at $DIR/exponential_runtime.rs:26:9: 26:25 -+ StorageLive(_18); // scope 5 at $DIR/exponential_runtime.rs:26:9: 26:25 -+ StorageLive(_19); // scope 5 at $DIR/exponential_runtime.rs:26:9: 26:25 -+ _17 = <() as A>::call() -> [return: bb12, unwind unreachable]; // scope 6 at $DIR/exponential_runtime.rs:14:9: 14:25 - // mir::Constant -- // + span: $DIR/exponential_runtime.rs:87:5: 87:20 -- // + literal: Const { ty: fn() {<() as G>::call}, val: Value() } -+ // + span: $DIR/exponential_runtime.rs:14:9: 14:23 -+ // + literal: Const { ty: fn() {<() as A>::call}, val: Value() } + StorageLive(_1); +- _1 = <() as G>::call() -> [return: bb1, unwind unreachable]; ++ StorageLive(_2); ++ StorageLive(_3); ++ StorageLive(_4); ++ StorageLive(_5); ++ StorageLive(_6); ++ StorageLive(_7); ++ StorageLive(_8); ++ StorageLive(_9); ++ StorageLive(_10); ++ StorageLive(_11); ++ StorageLive(_12); ++ StorageLive(_13); ++ StorageLive(_14); ++ StorageLive(_15); ++ StorageLive(_16); ++ StorageLive(_17); ++ StorageLive(_18); ++ StorageLive(_19); ++ _17 = <() as A>::call() -> [return: bb12, unwind unreachable]; } bb1: { -+ StorageDead(_4); // scope 0 at $DIR/exponential_runtime.rs:+1:5: +1:22 -+ StorageDead(_3); // scope 0 at $DIR/exponential_runtime.rs:+1:5: +1:22 -+ StorageDead(_2); // scope 0 at $DIR/exponential_runtime.rs:+1:5: +1:22 - StorageDead(_1); // scope 0 at $DIR/exponential_runtime.rs:+1:22: +1:23 - _0 = const (); // scope 0 at $DIR/exponential_runtime.rs:+0:11: +2:2 - return; // scope 0 at $DIR/exponential_runtime.rs:+2:2: +2:2 ++ StorageDead(_4); ++ StorageDead(_3); ++ StorageDead(_2); + StorageDead(_1); + _0 = const (); + return; + } + + bb2: { -+ StorageDead(_7); // scope 1 at $DIR/exponential_runtime.rs:74:9: 74:25 -+ StorageDead(_6); // scope 1 at $DIR/exponential_runtime.rs:74:9: 74:25 -+ StorageDead(_5); // scope 1 at $DIR/exponential_runtime.rs:74:9: 74:25 -+ _3 = <() as F>::call() -> [return: bb3, unwind unreachable]; // scope 1 at $DIR/exponential_runtime.rs:75:9: 75:25 -+ // mir::Constant -+ // + span: $DIR/exponential_runtime.rs:75:9: 75:23 -+ // + literal: Const { ty: fn() {<() as F>::call}, val: Value() } ++ StorageDead(_7); ++ StorageDead(_6); ++ StorageDead(_5); ++ _3 = <() as F>::call() -> [return: bb3, unwind unreachable]; + } + + bb3: { -+ _4 = <() as F>::call() -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/exponential_runtime.rs:76:9: 76:25 -+ // mir::Constant -+ // + span: $DIR/exponential_runtime.rs:76:9: 76:23 -+ // + literal: Const { ty: fn() {<() as F>::call}, val: Value() } ++ _4 = <() as F>::call() -> [return: bb1, unwind unreachable]; + } + + bb4: { -+ StorageDead(_10); // scope 2 at $DIR/exponential_runtime.rs:62:9: 62:25 -+ StorageDead(_9); // scope 2 at $DIR/exponential_runtime.rs:62:9: 62:25 -+ StorageDead(_8); // scope 2 at $DIR/exponential_runtime.rs:62:9: 62:25 -+ _6 = <() as E>::call() -> [return: bb5, unwind unreachable]; // scope 2 at $DIR/exponential_runtime.rs:63:9: 63:25 -+ // mir::Constant -+ // + span: $DIR/exponential_runtime.rs:63:9: 63:23 -+ // + literal: Const { ty: fn() {<() as E>::call}, val: Value() } ++ StorageDead(_10); ++ StorageDead(_9); ++ StorageDead(_8); ++ _6 = <() as E>::call() -> [return: bb5, unwind unreachable]; + } + + bb5: { -+ _7 = <() as E>::call() -> [return: bb2, unwind unreachable]; // scope 2 at $DIR/exponential_runtime.rs:64:9: 64:25 -+ // mir::Constant -+ // + span: $DIR/exponential_runtime.rs:64:9: 64:23 -+ // + literal: Const { ty: fn() {<() as E>::call}, val: Value() } ++ _7 = <() as E>::call() -> [return: bb2, unwind unreachable]; + } + + bb6: { -+ StorageDead(_13); // scope 3 at $DIR/exponential_runtime.rs:50:9: 50:25 -+ StorageDead(_12); // scope 3 at $DIR/exponential_runtime.rs:50:9: 50:25 -+ StorageDead(_11); // scope 3 at $DIR/exponential_runtime.rs:50:9: 50:25 -+ _9 = <() as D>::call() -> [return: bb7, unwind unreachable]; // scope 3 at $DIR/exponential_runtime.rs:51:9: 51:25 -+ // mir::Constant -+ // + span: $DIR/exponential_runtime.rs:51:9: 51:23 -+ // + literal: Const { ty: fn() {<() as D>::call}, val: Value() } ++ StorageDead(_13); ++ StorageDead(_12); ++ StorageDead(_11); ++ _9 = <() as D>::call() -> [return: bb7, unwind unreachable]; + } + + bb7: { -+ _10 = <() as D>::call() -> [return: bb4, unwind unreachable]; // scope 3 at $DIR/exponential_runtime.rs:52:9: 52:25 -+ // mir::Constant -+ // + span: $DIR/exponential_runtime.rs:52:9: 52:23 -+ // + literal: Const { ty: fn() {<() as D>::call}, val: Value() } ++ _10 = <() as D>::call() -> [return: bb4, unwind unreachable]; + } + + bb8: { -+ StorageDead(_16); // scope 4 at $DIR/exponential_runtime.rs:38:9: 38:25 -+ StorageDead(_15); // scope 4 at $DIR/exponential_runtime.rs:38:9: 38:25 -+ StorageDead(_14); // scope 4 at $DIR/exponential_runtime.rs:38:9: 38:25 -+ _12 = <() as C>::call() -> [return: bb9, unwind unreachable]; // scope 4 at $DIR/exponential_runtime.rs:39:9: 39:25 -+ // mir::Constant -+ // + span: $DIR/exponential_runtime.rs:39:9: 39:23 -+ // + literal: Const { ty: fn() {<() as C>::call}, val: Value() } ++ StorageDead(_16); ++ StorageDead(_15); ++ StorageDead(_14); ++ _12 = <() as C>::call() -> [return: bb9, unwind unreachable]; + } + + bb9: { -+ _13 = <() as C>::call() -> [return: bb6, unwind unreachable]; // scope 4 at $DIR/exponential_runtime.rs:40:9: 40:25 -+ // mir::Constant -+ // + span: $DIR/exponential_runtime.rs:40:9: 40:23 -+ // + literal: Const { ty: fn() {<() as C>::call}, val: Value() } ++ _13 = <() as C>::call() -> [return: bb6, unwind unreachable]; + } + + bb10: { -+ StorageDead(_19); // scope 5 at $DIR/exponential_runtime.rs:26:9: 26:25 -+ StorageDead(_18); // scope 5 at $DIR/exponential_runtime.rs:26:9: 26:25 -+ StorageDead(_17); // scope 5 at $DIR/exponential_runtime.rs:26:9: 26:25 -+ _15 = <() as B>::call() -> [return: bb11, unwind unreachable]; // scope 5 at $DIR/exponential_runtime.rs:27:9: 27:25 -+ // mir::Constant -+ // + span: $DIR/exponential_runtime.rs:27:9: 27:23 -+ // + literal: Const { ty: fn() {<() as B>::call}, val: Value() } ++ StorageDead(_19); ++ StorageDead(_18); ++ StorageDead(_17); ++ _15 = <() as B>::call() -> [return: bb11, unwind unreachable]; + } + + bb11: { -+ _16 = <() as B>::call() -> [return: bb8, unwind unreachable]; // scope 5 at $DIR/exponential_runtime.rs:28:9: 28:25 -+ // mir::Constant -+ // + span: $DIR/exponential_runtime.rs:28:9: 28:23 -+ // + literal: Const { ty: fn() {<() as B>::call}, val: Value() } ++ _16 = <() as B>::call() -> [return: bb8, unwind unreachable]; + } + + bb12: { -+ _18 = <() as A>::call() -> [return: bb13, unwind unreachable]; // scope 6 at $DIR/exponential_runtime.rs:15:9: 15:25 -+ // mir::Constant -+ // + span: $DIR/exponential_runtime.rs:15:9: 15:23 -+ // + literal: Const { ty: fn() {<() as A>::call}, val: Value() } ++ _18 = <() as A>::call() -> [return: bb13, unwind unreachable]; + } + + bb13: { -+ _19 = <() as A>::call() -> [return: bb10, unwind unreachable]; // scope 6 at $DIR/exponential_runtime.rs:16:9: 16:25 -+ // mir::Constant -+ // + span: $DIR/exponential_runtime.rs:16:9: 16:23 -+ // + literal: Const { ty: fn() {<() as A>::call}, val: Value() } ++ _19 = <() as A>::call() -> [return: bb10, unwind unreachable]; } } diff --git a/tests/mir-opt/inline/exponential_runtime.main.Inline.panic-unwind.diff b/tests/mir-opt/inline/exponential_runtime.main.Inline.panic-unwind.diff index 7fad6aba82ec1..b87e164e471a1 100644 --- a/tests/mir-opt/inline/exponential_runtime.main.Inline.panic-unwind.diff +++ b/tests/mir-opt/inline/exponential_runtime.main.Inline.panic-unwind.diff @@ -2,32 +2,32 @@ + // MIR for `main` after Inline fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/exponential_runtime.rs:+0:11: +0:11 - let _1: (); // in scope 0 at $DIR/exponential_runtime.rs:+1:5: +1:22 -+ scope 1 (inlined <() as G>::call) { // at $DIR/exponential_runtime.rs:87:5: 87:22 -+ let _2: (); // in scope 1 at $DIR/exponential_runtime.rs:74:9: 74:25 -+ let _3: (); // in scope 1 at $DIR/exponential_runtime.rs:75:9: 75:25 -+ let _4: (); // in scope 1 at $DIR/exponential_runtime.rs:76:9: 76:25 -+ scope 2 (inlined <() as F>::call) { // at $DIR/exponential_runtime.rs:74:9: 74:25 -+ let _5: (); // in scope 2 at $DIR/exponential_runtime.rs:62:9: 62:25 -+ let _6: (); // in scope 2 at $DIR/exponential_runtime.rs:63:9: 63:25 -+ let _7: (); // in scope 2 at $DIR/exponential_runtime.rs:64:9: 64:25 -+ scope 3 (inlined <() as E>::call) { // at $DIR/exponential_runtime.rs:62:9: 62:25 -+ let _8: (); // in scope 3 at $DIR/exponential_runtime.rs:50:9: 50:25 -+ let _9: (); // in scope 3 at $DIR/exponential_runtime.rs:51:9: 51:25 -+ let _10: (); // in scope 3 at $DIR/exponential_runtime.rs:52:9: 52:25 -+ scope 4 (inlined <() as D>::call) { // at $DIR/exponential_runtime.rs:50:9: 50:25 -+ let _11: (); // in scope 4 at $DIR/exponential_runtime.rs:38:9: 38:25 -+ let _12: (); // in scope 4 at $DIR/exponential_runtime.rs:39:9: 39:25 -+ let _13: (); // in scope 4 at $DIR/exponential_runtime.rs:40:9: 40:25 -+ scope 5 (inlined <() as C>::call) { // at $DIR/exponential_runtime.rs:38:9: 38:25 -+ let _14: (); // in scope 5 at $DIR/exponential_runtime.rs:26:9: 26:25 -+ let _15: (); // in scope 5 at $DIR/exponential_runtime.rs:27:9: 27:25 -+ let _16: (); // in scope 5 at $DIR/exponential_runtime.rs:28:9: 28:25 -+ scope 6 (inlined <() as B>::call) { // at $DIR/exponential_runtime.rs:26:9: 26:25 -+ let _17: (); // in scope 6 at $DIR/exponential_runtime.rs:14:9: 14:25 -+ let _18: (); // in scope 6 at $DIR/exponential_runtime.rs:15:9: 15:25 -+ let _19: (); // in scope 6 at $DIR/exponential_runtime.rs:16:9: 16:25 + let mut _0: (); + let _1: (); ++ scope 1 (inlined <() as G>::call) { ++ let _2: (); ++ let _3: (); ++ let _4: (); ++ scope 2 (inlined <() as F>::call) { ++ let _5: (); ++ let _6: (); ++ let _7: (); ++ scope 3 (inlined <() as E>::call) { ++ let _8: (); ++ let _9: (); ++ let _10: (); ++ scope 4 (inlined <() as D>::call) { ++ let _11: (); ++ let _12: (); ++ let _13: (); ++ scope 5 (inlined <() as C>::call) { ++ let _14: (); ++ let _15: (); ++ let _16: (); ++ scope 6 (inlined <() as B>::call) { ++ let _17: (); ++ let _18: (); ++ let _19: (); + } + } + } @@ -36,140 +36,99 @@ + } bb0: { - StorageLive(_1); // scope 0 at $DIR/exponential_runtime.rs:+1:5: +1:22 -- _1 = <() as G>::call() -> bb1; // scope 0 at $DIR/exponential_runtime.rs:+1:5: +1:22 -+ StorageLive(_2); // scope 0 at $DIR/exponential_runtime.rs:+1:5: +1:22 -+ StorageLive(_3); // scope 0 at $DIR/exponential_runtime.rs:+1:5: +1:22 -+ StorageLive(_4); // scope 0 at $DIR/exponential_runtime.rs:+1:5: +1:22 -+ StorageLive(_5); // scope 1 at $DIR/exponential_runtime.rs:74:9: 74:25 -+ StorageLive(_6); // scope 1 at $DIR/exponential_runtime.rs:74:9: 74:25 -+ StorageLive(_7); // scope 1 at $DIR/exponential_runtime.rs:74:9: 74:25 -+ StorageLive(_8); // scope 2 at $DIR/exponential_runtime.rs:62:9: 62:25 -+ StorageLive(_9); // scope 2 at $DIR/exponential_runtime.rs:62:9: 62:25 -+ StorageLive(_10); // scope 2 at $DIR/exponential_runtime.rs:62:9: 62:25 -+ StorageLive(_11); // scope 3 at $DIR/exponential_runtime.rs:50:9: 50:25 -+ StorageLive(_12); // scope 3 at $DIR/exponential_runtime.rs:50:9: 50:25 -+ StorageLive(_13); // scope 3 at $DIR/exponential_runtime.rs:50:9: 50:25 -+ StorageLive(_14); // scope 4 at $DIR/exponential_runtime.rs:38:9: 38:25 -+ StorageLive(_15); // scope 4 at $DIR/exponential_runtime.rs:38:9: 38:25 -+ StorageLive(_16); // scope 4 at $DIR/exponential_runtime.rs:38:9: 38:25 -+ StorageLive(_17); // scope 5 at $DIR/exponential_runtime.rs:26:9: 26:25 -+ StorageLive(_18); // scope 5 at $DIR/exponential_runtime.rs:26:9: 26:25 -+ StorageLive(_19); // scope 5 at $DIR/exponential_runtime.rs:26:9: 26:25 -+ _17 = <() as A>::call() -> bb12; // scope 6 at $DIR/exponential_runtime.rs:14:9: 14:25 - // mir::Constant -- // + span: $DIR/exponential_runtime.rs:87:5: 87:20 -- // + literal: Const { ty: fn() {<() as G>::call}, val: Value() } -+ // + span: $DIR/exponential_runtime.rs:14:9: 14:23 -+ // + literal: Const { ty: fn() {<() as A>::call}, val: Value() } + StorageLive(_1); +- _1 = <() as G>::call() -> bb1; ++ StorageLive(_2); ++ StorageLive(_3); ++ StorageLive(_4); ++ StorageLive(_5); ++ StorageLive(_6); ++ StorageLive(_7); ++ StorageLive(_8); ++ StorageLive(_9); ++ StorageLive(_10); ++ StorageLive(_11); ++ StorageLive(_12); ++ StorageLive(_13); ++ StorageLive(_14); ++ StorageLive(_15); ++ StorageLive(_16); ++ StorageLive(_17); ++ StorageLive(_18); ++ StorageLive(_19); ++ _17 = <() as A>::call() -> bb12; } bb1: { -+ StorageDead(_4); // scope 0 at $DIR/exponential_runtime.rs:+1:5: +1:22 -+ StorageDead(_3); // scope 0 at $DIR/exponential_runtime.rs:+1:5: +1:22 -+ StorageDead(_2); // scope 0 at $DIR/exponential_runtime.rs:+1:5: +1:22 - StorageDead(_1); // scope 0 at $DIR/exponential_runtime.rs:+1:22: +1:23 - _0 = const (); // scope 0 at $DIR/exponential_runtime.rs:+0:11: +2:2 - return; // scope 0 at $DIR/exponential_runtime.rs:+2:2: +2:2 ++ StorageDead(_4); ++ StorageDead(_3); ++ StorageDead(_2); + StorageDead(_1); + _0 = const (); + return; + } + + bb2: { -+ StorageDead(_7); // scope 1 at $DIR/exponential_runtime.rs:74:9: 74:25 -+ StorageDead(_6); // scope 1 at $DIR/exponential_runtime.rs:74:9: 74:25 -+ StorageDead(_5); // scope 1 at $DIR/exponential_runtime.rs:74:9: 74:25 -+ _3 = <() as F>::call() -> bb3; // scope 1 at $DIR/exponential_runtime.rs:75:9: 75:25 -+ // mir::Constant -+ // + span: $DIR/exponential_runtime.rs:75:9: 75:23 -+ // + literal: Const { ty: fn() {<() as F>::call}, val: Value() } ++ StorageDead(_7); ++ StorageDead(_6); ++ StorageDead(_5); ++ _3 = <() as F>::call() -> bb3; + } + + bb3: { -+ _4 = <() as F>::call() -> bb1; // scope 1 at $DIR/exponential_runtime.rs:76:9: 76:25 -+ // mir::Constant -+ // + span: $DIR/exponential_runtime.rs:76:9: 76:23 -+ // + literal: Const { ty: fn() {<() as F>::call}, val: Value() } ++ _4 = <() as F>::call() -> bb1; + } + + bb4: { -+ StorageDead(_10); // scope 2 at $DIR/exponential_runtime.rs:62:9: 62:25 -+ StorageDead(_9); // scope 2 at $DIR/exponential_runtime.rs:62:9: 62:25 -+ StorageDead(_8); // scope 2 at $DIR/exponential_runtime.rs:62:9: 62:25 -+ _6 = <() as E>::call() -> bb5; // scope 2 at $DIR/exponential_runtime.rs:63:9: 63:25 -+ // mir::Constant -+ // + span: $DIR/exponential_runtime.rs:63:9: 63:23 -+ // + literal: Const { ty: fn() {<() as E>::call}, val: Value() } ++ StorageDead(_10); ++ StorageDead(_9); ++ StorageDead(_8); ++ _6 = <() as E>::call() -> bb5; + } + + bb5: { -+ _7 = <() as E>::call() -> bb2; // scope 2 at $DIR/exponential_runtime.rs:64:9: 64:25 -+ // mir::Constant -+ // + span: $DIR/exponential_runtime.rs:64:9: 64:23 -+ // + literal: Const { ty: fn() {<() as E>::call}, val: Value() } ++ _7 = <() as E>::call() -> bb2; + } + + bb6: { -+ StorageDead(_13); // scope 3 at $DIR/exponential_runtime.rs:50:9: 50:25 -+ StorageDead(_12); // scope 3 at $DIR/exponential_runtime.rs:50:9: 50:25 -+ StorageDead(_11); // scope 3 at $DIR/exponential_runtime.rs:50:9: 50:25 -+ _9 = <() as D>::call() -> bb7; // scope 3 at $DIR/exponential_runtime.rs:51:9: 51:25 -+ // mir::Constant -+ // + span: $DIR/exponential_runtime.rs:51:9: 51:23 -+ // + literal: Const { ty: fn() {<() as D>::call}, val: Value() } ++ StorageDead(_13); ++ StorageDead(_12); ++ StorageDead(_11); ++ _9 = <() as D>::call() -> bb7; + } + + bb7: { -+ _10 = <() as D>::call() -> bb4; // scope 3 at $DIR/exponential_runtime.rs:52:9: 52:25 -+ // mir::Constant -+ // + span: $DIR/exponential_runtime.rs:52:9: 52:23 -+ // + literal: Const { ty: fn() {<() as D>::call}, val: Value() } ++ _10 = <() as D>::call() -> bb4; + } + + bb8: { -+ StorageDead(_16); // scope 4 at $DIR/exponential_runtime.rs:38:9: 38:25 -+ StorageDead(_15); // scope 4 at $DIR/exponential_runtime.rs:38:9: 38:25 -+ StorageDead(_14); // scope 4 at $DIR/exponential_runtime.rs:38:9: 38:25 -+ _12 = <() as C>::call() -> bb9; // scope 4 at $DIR/exponential_runtime.rs:39:9: 39:25 -+ // mir::Constant -+ // + span: $DIR/exponential_runtime.rs:39:9: 39:23 -+ // + literal: Const { ty: fn() {<() as C>::call}, val: Value() } ++ StorageDead(_16); ++ StorageDead(_15); ++ StorageDead(_14); ++ _12 = <() as C>::call() -> bb9; + } + + bb9: { -+ _13 = <() as C>::call() -> bb6; // scope 4 at $DIR/exponential_runtime.rs:40:9: 40:25 -+ // mir::Constant -+ // + span: $DIR/exponential_runtime.rs:40:9: 40:23 -+ // + literal: Const { ty: fn() {<() as C>::call}, val: Value() } ++ _13 = <() as C>::call() -> bb6; + } + + bb10: { -+ StorageDead(_19); // scope 5 at $DIR/exponential_runtime.rs:26:9: 26:25 -+ StorageDead(_18); // scope 5 at $DIR/exponential_runtime.rs:26:9: 26:25 -+ StorageDead(_17); // scope 5 at $DIR/exponential_runtime.rs:26:9: 26:25 -+ _15 = <() as B>::call() -> bb11; // scope 5 at $DIR/exponential_runtime.rs:27:9: 27:25 -+ // mir::Constant -+ // + span: $DIR/exponential_runtime.rs:27:9: 27:23 -+ // + literal: Const { ty: fn() {<() as B>::call}, val: Value() } ++ StorageDead(_19); ++ StorageDead(_18); ++ StorageDead(_17); ++ _15 = <() as B>::call() -> bb11; + } + + bb11: { -+ _16 = <() as B>::call() -> bb8; // scope 5 at $DIR/exponential_runtime.rs:28:9: 28:25 -+ // mir::Constant -+ // + span: $DIR/exponential_runtime.rs:28:9: 28:23 -+ // + literal: Const { ty: fn() {<() as B>::call}, val: Value() } ++ _16 = <() as B>::call() -> bb8; + } + + bb12: { -+ _18 = <() as A>::call() -> bb13; // scope 6 at $DIR/exponential_runtime.rs:15:9: 15:25 -+ // mir::Constant -+ // + span: $DIR/exponential_runtime.rs:15:9: 15:23 -+ // + literal: Const { ty: fn() {<() as A>::call}, val: Value() } ++ _18 = <() as A>::call() -> bb13; + } + + bb13: { -+ _19 = <() as A>::call() -> bb10; // scope 6 at $DIR/exponential_runtime.rs:16:9: 16:25 -+ // mir::Constant -+ // + span: $DIR/exponential_runtime.rs:16:9: 16:23 -+ // + literal: Const { ty: fn() {<() as A>::call}, val: Value() } ++ _19 = <() as A>::call() -> bb10; } } diff --git a/tests/mir-opt/inline/inline_any_operand.bar.Inline.after.mir b/tests/mir-opt/inline/inline_any_operand.bar.Inline.after.mir index 20f737cc29f62..2d0b71e0a645b 100644 --- a/tests/mir-opt/inline/inline_any_operand.bar.Inline.after.mir +++ b/tests/mir-opt/inline/inline_any_operand.bar.Inline.after.mir @@ -1,36 +1,33 @@ // MIR for `bar` after Inline fn bar() -> bool { - let mut _0: bool; // return place in scope 0 at $DIR/inline_any_operand.rs:+0:13: +0:17 - let _1: fn(i32, i32) -> bool {foo}; // in scope 0 at $DIR/inline_any_operand.rs:+1:9: +1:10 - let mut _2: fn(i32, i32) -> bool {foo}; // in scope 0 at $DIR/inline_any_operand.rs:+2:5: +2:6 - let mut _3: i32; // in scope 0 at $DIR/inline_any_operand.rs:+2:5: +2:13 - let mut _4: i32; // in scope 0 at $DIR/inline_any_operand.rs:+2:5: +2:13 + let mut _0: bool; + let _1: fn(i32, i32) -> bool {foo}; + let mut _2: fn(i32, i32) -> bool {foo}; + let mut _3: i32; + let mut _4: i32; scope 1 { - debug f => _1; // in scope 1 at $DIR/inline_any_operand.rs:+1:9: +1:10 - scope 2 (inlined foo) { // at $DIR/inline_any_operand.rs:12:5: 12:13 - debug x => _3; // in scope 2 at $DIR/inline_any_operand.rs:16:8: 16:9 - debug y => _4; // in scope 2 at $DIR/inline_any_operand.rs:16:16: 16:17 + debug f => _1; + scope 2 (inlined foo) { + debug x => _3; + debug y => _4; } } bb0: { - StorageLive(_1); // scope 0 at $DIR/inline_any_operand.rs:+1:9: +1:10 - _1 = foo; // scope 0 at $DIR/inline_any_operand.rs:+1:13: +1:16 - // mir::Constant - // + span: $DIR/inline_any_operand.rs:11:13: 11:16 - // + literal: Const { ty: fn(i32, i32) -> bool {foo}, val: Value() } - StorageLive(_2); // scope 1 at $DIR/inline_any_operand.rs:+2:5: +2:6 - _2 = _1; // scope 1 at $DIR/inline_any_operand.rs:+2:5: +2:6 - StorageLive(_3); // scope 1 at $DIR/inline_any_operand.rs:+2:5: +2:13 - _3 = const 1_i32; // scope 1 at $DIR/inline_any_operand.rs:+2:5: +2:13 - StorageLive(_4); // scope 1 at $DIR/inline_any_operand.rs:+2:5: +2:13 - _4 = const -1_i32; // scope 1 at $DIR/inline_any_operand.rs:+2:5: +2:13 - _0 = Eq(_3, _4); // scope 2 at $DIR/inline_any_operand.rs:17:5: 17:11 - StorageDead(_4); // scope 1 at $DIR/inline_any_operand.rs:+2:5: +2:13 - StorageDead(_3); // scope 1 at $DIR/inline_any_operand.rs:+2:5: +2:13 - StorageDead(_2); // scope 1 at $DIR/inline_any_operand.rs:+2:12: +2:13 - StorageDead(_1); // scope 0 at $DIR/inline_any_operand.rs:+3:1: +3:2 - return; // scope 0 at $DIR/inline_any_operand.rs:+3:2: +3:2 + StorageLive(_1); + _1 = foo; + StorageLive(_2); + _2 = _1; + StorageLive(_3); + _3 = const 1_i32; + StorageLive(_4); + _4 = const -1_i32; + _0 = Eq(_3, _4); + StorageDead(_4); + StorageDead(_3); + StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/inline/inline_closure.foo.Inline.after.mir b/tests/mir-opt/inline/inline_closure.foo.Inline.after.mir index 1d2f99cbe68ea..9384064c53e95 100644 --- a/tests/mir-opt/inline/inline_closure.foo.Inline.after.mir +++ b/tests/mir-opt/inline/inline_closure.foo.Inline.after.mir @@ -1,55 +1,47 @@ // MIR for `foo` after Inline fn foo(_1: T, _2: i32) -> i32 { - debug _t => _1; // in scope 0 at $DIR/inline_closure.rs:+0:17: +0:19 - debug q => _2; // in scope 0 at $DIR/inline_closure.rs:+0:24: +0:25 - let mut _0: i32; // return place in scope 0 at $DIR/inline_closure.rs:+0:35: +0:38 - let _3: [closure@foo::{closure#0}]; // in scope 0 at $DIR/inline_closure.rs:+1:9: +1:10 - let mut _4: &[closure@foo::{closure#0}]; // in scope 0 at $DIR/inline_closure.rs:+2:5: +2:6 - let mut _5: (i32, i32); // in scope 0 at $DIR/inline_closure.rs:+2:5: +2:12 - let mut _6: i32; // in scope 0 at $DIR/inline_closure.rs:+2:7: +2:8 - let mut _7: i32; // in scope 0 at $DIR/inline_closure.rs:+2:10: +2:11 - let mut _8: i32; // in scope 0 at $DIR/inline_closure.rs:+2:5: +2:12 - let mut _9: i32; // in scope 0 at $DIR/inline_closure.rs:+2:5: +2:12 + debug _t => _1; + debug q => _2; + let mut _0: i32; + let _3: [closure@foo::{closure#0}]; + let mut _4: &[closure@foo::{closure#0}]; + let mut _5: (i32, i32); + let mut _6: i32; + let mut _7: i32; + let mut _8: i32; + let mut _9: i32; scope 1 { - debug x => _3; // in scope 1 at $DIR/inline_closure.rs:+1:9: +1:10 - scope 2 (inlined foo::::{closure#0}) { // at $DIR/inline_closure.rs:12:5: 12:12 - debug _t => _8; // in scope 2 at $DIR/inline_closure.rs:+1:14: +1:16 - debug _q => _9; // in scope 2 at $DIR/inline_closure.rs:+1:18: +1:20 + debug x => _3; + scope 2 (inlined foo::::{closure#0}) { + debug _t => _8; + debug _q => _9; } } bb0: { - StorageLive(_3); // scope 0 at $DIR/inline_closure.rs:+1:9: +1:10 - _3 = [closure@foo::::{closure#0}]; // scope 0 at $DIR/inline_closure.rs:+1:13: +1:24 - // closure - // + def_id: DefId(0:6 ~ inline_closure[8f32]::foo::{closure#0}) - // + substs: [ - // T, - // i8, - // extern "rust-call" fn((i32, i32)) -> i32, - // (), - // ] - StorageLive(_4); // scope 1 at $DIR/inline_closure.rs:+2:5: +2:6 - _4 = &_3; // scope 1 at $DIR/inline_closure.rs:+2:5: +2:6 - StorageLive(_5); // scope 1 at $DIR/inline_closure.rs:+2:5: +2:12 - StorageLive(_6); // scope 1 at $DIR/inline_closure.rs:+2:7: +2:8 - _6 = _2; // scope 1 at $DIR/inline_closure.rs:+2:7: +2:8 - StorageLive(_7); // scope 1 at $DIR/inline_closure.rs:+2:10: +2:11 - _7 = _2; // scope 1 at $DIR/inline_closure.rs:+2:10: +2:11 - _5 = (move _6, move _7); // scope 1 at $DIR/inline_closure.rs:+2:5: +2:12 - StorageLive(_8); // scope 1 at $DIR/inline_closure.rs:+2:5: +2:12 - _8 = move (_5.0: i32); // scope 1 at $DIR/inline_closure.rs:+2:5: +2:12 - StorageLive(_9); // scope 1 at $DIR/inline_closure.rs:+2:5: +2:12 - _9 = move (_5.1: i32); // scope 1 at $DIR/inline_closure.rs:+2:5: +2:12 - _0 = _8; // scope 2 at $DIR/inline_closure.rs:+1:22: +1:24 - StorageDead(_9); // scope 1 at $DIR/inline_closure.rs:+2:5: +2:12 - StorageDead(_8); // scope 1 at $DIR/inline_closure.rs:+2:5: +2:12 - StorageDead(_7); // scope 1 at $DIR/inline_closure.rs:+2:11: +2:12 - StorageDead(_6); // scope 1 at $DIR/inline_closure.rs:+2:11: +2:12 - StorageDead(_5); // scope 1 at $DIR/inline_closure.rs:+2:11: +2:12 - StorageDead(_4); // scope 1 at $DIR/inline_closure.rs:+2:11: +2:12 - StorageDead(_3); // scope 0 at $DIR/inline_closure.rs:+3:1: +3:2 - return; // scope 0 at $DIR/inline_closure.rs:+3:2: +3:2 + StorageLive(_3); + _3 = [closure@foo::::{closure#0}]; + StorageLive(_4); + _4 = &_3; + StorageLive(_5); + StorageLive(_6); + _6 = _2; + StorageLive(_7); + _7 = _2; + _5 = (move _6, move _7); + StorageLive(_8); + _8 = move (_5.0: i32); + StorageLive(_9); + _9 = move (_5.1: i32); + _0 = _8; + StorageDead(_9); + StorageDead(_8); + StorageDead(_7); + StorageDead(_6); + StorageDead(_5); + StorageDead(_4); + StorageDead(_3); + return; } } diff --git a/tests/mir-opt/inline/inline_closure_borrows_arg.foo.Inline.after.mir b/tests/mir-opt/inline/inline_closure_borrows_arg.foo.Inline.after.mir index 80274bb7e7ef6..17676638a7709 100644 --- a/tests/mir-opt/inline/inline_closure_borrows_arg.foo.Inline.after.mir +++ b/tests/mir-opt/inline/inline_closure_borrows_arg.foo.Inline.after.mir @@ -1,58 +1,50 @@ // MIR for `foo` after Inline fn foo(_1: T, _2: &i32) -> i32 { - debug _t => _1; // in scope 0 at $DIR/inline_closure_borrows_arg.rs:+0:17: +0:19 - debug q => _2; // in scope 0 at $DIR/inline_closure_borrows_arg.rs:+0:24: +0:25 - let mut _0: i32; // return place in scope 0 at $DIR/inline_closure_borrows_arg.rs:+0:36: +0:39 - let _3: [closure@foo::{closure#0}]; // in scope 0 at $DIR/inline_closure_borrows_arg.rs:+1:9: +1:10 - let mut _4: &[closure@foo::{closure#0}]; // in scope 0 at $DIR/inline_closure_borrows_arg.rs:+5:5: +5:6 - let mut _5: (&i32, &i32); // in scope 0 at $DIR/inline_closure_borrows_arg.rs:+5:5: +5:12 - let mut _6: &i32; // in scope 0 at $DIR/inline_closure_borrows_arg.rs:+5:7: +5:8 - let mut _7: &i32; // in scope 0 at $DIR/inline_closure_borrows_arg.rs:+5:10: +5:11 - let mut _8: &i32; // in scope 0 at $DIR/inline_closure_borrows_arg.rs:+5:5: +5:12 - let mut _9: &i32; // in scope 0 at $DIR/inline_closure_borrows_arg.rs:+5:5: +5:12 + debug _t => _1; + debug q => _2; + let mut _0: i32; + let _3: [closure@foo::{closure#0}]; + let mut _4: &[closure@foo::{closure#0}]; + let mut _5: (&i32, &i32); + let mut _6: &i32; + let mut _7: &i32; + let mut _8: &i32; + let mut _9: &i32; scope 1 { - debug x => _3; // in scope 1 at $DIR/inline_closure_borrows_arg.rs:+1:9: +1:10 - scope 2 (inlined foo::::{closure#0}) { // at $DIR/inline_closure_borrows_arg.rs:16:5: 16:12 - debug r => _8; // in scope 2 at $DIR/inline_closure_borrows_arg.rs:+1:14: +1:15 - debug _s => _9; // in scope 2 at $DIR/inline_closure_borrows_arg.rs:+1:23: +1:25 + debug x => _3; + scope 2 (inlined foo::::{closure#0}) { + debug r => _8; + debug _s => _9; scope 3 { - debug variable => _8; // in scope 3 at $DIR/inline_closure_borrows_arg.rs:+2:13: +2:21 + debug variable => _8; } } } bb0: { - StorageLive(_3); // scope 0 at $DIR/inline_closure_borrows_arg.rs:+1:9: +1:10 - _3 = [closure@foo::::{closure#0}]; // scope 0 at $DIR/inline_closure_borrows_arg.rs:+1:13: +4:6 - // closure - // + def_id: DefId(0:6 ~ inline_closure_borrows_arg[f89f]::foo::{closure#0}) - // + substs: [ - // T, - // i8, - // for<'a, 'b> extern "rust-call" fn((&'a i32, &'b i32)) -> i32, - // (), - // ] - StorageLive(_4); // scope 1 at $DIR/inline_closure_borrows_arg.rs:+5:5: +5:6 - _4 = &_3; // scope 1 at $DIR/inline_closure_borrows_arg.rs:+5:5: +5:6 - StorageLive(_5); // scope 1 at $DIR/inline_closure_borrows_arg.rs:+5:5: +5:12 - StorageLive(_6); // scope 1 at $DIR/inline_closure_borrows_arg.rs:+5:7: +5:8 - _6 = &(*_2); // scope 1 at $DIR/inline_closure_borrows_arg.rs:+5:7: +5:8 - StorageLive(_7); // scope 1 at $DIR/inline_closure_borrows_arg.rs:+5:10: +5:11 - _7 = &(*_2); // scope 1 at $DIR/inline_closure_borrows_arg.rs:+5:10: +5:11 - _5 = (move _6, move _7); // scope 1 at $DIR/inline_closure_borrows_arg.rs:+5:5: +5:12 - StorageLive(_8); // scope 1 at $DIR/inline_closure_borrows_arg.rs:+5:5: +5:12 - _8 = move (_5.0: &i32); // scope 1 at $DIR/inline_closure_borrows_arg.rs:+5:5: +5:12 - StorageLive(_9); // scope 1 at $DIR/inline_closure_borrows_arg.rs:+5:5: +5:12 - _9 = move (_5.1: &i32); // scope 1 at $DIR/inline_closure_borrows_arg.rs:+5:5: +5:12 - _0 = (*_8); // scope 3 at $DIR/inline_closure_borrows_arg.rs:+3:9: +3:18 - StorageDead(_9); // scope 1 at $DIR/inline_closure_borrows_arg.rs:+5:5: +5:12 - StorageDead(_8); // scope 1 at $DIR/inline_closure_borrows_arg.rs:+5:5: +5:12 - StorageDead(_7); // scope 1 at $DIR/inline_closure_borrows_arg.rs:+5:11: +5:12 - StorageDead(_6); // scope 1 at $DIR/inline_closure_borrows_arg.rs:+5:11: +5:12 - StorageDead(_5); // scope 1 at $DIR/inline_closure_borrows_arg.rs:+5:11: +5:12 - StorageDead(_4); // scope 1 at $DIR/inline_closure_borrows_arg.rs:+5:11: +5:12 - StorageDead(_3); // scope 0 at $DIR/inline_closure_borrows_arg.rs:+6:1: +6:2 - return; // scope 0 at $DIR/inline_closure_borrows_arg.rs:+6:2: +6:2 + StorageLive(_3); + _3 = [closure@foo::::{closure#0}]; + StorageLive(_4); + _4 = &_3; + StorageLive(_5); + StorageLive(_6); + _6 = &(*_2); + StorageLive(_7); + _7 = &(*_2); + _5 = (move _6, move _7); + StorageLive(_8); + _8 = move (_5.0: &i32); + StorageLive(_9); + _9 = move (_5.1: &i32); + _0 = (*_8); + StorageDead(_9); + StorageDead(_8); + StorageDead(_7); + StorageDead(_6); + StorageDead(_5); + StorageDead(_4); + StorageDead(_3); + return; } } diff --git a/tests/mir-opt/inline/inline_closure_captures.foo.Inline.after.mir b/tests/mir-opt/inline/inline_closure_captures.foo.Inline.after.mir index 33bf3b73b2372..b8178d201261f 100644 --- a/tests/mir-opt/inline/inline_closure_captures.foo.Inline.after.mir +++ b/tests/mir-opt/inline/inline_closure_captures.foo.Inline.after.mir @@ -1,68 +1,60 @@ // MIR for `foo` after Inline fn foo(_1: T, _2: i32) -> (i32, T) { - debug t => _1; // in scope 0 at $DIR/inline_closure_captures.rs:+0:17: +0:18 - debug q => _2; // in scope 0 at $DIR/inline_closure_captures.rs:+0:23: +0:24 - let mut _0: (i32, T); // return place in scope 0 at $DIR/inline_closure_captures.rs:+0:34: +0:42 - let _3: [closure@foo::{closure#0}]; // in scope 0 at $DIR/inline_closure_captures.rs:+1:9: +1:10 - let mut _4: &i32; // in scope 0 at $DIR/inline_closure_captures.rs:+1:13: +1:24 - let mut _5: &T; // in scope 0 at $DIR/inline_closure_captures.rs:+1:13: +1:24 - let mut _6: &[closure@foo::{closure#0}]; // in scope 0 at $DIR/inline_closure_captures.rs:+2:5: +2:6 - let mut _7: (i32,); // in scope 0 at $DIR/inline_closure_captures.rs:+2:5: +2:9 - let mut _8: i32; // in scope 0 at $DIR/inline_closure_captures.rs:+2:7: +2:8 - let mut _9: i32; // in scope 0 at $DIR/inline_closure_captures.rs:+2:5: +2:9 + debug t => _1; + debug q => _2; + let mut _0: (i32, T); + let _3: [closure@foo::{closure#0}]; + let mut _4: &i32; + let mut _5: &T; + let mut _6: &[closure@foo::{closure#0}]; + let mut _7: (i32,); + let mut _8: i32; + let mut _9: i32; scope 1 { - debug x => _3; // in scope 1 at $DIR/inline_closure_captures.rs:+1:9: +1:10 - scope 2 (inlined foo::::{closure#0}) { // at $DIR/inline_closure_captures.rs:12:5: 12:9 - debug _q => _9; // in scope 2 at $DIR/inline_closure_captures.rs:+1:14: +1:16 - debug q => (*((*_6).0: &i32)); // in scope 2 at $DIR/inline_closure_captures.rs:+0:23: +0:24 - debug t => (*((*_6).1: &T)); // in scope 2 at $DIR/inline_closure_captures.rs:+0:17: +0:18 - let mut _10: &i32; // in scope 2 at $DIR/inline_closure_captures.rs:+1:13: +1:24 - let mut _11: i32; // in scope 2 at $DIR/inline_closure_captures.rs:+1:19: +1:20 - let mut _12: &T; // in scope 2 at $DIR/inline_closure_captures.rs:+1:13: +1:24 - let mut _13: T; // in scope 2 at $DIR/inline_closure_captures.rs:+1:22: +1:23 + debug x => _3; + scope 2 (inlined foo::::{closure#0}) { + debug _q => _9; + debug q => (*((*_6).0: &i32)); + debug t => (*((*_6).1: &T)); + let mut _10: &i32; + let mut _11: i32; + let mut _12: &T; + let mut _13: T; } } bb0: { - StorageLive(_3); // scope 0 at $DIR/inline_closure_captures.rs:+1:9: +1:10 - StorageLive(_4); // scope 0 at $DIR/inline_closure_captures.rs:+1:13: +1:24 - _4 = &_2; // scope 0 at $DIR/inline_closure_captures.rs:+1:13: +1:24 - StorageLive(_5); // scope 0 at $DIR/inline_closure_captures.rs:+1:13: +1:24 - _5 = &_1; // scope 0 at $DIR/inline_closure_captures.rs:+1:13: +1:24 - _3 = [closure@foo::::{closure#0}] { q: move _4, t: move _5 }; // scope 0 at $DIR/inline_closure_captures.rs:+1:13: +1:24 - // closure - // + def_id: DefId(0:6 ~ inline_closure_captures[63a5]::foo::{closure#0}) - // + substs: [ - // T, - // i8, - // extern "rust-call" fn((i32,)) -> (i32, T), - // (&i32, &T), - // ] - StorageDead(_5); // scope 0 at $DIR/inline_closure_captures.rs:+1:16: +1:17 - StorageDead(_4); // scope 0 at $DIR/inline_closure_captures.rs:+1:16: +1:17 - StorageLive(_6); // scope 1 at $DIR/inline_closure_captures.rs:+2:5: +2:6 - _6 = &_3; // scope 1 at $DIR/inline_closure_captures.rs:+2:5: +2:6 - StorageLive(_7); // scope 1 at $DIR/inline_closure_captures.rs:+2:5: +2:9 - StorageLive(_8); // scope 1 at $DIR/inline_closure_captures.rs:+2:7: +2:8 - _8 = _2; // scope 1 at $DIR/inline_closure_captures.rs:+2:7: +2:8 - _7 = (move _8,); // scope 1 at $DIR/inline_closure_captures.rs:+2:5: +2:9 - StorageLive(_9); // scope 1 at $DIR/inline_closure_captures.rs:+2:5: +2:9 - _9 = move (_7.0: i32); // scope 1 at $DIR/inline_closure_captures.rs:+2:5: +2:9 - StorageLive(_11); // scope 2 at $DIR/inline_closure_captures.rs:+1:19: +1:20 - _10 = deref_copy ((*_6).0: &i32); // scope 2 at $DIR/inline_closure_captures.rs:+1:19: +1:20 - _11 = (*_10); // scope 2 at $DIR/inline_closure_captures.rs:+1:19: +1:20 - StorageLive(_13); // scope 2 at $DIR/inline_closure_captures.rs:+1:22: +1:23 - _12 = deref_copy ((*_6).1: &T); // scope 2 at $DIR/inline_closure_captures.rs:+1:22: +1:23 - _13 = (*_12); // scope 2 at $DIR/inline_closure_captures.rs:+1:22: +1:23 - _0 = (move _11, move _13); // scope 2 at $DIR/inline_closure_captures.rs:+1:18: +1:24 - StorageDead(_13); // scope 2 at $DIR/inline_closure_captures.rs:+1:23: +1:24 - StorageDead(_11); // scope 2 at $DIR/inline_closure_captures.rs:+1:23: +1:24 - StorageDead(_9); // scope 1 at $DIR/inline_closure_captures.rs:+2:5: +2:9 - StorageDead(_8); // scope 1 at $DIR/inline_closure_captures.rs:+2:8: +2:9 - StorageDead(_7); // scope 1 at $DIR/inline_closure_captures.rs:+2:8: +2:9 - StorageDead(_6); // scope 1 at $DIR/inline_closure_captures.rs:+2:8: +2:9 - StorageDead(_3); // scope 0 at $DIR/inline_closure_captures.rs:+3:1: +3:2 - return; // scope 0 at $DIR/inline_closure_captures.rs:+3:2: +3:2 + StorageLive(_3); + StorageLive(_4); + _4 = &_2; + StorageLive(_5); + _5 = &_1; + _3 = [closure@foo::::{closure#0}] { q: move _4, t: move _5 }; + StorageDead(_5); + StorageDead(_4); + StorageLive(_6); + _6 = &_3; + StorageLive(_7); + StorageLive(_8); + _8 = _2; + _7 = (move _8,); + StorageLive(_9); + _9 = move (_7.0: i32); + StorageLive(_11); + _10 = deref_copy ((*_6).0: &i32); + _11 = (*_10); + StorageLive(_13); + _12 = deref_copy ((*_6).1: &T); + _13 = (*_12); + _0 = (move _11, move _13); + StorageDead(_13); + StorageDead(_11); + StorageDead(_9); + StorageDead(_8); + StorageDead(_7); + StorageDead(_6); + StorageDead(_3); + return; } } diff --git a/tests/mir-opt/inline/inline_compatibility.inlined_no_sanitize.Inline.panic-abort.diff b/tests/mir-opt/inline/inline_compatibility.inlined_no_sanitize.Inline.panic-abort.diff index abb0263d7e48d..eac51000cac49 100644 --- a/tests/mir-opt/inline/inline_compatibility.inlined_no_sanitize.Inline.panic-abort.diff +++ b/tests/mir-opt/inline/inline_compatibility.inlined_no_sanitize.Inline.panic-abort.diff @@ -2,23 +2,20 @@ + // MIR for `inlined_no_sanitize` after Inline fn inlined_no_sanitize() -> () { - let mut _0: (); // return place in scope 0 at $DIR/inline_compatibility.rs:+0:37: +0:37 - let _1: (); // in scope 0 at $DIR/inline_compatibility.rs:+1:5: +1:18 -+ scope 1 (inlined no_sanitize) { // at $DIR/inline_compatibility.rs:25:5: 25:18 + let mut _0: (); + let _1: (); ++ scope 1 (inlined no_sanitize) { + } bb0: { - StorageLive(_1); // scope 0 at $DIR/inline_compatibility.rs:+1:5: +1:18 -- _1 = no_sanitize() -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/inline_compatibility.rs:+1:5: +1:18 -- // mir::Constant -- // + span: $DIR/inline_compatibility.rs:25:5: 25:16 -- // + literal: Const { ty: unsafe fn() {no_sanitize}, val: Value() } + StorageLive(_1); +- _1 = no_sanitize() -> [return: bb1, unwind unreachable]; - } - - bb1: { - StorageDead(_1); // scope 0 at $DIR/inline_compatibility.rs:+1:18: +1:19 - _0 = const (); // scope 0 at $DIR/inline_compatibility.rs:+0:37: +2:2 - return; // scope 0 at $DIR/inline_compatibility.rs:+2:2: +2:2 + StorageDead(_1); + _0 = const (); + return; } } diff --git a/tests/mir-opt/inline/inline_compatibility.inlined_no_sanitize.Inline.panic-unwind.diff b/tests/mir-opt/inline/inline_compatibility.inlined_no_sanitize.Inline.panic-unwind.diff index de4462227fd8d..10e0f0efcbcfd 100644 --- a/tests/mir-opt/inline/inline_compatibility.inlined_no_sanitize.Inline.panic-unwind.diff +++ b/tests/mir-opt/inline/inline_compatibility.inlined_no_sanitize.Inline.panic-unwind.diff @@ -2,23 +2,20 @@ + // MIR for `inlined_no_sanitize` after Inline fn inlined_no_sanitize() -> () { - let mut _0: (); // return place in scope 0 at $DIR/inline_compatibility.rs:+0:37: +0:37 - let _1: (); // in scope 0 at $DIR/inline_compatibility.rs:+1:5: +1:18 -+ scope 1 (inlined no_sanitize) { // at $DIR/inline_compatibility.rs:25:5: 25:18 + let mut _0: (); + let _1: (); ++ scope 1 (inlined no_sanitize) { + } bb0: { - StorageLive(_1); // scope 0 at $DIR/inline_compatibility.rs:+1:5: +1:18 -- _1 = no_sanitize() -> bb1; // scope 0 at $DIR/inline_compatibility.rs:+1:5: +1:18 -- // mir::Constant -- // + span: $DIR/inline_compatibility.rs:25:5: 25:16 -- // + literal: Const { ty: unsafe fn() {no_sanitize}, val: Value() } + StorageLive(_1); +- _1 = no_sanitize() -> bb1; - } - - bb1: { - StorageDead(_1); // scope 0 at $DIR/inline_compatibility.rs:+1:18: +1:19 - _0 = const (); // scope 0 at $DIR/inline_compatibility.rs:+0:37: +2:2 - return; // scope 0 at $DIR/inline_compatibility.rs:+2:2: +2:2 + StorageDead(_1); + _0 = const (); + return; } } diff --git a/tests/mir-opt/inline/inline_compatibility.inlined_target_feature.Inline.panic-abort.diff b/tests/mir-opt/inline/inline_compatibility.inlined_target_feature.Inline.panic-abort.diff index e758127265ebd..c2a81b9804e7e 100644 --- a/tests/mir-opt/inline/inline_compatibility.inlined_target_feature.Inline.panic-abort.diff +++ b/tests/mir-opt/inline/inline_compatibility.inlined_target_feature.Inline.panic-abort.diff @@ -2,23 +2,20 @@ + // MIR for `inlined_target_feature` after Inline fn inlined_target_feature() -> () { - let mut _0: (); // return place in scope 0 at $DIR/inline_compatibility.rs:+0:40: +0:40 - let _1: (); // in scope 0 at $DIR/inline_compatibility.rs:+1:5: +1:21 -+ scope 1 (inlined target_feature) { // at $DIR/inline_compatibility.rs:14:5: 14:21 + let mut _0: (); + let _1: (); ++ scope 1 (inlined target_feature) { + } bb0: { - StorageLive(_1); // scope 0 at $DIR/inline_compatibility.rs:+1:5: +1:21 -- _1 = target_feature() -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/inline_compatibility.rs:+1:5: +1:21 -- // mir::Constant -- // + span: $DIR/inline_compatibility.rs:14:5: 14:19 -- // + literal: Const { ty: unsafe fn() {target_feature}, val: Value() } + StorageLive(_1); +- _1 = target_feature() -> [return: bb1, unwind unreachable]; - } - - bb1: { - StorageDead(_1); // scope 0 at $DIR/inline_compatibility.rs:+1:21: +1:22 - _0 = const (); // scope 0 at $DIR/inline_compatibility.rs:+0:40: +2:2 - return; // scope 0 at $DIR/inline_compatibility.rs:+2:2: +2:2 + StorageDead(_1); + _0 = const (); + return; } } diff --git a/tests/mir-opt/inline/inline_compatibility.inlined_target_feature.Inline.panic-unwind.diff b/tests/mir-opt/inline/inline_compatibility.inlined_target_feature.Inline.panic-unwind.diff index 9eb565bd0e71e..b854e93d9b794 100644 --- a/tests/mir-opt/inline/inline_compatibility.inlined_target_feature.Inline.panic-unwind.diff +++ b/tests/mir-opt/inline/inline_compatibility.inlined_target_feature.Inline.panic-unwind.diff @@ -2,23 +2,20 @@ + // MIR for `inlined_target_feature` after Inline fn inlined_target_feature() -> () { - let mut _0: (); // return place in scope 0 at $DIR/inline_compatibility.rs:+0:40: +0:40 - let _1: (); // in scope 0 at $DIR/inline_compatibility.rs:+1:5: +1:21 -+ scope 1 (inlined target_feature) { // at $DIR/inline_compatibility.rs:14:5: 14:21 + let mut _0: (); + let _1: (); ++ scope 1 (inlined target_feature) { + } bb0: { - StorageLive(_1); // scope 0 at $DIR/inline_compatibility.rs:+1:5: +1:21 -- _1 = target_feature() -> bb1; // scope 0 at $DIR/inline_compatibility.rs:+1:5: +1:21 -- // mir::Constant -- // + span: $DIR/inline_compatibility.rs:14:5: 14:19 -- // + literal: Const { ty: unsafe fn() {target_feature}, val: Value() } + StorageLive(_1); +- _1 = target_feature() -> bb1; - } - - bb1: { - StorageDead(_1); // scope 0 at $DIR/inline_compatibility.rs:+1:21: +1:22 - _0 = const (); // scope 0 at $DIR/inline_compatibility.rs:+0:40: +2:2 - return; // scope 0 at $DIR/inline_compatibility.rs:+2:2: +2:2 + StorageDead(_1); + _0 = const (); + return; } } diff --git a/tests/mir-opt/inline/inline_compatibility.not_inlined_c_variadic.Inline.panic-abort.diff b/tests/mir-opt/inline/inline_compatibility.not_inlined_c_variadic.Inline.panic-abort.diff index 124435cd258ef..791c5a0f29f89 100644 --- a/tests/mir-opt/inline/inline_compatibility.not_inlined_c_variadic.Inline.panic-abort.diff +++ b/tests/mir-opt/inline/inline_compatibility.not_inlined_c_variadic.Inline.panic-abort.diff @@ -2,24 +2,21 @@ + // MIR for `not_inlined_c_variadic` after Inline fn not_inlined_c_variadic() -> () { - let mut _0: (); // return place in scope 0 at $DIR/inline_compatibility.rs:+0:40: +0:40 - let _1: u32; // in scope 0 at $DIR/inline_compatibility.rs:+1:9: +1:10 + let mut _0: (); + let _1: u32; scope 1 { - debug s => _1; // in scope 1 at $DIR/inline_compatibility.rs:+1:9: +1:10 + debug s => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/inline_compatibility.rs:+1:9: +1:10 - _1 = sum(const 4_u32, const 4_u32, const 30_u32, const 200_u32, const 1000_u32) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/inline_compatibility.rs:+1:13: +1:52 - // mir::Constant - // + span: $DIR/inline_compatibility.rs:43:13: 43:16 - // + literal: Const { ty: unsafe extern "C" fn(u32, ...) -> u32 {sum}, val: Value() } + StorageLive(_1); + _1 = sum(const 4_u32, const 4_u32, const 30_u32, const 200_u32, const 1000_u32) -> [return: bb1, unwind unreachable]; } bb1: { - _0 = const (); // scope 0 at $DIR/inline_compatibility.rs:+0:40: +2:2 - StorageDead(_1); // scope 0 at $DIR/inline_compatibility.rs:+2:1: +2:2 - return; // scope 0 at $DIR/inline_compatibility.rs:+2:2: +2:2 + _0 = const (); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/inline/inline_compatibility.not_inlined_c_variadic.Inline.panic-unwind.diff b/tests/mir-opt/inline/inline_compatibility.not_inlined_c_variadic.Inline.panic-unwind.diff index 775f3af76b6cf..d9e7177e6278c 100644 --- a/tests/mir-opt/inline/inline_compatibility.not_inlined_c_variadic.Inline.panic-unwind.diff +++ b/tests/mir-opt/inline/inline_compatibility.not_inlined_c_variadic.Inline.panic-unwind.diff @@ -2,24 +2,21 @@ + // MIR for `not_inlined_c_variadic` after Inline fn not_inlined_c_variadic() -> () { - let mut _0: (); // return place in scope 0 at $DIR/inline_compatibility.rs:+0:40: +0:40 - let _1: u32; // in scope 0 at $DIR/inline_compatibility.rs:+1:9: +1:10 + let mut _0: (); + let _1: u32; scope 1 { - debug s => _1; // in scope 1 at $DIR/inline_compatibility.rs:+1:9: +1:10 + debug s => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/inline_compatibility.rs:+1:9: +1:10 - _1 = sum(const 4_u32, const 4_u32, const 30_u32, const 200_u32, const 1000_u32) -> bb1; // scope 0 at $DIR/inline_compatibility.rs:+1:13: +1:52 - // mir::Constant - // + span: $DIR/inline_compatibility.rs:43:13: 43:16 - // + literal: Const { ty: unsafe extern "C" fn(u32, ...) -> u32 {sum}, val: Value() } + StorageLive(_1); + _1 = sum(const 4_u32, const 4_u32, const 30_u32, const 200_u32, const 1000_u32) -> bb1; } bb1: { - _0 = const (); // scope 0 at $DIR/inline_compatibility.rs:+0:40: +2:2 - StorageDead(_1); // scope 0 at $DIR/inline_compatibility.rs:+2:1: +2:2 - return; // scope 0 at $DIR/inline_compatibility.rs:+2:2: +2:2 + _0 = const (); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/inline/inline_compatibility.not_inlined_no_sanitize.Inline.panic-abort.diff b/tests/mir-opt/inline/inline_compatibility.not_inlined_no_sanitize.Inline.panic-abort.diff index 21dc2ee8da1f8..b9d0946b7c3a3 100644 --- a/tests/mir-opt/inline/inline_compatibility.not_inlined_no_sanitize.Inline.panic-abort.diff +++ b/tests/mir-opt/inline/inline_compatibility.not_inlined_no_sanitize.Inline.panic-abort.diff @@ -2,21 +2,18 @@ + // MIR for `not_inlined_no_sanitize` after Inline fn not_inlined_no_sanitize() -> () { - let mut _0: (); // return place in scope 0 at $DIR/inline_compatibility.rs:+0:41: +0:41 - let _1: (); // in scope 0 at $DIR/inline_compatibility.rs:+1:5: +1:18 + let mut _0: (); + let _1: (); bb0: { - StorageLive(_1); // scope 0 at $DIR/inline_compatibility.rs:+1:5: +1:18 - _1 = no_sanitize() -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/inline_compatibility.rs:+1:5: +1:18 - // mir::Constant - // + span: $DIR/inline_compatibility.rs:30:5: 30:16 - // + literal: Const { ty: unsafe fn() {no_sanitize}, val: Value() } + StorageLive(_1); + _1 = no_sanitize() -> [return: bb1, unwind unreachable]; } bb1: { - StorageDead(_1); // scope 0 at $DIR/inline_compatibility.rs:+1:18: +1:19 - _0 = const (); // scope 0 at $DIR/inline_compatibility.rs:+0:41: +2:2 - return; // scope 0 at $DIR/inline_compatibility.rs:+2:2: +2:2 + StorageDead(_1); + _0 = const (); + return; } } diff --git a/tests/mir-opt/inline/inline_compatibility.not_inlined_no_sanitize.Inline.panic-unwind.diff b/tests/mir-opt/inline/inline_compatibility.not_inlined_no_sanitize.Inline.panic-unwind.diff index 8ef5b8ba98e5e..7d9b1d847b021 100644 --- a/tests/mir-opt/inline/inline_compatibility.not_inlined_no_sanitize.Inline.panic-unwind.diff +++ b/tests/mir-opt/inline/inline_compatibility.not_inlined_no_sanitize.Inline.panic-unwind.diff @@ -2,21 +2,18 @@ + // MIR for `not_inlined_no_sanitize` after Inline fn not_inlined_no_sanitize() -> () { - let mut _0: (); // return place in scope 0 at $DIR/inline_compatibility.rs:+0:41: +0:41 - let _1: (); // in scope 0 at $DIR/inline_compatibility.rs:+1:5: +1:18 + let mut _0: (); + let _1: (); bb0: { - StorageLive(_1); // scope 0 at $DIR/inline_compatibility.rs:+1:5: +1:18 - _1 = no_sanitize() -> bb1; // scope 0 at $DIR/inline_compatibility.rs:+1:5: +1:18 - // mir::Constant - // + span: $DIR/inline_compatibility.rs:30:5: 30:16 - // + literal: Const { ty: unsafe fn() {no_sanitize}, val: Value() } + StorageLive(_1); + _1 = no_sanitize() -> bb1; } bb1: { - StorageDead(_1); // scope 0 at $DIR/inline_compatibility.rs:+1:18: +1:19 - _0 = const (); // scope 0 at $DIR/inline_compatibility.rs:+0:41: +2:2 - return; // scope 0 at $DIR/inline_compatibility.rs:+2:2: +2:2 + StorageDead(_1); + _0 = const (); + return; } } diff --git a/tests/mir-opt/inline/inline_compatibility.not_inlined_target_feature.Inline.panic-abort.diff b/tests/mir-opt/inline/inline_compatibility.not_inlined_target_feature.Inline.panic-abort.diff index 02feec05befde..7c689a73482ad 100644 --- a/tests/mir-opt/inline/inline_compatibility.not_inlined_target_feature.Inline.panic-abort.diff +++ b/tests/mir-opt/inline/inline_compatibility.not_inlined_target_feature.Inline.panic-abort.diff @@ -2,21 +2,18 @@ + // MIR for `not_inlined_target_feature` after Inline fn not_inlined_target_feature() -> () { - let mut _0: (); // return place in scope 0 at $DIR/inline_compatibility.rs:+0:44: +0:44 - let _1: (); // in scope 0 at $DIR/inline_compatibility.rs:+1:5: +1:21 + let mut _0: (); + let _1: (); bb0: { - StorageLive(_1); // scope 0 at $DIR/inline_compatibility.rs:+1:5: +1:21 - _1 = target_feature() -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/inline_compatibility.rs:+1:5: +1:21 - // mir::Constant - // + span: $DIR/inline_compatibility.rs:19:5: 19:19 - // + literal: Const { ty: unsafe fn() {target_feature}, val: Value() } + StorageLive(_1); + _1 = target_feature() -> [return: bb1, unwind unreachable]; } bb1: { - StorageDead(_1); // scope 0 at $DIR/inline_compatibility.rs:+1:21: +1:22 - _0 = const (); // scope 0 at $DIR/inline_compatibility.rs:+0:44: +2:2 - return; // scope 0 at $DIR/inline_compatibility.rs:+2:2: +2:2 + StorageDead(_1); + _0 = const (); + return; } } diff --git a/tests/mir-opt/inline/inline_compatibility.not_inlined_target_feature.Inline.panic-unwind.diff b/tests/mir-opt/inline/inline_compatibility.not_inlined_target_feature.Inline.panic-unwind.diff index 2523162dfff92..5bee586528380 100644 --- a/tests/mir-opt/inline/inline_compatibility.not_inlined_target_feature.Inline.panic-unwind.diff +++ b/tests/mir-opt/inline/inline_compatibility.not_inlined_target_feature.Inline.panic-unwind.diff @@ -2,21 +2,18 @@ + // MIR for `not_inlined_target_feature` after Inline fn not_inlined_target_feature() -> () { - let mut _0: (); // return place in scope 0 at $DIR/inline_compatibility.rs:+0:44: +0:44 - let _1: (); // in scope 0 at $DIR/inline_compatibility.rs:+1:5: +1:21 + let mut _0: (); + let _1: (); bb0: { - StorageLive(_1); // scope 0 at $DIR/inline_compatibility.rs:+1:5: +1:21 - _1 = target_feature() -> bb1; // scope 0 at $DIR/inline_compatibility.rs:+1:5: +1:21 - // mir::Constant - // + span: $DIR/inline_compatibility.rs:19:5: 19:19 - // + literal: Const { ty: unsafe fn() {target_feature}, val: Value() } + StorageLive(_1); + _1 = target_feature() -> bb1; } bb1: { - StorageDead(_1); // scope 0 at $DIR/inline_compatibility.rs:+1:21: +1:22 - _0 = const (); // scope 0 at $DIR/inline_compatibility.rs:+0:44: +2:2 - return; // scope 0 at $DIR/inline_compatibility.rs:+2:2: +2:2 + StorageDead(_1); + _0 = const (); + return; } } diff --git a/tests/mir-opt/inline/inline_cycle.one.Inline.panic-abort.diff b/tests/mir-opt/inline/inline_cycle.one.Inline.panic-abort.diff index 228a34a492ebd..c8805a4466a7b 100644 --- a/tests/mir-opt/inline/inline_cycle.one.Inline.panic-abort.diff +++ b/tests/mir-opt/inline/inline_cycle.one.Inline.panic-abort.diff @@ -2,29 +2,24 @@ + // MIR for `one` after Inline fn one() -> () { - let mut _0: (); // return place in scope 0 at $DIR/inline_cycle.rs:+0:10: +0:10 - let _1: (); // in scope 0 at $DIR/inline_cycle.rs:+1:5: +1:24 -+ scope 1 (inlined ::call) { // at $DIR/inline_cycle.rs:15:5: 15:24 -+ scope 2 (inlined as Call>::call) { // at $DIR/inline_cycle.rs:44:9: 44:23 -+ scope 3 (inlined as Call>::call) { // at $DIR/inline_cycle.rs:29:9: 29:31 + let mut _0: (); + let _1: (); ++ scope 1 (inlined ::call) { ++ scope 2 (inlined as Call>::call) { ++ scope 3 (inlined as Call>::call) { + } + } + } bb0: { - StorageLive(_1); // scope 0 at $DIR/inline_cycle.rs:+1:5: +1:24 -- _1 = ::call() -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/inline_cycle.rs:+1:5: +1:24 -+ _1 = ::call() -> [return: bb1, unwind unreachable]; // scope 3 at $DIR/inline_cycle.rs:37:9: 37:28 - // mir::Constant -- // + span: $DIR/inline_cycle.rs:15:5: 15:22 -+ // + span: $DIR/inline_cycle.rs:37:9: 37:26 - // + literal: Const { ty: fn() {::call}, val: Value() } + StorageLive(_1); + _1 = ::call() -> [return: bb1, unwind unreachable]; } bb1: { - StorageDead(_1); // scope 0 at $DIR/inline_cycle.rs:+1:24: +1:25 - _0 = const (); // scope 0 at $DIR/inline_cycle.rs:+0:10: +2:2 - return; // scope 0 at $DIR/inline_cycle.rs:+2:2: +2:2 + StorageDead(_1); + _0 = const (); + return; } } diff --git a/tests/mir-opt/inline/inline_cycle.one.Inline.panic-unwind.diff b/tests/mir-opt/inline/inline_cycle.one.Inline.panic-unwind.diff index f6ba69a1d2940..66d25162cb1b8 100644 --- a/tests/mir-opt/inline/inline_cycle.one.Inline.panic-unwind.diff +++ b/tests/mir-opt/inline/inline_cycle.one.Inline.panic-unwind.diff @@ -2,29 +2,24 @@ + // MIR for `one` after Inline fn one() -> () { - let mut _0: (); // return place in scope 0 at $DIR/inline_cycle.rs:+0:10: +0:10 - let _1: (); // in scope 0 at $DIR/inline_cycle.rs:+1:5: +1:24 -+ scope 1 (inlined ::call) { // at $DIR/inline_cycle.rs:15:5: 15:24 -+ scope 2 (inlined as Call>::call) { // at $DIR/inline_cycle.rs:44:9: 44:23 -+ scope 3 (inlined as Call>::call) { // at $DIR/inline_cycle.rs:29:9: 29:31 + let mut _0: (); + let _1: (); ++ scope 1 (inlined ::call) { ++ scope 2 (inlined as Call>::call) { ++ scope 3 (inlined as Call>::call) { + } + } + } bb0: { - StorageLive(_1); // scope 0 at $DIR/inline_cycle.rs:+1:5: +1:24 -- _1 = ::call() -> bb1; // scope 0 at $DIR/inline_cycle.rs:+1:5: +1:24 -+ _1 = ::call() -> bb1; // scope 3 at $DIR/inline_cycle.rs:37:9: 37:28 - // mir::Constant -- // + span: $DIR/inline_cycle.rs:15:5: 15:22 -+ // + span: $DIR/inline_cycle.rs:37:9: 37:26 - // + literal: Const { ty: fn() {::call}, val: Value() } + StorageLive(_1); + _1 = ::call() -> bb1; } bb1: { - StorageDead(_1); // scope 0 at $DIR/inline_cycle.rs:+1:24: +1:25 - _0 = const (); // scope 0 at $DIR/inline_cycle.rs:+0:10: +2:2 - return; // scope 0 at $DIR/inline_cycle.rs:+2:2: +2:2 + StorageDead(_1); + _0 = const (); + return; } } diff --git a/tests/mir-opt/inline/inline_cycle.two.Inline.panic-abort.diff b/tests/mir-opt/inline/inline_cycle.two.Inline.panic-abort.diff index 123fa5cb9132f..d83c8d585ea61 100644 --- a/tests/mir-opt/inline/inline_cycle.two.Inline.panic-abort.diff +++ b/tests/mir-opt/inline/inline_cycle.two.Inline.panic-abort.diff @@ -2,19 +2,19 @@ + // MIR for `two` after Inline fn two() -> () { - let mut _0: (); // return place in scope 0 at $DIR/inline_cycle.rs:+0:10: +0:10 - let _1: (); // in scope 0 at $DIR/inline_cycle.rs:+1:5: +1:12 -+ let mut _2: fn() {f}; // in scope 0 at $DIR/inline_cycle.rs:+1:5: +1:12 -+ let mut _4: (); // in scope 0 at $DIR/inline_cycle.rs:55:5: 55:8 -+ scope 1 (inlined call::) { // at $DIR/inline_cycle.rs:50:5: 50:12 -+ debug f => _2; // in scope 1 at $DIR/inline_cycle.rs:54:22: 54:23 -+ let _3: (); // in scope 1 at $DIR/inline_cycle.rs:55:5: 55:8 -+ scope 2 (inlined >::call_once - shim(fn() {f})) { // at $DIR/inline_cycle.rs:55:5: 55:8 -+ scope 3 (inlined f) { // at $SRC_DIR/core/src/ops/function.rs:LL:COL -+ scope 4 (inlined call::) { // at $DIR/inline_cycle.rs:60:5: 60:12 -+ debug f => f; // in scope 4 at $DIR/inline_cycle.rs:54:22: 54:23 -+ let _5: (); // in scope 4 at $DIR/inline_cycle.rs:55:5: 55:8 -+ scope 5 (inlined >::call_once - shim(fn() {f})) { // at $DIR/inline_cycle.rs:55:5: 55:8 + let mut _0: (); + let _1: (); ++ let mut _2: fn() {f}; ++ let mut _4: (); ++ scope 1 (inlined call::) { ++ debug f => _2; ++ let _3: (); ++ scope 2 (inlined >::call_once - shim(fn() {f})) { ++ scope 3 (inlined f) { ++ scope 4 (inlined call::) { ++ debug f => f; ++ let _5: (); ++ scope 5 (inlined >::call_once - shim(fn() {f})) { + } + } + } @@ -22,34 +22,25 @@ + } bb0: { - StorageLive(_1); // scope 0 at $DIR/inline_cycle.rs:+1:5: +1:12 -- _1 = call::(f) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/inline_cycle.rs:+1:5: +1:12 -+ StorageLive(_2); // scope 0 at $DIR/inline_cycle.rs:+1:5: +1:12 -+ _2 = f; // scope 0 at $DIR/inline_cycle.rs:+1:5: +1:12 - // mir::Constant -- // + span: $DIR/inline_cycle.rs:50:5: 50:9 -- // + literal: Const { ty: fn(fn() {f}) {call::}, val: Value() } -- // mir::Constant - // + span: $DIR/inline_cycle.rs:50:10: 50:11 - // + literal: Const { ty: fn() {f}, val: Value() } -+ StorageLive(_3); // scope 0 at $DIR/inline_cycle.rs:+1:5: +1:12 -+ StorageLive(_4); // scope 1 at $DIR/inline_cycle.rs:55:5: 55:8 -+ _4 = const (); // scope 1 at $DIR/inline_cycle.rs:55:5: 55:8 -+ StorageLive(_5); // scope 2 at $SRC_DIR/core/src/ops/function.rs:LL:COL -+ _5 = f() -> [return: bb1, unwind unreachable]; // scope 5 at $SRC_DIR/core/src/ops/function.rs:LL:COL -+ // mir::Constant -+ // + span: no-location -+ // + literal: Const { ty: fn() {f}, val: Value() } + StorageLive(_1); +- _1 = call::(f) -> [return: bb1, unwind unreachable]; ++ StorageLive(_2); ++ _2 = f; ++ StorageLive(_3); ++ StorageLive(_4); ++ _4 = const (); ++ StorageLive(_5); ++ _5 = f() -> [return: bb1, unwind unreachable]; } bb1: { -+ StorageDead(_5); // scope 2 at $SRC_DIR/core/src/ops/function.rs:LL:COL -+ StorageDead(_4); // scope 1 at $DIR/inline_cycle.rs:55:5: 55:8 -+ StorageDead(_3); // scope 0 at $DIR/inline_cycle.rs:+1:5: +1:12 -+ StorageDead(_2); // scope 0 at $DIR/inline_cycle.rs:+1:5: +1:12 - StorageDead(_1); // scope 0 at $DIR/inline_cycle.rs:+1:12: +1:13 - _0 = const (); // scope 0 at $DIR/inline_cycle.rs:+0:10: +2:2 - return; // scope 0 at $DIR/inline_cycle.rs:+2:2: +2:2 ++ StorageDead(_5); ++ StorageDead(_4); ++ StorageDead(_3); ++ StorageDead(_2); + StorageDead(_1); + _0 = const (); + return; } } diff --git a/tests/mir-opt/inline/inline_cycle.two.Inline.panic-unwind.diff b/tests/mir-opt/inline/inline_cycle.two.Inline.panic-unwind.diff index 48f0bd1030183..d3bd412d95328 100644 --- a/tests/mir-opt/inline/inline_cycle.two.Inline.panic-unwind.diff +++ b/tests/mir-opt/inline/inline_cycle.two.Inline.panic-unwind.diff @@ -2,19 +2,19 @@ + // MIR for `two` after Inline fn two() -> () { - let mut _0: (); // return place in scope 0 at $DIR/inline_cycle.rs:+0:10: +0:10 - let _1: (); // in scope 0 at $DIR/inline_cycle.rs:+1:5: +1:12 -+ let mut _2: fn() {f}; // in scope 0 at $DIR/inline_cycle.rs:+1:5: +1:12 -+ let mut _4: (); // in scope 0 at $DIR/inline_cycle.rs:55:5: 55:8 -+ scope 1 (inlined call::) { // at $DIR/inline_cycle.rs:50:5: 50:12 -+ debug f => _2; // in scope 1 at $DIR/inline_cycle.rs:54:22: 54:23 -+ let _3: (); // in scope 1 at $DIR/inline_cycle.rs:55:5: 55:8 -+ scope 2 (inlined >::call_once - shim(fn() {f})) { // at $DIR/inline_cycle.rs:55:5: 55:8 -+ scope 3 (inlined f) { // at $SRC_DIR/core/src/ops/function.rs:LL:COL -+ scope 4 (inlined call::) { // at $DIR/inline_cycle.rs:60:5: 60:12 -+ debug f => f; // in scope 4 at $DIR/inline_cycle.rs:54:22: 54:23 -+ let _5: (); // in scope 4 at $DIR/inline_cycle.rs:55:5: 55:8 -+ scope 5 (inlined >::call_once - shim(fn() {f})) { // at $DIR/inline_cycle.rs:55:5: 55:8 + let mut _0: (); + let _1: (); ++ let mut _2: fn() {f}; ++ let mut _4: (); ++ scope 1 (inlined call::) { ++ debug f => _2; ++ let _3: (); ++ scope 2 (inlined >::call_once - shim(fn() {f})) { ++ scope 3 (inlined f) { ++ scope 4 (inlined call::) { ++ debug f => f; ++ let _5: (); ++ scope 5 (inlined >::call_once - shim(fn() {f})) { + } + } + } @@ -22,34 +22,25 @@ + } bb0: { - StorageLive(_1); // scope 0 at $DIR/inline_cycle.rs:+1:5: +1:12 -- _1 = call::(f) -> bb1; // scope 0 at $DIR/inline_cycle.rs:+1:5: +1:12 -+ StorageLive(_2); // scope 0 at $DIR/inline_cycle.rs:+1:5: +1:12 -+ _2 = f; // scope 0 at $DIR/inline_cycle.rs:+1:5: +1:12 - // mir::Constant -- // + span: $DIR/inline_cycle.rs:50:5: 50:9 -- // + literal: Const { ty: fn(fn() {f}) {call::}, val: Value() } -- // mir::Constant - // + span: $DIR/inline_cycle.rs:50:10: 50:11 - // + literal: Const { ty: fn() {f}, val: Value() } -+ StorageLive(_3); // scope 0 at $DIR/inline_cycle.rs:+1:5: +1:12 -+ StorageLive(_4); // scope 1 at $DIR/inline_cycle.rs:55:5: 55:8 -+ _4 = const (); // scope 1 at $DIR/inline_cycle.rs:55:5: 55:8 -+ StorageLive(_5); // scope 2 at $SRC_DIR/core/src/ops/function.rs:LL:COL -+ _5 = f() -> bb1; // scope 5 at $SRC_DIR/core/src/ops/function.rs:LL:COL -+ // mir::Constant -+ // + span: no-location -+ // + literal: Const { ty: fn() {f}, val: Value() } + StorageLive(_1); +- _1 = call::(f) -> bb1; ++ StorageLive(_2); ++ _2 = f; ++ StorageLive(_3); ++ StorageLive(_4); ++ _4 = const (); ++ StorageLive(_5); ++ _5 = f() -> bb1; } bb1: { -+ StorageDead(_5); // scope 2 at $SRC_DIR/core/src/ops/function.rs:LL:COL -+ StorageDead(_4); // scope 1 at $DIR/inline_cycle.rs:55:5: 55:8 -+ StorageDead(_3); // scope 0 at $DIR/inline_cycle.rs:+1:5: +1:12 -+ StorageDead(_2); // scope 0 at $DIR/inline_cycle.rs:+1:5: +1:12 - StorageDead(_1); // scope 0 at $DIR/inline_cycle.rs:+1:12: +1:13 - _0 = const (); // scope 0 at $DIR/inline_cycle.rs:+0:10: +2:2 - return; // scope 0 at $DIR/inline_cycle.rs:+2:2: +2:2 ++ StorageDead(_5); ++ StorageDead(_4); ++ StorageDead(_3); ++ StorageDead(_2); + StorageDead(_1); + _0 = const (); + return; } } diff --git a/tests/mir-opt/inline/inline_cycle_generic.main.Inline.panic-abort.diff b/tests/mir-opt/inline/inline_cycle_generic.main.Inline.panic-abort.diff index 25a97cf021018..d437dbf5763a2 100644 --- a/tests/mir-opt/inline/inline_cycle_generic.main.Inline.panic-abort.diff +++ b/tests/mir-opt/inline/inline_cycle_generic.main.Inline.panic-abort.diff @@ -2,30 +2,25 @@ + // MIR for `main` after Inline fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/inline_cycle_generic.rs:+0:11: +0:11 - let _1: (); // in scope 0 at $DIR/inline_cycle_generic.rs:+1:5: +1:24 -+ scope 1 (inlined ::call) { // at $DIR/inline_cycle_generic.rs:10:5: 10:24 -+ scope 2 (inlined as Call>::call) { // at $DIR/inline_cycle_generic.rs:39:9: 39:31 -+ scope 3 (inlined ::call) { // at $DIR/inline_cycle_generic.rs:32:9: 32:28 + let mut _0: (); + let _1: (); ++ scope 1 (inlined ::call) { ++ scope 2 (inlined as Call>::call) { ++ scope 3 (inlined ::call) { + } + } + } bb0: { - StorageLive(_1); // scope 0 at $DIR/inline_cycle_generic.rs:+1:5: +1:24 -- _1 = ::call() -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/inline_cycle_generic.rs:+1:5: +1:24 -+ _1 = as Call>::call() -> [return: bb1, unwind unreachable]; // scope 3 at $DIR/inline_cycle_generic.rs:24:9: 24:31 - // mir::Constant -- // + span: $DIR/inline_cycle_generic.rs:10:5: 10:22 -- // + literal: Const { ty: fn() {::call}, val: Value() } -+ // + span: $DIR/inline_cycle_generic.rs:24:9: 24:29 -+ // + literal: Const { ty: fn() { as Call>::call}, val: Value() } + StorageLive(_1); +- _1 = ::call() -> [return: bb1, unwind unreachable]; ++ _1 = as Call>::call() -> [return: bb1, unwind unreachable]; } bb1: { - StorageDead(_1); // scope 0 at $DIR/inline_cycle_generic.rs:+1:24: +1:25 - _0 = const (); // scope 0 at $DIR/inline_cycle_generic.rs:+0:11: +2:2 - return; // scope 0 at $DIR/inline_cycle_generic.rs:+2:2: +2:2 + StorageDead(_1); + _0 = const (); + return; } } diff --git a/tests/mir-opt/inline/inline_cycle_generic.main.Inline.panic-unwind.diff b/tests/mir-opt/inline/inline_cycle_generic.main.Inline.panic-unwind.diff index 8696e624b2237..2a4002f0499c3 100644 --- a/tests/mir-opt/inline/inline_cycle_generic.main.Inline.panic-unwind.diff +++ b/tests/mir-opt/inline/inline_cycle_generic.main.Inline.panic-unwind.diff @@ -2,30 +2,25 @@ + // MIR for `main` after Inline fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/inline_cycle_generic.rs:+0:11: +0:11 - let _1: (); // in scope 0 at $DIR/inline_cycle_generic.rs:+1:5: +1:24 -+ scope 1 (inlined ::call) { // at $DIR/inline_cycle_generic.rs:10:5: 10:24 -+ scope 2 (inlined as Call>::call) { // at $DIR/inline_cycle_generic.rs:39:9: 39:31 -+ scope 3 (inlined ::call) { // at $DIR/inline_cycle_generic.rs:32:9: 32:28 + let mut _0: (); + let _1: (); ++ scope 1 (inlined ::call) { ++ scope 2 (inlined as Call>::call) { ++ scope 3 (inlined ::call) { + } + } + } bb0: { - StorageLive(_1); // scope 0 at $DIR/inline_cycle_generic.rs:+1:5: +1:24 -- _1 = ::call() -> bb1; // scope 0 at $DIR/inline_cycle_generic.rs:+1:5: +1:24 -+ _1 = as Call>::call() -> bb1; // scope 3 at $DIR/inline_cycle_generic.rs:24:9: 24:31 - // mir::Constant -- // + span: $DIR/inline_cycle_generic.rs:10:5: 10:22 -- // + literal: Const { ty: fn() {::call}, val: Value() } -+ // + span: $DIR/inline_cycle_generic.rs:24:9: 24:29 -+ // + literal: Const { ty: fn() { as Call>::call}, val: Value() } + StorageLive(_1); +- _1 = ::call() -> bb1; ++ _1 = as Call>::call() -> bb1; } bb1: { - StorageDead(_1); // scope 0 at $DIR/inline_cycle_generic.rs:+1:24: +1:25 - _0 = const (); // scope 0 at $DIR/inline_cycle_generic.rs:+0:11: +2:2 - return; // scope 0 at $DIR/inline_cycle_generic.rs:+2:2: +2:2 + StorageDead(_1); + _0 = const (); + return; } } diff --git a/tests/mir-opt/inline/inline_diverging.f.Inline.panic-abort.diff b/tests/mir-opt/inline/inline_diverging.f.Inline.panic-abort.diff index a818e7355baa7..3de72d03ced76 100644 --- a/tests/mir-opt/inline/inline_diverging.f.Inline.panic-abort.diff +++ b/tests/mir-opt/inline/inline_diverging.f.Inline.panic-abort.diff @@ -2,23 +2,20 @@ + // MIR for `f` after Inline fn f() -> () { - let mut _0: (); // return place in scope 0 at $DIR/inline_diverging.rs:+0:12: +0:12 - let mut _1: !; // in scope 0 at $DIR/inline_diverging.rs:+0:12: +2:2 - let _2: !; // in scope 0 at $DIR/inline_diverging.rs:+1:5: +1:12 -+ scope 1 (inlined sleep) { // at $DIR/inline_diverging.rs:8:5: 8:12 + let mut _0: (); + let mut _1: !; + let _2: !; ++ scope 1 (inlined sleep) { + } bb0: { - StorageLive(_2); // scope 0 at $DIR/inline_diverging.rs:+1:5: +1:12 -- _2 = sleep() -> unwind unreachable; // scope 0 at $DIR/inline_diverging.rs:+1:5: +1:12 -- // mir::Constant -- // + span: $DIR/inline_diverging.rs:8:5: 8:10 -- // + literal: Const { ty: fn() -> ! {sleep}, val: Value() } -+ goto -> bb1; // scope 0 at $DIR/inline_diverging.rs:+1:5: +1:12 + StorageLive(_2); +- _2 = sleep() -> unwind unreachable; ++ goto -> bb1; + } + + bb1: { -+ goto -> bb1; // scope 1 at $DIR/inline_diverging.rs:39:5: 39:12 ++ goto -> bb1; } } diff --git a/tests/mir-opt/inline/inline_diverging.f.Inline.panic-unwind.diff b/tests/mir-opt/inline/inline_diverging.f.Inline.panic-unwind.diff index b49191f495b94..76bb3356f50f5 100644 --- a/tests/mir-opt/inline/inline_diverging.f.Inline.panic-unwind.diff +++ b/tests/mir-opt/inline/inline_diverging.f.Inline.panic-unwind.diff @@ -2,23 +2,20 @@ + // MIR for `f` after Inline fn f() -> () { - let mut _0: (); // return place in scope 0 at $DIR/inline_diverging.rs:+0:12: +0:12 - let mut _1: !; // in scope 0 at $DIR/inline_diverging.rs:+0:12: +2:2 - let _2: !; // in scope 0 at $DIR/inline_diverging.rs:+1:5: +1:12 -+ scope 1 (inlined sleep) { // at $DIR/inline_diverging.rs:8:5: 8:12 + let mut _0: (); + let mut _1: !; + let _2: !; ++ scope 1 (inlined sleep) { + } bb0: { - StorageLive(_2); // scope 0 at $DIR/inline_diverging.rs:+1:5: +1:12 -- _2 = sleep(); // scope 0 at $DIR/inline_diverging.rs:+1:5: +1:12 -- // mir::Constant -- // + span: $DIR/inline_diverging.rs:8:5: 8:10 -- // + literal: Const { ty: fn() -> ! {sleep}, val: Value() } -+ goto -> bb1; // scope 0 at $DIR/inline_diverging.rs:+1:5: +1:12 + StorageLive(_2); +- _2 = sleep(); ++ goto -> bb1; + } + + bb1: { -+ goto -> bb1; // scope 1 at $DIR/inline_diverging.rs:39:5: 39:12 ++ goto -> bb1; } } diff --git a/tests/mir-opt/inline/inline_diverging.g.Inline.panic-abort.diff b/tests/mir-opt/inline/inline_diverging.g.Inline.panic-abort.diff index 77a156a513e60..9db0d385da7fd 100644 --- a/tests/mir-opt/inline/inline_diverging.g.Inline.panic-abort.diff +++ b/tests/mir-opt/inline/inline_diverging.g.Inline.panic-abort.diff @@ -2,48 +2,40 @@ + // MIR for `g` after Inline fn g(_1: i32) -> u32 { - debug i => _1; // in scope 0 at $DIR/inline_diverging.rs:+0:10: +0:11 - let mut _0: u32; // return place in scope 0 at $DIR/inline_diverging.rs:+0:21: +0:24 - let mut _2: bool; // in scope 0 at $DIR/inline_diverging.rs:+1:8: +1:13 - let mut _3: i32; // in scope 0 at $DIR/inline_diverging.rs:+1:8: +1:9 - let mut _4: i32; // in scope 0 at $DIR/inline_diverging.rs:+2:9: +2:10 - let mut _5: !; // in scope 0 at $DIR/inline_diverging.rs:+3:12: +5:6 - let _6: !; // in scope 0 at $DIR/inline_diverging.rs:+4:9: +4:16 -+ scope 1 (inlined panic) { // at $DIR/inline_diverging.rs:16:9: 16:16 -+ let mut _7: !; // in scope 1 at $SRC_DIR/std/src/panic.rs:LL:COL + debug i => _1; + let mut _0: u32; + let mut _2: bool; + let mut _3: i32; + let mut _4: i32; + let mut _5: !; + let _6: !; ++ scope 1 (inlined panic) { ++ let mut _7: !; + } bb0: { - StorageLive(_2); // scope 0 at $DIR/inline_diverging.rs:+1:8: +1:13 - StorageLive(_3); // scope 0 at $DIR/inline_diverging.rs:+1:8: +1:9 - _3 = _1; // scope 0 at $DIR/inline_diverging.rs:+1:8: +1:9 - _2 = Gt(move _3, const 0_i32); // scope 0 at $DIR/inline_diverging.rs:+1:8: +1:13 - StorageDead(_3); // scope 0 at $DIR/inline_diverging.rs:+1:12: +1:13 - switchInt(move _2) -> [0: bb2, otherwise: bb1]; // scope 0 at $DIR/inline_diverging.rs:+1:8: +1:13 + StorageLive(_2); + StorageLive(_3); + _3 = _1; + _2 = Gt(move _3, const 0_i32); + StorageDead(_3); + switchInt(move _2) -> [0: bb2, otherwise: bb1]; } bb1: { - StorageLive(_4); // scope 0 at $DIR/inline_diverging.rs:+2:9: +2:10 - _4 = _1; // scope 0 at $DIR/inline_diverging.rs:+2:9: +2:10 - _0 = move _4 as u32 (IntToInt); // scope 0 at $DIR/inline_diverging.rs:+2:9: +2:17 - StorageDead(_4); // scope 0 at $DIR/inline_diverging.rs:+2:16: +2:17 - StorageDead(_2); // scope 0 at $DIR/inline_diverging.rs:+5:5: +5:6 - return; // scope 0 at $DIR/inline_diverging.rs:+6:2: +6:2 + StorageLive(_4); + _4 = _1; + _0 = move _4 as u32 (IntToInt); + StorageDead(_4); + StorageDead(_2); + return; } bb2: { - StorageLive(_6); // scope 0 at $DIR/inline_diverging.rs:+4:9: +4:16 -- _6 = panic() -> unwind unreachable; // scope 0 at $DIR/inline_diverging.rs:+4:9: +4:16 -+ StorageLive(_7); // scope 0 at $DIR/inline_diverging.rs:+4:9: +4:16 -+ _7 = begin_panic::<&str>(const "explicit panic") -> unwind unreachable; // scope 1 at $SRC_DIR/std/src/panic.rs:LL:COL - // mir::Constant -- // + span: $DIR/inline_diverging.rs:16:9: 16:14 -- // + literal: Const { ty: fn() -> ! {panic}, val: Value() } -+ // + span: $SRC_DIR/std/src/panic.rs:LL:COL -+ // + literal: Const { ty: fn(&str) -> ! {begin_panic::<&str>}, val: Value() } -+ // mir::Constant -+ // + span: $SRC_DIR/std/src/panic.rs:LL:COL -+ // + literal: Const { ty: &str, val: Value(Slice(..)) } + StorageLive(_6); +- _6 = panic() -> unwind unreachable; ++ StorageLive(_7); ++ _7 = begin_panic::<&str>(const "explicit panic") -> unwind unreachable; } } diff --git a/tests/mir-opt/inline/inline_diverging.g.Inline.panic-unwind.diff b/tests/mir-opt/inline/inline_diverging.g.Inline.panic-unwind.diff index 4f22ad43700ac..d65efa43a7b1d 100644 --- a/tests/mir-opt/inline/inline_diverging.g.Inline.panic-unwind.diff +++ b/tests/mir-opt/inline/inline_diverging.g.Inline.panic-unwind.diff @@ -2,48 +2,40 @@ + // MIR for `g` after Inline fn g(_1: i32) -> u32 { - debug i => _1; // in scope 0 at $DIR/inline_diverging.rs:+0:10: +0:11 - let mut _0: u32; // return place in scope 0 at $DIR/inline_diverging.rs:+0:21: +0:24 - let mut _2: bool; // in scope 0 at $DIR/inline_diverging.rs:+1:8: +1:13 - let mut _3: i32; // in scope 0 at $DIR/inline_diverging.rs:+1:8: +1:9 - let mut _4: i32; // in scope 0 at $DIR/inline_diverging.rs:+2:9: +2:10 - let mut _5: !; // in scope 0 at $DIR/inline_diverging.rs:+3:12: +5:6 - let _6: !; // in scope 0 at $DIR/inline_diverging.rs:+4:9: +4:16 -+ scope 1 (inlined panic) { // at $DIR/inline_diverging.rs:16:9: 16:16 -+ let mut _7: !; // in scope 1 at $SRC_DIR/std/src/panic.rs:LL:COL + debug i => _1; + let mut _0: u32; + let mut _2: bool; + let mut _3: i32; + let mut _4: i32; + let mut _5: !; + let _6: !; ++ scope 1 (inlined panic) { ++ let mut _7: !; + } bb0: { - StorageLive(_2); // scope 0 at $DIR/inline_diverging.rs:+1:8: +1:13 - StorageLive(_3); // scope 0 at $DIR/inline_diverging.rs:+1:8: +1:9 - _3 = _1; // scope 0 at $DIR/inline_diverging.rs:+1:8: +1:9 - _2 = Gt(move _3, const 0_i32); // scope 0 at $DIR/inline_diverging.rs:+1:8: +1:13 - StorageDead(_3); // scope 0 at $DIR/inline_diverging.rs:+1:12: +1:13 - switchInt(move _2) -> [0: bb2, otherwise: bb1]; // scope 0 at $DIR/inline_diverging.rs:+1:8: +1:13 + StorageLive(_2); + StorageLive(_3); + _3 = _1; + _2 = Gt(move _3, const 0_i32); + StorageDead(_3); + switchInt(move _2) -> [0: bb2, otherwise: bb1]; } bb1: { - StorageLive(_4); // scope 0 at $DIR/inline_diverging.rs:+2:9: +2:10 - _4 = _1; // scope 0 at $DIR/inline_diverging.rs:+2:9: +2:10 - _0 = move _4 as u32 (IntToInt); // scope 0 at $DIR/inline_diverging.rs:+2:9: +2:17 - StorageDead(_4); // scope 0 at $DIR/inline_diverging.rs:+2:16: +2:17 - StorageDead(_2); // scope 0 at $DIR/inline_diverging.rs:+5:5: +5:6 - return; // scope 0 at $DIR/inline_diverging.rs:+6:2: +6:2 + StorageLive(_4); + _4 = _1; + _0 = move _4 as u32 (IntToInt); + StorageDead(_4); + StorageDead(_2); + return; } bb2: { - StorageLive(_6); // scope 0 at $DIR/inline_diverging.rs:+4:9: +4:16 -- _6 = panic(); // scope 0 at $DIR/inline_diverging.rs:+4:9: +4:16 -+ StorageLive(_7); // scope 0 at $DIR/inline_diverging.rs:+4:9: +4:16 -+ _7 = begin_panic::<&str>(const "explicit panic"); // scope 1 at $SRC_DIR/std/src/panic.rs:LL:COL - // mir::Constant -- // + span: $DIR/inline_diverging.rs:16:9: 16:14 -- // + literal: Const { ty: fn() -> ! {panic}, val: Value() } -+ // + span: $SRC_DIR/std/src/panic.rs:LL:COL -+ // + literal: Const { ty: fn(&str) -> ! {begin_panic::<&str>}, val: Value() } -+ // mir::Constant -+ // + span: $SRC_DIR/std/src/panic.rs:LL:COL -+ // + literal: Const { ty: &str, val: Value(Slice(..)) } + StorageLive(_6); +- _6 = panic(); ++ StorageLive(_7); ++ _7 = begin_panic::<&str>(const "explicit panic"); } } diff --git a/tests/mir-opt/inline/inline_diverging.h.Inline.panic-abort.diff b/tests/mir-opt/inline/inline_diverging.h.Inline.panic-abort.diff index b864cbdfad0dc..0dcd5fae88d3b 100644 --- a/tests/mir-opt/inline/inline_diverging.h.Inline.panic-abort.diff +++ b/tests/mir-opt/inline/inline_diverging.h.Inline.panic-abort.diff @@ -2,50 +2,44 @@ + // MIR for `h` after Inline fn h() -> () { - let mut _0: (); // return place in scope 0 at $DIR/inline_diverging.rs:+0:12: +0:12 - let _1: (!, !); // in scope 0 at $DIR/inline_diverging.rs:+1:5: +1:22 -+ let mut _2: fn() -> ! {sleep}; // in scope 0 at $DIR/inline_diverging.rs:+1:5: +1:22 -+ let mut _7: (); // in scope 0 at $DIR/inline_diverging.rs:27:13: 27:16 -+ scope 1 (inlined call_twice:: ! {sleep}>) { // at $DIR/inline_diverging.rs:22:5: 22:22 -+ debug f => _2; // in scope 1 at $DIR/inline_diverging.rs:26:36: 26:37 -+ let mut _3: &fn() -> ! {sleep}; // in scope 1 at $DIR/inline_diverging.rs:27:13: 27:14 -+ let mut _4: !; // in scope 1 at $DIR/inline_diverging.rs:29:6: 29:7 -+ let mut _5: &fn() -> ! {sleep}; // in scope 1 at $DIR/inline_diverging.rs:28:13: 28:14 -+ let mut _6: !; // in scope 1 at $DIR/inline_diverging.rs:29:9: 29:10 + let mut _0: (); + let _1: (!, !); ++ let mut _2: fn() -> ! {sleep}; ++ let mut _7: (); ++ scope 1 (inlined call_twice:: ! {sleep}>) { ++ debug f => _2; ++ let mut _3: &fn() -> ! {sleep}; ++ let mut _4: !; ++ let mut _5: &fn() -> ! {sleep}; ++ let mut _6: !; + scope 2 { -+ debug a => _4; // in scope 2 at $DIR/inline_diverging.rs:27:9: 27:10 ++ debug a => _4; + scope 3 { -+ debug b => _6; // in scope 3 at $DIR/inline_diverging.rs:28:9: 28:10 ++ debug b => _6; + } + } -+ scope 4 (inlined ! {sleep} as Fn<()>>::call - shim(fn() -> ! {sleep})) { // at $DIR/inline_diverging.rs:27:13: 27:16 -+ scope 5 (inlined sleep) { // at $SRC_DIR/core/src/ops/function.rs:LL:COL ++ scope 4 (inlined ! {sleep} as Fn<()>>::call - shim(fn() -> ! {sleep})) { ++ scope 5 (inlined sleep) { + } + } + } bb0: { - StorageLive(_1); // scope 0 at $DIR/inline_diverging.rs:+1:5: +1:22 -- _1 = call_twice:: ! {sleep}>(sleep) -> unwind unreachable; // scope 0 at $DIR/inline_diverging.rs:+1:5: +1:22 -+ StorageLive(_2); // scope 0 at $DIR/inline_diverging.rs:+1:5: +1:22 -+ _2 = sleep; // scope 0 at $DIR/inline_diverging.rs:+1:5: +1:22 - // mir::Constant -- // + span: $DIR/inline_diverging.rs:22:5: 22:15 -- // + literal: Const { ty: fn(fn() -> ! {sleep}) -> (!, !) {call_twice:: ! {sleep}>}, val: Value() } -- // mir::Constant - // + span: $DIR/inline_diverging.rs:22:16: 22:21 - // + literal: Const { ty: fn() -> ! {sleep}, val: Value() } -+ StorageLive(_4); // scope 0 at $DIR/inline_diverging.rs:+1:5: +1:22 -+ StorageLive(_6); // scope 0 at $DIR/inline_diverging.rs:+1:5: +1:22 -+ StorageLive(_3); // scope 1 at $DIR/inline_diverging.rs:27:13: 27:14 -+ _3 = &_2; // scope 1 at $DIR/inline_diverging.rs:27:13: 27:14 -+ StorageLive(_7); // scope 1 at $DIR/inline_diverging.rs:27:13: 27:16 -+ _7 = const (); // scope 1 at $DIR/inline_diverging.rs:27:13: 27:16 -+ goto -> bb1; // scope 5 at $DIR/inline_diverging.rs:39:5: 39:12 + StorageLive(_1); +- _1 = call_twice:: ! {sleep}>(sleep) -> unwind unreachable; ++ StorageLive(_2); ++ _2 = sleep; ++ StorageLive(_4); ++ StorageLive(_6); ++ StorageLive(_3); ++ _3 = &_2; ++ StorageLive(_7); ++ _7 = const (); ++ goto -> bb1; + } + + bb1: { -+ goto -> bb1; // scope 5 at $DIR/inline_diverging.rs:39:5: 39:12 ++ goto -> bb1; } } diff --git a/tests/mir-opt/inline/inline_diverging.h.Inline.panic-unwind.diff b/tests/mir-opt/inline/inline_diverging.h.Inline.panic-unwind.diff index 78cd47c5f4bf4..f7e0e1c55f8bf 100644 --- a/tests/mir-opt/inline/inline_diverging.h.Inline.panic-unwind.diff +++ b/tests/mir-opt/inline/inline_diverging.h.Inline.panic-unwind.diff @@ -2,51 +2,45 @@ + // MIR for `h` after Inline fn h() -> () { - let mut _0: (); // return place in scope 0 at $DIR/inline_diverging.rs:+0:12: +0:12 - let _1: (!, !); // in scope 0 at $DIR/inline_diverging.rs:+1:5: +1:22 -+ let mut _2: fn() -> ! {sleep}; // in scope 0 at $DIR/inline_diverging.rs:+1:5: +1:22 -+ let mut _8: (); // in scope 0 at $DIR/inline_diverging.rs:27:13: 27:16 -+ scope 1 (inlined call_twice:: ! {sleep}>) { // at $DIR/inline_diverging.rs:22:5: 22:22 -+ debug f => _2; // in scope 1 at $DIR/inline_diverging.rs:26:36: 26:37 -+ let mut _3: &fn() -> ! {sleep}; // in scope 1 at $DIR/inline_diverging.rs:27:13: 27:14 -+ let _4: !; // in scope 1 at $DIR/inline_diverging.rs:27:9: 27:10 -+ let mut _5: &fn() -> ! {sleep}; // in scope 1 at $DIR/inline_diverging.rs:28:13: 28:14 -+ let mut _6: !; // in scope 1 at $DIR/inline_diverging.rs:29:9: 29:10 -+ let mut _7: !; // in scope 1 at $DIR/inline_diverging.rs:29:6: 29:7 + let mut _0: (); + let _1: (!, !); ++ let mut _2: fn() -> ! {sleep}; ++ let mut _8: (); ++ scope 1 (inlined call_twice:: ! {sleep}>) { ++ debug f => _2; ++ let mut _3: &fn() -> ! {sleep}; ++ let _4: !; ++ let mut _5: &fn() -> ! {sleep}; ++ let mut _6: !; ++ let mut _7: !; + scope 2 { -+ debug a => _4; // in scope 2 at $DIR/inline_diverging.rs:27:9: 27:10 ++ debug a => _4; + scope 3 { -+ debug b => _6; // in scope 3 at $DIR/inline_diverging.rs:28:9: 28:10 ++ debug b => _6; + } + } -+ scope 4 (inlined ! {sleep} as Fn<()>>::call - shim(fn() -> ! {sleep})) { // at $DIR/inline_diverging.rs:27:13: 27:16 -+ scope 5 (inlined sleep) { // at $SRC_DIR/core/src/ops/function.rs:LL:COL ++ scope 4 (inlined ! {sleep} as Fn<()>>::call - shim(fn() -> ! {sleep})) { ++ scope 5 (inlined sleep) { + } + } + } bb0: { - StorageLive(_1); // scope 0 at $DIR/inline_diverging.rs:+1:5: +1:22 -- _1 = call_twice:: ! {sleep}>(sleep); // scope 0 at $DIR/inline_diverging.rs:+1:5: +1:22 -+ StorageLive(_2); // scope 0 at $DIR/inline_diverging.rs:+1:5: +1:22 -+ _2 = sleep; // scope 0 at $DIR/inline_diverging.rs:+1:5: +1:22 - // mir::Constant -- // + span: $DIR/inline_diverging.rs:22:5: 22:15 -- // + literal: Const { ty: fn(fn() -> ! {sleep}) -> (!, !) {call_twice:: ! {sleep}>}, val: Value() } -- // mir::Constant - // + span: $DIR/inline_diverging.rs:22:16: 22:21 - // + literal: Const { ty: fn() -> ! {sleep}, val: Value() } -+ StorageLive(_6); // scope 0 at $DIR/inline_diverging.rs:+1:5: +1:22 -+ StorageLive(_4); // scope 1 at $DIR/inline_diverging.rs:27:9: 27:10 -+ StorageLive(_3); // scope 1 at $DIR/inline_diverging.rs:27:13: 27:14 -+ _3 = &_2; // scope 1 at $DIR/inline_diverging.rs:27:13: 27:14 -+ StorageLive(_8); // scope 1 at $DIR/inline_diverging.rs:27:13: 27:16 -+ _8 = const (); // scope 1 at $DIR/inline_diverging.rs:27:13: 27:16 -+ goto -> bb1; // scope 5 at $DIR/inline_diverging.rs:39:5: 39:12 + StorageLive(_1); +- _1 = call_twice:: ! {sleep}>(sleep); ++ StorageLive(_2); ++ _2 = sleep; ++ StorageLive(_6); ++ StorageLive(_4); ++ StorageLive(_3); ++ _3 = &_2; ++ StorageLive(_8); ++ _8 = const (); ++ goto -> bb1; + } + + bb1: { -+ goto -> bb1; // scope 5 at $DIR/inline_diverging.rs:39:5: 39:12 ++ goto -> bb1; } } diff --git a/tests/mir-opt/inline/inline_generator.main.Inline.panic-abort.diff b/tests/mir-opt/inline/inline_generator.main.Inline.panic-abort.diff index 21a8bf09254ef..fa48c56d185d2 100644 --- a/tests/mir-opt/inline/inline_generator.main.Inline.panic-abort.diff +++ b/tests/mir-opt/inline/inline_generator.main.Inline.panic-abort.diff @@ -2,126 +2,106 @@ + // MIR for `main` after Inline fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/inline_generator.rs:+0:11: +0:11 - let _1: std::ops::GeneratorState; // in scope 0 at $DIR/inline_generator.rs:+1:9: +1:11 - let mut _2: std::pin::Pin<&mut [generator@$DIR/inline_generator.rs:15:5: 15:8]>; // in scope 0 at $DIR/inline_generator.rs:+1:14: +1:32 - let mut _3: &mut [generator@$DIR/inline_generator.rs:15:5: 15:8]; // in scope 0 at $DIR/inline_generator.rs:+1:23: +1:31 - let mut _4: [generator@$DIR/inline_generator.rs:15:5: 15:8]; // in scope 0 at $DIR/inline_generator.rs:+1:28: +1:31 -+ let mut _5: bool; // in scope 0 at $DIR/inline_generator.rs:+1:33: +1:46 + let mut _0: (); + let _1: std::ops::GeneratorState; + let mut _2: std::pin::Pin<&mut [generator@$DIR/inline_generator.rs:15:5: 15:8]>; + let mut _3: &mut [generator@$DIR/inline_generator.rs:15:5: 15:8]; + let mut _4: [generator@$DIR/inline_generator.rs:15:5: 15:8]; ++ let mut _5: bool; scope 1 { - debug _r => _1; // in scope 1 at $DIR/inline_generator.rs:+1:9: +1:11 + debug _r => _1; } -+ scope 2 (inlined g) { // at $DIR/inline_generator.rs:9:28: 9:31 ++ scope 2 (inlined g) { + } -+ scope 3 (inlined Pin::<&mut [generator@$DIR/inline_generator.rs:15:5: 15:8]>::new) { // at $DIR/inline_generator.rs:9:14: 9:32 -+ debug pointer => _3; // in scope 3 at $SRC_DIR/core/src/pin.rs:LL:COL ++ scope 3 (inlined Pin::<&mut [generator@$DIR/inline_generator.rs:15:5: 15:8]>::new) { ++ debug pointer => _3; + scope 4 { -+ scope 5 (inlined Pin::<&mut [generator@$DIR/inline_generator.rs:15:5: 15:8]>::new_unchecked) { // at $SRC_DIR/core/src/pin.rs:LL:COL -+ debug pointer => _3; // in scope 5 at $SRC_DIR/core/src/pin.rs:LL:COL ++ scope 5 (inlined Pin::<&mut [generator@$DIR/inline_generator.rs:15:5: 15:8]>::new_unchecked) { ++ debug pointer => _3; + } + } + } -+ scope 6 (inlined g::{closure#0}) { // at $DIR/inline_generator.rs:9:33: 9:46 -+ debug a => _5; // in scope 6 at $DIR/inline_generator.rs:15:6: 15:7 -+ let mut _6: &mut [generator@$DIR/inline_generator.rs:15:5: 15:8]; // in scope 6 at $DIR/inline_generator.rs:15:5: 15:41 -+ let mut _7: u32; // in scope 6 at $DIR/inline_generator.rs:15:5: 15:41 -+ let mut _8: i32; // in scope 6 at $DIR/inline_generator.rs:15:17: 15:39 -+ let mut _9: &mut [generator@$DIR/inline_generator.rs:15:5: 15:8]; // in scope 6 at $DIR/inline_generator.rs:15:5: 15:41 -+ let mut _10: &mut [generator@$DIR/inline_generator.rs:15:5: 15:8]; // in scope 6 at $DIR/inline_generator.rs:15:5: 15:41 ++ scope 6 (inlined g::{closure#0}) { ++ debug a => _5; ++ let mut _6: &mut [generator@$DIR/inline_generator.rs:15:5: 15:8]; ++ let mut _7: u32; ++ let mut _8: i32; ++ let mut _9: &mut [generator@$DIR/inline_generator.rs:15:5: 15:8]; ++ let mut _10: &mut [generator@$DIR/inline_generator.rs:15:5: 15:8]; + } bb0: { - StorageLive(_1); // scope 0 at $DIR/inline_generator.rs:+1:9: +1:11 - StorageLive(_2); // scope 0 at $DIR/inline_generator.rs:+1:14: +1:32 - StorageLive(_3); // scope 0 at $DIR/inline_generator.rs:+1:23: +1:31 - StorageLive(_4); // scope 0 at $DIR/inline_generator.rs:+1:28: +1:31 -- _4 = g() -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/inline_generator.rs:+1:28: +1:31 -- // mir::Constant -- // + span: $DIR/inline_generator.rs:9:28: 9:29 -- // + literal: Const { ty: fn() -> impl Generator {g}, val: Value() } + StorageLive(_1); + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); +- _4 = g() -> [return: bb1, unwind unreachable]; - } - - bb1: { -+ _4 = [generator@$DIR/inline_generator.rs:15:5: 15:8 (#0)]; // scope 2 at $DIR/inline_generator.rs:15:5: 15:41 -+ // generator -+ // + def_id: DefId(0:7 ~ inline_generator[e37e]::g::{closure#0}) -+ // + substs: [ -+ // bool, -+ // i32, -+ // bool, -+ // {bool, i32}, -+ // (), -+ // ] -+ // + movability: Movable - _3 = &mut _4; // scope 0 at $DIR/inline_generator.rs:+1:23: +1:31 -- _2 = Pin::<&mut [generator@$DIR/inline_generator.rs:15:5: 15:8]>::new(move _3) -> [return: bb2, unwind unreachable]; // scope 0 at $DIR/inline_generator.rs:+1:14: +1:32 -- // mir::Constant -- // + span: $DIR/inline_generator.rs:9:14: 9:22 -- // + user_ty: UserType(0) -- // + literal: Const { ty: fn(&mut [generator@$DIR/inline_generator.rs:15:5: 15:8]) -> Pin<&mut [generator@$DIR/inline_generator.rs:15:5: 15:8]> {Pin::<&mut [generator@$DIR/inline_generator.rs:15:5: 15:8]>::new}, val: Value() } ++ _4 = [generator@$DIR/inline_generator.rs:15:5: 15:8 (#0)]; + _3 = &mut _4; +- _2 = Pin::<&mut [generator@$DIR/inline_generator.rs:15:5: 15:8]>::new(move _3) -> [return: bb2, unwind unreachable]; - } - - bb2: { -+ _2 = Pin::<&mut [generator@$DIR/inline_generator.rs:15:5: 15:8]> { pointer: move _3 }; // scope 5 at $SRC_DIR/core/src/pin.rs:LL:COL - StorageDead(_3); // scope 0 at $DIR/inline_generator.rs:+1:31: +1:32 -- _1 = <[generator@$DIR/inline_generator.rs:15:5: 15:8] as Generator>::resume(move _2, const false) -> [return: bb3, unwind unreachable]; // scope 0 at $DIR/inline_generator.rs:+1:14: +1:46 -- // mir::Constant -- // + span: $DIR/inline_generator.rs:9:33: 9:39 -- // + literal: Const { ty: for<'a> fn(Pin<&'a mut [generator@$DIR/inline_generator.rs:15:5: 15:8]>, bool) -> GeneratorState<<[generator@$DIR/inline_generator.rs:15:5: 15:8] as Generator>::Yield, <[generator@$DIR/inline_generator.rs:15:5: 15:8] as Generator>::Return> {<[generator@$DIR/inline_generator.rs:15:5: 15:8] as Generator>::resume}, val: Value() } -+ StorageLive(_5); // scope 0 at $DIR/inline_generator.rs:+1:33: +1:46 -+ _5 = const false; // scope 0 at $DIR/inline_generator.rs:+1:33: +1:46 -+ _6 = deref_copy (_2.0: &mut [generator@$DIR/inline_generator.rs:15:5: 15:8]); // scope 6 at $DIR/inline_generator.rs:15:5: 15:41 -+ _7 = discriminant((*_6)); // scope 6 at $DIR/inline_generator.rs:15:5: 15:41 -+ switchInt(move _7) -> [0: bb2, 1: bb6, 3: bb7, otherwise: bb8]; // scope 6 at $DIR/inline_generator.rs:15:5: 15:41 ++ _2 = Pin::<&mut [generator@$DIR/inline_generator.rs:15:5: 15:8]> { pointer: move _3 }; + StorageDead(_3); +- _1 = <[generator@$DIR/inline_generator.rs:15:5: 15:8] as Generator>::resume(move _2, const false) -> [return: bb3, unwind unreachable]; ++ StorageLive(_5); ++ _5 = const false; ++ _6 = deref_copy (_2.0: &mut [generator@$DIR/inline_generator.rs:15:5: 15:8]); ++ _7 = discriminant((*_6)); ++ switchInt(move _7) -> [0: bb2, 1: bb6, 3: bb7, otherwise: bb8]; } - bb3: { + bb1: { -+ StorageDead(_5); // scope 0 at $DIR/inline_generator.rs:+1:33: +1:46 - StorageDead(_2); // scope 0 at $DIR/inline_generator.rs:+1:45: +1:46 - StorageDead(_4); // scope 0 at $DIR/inline_generator.rs:+1:46: +1:47 - _0 = const (); // scope 0 at $DIR/inline_generator.rs:+0:11: +2:2 - StorageDead(_1); // scope 0 at $DIR/inline_generator.rs:+2:1: +2:2 - return; // scope 0 at $DIR/inline_generator.rs:+2:2: +2:2 ++ StorageDead(_5); + StorageDead(_2); + StorageDead(_4); + _0 = const (); + StorageDead(_1); + return; + } + + bb2: { -+ StorageLive(_8); // scope 6 at $DIR/inline_generator.rs:15:17: 15:39 -+ switchInt(_5) -> [0: bb3, otherwise: bb4]; // scope 6 at $DIR/inline_generator.rs:15:20: 15:21 ++ StorageLive(_8); ++ switchInt(_5) -> [0: bb3, otherwise: bb4]; + } + + bb3: { -+ _8 = const 13_i32; // scope 6 at $DIR/inline_generator.rs:15:35: 15:37 -+ goto -> bb5; // scope 6 at $DIR/inline_generator.rs:15:17: 15:39 ++ _8 = const 13_i32; ++ goto -> bb5; + } + + bb4: { -+ _8 = const 7_i32; // scope 6 at $DIR/inline_generator.rs:15:24: 15:25 -+ goto -> bb5; // scope 6 at $DIR/inline_generator.rs:15:17: 15:39 ++ _8 = const 7_i32; ++ goto -> bb5; + } + + bb5: { -+ _1 = GeneratorState::::Yielded(move _8); // scope 6 at $DIR/inline_generator.rs:15:11: 15:39 -+ _9 = deref_copy (_2.0: &mut [generator@$DIR/inline_generator.rs:15:5: 15:8]); // scope 6 at $DIR/inline_generator.rs:15:11: 15:39 -+ discriminant((*_9)) = 3; // scope 6 at $DIR/inline_generator.rs:15:11: 15:39 -+ goto -> bb1; // scope 0 at $DIR/inline_generator.rs:15:11: 15:39 ++ _1 = GeneratorState::::Yielded(move _8); ++ _9 = deref_copy (_2.0: &mut [generator@$DIR/inline_generator.rs:15:5: 15:8]); ++ discriminant((*_9)) = 3; ++ goto -> bb1; + } + + bb6: { -+ assert(const false, "generator resumed after completion") -> [success: bb6, unwind unreachable]; // scope 6 at $DIR/inline_generator.rs:15:5: 15:41 ++ assert(const false, "generator resumed after completion") -> [success: bb6, unwind unreachable]; + } + + bb7: { -+ StorageLive(_8); // scope 6 at $DIR/inline_generator.rs:15:5: 15:41 -+ StorageDead(_8); // scope 6 at $DIR/inline_generator.rs:15:38: 15:39 -+ _1 = GeneratorState::::Complete(_5); // scope 6 at $DIR/inline_generator.rs:15:41: 15:41 -+ _10 = deref_copy (_2.0: &mut [generator@$DIR/inline_generator.rs:15:5: 15:8]); // scope 6 at $DIR/inline_generator.rs:15:41: 15:41 -+ discriminant((*_10)) = 1; // scope 6 at $DIR/inline_generator.rs:15:41: 15:41 -+ goto -> bb1; // scope 0 at $DIR/inline_generator.rs:15:41: 15:41 ++ StorageLive(_8); ++ StorageDead(_8); ++ _1 = GeneratorState::::Complete(_5); ++ _10 = deref_copy (_2.0: &mut [generator@$DIR/inline_generator.rs:15:5: 15:8]); ++ discriminant((*_10)) = 1; ++ goto -> bb1; + } + + bb8: { -+ unreachable; // scope 6 at $DIR/inline_generator.rs:15:5: 15:41 ++ unreachable; } } diff --git a/tests/mir-opt/inline/inline_generator.main.Inline.panic-unwind.diff b/tests/mir-opt/inline/inline_generator.main.Inline.panic-unwind.diff index 0dcae1e4d45f9..63f70ccc3b528 100644 --- a/tests/mir-opt/inline/inline_generator.main.Inline.panic-unwind.diff +++ b/tests/mir-opt/inline/inline_generator.main.Inline.panic-unwind.diff @@ -2,131 +2,111 @@ + // MIR for `main` after Inline fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/inline_generator.rs:+0:11: +0:11 - let _1: std::ops::GeneratorState; // in scope 0 at $DIR/inline_generator.rs:+1:9: +1:11 - let mut _2: std::pin::Pin<&mut [generator@$DIR/inline_generator.rs:15:5: 15:8]>; // in scope 0 at $DIR/inline_generator.rs:+1:14: +1:32 - let mut _3: &mut [generator@$DIR/inline_generator.rs:15:5: 15:8]; // in scope 0 at $DIR/inline_generator.rs:+1:23: +1:31 - let mut _4: [generator@$DIR/inline_generator.rs:15:5: 15:8]; // in scope 0 at $DIR/inline_generator.rs:+1:28: +1:31 -+ let mut _5: bool; // in scope 0 at $DIR/inline_generator.rs:+1:33: +1:46 + let mut _0: (); + let _1: std::ops::GeneratorState; + let mut _2: std::pin::Pin<&mut [generator@$DIR/inline_generator.rs:15:5: 15:8]>; + let mut _3: &mut [generator@$DIR/inline_generator.rs:15:5: 15:8]; + let mut _4: [generator@$DIR/inline_generator.rs:15:5: 15:8]; ++ let mut _5: bool; scope 1 { - debug _r => _1; // in scope 1 at $DIR/inline_generator.rs:+1:9: +1:11 + debug _r => _1; } -+ scope 2 (inlined g) { // at $DIR/inline_generator.rs:9:28: 9:31 ++ scope 2 (inlined g) { + } -+ scope 3 (inlined Pin::<&mut [generator@$DIR/inline_generator.rs:15:5: 15:8]>::new) { // at $DIR/inline_generator.rs:9:14: 9:32 -+ debug pointer => _3; // in scope 3 at $SRC_DIR/core/src/pin.rs:LL:COL ++ scope 3 (inlined Pin::<&mut [generator@$DIR/inline_generator.rs:15:5: 15:8]>::new) { ++ debug pointer => _3; + scope 4 { -+ scope 5 (inlined Pin::<&mut [generator@$DIR/inline_generator.rs:15:5: 15:8]>::new_unchecked) { // at $SRC_DIR/core/src/pin.rs:LL:COL -+ debug pointer => _3; // in scope 5 at $SRC_DIR/core/src/pin.rs:LL:COL ++ scope 5 (inlined Pin::<&mut [generator@$DIR/inline_generator.rs:15:5: 15:8]>::new_unchecked) { ++ debug pointer => _3; + } + } + } -+ scope 6 (inlined g::{closure#0}) { // at $DIR/inline_generator.rs:9:33: 9:46 -+ debug a => _5; // in scope 6 at $DIR/inline_generator.rs:15:6: 15:7 -+ let mut _6: &mut [generator@$DIR/inline_generator.rs:15:5: 15:8]; // in scope 6 at $DIR/inline_generator.rs:15:5: 15:41 -+ let mut _7: u32; // in scope 6 at $DIR/inline_generator.rs:15:5: 15:41 -+ let mut _8: i32; // in scope 6 at $DIR/inline_generator.rs:15:17: 15:39 -+ let mut _9: &mut [generator@$DIR/inline_generator.rs:15:5: 15:8]; // in scope 6 at $DIR/inline_generator.rs:15:5: 15:41 -+ let mut _10: &mut [generator@$DIR/inline_generator.rs:15:5: 15:8]; // in scope 6 at $DIR/inline_generator.rs:15:5: 15:41 ++ scope 6 (inlined g::{closure#0}) { ++ debug a => _5; ++ let mut _6: &mut [generator@$DIR/inline_generator.rs:15:5: 15:8]; ++ let mut _7: u32; ++ let mut _8: i32; ++ let mut _9: &mut [generator@$DIR/inline_generator.rs:15:5: 15:8]; ++ let mut _10: &mut [generator@$DIR/inline_generator.rs:15:5: 15:8]; + } bb0: { - StorageLive(_1); // scope 0 at $DIR/inline_generator.rs:+1:9: +1:11 - StorageLive(_2); // scope 0 at $DIR/inline_generator.rs:+1:14: +1:32 - StorageLive(_3); // scope 0 at $DIR/inline_generator.rs:+1:23: +1:31 - StorageLive(_4); // scope 0 at $DIR/inline_generator.rs:+1:28: +1:31 -- _4 = g() -> bb1; // scope 0 at $DIR/inline_generator.rs:+1:28: +1:31 -- // mir::Constant -- // + span: $DIR/inline_generator.rs:9:28: 9:29 -- // + literal: Const { ty: fn() -> impl Generator {g}, val: Value() } + StorageLive(_1); + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); +- _4 = g() -> bb1; - } - - bb1: { -+ _4 = [generator@$DIR/inline_generator.rs:15:5: 15:8 (#0)]; // scope 2 at $DIR/inline_generator.rs:15:5: 15:41 -+ // generator -+ // + def_id: DefId(0:7 ~ inline_generator[e37e]::g::{closure#0}) -+ // + substs: [ -+ // bool, -+ // i32, -+ // bool, -+ // {bool, i32}, -+ // (), -+ // ] -+ // + movability: Movable - _3 = &mut _4; // scope 0 at $DIR/inline_generator.rs:+1:23: +1:31 -- _2 = Pin::<&mut [generator@$DIR/inline_generator.rs:15:5: 15:8]>::new(move _3) -> [return: bb2, unwind: bb4]; // scope 0 at $DIR/inline_generator.rs:+1:14: +1:32 -- // mir::Constant -- // + span: $DIR/inline_generator.rs:9:14: 9:22 -- // + user_ty: UserType(0) -- // + literal: Const { ty: fn(&mut [generator@$DIR/inline_generator.rs:15:5: 15:8]) -> Pin<&mut [generator@$DIR/inline_generator.rs:15:5: 15:8]> {Pin::<&mut [generator@$DIR/inline_generator.rs:15:5: 15:8]>::new}, val: Value() } ++ _4 = [generator@$DIR/inline_generator.rs:15:5: 15:8 (#0)]; + _3 = &mut _4; +- _2 = Pin::<&mut [generator@$DIR/inline_generator.rs:15:5: 15:8]>::new(move _3) -> [return: bb2, unwind: bb4]; - } - - bb2: { -+ _2 = Pin::<&mut [generator@$DIR/inline_generator.rs:15:5: 15:8]> { pointer: move _3 }; // scope 5 at $SRC_DIR/core/src/pin.rs:LL:COL - StorageDead(_3); // scope 0 at $DIR/inline_generator.rs:+1:31: +1:32 -- _1 = <[generator@$DIR/inline_generator.rs:15:5: 15:8] as Generator>::resume(move _2, const false) -> [return: bb3, unwind: bb4]; // scope 0 at $DIR/inline_generator.rs:+1:14: +1:46 -- // mir::Constant -- // + span: $DIR/inline_generator.rs:9:33: 9:39 -- // + literal: Const { ty: for<'a> fn(Pin<&'a mut [generator@$DIR/inline_generator.rs:15:5: 15:8]>, bool) -> GeneratorState<<[generator@$DIR/inline_generator.rs:15:5: 15:8] as Generator>::Yield, <[generator@$DIR/inline_generator.rs:15:5: 15:8] as Generator>::Return> {<[generator@$DIR/inline_generator.rs:15:5: 15:8] as Generator>::resume}, val: Value() } -+ StorageLive(_5); // scope 0 at $DIR/inline_generator.rs:+1:33: +1:46 -+ _5 = const false; // scope 0 at $DIR/inline_generator.rs:+1:33: +1:46 -+ _6 = deref_copy (_2.0: &mut [generator@$DIR/inline_generator.rs:15:5: 15:8]); // scope 6 at $DIR/inline_generator.rs:15:5: 15:41 -+ _7 = discriminant((*_6)); // scope 6 at $DIR/inline_generator.rs:15:5: 15:41 -+ switchInt(move _7) -> [0: bb3, 1: bb7, 3: bb8, otherwise: bb9]; // scope 6 at $DIR/inline_generator.rs:15:5: 15:41 ++ _2 = Pin::<&mut [generator@$DIR/inline_generator.rs:15:5: 15:8]> { pointer: move _3 }; + StorageDead(_3); +- _1 = <[generator@$DIR/inline_generator.rs:15:5: 15:8] as Generator>::resume(move _2, const false) -> [return: bb3, unwind: bb4]; ++ StorageLive(_5); ++ _5 = const false; ++ _6 = deref_copy (_2.0: &mut [generator@$DIR/inline_generator.rs:15:5: 15:8]); ++ _7 = discriminant((*_6)); ++ switchInt(move _7) -> [0: bb3, 1: bb7, 3: bb8, otherwise: bb9]; } - bb3: { + bb1: { -+ StorageDead(_5); // scope 0 at $DIR/inline_generator.rs:+1:33: +1:46 - StorageDead(_2); // scope 0 at $DIR/inline_generator.rs:+1:45: +1:46 - StorageDead(_4); // scope 0 at $DIR/inline_generator.rs:+1:46: +1:47 - _0 = const (); // scope 0 at $DIR/inline_generator.rs:+0:11: +2:2 - StorageDead(_1); // scope 0 at $DIR/inline_generator.rs:+2:1: +2:2 - return; // scope 0 at $DIR/inline_generator.rs:+2:2: +2:2 ++ StorageDead(_5); + StorageDead(_2); + StorageDead(_4); + _0 = const (); + StorageDead(_1); + return; } - bb4 (cleanup): { + bb2 (cleanup): { - resume; // scope 0 at $DIR/inline_generator.rs:+0:1: +2:2 + resume; + } + + bb3: { -+ StorageLive(_8); // scope 6 at $DIR/inline_generator.rs:15:17: 15:39 -+ switchInt(_5) -> [0: bb4, otherwise: bb5]; // scope 6 at $DIR/inline_generator.rs:15:20: 15:21 ++ StorageLive(_8); ++ switchInt(_5) -> [0: bb4, otherwise: bb5]; + } + + bb4: { -+ _8 = const 13_i32; // scope 6 at $DIR/inline_generator.rs:15:35: 15:37 -+ goto -> bb6; // scope 6 at $DIR/inline_generator.rs:15:17: 15:39 ++ _8 = const 13_i32; ++ goto -> bb6; + } + + bb5: { -+ _8 = const 7_i32; // scope 6 at $DIR/inline_generator.rs:15:24: 15:25 -+ goto -> bb6; // scope 6 at $DIR/inline_generator.rs:15:17: 15:39 ++ _8 = const 7_i32; ++ goto -> bb6; + } + + bb6: { -+ _1 = GeneratorState::::Yielded(move _8); // scope 6 at $DIR/inline_generator.rs:15:11: 15:39 -+ _9 = deref_copy (_2.0: &mut [generator@$DIR/inline_generator.rs:15:5: 15:8]); // scope 6 at $DIR/inline_generator.rs:15:11: 15:39 -+ discriminant((*_9)) = 3; // scope 6 at $DIR/inline_generator.rs:15:11: 15:39 -+ goto -> bb1; // scope 0 at $DIR/inline_generator.rs:15:11: 15:39 ++ _1 = GeneratorState::::Yielded(move _8); ++ _9 = deref_copy (_2.0: &mut [generator@$DIR/inline_generator.rs:15:5: 15:8]); ++ discriminant((*_9)) = 3; ++ goto -> bb1; + } + + bb7: { -+ assert(const false, "generator resumed after completion") -> [success: bb7, unwind: bb2]; // scope 6 at $DIR/inline_generator.rs:15:5: 15:41 ++ assert(const false, "generator resumed after completion") -> [success: bb7, unwind: bb2]; + } + + bb8: { -+ StorageLive(_8); // scope 6 at $DIR/inline_generator.rs:15:5: 15:41 -+ StorageDead(_8); // scope 6 at $DIR/inline_generator.rs:15:38: 15:39 -+ _1 = GeneratorState::::Complete(_5); // scope 6 at $DIR/inline_generator.rs:15:41: 15:41 -+ _10 = deref_copy (_2.0: &mut [generator@$DIR/inline_generator.rs:15:5: 15:8]); // scope 6 at $DIR/inline_generator.rs:15:41: 15:41 -+ discriminant((*_10)) = 1; // scope 6 at $DIR/inline_generator.rs:15:41: 15:41 -+ goto -> bb1; // scope 0 at $DIR/inline_generator.rs:15:41: 15:41 ++ StorageLive(_8); ++ StorageDead(_8); ++ _1 = GeneratorState::::Complete(_5); ++ _10 = deref_copy (_2.0: &mut [generator@$DIR/inline_generator.rs:15:5: 15:8]); ++ discriminant((*_10)) = 1; ++ goto -> bb1; + } + + bb9: { -+ unreachable; // scope 6 at $DIR/inline_generator.rs:15:5: 15:41 ++ unreachable; } } diff --git a/tests/mir-opt/inline/inline_instruction_set.default.Inline.diff b/tests/mir-opt/inline/inline_instruction_set.default.Inline.diff index a1d2423ae2709..6f8b730b4a015 100644 --- a/tests/mir-opt/inline/inline_instruction_set.default.Inline.diff +++ b/tests/mir-opt/inline/inline_instruction_set.default.Inline.diff @@ -2,59 +2,47 @@ + // MIR for `default` after Inline fn default() -> () { - let mut _0: (); // return place in scope 0 at $DIR/inline_instruction_set.rs:+0:18: +0:18 - let _1: (); // in scope 0 at $DIR/inline_instruction_set.rs:+1:5: +1:26 - let _2: (); // in scope 0 at $DIR/inline_instruction_set.rs:+2:5: +2:26 - let _3: (); // in scope 0 at $DIR/inline_instruction_set.rs:+3:5: +3:30 - let _4: (); // in scope 0 at $DIR/inline_instruction_set.rs:+4:5: +4:41 -+ scope 1 (inlined instruction_set_default) { // at $DIR/inline_instruction_set.rs:59:5: 59:30 + let mut _0: (); + let _1: (); + let _2: (); + let _3: (); + let _4: (); ++ scope 1 (inlined instruction_set_default) { + } -+ scope 2 (inlined inline_always_and_using_inline_asm) { // at $DIR/inline_instruction_set.rs:60:5: 60:41 ++ scope 2 (inlined inline_always_and_using_inline_asm) { + scope 3 { + } + } bb0: { - StorageLive(_1); // scope 0 at $DIR/inline_instruction_set.rs:+1:5: +1:26 - _1 = instruction_set_a32() -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/inline_instruction_set.rs:+1:5: +1:26 - // mir::Constant - // + span: $DIR/inline_instruction_set.rs:57:5: 57:24 - // + literal: Const { ty: fn() {instruction_set_a32}, val: Value() } + StorageLive(_1); + _1 = instruction_set_a32() -> [return: bb1, unwind unreachable]; } bb1: { - StorageDead(_1); // scope 0 at $DIR/inline_instruction_set.rs:+1:26: +1:27 - StorageLive(_2); // scope 0 at $DIR/inline_instruction_set.rs:+2:5: +2:26 - _2 = instruction_set_t32() -> [return: bb2, unwind unreachable]; // scope 0 at $DIR/inline_instruction_set.rs:+2:5: +2:26 - // mir::Constant - // + span: $DIR/inline_instruction_set.rs:58:5: 58:24 - // + literal: Const { ty: fn() {instruction_set_t32}, val: Value() } + StorageDead(_1); + StorageLive(_2); + _2 = instruction_set_t32() -> [return: bb2, unwind unreachable]; } bb2: { - StorageDead(_2); // scope 0 at $DIR/inline_instruction_set.rs:+2:26: +2:27 - StorageLive(_3); // scope 0 at $DIR/inline_instruction_set.rs:+3:5: +3:30 -- _3 = instruction_set_default() -> [return: bb3, unwind unreachable]; // scope 0 at $DIR/inline_instruction_set.rs:+3:5: +3:30 -- // mir::Constant -- // + span: $DIR/inline_instruction_set.rs:59:5: 59:28 -- // + literal: Const { ty: fn() {instruction_set_default}, val: Value() } + StorageDead(_2); + StorageLive(_3); +- _3 = instruction_set_default() -> [return: bb3, unwind unreachable]; - } - - bb3: { - StorageDead(_3); // scope 0 at $DIR/inline_instruction_set.rs:+3:30: +3:31 - StorageLive(_4); // scope 0 at $DIR/inline_instruction_set.rs:+4:5: +4:41 -- _4 = inline_always_and_using_inline_asm() -> [return: bb4, unwind unreachable]; // scope 0 at $DIR/inline_instruction_set.rs:+4:5: +4:41 -- // mir::Constant -- // + span: $DIR/inline_instruction_set.rs:60:5: 60:39 -- // + literal: Const { ty: fn() {inline_always_and_using_inline_asm}, val: Value() } -+ asm!("/* do nothing */", options((empty))) -> [return: bb3, unwind unreachable]; // scope 3 at $DIR/inline_instruction_set.rs:43:14: 43:38 + StorageDead(_3); + StorageLive(_4); +- _4 = inline_always_and_using_inline_asm() -> [return: bb4, unwind unreachable]; ++ asm!("/* do nothing */", options((empty))) -> [return: bb3, unwind unreachable]; } - bb4: { + bb3: { - StorageDead(_4); // scope 0 at $DIR/inline_instruction_set.rs:+4:41: +4:42 - _0 = const (); // scope 0 at $DIR/inline_instruction_set.rs:+0:18: +5:2 - return; // scope 0 at $DIR/inline_instruction_set.rs:+5:2: +5:2 + StorageDead(_4); + _0 = const (); + return; } } diff --git a/tests/mir-opt/inline/inline_instruction_set.t32.Inline.diff b/tests/mir-opt/inline/inline_instruction_set.t32.Inline.diff index 36aec4f47b08d..33dc116f622e1 100644 --- a/tests/mir-opt/inline/inline_instruction_set.t32.Inline.diff +++ b/tests/mir-opt/inline/inline_instruction_set.t32.Inline.diff @@ -2,57 +2,45 @@ + // MIR for `t32` after Inline fn t32() -> () { - let mut _0: (); // return place in scope 0 at $DIR/inline_instruction_set.rs:+0:14: +0:14 - let _1: (); // in scope 0 at $DIR/inline_instruction_set.rs:+1:5: +1:26 - let _2: (); // in scope 0 at $DIR/inline_instruction_set.rs:+2:5: +2:26 - let _3: (); // in scope 0 at $DIR/inline_instruction_set.rs:+3:5: +3:30 - let _4: (); // in scope 0 at $DIR/inline_instruction_set.rs:+4:5: +4:41 -+ scope 1 (inlined instruction_set_t32) { // at $DIR/inline_instruction_set.rs:50:5: 50:26 + let mut _0: (); + let _1: (); + let _2: (); + let _3: (); + let _4: (); ++ scope 1 (inlined instruction_set_t32) { + } -+ scope 2 (inlined instruction_set_default) { // at $DIR/inline_instruction_set.rs:51:5: 51:30 ++ scope 2 (inlined instruction_set_default) { + } bb0: { - StorageLive(_1); // scope 0 at $DIR/inline_instruction_set.rs:+1:5: +1:26 - _1 = instruction_set_a32() -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/inline_instruction_set.rs:+1:5: +1:26 - // mir::Constant - // + span: $DIR/inline_instruction_set.rs:49:5: 49:24 - // + literal: Const { ty: fn() {instruction_set_a32}, val: Value() } + StorageLive(_1); + _1 = instruction_set_a32() -> [return: bb1, unwind unreachable]; } bb1: { - StorageDead(_1); // scope 0 at $DIR/inline_instruction_set.rs:+1:26: +1:27 - StorageLive(_2); // scope 0 at $DIR/inline_instruction_set.rs:+2:5: +2:26 -- _2 = instruction_set_t32() -> [return: bb2, unwind unreachable]; // scope 0 at $DIR/inline_instruction_set.rs:+2:5: +2:26 -- // mir::Constant -- // + span: $DIR/inline_instruction_set.rs:50:5: 50:24 -- // + literal: Const { ty: fn() {instruction_set_t32}, val: Value() } + StorageDead(_1); + StorageLive(_2); +- _2 = instruction_set_t32() -> [return: bb2, unwind unreachable]; - } - - bb2: { - StorageDead(_2); // scope 0 at $DIR/inline_instruction_set.rs:+2:26: +2:27 - StorageLive(_3); // scope 0 at $DIR/inline_instruction_set.rs:+3:5: +3:30 -- _3 = instruction_set_default() -> [return: bb3, unwind unreachable]; // scope 0 at $DIR/inline_instruction_set.rs:+3:5: +3:30 -- // mir::Constant -- // + span: $DIR/inline_instruction_set.rs:51:5: 51:28 -- // + literal: Const { ty: fn() {instruction_set_default}, val: Value() } + StorageDead(_2); + StorageLive(_3); +- _3 = instruction_set_default() -> [return: bb3, unwind unreachable]; - } - - bb3: { - StorageDead(_3); // scope 0 at $DIR/inline_instruction_set.rs:+3:30: +3:31 - StorageLive(_4); // scope 0 at $DIR/inline_instruction_set.rs:+4:5: +4:41 -- _4 = inline_always_and_using_inline_asm() -> [return: bb4, unwind unreachable]; // scope 0 at $DIR/inline_instruction_set.rs:+4:5: +4:41 -+ _4 = inline_always_and_using_inline_asm() -> [return: bb2, unwind unreachable]; // scope 0 at $DIR/inline_instruction_set.rs:+4:5: +4:41 - // mir::Constant - // + span: $DIR/inline_instruction_set.rs:52:5: 52:39 - // + literal: Const { ty: fn() {inline_always_and_using_inline_asm}, val: Value() } + StorageDead(_3); + StorageLive(_4); +- _4 = inline_always_and_using_inline_asm() -> [return: bb4, unwind unreachable]; ++ _4 = inline_always_and_using_inline_asm() -> [return: bb2, unwind unreachable]; } - bb4: { + bb2: { - StorageDead(_4); // scope 0 at $DIR/inline_instruction_set.rs:+4:41: +4:42 - _0 = const (); // scope 0 at $DIR/inline_instruction_set.rs:+0:14: +5:2 - return; // scope 0 at $DIR/inline_instruction_set.rs:+5:2: +5:2 + StorageDead(_4); + _0 = const (); + return; } } diff --git a/tests/mir-opt/inline/inline_into_box_place.main.Inline.panic-abort.diff b/tests/mir-opt/inline/inline_into_box_place.main.Inline.panic-abort.diff index 3b3b29af3942f..b186a701f65b5 100644 --- a/tests/mir-opt/inline/inline_into_box_place.main.Inline.panic-abort.diff +++ b/tests/mir-opt/inline/inline_into_box_place.main.Inline.panic-abort.diff @@ -2,71 +2,57 @@ + // MIR for `main` after Inline fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/inline_into_box_place.rs:+0:11: +0:11 - let _1: std::boxed::Box>; // in scope 0 at $DIR/inline_into_box_place.rs:+1:9: +1:11 - let mut _2: std::vec::Vec; // in scope 0 at $DIR/inline_into_box_place.rs:+1:38: +1:48 + let mut _0: (); + let _1: std::boxed::Box>; + let mut _2: std::vec::Vec; scope 1 { - debug _x => _1; // in scope 1 at $DIR/inline_into_box_place.rs:+1:9: +1:11 + debug _x => _1; } -+ scope 2 (inlined Vec::::new) { // at $DIR/inline_into_box_place.rs:8:38: 8:48 -+ let mut _3: alloc::raw_vec::RawVec; // in scope 2 at $SRC_DIR/alloc/src/vec/mod.rs:LL:COL ++ scope 2 (inlined Vec::::new) { ++ let mut _3: alloc::raw_vec::RawVec; + } -+ scope 3 (inlined Box::>::new) { // at $DIR/inline_into_box_place.rs:8:29: 8:49 -+ debug x => _2; // in scope 3 at $SRC_DIR/alloc/src/boxed.rs:LL:COL -+ let mut _4: usize; // in scope 3 at $SRC_DIR/alloc/src/boxed.rs:LL:COL -+ let mut _5: usize; // in scope 3 at $SRC_DIR/alloc/src/boxed.rs:LL:COL -+ let mut _6: *mut u8; // in scope 3 at $SRC_DIR/alloc/src/boxed.rs:LL:COL -+ let mut _7: *const std::vec::Vec; // in scope 3 at $SRC_DIR/alloc/src/boxed.rs:LL:COL ++ scope 3 (inlined Box::>::new) { ++ debug x => _2; ++ let mut _4: usize; ++ let mut _5: usize; ++ let mut _6: *mut u8; ++ let mut _7: *const std::vec::Vec; + scope 4 { + } + } bb0: { - StorageLive(_1); // scope 0 at $DIR/inline_into_box_place.rs:+1:9: +1:11 - StorageLive(_2); // scope 0 at $DIR/inline_into_box_place.rs:+1:38: +1:48 -- _2 = Vec::::new() -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/inline_into_box_place.rs:+1:38: +1:48 -+ StorageLive(_3); // scope 2 at $SRC_DIR/alloc/src/vec/mod.rs:LL:COL -+ _3 = const _; // scope 2 at $SRC_DIR/alloc/src/vec/mod.rs:LL:COL - // mir::Constant -- // + span: $DIR/inline_into_box_place.rs:8:38: 8:46 -- // + user_ty: UserType(2) -- // + literal: Const { ty: fn() -> Vec {Vec::::new}, val: Value() } -+ // + span: $SRC_DIR/alloc/src/vec/mod.rs:LL:COL -+ // + user_ty: UserType(0) -+ // + literal: Const { ty: alloc::raw_vec::RawVec, val: Unevaluated(alloc::raw_vec::RawVec::::NEW, [u32], None) } -+ _2 = Vec:: { buf: move _3, len: const 0_usize }; // scope 2 at $SRC_DIR/alloc/src/vec/mod.rs:LL:COL -+ StorageDead(_3); // scope 2 at $SRC_DIR/alloc/src/vec/mod.rs:LL:COL -+ _4 = SizeOf(std::vec::Vec); // scope 4 at $SRC_DIR/alloc/src/boxed.rs:LL:COL -+ _5 = AlignOf(std::vec::Vec); // scope 4 at $SRC_DIR/alloc/src/boxed.rs:LL:COL -+ _6 = alloc::alloc::exchange_malloc(move _4, move _5) -> [return: bb2, unwind unreachable]; // scope 4 at $SRC_DIR/alloc/src/boxed.rs:LL:COL -+ // mir::Constant -+ // + span: $SRC_DIR/alloc/src/boxed.rs:LL:COL -+ // + literal: Const { ty: unsafe fn(usize, usize) -> *mut u8 {alloc::alloc::exchange_malloc}, val: Value() } + StorageLive(_1); + StorageLive(_2); +- _2 = Vec::::new() -> [return: bb1, unwind unreachable]; ++ StorageLive(_3); ++ _3 = const _; ++ _2 = Vec:: { buf: move _3, len: const 0_usize }; ++ StorageDead(_3); ++ _4 = SizeOf(std::vec::Vec); ++ _5 = AlignOf(std::vec::Vec); ++ _6 = alloc::alloc::exchange_malloc(move _4, move _5) -> [return: bb2, unwind unreachable]; } bb1: { -- _1 = Box::>::new(move _2) -> [return: bb2, unwind unreachable]; // scope 0 at $DIR/inline_into_box_place.rs:+1:29: +1:49 -- // mir::Constant -- // + span: $DIR/inline_into_box_place.rs:8:29: 8:37 -- // + user_ty: UserType(1) -- // + literal: Const { ty: fn(Vec) -> Box> {Box::>::new}, val: Value() } -+ StorageDead(_1); // scope 0 at $DIR/inline_into_box_place.rs:+2:1: +2:2 -+ return; // scope 0 at $DIR/inline_into_box_place.rs:+2:2: +2:2 +- _1 = Box::>::new(move _2) -> [return: bb2, unwind unreachable]; ++ StorageDead(_1); ++ return; } bb2: { -+ _1 = ShallowInitBox(move _6, std::vec::Vec); // scope 3 at $SRC_DIR/alloc/src/boxed.rs:LL:COL -+ _7 = (((_1.0: std::ptr::Unique>).0: std::ptr::NonNull>).0: *const std::vec::Vec); // scope 3 at $SRC_DIR/alloc/src/boxed.rs:LL:COL -+ (*_7) = move _2; // scope 3 at $SRC_DIR/alloc/src/boxed.rs:LL:COL - StorageDead(_2); // scope 0 at $DIR/inline_into_box_place.rs:+1:48: +1:49 - _0 = const (); // scope 0 at $DIR/inline_into_box_place.rs:+0:11: +2:2 -- drop(_1) -> [return: bb3, unwind unreachable]; // scope 0 at $DIR/inline_into_box_place.rs:+2:1: +2:2 ++ _1 = ShallowInitBox(move _6, std::vec::Vec); ++ _7 = (((_1.0: std::ptr::Unique>).0: std::ptr::NonNull>).0: *const std::vec::Vec); ++ (*_7) = move _2; + StorageDead(_2); + _0 = const (); +- drop(_1) -> [return: bb3, unwind unreachable]; - } - - bb3: { -- StorageDead(_1); // scope 0 at $DIR/inline_into_box_place.rs:+2:1: +2:2 -- return; // scope 0 at $DIR/inline_into_box_place.rs:+2:2: +2:2 -+ drop(_1) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/inline_into_box_place.rs:+2:1: +2:2 +- StorageDead(_1); +- return; ++ drop(_1) -> [return: bb1, unwind unreachable]; } } diff --git a/tests/mir-opt/inline/inline_into_box_place.main.Inline.panic-unwind.diff b/tests/mir-opt/inline/inline_into_box_place.main.Inline.panic-unwind.diff index a5129e0e8c8e1..a789f9933b4be 100644 --- a/tests/mir-opt/inline/inline_into_box_place.main.Inline.panic-unwind.diff +++ b/tests/mir-opt/inline/inline_into_box_place.main.Inline.panic-unwind.diff @@ -2,80 +2,66 @@ + // MIR for `main` after Inline fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/inline_into_box_place.rs:+0:11: +0:11 - let _1: std::boxed::Box>; // in scope 0 at $DIR/inline_into_box_place.rs:+1:9: +1:11 - let mut _2: std::vec::Vec; // in scope 0 at $DIR/inline_into_box_place.rs:+1:38: +1:48 + let mut _0: (); + let _1: std::boxed::Box>; + let mut _2: std::vec::Vec; scope 1 { - debug _x => _1; // in scope 1 at $DIR/inline_into_box_place.rs:+1:9: +1:11 + debug _x => _1; } -+ scope 2 (inlined Vec::::new) { // at $DIR/inline_into_box_place.rs:8:38: 8:48 -+ let mut _3: alloc::raw_vec::RawVec; // in scope 2 at $SRC_DIR/alloc/src/vec/mod.rs:LL:COL ++ scope 2 (inlined Vec::::new) { ++ let mut _3: alloc::raw_vec::RawVec; + } -+ scope 3 (inlined Box::>::new) { // at $DIR/inline_into_box_place.rs:8:29: 8:49 -+ debug x => _2; // in scope 3 at $SRC_DIR/alloc/src/boxed.rs:LL:COL -+ let mut _4: usize; // in scope 3 at $SRC_DIR/alloc/src/boxed.rs:LL:COL -+ let mut _5: usize; // in scope 3 at $SRC_DIR/alloc/src/boxed.rs:LL:COL -+ let mut _6: *mut u8; // in scope 3 at $SRC_DIR/alloc/src/boxed.rs:LL:COL -+ let mut _7: *const std::vec::Vec; // in scope 3 at $SRC_DIR/alloc/src/boxed.rs:LL:COL ++ scope 3 (inlined Box::>::new) { ++ debug x => _2; ++ let mut _4: usize; ++ let mut _5: usize; ++ let mut _6: *mut u8; ++ let mut _7: *const std::vec::Vec; + scope 4 { + } + } bb0: { - StorageLive(_1); // scope 0 at $DIR/inline_into_box_place.rs:+1:9: +1:11 - StorageLive(_2); // scope 0 at $DIR/inline_into_box_place.rs:+1:38: +1:48 -- _2 = Vec::::new() -> bb1; // scope 0 at $DIR/inline_into_box_place.rs:+1:38: +1:48 -+ StorageLive(_3); // scope 2 at $SRC_DIR/alloc/src/vec/mod.rs:LL:COL -+ _3 = const _; // scope 2 at $SRC_DIR/alloc/src/vec/mod.rs:LL:COL - // mir::Constant -- // + span: $DIR/inline_into_box_place.rs:8:38: 8:46 -- // + user_ty: UserType(2) -- // + literal: Const { ty: fn() -> Vec {Vec::::new}, val: Value() } -+ // + span: $SRC_DIR/alloc/src/vec/mod.rs:LL:COL -+ // + user_ty: UserType(0) -+ // + literal: Const { ty: alloc::raw_vec::RawVec, val: Unevaluated(alloc::raw_vec::RawVec::::NEW, [u32], None) } -+ _2 = Vec:: { buf: move _3, len: const 0_usize }; // scope 2 at $SRC_DIR/alloc/src/vec/mod.rs:LL:COL -+ StorageDead(_3); // scope 2 at $SRC_DIR/alloc/src/vec/mod.rs:LL:COL -+ _4 = SizeOf(std::vec::Vec); // scope 4 at $SRC_DIR/alloc/src/boxed.rs:LL:COL -+ _5 = AlignOf(std::vec::Vec); // scope 4 at $SRC_DIR/alloc/src/boxed.rs:LL:COL -+ _6 = alloc::alloc::exchange_malloc(move _4, move _5) -> [return: bb3, unwind: bb4]; // scope 4 at $SRC_DIR/alloc/src/boxed.rs:LL:COL -+ // mir::Constant -+ // + span: $SRC_DIR/alloc/src/boxed.rs:LL:COL -+ // + literal: Const { ty: unsafe fn(usize, usize) -> *mut u8 {alloc::alloc::exchange_malloc}, val: Value() } + StorageLive(_1); + StorageLive(_2); +- _2 = Vec::::new() -> bb1; ++ StorageLive(_3); ++ _3 = const _; ++ _2 = Vec:: { buf: move _3, len: const 0_usize }; ++ StorageDead(_3); ++ _4 = SizeOf(std::vec::Vec); ++ _5 = AlignOf(std::vec::Vec); ++ _6 = alloc::alloc::exchange_malloc(move _4, move _5) -> [return: bb3, unwind: bb4]; } bb1: { -- _1 = Box::>::new(move _2) -> [return: bb2, unwind: bb4]; // scope 0 at $DIR/inline_into_box_place.rs:+1:29: +1:49 -- // mir::Constant -- // + span: $DIR/inline_into_box_place.rs:8:29: 8:37 -- // + user_ty: UserType(1) -- // + literal: Const { ty: fn(Vec) -> Box> {Box::>::new}, val: Value() } -+ StorageDead(_1); // scope 0 at $DIR/inline_into_box_place.rs:+2:1: +2:2 -+ return; // scope 0 at $DIR/inline_into_box_place.rs:+2:2: +2:2 +- _1 = Box::>::new(move _2) -> [return: bb2, unwind: bb4]; ++ StorageDead(_1); ++ return; } - bb2: { -- StorageDead(_2); // scope 0 at $DIR/inline_into_box_place.rs:+1:48: +1:49 -- _0 = const (); // scope 0 at $DIR/inline_into_box_place.rs:+0:11: +2:2 -- drop(_1) -> [return: bb3, unwind: bb4]; // scope 0 at $DIR/inline_into_box_place.rs:+2:1: +2:2 +- StorageDead(_2); +- _0 = const (); +- drop(_1) -> [return: bb3, unwind: bb4]; + bb2 (cleanup): { -+ resume; // scope 0 at $DIR/inline_into_box_place.rs:+0:1: +2:2 ++ resume; } bb3: { -- StorageDead(_1); // scope 0 at $DIR/inline_into_box_place.rs:+2:1: +2:2 -- return; // scope 0 at $DIR/inline_into_box_place.rs:+2:2: +2:2 -+ _1 = ShallowInitBox(move _6, std::vec::Vec); // scope 3 at $SRC_DIR/alloc/src/boxed.rs:LL:COL -+ _7 = (((_1.0: std::ptr::Unique>).0: std::ptr::NonNull>).0: *const std::vec::Vec); // scope 3 at $SRC_DIR/alloc/src/boxed.rs:LL:COL -+ (*_7) = move _2; // scope 3 at $SRC_DIR/alloc/src/boxed.rs:LL:COL -+ StorageDead(_2); // scope 0 at $DIR/inline_into_box_place.rs:+1:48: +1:49 -+ _0 = const (); // scope 0 at $DIR/inline_into_box_place.rs:+0:11: +2:2 -+ drop(_1) -> [return: bb1, unwind: bb2]; // scope 0 at $DIR/inline_into_box_place.rs:+2:1: +2:2 +- StorageDead(_1); +- return; ++ _1 = ShallowInitBox(move _6, std::vec::Vec); ++ _7 = (((_1.0: std::ptr::Unique>).0: std::ptr::NonNull>).0: *const std::vec::Vec); ++ (*_7) = move _2; ++ StorageDead(_2); ++ _0 = const (); ++ drop(_1) -> [return: bb1, unwind: bb2]; } bb4 (cleanup): { -- resume; // scope 0 at $DIR/inline_into_box_place.rs:+0:1: +2:2 -+ drop(_2) -> [return: bb2, unwind terminate]; // scope 3 at $SRC_DIR/alloc/src/boxed.rs:LL:COL +- resume; ++ drop(_2) -> [return: bb2, unwind terminate]; } } diff --git a/tests/mir-opt/inline/inline_options.main.Inline.after.panic-abort.mir b/tests/mir-opt/inline/inline_options.main.Inline.after.panic-abort.mir index 755ef3fa3d8a9..3218c4e567378 100644 --- a/tests/mir-opt/inline/inline_options.main.Inline.after.panic-abort.mir +++ b/tests/mir-opt/inline/inline_options.main.Inline.after.panic-abort.mir @@ -1,55 +1,43 @@ // MIR for `main` after Inline fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/inline_options.rs:+0:11: +0:11 - let _1: (); // in scope 0 at $DIR/inline_options.rs:+1:5: +1:18 - let _2: (); // in scope 0 at $DIR/inline_options.rs:+2:5: +2:21 - scope 1 (inlined inlined::) { // at $DIR/inline_options.rs:11:5: 11:21 - let _3: (); // in scope 1 at $DIR/inline_options.rs:17:23: 17:26 - let _4: (); // in scope 1 at $DIR/inline_options.rs:17:28: 17:31 - let _5: (); // in scope 1 at $DIR/inline_options.rs:17:33: 17:36 + let mut _0: (); + let _1: (); + let _2: (); + scope 1 (inlined inlined::) { + let _3: (); + let _4: (); + let _5: (); } bb0: { - StorageLive(_1); // scope 0 at $DIR/inline_options.rs:+1:5: +1:18 - _1 = not_inlined() -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/inline_options.rs:+1:5: +1:18 - // mir::Constant - // + span: $DIR/inline_options.rs:10:5: 10:16 - // + literal: Const { ty: fn() {not_inlined}, val: Value() } + StorageLive(_1); + _1 = not_inlined() -> [return: bb1, unwind unreachable]; } bb1: { - StorageDead(_1); // scope 0 at $DIR/inline_options.rs:+1:18: +1:19 - StorageLive(_2); // scope 0 at $DIR/inline_options.rs:+2:5: +2:21 - StorageLive(_3); // scope 0 at $DIR/inline_options.rs:+2:5: +2:21 - StorageLive(_4); // scope 0 at $DIR/inline_options.rs:+2:5: +2:21 - StorageLive(_5); // scope 0 at $DIR/inline_options.rs:+2:5: +2:21 - _3 = g() -> [return: bb3, unwind unreachable]; // scope 1 at $DIR/inline_options.rs:17:23: 17:26 - // mir::Constant - // + span: $DIR/inline_options.rs:17:23: 17:24 - // + literal: Const { ty: fn() {g}, val: Value() } + StorageDead(_1); + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + StorageLive(_5); + _3 = g() -> [return: bb3, unwind unreachable]; } bb2: { - StorageDead(_5); // scope 0 at $DIR/inline_options.rs:+2:5: +2:21 - StorageDead(_4); // scope 0 at $DIR/inline_options.rs:+2:5: +2:21 - StorageDead(_3); // scope 0 at $DIR/inline_options.rs:+2:5: +2:21 - StorageDead(_2); // scope 0 at $DIR/inline_options.rs:+2:21: +2:22 - _0 = const (); // scope 0 at $DIR/inline_options.rs:+0:11: +3:2 - return; // scope 0 at $DIR/inline_options.rs:+3:2: +3:2 + StorageDead(_5); + StorageDead(_4); + StorageDead(_3); + StorageDead(_2); + _0 = const (); + return; } bb3: { - _4 = g() -> [return: bb4, unwind unreachable]; // scope 1 at $DIR/inline_options.rs:17:28: 17:31 - // mir::Constant - // + span: $DIR/inline_options.rs:17:28: 17:29 - // + literal: Const { ty: fn() {g}, val: Value() } + _4 = g() -> [return: bb4, unwind unreachable]; } bb4: { - _5 = g() -> [return: bb2, unwind unreachable]; // scope 1 at $DIR/inline_options.rs:17:33: 17:36 - // mir::Constant - // + span: $DIR/inline_options.rs:17:33: 17:34 - // + literal: Const { ty: fn() {g}, val: Value() } + _5 = g() -> [return: bb2, unwind unreachable]; } } diff --git a/tests/mir-opt/inline/inline_options.main.Inline.after.panic-unwind.mir b/tests/mir-opt/inline/inline_options.main.Inline.after.panic-unwind.mir index a2938ead0dc14..d006c73f95420 100644 --- a/tests/mir-opt/inline/inline_options.main.Inline.after.panic-unwind.mir +++ b/tests/mir-opt/inline/inline_options.main.Inline.after.panic-unwind.mir @@ -1,55 +1,43 @@ // MIR for `main` after Inline fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/inline_options.rs:+0:11: +0:11 - let _1: (); // in scope 0 at $DIR/inline_options.rs:+1:5: +1:18 - let _2: (); // in scope 0 at $DIR/inline_options.rs:+2:5: +2:21 - scope 1 (inlined inlined::) { // at $DIR/inline_options.rs:11:5: 11:21 - let _3: (); // in scope 1 at $DIR/inline_options.rs:17:23: 17:26 - let _4: (); // in scope 1 at $DIR/inline_options.rs:17:28: 17:31 - let _5: (); // in scope 1 at $DIR/inline_options.rs:17:33: 17:36 + let mut _0: (); + let _1: (); + let _2: (); + scope 1 (inlined inlined::) { + let _3: (); + let _4: (); + let _5: (); } bb0: { - StorageLive(_1); // scope 0 at $DIR/inline_options.rs:+1:5: +1:18 - _1 = not_inlined() -> bb1; // scope 0 at $DIR/inline_options.rs:+1:5: +1:18 - // mir::Constant - // + span: $DIR/inline_options.rs:10:5: 10:16 - // + literal: Const { ty: fn() {not_inlined}, val: Value() } + StorageLive(_1); + _1 = not_inlined() -> bb1; } bb1: { - StorageDead(_1); // scope 0 at $DIR/inline_options.rs:+1:18: +1:19 - StorageLive(_2); // scope 0 at $DIR/inline_options.rs:+2:5: +2:21 - StorageLive(_3); // scope 0 at $DIR/inline_options.rs:+2:5: +2:21 - StorageLive(_4); // scope 0 at $DIR/inline_options.rs:+2:5: +2:21 - StorageLive(_5); // scope 0 at $DIR/inline_options.rs:+2:5: +2:21 - _3 = g() -> bb3; // scope 1 at $DIR/inline_options.rs:17:23: 17:26 - // mir::Constant - // + span: $DIR/inline_options.rs:17:23: 17:24 - // + literal: Const { ty: fn() {g}, val: Value() } + StorageDead(_1); + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + StorageLive(_5); + _3 = g() -> bb3; } bb2: { - StorageDead(_5); // scope 0 at $DIR/inline_options.rs:+2:5: +2:21 - StorageDead(_4); // scope 0 at $DIR/inline_options.rs:+2:5: +2:21 - StorageDead(_3); // scope 0 at $DIR/inline_options.rs:+2:5: +2:21 - StorageDead(_2); // scope 0 at $DIR/inline_options.rs:+2:21: +2:22 - _0 = const (); // scope 0 at $DIR/inline_options.rs:+0:11: +3:2 - return; // scope 0 at $DIR/inline_options.rs:+3:2: +3:2 + StorageDead(_5); + StorageDead(_4); + StorageDead(_3); + StorageDead(_2); + _0 = const (); + return; } bb3: { - _4 = g() -> bb4; // scope 1 at $DIR/inline_options.rs:17:28: 17:31 - // mir::Constant - // + span: $DIR/inline_options.rs:17:28: 17:29 - // + literal: Const { ty: fn() {g}, val: Value() } + _4 = g() -> bb4; } bb4: { - _5 = g() -> bb2; // scope 1 at $DIR/inline_options.rs:17:33: 17:36 - // mir::Constant - // + span: $DIR/inline_options.rs:17:33: 17:34 - // + literal: Const { ty: fn() {g}, val: Value() } + _5 = g() -> bb2; } } diff --git a/tests/mir-opt/inline/inline_retag.bar.Inline.after.mir b/tests/mir-opt/inline/inline_retag.bar.Inline.after.mir index 60149ff36064e..8c3f3a4589e63 100644 --- a/tests/mir-opt/inline/inline_retag.bar.Inline.after.mir +++ b/tests/mir-opt/inline/inline_retag.bar.Inline.after.mir @@ -1,68 +1,59 @@ // MIR for `bar` after Inline fn bar() -> bool { - let mut _0: bool; // return place in scope 0 at $DIR/inline_retag.rs:+0:13: +0:17 - let _1: for<'a, 'b> fn(&'a i32, &'b i32) -> bool {foo}; // in scope 0 at $DIR/inline_retag.rs:+1:9: +1:10 - let mut _2: for<'a, 'b> fn(&'a i32, &'b i32) -> bool {foo}; // in scope 0 at $DIR/inline_retag.rs:+2:5: +2:6 - let mut _3: &i32; // in scope 0 at $DIR/inline_retag.rs:+2:7: +2:9 - let _4: &i32; // in scope 0 at $DIR/inline_retag.rs:+2:7: +2:9 - let _5: i32; // in scope 0 at $DIR/inline_retag.rs:+2:8: +2:9 - let mut _6: &i32; // in scope 0 at $DIR/inline_retag.rs:+2:11: +2:14 - let _7: &i32; // in scope 0 at $DIR/inline_retag.rs:+2:11: +2:14 - let _8: i32; // in scope 0 at $DIR/inline_retag.rs:+2:12: +2:14 + let mut _0: bool; + let _1: for<'a, 'b> fn(&'a i32, &'b i32) -> bool {foo}; + let mut _2: for<'a, 'b> fn(&'a i32, &'b i32) -> bool {foo}; + let mut _3: &i32; + let _4: &i32; + let _5: i32; + let mut _6: &i32; + let _7: &i32; + let _8: i32; scope 1 { - debug f => _1; // in scope 1 at $DIR/inline_retag.rs:+1:9: +1:10 - let mut _9: &i32; // in scope 1 at $DIR/inline_retag.rs:+2:11: +2:14 - let mut _10: &i32; // in scope 1 at $DIR/inline_retag.rs:+2:7: +2:9 - scope 2 (inlined foo) { // at $DIR/inline_retag.rs:12:5: 12:15 - debug x => _3; // in scope 2 at $DIR/inline_retag.rs:16:8: 16:9 - debug y => _6; // in scope 2 at $DIR/inline_retag.rs:16:17: 16:18 - let mut _11: i32; // in scope 2 at $DIR/inline_retag.rs:17:5: 17:7 - let mut _12: i32; // in scope 2 at $DIR/inline_retag.rs:17:11: 17:13 + debug f => _1; + let mut _9: &i32; + let mut _10: &i32; + scope 2 (inlined foo) { + debug x => _3; + debug y => _6; + let mut _11: i32; + let mut _12: i32; } } bb0: { - StorageLive(_1); // scope 0 at $DIR/inline_retag.rs:+1:9: +1:10 - _1 = foo; // scope 0 at $DIR/inline_retag.rs:+1:13: +1:16 - // mir::Constant - // + span: $DIR/inline_retag.rs:11:13: 11:16 - // + literal: Const { ty: for<'a, 'b> fn(&'a i32, &'b i32) -> bool {foo}, val: Value() } - StorageLive(_2); // scope 1 at $DIR/inline_retag.rs:+2:5: +2:6 - _2 = _1; // scope 1 at $DIR/inline_retag.rs:+2:5: +2:6 - StorageLive(_3); // scope 1 at $DIR/inline_retag.rs:+2:7: +2:9 - StorageLive(_4); // scope 1 at $DIR/inline_retag.rs:+2:7: +2:9 - _10 = const _; // scope 1 at $DIR/inline_retag.rs:+2:7: +2:9 - // mir::Constant - // + span: $DIR/inline_retag.rs:12:7: 12:9 - // + literal: Const { ty: &i32, val: Unevaluated(bar, [], Some(promoted[1])) } - Retag(_10); // scope 1 at $DIR/inline_retag.rs:+2:7: +2:9 - _4 = &(*_10); // scope 1 at $DIR/inline_retag.rs:+2:7: +2:9 - _3 = &(*_4); // scope 1 at $DIR/inline_retag.rs:+2:7: +2:9 - StorageLive(_6); // scope 1 at $DIR/inline_retag.rs:+2:11: +2:14 - StorageLive(_7); // scope 1 at $DIR/inline_retag.rs:+2:11: +2:14 - _9 = const _; // scope 1 at $DIR/inline_retag.rs:+2:11: +2:14 - // mir::Constant - // + span: $DIR/inline_retag.rs:12:11: 12:14 - // + literal: Const { ty: &i32, val: Unevaluated(bar, [], Some(promoted[0])) } - Retag(_9); // scope 1 at $DIR/inline_retag.rs:+2:11: +2:14 - _7 = &(*_9); // scope 1 at $DIR/inline_retag.rs:+2:11: +2:14 - _6 = &(*_7); // scope 1 at $DIR/inline_retag.rs:+2:11: +2:14 - Retag(_3); // scope 2 at $DIR/inline_retag.rs:16:8: 16:9 - Retag(_6); // scope 2 at $DIR/inline_retag.rs:16:17: 16:18 - StorageLive(_11); // scope 2 at $DIR/inline_retag.rs:17:5: 17:7 - _11 = (*_3); // scope 2 at $DIR/inline_retag.rs:17:5: 17:7 - StorageLive(_12); // scope 2 at $DIR/inline_retag.rs:17:11: 17:13 - _12 = (*_6); // scope 2 at $DIR/inline_retag.rs:17:11: 17:13 - _0 = Eq(move _11, move _12); // scope 2 at $DIR/inline_retag.rs:17:5: 17:13 - StorageDead(_12); // scope 2 at $DIR/inline_retag.rs:17:12: 17:13 - StorageDead(_11); // scope 2 at $DIR/inline_retag.rs:17:12: 17:13 - StorageDead(_6); // scope 1 at $DIR/inline_retag.rs:+2:14: +2:15 - StorageDead(_3); // scope 1 at $DIR/inline_retag.rs:+2:14: +2:15 - StorageDead(_2); // scope 1 at $DIR/inline_retag.rs:+2:14: +2:15 - StorageDead(_1); // scope 0 at $DIR/inline_retag.rs:+3:1: +3:2 - StorageDead(_7); // scope 0 at $DIR/inline_retag.rs:+3:1: +3:2 - StorageDead(_4); // scope 0 at $DIR/inline_retag.rs:+3:1: +3:2 - return; // scope 0 at $DIR/inline_retag.rs:+3:2: +3:2 + StorageLive(_1); + _1 = foo; + StorageLive(_2); + _2 = _1; + StorageLive(_3); + StorageLive(_4); + _10 = const _; + Retag(_10); + _4 = &(*_10); + _3 = &(*_4); + StorageLive(_6); + StorageLive(_7); + _9 = const _; + Retag(_9); + _7 = &(*_9); + _6 = &(*_7); + Retag(_3); + Retag(_6); + StorageLive(_11); + _11 = (*_3); + StorageLive(_12); + _12 = (*_6); + _0 = Eq(move _11, move _12); + StorageDead(_12); + StorageDead(_11); + StorageDead(_6); + StorageDead(_3); + StorageDead(_2); + StorageDead(_1); + StorageDead(_7); + StorageDead(_4); + return; } } diff --git a/tests/mir-opt/inline/inline_shims.clone.Inline.panic-abort.diff b/tests/mir-opt/inline/inline_shims.clone.Inline.panic-abort.diff index d8521bb1d6280..8117e58fa51a3 100644 --- a/tests/mir-opt/inline/inline_shims.clone.Inline.panic-abort.diff +++ b/tests/mir-opt/inline/inline_shims.clone.Inline.panic-abort.diff @@ -2,25 +2,22 @@ + // MIR for `clone` after Inline fn clone(_1: fn(A, B)) -> fn(A, B) { - debug f => _1; // in scope 0 at $DIR/inline_shims.rs:+0:20: +0:21 - let mut _0: fn(A, B); // return place in scope 0 at $DIR/inline_shims.rs:+0:36: +0:44 - let mut _2: &fn(A, B); // in scope 0 at $DIR/inline_shims.rs:+1:5: +1:14 -+ scope 1 (inlined ::clone - shim(fn(A, B))) { // at $DIR/inline_shims.rs:6:7: 6:14 + debug f => _1; + let mut _0: fn(A, B); + let mut _2: &fn(A, B); ++ scope 1 (inlined ::clone - shim(fn(A, B))) { + } bb0: { - StorageLive(_2); // scope 0 at $DIR/inline_shims.rs:+1:5: +1:14 - _2 = &_1; // scope 0 at $DIR/inline_shims.rs:+1:5: +1:14 -- _0 = ::clone(move _2) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/inline_shims.rs:+1:5: +1:14 -- // mir::Constant -- // + span: $DIR/inline_shims.rs:6:7: 6:12 -- // + literal: Const { ty: for<'a> fn(&'a fn(A, B)) -> fn(A, B) {::clone}, val: Value() } + StorageLive(_2); + _2 = &_1; +- _0 = ::clone(move _2) -> [return: bb1, unwind unreachable]; - } - - bb1: { -+ _0 = (*_2); // scope 1 at $SRC_DIR/core/src/clone.rs:LL:COL - StorageDead(_2); // scope 0 at $DIR/inline_shims.rs:+1:13: +1:14 - return; // scope 0 at $DIR/inline_shims.rs:+2:2: +2:2 ++ _0 = (*_2); + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/inline/inline_shims.clone.Inline.panic-unwind.diff b/tests/mir-opt/inline/inline_shims.clone.Inline.panic-unwind.diff index 09dd35c4c68b1..9897ed78edff0 100644 --- a/tests/mir-opt/inline/inline_shims.clone.Inline.panic-unwind.diff +++ b/tests/mir-opt/inline/inline_shims.clone.Inline.panic-unwind.diff @@ -2,25 +2,22 @@ + // MIR for `clone` after Inline fn clone(_1: fn(A, B)) -> fn(A, B) { - debug f => _1; // in scope 0 at $DIR/inline_shims.rs:+0:20: +0:21 - let mut _0: fn(A, B); // return place in scope 0 at $DIR/inline_shims.rs:+0:36: +0:44 - let mut _2: &fn(A, B); // in scope 0 at $DIR/inline_shims.rs:+1:5: +1:14 -+ scope 1 (inlined ::clone - shim(fn(A, B))) { // at $DIR/inline_shims.rs:6:7: 6:14 + debug f => _1; + let mut _0: fn(A, B); + let mut _2: &fn(A, B); ++ scope 1 (inlined ::clone - shim(fn(A, B))) { + } bb0: { - StorageLive(_2); // scope 0 at $DIR/inline_shims.rs:+1:5: +1:14 - _2 = &_1; // scope 0 at $DIR/inline_shims.rs:+1:5: +1:14 -- _0 = ::clone(move _2) -> bb1; // scope 0 at $DIR/inline_shims.rs:+1:5: +1:14 -- // mir::Constant -- // + span: $DIR/inline_shims.rs:6:7: 6:12 -- // + literal: Const { ty: for<'a> fn(&'a fn(A, B)) -> fn(A, B) {::clone}, val: Value() } + StorageLive(_2); + _2 = &_1; +- _0 = ::clone(move _2) -> bb1; - } - - bb1: { -+ _0 = (*_2); // scope 1 at $SRC_DIR/core/src/clone.rs:LL:COL - StorageDead(_2); // scope 0 at $DIR/inline_shims.rs:+1:13: +1:14 - return; // scope 0 at $DIR/inline_shims.rs:+2:2: +2:2 ++ _0 = (*_2); + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/inline/inline_shims.drop.Inline.panic-abort.diff b/tests/mir-opt/inline/inline_shims.drop.Inline.panic-abort.diff index 49b36f0d91b6e..4fcd49994f0d7 100644 --- a/tests/mir-opt/inline/inline_shims.drop.Inline.panic-abort.diff +++ b/tests/mir-opt/inline/inline_shims.drop.Inline.panic-abort.diff @@ -2,71 +2,63 @@ + // MIR for `drop` after Inline fn drop(_1: *mut Vec, _2: *mut Option) -> () { - debug a => _1; // in scope 0 at $DIR/inline_shims.rs:+0:19: +0:20 - debug b => _2; // in scope 0 at $DIR/inline_shims.rs:+0:35: +0:36 - let mut _0: (); // return place in scope 0 at $DIR/inline_shims.rs:+0:54: +0:54 - let _3: (); // in scope 0 at $DIR/inline_shims.rs:+1:14: +1:40 - let mut _4: *mut std::vec::Vec; // in scope 0 at $DIR/inline_shims.rs:+1:38: +1:39 - let mut _5: *mut std::option::Option; // in scope 0 at $DIR/inline_shims.rs:+2:38: +2:39 + debug a => _1; + debug b => _2; + let mut _0: (); + let _3: (); + let mut _4: *mut std::vec::Vec; + let mut _5: *mut std::option::Option; scope 1 { -+ scope 3 (inlined std::ptr::drop_in_place::> - shim(Some(Vec))) { // at $DIR/inline_shims.rs:11:14: 11:40 -+ let mut _6: &mut std::vec::Vec; // in scope 3 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL -+ let mut _7: (); // in scope 3 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL ++ scope 3 (inlined std::ptr::drop_in_place::> - shim(Some(Vec))) { ++ let mut _6: &mut std::vec::Vec; ++ let mut _7: (); + } } scope 2 { -+ scope 4 (inlined std::ptr::drop_in_place::> - shim(Some(Option))) { // at $DIR/inline_shims.rs:12:14: 12:40 -+ let mut _8: isize; // in scope 4 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL -+ let mut _9: isize; // in scope 4 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL ++ scope 4 (inlined std::ptr::drop_in_place::> - shim(Some(Option))) { ++ let mut _8: isize; ++ let mut _9: isize; + } } bb0: { - StorageLive(_3); // scope 0 at $DIR/inline_shims.rs:+1:5: +1:42 - StorageLive(_4); // scope 1 at $DIR/inline_shims.rs:+1:38: +1:39 - _4 = _1; // scope 1 at $DIR/inline_shims.rs:+1:38: +1:39 -- _3 = std::ptr::drop_in_place::>(move _4) -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/inline_shims.rs:+1:14: +1:40 -+ StorageLive(_6); // scope 1 at $DIR/inline_shims.rs:+1:14: +1:40 -+ StorageLive(_7); // scope 1 at $DIR/inline_shims.rs:+1:14: +1:40 -+ _6 = &mut (*_4); // scope 3 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL -+ _7 = as Drop>::drop(move _6) -> [return: bb2, unwind unreachable]; // scope 3 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL - // mir::Constant -- // + span: $DIR/inline_shims.rs:11:14: 11:37 -- // + literal: Const { ty: unsafe fn(*mut Vec) {std::ptr::drop_in_place::>}, val: Value() } -+ // + span: $SRC_DIR/core/src/ptr/mod.rs:LL:COL -+ // + literal: Const { ty: for<'a> fn(&'a mut Vec) { as Drop>::drop}, val: Value() } + StorageLive(_3); + StorageLive(_4); + _4 = _1; +- _3 = std::ptr::drop_in_place::>(move _4) -> [return: bb1, unwind unreachable]; ++ StorageLive(_6); ++ StorageLive(_7); ++ _6 = &mut (*_4); ++ _7 = as Drop>::drop(move _6) -> [return: bb2, unwind unreachable]; } bb1: { -+ StorageDead(_7); // scope 1 at $DIR/inline_shims.rs:+1:14: +1:40 -+ StorageDead(_6); // scope 1 at $DIR/inline_shims.rs:+1:14: +1:40 - StorageDead(_4); // scope 1 at $DIR/inline_shims.rs:+1:39: +1:40 - StorageDead(_3); // scope 0 at $DIR/inline_shims.rs:+1:41: +1:42 - StorageLive(_5); // scope 2 at $DIR/inline_shims.rs:+2:38: +2:39 - _5 = _2; // scope 2 at $DIR/inline_shims.rs:+2:38: +2:39 -- _0 = std::ptr::drop_in_place::>(move _5) -> [return: bb2, unwind unreachable]; // scope 2 at $DIR/inline_shims.rs:+2:14: +2:40 -- // mir::Constant -- // + span: $DIR/inline_shims.rs:12:14: 12:37 -- // + literal: Const { ty: unsafe fn(*mut Option) {std::ptr::drop_in_place::>}, val: Value() } -+ StorageLive(_8); // scope 2 at $DIR/inline_shims.rs:+2:14: +2:40 -+ StorageLive(_9); // scope 2 at $DIR/inline_shims.rs:+2:14: +2:40 -+ _8 = discriminant((*_5)); // scope 4 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL -+ switchInt(move _8) -> [0: bb3, otherwise: bb4]; // scope 4 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL ++ StorageDead(_7); ++ StorageDead(_6); + StorageDead(_4); + StorageDead(_3); + StorageLive(_5); + _5 = _2; +- _0 = std::ptr::drop_in_place::>(move _5) -> [return: bb2, unwind unreachable]; ++ StorageLive(_8); ++ StorageLive(_9); ++ _8 = discriminant((*_5)); ++ switchInt(move _8) -> [0: bb3, otherwise: bb4]; } bb2: { -+ drop(((*_4).0: alloc::raw_vec::RawVec)) -> [return: bb1, unwind unreachable]; // scope 3 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL ++ drop(((*_4).0: alloc::raw_vec::RawVec)) -> [return: bb1, unwind unreachable]; + } + + bb3: { -+ StorageDead(_9); // scope 2 at $DIR/inline_shims.rs:+2:14: +2:40 -+ StorageDead(_8); // scope 2 at $DIR/inline_shims.rs:+2:14: +2:40 - StorageDead(_5); // scope 2 at $DIR/inline_shims.rs:+2:39: +2:40 - return; // scope 0 at $DIR/inline_shims.rs:+3:2: +3:2 ++ StorageDead(_9); ++ StorageDead(_8); + StorageDead(_5); + return; + } + + bb4: { -+ drop((((*_5) as Some).0: B)) -> [return: bb3, unwind unreachable]; // scope 4 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL ++ drop((((*_5) as Some).0: B)) -> [return: bb3, unwind unreachable]; } } diff --git a/tests/mir-opt/inline/inline_shims.drop.Inline.panic-unwind.diff b/tests/mir-opt/inline/inline_shims.drop.Inline.panic-unwind.diff index 36ddb189e0d33..1d24756e1d22c 100644 --- a/tests/mir-opt/inline/inline_shims.drop.Inline.panic-unwind.diff +++ b/tests/mir-opt/inline/inline_shims.drop.Inline.panic-unwind.diff @@ -2,55 +2,49 @@ + // MIR for `drop` after Inline fn drop(_1: *mut Vec, _2: *mut Option) -> () { - debug a => _1; // in scope 0 at $DIR/inline_shims.rs:+0:19: +0:20 - debug b => _2; // in scope 0 at $DIR/inline_shims.rs:+0:35: +0:36 - let mut _0: (); // return place in scope 0 at $DIR/inline_shims.rs:+0:54: +0:54 - let _3: (); // in scope 0 at $DIR/inline_shims.rs:+1:14: +1:40 - let mut _4: *mut std::vec::Vec; // in scope 0 at $DIR/inline_shims.rs:+1:38: +1:39 - let mut _5: *mut std::option::Option; // in scope 0 at $DIR/inline_shims.rs:+2:38: +2:39 + debug a => _1; + debug b => _2; + let mut _0: (); + let _3: (); + let mut _4: *mut std::vec::Vec; + let mut _5: *mut std::option::Option; scope 1 { } scope 2 { -+ scope 3 (inlined std::ptr::drop_in_place::> - shim(Some(Option))) { // at $DIR/inline_shims.rs:12:14: 12:40 -+ let mut _6: isize; // in scope 3 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL -+ let mut _7: isize; // in scope 3 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL ++ scope 3 (inlined std::ptr::drop_in_place::> - shim(Some(Option))) { ++ let mut _6: isize; ++ let mut _7: isize; + } } bb0: { - StorageLive(_3); // scope 0 at $DIR/inline_shims.rs:+1:5: +1:42 - StorageLive(_4); // scope 1 at $DIR/inline_shims.rs:+1:38: +1:39 - _4 = _1; // scope 1 at $DIR/inline_shims.rs:+1:38: +1:39 - _3 = std::ptr::drop_in_place::>(move _4) -> bb1; // scope 1 at $DIR/inline_shims.rs:+1:14: +1:40 - // mir::Constant - // + span: $DIR/inline_shims.rs:11:14: 11:37 - // + literal: Const { ty: unsafe fn(*mut Vec) {std::ptr::drop_in_place::>}, val: Value() } + StorageLive(_3); + StorageLive(_4); + _4 = _1; + _3 = std::ptr::drop_in_place::>(move _4) -> bb1; } bb1: { - StorageDead(_4); // scope 1 at $DIR/inline_shims.rs:+1:39: +1:40 - StorageDead(_3); // scope 0 at $DIR/inline_shims.rs:+1:41: +1:42 - StorageLive(_5); // scope 2 at $DIR/inline_shims.rs:+2:38: +2:39 - _5 = _2; // scope 2 at $DIR/inline_shims.rs:+2:38: +2:39 -- _0 = std::ptr::drop_in_place::>(move _5) -> bb2; // scope 2 at $DIR/inline_shims.rs:+2:14: +2:40 -- // mir::Constant -- // + span: $DIR/inline_shims.rs:12:14: 12:37 -- // + literal: Const { ty: unsafe fn(*mut Option) {std::ptr::drop_in_place::>}, val: Value() } -+ StorageLive(_6); // scope 2 at $DIR/inline_shims.rs:+2:14: +2:40 -+ StorageLive(_7); // scope 2 at $DIR/inline_shims.rs:+2:14: +2:40 -+ _6 = discriminant((*_5)); // scope 3 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL -+ switchInt(move _6) -> [0: bb2, otherwise: bb3]; // scope 3 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL + StorageDead(_4); + StorageDead(_3); + StorageLive(_5); + _5 = _2; +- _0 = std::ptr::drop_in_place::>(move _5) -> bb2; ++ StorageLive(_6); ++ StorageLive(_7); ++ _6 = discriminant((*_5)); ++ switchInt(move _6) -> [0: bb2, otherwise: bb3]; } bb2: { -+ StorageDead(_7); // scope 2 at $DIR/inline_shims.rs:+2:14: +2:40 -+ StorageDead(_6); // scope 2 at $DIR/inline_shims.rs:+2:14: +2:40 - StorageDead(_5); // scope 2 at $DIR/inline_shims.rs:+2:39: +2:40 - return; // scope 0 at $DIR/inline_shims.rs:+3:2: +3:2 ++ StorageDead(_7); ++ StorageDead(_6); + StorageDead(_5); + return; + } + + bb3: { -+ drop((((*_5) as Some).0: B)) -> bb2; // scope 3 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL ++ drop((((*_5) as Some).0: B)) -> bb2; } } diff --git a/tests/mir-opt/inline/inline_specialization.main.Inline.panic-abort.diff b/tests/mir-opt/inline/inline_specialization.main.Inline.panic-abort.diff index 451c90b160550..22afcd2ee5655 100644 --- a/tests/mir-opt/inline/inline_specialization.main.Inline.panic-abort.diff +++ b/tests/mir-opt/inline/inline_specialization.main.Inline.panic-abort.diff @@ -2,27 +2,24 @@ + // MIR for `main` after Inline fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/inline_specialization.rs:+0:11: +0:11 - let _1: u32; // in scope 0 at $DIR/inline_specialization.rs:+1:9: +1:10 + let mut _0: (); + let _1: u32; scope 1 { - debug x => _1; // in scope 1 at $DIR/inline_specialization.rs:+1:9: +1:10 + debug x => _1; } -+ scope 2 (inlined as Foo>::bar) { // at $DIR/inline_specialization.rs:6:13: 6:38 ++ scope 2 (inlined as Foo>::bar) { + } bb0: { - StorageLive(_1); // scope 0 at $DIR/inline_specialization.rs:+1:9: +1:10 -- _1 = as Foo>::bar() -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/inline_specialization.rs:+1:13: +1:38 -- // mir::Constant -- // + span: $DIR/inline_specialization.rs:6:13: 6:36 -- // + literal: Const { ty: fn() -> u32 { as Foo>::bar}, val: Value() } + StorageLive(_1); +- _1 = as Foo>::bar() -> [return: bb1, unwind unreachable]; - } - - bb1: { -+ _1 = const 123_u32; // scope 2 at $DIR/inline_specialization.rs:15:31: 15:34 - _0 = const (); // scope 0 at $DIR/inline_specialization.rs:+0:11: +2:2 - StorageDead(_1); // scope 0 at $DIR/inline_specialization.rs:+2:1: +2:2 - return; // scope 0 at $DIR/inline_specialization.rs:+2:2: +2:2 ++ _1 = const 123_u32; + _0 = const (); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/inline/inline_specialization.main.Inline.panic-unwind.diff b/tests/mir-opt/inline/inline_specialization.main.Inline.panic-unwind.diff index 9dde9994d1d1f..0f7b1909f8dd2 100644 --- a/tests/mir-opt/inline/inline_specialization.main.Inline.panic-unwind.diff +++ b/tests/mir-opt/inline/inline_specialization.main.Inline.panic-unwind.diff @@ -2,27 +2,24 @@ + // MIR for `main` after Inline fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/inline_specialization.rs:+0:11: +0:11 - let _1: u32; // in scope 0 at $DIR/inline_specialization.rs:+1:9: +1:10 + let mut _0: (); + let _1: u32; scope 1 { - debug x => _1; // in scope 1 at $DIR/inline_specialization.rs:+1:9: +1:10 + debug x => _1; } -+ scope 2 (inlined as Foo>::bar) { // at $DIR/inline_specialization.rs:6:13: 6:38 ++ scope 2 (inlined as Foo>::bar) { + } bb0: { - StorageLive(_1); // scope 0 at $DIR/inline_specialization.rs:+1:9: +1:10 -- _1 = as Foo>::bar() -> bb1; // scope 0 at $DIR/inline_specialization.rs:+1:13: +1:38 -- // mir::Constant -- // + span: $DIR/inline_specialization.rs:6:13: 6:36 -- // + literal: Const { ty: fn() -> u32 { as Foo>::bar}, val: Value() } + StorageLive(_1); +- _1 = as Foo>::bar() -> bb1; - } - - bb1: { -+ _1 = const 123_u32; // scope 2 at $DIR/inline_specialization.rs:15:31: 15:34 - _0 = const (); // scope 0 at $DIR/inline_specialization.rs:+0:11: +2:2 - StorageDead(_1); // scope 0 at $DIR/inline_specialization.rs:+2:1: +2:2 - return; // scope 0 at $DIR/inline_specialization.rs:+2:2: +2:2 ++ _1 = const 123_u32; + _0 = const (); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/inline/inline_trait_method.test.Inline.after.panic-abort.mir b/tests/mir-opt/inline/inline_trait_method.test.Inline.after.panic-abort.mir index a6496bf5f0de6..2441e3f1c2c2f 100644 --- a/tests/mir-opt/inline/inline_trait_method.test.Inline.after.panic-abort.mir +++ b/tests/mir-opt/inline/inline_trait_method.test.Inline.after.panic-abort.mir @@ -1,21 +1,18 @@ // MIR for `test` after Inline fn test(_1: &dyn X) -> u32 { - debug x => _1; // in scope 0 at $DIR/inline_trait_method.rs:+0:9: +0:10 - let mut _0: u32; // return place in scope 0 at $DIR/inline_trait_method.rs:+0:23: +0:26 - let mut _2: &dyn X; // in scope 0 at $DIR/inline_trait_method.rs:+1:5: +1:10 + debug x => _1; + let mut _0: u32; + let mut _2: &dyn X; bb0: { - StorageLive(_2); // scope 0 at $DIR/inline_trait_method.rs:+1:5: +1:10 - _2 = &(*_1); // scope 0 at $DIR/inline_trait_method.rs:+1:5: +1:10 - _0 = ::y(move _2) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/inline_trait_method.rs:+1:5: +1:10 - // mir::Constant - // + span: $DIR/inline_trait_method.rs:10:7: 10:8 - // + literal: Const { ty: for<'a> fn(&'a dyn X) -> u32 {::y}, val: Value() } + StorageLive(_2); + _2 = &(*_1); + _0 = ::y(move _2) -> [return: bb1, unwind unreachable]; } bb1: { - StorageDead(_2); // scope 0 at $DIR/inline_trait_method.rs:+1:9: +1:10 - return; // scope 0 at $DIR/inline_trait_method.rs:+2:2: +2:2 + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/inline/inline_trait_method.test.Inline.after.panic-unwind.mir b/tests/mir-opt/inline/inline_trait_method.test.Inline.after.panic-unwind.mir index a9020a5bbb7c4..9550fdea1920f 100644 --- a/tests/mir-opt/inline/inline_trait_method.test.Inline.after.panic-unwind.mir +++ b/tests/mir-opt/inline/inline_trait_method.test.Inline.after.panic-unwind.mir @@ -1,21 +1,18 @@ // MIR for `test` after Inline fn test(_1: &dyn X) -> u32 { - debug x => _1; // in scope 0 at $DIR/inline_trait_method.rs:+0:9: +0:10 - let mut _0: u32; // return place in scope 0 at $DIR/inline_trait_method.rs:+0:23: +0:26 - let mut _2: &dyn X; // in scope 0 at $DIR/inline_trait_method.rs:+1:5: +1:10 + debug x => _1; + let mut _0: u32; + let mut _2: &dyn X; bb0: { - StorageLive(_2); // scope 0 at $DIR/inline_trait_method.rs:+1:5: +1:10 - _2 = &(*_1); // scope 0 at $DIR/inline_trait_method.rs:+1:5: +1:10 - _0 = ::y(move _2) -> bb1; // scope 0 at $DIR/inline_trait_method.rs:+1:5: +1:10 - // mir::Constant - // + span: $DIR/inline_trait_method.rs:10:7: 10:8 - // + literal: Const { ty: for<'a> fn(&'a dyn X) -> u32 {::y}, val: Value() } + StorageLive(_2); + _2 = &(*_1); + _0 = ::y(move _2) -> bb1; } bb1: { - StorageDead(_2); // scope 0 at $DIR/inline_trait_method.rs:+1:9: +1:10 - return; // scope 0 at $DIR/inline_trait_method.rs:+2:2: +2:2 + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/inline/inline_trait_method_2.test2.Inline.after.panic-abort.mir b/tests/mir-opt/inline/inline_trait_method_2.test2.Inline.after.panic-abort.mir index 8e37c7dca6c01..62c0805548bc7 100644 --- a/tests/mir-opt/inline/inline_trait_method_2.test2.Inline.after.panic-abort.mir +++ b/tests/mir-opt/inline/inline_trait_method_2.test2.Inline.after.panic-abort.mir @@ -1,28 +1,25 @@ // MIR for `test2` after Inline fn test2(_1: &dyn X) -> bool { - debug x => _1; // in scope 0 at $DIR/inline_trait_method_2.rs:+0:10: +0:11 - let mut _0: bool; // return place in scope 0 at $DIR/inline_trait_method_2.rs:+0:24: +0:28 - let mut _2: &dyn X; // in scope 0 at $DIR/inline_trait_method_2.rs:+1:10: +1:11 - let mut _3: &dyn X; // in scope 0 at $DIR/inline_trait_method_2.rs:+1:10: +1:11 - scope 1 (inlined test) { // at $DIR/inline_trait_method_2.rs:6:5: 6:12 - debug x => _2; // in scope 1 at $DIR/inline_trait_method_2.rs:10:9: 10:10 + debug x => _1; + let mut _0: bool; + let mut _2: &dyn X; + let mut _3: &dyn X; + scope 1 (inlined test) { + debug x => _2; } bb0: { - StorageLive(_2); // scope 0 at $DIR/inline_trait_method_2.rs:+1:10: +1:11 - StorageLive(_3); // scope 0 at $DIR/inline_trait_method_2.rs:+1:10: +1:11 - _3 = &(*_1); // scope 0 at $DIR/inline_trait_method_2.rs:+1:10: +1:11 - _2 = move _3 as &dyn X (Pointer(Unsize)); // scope 0 at $DIR/inline_trait_method_2.rs:+1:10: +1:11 - StorageDead(_3); // scope 0 at $DIR/inline_trait_method_2.rs:+1:10: +1:11 - _0 = ::y(_2) -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/inline_trait_method_2.rs:11:5: 11:10 - // mir::Constant - // + span: $DIR/inline_trait_method_2.rs:11:7: 11:8 - // + literal: Const { ty: for<'a> fn(&'a dyn X) -> bool {::y}, val: Value() } + StorageLive(_2); + StorageLive(_3); + _3 = &(*_1); + _2 = move _3 as &dyn X (Pointer(Unsize)); + StorageDead(_3); + _0 = ::y(_2) -> [return: bb1, unwind unreachable]; } bb1: { - StorageDead(_2); // scope 0 at $DIR/inline_trait_method_2.rs:+1:11: +1:12 - return; // scope 0 at $DIR/inline_trait_method_2.rs:+2:2: +2:2 + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/inline/inline_trait_method_2.test2.Inline.after.panic-unwind.mir b/tests/mir-opt/inline/inline_trait_method_2.test2.Inline.after.panic-unwind.mir index a4bbecf3b876e..ffc16bfe6709a 100644 --- a/tests/mir-opt/inline/inline_trait_method_2.test2.Inline.after.panic-unwind.mir +++ b/tests/mir-opt/inline/inline_trait_method_2.test2.Inline.after.panic-unwind.mir @@ -1,28 +1,25 @@ // MIR for `test2` after Inline fn test2(_1: &dyn X) -> bool { - debug x => _1; // in scope 0 at $DIR/inline_trait_method_2.rs:+0:10: +0:11 - let mut _0: bool; // return place in scope 0 at $DIR/inline_trait_method_2.rs:+0:24: +0:28 - let mut _2: &dyn X; // in scope 0 at $DIR/inline_trait_method_2.rs:+1:10: +1:11 - let mut _3: &dyn X; // in scope 0 at $DIR/inline_trait_method_2.rs:+1:10: +1:11 - scope 1 (inlined test) { // at $DIR/inline_trait_method_2.rs:6:5: 6:12 - debug x => _2; // in scope 1 at $DIR/inline_trait_method_2.rs:10:9: 10:10 + debug x => _1; + let mut _0: bool; + let mut _2: &dyn X; + let mut _3: &dyn X; + scope 1 (inlined test) { + debug x => _2; } bb0: { - StorageLive(_2); // scope 0 at $DIR/inline_trait_method_2.rs:+1:10: +1:11 - StorageLive(_3); // scope 0 at $DIR/inline_trait_method_2.rs:+1:10: +1:11 - _3 = &(*_1); // scope 0 at $DIR/inline_trait_method_2.rs:+1:10: +1:11 - _2 = move _3 as &dyn X (Pointer(Unsize)); // scope 0 at $DIR/inline_trait_method_2.rs:+1:10: +1:11 - StorageDead(_3); // scope 0 at $DIR/inline_trait_method_2.rs:+1:10: +1:11 - _0 = ::y(_2) -> bb1; // scope 1 at $DIR/inline_trait_method_2.rs:11:5: 11:10 - // mir::Constant - // + span: $DIR/inline_trait_method_2.rs:11:7: 11:8 - // + literal: Const { ty: for<'a> fn(&'a dyn X) -> bool {::y}, val: Value() } + StorageLive(_2); + StorageLive(_3); + _3 = &(*_1); + _2 = move _3 as &dyn X (Pointer(Unsize)); + StorageDead(_3); + _0 = ::y(_2) -> bb1; } bb1: { - StorageDead(_2); // scope 0 at $DIR/inline_trait_method_2.rs:+1:11: +1:12 - return; // scope 0 at $DIR/inline_trait_method_2.rs:+2:2: +2:2 + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/inline/issue_106141.outer.Inline.panic-abort.diff b/tests/mir-opt/inline/issue_106141.outer.Inline.panic-abort.diff index 4f8c7123aaf82..3d0c10725275d 100644 --- a/tests/mir-opt/inline/issue_106141.outer.Inline.panic-abort.diff +++ b/tests/mir-opt/inline/issue_106141.outer.Inline.panic-abort.diff @@ -2,54 +2,46 @@ + // MIR for `outer` after Inline fn outer() -> usize { - let mut _0: usize; // return place in scope 0 at $DIR/issue_106141.rs:+0:19: +0:24 -+ scope 1 (inlined inner) { // at $DIR/issue_106141.rs:3:5: 3:12 -+ let mut _1: &[bool; 1]; // in scope 1 at $DIR/issue_106141.rs:12:18: 12:25 -+ let mut _2: bool; // in scope 1 at $DIR/issue_106141.rs:14:8: 14:21 -+ let mut _3: bool; // in scope 1 at $DIR/issue_106141.rs:14:8: 14:21 + let mut _0: usize; ++ scope 1 (inlined inner) { ++ let mut _1: &[bool; 1]; ++ let mut _2: bool; ++ let mut _3: bool; + scope 2 { -+ debug buffer => const _; // in scope 2 at $DIR/issue_106141.rs:12:9: 12:15 ++ debug buffer => const _; + scope 3 { -+ debug index => _0; // in scope 3 at $DIR/issue_106141.rs:13:9: 13:14 ++ debug index => _0; + } + } + } bb0: { -- _0 = inner() -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/issue_106141.rs:+1:5: +1:12 -+ StorageLive(_1); // scope 0 at $DIR/issue_106141.rs:+1:5: +1:12 -+ _1 = const _; // scope 1 at $DIR/issue_106141.rs:12:18: 12:25 - // mir::Constant -- // + span: $DIR/issue_106141.rs:3:5: 3:10 -- // + literal: Const { ty: fn() -> usize {inner}, val: Value() } -+ // + span: $DIR/issue_106141.rs:12:18: 12:25 -+ // + literal: Const { ty: &[bool; 1], val: Unevaluated(inner, [], Some(promoted[0])) } -+ _0 = index() -> [return: bb1, unwind unreachable]; // scope 2 at $DIR/issue_106141.rs:13:17: 13:24 -+ // mir::Constant -+ // + span: $DIR/issue_106141.rs:13:17: 13:22 -+ // + literal: Const { ty: fn() -> usize {index}, val: Value() } +- _0 = inner() -> [return: bb1, unwind unreachable]; ++ StorageLive(_1); ++ _1 = const _; ++ _0 = index() -> [return: bb1, unwind unreachable]; } bb1: { -+ StorageLive(_3); // scope 3 at $DIR/issue_106141.rs:14:8: 14:21 -+ _2 = Lt(_0, const 1_usize); // scope 3 at $DIR/issue_106141.rs:14:8: 14:21 -+ assert(move _2, "index out of bounds: the length is {} but the index is {}", const 1_usize, _0) -> [success: bb2, unwind unreachable]; // scope 3 at $DIR/issue_106141.rs:14:8: 14:21 ++ StorageLive(_3); ++ _2 = Lt(_0, const 1_usize); ++ assert(move _2, "index out of bounds: the length is {} but the index is {}", const 1_usize, _0) -> [success: bb2, unwind unreachable]; + } + + bb2: { -+ _3 = (*_1)[_0]; // scope 3 at $DIR/issue_106141.rs:14:8: 14:21 -+ switchInt(move _3) -> [0: bb3, otherwise: bb4]; // scope 3 at $DIR/issue_106141.rs:14:8: 14:21 ++ _3 = (*_1)[_0]; ++ switchInt(move _3) -> [0: bb3, otherwise: bb4]; + } + + bb3: { -+ _0 = const 0_usize; // scope 3 at $DIR/issue_106141.rs:17:9: 17:10 -+ goto -> bb4; // scope 3 at $DIR/issue_106141.rs:14:5: 18:6 ++ _0 = const 0_usize; ++ goto -> bb4; + } + + bb4: { -+ StorageDead(_3); // scope 3 at $DIR/issue_106141.rs:18:5: 18:6 -+ StorageDead(_1); // scope 0 at $DIR/issue_106141.rs:+1:5: +1:12 - return; // scope 0 at $DIR/issue_106141.rs:+2:2: +2:2 ++ StorageDead(_3); ++ StorageDead(_1); + return; } } diff --git a/tests/mir-opt/inline/issue_106141.outer.Inline.panic-unwind.diff b/tests/mir-opt/inline/issue_106141.outer.Inline.panic-unwind.diff index 5fed54f83a788..1e407f07d0969 100644 --- a/tests/mir-opt/inline/issue_106141.outer.Inline.panic-unwind.diff +++ b/tests/mir-opt/inline/issue_106141.outer.Inline.panic-unwind.diff @@ -2,54 +2,46 @@ + // MIR for `outer` after Inline fn outer() -> usize { - let mut _0: usize; // return place in scope 0 at $DIR/issue_106141.rs:+0:19: +0:24 -+ scope 1 (inlined inner) { // at $DIR/issue_106141.rs:3:5: 3:12 -+ let mut _1: &[bool; 1]; // in scope 1 at $DIR/issue_106141.rs:12:18: 12:25 -+ let mut _2: bool; // in scope 1 at $DIR/issue_106141.rs:14:8: 14:21 -+ let mut _3: bool; // in scope 1 at $DIR/issue_106141.rs:14:8: 14:21 + let mut _0: usize; ++ scope 1 (inlined inner) { ++ let mut _1: &[bool; 1]; ++ let mut _2: bool; ++ let mut _3: bool; + scope 2 { -+ debug buffer => const _; // in scope 2 at $DIR/issue_106141.rs:12:9: 12:15 ++ debug buffer => const _; + scope 3 { -+ debug index => _0; // in scope 3 at $DIR/issue_106141.rs:13:9: 13:14 ++ debug index => _0; + } + } + } bb0: { -- _0 = inner() -> bb1; // scope 0 at $DIR/issue_106141.rs:+1:5: +1:12 -+ StorageLive(_1); // scope 0 at $DIR/issue_106141.rs:+1:5: +1:12 -+ _1 = const _; // scope 1 at $DIR/issue_106141.rs:12:18: 12:25 - // mir::Constant -- // + span: $DIR/issue_106141.rs:3:5: 3:10 -- // + literal: Const { ty: fn() -> usize {inner}, val: Value() } -+ // + span: $DIR/issue_106141.rs:12:18: 12:25 -+ // + literal: Const { ty: &[bool; 1], val: Unevaluated(inner, [], Some(promoted[0])) } -+ _0 = index() -> bb1; // scope 2 at $DIR/issue_106141.rs:13:17: 13:24 -+ // mir::Constant -+ // + span: $DIR/issue_106141.rs:13:17: 13:22 -+ // + literal: Const { ty: fn() -> usize {index}, val: Value() } +- _0 = inner() -> bb1; ++ StorageLive(_1); ++ _1 = const _; ++ _0 = index() -> bb1; } bb1: { -+ StorageLive(_3); // scope 3 at $DIR/issue_106141.rs:14:8: 14:21 -+ _2 = Lt(_0, const 1_usize); // scope 3 at $DIR/issue_106141.rs:14:8: 14:21 -+ assert(move _2, "index out of bounds: the length is {} but the index is {}", const 1_usize, _0) -> bb2; // scope 3 at $DIR/issue_106141.rs:14:8: 14:21 ++ StorageLive(_3); ++ _2 = Lt(_0, const 1_usize); ++ assert(move _2, "index out of bounds: the length is {} but the index is {}", const 1_usize, _0) -> bb2; + } + + bb2: { -+ _3 = (*_1)[_0]; // scope 3 at $DIR/issue_106141.rs:14:8: 14:21 -+ switchInt(move _3) -> [0: bb3, otherwise: bb4]; // scope 3 at $DIR/issue_106141.rs:14:8: 14:21 ++ _3 = (*_1)[_0]; ++ switchInt(move _3) -> [0: bb3, otherwise: bb4]; + } + + bb3: { -+ _0 = const 0_usize; // scope 3 at $DIR/issue_106141.rs:17:9: 17:10 -+ goto -> bb4; // scope 3 at $DIR/issue_106141.rs:14:5: 18:6 ++ _0 = const 0_usize; ++ goto -> bb4; + } + + bb4: { -+ StorageDead(_3); // scope 3 at $DIR/issue_106141.rs:18:5: 18:6 -+ StorageDead(_1); // scope 0 at $DIR/issue_106141.rs:+1:5: +1:12 - return; // scope 0 at $DIR/issue_106141.rs:+2:2: +2:2 ++ StorageDead(_3); ++ StorageDead(_1); + return; } } diff --git a/tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.a.Inline.after.mir b/tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.a.Inline.after.mir index 6441a9668de66..7cc65efe07b4b 100644 --- a/tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.a.Inline.after.mir +++ b/tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.a.Inline.after.mir @@ -1,26 +1,26 @@ // MIR for `a` after Inline fn a(_1: &mut [T]) -> &mut [T] { - debug x => _1; // in scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+0:13: +0:14 - let mut _0: &mut [T]; // return place in scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+0:29: +0:37 - let mut _2: &mut [T]; // in scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+1:5: +1:15 - let mut _3: &mut [T]; // in scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+1:5: +1:15 - let mut _4: &mut [T]; // in scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+1:5: +1:15 - scope 1 (inlined <[T] as AsMut<[T]>>::as_mut) { // at $DIR/issue_58867_inline_as_ref_as_mut.rs:3:7: 3:15 - debug self => _4; // in scope 1 at $SRC_DIR/core/src/convert/mod.rs:LL:COL + debug x => _1; + let mut _0: &mut [T]; + let mut _2: &mut [T]; + let mut _3: &mut [T]; + let mut _4: &mut [T]; + scope 1 (inlined <[T] as AsMut<[T]>>::as_mut) { + debug self => _4; } bb0: { - StorageLive(_2); // scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+1:5: +1:15 - StorageLive(_3); // scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+1:5: +1:15 - StorageLive(_4); // scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+1:5: +1:15 - _4 = &mut (*_1); // scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+1:5: +1:15 - _3 = _4; // scope 1 at $SRC_DIR/core/src/convert/mod.rs:LL:COL - _2 = &mut (*_3); // scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+1:5: +1:15 - StorageDead(_4); // scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+1:14: +1:15 - _0 = &mut (*_2); // scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+1:5: +1:15 - StorageDead(_3); // scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+2:1: +2:2 - StorageDead(_2); // scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+2:1: +2:2 - return; // scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+2:2: +2:2 + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + _4 = &mut (*_1); + _3 = _4; + _2 = &mut (*_3); + StorageDead(_4); + _0 = &mut (*_2); + StorageDead(_3); + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.b.Inline.after.mir b/tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.b.Inline.after.mir index 21570a88a6be0..6837da27a96f9 100644 --- a/tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.b.Inline.after.mir +++ b/tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.b.Inline.after.mir @@ -1,30 +1,30 @@ // MIR for `b` after Inline fn b(_1: &mut Box) -> &mut T { - debug x => _1; // in scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+0:13: +0:14 - let mut _0: &mut T; // return place in scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+0:32: +0:38 - let mut _2: &mut T; // in scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+1:5: +1:15 - let mut _3: &mut T; // in scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+1:5: +1:15 - let mut _4: &mut std::boxed::Box; // in scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+1:5: +1:15 - scope 1 (inlined as AsMut>::as_mut) { // at $DIR/issue_58867_inline_as_ref_as_mut.rs:8:7: 8:15 - debug self => _4; // in scope 1 at $SRC_DIR/alloc/src/boxed.rs:LL:COL - let mut _5: std::boxed::Box; // in scope 1 at $SRC_DIR/alloc/src/boxed.rs:LL:COL - let mut _6: *const T; // in scope 1 at $SRC_DIR/alloc/src/boxed.rs:LL:COL + debug x => _1; + let mut _0: &mut T; + let mut _2: &mut T; + let mut _3: &mut T; + let mut _4: &mut std::boxed::Box; + scope 1 (inlined as AsMut>::as_mut) { + debug self => _4; + let mut _5: std::boxed::Box; + let mut _6: *const T; } bb0: { - StorageLive(_2); // scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+1:5: +1:15 - StorageLive(_3); // scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+1:5: +1:15 - StorageLive(_4); // scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+1:5: +1:15 - _4 = &mut (*_1); // scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+1:5: +1:15 - _5 = deref_copy (*_4); // scope 1 at $SRC_DIR/alloc/src/boxed.rs:LL:COL - _6 = (((_5.0: std::ptr::Unique).0: std::ptr::NonNull).0: *const T); // scope 1 at $SRC_DIR/alloc/src/boxed.rs:LL:COL - _3 = &mut (*_6); // scope 1 at $SRC_DIR/alloc/src/boxed.rs:LL:COL - _2 = &mut (*_3); // scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+1:5: +1:15 - StorageDead(_4); // scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+1:14: +1:15 - _0 = &mut (*_2); // scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+1:5: +1:15 - StorageDead(_3); // scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+2:1: +2:2 - StorageDead(_2); // scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+2:1: +2:2 - return; // scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+2:2: +2:2 + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + _4 = &mut (*_1); + _5 = deref_copy (*_4); + _6 = (((_5.0: std::ptr::Unique).0: std::ptr::NonNull).0: *const T); + _3 = &mut (*_6); + _2 = &mut (*_3); + StorageDead(_4); + _0 = &mut (*_2); + StorageDead(_3); + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.c.Inline.after.mir b/tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.c.Inline.after.mir index af830d2494e61..bad7f31ae9b4a 100644 --- a/tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.c.Inline.after.mir +++ b/tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.c.Inline.after.mir @@ -1,22 +1,22 @@ // MIR for `c` after Inline fn c(_1: &[T]) -> &[T] { - debug x => _1; // in scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+0:13: +0:14 - let mut _0: &[T]; // return place in scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+0:25: +0:29 - let _2: &[T]; // in scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+1:5: +1:15 - let mut _3: &[T]; // in scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+1:5: +1:15 - scope 1 (inlined <[T] as AsRef<[T]>>::as_ref) { // at $DIR/issue_58867_inline_as_ref_as_mut.rs:13:7: 13:15 - debug self => _3; // in scope 1 at $SRC_DIR/core/src/convert/mod.rs:LL:COL + debug x => _1; + let mut _0: &[T]; + let _2: &[T]; + let mut _3: &[T]; + scope 1 (inlined <[T] as AsRef<[T]>>::as_ref) { + debug self => _3; } bb0: { - StorageLive(_2); // scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+1:5: +1:15 - StorageLive(_3); // scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+1:5: +1:15 - _3 = &(*_1); // scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+1:5: +1:15 - _2 = _3; // scope 1 at $SRC_DIR/core/src/convert/mod.rs:LL:COL - _0 = &(*_2); // scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+1:5: +1:15 - StorageDead(_3); // scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+1:14: +1:15 - StorageDead(_2); // scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+2:1: +2:2 - return; // scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+2:2: +2:2 + StorageLive(_2); + StorageLive(_3); + _3 = &(*_1); + _2 = _3; + _0 = &(*_2); + StorageDead(_3); + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.d.Inline.after.mir b/tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.d.Inline.after.mir index 4f9342247d70e..d09bfc33ff13a 100644 --- a/tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.d.Inline.after.mir +++ b/tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.d.Inline.after.mir @@ -1,26 +1,26 @@ // MIR for `d` after Inline fn d(_1: &Box) -> &T { - debug x => _1; // in scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+0:13: +0:14 - let mut _0: &T; // return place in scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+0:28: +0:30 - let _2: &T; // in scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+1:5: +1:15 - let mut _3: &std::boxed::Box; // in scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+1:5: +1:15 - scope 1 (inlined as AsRef>::as_ref) { // at $DIR/issue_58867_inline_as_ref_as_mut.rs:18:7: 18:15 - debug self => _3; // in scope 1 at $SRC_DIR/alloc/src/boxed.rs:LL:COL - let mut _4: std::boxed::Box; // in scope 1 at $SRC_DIR/alloc/src/boxed.rs:LL:COL - let mut _5: *const T; // in scope 1 at $SRC_DIR/alloc/src/boxed.rs:LL:COL + debug x => _1; + let mut _0: &T; + let _2: &T; + let mut _3: &std::boxed::Box; + scope 1 (inlined as AsRef>::as_ref) { + debug self => _3; + let mut _4: std::boxed::Box; + let mut _5: *const T; } bb0: { - StorageLive(_2); // scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+1:5: +1:15 - StorageLive(_3); // scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+1:5: +1:15 - _3 = &(*_1); // scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+1:5: +1:15 - _4 = deref_copy (*_3); // scope 1 at $SRC_DIR/alloc/src/boxed.rs:LL:COL - _5 = (((_4.0: std::ptr::Unique).0: std::ptr::NonNull).0: *const T); // scope 1 at $SRC_DIR/alloc/src/boxed.rs:LL:COL - _2 = &(*_5); // scope 1 at $SRC_DIR/alloc/src/boxed.rs:LL:COL - _0 = &(*_2); // scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+1:5: +1:15 - StorageDead(_3); // scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+1:14: +1:15 - StorageDead(_2); // scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+2:1: +2:2 - return; // scope 0 at $DIR/issue_58867_inline_as_ref_as_mut.rs:+2:2: +2:2 + StorageLive(_2); + StorageLive(_3); + _3 = &(*_1); + _4 = deref_copy (*_3); + _5 = (((_4.0: std::ptr::Unique).0: std::ptr::NonNull).0: *const T); + _2 = &(*_5); + _0 = &(*_2); + StorageDead(_3); + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/inline/issue_76997_inline_scopes_parenting.main.Inline.after.mir b/tests/mir-opt/inline/issue_76997_inline_scopes_parenting.main.Inline.after.mir index 1da3c8bb79778..ef91f50403348 100644 --- a/tests/mir-opt/inline/issue_76997_inline_scopes_parenting.main.Inline.after.mir +++ b/tests/mir-opt/inline/issue_76997_inline_scopes_parenting.main.Inline.after.mir @@ -1,45 +1,38 @@ // MIR for `main` after Inline fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/issue_76997_inline_scopes_parenting.rs:+0:11: +0:11 - let _1: [closure@$DIR/issue_76997_inline_scopes_parenting.rs:5:13: 5:16]; // in scope 0 at $DIR/issue_76997_inline_scopes_parenting.rs:+1:9: +1:10 - let mut _2: &[closure@$DIR/issue_76997_inline_scopes_parenting.rs:5:13: 5:16]; // in scope 0 at $DIR/issue_76997_inline_scopes_parenting.rs:+2:5: +2:6 - let mut _3: ((),); // in scope 0 at $DIR/issue_76997_inline_scopes_parenting.rs:+2:5: +2:10 - let mut _4: (); // in scope 0 at $DIR/issue_76997_inline_scopes_parenting.rs:+2:7: +2:9 - let mut _5: (); // in scope 0 at $DIR/issue_76997_inline_scopes_parenting.rs:+2:5: +2:10 + let mut _0: (); + let _1: [closure@$DIR/issue_76997_inline_scopes_parenting.rs:5:13: 5:16]; + let mut _2: &[closure@$DIR/issue_76997_inline_scopes_parenting.rs:5:13: 5:16]; + let mut _3: ((),); + let mut _4: (); + let mut _5: (); scope 1 { - debug f => _1; // in scope 1 at $DIR/issue_76997_inline_scopes_parenting.rs:+1:9: +1:10 - scope 2 (inlined main::{closure#0}) { // at $DIR/issue_76997_inline_scopes_parenting.rs:6:5: 6:10 - debug x => const (); // in scope 2 at $DIR/issue_76997_inline_scopes_parenting.rs:+1:14: +1:15 + debug f => _1; + scope 2 (inlined main::{closure#0}) { + debug x => const (); scope 3 { - debug y => const (); // in scope 3 at $DIR/issue_76997_inline_scopes_parenting.rs:+1:23: +1:24 + debug y => const (); } } } bb0: { - StorageLive(_1); // scope 0 at $DIR/issue_76997_inline_scopes_parenting.rs:+1:9: +1:10 - _1 = [closure@$DIR/issue_76997_inline_scopes_parenting.rs:5:13: 5:16]; // scope 0 at $DIR/issue_76997_inline_scopes_parenting.rs:+1:13: +1:33 - // closure - // + def_id: DefId(0:4 ~ issue_76997_inline_scopes_parenting[5cd2]::main::{closure#0}) - // + substs: [ - // i8, - // extern "rust-call" fn(((),)), - // (), - // ] - StorageLive(_2); // scope 1 at $DIR/issue_76997_inline_scopes_parenting.rs:+2:5: +2:6 - _2 = &_1; // scope 1 at $DIR/issue_76997_inline_scopes_parenting.rs:+2:5: +2:6 - StorageLive(_3); // scope 1 at $DIR/issue_76997_inline_scopes_parenting.rs:+2:5: +2:10 - StorageLive(_4); // scope 1 at $DIR/issue_76997_inline_scopes_parenting.rs:+2:7: +2:9 - _4 = (); // scope 1 at $DIR/issue_76997_inline_scopes_parenting.rs:+2:7: +2:9 - _3 = (move _4,); // scope 1 at $DIR/issue_76997_inline_scopes_parenting.rs:+2:5: +2:10 - StorageLive(_5); // scope 1 at $DIR/issue_76997_inline_scopes_parenting.rs:+2:5: +2:10 - _5 = move (_3.0: ()); // scope 1 at $DIR/issue_76997_inline_scopes_parenting.rs:+2:5: +2:10 - StorageDead(_5); // scope 1 at $DIR/issue_76997_inline_scopes_parenting.rs:+2:5: +2:10 - StorageDead(_4); // scope 1 at $DIR/issue_76997_inline_scopes_parenting.rs:+2:9: +2:10 - StorageDead(_3); // scope 1 at $DIR/issue_76997_inline_scopes_parenting.rs:+2:9: +2:10 - StorageDead(_2); // scope 1 at $DIR/issue_76997_inline_scopes_parenting.rs:+2:9: +2:10 - StorageDead(_1); // scope 0 at $DIR/issue_76997_inline_scopes_parenting.rs:+3:1: +3:2 - return; // scope 0 at $DIR/issue_76997_inline_scopes_parenting.rs:+3:2: +3:2 + StorageLive(_1); + _1 = [closure@$DIR/issue_76997_inline_scopes_parenting.rs:5:13: 5:16]; + StorageLive(_2); + _2 = &_1; + StorageLive(_3); + StorageLive(_4); + _4 = (); + _3 = (move _4,); + StorageLive(_5); + _5 = move (_3.0: ()); + StorageDead(_5); + StorageDead(_4); + StorageDead(_3); + StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/inline/issue_78442.bar.Inline.panic-abort.diff b/tests/mir-opt/inline/issue_78442.bar.Inline.panic-abort.diff index 4d9215ee7e4a3..b86eb5f35c95e 100644 --- a/tests/mir-opt/inline/issue_78442.bar.Inline.panic-abort.diff +++ b/tests/mir-opt/inline/issue_78442.bar.Inline.panic-abort.diff @@ -2,52 +2,46 @@ + // MIR for `bar` after Inline fn bar(_1: P) -> () { - debug _baz => _1; // in scope 0 at $DIR/issue_78442.rs:+2:5: +2:9 - let mut _0: (); // return place in scope 0 at $DIR/issue_78442.rs:+3:3: +3:3 - let _2: (); // in scope 0 at $DIR/issue_78442.rs:+4:5: +4:17 - let mut _3: &fn() {foo}; // in scope 0 at $DIR/issue_78442.rs:+4:5: +4:15 - let _4: fn() {foo}; // in scope 0 at $DIR/issue_78442.rs:+4:5: +4:15 - let mut _5: (); // in scope 0 at $DIR/issue_78442.rs:+4:5: +4:17 -+ scope 1 (inlined >::call - shim(fn() {foo})) { // at $DIR/issue_78442.rs:11:5: 11:17 + debug _baz => _1; + let mut _0: (); + let _2: (); + let mut _3: &fn() {foo}; + let _4: fn() {foo}; + let mut _5: (); ++ scope 1 (inlined >::call - shim(fn() {foo})) { + } bb0: { - StorageLive(_2); // scope 0 at $DIR/issue_78442.rs:+4:5: +4:17 - StorageLive(_3); // scope 0 at $DIR/issue_78442.rs:+4:5: +4:15 - StorageLive(_4); // scope 0 at $DIR/issue_78442.rs:+4:5: +4:15 - _4 = hide_foo() -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/issue_78442.rs:+4:5: +4:15 - // mir::Constant - // + span: $DIR/issue_78442.rs:11:5: 11:13 - // + literal: Const { ty: fn() -> impl Fn() {hide_foo}, val: Value() } + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + _4 = hide_foo() -> [return: bb1, unwind unreachable]; } bb1: { - _3 = &_4; // scope 0 at $DIR/issue_78442.rs:+4:5: +4:15 - StorageLive(_5); // scope 0 at $DIR/issue_78442.rs:+4:5: +4:17 - _5 = (); // scope 0 at $DIR/issue_78442.rs:+4:5: +4:17 -- _2 = >::call(move _3, move _5) -> [return: bb2, unwind unreachable]; // scope 0 at $DIR/issue_78442.rs:+4:5: +4:17 -- // mir::Constant -- // + span: $DIR/issue_78442.rs:11:5: 11:15 -- // + literal: Const { ty: for<'a> extern "rust-call" fn(&'a fn() {foo}, ()) -> >::Output {>::call}, val: Value() } -+ _2 = move (*_3)() -> [return: bb3, unwind unreachable]; // scope 1 at $SRC_DIR/core/src/ops/function.rs:LL:COL + _3 = &_4; + StorageLive(_5); + _5 = (); +- _2 = >::call(move _3, move _5) -> [return: bb2, unwind unreachable]; ++ _2 = move (*_3)() -> [return: bb3, unwind unreachable]; } bb2: { -+ return; // scope 0 at $DIR/issue_78442.rs:+5:2: +5:2 ++ return; + } + + bb3: { - StorageDead(_5); // scope 0 at $DIR/issue_78442.rs:+4:16: +4:17 - StorageDead(_3); // scope 0 at $DIR/issue_78442.rs:+4:16: +4:17 - StorageDead(_4); // scope 0 at $DIR/issue_78442.rs:+4:17: +4:18 - StorageDead(_2); // scope 0 at $DIR/issue_78442.rs:+4:17: +4:18 - _0 = const (); // scope 0 at $DIR/issue_78442.rs:+3:3: +5:2 -- drop(_1) -> [return: bb3, unwind unreachable]; // scope 0 at $DIR/issue_78442.rs:+5:1: +5:2 + StorageDead(_5); + StorageDead(_3); + StorageDead(_4); + StorageDead(_2); + _0 = const (); +- drop(_1) -> [return: bb3, unwind unreachable]; - } - - bb3: { -- return; // scope 0 at $DIR/issue_78442.rs:+5:2: +5:2 -+ drop(_1) -> [return: bb2, unwind unreachable]; // scope 0 at $DIR/issue_78442.rs:+5:1: +5:2 +- return; ++ drop(_1) -> [return: bb2, unwind unreachable]; } } diff --git a/tests/mir-opt/inline/issue_78442.bar.Inline.panic-unwind.diff b/tests/mir-opt/inline/issue_78442.bar.Inline.panic-unwind.diff index dc3fe75559e99..c67babba23e80 100644 --- a/tests/mir-opt/inline/issue_78442.bar.Inline.panic-unwind.diff +++ b/tests/mir-opt/inline/issue_78442.bar.Inline.panic-unwind.diff @@ -2,67 +2,61 @@ + // MIR for `bar` after Inline fn bar(_1: P) -> () { - debug _baz => _1; // in scope 0 at $DIR/issue_78442.rs:+2:5: +2:9 - let mut _0: (); // return place in scope 0 at $DIR/issue_78442.rs:+3:3: +3:3 - let _2: (); // in scope 0 at $DIR/issue_78442.rs:+4:5: +4:17 - let mut _3: &fn() {foo}; // in scope 0 at $DIR/issue_78442.rs:+4:5: +4:15 - let _4: fn() {foo}; // in scope 0 at $DIR/issue_78442.rs:+4:5: +4:15 - let mut _5: (); // in scope 0 at $DIR/issue_78442.rs:+4:5: +4:17 -+ scope 1 (inlined >::call - shim(fn() {foo})) { // at $DIR/issue_78442.rs:11:5: 11:17 + debug _baz => _1; + let mut _0: (); + let _2: (); + let mut _3: &fn() {foo}; + let _4: fn() {foo}; + let mut _5: (); ++ scope 1 (inlined >::call - shim(fn() {foo})) { + } bb0: { - StorageLive(_2); // scope 0 at $DIR/issue_78442.rs:+4:5: +4:17 - StorageLive(_3); // scope 0 at $DIR/issue_78442.rs:+4:5: +4:15 - StorageLive(_4); // scope 0 at $DIR/issue_78442.rs:+4:5: +4:15 -- _4 = hide_foo() -> [return: bb1, unwind: bb4]; // scope 0 at $DIR/issue_78442.rs:+4:5: +4:15 -+ _4 = hide_foo() -> [return: bb1, unwind: bb3]; // scope 0 at $DIR/issue_78442.rs:+4:5: +4:15 - // mir::Constant - // + span: $DIR/issue_78442.rs:11:5: 11:13 - // + literal: Const { ty: fn() -> impl Fn() {hide_foo}, val: Value() } + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); +- _4 = hide_foo() -> [return: bb1, unwind: bb4]; ++ _4 = hide_foo() -> [return: bb1, unwind: bb3]; } bb1: { - _3 = &_4; // scope 0 at $DIR/issue_78442.rs:+4:5: +4:15 - StorageLive(_5); // scope 0 at $DIR/issue_78442.rs:+4:5: +4:17 - _5 = (); // scope 0 at $DIR/issue_78442.rs:+4:5: +4:17 -- _2 = >::call(move _3, move _5) -> [return: bb2, unwind: bb4]; // scope 0 at $DIR/issue_78442.rs:+4:5: +4:17 -- // mir::Constant -- // + span: $DIR/issue_78442.rs:11:5: 11:15 -- // + literal: Const { ty: for<'a> extern "rust-call" fn(&'a fn() {foo}, ()) -> >::Output {>::call}, val: Value() } -+ _2 = move (*_3)() -> [return: bb5, unwind: bb3]; // scope 1 at $SRC_DIR/core/src/ops/function.rs:LL:COL + _3 = &_4; + StorageLive(_5); + _5 = (); +- _2 = >::call(move _3, move _5) -> [return: bb2, unwind: bb4]; ++ _2 = move (*_3)() -> [return: bb5, unwind: bb3]; } bb2: { -- StorageDead(_5); // scope 0 at $DIR/issue_78442.rs:+4:16: +4:17 -- StorageDead(_3); // scope 0 at $DIR/issue_78442.rs:+4:16: +4:17 -- StorageDead(_4); // scope 0 at $DIR/issue_78442.rs:+4:17: +4:18 -- StorageDead(_2); // scope 0 at $DIR/issue_78442.rs:+4:17: +4:18 -- _0 = const (); // scope 0 at $DIR/issue_78442.rs:+3:3: +5:2 -- drop(_1) -> [return: bb3, unwind: bb5]; // scope 0 at $DIR/issue_78442.rs:+5:1: +5:2 -+ return; // scope 0 at $DIR/issue_78442.rs:+5:2: +5:2 +- StorageDead(_5); +- StorageDead(_3); +- StorageDead(_4); +- StorageDead(_2); +- _0 = const (); +- drop(_1) -> [return: bb3, unwind: bb5]; ++ return; } - bb3: { -- return; // scope 0 at $DIR/issue_78442.rs:+5:2: +5:2 +- return; + bb3 (cleanup): { -+ drop(_1) -> [return: bb4, unwind terminate]; // scope 0 at $DIR/issue_78442.rs:+5:1: +5:2 ++ drop(_1) -> [return: bb4, unwind terminate]; } bb4 (cleanup): { -- drop(_1) -> [return: bb5, unwind terminate]; // scope 0 at $DIR/issue_78442.rs:+5:1: +5:2 -+ resume; // scope 0 at $DIR/issue_78442.rs:+0:1: +5:2 +- drop(_1) -> [return: bb5, unwind terminate]; ++ resume; } - bb5 (cleanup): { -- resume; // scope 0 at $DIR/issue_78442.rs:+0:1: +5:2 +- resume; + bb5: { -+ StorageDead(_5); // scope 0 at $DIR/issue_78442.rs:+4:16: +4:17 -+ StorageDead(_3); // scope 0 at $DIR/issue_78442.rs:+4:16: +4:17 -+ StorageDead(_4); // scope 0 at $DIR/issue_78442.rs:+4:17: +4:18 -+ StorageDead(_2); // scope 0 at $DIR/issue_78442.rs:+4:17: +4:18 -+ _0 = const (); // scope 0 at $DIR/issue_78442.rs:+3:3: +5:2 -+ drop(_1) -> [return: bb2, unwind: bb4]; // scope 0 at $DIR/issue_78442.rs:+5:1: +5:2 ++ StorageDead(_5); ++ StorageDead(_3); ++ StorageDead(_4); ++ StorageDead(_2); ++ _0 = const (); ++ drop(_1) -> [return: bb2, unwind: bb4]; } } diff --git a/tests/mir-opt/inline/issue_78442.bar.RevealAll.panic-abort.diff b/tests/mir-opt/inline/issue_78442.bar.RevealAll.panic-abort.diff index dcdb1069605d8..c94dd2556956c 100644 --- a/tests/mir-opt/inline/issue_78442.bar.RevealAll.panic-abort.diff +++ b/tests/mir-opt/inline/issue_78442.bar.RevealAll.panic-abort.diff @@ -2,48 +2,41 @@ + // MIR for `bar` after RevealAll fn bar(_1: P) -> () { - debug _baz => _1; // in scope 0 at $DIR/issue_78442.rs:+2:5: +2:9 - let mut _0: (); // return place in scope 0 at $DIR/issue_78442.rs:+3:3: +3:3 - let _2: (); // in scope 0 at $DIR/issue_78442.rs:+4:5: +4:17 -- let mut _3: &impl Fn(); // in scope 0 at $DIR/issue_78442.rs:+4:5: +4:15 -- let _4: impl Fn(); // in scope 0 at $DIR/issue_78442.rs:+4:5: +4:15 -+ let mut _3: &fn() {foo}; // in scope 0 at $DIR/issue_78442.rs:+4:5: +4:15 -+ let _4: fn() {foo}; // in scope 0 at $DIR/issue_78442.rs:+4:5: +4:15 - let mut _5: (); // in scope 0 at $DIR/issue_78442.rs:+4:5: +4:17 + debug _baz => _1; + let mut _0: (); + let _2: (); +- let mut _3: &impl Fn(); +- let _4: impl Fn(); ++ let mut _3: &fn() {foo}; ++ let _4: fn() {foo}; + let mut _5: (); bb0: { - StorageLive(_2); // scope 0 at $DIR/issue_78442.rs:+4:5: +4:17 - StorageLive(_3); // scope 0 at $DIR/issue_78442.rs:+4:5: +4:15 - StorageLive(_4); // scope 0 at $DIR/issue_78442.rs:+4:5: +4:15 - _4 = hide_foo() -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/issue_78442.rs:+4:5: +4:15 - // mir::Constant - // + span: $DIR/issue_78442.rs:11:5: 11:13 - // + literal: Const { ty: fn() -> impl Fn() {hide_foo}, val: Value() } + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + _4 = hide_foo() -> [return: bb1, unwind unreachable]; } bb1: { - _3 = &_4; // scope 0 at $DIR/issue_78442.rs:+4:5: +4:15 - StorageLive(_5); // scope 0 at $DIR/issue_78442.rs:+4:5: +4:17 - _5 = (); // scope 0 at $DIR/issue_78442.rs:+4:5: +4:17 -- _2 = >::call(move _3, move _5) -> [return: bb2, unwind unreachable]; // scope 0 at $DIR/issue_78442.rs:+4:5: +4:17 -+ _2 = >::call(move _3, move _5) -> [return: bb2, unwind unreachable]; // scope 0 at $DIR/issue_78442.rs:+4:5: +4:17 - // mir::Constant - // + span: $DIR/issue_78442.rs:11:5: 11:15 -- // + literal: Const { ty: for<'a> extern "rust-call" fn(&'a impl Fn(), ()) -> >::Output {>::call}, val: Value() } -+ // + literal: Const { ty: for<'a> extern "rust-call" fn(&'a fn() {foo}, ()) -> >::Output {>::call}, val: Value() } + _3 = &_4; + StorageLive(_5); + _5 = (); +- _2 = >::call(move _3, move _5) -> [return: bb2, unwind unreachable]; ++ _2 = >::call(move _3, move _5) -> [return: bb2, unwind unreachable]; } bb2: { - StorageDead(_5); // scope 0 at $DIR/issue_78442.rs:+4:16: +4:17 - StorageDead(_3); // scope 0 at $DIR/issue_78442.rs:+4:16: +4:17 - StorageDead(_4); // scope 0 at $DIR/issue_78442.rs:+4:17: +4:18 - StorageDead(_2); // scope 0 at $DIR/issue_78442.rs:+4:17: +4:18 - _0 = const (); // scope 0 at $DIR/issue_78442.rs:+3:3: +5:2 - drop(_1) -> [return: bb3, unwind unreachable]; // scope 0 at $DIR/issue_78442.rs:+5:1: +5:2 + StorageDead(_5); + StorageDead(_3); + StorageDead(_4); + StorageDead(_2); + _0 = const (); + drop(_1) -> [return: bb3, unwind unreachable]; } bb3: { - return; // scope 0 at $DIR/issue_78442.rs:+5:2: +5:2 + return; } } diff --git a/tests/mir-opt/inline/issue_78442.bar.RevealAll.panic-unwind.diff b/tests/mir-opt/inline/issue_78442.bar.RevealAll.panic-unwind.diff index 8f56ef2585ce9..7765e491d8971 100644 --- a/tests/mir-opt/inline/issue_78442.bar.RevealAll.panic-unwind.diff +++ b/tests/mir-opt/inline/issue_78442.bar.RevealAll.panic-unwind.diff @@ -2,56 +2,49 @@ + // MIR for `bar` after RevealAll fn bar(_1: P) -> () { - debug _baz => _1; // in scope 0 at $DIR/issue_78442.rs:+2:5: +2:9 - let mut _0: (); // return place in scope 0 at $DIR/issue_78442.rs:+3:3: +3:3 - let _2: (); // in scope 0 at $DIR/issue_78442.rs:+4:5: +4:17 -- let mut _3: &impl Fn(); // in scope 0 at $DIR/issue_78442.rs:+4:5: +4:15 -- let _4: impl Fn(); // in scope 0 at $DIR/issue_78442.rs:+4:5: +4:15 -+ let mut _3: &fn() {foo}; // in scope 0 at $DIR/issue_78442.rs:+4:5: +4:15 -+ let _4: fn() {foo}; // in scope 0 at $DIR/issue_78442.rs:+4:5: +4:15 - let mut _5: (); // in scope 0 at $DIR/issue_78442.rs:+4:5: +4:17 + debug _baz => _1; + let mut _0: (); + let _2: (); +- let mut _3: &impl Fn(); +- let _4: impl Fn(); ++ let mut _3: &fn() {foo}; ++ let _4: fn() {foo}; + let mut _5: (); bb0: { - StorageLive(_2); // scope 0 at $DIR/issue_78442.rs:+4:5: +4:17 - StorageLive(_3); // scope 0 at $DIR/issue_78442.rs:+4:5: +4:15 - StorageLive(_4); // scope 0 at $DIR/issue_78442.rs:+4:5: +4:15 - _4 = hide_foo() -> [return: bb1, unwind: bb4]; // scope 0 at $DIR/issue_78442.rs:+4:5: +4:15 - // mir::Constant - // + span: $DIR/issue_78442.rs:11:5: 11:13 - // + literal: Const { ty: fn() -> impl Fn() {hide_foo}, val: Value() } + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + _4 = hide_foo() -> [return: bb1, unwind: bb4]; } bb1: { - _3 = &_4; // scope 0 at $DIR/issue_78442.rs:+4:5: +4:15 - StorageLive(_5); // scope 0 at $DIR/issue_78442.rs:+4:5: +4:17 - _5 = (); // scope 0 at $DIR/issue_78442.rs:+4:5: +4:17 -- _2 = >::call(move _3, move _5) -> [return: bb2, unwind: bb4]; // scope 0 at $DIR/issue_78442.rs:+4:5: +4:17 -+ _2 = >::call(move _3, move _5) -> [return: bb2, unwind: bb4]; // scope 0 at $DIR/issue_78442.rs:+4:5: +4:17 - // mir::Constant - // + span: $DIR/issue_78442.rs:11:5: 11:15 -- // + literal: Const { ty: for<'a> extern "rust-call" fn(&'a impl Fn(), ()) -> >::Output {>::call}, val: Value() } -+ // + literal: Const { ty: for<'a> extern "rust-call" fn(&'a fn() {foo}, ()) -> >::Output {>::call}, val: Value() } + _3 = &_4; + StorageLive(_5); + _5 = (); +- _2 = >::call(move _3, move _5) -> [return: bb2, unwind: bb4]; ++ _2 = >::call(move _3, move _5) -> [return: bb2, unwind: bb4]; } bb2: { - StorageDead(_5); // scope 0 at $DIR/issue_78442.rs:+4:16: +4:17 - StorageDead(_3); // scope 0 at $DIR/issue_78442.rs:+4:16: +4:17 - StorageDead(_4); // scope 0 at $DIR/issue_78442.rs:+4:17: +4:18 - StorageDead(_2); // scope 0 at $DIR/issue_78442.rs:+4:17: +4:18 - _0 = const (); // scope 0 at $DIR/issue_78442.rs:+3:3: +5:2 - drop(_1) -> [return: bb3, unwind: bb5]; // scope 0 at $DIR/issue_78442.rs:+5:1: +5:2 + StorageDead(_5); + StorageDead(_3); + StorageDead(_4); + StorageDead(_2); + _0 = const (); + drop(_1) -> [return: bb3, unwind: bb5]; } bb3: { - return; // scope 0 at $DIR/issue_78442.rs:+5:2: +5:2 + return; } bb4 (cleanup): { - drop(_1) -> [return: bb5, unwind terminate]; // scope 0 at $DIR/issue_78442.rs:+5:1: +5:2 + drop(_1) -> [return: bb5, unwind terminate]; } bb5 (cleanup): { - resume; // scope 0 at $DIR/issue_78442.rs:+0:1: +5:2 + resume; } } diff --git a/tests/mir-opt/inline/unchecked_shifts.unchecked_shl_unsigned_smaller.Inline.panic-abort.diff b/tests/mir-opt/inline/unchecked_shifts.unchecked_shl_unsigned_smaller.Inline.panic-abort.diff index fa82ff4b122cc..890d9b109fb4d 100644 --- a/tests/mir-opt/inline/unchecked_shifts.unchecked_shl_unsigned_smaller.Inline.panic-abort.diff +++ b/tests/mir-opt/inline/unchecked_shifts.unchecked_shl_unsigned_smaller.Inline.panic-abort.diff @@ -2,55 +2,55 @@ + // MIR for `unchecked_shl_unsigned_smaller` after Inline fn unchecked_shl_unsigned_smaller(_1: u16, _2: u32) -> u16 { - debug a => _1; // in scope 0 at $DIR/unchecked_shifts.rs:+0:46: +0:47 - debug b => _2; // in scope 0 at $DIR/unchecked_shifts.rs:+0:54: +0:55 - let mut _0: u16; // return place in scope 0 at $DIR/unchecked_shifts.rs:+0:65: +0:68 - let mut _3: u16; // in scope 0 at $DIR/unchecked_shifts.rs:+1:5: +1:6 - let mut _4: u32; // in scope 0 at $DIR/unchecked_shifts.rs:+1:21: +1:22 -+ scope 1 (inlined core::num::::unchecked_shl) { // at $DIR/unchecked_shifts.rs:11:7: 11:23 -+ debug self => _3; // in scope 1 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL -+ debug rhs => _4; // in scope 1 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL -+ let mut _5: u16; // in scope 1 at $SRC_DIR/core/src/num/mod.rs:LL:COL + debug a => _1; + debug b => _2; + let mut _0: u16; + let mut _3: u16; + let mut _4: u32; ++ scope 1 (inlined core::num::::unchecked_shl) { ++ debug self => _3; ++ debug rhs => _4; ++ let mut _5: u16; + scope 2 { -+ scope 3 (inlined core::num::::unchecked_shl::conv) { // at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ debug x => _4; // in scope 3 at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ let mut _6: std::option::Option; // in scope 3 at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ let mut _7: std::result::Result; // in scope 3 at $SRC_DIR/core/src/num/mod.rs:LL:COL ++ scope 3 (inlined core::num::::unchecked_shl::conv) { ++ debug x => _4; ++ let mut _6: std::option::Option; ++ let mut _7: std::result::Result; + scope 4 { -+ scope 5 (inlined >::try_into) { // at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ debug self => _4; // in scope 5 at $SRC_DIR/core/src/convert/mod.rs:LL:COL -+ scope 6 (inlined convert::num:: for u16>::try_from) { // at $SRC_DIR/core/src/convert/mod.rs:LL:COL -+ debug u => _4; // in scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ let mut _8: bool; // in scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ let mut _9: u32; // in scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ let mut _10: u16; // in scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL ++ scope 5 (inlined >::try_into) { ++ debug self => _4; ++ scope 6 (inlined convert::num:: for u16>::try_from) { ++ debug u => _4; ++ let mut _8: bool; ++ let mut _9: u32; ++ let mut _10: u16; + } + } -+ scope 7 (inlined Result::::ok) { // at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ debug self => _7; // in scope 7 at $SRC_DIR/core/src/result.rs:LL:COL -+ let mut _11: isize; // in scope 7 at $SRC_DIR/core/src/result.rs:LL:COL -+ let _12: u16; // in scope 7 at $SRC_DIR/core/src/result.rs:LL:COL ++ scope 7 (inlined Result::::ok) { ++ debug self => _7; ++ let mut _11: isize; ++ let _12: u16; + scope 8 { -+ debug x => _12; // in scope 8 at $SRC_DIR/core/src/result.rs:LL:COL ++ debug x => _12; + } + } -+ scope 9 (inlined #[track_caller] Option::::unwrap_unchecked) { // at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ debug self => _6; // in scope 9 at $SRC_DIR/core/src/option.rs:LL:COL -+ let mut _13: &std::option::Option; // in scope 9 at $SRC_DIR/core/src/option.rs:LL:COL -+ let mut _14: isize; // in scope 9 at $SRC_DIR/core/src/option.rs:LL:COL ++ scope 9 (inlined #[track_caller] Option::::unwrap_unchecked) { ++ debug self => _6; ++ let mut _13: &std::option::Option; ++ let mut _14: isize; + scope 10 { -+ debug val => _5; // in scope 10 at $SRC_DIR/core/src/option.rs:LL:COL ++ debug val => _5; + } + scope 11 { -+ scope 13 (inlined unreachable_unchecked) { // at $SRC_DIR/core/src/option.rs:LL:COL ++ scope 13 (inlined unreachable_unchecked) { + scope 14 { -+ scope 15 (inlined unreachable_unchecked::runtime) { // at $SRC_DIR/core/src/intrinsics.rs:LL:COL ++ scope 15 (inlined unreachable_unchecked::runtime) { + } + } + } + } -+ scope 12 (inlined Option::::is_some) { // at $SRC_DIR/core/src/option.rs:LL:COL -+ debug self => _13; // in scope 12 at $SRC_DIR/core/src/option.rs:LL:COL ++ scope 12 (inlined Option::::is_some) { ++ debug self => _13; + } + } + } @@ -59,86 +59,77 @@ + } bb0: { - StorageLive(_3); // scope 0 at $DIR/unchecked_shifts.rs:+1:5: +1:6 - _3 = _1; // scope 0 at $DIR/unchecked_shifts.rs:+1:5: +1:6 - StorageLive(_4); // scope 0 at $DIR/unchecked_shifts.rs:+1:21: +1:22 - _4 = _2; // scope 0 at $DIR/unchecked_shifts.rs:+1:21: +1:22 -- _0 = core::num::::unchecked_shl(move _3, move _4) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/unchecked_shifts.rs:+1:5: +1:23 -- // mir::Constant -- // + span: $DIR/unchecked_shifts.rs:11:7: 11:20 -- // + literal: Const { ty: unsafe fn(u16, u32) -> u16 {core::num::::unchecked_shl}, val: Value() } -+ StorageLive(_5); // scope 2 at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ StorageLive(_6); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ StorageLive(_7); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ StorageLive(_8); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ StorageLive(_9); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ _9 = const 65535_u32; // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ _8 = Gt(_4, move _9); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ StorageDead(_9); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ switchInt(move _8) -> [0: bb3, otherwise: bb2]; // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL + StorageLive(_3); + _3 = _1; + StorageLive(_4); + _4 = _2; +- _0 = core::num::::unchecked_shl(move _3, move _4) -> [return: bb1, unwind unreachable]; ++ StorageLive(_5); ++ StorageLive(_6); ++ StorageLive(_7); ++ StorageLive(_8); ++ StorageLive(_9); ++ _9 = const 65535_u32; ++ _8 = Gt(_4, move _9); ++ StorageDead(_9); ++ switchInt(move _8) -> [0: bb3, otherwise: bb2]; } bb1: { -+ StorageDead(_5); // scope 2 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - StorageDead(_4); // scope 0 at $DIR/unchecked_shifts.rs:+1:22: +1:23 - StorageDead(_3); // scope 0 at $DIR/unchecked_shifts.rs:+1:22: +1:23 - return; // scope 0 at $DIR/unchecked_shifts.rs:+2:2: +2:2 ++ StorageDead(_5); + StorageDead(_4); + StorageDead(_3); + return; + } + + bb2: { -+ _7 = Result::::Err(const TryFromIntError(())); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ // mir::Constant -+ // + span: no-location -+ // + literal: Const { ty: TryFromIntError, val: Value() } -+ goto -> bb4; // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL ++ _7 = Result::::Err(const TryFromIntError(())); ++ goto -> bb4; + } + + bb3: { -+ StorageLive(_10); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ _10 = _4 as u16 (IntToInt); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ _7 = Result::::Ok(move _10); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ StorageDead(_10); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ goto -> bb4; // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL ++ StorageLive(_10); ++ _10 = _4 as u16 (IntToInt); ++ _7 = Result::::Ok(move _10); ++ StorageDead(_10); ++ goto -> bb4; + } + + bb4: { -+ StorageDead(_8); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ StorageLive(_12); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ _11 = discriminant(_7); // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL -+ switchInt(move _11) -> [0: bb7, 1: bb5, otherwise: bb6]; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL ++ StorageDead(_8); ++ StorageLive(_12); ++ _11 = discriminant(_7); ++ switchInt(move _11) -> [0: bb7, 1: bb5, otherwise: bb6]; + } + + bb5: { -+ _6 = Option::::None; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL -+ goto -> bb8; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL ++ _6 = Option::::None; ++ goto -> bb8; + } + + bb6: { -+ unreachable; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL ++ unreachable; + } + + bb7: { -+ _12 = move ((_7 as Ok).0: u16); // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL -+ _6 = Option::::Some(move _12); // scope 8 at $SRC_DIR/core/src/result.rs:LL:COL -+ goto -> bb8; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL ++ _12 = move ((_7 as Ok).0: u16); ++ _6 = Option::::Some(move _12); ++ goto -> bb8; + } + + bb8: { -+ StorageDead(_12); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ StorageDead(_7); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ StorageLive(_13); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ _14 = discriminant(_6); // scope 9 at $SRC_DIR/core/src/option.rs:LL:COL -+ switchInt(move _14) -> [1: bb9, otherwise: bb6]; // scope 9 at $SRC_DIR/core/src/option.rs:LL:COL ++ StorageDead(_12); ++ StorageDead(_7); ++ StorageLive(_13); ++ _14 = discriminant(_6); ++ switchInt(move _14) -> [1: bb9, otherwise: bb6]; + } + + bb9: { -+ _5 = move ((_6 as Some).0: u16); // scope 9 at $SRC_DIR/core/src/option.rs:LL:COL -+ StorageDead(_13); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ StorageDead(_6); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ _0 = unchecked_shl::(_3, move _5) -> [return: bb1, unwind unreachable]; // scope 2 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL -+ // mir::Constant -+ // + span: $SRC_DIR/core/src/num/uint_macros.rs:LL:COL -+ // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(u16, u16) -> u16 {unchecked_shl::}, val: Value() } ++ _5 = move ((_6 as Some).0: u16); ++ StorageDead(_13); ++ StorageDead(_6); ++ _0 = unchecked_shl::(_3, move _5) -> [return: bb1, unwind unreachable]; } } diff --git a/tests/mir-opt/inline/unchecked_shifts.unchecked_shl_unsigned_smaller.Inline.panic-unwind.diff b/tests/mir-opt/inline/unchecked_shifts.unchecked_shl_unsigned_smaller.Inline.panic-unwind.diff index e82e3f1881153..118e601b136c6 100644 --- a/tests/mir-opt/inline/unchecked_shifts.unchecked_shl_unsigned_smaller.Inline.panic-unwind.diff +++ b/tests/mir-opt/inline/unchecked_shifts.unchecked_shl_unsigned_smaller.Inline.panic-unwind.diff @@ -2,55 +2,55 @@ + // MIR for `unchecked_shl_unsigned_smaller` after Inline fn unchecked_shl_unsigned_smaller(_1: u16, _2: u32) -> u16 { - debug a => _1; // in scope 0 at $DIR/unchecked_shifts.rs:+0:46: +0:47 - debug b => _2; // in scope 0 at $DIR/unchecked_shifts.rs:+0:54: +0:55 - let mut _0: u16; // return place in scope 0 at $DIR/unchecked_shifts.rs:+0:65: +0:68 - let mut _3: u16; // in scope 0 at $DIR/unchecked_shifts.rs:+1:5: +1:6 - let mut _4: u32; // in scope 0 at $DIR/unchecked_shifts.rs:+1:21: +1:22 -+ scope 1 (inlined core::num::::unchecked_shl) { // at $DIR/unchecked_shifts.rs:11:7: 11:23 -+ debug self => _3; // in scope 1 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL -+ debug rhs => _4; // in scope 1 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL -+ let mut _5: u16; // in scope 1 at $SRC_DIR/core/src/num/mod.rs:LL:COL + debug a => _1; + debug b => _2; + let mut _0: u16; + let mut _3: u16; + let mut _4: u32; ++ scope 1 (inlined core::num::::unchecked_shl) { ++ debug self => _3; ++ debug rhs => _4; ++ let mut _5: u16; + scope 2 { -+ scope 3 (inlined core::num::::unchecked_shl::conv) { // at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ debug x => _4; // in scope 3 at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ let mut _6: std::option::Option; // in scope 3 at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ let mut _7: std::result::Result; // in scope 3 at $SRC_DIR/core/src/num/mod.rs:LL:COL ++ scope 3 (inlined core::num::::unchecked_shl::conv) { ++ debug x => _4; ++ let mut _6: std::option::Option; ++ let mut _7: std::result::Result; + scope 4 { -+ scope 5 (inlined >::try_into) { // at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ debug self => _4; // in scope 5 at $SRC_DIR/core/src/convert/mod.rs:LL:COL -+ scope 6 (inlined convert::num:: for u16>::try_from) { // at $SRC_DIR/core/src/convert/mod.rs:LL:COL -+ debug u => _4; // in scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ let mut _8: bool; // in scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ let mut _9: u32; // in scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ let mut _10: u16; // in scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL ++ scope 5 (inlined >::try_into) { ++ debug self => _4; ++ scope 6 (inlined convert::num:: for u16>::try_from) { ++ debug u => _4; ++ let mut _8: bool; ++ let mut _9: u32; ++ let mut _10: u16; + } + } -+ scope 7 (inlined Result::::ok) { // at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ debug self => _7; // in scope 7 at $SRC_DIR/core/src/result.rs:LL:COL -+ let mut _11: isize; // in scope 7 at $SRC_DIR/core/src/result.rs:LL:COL -+ let _12: u16; // in scope 7 at $SRC_DIR/core/src/result.rs:LL:COL ++ scope 7 (inlined Result::::ok) { ++ debug self => _7; ++ let mut _11: isize; ++ let _12: u16; + scope 8 { -+ debug x => _12; // in scope 8 at $SRC_DIR/core/src/result.rs:LL:COL ++ debug x => _12; + } + } -+ scope 9 (inlined #[track_caller] Option::::unwrap_unchecked) { // at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ debug self => _6; // in scope 9 at $SRC_DIR/core/src/option.rs:LL:COL -+ let mut _13: &std::option::Option; // in scope 9 at $SRC_DIR/core/src/option.rs:LL:COL -+ let mut _14: isize; // in scope 9 at $SRC_DIR/core/src/option.rs:LL:COL ++ scope 9 (inlined #[track_caller] Option::::unwrap_unchecked) { ++ debug self => _6; ++ let mut _13: &std::option::Option; ++ let mut _14: isize; + scope 10 { -+ debug val => _5; // in scope 10 at $SRC_DIR/core/src/option.rs:LL:COL ++ debug val => _5; + } + scope 11 { -+ scope 13 (inlined unreachable_unchecked) { // at $SRC_DIR/core/src/option.rs:LL:COL ++ scope 13 (inlined unreachable_unchecked) { + scope 14 { -+ scope 15 (inlined unreachable_unchecked::runtime) { // at $SRC_DIR/core/src/intrinsics.rs:LL:COL ++ scope 15 (inlined unreachable_unchecked::runtime) { + } + } + } + } -+ scope 12 (inlined Option::::is_some) { // at $SRC_DIR/core/src/option.rs:LL:COL -+ debug self => _13; // in scope 12 at $SRC_DIR/core/src/option.rs:LL:COL ++ scope 12 (inlined Option::::is_some) { ++ debug self => _13; + } + } + } @@ -59,86 +59,77 @@ + } bb0: { - StorageLive(_3); // scope 0 at $DIR/unchecked_shifts.rs:+1:5: +1:6 - _3 = _1; // scope 0 at $DIR/unchecked_shifts.rs:+1:5: +1:6 - StorageLive(_4); // scope 0 at $DIR/unchecked_shifts.rs:+1:21: +1:22 - _4 = _2; // scope 0 at $DIR/unchecked_shifts.rs:+1:21: +1:22 -- _0 = core::num::::unchecked_shl(move _3, move _4) -> bb1; // scope 0 at $DIR/unchecked_shifts.rs:+1:5: +1:23 -- // mir::Constant -- // + span: $DIR/unchecked_shifts.rs:11:7: 11:20 -- // + literal: Const { ty: unsafe fn(u16, u32) -> u16 {core::num::::unchecked_shl}, val: Value() } -+ StorageLive(_5); // scope 2 at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ StorageLive(_6); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ StorageLive(_7); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ StorageLive(_8); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ StorageLive(_9); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ _9 = const 65535_u32; // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ _8 = Gt(_4, move _9); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ StorageDead(_9); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ switchInt(move _8) -> [0: bb3, otherwise: bb2]; // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL + StorageLive(_3); + _3 = _1; + StorageLive(_4); + _4 = _2; +- _0 = core::num::::unchecked_shl(move _3, move _4) -> bb1; ++ StorageLive(_5); ++ StorageLive(_6); ++ StorageLive(_7); ++ StorageLive(_8); ++ StorageLive(_9); ++ _9 = const 65535_u32; ++ _8 = Gt(_4, move _9); ++ StorageDead(_9); ++ switchInt(move _8) -> [0: bb3, otherwise: bb2]; } bb1: { -+ StorageDead(_5); // scope 2 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - StorageDead(_4); // scope 0 at $DIR/unchecked_shifts.rs:+1:22: +1:23 - StorageDead(_3); // scope 0 at $DIR/unchecked_shifts.rs:+1:22: +1:23 - return; // scope 0 at $DIR/unchecked_shifts.rs:+2:2: +2:2 ++ StorageDead(_5); + StorageDead(_4); + StorageDead(_3); + return; + } + + bb2: { -+ _7 = Result::::Err(const TryFromIntError(())); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ // mir::Constant -+ // + span: no-location -+ // + literal: Const { ty: TryFromIntError, val: Value() } -+ goto -> bb4; // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL ++ _7 = Result::::Err(const TryFromIntError(())); ++ goto -> bb4; + } + + bb3: { -+ StorageLive(_10); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ _10 = _4 as u16 (IntToInt); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ _7 = Result::::Ok(move _10); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ StorageDead(_10); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ goto -> bb4; // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL ++ StorageLive(_10); ++ _10 = _4 as u16 (IntToInt); ++ _7 = Result::::Ok(move _10); ++ StorageDead(_10); ++ goto -> bb4; + } + + bb4: { -+ StorageDead(_8); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ StorageLive(_12); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ _11 = discriminant(_7); // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL -+ switchInt(move _11) -> [0: bb7, 1: bb5, otherwise: bb6]; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL ++ StorageDead(_8); ++ StorageLive(_12); ++ _11 = discriminant(_7); ++ switchInt(move _11) -> [0: bb7, 1: bb5, otherwise: bb6]; + } + + bb5: { -+ _6 = Option::::None; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL -+ goto -> bb8; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL ++ _6 = Option::::None; ++ goto -> bb8; + } + + bb6: { -+ unreachable; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL ++ unreachable; + } + + bb7: { -+ _12 = move ((_7 as Ok).0: u16); // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL -+ _6 = Option::::Some(move _12); // scope 8 at $SRC_DIR/core/src/result.rs:LL:COL -+ goto -> bb8; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL ++ _12 = move ((_7 as Ok).0: u16); ++ _6 = Option::::Some(move _12); ++ goto -> bb8; + } + + bb8: { -+ StorageDead(_12); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ StorageDead(_7); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ StorageLive(_13); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ _14 = discriminant(_6); // scope 9 at $SRC_DIR/core/src/option.rs:LL:COL -+ switchInt(move _14) -> [1: bb9, otherwise: bb6]; // scope 9 at $SRC_DIR/core/src/option.rs:LL:COL ++ StorageDead(_12); ++ StorageDead(_7); ++ StorageLive(_13); ++ _14 = discriminant(_6); ++ switchInt(move _14) -> [1: bb9, otherwise: bb6]; + } + + bb9: { -+ _5 = move ((_6 as Some).0: u16); // scope 9 at $SRC_DIR/core/src/option.rs:LL:COL -+ StorageDead(_13); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ StorageDead(_6); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ _0 = unchecked_shl::(_3, move _5) -> [return: bb1, unwind unreachable]; // scope 2 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL -+ // mir::Constant -+ // + span: $SRC_DIR/core/src/num/uint_macros.rs:LL:COL -+ // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(u16, u16) -> u16 {unchecked_shl::}, val: Value() } ++ _5 = move ((_6 as Some).0: u16); ++ StorageDead(_13); ++ StorageDead(_6); ++ _0 = unchecked_shl::(_3, move _5) -> [return: bb1, unwind unreachable]; } } diff --git a/tests/mir-opt/inline/unchecked_shifts.unchecked_shl_unsigned_smaller.PreCodegen.after.panic-abort.mir b/tests/mir-opt/inline/unchecked_shifts.unchecked_shl_unsigned_smaller.PreCodegen.after.panic-abort.mir index 8fa4fdaa49aed..0d692251051e7 100644 --- a/tests/mir-opt/inline/unchecked_shifts.unchecked_shl_unsigned_smaller.PreCodegen.after.panic-abort.mir +++ b/tests/mir-opt/inline/unchecked_shifts.unchecked_shl_unsigned_smaller.PreCodegen.after.panic-abort.mir @@ -1,53 +1,53 @@ // MIR for `unchecked_shl_unsigned_smaller` after PreCodegen fn unchecked_shl_unsigned_smaller(_1: u16, _2: u32) -> u16 { - debug a => _1; // in scope 0 at $DIR/unchecked_shifts.rs:+0:46: +0:47 - debug b => _2; // in scope 0 at $DIR/unchecked_shifts.rs:+0:54: +0:55 - let mut _0: u16; // return place in scope 0 at $DIR/unchecked_shifts.rs:+0:65: +0:68 - scope 1 (inlined core::num::::unchecked_shl) { // at $DIR/unchecked_shifts.rs:11:7: 11:23 - debug self => _1; // in scope 1 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - debug rhs => _2; // in scope 1 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - let mut _11: u16; // in scope 1 at $SRC_DIR/core/src/num/mod.rs:LL:COL + debug a => _1; + debug b => _2; + let mut _0: u16; + scope 1 (inlined core::num::::unchecked_shl) { + debug self => _1; + debug rhs => _2; + let mut _11: u16; scope 2 { - scope 3 (inlined core::num::::unchecked_shl::conv) { // at $SRC_DIR/core/src/num/mod.rs:LL:COL - debug x => _2; // in scope 3 at $SRC_DIR/core/src/num/mod.rs:LL:COL - let mut _6: std::result::Result; // in scope 3 at $SRC_DIR/core/src/num/mod.rs:LL:COL - let mut _9: std::option::Option; // in scope 3 at $SRC_DIR/core/src/num/mod.rs:LL:COL + scope 3 (inlined core::num::::unchecked_shl::conv) { + debug x => _2; + let mut _6: std::result::Result; + let mut _9: std::option::Option; scope 4 { - scope 5 (inlined >::try_into) { // at $SRC_DIR/core/src/num/mod.rs:LL:COL - debug self => _2; // in scope 5 at $SRC_DIR/core/src/convert/mod.rs:LL:COL - scope 6 (inlined convert::num:: for u16>::try_from) { // at $SRC_DIR/core/src/convert/mod.rs:LL:COL - debug u => _2; // in scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - let mut _3: u32; // in scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - let mut _4: bool; // in scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - let mut _5: u16; // in scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL + scope 5 (inlined >::try_into) { + debug self => _2; + scope 6 (inlined convert::num:: for u16>::try_from) { + debug u => _2; + let mut _3: u32; + let mut _4: bool; + let mut _5: u16; } } - scope 7 (inlined Result::::ok) { // at $SRC_DIR/core/src/num/mod.rs:LL:COL - debug self => _6; // in scope 7 at $SRC_DIR/core/src/result.rs:LL:COL - let mut _7: isize; // in scope 7 at $SRC_DIR/core/src/result.rs:LL:COL - let _8: u16; // in scope 7 at $SRC_DIR/core/src/result.rs:LL:COL + scope 7 (inlined Result::::ok) { + debug self => _6; + let mut _7: isize; + let _8: u16; scope 8 { - debug x => _8; // in scope 8 at $SRC_DIR/core/src/result.rs:LL:COL + debug x => _8; } } - scope 9 (inlined #[track_caller] Option::::unwrap_unchecked) { // at $SRC_DIR/core/src/num/mod.rs:LL:COL - debug self => _9; // in scope 9 at $SRC_DIR/core/src/option.rs:LL:COL - let mut _10: isize; // in scope 9 at $SRC_DIR/core/src/option.rs:LL:COL - let mut _12: &std::option::Option; // in scope 9 at $SRC_DIR/core/src/option.rs:LL:COL + scope 9 (inlined #[track_caller] Option::::unwrap_unchecked) { + debug self => _9; + let mut _10: isize; + let mut _12: &std::option::Option; scope 10 { - debug val => _11; // in scope 10 at $SRC_DIR/core/src/option.rs:LL:COL + debug val => _11; } scope 11 { - scope 13 (inlined unreachable_unchecked) { // at $SRC_DIR/core/src/option.rs:LL:COL + scope 13 (inlined unreachable_unchecked) { scope 14 { - scope 15 (inlined unreachable_unchecked::runtime) { // at $SRC_DIR/core/src/intrinsics.rs:LL:COL + scope 15 (inlined unreachable_unchecked::runtime) { } } } } - scope 12 (inlined Option::::is_some) { // at $SRC_DIR/core/src/option.rs:LL:COL - debug self => _12; // in scope 12 at $SRC_DIR/core/src/option.rs:LL:COL + scope 12 (inlined Option::::is_some) { + debug self => _12; } } } @@ -56,75 +56,69 @@ fn unchecked_shl_unsigned_smaller(_1: u16, _2: u32) -> u16 { } bb0: { - StorageLive(_11); // scope 2 at $SRC_DIR/core/src/num/mod.rs:LL:COL - StorageLive(_9); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL - StorageLive(_6); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL - StorageLive(_4); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - StorageLive(_3); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - _3 = const 65535_u32; // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - _4 = Gt(_2, move _3); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - StorageDead(_3); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - switchInt(move _4) -> [0: bb1, otherwise: bb2]; // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL + StorageLive(_11); + StorageLive(_9); + StorageLive(_6); + StorageLive(_4); + StorageLive(_3); + _3 = const 65535_u32; + _4 = Gt(_2, move _3); + StorageDead(_3); + switchInt(move _4) -> [0: bb1, otherwise: bb2]; } bb1: { - StorageLive(_5); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - _5 = _2 as u16 (IntToInt); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - _6 = Result::::Ok(move _5); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - StorageDead(_5); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - goto -> bb3; // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL + StorageLive(_5); + _5 = _2 as u16 (IntToInt); + _6 = Result::::Ok(move _5); + StorageDead(_5); + goto -> bb3; } bb2: { - _6 = Result::::Err(const TryFromIntError(())); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - // mir::Constant - // + span: no-location - // + literal: Const { ty: TryFromIntError, val: Value() } - goto -> bb3; // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL + _6 = Result::::Err(const TryFromIntError(())); + goto -> bb3; } bb3: { - StorageDead(_4); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - StorageLive(_8); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL - _7 = discriminant(_6); // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL - switchInt(move _7) -> [0: bb4, 1: bb5, otherwise: bb9]; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL + StorageDead(_4); + StorageLive(_8); + _7 = discriminant(_6); + switchInt(move _7) -> [0: bb4, 1: bb5, otherwise: bb9]; } bb4: { - _8 = move ((_6 as Ok).0: u16); // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL - _9 = Option::::Some(move _8); // scope 8 at $SRC_DIR/core/src/result.rs:LL:COL - goto -> bb6; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL + _8 = move ((_6 as Ok).0: u16); + _9 = Option::::Some(move _8); + goto -> bb6; } bb5: { - _9 = Option::::None; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL - goto -> bb6; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL + _9 = Option::::None; + goto -> bb6; } bb6: { - StorageDead(_8); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL - StorageDead(_6); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL - StorageLive(_12); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL - _10 = discriminant(_9); // scope 9 at $SRC_DIR/core/src/option.rs:LL:COL - switchInt(move _10) -> [1: bb7, otherwise: bb9]; // scope 9 at $SRC_DIR/core/src/option.rs:LL:COL + StorageDead(_8); + StorageDead(_6); + StorageLive(_12); + _10 = discriminant(_9); + switchInt(move _10) -> [1: bb7, otherwise: bb9]; } bb7: { - _11 = move ((_9 as Some).0: u16); // scope 9 at $SRC_DIR/core/src/option.rs:LL:COL - StorageDead(_12); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL - StorageDead(_9); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL - _0 = unchecked_shl::(_1, move _11) -> [return: bb8, unwind unreachable]; // scope 2 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(u16, u16) -> u16 {unchecked_shl::}, val: Value() } + _11 = move ((_9 as Some).0: u16); + StorageDead(_12); + StorageDead(_9); + _0 = unchecked_shl::(_1, move _11) -> [return: bb8, unwind unreachable]; } bb8: { - StorageDead(_11); // scope 2 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - return; // scope 0 at $DIR/unchecked_shifts.rs:+2:2: +2:2 + StorageDead(_11); + return; } bb9: { - unreachable; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL + unreachable; } } diff --git a/tests/mir-opt/inline/unchecked_shifts.unchecked_shl_unsigned_smaller.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/inline/unchecked_shifts.unchecked_shl_unsigned_smaller.PreCodegen.after.panic-unwind.mir index 8fa4fdaa49aed..0d692251051e7 100644 --- a/tests/mir-opt/inline/unchecked_shifts.unchecked_shl_unsigned_smaller.PreCodegen.after.panic-unwind.mir +++ b/tests/mir-opt/inline/unchecked_shifts.unchecked_shl_unsigned_smaller.PreCodegen.after.panic-unwind.mir @@ -1,53 +1,53 @@ // MIR for `unchecked_shl_unsigned_smaller` after PreCodegen fn unchecked_shl_unsigned_smaller(_1: u16, _2: u32) -> u16 { - debug a => _1; // in scope 0 at $DIR/unchecked_shifts.rs:+0:46: +0:47 - debug b => _2; // in scope 0 at $DIR/unchecked_shifts.rs:+0:54: +0:55 - let mut _0: u16; // return place in scope 0 at $DIR/unchecked_shifts.rs:+0:65: +0:68 - scope 1 (inlined core::num::::unchecked_shl) { // at $DIR/unchecked_shifts.rs:11:7: 11:23 - debug self => _1; // in scope 1 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - debug rhs => _2; // in scope 1 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - let mut _11: u16; // in scope 1 at $SRC_DIR/core/src/num/mod.rs:LL:COL + debug a => _1; + debug b => _2; + let mut _0: u16; + scope 1 (inlined core::num::::unchecked_shl) { + debug self => _1; + debug rhs => _2; + let mut _11: u16; scope 2 { - scope 3 (inlined core::num::::unchecked_shl::conv) { // at $SRC_DIR/core/src/num/mod.rs:LL:COL - debug x => _2; // in scope 3 at $SRC_DIR/core/src/num/mod.rs:LL:COL - let mut _6: std::result::Result; // in scope 3 at $SRC_DIR/core/src/num/mod.rs:LL:COL - let mut _9: std::option::Option; // in scope 3 at $SRC_DIR/core/src/num/mod.rs:LL:COL + scope 3 (inlined core::num::::unchecked_shl::conv) { + debug x => _2; + let mut _6: std::result::Result; + let mut _9: std::option::Option; scope 4 { - scope 5 (inlined >::try_into) { // at $SRC_DIR/core/src/num/mod.rs:LL:COL - debug self => _2; // in scope 5 at $SRC_DIR/core/src/convert/mod.rs:LL:COL - scope 6 (inlined convert::num:: for u16>::try_from) { // at $SRC_DIR/core/src/convert/mod.rs:LL:COL - debug u => _2; // in scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - let mut _3: u32; // in scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - let mut _4: bool; // in scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - let mut _5: u16; // in scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL + scope 5 (inlined >::try_into) { + debug self => _2; + scope 6 (inlined convert::num:: for u16>::try_from) { + debug u => _2; + let mut _3: u32; + let mut _4: bool; + let mut _5: u16; } } - scope 7 (inlined Result::::ok) { // at $SRC_DIR/core/src/num/mod.rs:LL:COL - debug self => _6; // in scope 7 at $SRC_DIR/core/src/result.rs:LL:COL - let mut _7: isize; // in scope 7 at $SRC_DIR/core/src/result.rs:LL:COL - let _8: u16; // in scope 7 at $SRC_DIR/core/src/result.rs:LL:COL + scope 7 (inlined Result::::ok) { + debug self => _6; + let mut _7: isize; + let _8: u16; scope 8 { - debug x => _8; // in scope 8 at $SRC_DIR/core/src/result.rs:LL:COL + debug x => _8; } } - scope 9 (inlined #[track_caller] Option::::unwrap_unchecked) { // at $SRC_DIR/core/src/num/mod.rs:LL:COL - debug self => _9; // in scope 9 at $SRC_DIR/core/src/option.rs:LL:COL - let mut _10: isize; // in scope 9 at $SRC_DIR/core/src/option.rs:LL:COL - let mut _12: &std::option::Option; // in scope 9 at $SRC_DIR/core/src/option.rs:LL:COL + scope 9 (inlined #[track_caller] Option::::unwrap_unchecked) { + debug self => _9; + let mut _10: isize; + let mut _12: &std::option::Option; scope 10 { - debug val => _11; // in scope 10 at $SRC_DIR/core/src/option.rs:LL:COL + debug val => _11; } scope 11 { - scope 13 (inlined unreachable_unchecked) { // at $SRC_DIR/core/src/option.rs:LL:COL + scope 13 (inlined unreachable_unchecked) { scope 14 { - scope 15 (inlined unreachable_unchecked::runtime) { // at $SRC_DIR/core/src/intrinsics.rs:LL:COL + scope 15 (inlined unreachable_unchecked::runtime) { } } } } - scope 12 (inlined Option::::is_some) { // at $SRC_DIR/core/src/option.rs:LL:COL - debug self => _12; // in scope 12 at $SRC_DIR/core/src/option.rs:LL:COL + scope 12 (inlined Option::::is_some) { + debug self => _12; } } } @@ -56,75 +56,69 @@ fn unchecked_shl_unsigned_smaller(_1: u16, _2: u32) -> u16 { } bb0: { - StorageLive(_11); // scope 2 at $SRC_DIR/core/src/num/mod.rs:LL:COL - StorageLive(_9); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL - StorageLive(_6); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL - StorageLive(_4); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - StorageLive(_3); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - _3 = const 65535_u32; // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - _4 = Gt(_2, move _3); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - StorageDead(_3); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - switchInt(move _4) -> [0: bb1, otherwise: bb2]; // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL + StorageLive(_11); + StorageLive(_9); + StorageLive(_6); + StorageLive(_4); + StorageLive(_3); + _3 = const 65535_u32; + _4 = Gt(_2, move _3); + StorageDead(_3); + switchInt(move _4) -> [0: bb1, otherwise: bb2]; } bb1: { - StorageLive(_5); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - _5 = _2 as u16 (IntToInt); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - _6 = Result::::Ok(move _5); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - StorageDead(_5); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - goto -> bb3; // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL + StorageLive(_5); + _5 = _2 as u16 (IntToInt); + _6 = Result::::Ok(move _5); + StorageDead(_5); + goto -> bb3; } bb2: { - _6 = Result::::Err(const TryFromIntError(())); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - // mir::Constant - // + span: no-location - // + literal: Const { ty: TryFromIntError, val: Value() } - goto -> bb3; // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL + _6 = Result::::Err(const TryFromIntError(())); + goto -> bb3; } bb3: { - StorageDead(_4); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - StorageLive(_8); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL - _7 = discriminant(_6); // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL - switchInt(move _7) -> [0: bb4, 1: bb5, otherwise: bb9]; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL + StorageDead(_4); + StorageLive(_8); + _7 = discriminant(_6); + switchInt(move _7) -> [0: bb4, 1: bb5, otherwise: bb9]; } bb4: { - _8 = move ((_6 as Ok).0: u16); // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL - _9 = Option::::Some(move _8); // scope 8 at $SRC_DIR/core/src/result.rs:LL:COL - goto -> bb6; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL + _8 = move ((_6 as Ok).0: u16); + _9 = Option::::Some(move _8); + goto -> bb6; } bb5: { - _9 = Option::::None; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL - goto -> bb6; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL + _9 = Option::::None; + goto -> bb6; } bb6: { - StorageDead(_8); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL - StorageDead(_6); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL - StorageLive(_12); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL - _10 = discriminant(_9); // scope 9 at $SRC_DIR/core/src/option.rs:LL:COL - switchInt(move _10) -> [1: bb7, otherwise: bb9]; // scope 9 at $SRC_DIR/core/src/option.rs:LL:COL + StorageDead(_8); + StorageDead(_6); + StorageLive(_12); + _10 = discriminant(_9); + switchInt(move _10) -> [1: bb7, otherwise: bb9]; } bb7: { - _11 = move ((_9 as Some).0: u16); // scope 9 at $SRC_DIR/core/src/option.rs:LL:COL - StorageDead(_12); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL - StorageDead(_9); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL - _0 = unchecked_shl::(_1, move _11) -> [return: bb8, unwind unreachable]; // scope 2 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(u16, u16) -> u16 {unchecked_shl::}, val: Value() } + _11 = move ((_9 as Some).0: u16); + StorageDead(_12); + StorageDead(_9); + _0 = unchecked_shl::(_1, move _11) -> [return: bb8, unwind unreachable]; } bb8: { - StorageDead(_11); // scope 2 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - return; // scope 0 at $DIR/unchecked_shifts.rs:+2:2: +2:2 + StorageDead(_11); + return; } bb9: { - unreachable; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL + unreachable; } } diff --git a/tests/mir-opt/inline/unchecked_shifts.unchecked_shr_signed_smaller.Inline.panic-abort.diff b/tests/mir-opt/inline/unchecked_shifts.unchecked_shr_signed_smaller.Inline.panic-abort.diff index 0e37e40fbb6a4..61155f5078ff8 100644 --- a/tests/mir-opt/inline/unchecked_shifts.unchecked_shr_signed_smaller.Inline.panic-abort.diff +++ b/tests/mir-opt/inline/unchecked_shifts.unchecked_shr_signed_smaller.Inline.panic-abort.diff @@ -2,55 +2,55 @@ + // MIR for `unchecked_shr_signed_smaller` after Inline fn unchecked_shr_signed_smaller(_1: i16, _2: u32) -> i16 { - debug a => _1; // in scope 0 at $DIR/unchecked_shifts.rs:+0:44: +0:45 - debug b => _2; // in scope 0 at $DIR/unchecked_shifts.rs:+0:52: +0:53 - let mut _0: i16; // return place in scope 0 at $DIR/unchecked_shifts.rs:+0:63: +0:66 - let mut _3: i16; // in scope 0 at $DIR/unchecked_shifts.rs:+1:5: +1:6 - let mut _4: u32; // in scope 0 at $DIR/unchecked_shifts.rs:+1:21: +1:22 -+ scope 1 (inlined core::num::::unchecked_shr) { // at $DIR/unchecked_shifts.rs:17:7: 17:23 -+ debug self => _3; // in scope 1 at $SRC_DIR/core/src/num/int_macros.rs:LL:COL -+ debug rhs => _4; // in scope 1 at $SRC_DIR/core/src/num/int_macros.rs:LL:COL -+ let mut _5: i16; // in scope 1 at $SRC_DIR/core/src/num/mod.rs:LL:COL + debug a => _1; + debug b => _2; + let mut _0: i16; + let mut _3: i16; + let mut _4: u32; ++ scope 1 (inlined core::num::::unchecked_shr) { ++ debug self => _3; ++ debug rhs => _4; ++ let mut _5: i16; + scope 2 { -+ scope 3 (inlined core::num::::unchecked_shr::conv) { // at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ debug x => _4; // in scope 3 at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ let mut _6: std::option::Option; // in scope 3 at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ let mut _7: std::result::Result; // in scope 3 at $SRC_DIR/core/src/num/mod.rs:LL:COL ++ scope 3 (inlined core::num::::unchecked_shr::conv) { ++ debug x => _4; ++ let mut _6: std::option::Option; ++ let mut _7: std::result::Result; + scope 4 { -+ scope 5 (inlined >::try_into) { // at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ debug self => _4; // in scope 5 at $SRC_DIR/core/src/convert/mod.rs:LL:COL -+ scope 6 (inlined convert::num:: for i16>::try_from) { // at $SRC_DIR/core/src/convert/mod.rs:LL:COL -+ debug u => _4; // in scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ let mut _8: bool; // in scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ let mut _9: u32; // in scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ let mut _10: i16; // in scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL ++ scope 5 (inlined >::try_into) { ++ debug self => _4; ++ scope 6 (inlined convert::num:: for i16>::try_from) { ++ debug u => _4; ++ let mut _8: bool; ++ let mut _9: u32; ++ let mut _10: i16; + } + } -+ scope 7 (inlined Result::::ok) { // at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ debug self => _7; // in scope 7 at $SRC_DIR/core/src/result.rs:LL:COL -+ let mut _11: isize; // in scope 7 at $SRC_DIR/core/src/result.rs:LL:COL -+ let _12: i16; // in scope 7 at $SRC_DIR/core/src/result.rs:LL:COL ++ scope 7 (inlined Result::::ok) { ++ debug self => _7; ++ let mut _11: isize; ++ let _12: i16; + scope 8 { -+ debug x => _12; // in scope 8 at $SRC_DIR/core/src/result.rs:LL:COL ++ debug x => _12; + } + } -+ scope 9 (inlined #[track_caller] Option::::unwrap_unchecked) { // at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ debug self => _6; // in scope 9 at $SRC_DIR/core/src/option.rs:LL:COL -+ let mut _13: &std::option::Option; // in scope 9 at $SRC_DIR/core/src/option.rs:LL:COL -+ let mut _14: isize; // in scope 9 at $SRC_DIR/core/src/option.rs:LL:COL ++ scope 9 (inlined #[track_caller] Option::::unwrap_unchecked) { ++ debug self => _6; ++ let mut _13: &std::option::Option; ++ let mut _14: isize; + scope 10 { -+ debug val => _5; // in scope 10 at $SRC_DIR/core/src/option.rs:LL:COL ++ debug val => _5; + } + scope 11 { -+ scope 13 (inlined unreachable_unchecked) { // at $SRC_DIR/core/src/option.rs:LL:COL ++ scope 13 (inlined unreachable_unchecked) { + scope 14 { -+ scope 15 (inlined unreachable_unchecked::runtime) { // at $SRC_DIR/core/src/intrinsics.rs:LL:COL ++ scope 15 (inlined unreachable_unchecked::runtime) { + } + } + } + } -+ scope 12 (inlined Option::::is_some) { // at $SRC_DIR/core/src/option.rs:LL:COL -+ debug self => _13; // in scope 12 at $SRC_DIR/core/src/option.rs:LL:COL ++ scope 12 (inlined Option::::is_some) { ++ debug self => _13; + } + } + } @@ -59,86 +59,77 @@ + } bb0: { - StorageLive(_3); // scope 0 at $DIR/unchecked_shifts.rs:+1:5: +1:6 - _3 = _1; // scope 0 at $DIR/unchecked_shifts.rs:+1:5: +1:6 - StorageLive(_4); // scope 0 at $DIR/unchecked_shifts.rs:+1:21: +1:22 - _4 = _2; // scope 0 at $DIR/unchecked_shifts.rs:+1:21: +1:22 -- _0 = core::num::::unchecked_shr(move _3, move _4) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/unchecked_shifts.rs:+1:5: +1:23 -- // mir::Constant -- // + span: $DIR/unchecked_shifts.rs:17:7: 17:20 -- // + literal: Const { ty: unsafe fn(i16, u32) -> i16 {core::num::::unchecked_shr}, val: Value() } -+ StorageLive(_5); // scope 2 at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ StorageLive(_6); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ StorageLive(_7); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ StorageLive(_8); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ StorageLive(_9); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ _9 = const 32767_u32; // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ _8 = Gt(_4, move _9); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ StorageDead(_9); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ switchInt(move _8) -> [0: bb3, otherwise: bb2]; // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL + StorageLive(_3); + _3 = _1; + StorageLive(_4); + _4 = _2; +- _0 = core::num::::unchecked_shr(move _3, move _4) -> [return: bb1, unwind unreachable]; ++ StorageLive(_5); ++ StorageLive(_6); ++ StorageLive(_7); ++ StorageLive(_8); ++ StorageLive(_9); ++ _9 = const 32767_u32; ++ _8 = Gt(_4, move _9); ++ StorageDead(_9); ++ switchInt(move _8) -> [0: bb3, otherwise: bb2]; } bb1: { -+ StorageDead(_5); // scope 2 at $SRC_DIR/core/src/num/int_macros.rs:LL:COL - StorageDead(_4); // scope 0 at $DIR/unchecked_shifts.rs:+1:22: +1:23 - StorageDead(_3); // scope 0 at $DIR/unchecked_shifts.rs:+1:22: +1:23 - return; // scope 0 at $DIR/unchecked_shifts.rs:+2:2: +2:2 ++ StorageDead(_5); + StorageDead(_4); + StorageDead(_3); + return; + } + + bb2: { -+ _7 = Result::::Err(const TryFromIntError(())); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ // mir::Constant -+ // + span: no-location -+ // + literal: Const { ty: TryFromIntError, val: Value() } -+ goto -> bb4; // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL ++ _7 = Result::::Err(const TryFromIntError(())); ++ goto -> bb4; + } + + bb3: { -+ StorageLive(_10); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ _10 = _4 as i16 (IntToInt); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ _7 = Result::::Ok(move _10); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ StorageDead(_10); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ goto -> bb4; // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL ++ StorageLive(_10); ++ _10 = _4 as i16 (IntToInt); ++ _7 = Result::::Ok(move _10); ++ StorageDead(_10); ++ goto -> bb4; + } + + bb4: { -+ StorageDead(_8); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ StorageLive(_12); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ _11 = discriminant(_7); // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL -+ switchInt(move _11) -> [0: bb7, 1: bb5, otherwise: bb6]; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL ++ StorageDead(_8); ++ StorageLive(_12); ++ _11 = discriminant(_7); ++ switchInt(move _11) -> [0: bb7, 1: bb5, otherwise: bb6]; + } + + bb5: { -+ _6 = Option::::None; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL -+ goto -> bb8; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL ++ _6 = Option::::None; ++ goto -> bb8; + } + + bb6: { -+ unreachable; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL ++ unreachable; + } + + bb7: { -+ _12 = move ((_7 as Ok).0: i16); // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL -+ _6 = Option::::Some(move _12); // scope 8 at $SRC_DIR/core/src/result.rs:LL:COL -+ goto -> bb8; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL ++ _12 = move ((_7 as Ok).0: i16); ++ _6 = Option::::Some(move _12); ++ goto -> bb8; + } + + bb8: { -+ StorageDead(_12); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ StorageDead(_7); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ StorageLive(_13); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ _14 = discriminant(_6); // scope 9 at $SRC_DIR/core/src/option.rs:LL:COL -+ switchInt(move _14) -> [1: bb9, otherwise: bb6]; // scope 9 at $SRC_DIR/core/src/option.rs:LL:COL ++ StorageDead(_12); ++ StorageDead(_7); ++ StorageLive(_13); ++ _14 = discriminant(_6); ++ switchInt(move _14) -> [1: bb9, otherwise: bb6]; + } + + bb9: { -+ _5 = move ((_6 as Some).0: i16); // scope 9 at $SRC_DIR/core/src/option.rs:LL:COL -+ StorageDead(_13); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ StorageDead(_6); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ _0 = unchecked_shr::(_3, move _5) -> [return: bb1, unwind unreachable]; // scope 2 at $SRC_DIR/core/src/num/int_macros.rs:LL:COL -+ // mir::Constant -+ // + span: $SRC_DIR/core/src/num/int_macros.rs:LL:COL -+ // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(i16, i16) -> i16 {unchecked_shr::}, val: Value() } ++ _5 = move ((_6 as Some).0: i16); ++ StorageDead(_13); ++ StorageDead(_6); ++ _0 = unchecked_shr::(_3, move _5) -> [return: bb1, unwind unreachable]; } } diff --git a/tests/mir-opt/inline/unchecked_shifts.unchecked_shr_signed_smaller.Inline.panic-unwind.diff b/tests/mir-opt/inline/unchecked_shifts.unchecked_shr_signed_smaller.Inline.panic-unwind.diff index f20c7da4747c8..181a423164b2c 100644 --- a/tests/mir-opt/inline/unchecked_shifts.unchecked_shr_signed_smaller.Inline.panic-unwind.diff +++ b/tests/mir-opt/inline/unchecked_shifts.unchecked_shr_signed_smaller.Inline.panic-unwind.diff @@ -2,55 +2,55 @@ + // MIR for `unchecked_shr_signed_smaller` after Inline fn unchecked_shr_signed_smaller(_1: i16, _2: u32) -> i16 { - debug a => _1; // in scope 0 at $DIR/unchecked_shifts.rs:+0:44: +0:45 - debug b => _2; // in scope 0 at $DIR/unchecked_shifts.rs:+0:52: +0:53 - let mut _0: i16; // return place in scope 0 at $DIR/unchecked_shifts.rs:+0:63: +0:66 - let mut _3: i16; // in scope 0 at $DIR/unchecked_shifts.rs:+1:5: +1:6 - let mut _4: u32; // in scope 0 at $DIR/unchecked_shifts.rs:+1:21: +1:22 -+ scope 1 (inlined core::num::::unchecked_shr) { // at $DIR/unchecked_shifts.rs:17:7: 17:23 -+ debug self => _3; // in scope 1 at $SRC_DIR/core/src/num/int_macros.rs:LL:COL -+ debug rhs => _4; // in scope 1 at $SRC_DIR/core/src/num/int_macros.rs:LL:COL -+ let mut _5: i16; // in scope 1 at $SRC_DIR/core/src/num/mod.rs:LL:COL + debug a => _1; + debug b => _2; + let mut _0: i16; + let mut _3: i16; + let mut _4: u32; ++ scope 1 (inlined core::num::::unchecked_shr) { ++ debug self => _3; ++ debug rhs => _4; ++ let mut _5: i16; + scope 2 { -+ scope 3 (inlined core::num::::unchecked_shr::conv) { // at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ debug x => _4; // in scope 3 at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ let mut _6: std::option::Option; // in scope 3 at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ let mut _7: std::result::Result; // in scope 3 at $SRC_DIR/core/src/num/mod.rs:LL:COL ++ scope 3 (inlined core::num::::unchecked_shr::conv) { ++ debug x => _4; ++ let mut _6: std::option::Option; ++ let mut _7: std::result::Result; + scope 4 { -+ scope 5 (inlined >::try_into) { // at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ debug self => _4; // in scope 5 at $SRC_DIR/core/src/convert/mod.rs:LL:COL -+ scope 6 (inlined convert::num:: for i16>::try_from) { // at $SRC_DIR/core/src/convert/mod.rs:LL:COL -+ debug u => _4; // in scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ let mut _8: bool; // in scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ let mut _9: u32; // in scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ let mut _10: i16; // in scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL ++ scope 5 (inlined >::try_into) { ++ debug self => _4; ++ scope 6 (inlined convert::num:: for i16>::try_from) { ++ debug u => _4; ++ let mut _8: bool; ++ let mut _9: u32; ++ let mut _10: i16; + } + } -+ scope 7 (inlined Result::::ok) { // at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ debug self => _7; // in scope 7 at $SRC_DIR/core/src/result.rs:LL:COL -+ let mut _11: isize; // in scope 7 at $SRC_DIR/core/src/result.rs:LL:COL -+ let _12: i16; // in scope 7 at $SRC_DIR/core/src/result.rs:LL:COL ++ scope 7 (inlined Result::::ok) { ++ debug self => _7; ++ let mut _11: isize; ++ let _12: i16; + scope 8 { -+ debug x => _12; // in scope 8 at $SRC_DIR/core/src/result.rs:LL:COL ++ debug x => _12; + } + } -+ scope 9 (inlined #[track_caller] Option::::unwrap_unchecked) { // at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ debug self => _6; // in scope 9 at $SRC_DIR/core/src/option.rs:LL:COL -+ let mut _13: &std::option::Option; // in scope 9 at $SRC_DIR/core/src/option.rs:LL:COL -+ let mut _14: isize; // in scope 9 at $SRC_DIR/core/src/option.rs:LL:COL ++ scope 9 (inlined #[track_caller] Option::::unwrap_unchecked) { ++ debug self => _6; ++ let mut _13: &std::option::Option; ++ let mut _14: isize; + scope 10 { -+ debug val => _5; // in scope 10 at $SRC_DIR/core/src/option.rs:LL:COL ++ debug val => _5; + } + scope 11 { -+ scope 13 (inlined unreachable_unchecked) { // at $SRC_DIR/core/src/option.rs:LL:COL ++ scope 13 (inlined unreachable_unchecked) { + scope 14 { -+ scope 15 (inlined unreachable_unchecked::runtime) { // at $SRC_DIR/core/src/intrinsics.rs:LL:COL ++ scope 15 (inlined unreachable_unchecked::runtime) { + } + } + } + } -+ scope 12 (inlined Option::::is_some) { // at $SRC_DIR/core/src/option.rs:LL:COL -+ debug self => _13; // in scope 12 at $SRC_DIR/core/src/option.rs:LL:COL ++ scope 12 (inlined Option::::is_some) { ++ debug self => _13; + } + } + } @@ -59,86 +59,77 @@ + } bb0: { - StorageLive(_3); // scope 0 at $DIR/unchecked_shifts.rs:+1:5: +1:6 - _3 = _1; // scope 0 at $DIR/unchecked_shifts.rs:+1:5: +1:6 - StorageLive(_4); // scope 0 at $DIR/unchecked_shifts.rs:+1:21: +1:22 - _4 = _2; // scope 0 at $DIR/unchecked_shifts.rs:+1:21: +1:22 -- _0 = core::num::::unchecked_shr(move _3, move _4) -> bb1; // scope 0 at $DIR/unchecked_shifts.rs:+1:5: +1:23 -- // mir::Constant -- // + span: $DIR/unchecked_shifts.rs:17:7: 17:20 -- // + literal: Const { ty: unsafe fn(i16, u32) -> i16 {core::num::::unchecked_shr}, val: Value() } -+ StorageLive(_5); // scope 2 at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ StorageLive(_6); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ StorageLive(_7); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ StorageLive(_8); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ StorageLive(_9); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ _9 = const 32767_u32; // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ _8 = Gt(_4, move _9); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ StorageDead(_9); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ switchInt(move _8) -> [0: bb3, otherwise: bb2]; // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL + StorageLive(_3); + _3 = _1; + StorageLive(_4); + _4 = _2; +- _0 = core::num::::unchecked_shr(move _3, move _4) -> bb1; ++ StorageLive(_5); ++ StorageLive(_6); ++ StorageLive(_7); ++ StorageLive(_8); ++ StorageLive(_9); ++ _9 = const 32767_u32; ++ _8 = Gt(_4, move _9); ++ StorageDead(_9); ++ switchInt(move _8) -> [0: bb3, otherwise: bb2]; } bb1: { -+ StorageDead(_5); // scope 2 at $SRC_DIR/core/src/num/int_macros.rs:LL:COL - StorageDead(_4); // scope 0 at $DIR/unchecked_shifts.rs:+1:22: +1:23 - StorageDead(_3); // scope 0 at $DIR/unchecked_shifts.rs:+1:22: +1:23 - return; // scope 0 at $DIR/unchecked_shifts.rs:+2:2: +2:2 ++ StorageDead(_5); + StorageDead(_4); + StorageDead(_3); + return; + } + + bb2: { -+ _7 = Result::::Err(const TryFromIntError(())); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ // mir::Constant -+ // + span: no-location -+ // + literal: Const { ty: TryFromIntError, val: Value() } -+ goto -> bb4; // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL ++ _7 = Result::::Err(const TryFromIntError(())); ++ goto -> bb4; + } + + bb3: { -+ StorageLive(_10); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ _10 = _4 as i16 (IntToInt); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ _7 = Result::::Ok(move _10); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ StorageDead(_10); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ goto -> bb4; // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL ++ StorageLive(_10); ++ _10 = _4 as i16 (IntToInt); ++ _7 = Result::::Ok(move _10); ++ StorageDead(_10); ++ goto -> bb4; + } + + bb4: { -+ StorageDead(_8); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL -+ StorageLive(_12); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ _11 = discriminant(_7); // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL -+ switchInt(move _11) -> [0: bb7, 1: bb5, otherwise: bb6]; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL ++ StorageDead(_8); ++ StorageLive(_12); ++ _11 = discriminant(_7); ++ switchInt(move _11) -> [0: bb7, 1: bb5, otherwise: bb6]; + } + + bb5: { -+ _6 = Option::::None; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL -+ goto -> bb8; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL ++ _6 = Option::::None; ++ goto -> bb8; + } + + bb6: { -+ unreachable; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL ++ unreachable; + } + + bb7: { -+ _12 = move ((_7 as Ok).0: i16); // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL -+ _6 = Option::::Some(move _12); // scope 8 at $SRC_DIR/core/src/result.rs:LL:COL -+ goto -> bb8; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL ++ _12 = move ((_7 as Ok).0: i16); ++ _6 = Option::::Some(move _12); ++ goto -> bb8; + } + + bb8: { -+ StorageDead(_12); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ StorageDead(_7); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ StorageLive(_13); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ _14 = discriminant(_6); // scope 9 at $SRC_DIR/core/src/option.rs:LL:COL -+ switchInt(move _14) -> [1: bb9, otherwise: bb6]; // scope 9 at $SRC_DIR/core/src/option.rs:LL:COL ++ StorageDead(_12); ++ StorageDead(_7); ++ StorageLive(_13); ++ _14 = discriminant(_6); ++ switchInt(move _14) -> [1: bb9, otherwise: bb6]; + } + + bb9: { -+ _5 = move ((_6 as Some).0: i16); // scope 9 at $SRC_DIR/core/src/option.rs:LL:COL -+ StorageDead(_13); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ StorageDead(_6); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL -+ _0 = unchecked_shr::(_3, move _5) -> [return: bb1, unwind unreachable]; // scope 2 at $SRC_DIR/core/src/num/int_macros.rs:LL:COL -+ // mir::Constant -+ // + span: $SRC_DIR/core/src/num/int_macros.rs:LL:COL -+ // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(i16, i16) -> i16 {unchecked_shr::}, val: Value() } ++ _5 = move ((_6 as Some).0: i16); ++ StorageDead(_13); ++ StorageDead(_6); ++ _0 = unchecked_shr::(_3, move _5) -> [return: bb1, unwind unreachable]; } } diff --git a/tests/mir-opt/inline/unchecked_shifts.unchecked_shr_signed_smaller.PreCodegen.after.panic-abort.mir b/tests/mir-opt/inline/unchecked_shifts.unchecked_shr_signed_smaller.PreCodegen.after.panic-abort.mir index 7f737abb9360d..66936df380bc4 100644 --- a/tests/mir-opt/inline/unchecked_shifts.unchecked_shr_signed_smaller.PreCodegen.after.panic-abort.mir +++ b/tests/mir-opt/inline/unchecked_shifts.unchecked_shr_signed_smaller.PreCodegen.after.panic-abort.mir @@ -1,53 +1,53 @@ // MIR for `unchecked_shr_signed_smaller` after PreCodegen fn unchecked_shr_signed_smaller(_1: i16, _2: u32) -> i16 { - debug a => _1; // in scope 0 at $DIR/unchecked_shifts.rs:+0:44: +0:45 - debug b => _2; // in scope 0 at $DIR/unchecked_shifts.rs:+0:52: +0:53 - let mut _0: i16; // return place in scope 0 at $DIR/unchecked_shifts.rs:+0:63: +0:66 - scope 1 (inlined core::num::::unchecked_shr) { // at $DIR/unchecked_shifts.rs:17:7: 17:23 - debug self => _1; // in scope 1 at $SRC_DIR/core/src/num/int_macros.rs:LL:COL - debug rhs => _2; // in scope 1 at $SRC_DIR/core/src/num/int_macros.rs:LL:COL - let mut _11: i16; // in scope 1 at $SRC_DIR/core/src/num/mod.rs:LL:COL + debug a => _1; + debug b => _2; + let mut _0: i16; + scope 1 (inlined core::num::::unchecked_shr) { + debug self => _1; + debug rhs => _2; + let mut _11: i16; scope 2 { - scope 3 (inlined core::num::::unchecked_shr::conv) { // at $SRC_DIR/core/src/num/mod.rs:LL:COL - debug x => _2; // in scope 3 at $SRC_DIR/core/src/num/mod.rs:LL:COL - let mut _6: std::result::Result; // in scope 3 at $SRC_DIR/core/src/num/mod.rs:LL:COL - let mut _9: std::option::Option; // in scope 3 at $SRC_DIR/core/src/num/mod.rs:LL:COL + scope 3 (inlined core::num::::unchecked_shr::conv) { + debug x => _2; + let mut _6: std::result::Result; + let mut _9: std::option::Option; scope 4 { - scope 5 (inlined >::try_into) { // at $SRC_DIR/core/src/num/mod.rs:LL:COL - debug self => _2; // in scope 5 at $SRC_DIR/core/src/convert/mod.rs:LL:COL - scope 6 (inlined convert::num:: for i16>::try_from) { // at $SRC_DIR/core/src/convert/mod.rs:LL:COL - debug u => _2; // in scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - let mut _3: u32; // in scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - let mut _4: bool; // in scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - let mut _5: i16; // in scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL + scope 5 (inlined >::try_into) { + debug self => _2; + scope 6 (inlined convert::num:: for i16>::try_from) { + debug u => _2; + let mut _3: u32; + let mut _4: bool; + let mut _5: i16; } } - scope 7 (inlined Result::::ok) { // at $SRC_DIR/core/src/num/mod.rs:LL:COL - debug self => _6; // in scope 7 at $SRC_DIR/core/src/result.rs:LL:COL - let mut _7: isize; // in scope 7 at $SRC_DIR/core/src/result.rs:LL:COL - let _8: i16; // in scope 7 at $SRC_DIR/core/src/result.rs:LL:COL + scope 7 (inlined Result::::ok) { + debug self => _6; + let mut _7: isize; + let _8: i16; scope 8 { - debug x => _8; // in scope 8 at $SRC_DIR/core/src/result.rs:LL:COL + debug x => _8; } } - scope 9 (inlined #[track_caller] Option::::unwrap_unchecked) { // at $SRC_DIR/core/src/num/mod.rs:LL:COL - debug self => _9; // in scope 9 at $SRC_DIR/core/src/option.rs:LL:COL - let mut _10: isize; // in scope 9 at $SRC_DIR/core/src/option.rs:LL:COL - let mut _12: &std::option::Option; // in scope 9 at $SRC_DIR/core/src/option.rs:LL:COL + scope 9 (inlined #[track_caller] Option::::unwrap_unchecked) { + debug self => _9; + let mut _10: isize; + let mut _12: &std::option::Option; scope 10 { - debug val => _11; // in scope 10 at $SRC_DIR/core/src/option.rs:LL:COL + debug val => _11; } scope 11 { - scope 13 (inlined unreachable_unchecked) { // at $SRC_DIR/core/src/option.rs:LL:COL + scope 13 (inlined unreachable_unchecked) { scope 14 { - scope 15 (inlined unreachable_unchecked::runtime) { // at $SRC_DIR/core/src/intrinsics.rs:LL:COL + scope 15 (inlined unreachable_unchecked::runtime) { } } } } - scope 12 (inlined Option::::is_some) { // at $SRC_DIR/core/src/option.rs:LL:COL - debug self => _12; // in scope 12 at $SRC_DIR/core/src/option.rs:LL:COL + scope 12 (inlined Option::::is_some) { + debug self => _12; } } } @@ -56,75 +56,69 @@ fn unchecked_shr_signed_smaller(_1: i16, _2: u32) -> i16 { } bb0: { - StorageLive(_11); // scope 2 at $SRC_DIR/core/src/num/mod.rs:LL:COL - StorageLive(_9); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL - StorageLive(_6); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL - StorageLive(_4); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - StorageLive(_3); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - _3 = const 32767_u32; // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - _4 = Gt(_2, move _3); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - StorageDead(_3); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - switchInt(move _4) -> [0: bb1, otherwise: bb2]; // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL + StorageLive(_11); + StorageLive(_9); + StorageLive(_6); + StorageLive(_4); + StorageLive(_3); + _3 = const 32767_u32; + _4 = Gt(_2, move _3); + StorageDead(_3); + switchInt(move _4) -> [0: bb1, otherwise: bb2]; } bb1: { - StorageLive(_5); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - _5 = _2 as i16 (IntToInt); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - _6 = Result::::Ok(move _5); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - StorageDead(_5); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - goto -> bb3; // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL + StorageLive(_5); + _5 = _2 as i16 (IntToInt); + _6 = Result::::Ok(move _5); + StorageDead(_5); + goto -> bb3; } bb2: { - _6 = Result::::Err(const TryFromIntError(())); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - // mir::Constant - // + span: no-location - // + literal: Const { ty: TryFromIntError, val: Value() } - goto -> bb3; // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL + _6 = Result::::Err(const TryFromIntError(())); + goto -> bb3; } bb3: { - StorageDead(_4); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - StorageLive(_8); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL - _7 = discriminant(_6); // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL - switchInt(move _7) -> [0: bb4, 1: bb5, otherwise: bb9]; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL + StorageDead(_4); + StorageLive(_8); + _7 = discriminant(_6); + switchInt(move _7) -> [0: bb4, 1: bb5, otherwise: bb9]; } bb4: { - _8 = move ((_6 as Ok).0: i16); // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL - _9 = Option::::Some(move _8); // scope 8 at $SRC_DIR/core/src/result.rs:LL:COL - goto -> bb6; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL + _8 = move ((_6 as Ok).0: i16); + _9 = Option::::Some(move _8); + goto -> bb6; } bb5: { - _9 = Option::::None; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL - goto -> bb6; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL + _9 = Option::::None; + goto -> bb6; } bb6: { - StorageDead(_8); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL - StorageDead(_6); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL - StorageLive(_12); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL - _10 = discriminant(_9); // scope 9 at $SRC_DIR/core/src/option.rs:LL:COL - switchInt(move _10) -> [1: bb7, otherwise: bb9]; // scope 9 at $SRC_DIR/core/src/option.rs:LL:COL + StorageDead(_8); + StorageDead(_6); + StorageLive(_12); + _10 = discriminant(_9); + switchInt(move _10) -> [1: bb7, otherwise: bb9]; } bb7: { - _11 = move ((_9 as Some).0: i16); // scope 9 at $SRC_DIR/core/src/option.rs:LL:COL - StorageDead(_12); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL - StorageDead(_9); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL - _0 = unchecked_shr::(_1, move _11) -> [return: bb8, unwind unreachable]; // scope 2 at $SRC_DIR/core/src/num/int_macros.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/core/src/num/int_macros.rs:LL:COL - // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(i16, i16) -> i16 {unchecked_shr::}, val: Value() } + _11 = move ((_9 as Some).0: i16); + StorageDead(_12); + StorageDead(_9); + _0 = unchecked_shr::(_1, move _11) -> [return: bb8, unwind unreachable]; } bb8: { - StorageDead(_11); // scope 2 at $SRC_DIR/core/src/num/int_macros.rs:LL:COL - return; // scope 0 at $DIR/unchecked_shifts.rs:+2:2: +2:2 + StorageDead(_11); + return; } bb9: { - unreachable; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL + unreachable; } } diff --git a/tests/mir-opt/inline/unchecked_shifts.unchecked_shr_signed_smaller.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/inline/unchecked_shifts.unchecked_shr_signed_smaller.PreCodegen.after.panic-unwind.mir index 7f737abb9360d..66936df380bc4 100644 --- a/tests/mir-opt/inline/unchecked_shifts.unchecked_shr_signed_smaller.PreCodegen.after.panic-unwind.mir +++ b/tests/mir-opt/inline/unchecked_shifts.unchecked_shr_signed_smaller.PreCodegen.after.panic-unwind.mir @@ -1,53 +1,53 @@ // MIR for `unchecked_shr_signed_smaller` after PreCodegen fn unchecked_shr_signed_smaller(_1: i16, _2: u32) -> i16 { - debug a => _1; // in scope 0 at $DIR/unchecked_shifts.rs:+0:44: +0:45 - debug b => _2; // in scope 0 at $DIR/unchecked_shifts.rs:+0:52: +0:53 - let mut _0: i16; // return place in scope 0 at $DIR/unchecked_shifts.rs:+0:63: +0:66 - scope 1 (inlined core::num::::unchecked_shr) { // at $DIR/unchecked_shifts.rs:17:7: 17:23 - debug self => _1; // in scope 1 at $SRC_DIR/core/src/num/int_macros.rs:LL:COL - debug rhs => _2; // in scope 1 at $SRC_DIR/core/src/num/int_macros.rs:LL:COL - let mut _11: i16; // in scope 1 at $SRC_DIR/core/src/num/mod.rs:LL:COL + debug a => _1; + debug b => _2; + let mut _0: i16; + scope 1 (inlined core::num::::unchecked_shr) { + debug self => _1; + debug rhs => _2; + let mut _11: i16; scope 2 { - scope 3 (inlined core::num::::unchecked_shr::conv) { // at $SRC_DIR/core/src/num/mod.rs:LL:COL - debug x => _2; // in scope 3 at $SRC_DIR/core/src/num/mod.rs:LL:COL - let mut _6: std::result::Result; // in scope 3 at $SRC_DIR/core/src/num/mod.rs:LL:COL - let mut _9: std::option::Option; // in scope 3 at $SRC_DIR/core/src/num/mod.rs:LL:COL + scope 3 (inlined core::num::::unchecked_shr::conv) { + debug x => _2; + let mut _6: std::result::Result; + let mut _9: std::option::Option; scope 4 { - scope 5 (inlined >::try_into) { // at $SRC_DIR/core/src/num/mod.rs:LL:COL - debug self => _2; // in scope 5 at $SRC_DIR/core/src/convert/mod.rs:LL:COL - scope 6 (inlined convert::num:: for i16>::try_from) { // at $SRC_DIR/core/src/convert/mod.rs:LL:COL - debug u => _2; // in scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - let mut _3: u32; // in scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - let mut _4: bool; // in scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - let mut _5: i16; // in scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL + scope 5 (inlined >::try_into) { + debug self => _2; + scope 6 (inlined convert::num:: for i16>::try_from) { + debug u => _2; + let mut _3: u32; + let mut _4: bool; + let mut _5: i16; } } - scope 7 (inlined Result::::ok) { // at $SRC_DIR/core/src/num/mod.rs:LL:COL - debug self => _6; // in scope 7 at $SRC_DIR/core/src/result.rs:LL:COL - let mut _7: isize; // in scope 7 at $SRC_DIR/core/src/result.rs:LL:COL - let _8: i16; // in scope 7 at $SRC_DIR/core/src/result.rs:LL:COL + scope 7 (inlined Result::::ok) { + debug self => _6; + let mut _7: isize; + let _8: i16; scope 8 { - debug x => _8; // in scope 8 at $SRC_DIR/core/src/result.rs:LL:COL + debug x => _8; } } - scope 9 (inlined #[track_caller] Option::::unwrap_unchecked) { // at $SRC_DIR/core/src/num/mod.rs:LL:COL - debug self => _9; // in scope 9 at $SRC_DIR/core/src/option.rs:LL:COL - let mut _10: isize; // in scope 9 at $SRC_DIR/core/src/option.rs:LL:COL - let mut _12: &std::option::Option; // in scope 9 at $SRC_DIR/core/src/option.rs:LL:COL + scope 9 (inlined #[track_caller] Option::::unwrap_unchecked) { + debug self => _9; + let mut _10: isize; + let mut _12: &std::option::Option; scope 10 { - debug val => _11; // in scope 10 at $SRC_DIR/core/src/option.rs:LL:COL + debug val => _11; } scope 11 { - scope 13 (inlined unreachable_unchecked) { // at $SRC_DIR/core/src/option.rs:LL:COL + scope 13 (inlined unreachable_unchecked) { scope 14 { - scope 15 (inlined unreachable_unchecked::runtime) { // at $SRC_DIR/core/src/intrinsics.rs:LL:COL + scope 15 (inlined unreachable_unchecked::runtime) { } } } } - scope 12 (inlined Option::::is_some) { // at $SRC_DIR/core/src/option.rs:LL:COL - debug self => _12; // in scope 12 at $SRC_DIR/core/src/option.rs:LL:COL + scope 12 (inlined Option::::is_some) { + debug self => _12; } } } @@ -56,75 +56,69 @@ fn unchecked_shr_signed_smaller(_1: i16, _2: u32) -> i16 { } bb0: { - StorageLive(_11); // scope 2 at $SRC_DIR/core/src/num/mod.rs:LL:COL - StorageLive(_9); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL - StorageLive(_6); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL - StorageLive(_4); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - StorageLive(_3); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - _3 = const 32767_u32; // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - _4 = Gt(_2, move _3); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - StorageDead(_3); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - switchInt(move _4) -> [0: bb1, otherwise: bb2]; // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL + StorageLive(_11); + StorageLive(_9); + StorageLive(_6); + StorageLive(_4); + StorageLive(_3); + _3 = const 32767_u32; + _4 = Gt(_2, move _3); + StorageDead(_3); + switchInt(move _4) -> [0: bb1, otherwise: bb2]; } bb1: { - StorageLive(_5); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - _5 = _2 as i16 (IntToInt); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - _6 = Result::::Ok(move _5); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - StorageDead(_5); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - goto -> bb3; // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL + StorageLive(_5); + _5 = _2 as i16 (IntToInt); + _6 = Result::::Ok(move _5); + StorageDead(_5); + goto -> bb3; } bb2: { - _6 = Result::::Err(const TryFromIntError(())); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - // mir::Constant - // + span: no-location - // + literal: Const { ty: TryFromIntError, val: Value() } - goto -> bb3; // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL + _6 = Result::::Err(const TryFromIntError(())); + goto -> bb3; } bb3: { - StorageDead(_4); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL - StorageLive(_8); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL - _7 = discriminant(_6); // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL - switchInt(move _7) -> [0: bb4, 1: bb5, otherwise: bb9]; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL + StorageDead(_4); + StorageLive(_8); + _7 = discriminant(_6); + switchInt(move _7) -> [0: bb4, 1: bb5, otherwise: bb9]; } bb4: { - _8 = move ((_6 as Ok).0: i16); // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL - _9 = Option::::Some(move _8); // scope 8 at $SRC_DIR/core/src/result.rs:LL:COL - goto -> bb6; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL + _8 = move ((_6 as Ok).0: i16); + _9 = Option::::Some(move _8); + goto -> bb6; } bb5: { - _9 = Option::::None; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL - goto -> bb6; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL + _9 = Option::::None; + goto -> bb6; } bb6: { - StorageDead(_8); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL - StorageDead(_6); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL - StorageLive(_12); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL - _10 = discriminant(_9); // scope 9 at $SRC_DIR/core/src/option.rs:LL:COL - switchInt(move _10) -> [1: bb7, otherwise: bb9]; // scope 9 at $SRC_DIR/core/src/option.rs:LL:COL + StorageDead(_8); + StorageDead(_6); + StorageLive(_12); + _10 = discriminant(_9); + switchInt(move _10) -> [1: bb7, otherwise: bb9]; } bb7: { - _11 = move ((_9 as Some).0: i16); // scope 9 at $SRC_DIR/core/src/option.rs:LL:COL - StorageDead(_12); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL - StorageDead(_9); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL - _0 = unchecked_shr::(_1, move _11) -> [return: bb8, unwind unreachable]; // scope 2 at $SRC_DIR/core/src/num/int_macros.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/core/src/num/int_macros.rs:LL:COL - // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(i16, i16) -> i16 {unchecked_shr::}, val: Value() } + _11 = move ((_9 as Some).0: i16); + StorageDead(_12); + StorageDead(_9); + _0 = unchecked_shr::(_1, move _11) -> [return: bb8, unwind unreachable]; } bb8: { - StorageDead(_11); // scope 2 at $SRC_DIR/core/src/num/int_macros.rs:LL:COL - return; // scope 0 at $DIR/unchecked_shifts.rs:+2:2: +2:2 + StorageDead(_11); + return; } bb9: { - unreachable; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL + unreachable; } } diff --git a/tests/mir-opt/inline/unsized_argument.caller.Inline.diff b/tests/mir-opt/inline/unsized_argument.caller.Inline.diff index 745f2bb193aa1..5c64d4305591c 100644 --- a/tests/mir-opt/inline/unsized_argument.caller.Inline.diff +++ b/tests/mir-opt/inline/unsized_argument.caller.Inline.diff @@ -2,49 +2,40 @@ + // MIR for `caller` after Inline fn caller(_1: Box<[i32]>) -> () { - debug x => _1; // in scope 0 at $DIR/unsized_argument.rs:+0:11: +0:12 - let mut _0: (); // return place in scope 0 at $DIR/unsized_argument.rs:+0:26: +0:26 - let _2: (); // in scope 0 at $DIR/unsized_argument.rs:+1:5: +1:15 - let mut _3: std::boxed::Box<[i32]>; // in scope 0 at $DIR/unsized_argument.rs:+1:13: +1:14 - let mut _4: (); // in scope 0 at $DIR/unsized_argument.rs:+1:14: +1:15 - let mut _5: (); // in scope 0 at $DIR/unsized_argument.rs:+1:14: +1:15 - let mut _6: (); // in scope 0 at $DIR/unsized_argument.rs:+1:14: +1:15 - let mut _7: *const [i32]; // in scope 0 at $DIR/unsized_argument.rs:+1:13: +1:14 + debug x => _1; + let mut _0: (); + let _2: (); + let mut _3: std::boxed::Box<[i32]>; + let mut _4: (); + let mut _5: (); + let mut _6: (); + let mut _7: *const [i32]; bb0: { - StorageLive(_2); // scope 0 at $DIR/unsized_argument.rs:+1:5: +1:15 - StorageLive(_3); // scope 0 at $DIR/unsized_argument.rs:+1:13: +1:14 - _3 = move _1; // scope 0 at $DIR/unsized_argument.rs:+1:13: +1:14 - _7 = (((_3.0: std::ptr::Unique<[i32]>).0: std::ptr::NonNull<[i32]>).0: *const [i32]); // scope 0 at $DIR/unsized_argument.rs:+1:5: +1:15 - _2 = callee(move (*_7)) -> [return: bb3, unwind: bb4]; // scope 0 at $DIR/unsized_argument.rs:+1:5: +1:15 - // mir::Constant - // + span: $DIR/unsized_argument.rs:9:5: 9:11 - // + literal: Const { ty: fn([i32]) {callee}, val: Value() } + StorageLive(_2); + StorageLive(_3); + _3 = move _1; + _7 = (((_3.0: std::ptr::Unique<[i32]>).0: std::ptr::NonNull<[i32]>).0: *const [i32]); + _2 = callee(move (*_7)) -> [return: bb3, unwind: bb4]; } bb1: { - StorageDead(_3); // scope 0 at $DIR/unsized_argument.rs:+1:14: +1:15 - StorageDead(_2); // scope 0 at $DIR/unsized_argument.rs:+1:15: +1:16 - _0 = const (); // scope 0 at $DIR/unsized_argument.rs:+0:26: +2:2 - return; // scope 0 at $DIR/unsized_argument.rs:+2:2: +2:2 + StorageDead(_3); + StorageDead(_2); + _0 = const (); + return; } bb2 (cleanup): { - resume; // scope 0 at $DIR/unsized_argument.rs:+0:1: +2:2 + resume; } bb3: { - _4 = alloc::alloc::box_free::<[i32], std::alloc::Global>(move (_3.0: std::ptr::Unique<[i32]>), move (_3.1: std::alloc::Global)) -> bb1; // scope 0 at $DIR/unsized_argument.rs:+1:14: +1:15 - // mir::Constant - // + span: $DIR/unsized_argument.rs:9:14: 9:15 - // + literal: Const { ty: unsafe fn(Unique<[i32]>, std::alloc::Global) {alloc::alloc::box_free::<[i32], std::alloc::Global>}, val: Value() } + _4 = alloc::alloc::box_free::<[i32], std::alloc::Global>(move (_3.0: std::ptr::Unique<[i32]>), move (_3.1: std::alloc::Global)) -> bb1; } bb4 (cleanup): { - _6 = alloc::alloc::box_free::<[i32], std::alloc::Global>(move (_3.0: std::ptr::Unique<[i32]>), move (_3.1: std::alloc::Global)) -> [return: bb2, unwind terminate]; // scope 0 at $DIR/unsized_argument.rs:+1:14: +1:15 - // mir::Constant - // + span: $DIR/unsized_argument.rs:9:14: 9:15 - // + literal: Const { ty: unsafe fn(Unique<[i32]>, std::alloc::Global) {alloc::alloc::box_free::<[i32], std::alloc::Global>}, val: Value() } + _6 = alloc::alloc::box_free::<[i32], std::alloc::Global>(move (_3.0: std::ptr::Unique<[i32]>), move (_3.1: std::alloc::Global)) -> [return: bb2, unwind terminate]; } } diff --git a/tests/mir-opt/inline/unwrap_unchecked.unwrap_unchecked.Inline.panic-abort.diff b/tests/mir-opt/inline/unwrap_unchecked.unwrap_unchecked.Inline.panic-abort.diff index 4f2a32fa6416e..e3c57347392a5 100644 --- a/tests/mir-opt/inline/unwrap_unchecked.unwrap_unchecked.Inline.panic-abort.diff +++ b/tests/mir-opt/inline/unwrap_unchecked.unwrap_unchecked.Inline.panic-abort.diff @@ -2,50 +2,47 @@ + // MIR for `unwrap_unchecked` after Inline fn unwrap_unchecked(_1: Option) -> T { - debug slf => _1; // in scope 0 at $DIR/unwrap_unchecked.rs:+0:35: +0:38 - let mut _0: T; // return place in scope 0 at $DIR/unwrap_unchecked.rs:+0:54: +0:55 - let mut _2: std::option::Option; // in scope 0 at $DIR/unwrap_unchecked.rs:+1:5: +1:8 -+ scope 1 (inlined #[track_caller] Option::::unwrap_unchecked) { // at $DIR/unwrap_unchecked.rs:10:9: 10:27 -+ debug self => _2; // in scope 1 at $SRC_DIR/core/src/option.rs:LL:COL -+ let mut _3: &std::option::Option; // in scope 1 at $SRC_DIR/core/src/option.rs:LL:COL -+ let mut _4: isize; // in scope 1 at $SRC_DIR/core/src/option.rs:LL:COL + debug slf => _1; + let mut _0: T; + let mut _2: std::option::Option; ++ scope 1 (inlined #[track_caller] Option::::unwrap_unchecked) { ++ debug self => _2; ++ let mut _3: &std::option::Option; ++ let mut _4: isize; + scope 2 { -+ debug val => _0; // in scope 2 at $SRC_DIR/core/src/option.rs:LL:COL ++ debug val => _0; + } + scope 3 { -+ scope 5 (inlined unreachable_unchecked) { // at $SRC_DIR/core/src/option.rs:LL:COL ++ scope 5 (inlined unreachable_unchecked) { + scope 6 { -+ scope 7 (inlined unreachable_unchecked::runtime) { // at $SRC_DIR/core/src/intrinsics.rs:LL:COL ++ scope 7 (inlined unreachable_unchecked::runtime) { + } + } + } + } -+ scope 4 (inlined Option::::is_some) { // at $SRC_DIR/core/src/option.rs:LL:COL -+ debug self => _3; // in scope 4 at $SRC_DIR/core/src/option.rs:LL:COL ++ scope 4 (inlined Option::::is_some) { ++ debug self => _3; + } + } bb0: { - StorageLive(_2); // scope 0 at $DIR/unwrap_unchecked.rs:+1:5: +1:8 - _2 = move _1; // scope 0 at $DIR/unwrap_unchecked.rs:+1:5: +1:8 -- _0 = Option::::unwrap_unchecked(move _2) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/unwrap_unchecked.rs:+1:5: +1:27 -- // mir::Constant -- // + span: $DIR/unwrap_unchecked.rs:10:9: 10:25 -- // + literal: Const { ty: unsafe fn(Option) -> T {Option::::unwrap_unchecked}, val: Value() } -+ StorageLive(_3); // scope 0 at $DIR/unwrap_unchecked.rs:+1:9: +1:27 -+ _4 = discriminant(_2); // scope 1 at $SRC_DIR/core/src/option.rs:LL:COL -+ switchInt(move _4) -> [1: bb2, otherwise: bb1]; // scope 1 at $SRC_DIR/core/src/option.rs:LL:COL + StorageLive(_2); + _2 = move _1; +- _0 = Option::::unwrap_unchecked(move _2) -> [return: bb1, unwind unreachable]; ++ StorageLive(_3); ++ _4 = discriminant(_2); ++ switchInt(move _4) -> [1: bb2, otherwise: bb1]; } bb1: { -+ unreachable; // scope 6 at $SRC_DIR/core/src/intrinsics.rs:LL:COL ++ unreachable; + } + + bb2: { -+ _0 = move ((_2 as Some).0: T); // scope 1 at $SRC_DIR/core/src/option.rs:LL:COL -+ StorageDead(_3); // scope 0 at $DIR/unwrap_unchecked.rs:+1:9: +1:27 - StorageDead(_2); // scope 0 at $DIR/unwrap_unchecked.rs:+1:26: +1:27 - return; // scope 0 at $DIR/unwrap_unchecked.rs:+2:2: +2:2 ++ _0 = move ((_2 as Some).0: T); ++ StorageDead(_3); + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/inline/unwrap_unchecked.unwrap_unchecked.Inline.panic-unwind.diff b/tests/mir-opt/inline/unwrap_unchecked.unwrap_unchecked.Inline.panic-unwind.diff index 8a8cd896e85db..fc638cb3acef4 100644 --- a/tests/mir-opt/inline/unwrap_unchecked.unwrap_unchecked.Inline.panic-unwind.diff +++ b/tests/mir-opt/inline/unwrap_unchecked.unwrap_unchecked.Inline.panic-unwind.diff @@ -2,54 +2,51 @@ + // MIR for `unwrap_unchecked` after Inline fn unwrap_unchecked(_1: Option) -> T { - debug slf => _1; // in scope 0 at $DIR/unwrap_unchecked.rs:+0:35: +0:38 - let mut _0: T; // return place in scope 0 at $DIR/unwrap_unchecked.rs:+0:54: +0:55 - let mut _2: std::option::Option; // in scope 0 at $DIR/unwrap_unchecked.rs:+1:5: +1:8 -+ scope 1 (inlined #[track_caller] Option::::unwrap_unchecked) { // at $DIR/unwrap_unchecked.rs:10:9: 10:27 -+ debug self => _2; // in scope 1 at $SRC_DIR/core/src/option.rs:LL:COL -+ let mut _3: &std::option::Option; // in scope 1 at $SRC_DIR/core/src/option.rs:LL:COL -+ let mut _4: isize; // in scope 1 at $SRC_DIR/core/src/option.rs:LL:COL + debug slf => _1; + let mut _0: T; + let mut _2: std::option::Option; ++ scope 1 (inlined #[track_caller] Option::::unwrap_unchecked) { ++ debug self => _2; ++ let mut _3: &std::option::Option; ++ let mut _4: isize; + scope 2 { -+ debug val => _0; // in scope 2 at $SRC_DIR/core/src/option.rs:LL:COL ++ debug val => _0; + } + scope 3 { -+ scope 5 (inlined unreachable_unchecked) { // at $SRC_DIR/core/src/option.rs:LL:COL ++ scope 5 (inlined unreachable_unchecked) { + scope 6 { -+ scope 7 (inlined unreachable_unchecked::runtime) { // at $SRC_DIR/core/src/intrinsics.rs:LL:COL ++ scope 7 (inlined unreachable_unchecked::runtime) { + } + } + } + } -+ scope 4 (inlined Option::::is_some) { // at $SRC_DIR/core/src/option.rs:LL:COL -+ debug self => _3; // in scope 4 at $SRC_DIR/core/src/option.rs:LL:COL ++ scope 4 (inlined Option::::is_some) { ++ debug self => _3; + } + } bb0: { - StorageLive(_2); // scope 0 at $DIR/unwrap_unchecked.rs:+1:5: +1:8 - _2 = move _1; // scope 0 at $DIR/unwrap_unchecked.rs:+1:5: +1:8 -- _0 = Option::::unwrap_unchecked(move _2) -> [return: bb1, unwind: bb2]; // scope 0 at $DIR/unwrap_unchecked.rs:+1:5: +1:27 -- // mir::Constant -- // + span: $DIR/unwrap_unchecked.rs:10:9: 10:25 -- // + literal: Const { ty: unsafe fn(Option) -> T {Option::::unwrap_unchecked}, val: Value() } -+ StorageLive(_3); // scope 0 at $DIR/unwrap_unchecked.rs:+1:9: +1:27 -+ _4 = discriminant(_2); // scope 1 at $SRC_DIR/core/src/option.rs:LL:COL -+ switchInt(move _4) -> [1: bb2, otherwise: bb1]; // scope 1 at $SRC_DIR/core/src/option.rs:LL:COL + StorageLive(_2); + _2 = move _1; +- _0 = Option::::unwrap_unchecked(move _2) -> [return: bb1, unwind: bb2]; ++ StorageLive(_3); ++ _4 = discriminant(_2); ++ switchInt(move _4) -> [1: bb2, otherwise: bb1]; } bb1: { -- StorageDead(_2); // scope 0 at $DIR/unwrap_unchecked.rs:+1:26: +1:27 -- return; // scope 0 at $DIR/unwrap_unchecked.rs:+2:2: +2:2 -+ unreachable; // scope 6 at $SRC_DIR/core/src/intrinsics.rs:LL:COL +- StorageDead(_2); +- return; ++ unreachable; } - bb2 (cleanup): { -- resume; // scope 0 at $DIR/unwrap_unchecked.rs:+0:1: +2:2 +- resume; + bb2: { -+ _0 = move ((_2 as Some).0: T); // scope 1 at $SRC_DIR/core/src/option.rs:LL:COL -+ StorageDead(_3); // scope 0 at $DIR/unwrap_unchecked.rs:+1:9: +1:27 -+ StorageDead(_2); // scope 0 at $DIR/unwrap_unchecked.rs:+1:26: +1:27 -+ return; // scope 0 at $DIR/unwrap_unchecked.rs:+2:2: +2:2 ++ _0 = move ((_2 as Some).0: T); ++ StorageDead(_3); ++ StorageDead(_2); ++ return; } } diff --git a/tests/mir-opt/inline/unwrap_unchecked.unwrap_unchecked.PreCodegen.after.panic-abort.mir b/tests/mir-opt/inline/unwrap_unchecked.unwrap_unchecked.PreCodegen.after.panic-abort.mir index 601d83702f435..fcc4d43ced66e 100644 --- a/tests/mir-opt/inline/unwrap_unchecked.unwrap_unchecked.PreCodegen.after.panic-abort.mir +++ b/tests/mir-opt/inline/unwrap_unchecked.unwrap_unchecked.PreCodegen.after.panic-abort.mir @@ -1,41 +1,41 @@ // MIR for `unwrap_unchecked` after PreCodegen fn unwrap_unchecked(_1: Option) -> T { - debug slf => _1; // in scope 0 at $DIR/unwrap_unchecked.rs:+0:35: +0:38 - let mut _0: T; // return place in scope 0 at $DIR/unwrap_unchecked.rs:+0:54: +0:55 - scope 1 (inlined #[track_caller] Option::::unwrap_unchecked) { // at $DIR/unwrap_unchecked.rs:10:9: 10:27 - debug self => _1; // in scope 1 at $SRC_DIR/core/src/option.rs:LL:COL - let mut _2: isize; // in scope 1 at $SRC_DIR/core/src/option.rs:LL:COL - let mut _3: &std::option::Option; // in scope 1 at $SRC_DIR/core/src/option.rs:LL:COL + debug slf => _1; + let mut _0: T; + scope 1 (inlined #[track_caller] Option::::unwrap_unchecked) { + debug self => _1; + let mut _2: isize; + let mut _3: &std::option::Option; scope 2 { - debug val => _0; // in scope 2 at $SRC_DIR/core/src/option.rs:LL:COL + debug val => _0; } scope 3 { - scope 5 (inlined unreachable_unchecked) { // at $SRC_DIR/core/src/option.rs:LL:COL + scope 5 (inlined unreachable_unchecked) { scope 6 { - scope 7 (inlined unreachable_unchecked::runtime) { // at $SRC_DIR/core/src/intrinsics.rs:LL:COL + scope 7 (inlined unreachable_unchecked::runtime) { } } } } - scope 4 (inlined Option::::is_some) { // at $SRC_DIR/core/src/option.rs:LL:COL - debug self => _3; // in scope 4 at $SRC_DIR/core/src/option.rs:LL:COL + scope 4 (inlined Option::::is_some) { + debug self => _3; } } bb0: { - StorageLive(_3); // scope 0 at $DIR/unwrap_unchecked.rs:+1:9: +1:27 - _2 = discriminant(_1); // scope 1 at $SRC_DIR/core/src/option.rs:LL:COL - switchInt(move _2) -> [1: bb1, otherwise: bb2]; // scope 1 at $SRC_DIR/core/src/option.rs:LL:COL + StorageLive(_3); + _2 = discriminant(_1); + switchInt(move _2) -> [1: bb1, otherwise: bb2]; } bb1: { - _0 = move ((_1 as Some).0: T); // scope 1 at $SRC_DIR/core/src/option.rs:LL:COL - StorageDead(_3); // scope 0 at $DIR/unwrap_unchecked.rs:+1:9: +1:27 - return; // scope 0 at $DIR/unwrap_unchecked.rs:+2:2: +2:2 + _0 = move ((_1 as Some).0: T); + StorageDead(_3); + return; } bb2: { - unreachable; // scope 6 at $SRC_DIR/core/src/intrinsics.rs:LL:COL + unreachable; } } diff --git a/tests/mir-opt/inline/unwrap_unchecked.unwrap_unchecked.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/inline/unwrap_unchecked.unwrap_unchecked.PreCodegen.after.panic-unwind.mir index 601d83702f435..fcc4d43ced66e 100644 --- a/tests/mir-opt/inline/unwrap_unchecked.unwrap_unchecked.PreCodegen.after.panic-unwind.mir +++ b/tests/mir-opt/inline/unwrap_unchecked.unwrap_unchecked.PreCodegen.after.panic-unwind.mir @@ -1,41 +1,41 @@ // MIR for `unwrap_unchecked` after PreCodegen fn unwrap_unchecked(_1: Option) -> T { - debug slf => _1; // in scope 0 at $DIR/unwrap_unchecked.rs:+0:35: +0:38 - let mut _0: T; // return place in scope 0 at $DIR/unwrap_unchecked.rs:+0:54: +0:55 - scope 1 (inlined #[track_caller] Option::::unwrap_unchecked) { // at $DIR/unwrap_unchecked.rs:10:9: 10:27 - debug self => _1; // in scope 1 at $SRC_DIR/core/src/option.rs:LL:COL - let mut _2: isize; // in scope 1 at $SRC_DIR/core/src/option.rs:LL:COL - let mut _3: &std::option::Option; // in scope 1 at $SRC_DIR/core/src/option.rs:LL:COL + debug slf => _1; + let mut _0: T; + scope 1 (inlined #[track_caller] Option::::unwrap_unchecked) { + debug self => _1; + let mut _2: isize; + let mut _3: &std::option::Option; scope 2 { - debug val => _0; // in scope 2 at $SRC_DIR/core/src/option.rs:LL:COL + debug val => _0; } scope 3 { - scope 5 (inlined unreachable_unchecked) { // at $SRC_DIR/core/src/option.rs:LL:COL + scope 5 (inlined unreachable_unchecked) { scope 6 { - scope 7 (inlined unreachable_unchecked::runtime) { // at $SRC_DIR/core/src/intrinsics.rs:LL:COL + scope 7 (inlined unreachable_unchecked::runtime) { } } } } - scope 4 (inlined Option::::is_some) { // at $SRC_DIR/core/src/option.rs:LL:COL - debug self => _3; // in scope 4 at $SRC_DIR/core/src/option.rs:LL:COL + scope 4 (inlined Option::::is_some) { + debug self => _3; } } bb0: { - StorageLive(_3); // scope 0 at $DIR/unwrap_unchecked.rs:+1:9: +1:27 - _2 = discriminant(_1); // scope 1 at $SRC_DIR/core/src/option.rs:LL:COL - switchInt(move _2) -> [1: bb1, otherwise: bb2]; // scope 1 at $SRC_DIR/core/src/option.rs:LL:COL + StorageLive(_3); + _2 = discriminant(_1); + switchInt(move _2) -> [1: bb1, otherwise: bb2]; } bb1: { - _0 = move ((_1 as Some).0: T); // scope 1 at $SRC_DIR/core/src/option.rs:LL:COL - StorageDead(_3); // scope 0 at $DIR/unwrap_unchecked.rs:+1:9: +1:27 - return; // scope 0 at $DIR/unwrap_unchecked.rs:+2:2: +2:2 + _0 = move ((_1 as Some).0: T); + StorageDead(_3); + return; } bb2: { - unreachable; // scope 6 at $SRC_DIR/core/src/intrinsics.rs:LL:COL + unreachable; } } diff --git a/tests/mir-opt/instrument_coverage.bar.InstrumentCoverage.diff b/tests/mir-opt/instrument_coverage.bar.InstrumentCoverage.diff index a3cee3ecf61cb..0aece766bd5d0 100644 --- a/tests/mir-opt/instrument_coverage.bar.InstrumentCoverage.diff +++ b/tests/mir-opt/instrument_coverage.bar.InstrumentCoverage.diff @@ -2,12 +2,12 @@ + // MIR for `bar` after InstrumentCoverage fn bar() -> bool { - let mut _0: bool; // return place in scope 0 at /the/src/instrument_coverage.rs:+0:13: +0:17 + let mut _0: bool; bb0: { -+ Coverage::Counter(1) for /the/src/instrument_coverage.rs:20:1 - 22:2; // scope 0 at /the/src/instrument_coverage.rs:+2:2: +2:2 - _0 = const true; // scope 0 at /the/src/instrument_coverage.rs:+1:5: +1:9 - return; // scope 0 at /the/src/instrument_coverage.rs:+2:2: +2:2 ++ Coverage::Counter(1) for /the/src/instrument_coverage.rs:20:1 - 22:2; + _0 = const true; + return; } } diff --git a/tests/mir-opt/instrument_coverage.main.InstrumentCoverage.diff b/tests/mir-opt/instrument_coverage.main.InstrumentCoverage.diff index 49006e012dde6..7ec9011a526c5 100644 --- a/tests/mir-opt/instrument_coverage.main.InstrumentCoverage.diff +++ b/tests/mir-opt/instrument_coverage.main.InstrumentCoverage.diff @@ -2,50 +2,47 @@ + // MIR for `main` after InstrumentCoverage fn main() -> () { - let mut _0: (); // return place in scope 0 at /the/src/instrument_coverage.rs:+0:11: +0:11 - let mut _1: (); // in scope 0 at /the/src/instrument_coverage.rs:+0:1: +6:2 - let mut _2: bool; // in scope 0 at /the/src/instrument_coverage.rs:+2:12: +2:17 - let mut _3: !; // in scope 0 at /the/src/instrument_coverage.rs:+2:18: +4:10 + let mut _0: (); + let mut _1: (); + let mut _2: bool; + let mut _3: !; bb0: { -+ Coverage::Counter(1) for /the/src/instrument_coverage.rs:11:1 - 11:11; // scope 0 at /the/src/instrument_coverage.rs:+1:5: +5:6 - goto -> bb1; // scope 0 at /the/src/instrument_coverage.rs:+1:5: +5:6 ++ Coverage::Counter(1) for /the/src/instrument_coverage.rs:11:1 - 11:11; + goto -> bb1; } bb1: { -+ Coverage::Expression(4294967295) = 1 + 2 for /the/src/instrument_coverage.rs:12:5 - 13:17; // scope 0 at /the/src/instrument_coverage.rs:+1:5: +5:6 - falseUnwind -> [real: bb2, unwind: bb6]; // scope 0 at /the/src/instrument_coverage.rs:+1:5: +5:6 ++ Coverage::Expression(4294967295) = 1 + 2 for /the/src/instrument_coverage.rs:12:5 - 13:17; + falseUnwind -> [real: bb2, unwind: bb6]; } bb2: { - StorageLive(_2); // scope 0 at /the/src/instrument_coverage.rs:+2:12: +2:17 - _2 = bar() -> [return: bb3, unwind: bb6]; // scope 0 at /the/src/instrument_coverage.rs:+2:12: +2:17 - // mir::Constant - // + span: /the/src/instrument_coverage.rs:13:12: 13:15 - // + literal: Const { ty: fn() -> bool {bar}, val: Value() } + StorageLive(_2); + _2 = bar() -> [return: bb3, unwind: bb6]; } bb3: { - switchInt(move _2) -> [0: bb5, otherwise: bb4]; // scope 0 at /the/src/instrument_coverage.rs:+2:12: +2:17 + switchInt(move _2) -> [0: bb5, otherwise: bb4]; } bb4: { -+ Coverage::Expression(4294967293) = 4294967294 + 0 for /the/src/instrument_coverage.rs:17:1 - 17:2; // scope 0 at /the/src/instrument_coverage.rs:+6:2: +6:2 -+ Coverage::Expression(4294967294) = 4294967295 - 2 for /the/src/instrument_coverage.rs:14:13 - 14:18; // scope 0 at /the/src/instrument_coverage.rs:+6:2: +6:2 - _0 = const (); // scope 0 at /the/src/instrument_coverage.rs:+3:13: +3:18 - StorageDead(_2); // scope 0 at /the/src/instrument_coverage.rs:+4:9: +4:10 - return; // scope 0 at /the/src/instrument_coverage.rs:+6:2: +6:2 ++ Coverage::Expression(4294967293) = 4294967294 + 0 for /the/src/instrument_coverage.rs:17:1 - 17:2; ++ Coverage::Expression(4294967294) = 4294967295 - 2 for /the/src/instrument_coverage.rs:14:13 - 14:18; + _0 = const (); + StorageDead(_2); + return; } bb5: { -+ Coverage::Counter(2) for /the/src/instrument_coverage.rs:15:10 - 15:11; // scope 0 at /the/src/instrument_coverage.rs:+1:5: +5:6 - _1 = const (); // scope 0 at /the/src/instrument_coverage.rs:+4:10: +4:10 - StorageDead(_2); // scope 0 at /the/src/instrument_coverage.rs:+4:9: +4:10 - goto -> bb1; // scope 0 at /the/src/instrument_coverage.rs:+1:5: +5:6 ++ Coverage::Counter(2) for /the/src/instrument_coverage.rs:15:10 - 15:11; + _1 = const (); + StorageDead(_2); + goto -> bb1; } bb6 (cleanup): { - resume; // scope 0 at /the/src/instrument_coverage.rs:+0:1: +6:2 + resume; } } diff --git a/tests/mir-opt/instsimplify_duplicate_switch_targets.assert_zero.InstSimplify.diff b/tests/mir-opt/instsimplify_duplicate_switch_targets.assert_zero.InstSimplify.diff index 04ba8dd8e4dd2..e2b45c882d6f3 100644 --- a/tests/mir-opt/instsimplify_duplicate_switch_targets.assert_zero.InstSimplify.diff +++ b/tests/mir-opt/instsimplify_duplicate_switch_targets.assert_zero.InstSimplify.diff @@ -2,20 +2,20 @@ + // MIR for `assert_zero` after InstSimplify fn assert_zero(_1: u8) -> u8 { - let mut _0: u8; // return place in scope 0 at $DIR/instsimplify_duplicate_switch_targets.rs:+0:37: +0:39 + let mut _0: u8; bb0: { -- switchInt(_1) -> [0: bb2, 1: bb1, otherwise: bb1]; // scope 0 at $DIR/instsimplify_duplicate_switch_targets.rs:+3:13: +7:14 -+ switchInt(_1) -> [0: bb2, otherwise: bb1]; // scope 0 at $DIR/instsimplify_duplicate_switch_targets.rs:+3:13: +7:14 +- switchInt(_1) -> [0: bb2, 1: bb1, otherwise: bb1]; ++ switchInt(_1) -> [0: bb2, otherwise: bb1]; } bb1: { - unreachable; // scope 0 at $DIR/instsimplify_duplicate_switch_targets.rs:+10:13: +10:26 + unreachable; } bb2: { - _0 = _1; // scope 0 at $DIR/instsimplify_duplicate_switch_targets.rs:+13:13: +13:20 - return; // scope 0 at $DIR/instsimplify_duplicate_switch_targets.rs:+14:13: +14:21 + _0 = _1; + return; } } diff --git a/tests/mir-opt/intrinsic_asserts.generic.InstSimplify.diff b/tests/mir-opt/intrinsic_asserts.generic.InstSimplify.diff index a59f4a43aede4..efa52798e6509 100644 --- a/tests/mir-opt/intrinsic_asserts.generic.InstSimplify.diff +++ b/tests/mir-opt/intrinsic_asserts.generic.InstSimplify.diff @@ -2,41 +2,32 @@ + // MIR for `generic` after InstSimplify fn generic() -> () { - let mut _0: (); // return place in scope 0 at $DIR/intrinsic_asserts.rs:+0:21: +0:21 - let _1: (); // in scope 0 at $DIR/intrinsic_asserts.rs:+1:5: +1:46 - let _2: (); // in scope 0 at $DIR/intrinsic_asserts.rs:+2:5: +2:47 - let _3: (); // in scope 0 at $DIR/intrinsic_asserts.rs:+3:5: +3:60 + let mut _0: (); + let _1: (); + let _2: (); + let _3: (); bb0: { - nop; // scope 0 at $DIR/intrinsic_asserts.rs:+1:5: +1:46 - _1 = assert_inhabited::() -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/intrinsic_asserts.rs:+1:5: +1:46 - // mir::Constant - // + span: $DIR/intrinsic_asserts.rs:25:5: 25:44 - // + literal: Const { ty: extern "rust-intrinsic" fn() {assert_inhabited::}, val: Value() } + nop; + _1 = assert_inhabited::() -> [return: bb1, unwind unreachable]; } bb1: { - nop; // scope 0 at $DIR/intrinsic_asserts.rs:+1:46: +1:47 - nop; // scope 0 at $DIR/intrinsic_asserts.rs:+2:5: +2:47 - _2 = assert_zero_valid::() -> [return: bb2, unwind unreachable]; // scope 0 at $DIR/intrinsic_asserts.rs:+2:5: +2:47 - // mir::Constant - // + span: $DIR/intrinsic_asserts.rs:26:5: 26:45 - // + literal: Const { ty: extern "rust-intrinsic" fn() {assert_zero_valid::}, val: Value() } + nop; + nop; + _2 = assert_zero_valid::() -> [return: bb2, unwind unreachable]; } bb2: { - nop; // scope 0 at $DIR/intrinsic_asserts.rs:+2:47: +2:48 - nop; // scope 0 at $DIR/intrinsic_asserts.rs:+3:5: +3:60 - _3 = assert_mem_uninitialized_valid::() -> [return: bb3, unwind unreachable]; // scope 0 at $DIR/intrinsic_asserts.rs:+3:5: +3:60 - // mir::Constant - // + span: $DIR/intrinsic_asserts.rs:27:5: 27:58 - // + literal: Const { ty: extern "rust-intrinsic" fn() {assert_mem_uninitialized_valid::}, val: Value() } + nop; + nop; + _3 = assert_mem_uninitialized_valid::() -> [return: bb3, unwind unreachable]; } bb3: { - nop; // scope 0 at $DIR/intrinsic_asserts.rs:+3:60: +3:61 - nop; // scope 0 at $DIR/intrinsic_asserts.rs:+0:21: +4:2 - return; // scope 0 at $DIR/intrinsic_asserts.rs:+4:2: +4:2 + nop; + nop; + return; } } diff --git a/tests/mir-opt/intrinsic_asserts.panics.InstSimplify.diff b/tests/mir-opt/intrinsic_asserts.panics.InstSimplify.diff index 195e8bd4eae0f..46e0533780976 100644 --- a/tests/mir-opt/intrinsic_asserts.panics.InstSimplify.diff +++ b/tests/mir-opt/intrinsic_asserts.panics.InstSimplify.diff @@ -2,46 +2,35 @@ + // MIR for `panics` after InstSimplify fn panics() -> () { - let mut _0: (); // return place in scope 0 at $DIR/intrinsic_asserts.rs:+0:17: +0:17 - let _1: (); // in scope 0 at $DIR/intrinsic_asserts.rs:+1:5: +1:50 - let _2: (); // in scope 0 at $DIR/intrinsic_asserts.rs:+2:5: +2:49 - let _3: (); // in scope 0 at $DIR/intrinsic_asserts.rs:+3:5: +3:62 + let mut _0: (); + let _1: (); + let _2: (); + let _3: (); bb0: { - nop; // scope 0 at $DIR/intrinsic_asserts.rs:+1:5: +1:50 -- _1 = assert_inhabited::() -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/intrinsic_asserts.rs:+1:5: +1:50 -+ _1 = assert_inhabited::() -> unwind unreachable; // scope 0 at $DIR/intrinsic_asserts.rs:+1:5: +1:50 - // mir::Constant - // + span: $DIR/intrinsic_asserts.rs:17:5: 17:48 - // + literal: Const { ty: extern "rust-intrinsic" fn() {assert_inhabited::}, val: Value() } + nop; +- _1 = assert_inhabited::() -> [return: bb1, unwind unreachable]; ++ _1 = assert_inhabited::() -> unwind unreachable; } bb1: { - nop; // scope 0 at $DIR/intrinsic_asserts.rs:+1:50: +1:51 - nop; // scope 0 at $DIR/intrinsic_asserts.rs:+2:5: +2:49 -- _2 = assert_zero_valid::<&u8>() -> [return: bb2, unwind unreachable]; // scope 0 at $DIR/intrinsic_asserts.rs:+2:5: +2:49 -+ _2 = assert_zero_valid::<&u8>() -> unwind unreachable; // scope 0 at $DIR/intrinsic_asserts.rs:+2:5: +2:49 - // mir::Constant - // + span: $DIR/intrinsic_asserts.rs:18:5: 18:47 - // + user_ty: UserType(0) - // + literal: Const { ty: extern "rust-intrinsic" fn() {assert_zero_valid::<&u8>}, val: Value() } + nop; + nop; +- _2 = assert_zero_valid::<&u8>() -> [return: bb2, unwind unreachable]; ++ _2 = assert_zero_valid::<&u8>() -> unwind unreachable; } bb2: { - nop; // scope 0 at $DIR/intrinsic_asserts.rs:+2:49: +2:50 - nop; // scope 0 at $DIR/intrinsic_asserts.rs:+3:5: +3:62 -- _3 = assert_mem_uninitialized_valid::<&u8>() -> [return: bb3, unwind unreachable]; // scope 0 at $DIR/intrinsic_asserts.rs:+3:5: +3:62 -+ _3 = assert_mem_uninitialized_valid::<&u8>() -> unwind unreachable; // scope 0 at $DIR/intrinsic_asserts.rs:+3:5: +3:62 - // mir::Constant - // + span: $DIR/intrinsic_asserts.rs:19:5: 19:60 - // + user_ty: UserType(1) - // + literal: Const { ty: extern "rust-intrinsic" fn() {assert_mem_uninitialized_valid::<&u8>}, val: Value() } + nop; + nop; +- _3 = assert_mem_uninitialized_valid::<&u8>() -> [return: bb3, unwind unreachable]; ++ _3 = assert_mem_uninitialized_valid::<&u8>() -> unwind unreachable; } bb3: { - nop; // scope 0 at $DIR/intrinsic_asserts.rs:+3:62: +3:63 - nop; // scope 0 at $DIR/intrinsic_asserts.rs:+0:17: +4:2 - return; // scope 0 at $DIR/intrinsic_asserts.rs:+4:2: +4:2 + nop; + nop; + return; } } diff --git a/tests/mir-opt/intrinsic_asserts.removable.InstSimplify.diff b/tests/mir-opt/intrinsic_asserts.removable.InstSimplify.diff index a4a65074caa1c..70c3e8830f4ad 100644 --- a/tests/mir-opt/intrinsic_asserts.removable.InstSimplify.diff +++ b/tests/mir-opt/intrinsic_asserts.removable.InstSimplify.diff @@ -2,44 +2,35 @@ + // MIR for `removable` after InstSimplify fn removable() -> () { - let mut _0: (); // return place in scope 0 at $DIR/intrinsic_asserts.rs:+0:20: +0:20 - let _1: (); // in scope 0 at $DIR/intrinsic_asserts.rs:+1:5: +1:47 - let _2: (); // in scope 0 at $DIR/intrinsic_asserts.rs:+2:5: +2:48 - let _3: (); // in scope 0 at $DIR/intrinsic_asserts.rs:+3:5: +3:61 + let mut _0: (); + let _1: (); + let _2: (); + let _3: (); bb0: { - nop; // scope 0 at $DIR/intrinsic_asserts.rs:+1:5: +1:47 -- _1 = assert_inhabited::<()>() -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/intrinsic_asserts.rs:+1:5: +1:47 -- // mir::Constant -- // + span: $DIR/intrinsic_asserts.rs:7:5: 7:45 -- // + literal: Const { ty: extern "rust-intrinsic" fn() {assert_inhabited::<()>}, val: Value() } -+ goto -> bb1; // scope 0 at $DIR/intrinsic_asserts.rs:+1:5: +1:47 + nop; +- _1 = assert_inhabited::<()>() -> [return: bb1, unwind unreachable]; ++ goto -> bb1; } bb1: { - nop; // scope 0 at $DIR/intrinsic_asserts.rs:+1:47: +1:48 - nop; // scope 0 at $DIR/intrinsic_asserts.rs:+2:5: +2:48 -- _2 = assert_zero_valid::() -> [return: bb2, unwind unreachable]; // scope 0 at $DIR/intrinsic_asserts.rs:+2:5: +2:48 -- // mir::Constant -- // + span: $DIR/intrinsic_asserts.rs:8:5: 8:46 -- // + literal: Const { ty: extern "rust-intrinsic" fn() {assert_zero_valid::}, val: Value() } -+ goto -> bb2; // scope 0 at $DIR/intrinsic_asserts.rs:+2:5: +2:48 + nop; + nop; +- _2 = assert_zero_valid::() -> [return: bb2, unwind unreachable]; ++ goto -> bb2; } bb2: { - nop; // scope 0 at $DIR/intrinsic_asserts.rs:+2:48: +2:49 - nop; // scope 0 at $DIR/intrinsic_asserts.rs:+3:5: +3:61 -- _3 = assert_mem_uninitialized_valid::() -> [return: bb3, unwind unreachable]; // scope 0 at $DIR/intrinsic_asserts.rs:+3:5: +3:61 -- // mir::Constant -- // + span: $DIR/intrinsic_asserts.rs:9:5: 9:59 -- // + literal: Const { ty: extern "rust-intrinsic" fn() {assert_mem_uninitialized_valid::}, val: Value() } -+ goto -> bb3; // scope 0 at $DIR/intrinsic_asserts.rs:+3:5: +3:61 + nop; + nop; +- _3 = assert_mem_uninitialized_valid::() -> [return: bb3, unwind unreachable]; ++ goto -> bb3; } bb3: { - nop; // scope 0 at $DIR/intrinsic_asserts.rs:+3:61: +3:62 - nop; // scope 0 at $DIR/intrinsic_asserts.rs:+0:20: +4:2 - return; // scope 0 at $DIR/intrinsic_asserts.rs:+4:2: +4:2 + nop; + nop; + return; } } diff --git a/tests/mir-opt/issue_101973.inner.ConstProp.panic-abort.diff b/tests/mir-opt/issue_101973.inner.ConstProp.panic-abort.diff index eb47f0d31833b..e018563dbfeef 100644 --- a/tests/mir-opt/issue_101973.inner.ConstProp.panic-abort.diff +++ b/tests/mir-opt/issue_101973.inner.ConstProp.panic-abort.diff @@ -2,84 +2,81 @@ + // MIR for `inner` after ConstProp fn inner(_1: u32) -> i64 { - debug fields => _1; // in scope 0 at $DIR/issue_101973.rs:+0:14: +0:20 - let mut _0: i64; // return place in scope 0 at $DIR/issue_101973.rs:+0:30: +0:33 - let mut _2: i32; // in scope 0 at $DIR/issue_101973.rs:+1:5: +1:65 - let mut _3: u32; // in scope 0 at $DIR/issue_101973.rs:+1:5: +1:58 - let mut _4: u32; // in scope 0 at $DIR/issue_101973.rs:+1:5: +1:17 - let mut _5: u32; // in scope 0 at $DIR/issue_101973.rs:+1:10: +1:16 - let mut _6: u32; // in scope 0 at $DIR/issue_101973.rs:+1:31: +1:57 - let mut _7: u32; // in scope 0 at $DIR/issue_101973.rs:+1:31: +1:52 - let mut _8: u32; // in scope 0 at $DIR/issue_101973.rs:+1:32: +1:45 - let mut _9: u32; // in scope 0 at $DIR/issue_101973.rs:+1:33: +1:39 - let mut _10: u32; // in scope 0 at $DIR/issue_101973.rs:+1:32: +1:45 - let mut _11: bool; // in scope 0 at $DIR/issue_101973.rs:+1:32: +1:45 - let mut _12: u32; // in scope 0 at $DIR/issue_101973.rs:+1:31: +1:57 - let mut _13: bool; // in scope 0 at $DIR/issue_101973.rs:+1:31: +1:57 - scope 1 (inlined imm8) { // at $DIR/issue_101973.rs:15:5: 15:17 - debug x => _1; // in scope 1 at $DIR/issue_101973.rs:6:13: 6:14 - let mut _14: u32; // in scope 1 at $DIR/issue_101973.rs:8:12: 8:20 - let mut _15: u32; // in scope 1 at $DIR/issue_101973.rs:8:12: 8:27 + debug fields => _1; + let mut _0: i64; + let mut _2: i32; + let mut _3: u32; + let mut _4: u32; + let mut _5: u32; + let mut _6: u32; + let mut _7: u32; + let mut _8: u32; + let mut _9: u32; + let mut _10: u32; + let mut _11: bool; + let mut _12: u32; + let mut _13: bool; + scope 1 (inlined imm8) { + debug x => _1; + let mut _14: u32; + let mut _15: u32; scope 2 { - debug out => _4; // in scope 2 at $DIR/issue_101973.rs:7:9: 7:16 + debug out => _4; } } - scope 3 (inlined core::num::::rotate_right) { // at $DIR/issue_101973.rs:15:18: 15:58 - debug self => _4; // in scope 3 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - debug n => _6; // in scope 3 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL + scope 3 (inlined core::num::::rotate_right) { + debug self => _4; + debug n => _6; } bb0: { - StorageLive(_2); // scope 0 at $DIR/issue_101973.rs:+1:5: +1:65 - StorageLive(_3); // scope 0 at $DIR/issue_101973.rs:+1:5: +1:58 - StorageLive(_4); // scope 0 at $DIR/issue_101973.rs:+1:5: +1:17 - StorageLive(_15); // scope 2 at $DIR/issue_101973.rs:8:12: 8:27 - StorageLive(_14); // scope 2 at $DIR/issue_101973.rs:8:12: 8:20 - _14 = Shr(_1, const 0_i32); // scope 2 at $DIR/issue_101973.rs:8:12: 8:20 - _15 = BitAnd(move _14, const 255_u32); // scope 2 at $DIR/issue_101973.rs:8:12: 8:27 - StorageDead(_14); // scope 2 at $DIR/issue_101973.rs:8:26: 8:27 - _4 = BitOr(const 0_u32, move _15); // scope 2 at $DIR/issue_101973.rs:8:5: 8:27 - StorageDead(_15); // scope 2 at $DIR/issue_101973.rs:8:26: 8:27 - StorageLive(_6); // scope 0 at $DIR/issue_101973.rs:+1:31: +1:57 - StorageLive(_7); // scope 0 at $DIR/issue_101973.rs:+1:31: +1:52 - StorageLive(_8); // scope 0 at $DIR/issue_101973.rs:+1:32: +1:45 -- _10 = const 8_i32 as u32 (IntToInt); // scope 0 at $DIR/issue_101973.rs:+1:32: +1:45 -- _11 = Lt(move _10, const 32_u32); // scope 0 at $DIR/issue_101973.rs:+1:32: +1:45 -- assert(move _11, "attempt to shift right by `{}`, which would overflow", const 8_i32) -> [success: bb1, unwind unreachable]; // scope 0 at $DIR/issue_101973.rs:+1:32: +1:45 -+ _10 = const 8_u32; // scope 0 at $DIR/issue_101973.rs:+1:32: +1:45 -+ _11 = const true; // scope 0 at $DIR/issue_101973.rs:+1:32: +1:45 -+ assert(const true, "attempt to shift right by `{}`, which would overflow", const 8_i32) -> [success: bb1, unwind unreachable]; // scope 0 at $DIR/issue_101973.rs:+1:32: +1:45 + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + StorageLive(_15); + StorageLive(_14); + _14 = Shr(_1, const 0_i32); + _15 = BitAnd(move _14, const 255_u32); + StorageDead(_14); + _4 = BitOr(const 0_u32, move _15); + StorageDead(_15); + StorageLive(_6); + StorageLive(_7); + StorageLive(_8); +- _10 = const 8_i32 as u32 (IntToInt); +- _11 = Lt(move _10, const 32_u32); +- assert(move _11, "attempt to shift right by `{}`, which would overflow", const 8_i32) -> [success: bb1, unwind unreachable]; ++ _10 = const 8_u32; ++ _11 = const true; ++ assert(const true, "attempt to shift right by `{}`, which would overflow", const 8_i32) -> [success: bb1, unwind unreachable]; } bb1: { - _8 = Shr(_1, const 8_i32); // scope 0 at $DIR/issue_101973.rs:+1:32: +1:45 - _7 = BitAnd(move _8, const 15_u32); // scope 0 at $DIR/issue_101973.rs:+1:31: +1:52 - StorageDead(_8); // scope 0 at $DIR/issue_101973.rs:+1:51: +1:52 -- _12 = const 1_i32 as u32 (IntToInt); // scope 0 at $DIR/issue_101973.rs:+1:31: +1:57 -- _13 = Lt(move _12, const 32_u32); // scope 0 at $DIR/issue_101973.rs:+1:31: +1:57 -- assert(move _13, "attempt to shift left by `{}`, which would overflow", const 1_i32) -> [success: bb2, unwind unreachable]; // scope 0 at $DIR/issue_101973.rs:+1:31: +1:57 -+ _12 = const 1_u32; // scope 0 at $DIR/issue_101973.rs:+1:31: +1:57 -+ _13 = const true; // scope 0 at $DIR/issue_101973.rs:+1:31: +1:57 -+ assert(const true, "attempt to shift left by `{}`, which would overflow", const 1_i32) -> [success: bb2, unwind unreachable]; // scope 0 at $DIR/issue_101973.rs:+1:31: +1:57 + _8 = Shr(_1, const 8_i32); + _7 = BitAnd(move _8, const 15_u32); + StorageDead(_8); +- _12 = const 1_i32 as u32 (IntToInt); +- _13 = Lt(move _12, const 32_u32); +- assert(move _13, "attempt to shift left by `{}`, which would overflow", const 1_i32) -> [success: bb2, unwind unreachable]; ++ _12 = const 1_u32; ++ _13 = const true; ++ assert(const true, "attempt to shift left by `{}`, which would overflow", const 1_i32) -> [success: bb2, unwind unreachable]; } bb2: { - _6 = Shl(move _7, const 1_i32); // scope 0 at $DIR/issue_101973.rs:+1:31: +1:57 - StorageDead(_7); // scope 0 at $DIR/issue_101973.rs:+1:56: +1:57 - _3 = rotate_right::(_4, _6) -> [return: bb3, unwind unreachable]; // scope 3 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - // + literal: Const { ty: extern "rust-intrinsic" fn(u32, u32) -> u32 {rotate_right::}, val: Value() } + _6 = Shl(move _7, const 1_i32); + StorageDead(_7); + _3 = rotate_right::(_4, _6) -> [return: bb3, unwind unreachable]; } bb3: { - StorageDead(_6); // scope 0 at $DIR/issue_101973.rs:+1:57: +1:58 - StorageDead(_4); // scope 0 at $DIR/issue_101973.rs:+1:57: +1:58 - _2 = move _3 as i32 (IntToInt); // scope 0 at $DIR/issue_101973.rs:+1:5: +1:65 - StorageDead(_3); // scope 0 at $DIR/issue_101973.rs:+1:64: +1:65 - _0 = move _2 as i64 (IntToInt); // scope 0 at $DIR/issue_101973.rs:+1:5: +1:72 - StorageDead(_2); // scope 0 at $DIR/issue_101973.rs:+1:71: +1:72 - return; // scope 0 at $DIR/issue_101973.rs:+2:2: +2:2 + StorageDead(_6); + StorageDead(_4); + _2 = move _3 as i32 (IntToInt); + StorageDead(_3); + _0 = move _2 as i64 (IntToInt); + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/issue_101973.inner.ConstProp.panic-unwind.diff b/tests/mir-opt/issue_101973.inner.ConstProp.panic-unwind.diff index 2f68f65c87492..fbfb8f1fd4e6b 100644 --- a/tests/mir-opt/issue_101973.inner.ConstProp.panic-unwind.diff +++ b/tests/mir-opt/issue_101973.inner.ConstProp.panic-unwind.diff @@ -2,84 +2,81 @@ + // MIR for `inner` after ConstProp fn inner(_1: u32) -> i64 { - debug fields => _1; // in scope 0 at $DIR/issue_101973.rs:+0:14: +0:20 - let mut _0: i64; // return place in scope 0 at $DIR/issue_101973.rs:+0:30: +0:33 - let mut _2: i32; // in scope 0 at $DIR/issue_101973.rs:+1:5: +1:65 - let mut _3: u32; // in scope 0 at $DIR/issue_101973.rs:+1:5: +1:58 - let mut _4: u32; // in scope 0 at $DIR/issue_101973.rs:+1:5: +1:17 - let mut _5: u32; // in scope 0 at $DIR/issue_101973.rs:+1:10: +1:16 - let mut _6: u32; // in scope 0 at $DIR/issue_101973.rs:+1:31: +1:57 - let mut _7: u32; // in scope 0 at $DIR/issue_101973.rs:+1:31: +1:52 - let mut _8: u32; // in scope 0 at $DIR/issue_101973.rs:+1:32: +1:45 - let mut _9: u32; // in scope 0 at $DIR/issue_101973.rs:+1:33: +1:39 - let mut _10: u32; // in scope 0 at $DIR/issue_101973.rs:+1:32: +1:45 - let mut _11: bool; // in scope 0 at $DIR/issue_101973.rs:+1:32: +1:45 - let mut _12: u32; // in scope 0 at $DIR/issue_101973.rs:+1:31: +1:57 - let mut _13: bool; // in scope 0 at $DIR/issue_101973.rs:+1:31: +1:57 - scope 1 (inlined imm8) { // at $DIR/issue_101973.rs:15:5: 15:17 - debug x => _1; // in scope 1 at $DIR/issue_101973.rs:6:13: 6:14 - let mut _14: u32; // in scope 1 at $DIR/issue_101973.rs:8:12: 8:20 - let mut _15: u32; // in scope 1 at $DIR/issue_101973.rs:8:12: 8:27 + debug fields => _1; + let mut _0: i64; + let mut _2: i32; + let mut _3: u32; + let mut _4: u32; + let mut _5: u32; + let mut _6: u32; + let mut _7: u32; + let mut _8: u32; + let mut _9: u32; + let mut _10: u32; + let mut _11: bool; + let mut _12: u32; + let mut _13: bool; + scope 1 (inlined imm8) { + debug x => _1; + let mut _14: u32; + let mut _15: u32; scope 2 { - debug out => _4; // in scope 2 at $DIR/issue_101973.rs:7:9: 7:16 + debug out => _4; } } - scope 3 (inlined core::num::::rotate_right) { // at $DIR/issue_101973.rs:15:18: 15:58 - debug self => _4; // in scope 3 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - debug n => _6; // in scope 3 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL + scope 3 (inlined core::num::::rotate_right) { + debug self => _4; + debug n => _6; } bb0: { - StorageLive(_2); // scope 0 at $DIR/issue_101973.rs:+1:5: +1:65 - StorageLive(_3); // scope 0 at $DIR/issue_101973.rs:+1:5: +1:58 - StorageLive(_4); // scope 0 at $DIR/issue_101973.rs:+1:5: +1:17 - StorageLive(_15); // scope 2 at $DIR/issue_101973.rs:8:12: 8:27 - StorageLive(_14); // scope 2 at $DIR/issue_101973.rs:8:12: 8:20 - _14 = Shr(_1, const 0_i32); // scope 2 at $DIR/issue_101973.rs:8:12: 8:20 - _15 = BitAnd(move _14, const 255_u32); // scope 2 at $DIR/issue_101973.rs:8:12: 8:27 - StorageDead(_14); // scope 2 at $DIR/issue_101973.rs:8:26: 8:27 - _4 = BitOr(const 0_u32, move _15); // scope 2 at $DIR/issue_101973.rs:8:5: 8:27 - StorageDead(_15); // scope 2 at $DIR/issue_101973.rs:8:26: 8:27 - StorageLive(_6); // scope 0 at $DIR/issue_101973.rs:+1:31: +1:57 - StorageLive(_7); // scope 0 at $DIR/issue_101973.rs:+1:31: +1:52 - StorageLive(_8); // scope 0 at $DIR/issue_101973.rs:+1:32: +1:45 -- _10 = const 8_i32 as u32 (IntToInt); // scope 0 at $DIR/issue_101973.rs:+1:32: +1:45 -- _11 = Lt(move _10, const 32_u32); // scope 0 at $DIR/issue_101973.rs:+1:32: +1:45 -- assert(move _11, "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb1; // scope 0 at $DIR/issue_101973.rs:+1:32: +1:45 -+ _10 = const 8_u32; // scope 0 at $DIR/issue_101973.rs:+1:32: +1:45 -+ _11 = const true; // scope 0 at $DIR/issue_101973.rs:+1:32: +1:45 -+ assert(const true, "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb1; // scope 0 at $DIR/issue_101973.rs:+1:32: +1:45 + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + StorageLive(_15); + StorageLive(_14); + _14 = Shr(_1, const 0_i32); + _15 = BitAnd(move _14, const 255_u32); + StorageDead(_14); + _4 = BitOr(const 0_u32, move _15); + StorageDead(_15); + StorageLive(_6); + StorageLive(_7); + StorageLive(_8); +- _10 = const 8_i32 as u32 (IntToInt); +- _11 = Lt(move _10, const 32_u32); +- assert(move _11, "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb1; ++ _10 = const 8_u32; ++ _11 = const true; ++ assert(const true, "attempt to shift right by `{}`, which would overflow", const 8_i32) -> bb1; } bb1: { - _8 = Shr(_1, const 8_i32); // scope 0 at $DIR/issue_101973.rs:+1:32: +1:45 - _7 = BitAnd(move _8, const 15_u32); // scope 0 at $DIR/issue_101973.rs:+1:31: +1:52 - StorageDead(_8); // scope 0 at $DIR/issue_101973.rs:+1:51: +1:52 -- _12 = const 1_i32 as u32 (IntToInt); // scope 0 at $DIR/issue_101973.rs:+1:31: +1:57 -- _13 = Lt(move _12, const 32_u32); // scope 0 at $DIR/issue_101973.rs:+1:31: +1:57 -- assert(move _13, "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb2; // scope 0 at $DIR/issue_101973.rs:+1:31: +1:57 -+ _12 = const 1_u32; // scope 0 at $DIR/issue_101973.rs:+1:31: +1:57 -+ _13 = const true; // scope 0 at $DIR/issue_101973.rs:+1:31: +1:57 -+ assert(const true, "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb2; // scope 0 at $DIR/issue_101973.rs:+1:31: +1:57 + _8 = Shr(_1, const 8_i32); + _7 = BitAnd(move _8, const 15_u32); + StorageDead(_8); +- _12 = const 1_i32 as u32 (IntToInt); +- _13 = Lt(move _12, const 32_u32); +- assert(move _13, "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb2; ++ _12 = const 1_u32; ++ _13 = const true; ++ assert(const true, "attempt to shift left by `{}`, which would overflow", const 1_i32) -> bb2; } bb2: { - _6 = Shl(move _7, const 1_i32); // scope 0 at $DIR/issue_101973.rs:+1:31: +1:57 - StorageDead(_7); // scope 0 at $DIR/issue_101973.rs:+1:56: +1:57 - _3 = rotate_right::(_4, _6) -> [return: bb3, unwind unreachable]; // scope 3 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - // + literal: Const { ty: extern "rust-intrinsic" fn(u32, u32) -> u32 {rotate_right::}, val: Value() } + _6 = Shl(move _7, const 1_i32); + StorageDead(_7); + _3 = rotate_right::(_4, _6) -> [return: bb3, unwind unreachable]; } bb3: { - StorageDead(_6); // scope 0 at $DIR/issue_101973.rs:+1:57: +1:58 - StorageDead(_4); // scope 0 at $DIR/issue_101973.rs:+1:57: +1:58 - _2 = move _3 as i32 (IntToInt); // scope 0 at $DIR/issue_101973.rs:+1:5: +1:65 - StorageDead(_3); // scope 0 at $DIR/issue_101973.rs:+1:64: +1:65 - _0 = move _2 as i64 (IntToInt); // scope 0 at $DIR/issue_101973.rs:+1:5: +1:72 - StorageDead(_2); // scope 0 at $DIR/issue_101973.rs:+1:71: +1:72 - return; // scope 0 at $DIR/issue_101973.rs:+2:2: +2:2 + StorageDead(_6); + StorageDead(_4); + _2 = move _3 as i32 (IntToInt); + StorageDead(_3); + _0 = move _2 as i64 (IntToInt); + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/issue_104451_unwindable_intrinsics.main.AbortUnwindingCalls.after.panic-abort.mir b/tests/mir-opt/issue_104451_unwindable_intrinsics.main.AbortUnwindingCalls.after.panic-abort.mir index a8e2bc7186d28..b4f2124093984 100644 --- a/tests/mir-opt/issue_104451_unwindable_intrinsics.main.AbortUnwindingCalls.after.panic-abort.mir +++ b/tests/mir-opt/issue_104451_unwindable_intrinsics.main.AbortUnwindingCalls.after.panic-abort.mir @@ -1,25 +1,16 @@ // MIR for `main` after AbortUnwindingCalls fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/issue_104451_unwindable_intrinsics.rs:+0:11: +0:11 - let mut _1: !; // in scope 0 at $DIR/issue_104451_unwindable_intrinsics.rs:+2:9: +2:62 - let mut _2: (); // in scope 0 at $DIR/issue_104451_unwindable_intrinsics.rs:+2:45: +2:47 + let mut _0: (); + let mut _1: !; + let mut _2: (); scope 1 { } bb0: { - StorageLive(_1); // scope 1 at $DIR/issue_104451_unwindable_intrinsics.rs:+2:9: +2:62 - StorageLive(_2); // scope 1 at $DIR/issue_104451_unwindable_intrinsics.rs:+2:45: +2:47 - _2 = (); // scope 1 at $DIR/issue_104451_unwindable_intrinsics.rs:+2:45: +2:47 - _1 = const_eval_select::<(), fn() -> ! {ow_ct}, fn() -> ! {ow_ct}, !>(move _2, ow_ct, ow_ct) -> unwind unreachable; // scope 1 at $DIR/issue_104451_unwindable_intrinsics.rs:+2:9: +2:62 - // mir::Constant - // + span: $DIR/issue_104451_unwindable_intrinsics.rs:8:9: 8:44 - // + literal: Const { ty: unsafe extern "rust-intrinsic" fn((), fn() -> ! {ow_ct}, fn() -> ! {ow_ct}) -> ! {const_eval_select::<(), fn() -> ! {ow_ct}, fn() -> ! {ow_ct}, !>}, val: Value() } - // mir::Constant - // + span: $DIR/issue_104451_unwindable_intrinsics.rs:8:49: 8:54 - // + literal: Const { ty: fn() -> ! {ow_ct}, val: Value() } - // mir::Constant - // + span: $DIR/issue_104451_unwindable_intrinsics.rs:8:56: 8:61 - // + literal: Const { ty: fn() -> ! {ow_ct}, val: Value() } + StorageLive(_1); + StorageLive(_2); + _2 = (); + _1 = const_eval_select::<(), fn() -> ! {ow_ct}, fn() -> ! {ow_ct}, !>(move _2, ow_ct, ow_ct) -> unwind unreachable; } } diff --git a/tests/mir-opt/issue_104451_unwindable_intrinsics.main.AbortUnwindingCalls.after.panic-unwind.mir b/tests/mir-opt/issue_104451_unwindable_intrinsics.main.AbortUnwindingCalls.after.panic-unwind.mir index f50c0eb478897..8ffd46311dc55 100644 --- a/tests/mir-opt/issue_104451_unwindable_intrinsics.main.AbortUnwindingCalls.after.panic-unwind.mir +++ b/tests/mir-opt/issue_104451_unwindable_intrinsics.main.AbortUnwindingCalls.after.panic-unwind.mir @@ -1,25 +1,16 @@ // MIR for `main` after AbortUnwindingCalls fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/issue_104451_unwindable_intrinsics.rs:+0:11: +0:11 - let mut _1: !; // in scope 0 at $DIR/issue_104451_unwindable_intrinsics.rs:+2:9: +2:62 - let mut _2: (); // in scope 0 at $DIR/issue_104451_unwindable_intrinsics.rs:+2:45: +2:47 + let mut _0: (); + let mut _1: !; + let mut _2: (); scope 1 { } bb0: { - StorageLive(_1); // scope 1 at $DIR/issue_104451_unwindable_intrinsics.rs:+2:9: +2:62 - StorageLive(_2); // scope 1 at $DIR/issue_104451_unwindable_intrinsics.rs:+2:45: +2:47 - _2 = (); // scope 1 at $DIR/issue_104451_unwindable_intrinsics.rs:+2:45: +2:47 - _1 = const_eval_select::<(), fn() -> ! {ow_ct}, fn() -> ! {ow_ct}, !>(move _2, ow_ct, ow_ct); // scope 1 at $DIR/issue_104451_unwindable_intrinsics.rs:+2:9: +2:62 - // mir::Constant - // + span: $DIR/issue_104451_unwindable_intrinsics.rs:8:9: 8:44 - // + literal: Const { ty: unsafe extern "rust-intrinsic" fn((), fn() -> ! {ow_ct}, fn() -> ! {ow_ct}) -> ! {const_eval_select::<(), fn() -> ! {ow_ct}, fn() -> ! {ow_ct}, !>}, val: Value() } - // mir::Constant - // + span: $DIR/issue_104451_unwindable_intrinsics.rs:8:49: 8:54 - // + literal: Const { ty: fn() -> ! {ow_ct}, val: Value() } - // mir::Constant - // + span: $DIR/issue_104451_unwindable_intrinsics.rs:8:56: 8:61 - // + literal: Const { ty: fn() -> ! {ow_ct}, val: Value() } + StorageLive(_1); + StorageLive(_2); + _2 = (); + _1 = const_eval_select::<(), fn() -> ! {ow_ct}, fn() -> ! {ow_ct}, !>(move _2, ow_ct, ow_ct); } } diff --git a/tests/mir-opt/issue_38669.main.SimplifyCfg-initial.after.mir b/tests/mir-opt/issue_38669.main.SimplifyCfg-initial.after.mir index ccaa508c13b50..632b5580656d6 100644 --- a/tests/mir-opt/issue_38669.main.SimplifyCfg-initial.after.mir +++ b/tests/mir-opt/issue_38669.main.SimplifyCfg-initial.after.mir @@ -1,52 +1,52 @@ // MIR for `main` after SimplifyCfg-initial fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/issue_38669.rs:+0:11: +0:11 - let mut _1: bool; // in scope 0 at $DIR/issue_38669.rs:+1:9: +1:25 - let mut _2: (); // in scope 0 at $DIR/issue_38669.rs:+0:1: +8:2 - let _3: (); // in scope 0 at $DIR/issue_38669.rs:+3:9: +5:10 - let mut _4: bool; // in scope 0 at $DIR/issue_38669.rs:+3:12: +3:24 - let mut _5: !; // in scope 0 at $DIR/issue_38669.rs:+3:25: +5:10 + let mut _0: (); + let mut _1: bool; + let mut _2: (); + let _3: (); + let mut _4: bool; + let mut _5: !; scope 1 { - debug should_break => _1; // in scope 1 at $DIR/issue_38669.rs:+1:9: +1:25 + debug should_break => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/issue_38669.rs:+1:9: +1:25 - _1 = const false; // scope 0 at $DIR/issue_38669.rs:+1:28: +1:33 - FakeRead(ForLet(None), _1); // scope 0 at $DIR/issue_38669.rs:+1:9: +1:25 - goto -> bb1; // scope 1 at $DIR/issue_38669.rs:+2:5: +7:6 + StorageLive(_1); + _1 = const false; + FakeRead(ForLet(None), _1); + goto -> bb1; } bb1: { - falseUnwind -> [real: bb2, unwind: bb5]; // scope 1 at $DIR/issue_38669.rs:+2:5: +7:6 + falseUnwind -> [real: bb2, unwind: bb5]; } bb2: { - StorageLive(_3); // scope 1 at $DIR/issue_38669.rs:+3:9: +5:10 - StorageLive(_4); // scope 1 at $DIR/issue_38669.rs:+3:12: +3:24 - _4 = _1; // scope 1 at $DIR/issue_38669.rs:+3:12: +3:24 - switchInt(move _4) -> [0: bb4, otherwise: bb3]; // scope 1 at $DIR/issue_38669.rs:+3:12: +3:24 + StorageLive(_3); + StorageLive(_4); + _4 = _1; + switchInt(move _4) -> [0: bb4, otherwise: bb3]; } bb3: { - _0 = const (); // scope 1 at $DIR/issue_38669.rs:+4:13: +4:18 - StorageDead(_4); // scope 1 at $DIR/issue_38669.rs:+5:9: +5:10 - StorageDead(_3); // scope 1 at $DIR/issue_38669.rs:+5:9: +5:10 - StorageDead(_1); // scope 0 at $DIR/issue_38669.rs:+8:1: +8:2 - return; // scope 0 at $DIR/issue_38669.rs:+8:2: +8:2 + _0 = const (); + StorageDead(_4); + StorageDead(_3); + StorageDead(_1); + return; } bb4: { - _3 = const (); // scope 1 at $DIR/issue_38669.rs:+5:10: +5:10 - StorageDead(_4); // scope 1 at $DIR/issue_38669.rs:+5:9: +5:10 - StorageDead(_3); // scope 1 at $DIR/issue_38669.rs:+5:9: +5:10 - _1 = const true; // scope 1 at $DIR/issue_38669.rs:+6:9: +6:28 - _2 = const (); // scope 1 at $DIR/issue_38669.rs:+2:10: +7:6 - goto -> bb1; // scope 1 at $DIR/issue_38669.rs:+2:5: +7:6 + _3 = const (); + StorageDead(_4); + StorageDead(_3); + _1 = const true; + _2 = const (); + goto -> bb1; } bb5 (cleanup): { - resume; // scope 0 at $DIR/issue_38669.rs:+0:1: +8:2 + resume; } } diff --git a/tests/mir-opt/issue_41110.main.ElaborateDrops.panic-abort.diff b/tests/mir-opt/issue_41110.main.ElaborateDrops.panic-abort.diff index ac2520249285e..11501907b8812 100644 --- a/tests/mir-opt/issue_41110.main.ElaborateDrops.panic-abort.diff +++ b/tests/mir-opt/issue_41110.main.ElaborateDrops.panic-abort.diff @@ -2,74 +2,68 @@ + // MIR for `main` after ElaborateDrops fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/issue_41110.rs:+0:11: +0:11 - let _1: (); // in scope 0 at $DIR/issue_41110.rs:+1:9: +1:10 - let mut _2: S; // in scope 0 at $DIR/issue_41110.rs:+1:13: +1:14 - let mut _3: S; // in scope 0 at $DIR/issue_41110.rs:+1:21: +1:27 - let mut _4: S; // in scope 0 at $DIR/issue_41110.rs:+1:21: +1:22 -+ let mut _5: bool; // in scope 0 at $DIR/issue_41110.rs:+1:27: +1:28 + let mut _0: (); + let _1: (); + let mut _2: S; + let mut _3: S; + let mut _4: S; ++ let mut _5: bool; scope 1 { - debug x => _1; // in scope 1 at $DIR/issue_41110.rs:+1:9: +1:10 + debug x => _1; } bb0: { -+ _5 = const false; // scope 0 at $DIR/issue_41110.rs:+1:9: +1:10 - StorageLive(_1); // scope 0 at $DIR/issue_41110.rs:+1:9: +1:10 - StorageLive(_2); // scope 0 at $DIR/issue_41110.rs:+1:13: +1:14 -+ _5 = const true; // scope 0 at $DIR/issue_41110.rs:+1:13: +1:14 - _2 = S; // scope 0 at $DIR/issue_41110.rs:+1:13: +1:14 - StorageLive(_3); // scope 0 at $DIR/issue_41110.rs:+1:21: +1:27 - StorageLive(_4); // scope 0 at $DIR/issue_41110.rs:+1:21: +1:22 - _4 = S; // scope 0 at $DIR/issue_41110.rs:+1:21: +1:22 - _3 = S::id(move _4) -> [return: bb1, unwind: bb4]; // scope 0 at $DIR/issue_41110.rs:+1:21: +1:27 - // mir::Constant - // + span: $DIR/issue_41110.rs:8:23: 8:25 - // + literal: Const { ty: fn(S) -> S {S::id}, val: Value() } ++ _5 = const false; + StorageLive(_1); + StorageLive(_2); ++ _5 = const true; + _2 = S; + StorageLive(_3); + StorageLive(_4); + _4 = S; + _3 = S::id(move _4) -> [return: bb1, unwind: bb4]; } bb1: { - StorageDead(_4); // scope 0 at $DIR/issue_41110.rs:+1:26: +1:27 -+ _5 = const false; // scope 0 at $DIR/issue_41110.rs:+1:13: +1:28 - _1 = S::other(move _2, move _3) -> [return: bb2, unwind: bb3]; // scope 0 at $DIR/issue_41110.rs:+1:13: +1:28 - // mir::Constant - // + span: $DIR/issue_41110.rs:8:15: 8:20 - // + literal: Const { ty: fn(S, S) {S::other}, val: Value() } + StorageDead(_4); ++ _5 = const false; + _1 = S::other(move _2, move _3) -> [return: bb2, unwind: bb3]; } bb2: { - StorageDead(_3); // scope 0 at $DIR/issue_41110.rs:+1:27: +1:28 -+ _5 = const false; // scope 0 at $DIR/issue_41110.rs:+1:27: +1:28 - StorageDead(_2); // scope 0 at $DIR/issue_41110.rs:+1:27: +1:28 - _0 = const (); // scope 0 at $DIR/issue_41110.rs:+0:11: +2:2 - StorageDead(_1); // scope 0 at $DIR/issue_41110.rs:+2:1: +2:2 - return; // scope 0 at $DIR/issue_41110.rs:+2:2: +2:2 + StorageDead(_3); ++ _5 = const false; + StorageDead(_2); + _0 = const (); + StorageDead(_1); + return; } bb3 (cleanup): { -- drop(_3) -> [return: bb5, unwind terminate]; // scope 0 at $DIR/issue_41110.rs:+1:27: +1:28 -+ goto -> bb5; // scope 0 at $DIR/issue_41110.rs:+1:27: +1:28 +- drop(_3) -> [return: bb5, unwind terminate]; ++ goto -> bb5; } bb4 (cleanup): { -- drop(_4) -> [return: bb5, unwind terminate]; // scope 0 at $DIR/issue_41110.rs:+1:26: +1:27 -+ goto -> bb5; // scope 0 at $DIR/issue_41110.rs:+1:26: +1:27 +- drop(_4) -> [return: bb5, unwind terminate]; ++ goto -> bb5; } bb5 (cleanup): { -- drop(_2) -> [return: bb6, unwind terminate]; // scope 0 at $DIR/issue_41110.rs:+1:27: +1:28 -+ goto -> bb8; // scope 0 at $DIR/issue_41110.rs:+1:27: +1:28 +- drop(_2) -> [return: bb6, unwind terminate]; ++ goto -> bb8; } bb6 (cleanup): { - resume; // scope 0 at $DIR/issue_41110.rs:+0:1: +2:2 + resume; + } + + bb7 (cleanup): { -+ drop(_2) -> [return: bb6, unwind terminate]; // scope 0 at $DIR/issue_41110.rs:+1:27: +1:28 ++ drop(_2) -> [return: bb6, unwind terminate]; + } + + bb8 (cleanup): { -+ switchInt(_5) -> [0: bb6, otherwise: bb7]; // scope 0 at $DIR/issue_41110.rs:+1:27: +1:28 ++ switchInt(_5) -> [0: bb6, otherwise: bb7]; } } diff --git a/tests/mir-opt/issue_41110.main.ElaborateDrops.panic-unwind.diff b/tests/mir-opt/issue_41110.main.ElaborateDrops.panic-unwind.diff index ac2520249285e..11501907b8812 100644 --- a/tests/mir-opt/issue_41110.main.ElaborateDrops.panic-unwind.diff +++ b/tests/mir-opt/issue_41110.main.ElaborateDrops.panic-unwind.diff @@ -2,74 +2,68 @@ + // MIR for `main` after ElaborateDrops fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/issue_41110.rs:+0:11: +0:11 - let _1: (); // in scope 0 at $DIR/issue_41110.rs:+1:9: +1:10 - let mut _2: S; // in scope 0 at $DIR/issue_41110.rs:+1:13: +1:14 - let mut _3: S; // in scope 0 at $DIR/issue_41110.rs:+1:21: +1:27 - let mut _4: S; // in scope 0 at $DIR/issue_41110.rs:+1:21: +1:22 -+ let mut _5: bool; // in scope 0 at $DIR/issue_41110.rs:+1:27: +1:28 + let mut _0: (); + let _1: (); + let mut _2: S; + let mut _3: S; + let mut _4: S; ++ let mut _5: bool; scope 1 { - debug x => _1; // in scope 1 at $DIR/issue_41110.rs:+1:9: +1:10 + debug x => _1; } bb0: { -+ _5 = const false; // scope 0 at $DIR/issue_41110.rs:+1:9: +1:10 - StorageLive(_1); // scope 0 at $DIR/issue_41110.rs:+1:9: +1:10 - StorageLive(_2); // scope 0 at $DIR/issue_41110.rs:+1:13: +1:14 -+ _5 = const true; // scope 0 at $DIR/issue_41110.rs:+1:13: +1:14 - _2 = S; // scope 0 at $DIR/issue_41110.rs:+1:13: +1:14 - StorageLive(_3); // scope 0 at $DIR/issue_41110.rs:+1:21: +1:27 - StorageLive(_4); // scope 0 at $DIR/issue_41110.rs:+1:21: +1:22 - _4 = S; // scope 0 at $DIR/issue_41110.rs:+1:21: +1:22 - _3 = S::id(move _4) -> [return: bb1, unwind: bb4]; // scope 0 at $DIR/issue_41110.rs:+1:21: +1:27 - // mir::Constant - // + span: $DIR/issue_41110.rs:8:23: 8:25 - // + literal: Const { ty: fn(S) -> S {S::id}, val: Value() } ++ _5 = const false; + StorageLive(_1); + StorageLive(_2); ++ _5 = const true; + _2 = S; + StorageLive(_3); + StorageLive(_4); + _4 = S; + _3 = S::id(move _4) -> [return: bb1, unwind: bb4]; } bb1: { - StorageDead(_4); // scope 0 at $DIR/issue_41110.rs:+1:26: +1:27 -+ _5 = const false; // scope 0 at $DIR/issue_41110.rs:+1:13: +1:28 - _1 = S::other(move _2, move _3) -> [return: bb2, unwind: bb3]; // scope 0 at $DIR/issue_41110.rs:+1:13: +1:28 - // mir::Constant - // + span: $DIR/issue_41110.rs:8:15: 8:20 - // + literal: Const { ty: fn(S, S) {S::other}, val: Value() } + StorageDead(_4); ++ _5 = const false; + _1 = S::other(move _2, move _3) -> [return: bb2, unwind: bb3]; } bb2: { - StorageDead(_3); // scope 0 at $DIR/issue_41110.rs:+1:27: +1:28 -+ _5 = const false; // scope 0 at $DIR/issue_41110.rs:+1:27: +1:28 - StorageDead(_2); // scope 0 at $DIR/issue_41110.rs:+1:27: +1:28 - _0 = const (); // scope 0 at $DIR/issue_41110.rs:+0:11: +2:2 - StorageDead(_1); // scope 0 at $DIR/issue_41110.rs:+2:1: +2:2 - return; // scope 0 at $DIR/issue_41110.rs:+2:2: +2:2 + StorageDead(_3); ++ _5 = const false; + StorageDead(_2); + _0 = const (); + StorageDead(_1); + return; } bb3 (cleanup): { -- drop(_3) -> [return: bb5, unwind terminate]; // scope 0 at $DIR/issue_41110.rs:+1:27: +1:28 -+ goto -> bb5; // scope 0 at $DIR/issue_41110.rs:+1:27: +1:28 +- drop(_3) -> [return: bb5, unwind terminate]; ++ goto -> bb5; } bb4 (cleanup): { -- drop(_4) -> [return: bb5, unwind terminate]; // scope 0 at $DIR/issue_41110.rs:+1:26: +1:27 -+ goto -> bb5; // scope 0 at $DIR/issue_41110.rs:+1:26: +1:27 +- drop(_4) -> [return: bb5, unwind terminate]; ++ goto -> bb5; } bb5 (cleanup): { -- drop(_2) -> [return: bb6, unwind terminate]; // scope 0 at $DIR/issue_41110.rs:+1:27: +1:28 -+ goto -> bb8; // scope 0 at $DIR/issue_41110.rs:+1:27: +1:28 +- drop(_2) -> [return: bb6, unwind terminate]; ++ goto -> bb8; } bb6 (cleanup): { - resume; // scope 0 at $DIR/issue_41110.rs:+0:1: +2:2 + resume; + } + + bb7 (cleanup): { -+ drop(_2) -> [return: bb6, unwind terminate]; // scope 0 at $DIR/issue_41110.rs:+1:27: +1:28 ++ drop(_2) -> [return: bb6, unwind terminate]; + } + + bb8 (cleanup): { -+ switchInt(_5) -> [0: bb6, otherwise: bb7]; // scope 0 at $DIR/issue_41110.rs:+1:27: +1:28 ++ switchInt(_5) -> [0: bb6, otherwise: bb7]; } } diff --git a/tests/mir-opt/issue_41110.test.ElaborateDrops.panic-abort.diff b/tests/mir-opt/issue_41110.test.ElaborateDrops.panic-abort.diff index 84bcab000afe9..eb03a347a19fd 100644 --- a/tests/mir-opt/issue_41110.test.ElaborateDrops.panic-abort.diff +++ b/tests/mir-opt/issue_41110.test.ElaborateDrops.panic-abort.diff @@ -2,104 +2,101 @@ + // MIR for `test` after ElaborateDrops fn test() -> () { - let mut _0: (); // return place in scope 0 at $DIR/issue_41110.rs:+0:15: +0:15 - let _1: S; // in scope 0 at $DIR/issue_41110.rs:+1:9: +1:10 - let _3: (); // in scope 0 at $DIR/issue_41110.rs:+3:5: +3:12 - let mut _4: S; // in scope 0 at $DIR/issue_41110.rs:+3:10: +3:11 - let mut _5: S; // in scope 0 at $DIR/issue_41110.rs:+4:9: +4:10 -+ let mut _6: bool; // in scope 0 at $DIR/issue_41110.rs:+5:1: +5:2 + let mut _0: (); + let _1: S; + let _3: (); + let mut _4: S; + let mut _5: S; ++ let mut _6: bool; scope 1 { - debug u => _1; // in scope 1 at $DIR/issue_41110.rs:+1:9: +1:10 - let mut _2: S; // in scope 1 at $DIR/issue_41110.rs:+2:9: +2:14 + debug u => _1; + let mut _2: S; scope 2 { - debug v => _2; // in scope 2 at $DIR/issue_41110.rs:+2:9: +2:14 + debug v => _2; } } bb0: { -+ _6 = const false; // scope 0 at $DIR/issue_41110.rs:+1:9: +1:10 - StorageLive(_1); // scope 0 at $DIR/issue_41110.rs:+1:9: +1:10 -+ _6 = const true; // scope 0 at $DIR/issue_41110.rs:+1:13: +1:14 - _1 = S; // scope 0 at $DIR/issue_41110.rs:+1:13: +1:14 - StorageLive(_2); // scope 1 at $DIR/issue_41110.rs:+2:9: +2:14 - _2 = S; // scope 1 at $DIR/issue_41110.rs:+2:17: +2:18 - StorageLive(_3); // scope 2 at $DIR/issue_41110.rs:+3:5: +3:12 - StorageLive(_4); // scope 2 at $DIR/issue_41110.rs:+3:10: +3:11 - _4 = move _2; // scope 2 at $DIR/issue_41110.rs:+3:10: +3:11 - _3 = std::mem::drop::(move _4) -> [return: bb1, unwind: bb7]; // scope 2 at $DIR/issue_41110.rs:+3:5: +3:12 - // mir::Constant - // + span: $DIR/issue_41110.rs:17:5: 17:9 - // + literal: Const { ty: fn(S) {std::mem::drop::}, val: Value() } ++ _6 = const false; + StorageLive(_1); ++ _6 = const true; + _1 = S; + StorageLive(_2); + _2 = S; + StorageLive(_3); + StorageLive(_4); + _4 = move _2; + _3 = std::mem::drop::(move _4) -> [return: bb1, unwind: bb7]; } bb1: { - StorageDead(_4); // scope 2 at $DIR/issue_41110.rs:+3:11: +3:12 - StorageDead(_3); // scope 2 at $DIR/issue_41110.rs:+3:12: +3:13 - StorageLive(_5); // scope 2 at $DIR/issue_41110.rs:+4:9: +4:10 -+ _6 = const false; // scope 2 at $DIR/issue_41110.rs:+4:9: +4:10 - _5 = move _1; // scope 2 at $DIR/issue_41110.rs:+4:9: +4:10 -- drop(_2) -> [return: bb2, unwind: bb3]; // scope 2 at $DIR/issue_41110.rs:+4:5: +4:6 -+ goto -> bb2; // scope 2 at $DIR/issue_41110.rs:+4:5: +4:6 + StorageDead(_4); + StorageDead(_3); + StorageLive(_5); ++ _6 = const false; + _5 = move _1; +- drop(_2) -> [return: bb2, unwind: bb3]; ++ goto -> bb2; } bb2: { - _2 = move _5; // scope 2 at $DIR/issue_41110.rs:+4:5: +4:6 -- drop(_5) -> [return: bb4, unwind: bb8]; // scope 2 at $DIR/issue_41110.rs:+4:9: +4:10 -+ goto -> bb4; // scope 2 at $DIR/issue_41110.rs:+4:9: +4:10 + _2 = move _5; +- drop(_5) -> [return: bb4, unwind: bb8]; ++ goto -> bb4; } bb3 (cleanup): { - _2 = move _5; // scope 2 at $DIR/issue_41110.rs:+4:5: +4:6 - drop(_5) -> [return: bb8, unwind terminate]; // scope 2 at $DIR/issue_41110.rs:+4:9: +4:10 + _2 = move _5; + drop(_5) -> [return: bb8, unwind terminate]; } bb4: { - StorageDead(_5); // scope 2 at $DIR/issue_41110.rs:+4:9: +4:10 - _0 = const (); // scope 0 at $DIR/issue_41110.rs:+0:15: +5:2 - drop(_2) -> [return: bb5, unwind: bb9]; // scope 1 at $DIR/issue_41110.rs:+5:1: +5:2 + StorageDead(_5); + _0 = const (); + drop(_2) -> [return: bb5, unwind: bb9]; } bb5: { - StorageDead(_2); // scope 1 at $DIR/issue_41110.rs:+5:1: +5:2 -- drop(_1) -> [return: bb6, unwind: bb10]; // scope 0 at $DIR/issue_41110.rs:+5:1: +5:2 -+ goto -> bb6; // scope 0 at $DIR/issue_41110.rs:+5:1: +5:2 + StorageDead(_2); +- drop(_1) -> [return: bb6, unwind: bb10]; ++ goto -> bb6; } bb6: { -+ _6 = const false; // scope 0 at $DIR/issue_41110.rs:+5:1: +5:2 - StorageDead(_1); // scope 0 at $DIR/issue_41110.rs:+5:1: +5:2 - return; // scope 0 at $DIR/issue_41110.rs:+5:2: +5:2 ++ _6 = const false; + StorageDead(_1); + return; } bb7 (cleanup): { -- drop(_4) -> [return: bb8, unwind terminate]; // scope 2 at $DIR/issue_41110.rs:+3:11: +3:12 -+ goto -> bb8; // scope 2 at $DIR/issue_41110.rs:+3:11: +3:12 +- drop(_4) -> [return: bb8, unwind terminate]; ++ goto -> bb8; } bb8 (cleanup): { -- drop(_2) -> [return: bb9, unwind terminate]; // scope 1 at $DIR/issue_41110.rs:+5:1: +5:2 -+ goto -> bb9; // scope 1 at $DIR/issue_41110.rs:+5:1: +5:2 +- drop(_2) -> [return: bb9, unwind terminate]; ++ goto -> bb9; } bb9 (cleanup): { -- drop(_1) -> [return: bb10, unwind terminate]; // scope 0 at $DIR/issue_41110.rs:+5:1: +5:2 -+ goto -> bb13; // scope 0 at $DIR/issue_41110.rs:+5:1: +5:2 +- drop(_1) -> [return: bb10, unwind terminate]; ++ goto -> bb13; } bb10 (cleanup): { - resume; // scope 0 at $DIR/issue_41110.rs:+0:1: +5:2 + resume; + } + + bb11 (cleanup): { -+ unreachable; // scope 0 at $DIR/issue_41110.rs:+0:1: +5:2 ++ unreachable; + } + + bb12 (cleanup): { -+ drop(_1) -> [return: bb10, unwind terminate]; // scope 0 at $DIR/issue_41110.rs:+5:1: +5:2 ++ drop(_1) -> [return: bb10, unwind terminate]; + } + + bb13 (cleanup): { -+ switchInt(_6) -> [0: bb10, otherwise: bb12]; // scope 0 at $DIR/issue_41110.rs:+5:1: +5:2 ++ switchInt(_6) -> [0: bb10, otherwise: bb12]; } } diff --git a/tests/mir-opt/issue_41110.test.ElaborateDrops.panic-unwind.diff b/tests/mir-opt/issue_41110.test.ElaborateDrops.panic-unwind.diff index a4a07ad124340..b33d8fc52b401 100644 --- a/tests/mir-opt/issue_41110.test.ElaborateDrops.panic-unwind.diff +++ b/tests/mir-opt/issue_41110.test.ElaborateDrops.panic-unwind.diff @@ -2,104 +2,101 @@ + // MIR for `test` after ElaborateDrops fn test() -> () { - let mut _0: (); // return place in scope 0 at $DIR/issue_41110.rs:+0:15: +0:15 - let _1: S; // in scope 0 at $DIR/issue_41110.rs:+1:9: +1:10 - let _3: (); // in scope 0 at $DIR/issue_41110.rs:+3:5: +3:12 - let mut _4: S; // in scope 0 at $DIR/issue_41110.rs:+3:10: +3:11 - let mut _5: S; // in scope 0 at $DIR/issue_41110.rs:+4:9: +4:10 -+ let mut _6: bool; // in scope 0 at $DIR/issue_41110.rs:+5:1: +5:2 + let mut _0: (); + let _1: S; + let _3: (); + let mut _4: S; + let mut _5: S; ++ let mut _6: bool; scope 1 { - debug u => _1; // in scope 1 at $DIR/issue_41110.rs:+1:9: +1:10 - let mut _2: S; // in scope 1 at $DIR/issue_41110.rs:+2:9: +2:14 + debug u => _1; + let mut _2: S; scope 2 { - debug v => _2; // in scope 2 at $DIR/issue_41110.rs:+2:9: +2:14 + debug v => _2; } } bb0: { -+ _6 = const false; // scope 0 at $DIR/issue_41110.rs:+1:9: +1:10 - StorageLive(_1); // scope 0 at $DIR/issue_41110.rs:+1:9: +1:10 -+ _6 = const true; // scope 0 at $DIR/issue_41110.rs:+1:13: +1:14 - _1 = S; // scope 0 at $DIR/issue_41110.rs:+1:13: +1:14 - StorageLive(_2); // scope 1 at $DIR/issue_41110.rs:+2:9: +2:14 - _2 = S; // scope 1 at $DIR/issue_41110.rs:+2:17: +2:18 - StorageLive(_3); // scope 2 at $DIR/issue_41110.rs:+3:5: +3:12 - StorageLive(_4); // scope 2 at $DIR/issue_41110.rs:+3:10: +3:11 - _4 = move _2; // scope 2 at $DIR/issue_41110.rs:+3:10: +3:11 - _3 = std::mem::drop::(move _4) -> [return: bb1, unwind: bb7]; // scope 2 at $DIR/issue_41110.rs:+3:5: +3:12 - // mir::Constant - // + span: $DIR/issue_41110.rs:17:5: 17:9 - // + literal: Const { ty: fn(S) {std::mem::drop::}, val: Value() } ++ _6 = const false; + StorageLive(_1); ++ _6 = const true; + _1 = S; + StorageLive(_2); + _2 = S; + StorageLive(_3); + StorageLive(_4); + _4 = move _2; + _3 = std::mem::drop::(move _4) -> [return: bb1, unwind: bb7]; } bb1: { - StorageDead(_4); // scope 2 at $DIR/issue_41110.rs:+3:11: +3:12 - StorageDead(_3); // scope 2 at $DIR/issue_41110.rs:+3:12: +3:13 - StorageLive(_5); // scope 2 at $DIR/issue_41110.rs:+4:9: +4:10 -+ _6 = const false; // scope 2 at $DIR/issue_41110.rs:+4:9: +4:10 - _5 = move _1; // scope 2 at $DIR/issue_41110.rs:+4:9: +4:10 -- drop(_2) -> [return: bb2, unwind: bb3]; // scope 2 at $DIR/issue_41110.rs:+4:5: +4:6 -+ goto -> bb2; // scope 2 at $DIR/issue_41110.rs:+4:5: +4:6 + StorageDead(_4); + StorageDead(_3); + StorageLive(_5); ++ _6 = const false; + _5 = move _1; +- drop(_2) -> [return: bb2, unwind: bb3]; ++ goto -> bb2; } bb2: { - _2 = move _5; // scope 2 at $DIR/issue_41110.rs:+4:5: +4:6 -- drop(_5) -> [return: bb4, unwind: bb8]; // scope 2 at $DIR/issue_41110.rs:+4:9: +4:10 -+ goto -> bb4; // scope 2 at $DIR/issue_41110.rs:+4:9: +4:10 + _2 = move _5; +- drop(_5) -> [return: bb4, unwind: bb8]; ++ goto -> bb4; } bb3 (cleanup): { - _2 = move _5; // scope 2 at $DIR/issue_41110.rs:+4:5: +4:6 - drop(_5) -> [return: bb8, unwind terminate]; // scope 2 at $DIR/issue_41110.rs:+4:9: +4:10 + _2 = move _5; + drop(_5) -> [return: bb8, unwind terminate]; } bb4: { - StorageDead(_5); // scope 2 at $DIR/issue_41110.rs:+4:9: +4:10 - _0 = const (); // scope 0 at $DIR/issue_41110.rs:+0:15: +5:2 - drop(_2) -> [return: bb5, unwind: bb9]; // scope 1 at $DIR/issue_41110.rs:+5:1: +5:2 + StorageDead(_5); + _0 = const (); + drop(_2) -> [return: bb5, unwind: bb9]; } bb5: { - StorageDead(_2); // scope 1 at $DIR/issue_41110.rs:+5:1: +5:2 -- drop(_1) -> bb6; // scope 0 at $DIR/issue_41110.rs:+5:1: +5:2 -+ goto -> bb6; // scope 0 at $DIR/issue_41110.rs:+5:1: +5:2 + StorageDead(_2); +- drop(_1) -> bb6; ++ goto -> bb6; } bb6: { -+ _6 = const false; // scope 0 at $DIR/issue_41110.rs:+5:1: +5:2 - StorageDead(_1); // scope 0 at $DIR/issue_41110.rs:+5:1: +5:2 - return; // scope 0 at $DIR/issue_41110.rs:+5:2: +5:2 ++ _6 = const false; + StorageDead(_1); + return; } bb7 (cleanup): { -- drop(_4) -> [return: bb8, unwind terminate]; // scope 2 at $DIR/issue_41110.rs:+3:11: +3:12 -+ goto -> bb8; // scope 2 at $DIR/issue_41110.rs:+3:11: +3:12 +- drop(_4) -> [return: bb8, unwind terminate]; ++ goto -> bb8; } bb8 (cleanup): { -- drop(_2) -> [return: bb9, unwind terminate]; // scope 1 at $DIR/issue_41110.rs:+5:1: +5:2 -+ goto -> bb9; // scope 1 at $DIR/issue_41110.rs:+5:1: +5:2 +- drop(_2) -> [return: bb9, unwind terminate]; ++ goto -> bb9; } bb9 (cleanup): { -- drop(_1) -> [return: bb10, unwind terminate]; // scope 0 at $DIR/issue_41110.rs:+5:1: +5:2 -+ goto -> bb13; // scope 0 at $DIR/issue_41110.rs:+5:1: +5:2 +- drop(_1) -> [return: bb10, unwind terminate]; ++ goto -> bb13; } bb10 (cleanup): { - resume; // scope 0 at $DIR/issue_41110.rs:+0:1: +5:2 + resume; + } + + bb11 (cleanup): { -+ unreachable; // scope 0 at $DIR/issue_41110.rs:+0:1: +5:2 ++ unreachable; + } + + bb12 (cleanup): { -+ drop(_1) -> [return: bb10, unwind terminate]; // scope 0 at $DIR/issue_41110.rs:+5:1: +5:2 ++ drop(_1) -> [return: bb10, unwind terminate]; + } + + bb13 (cleanup): { -+ switchInt(_6) -> [0: bb10, otherwise: bb12]; // scope 0 at $DIR/issue_41110.rs:+5:1: +5:2 ++ switchInt(_6) -> [0: bb10, otherwise: bb12]; } } diff --git a/tests/mir-opt/issue_41697.{impl#0}-{constant#0}.SimplifyCfg-promote-consts.after.mir b/tests/mir-opt/issue_41697.{impl#0}-{constant#0}.SimplifyCfg-promote-consts.after.mir index 8af087d84f116..0b48e58dabde7 100644 --- a/tests/mir-opt/issue_41697.{impl#0}-{constant#0}.SimplifyCfg-promote-consts.after.mir +++ b/tests/mir-opt/issue_41697.{impl#0}-{constant#0}.SimplifyCfg-promote-consts.after.mir @@ -1,20 +1,20 @@ // MIR for `::{constant#0}` after SimplifyCfg-promote-consts ::{constant#0}: usize = { - let mut _0: usize; // return place in scope 0 at $DIR/issue_41697.rs:+0:19: +0:22 - let mut _1: (usize, bool); // in scope 0 at $DIR/issue_41697.rs:+0:19: +0:22 + let mut _0: usize; + let mut _1: (usize, bool); bb0: { - _1 = CheckedAdd(const 1_usize, const 1_usize); // scope 0 at $DIR/issue_41697.rs:+0:19: +0:22 - assert(!move (_1.1: bool), "attempt to compute `{} + {}`, which would overflow", const 1_usize, const 1_usize) -> [success: bb1, unwind: bb2]; // scope 0 at $DIR/issue_41697.rs:+0:19: +0:22 + _1 = CheckedAdd(const 1_usize, const 1_usize); + assert(!move (_1.1: bool), "attempt to compute `{} + {}`, which would overflow", const 1_usize, const 1_usize) -> [success: bb1, unwind: bb2]; } bb1: { - _0 = move (_1.0: usize); // scope 0 at $DIR/issue_41697.rs:+0:19: +0:22 - return; // scope 0 at $DIR/issue_41697.rs:+0:19: +0:22 + _0 = move (_1.0: usize); + return; } bb2 (cleanup): { - resume; // scope 0 at $DIR/issue_41697.rs:+0:19: +0:22 + resume; } } diff --git a/tests/mir-opt/issue_41888.main.ElaborateDrops.panic-abort.diff b/tests/mir-opt/issue_41888.main.ElaborateDrops.panic-abort.diff index d4d19b97a925d..7c2503f9d3e92 100644 --- a/tests/mir-opt/issue_41888.main.ElaborateDrops.panic-abort.diff +++ b/tests/mir-opt/issue_41888.main.ElaborateDrops.panic-abort.diff @@ -2,150 +2,147 @@ + // MIR for `main` after ElaborateDrops fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/issue_41888.rs:+0:11: +0:11 - let _1: E; // in scope 0 at $DIR/issue_41888.rs:+1:9: +1:10 - let mut _2: bool; // in scope 0 at $DIR/issue_41888.rs:+2:8: +2:14 - let mut _3: E; // in scope 0 at $DIR/issue_41888.rs:+3:13: +3:20 - let mut _4: K; // in scope 0 at $DIR/issue_41888.rs:+3:18: +3:19 - let mut _5: isize; // in scope 0 at $DIR/issue_41888.rs:+4:16: +4:24 -+ let mut _7: bool; // in scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 -+ let mut _8: bool; // in scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 -+ let mut _9: bool; // in scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 -+ let mut _10: isize; // in scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 -+ let mut _11: isize; // in scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 + let mut _0: (); + let _1: E; + let mut _2: bool; + let mut _3: E; + let mut _4: K; + let mut _5: isize; ++ let mut _7: bool; ++ let mut _8: bool; ++ let mut _9: bool; ++ let mut _10: isize; ++ let mut _11: isize; scope 1 { - debug e => _1; // in scope 1 at $DIR/issue_41888.rs:+1:9: +1:10 + debug e => _1; scope 2 { - debug _k => _6; // in scope 2 at $DIR/issue_41888.rs:+4:21: +4:23 - let _6: K; // in scope 2 at $DIR/issue_41888.rs:+4:21: +4:23 + debug _k => _6; + let _6: K; } } bb0: { -+ _7 = const false; // scope 0 at $DIR/issue_41888.rs:+1:9: +1:10 -+ _8 = const false; // scope 0 at $DIR/issue_41888.rs:+1:9: +1:10 -+ _9 = const false; // scope 0 at $DIR/issue_41888.rs:+1:9: +1:10 - StorageLive(_1); // scope 0 at $DIR/issue_41888.rs:+1:9: +1:10 - StorageLive(_2); // scope 1 at $DIR/issue_41888.rs:+2:8: +2:14 - _2 = cond() -> [return: bb1, unwind: bb11]; // scope 1 at $DIR/issue_41888.rs:+2:8: +2:14 - // mir::Constant - // + span: $DIR/issue_41888.rs:8:8: 8:12 - // + literal: Const { ty: fn() -> bool {cond}, val: Value() } ++ _7 = const false; ++ _8 = const false; ++ _9 = const false; + StorageLive(_1); + StorageLive(_2); + _2 = cond() -> [return: bb1, unwind: bb11]; } bb1: { - switchInt(move _2) -> [0: bb8, otherwise: bb2]; // scope 1 at $DIR/issue_41888.rs:+2:8: +2:14 + switchInt(move _2) -> [0: bb8, otherwise: bb2]; } bb2: { - StorageLive(_3); // scope 1 at $DIR/issue_41888.rs:+3:13: +3:20 - StorageLive(_4); // scope 1 at $DIR/issue_41888.rs:+3:18: +3:19 - _4 = K; // scope 1 at $DIR/issue_41888.rs:+3:18: +3:19 - _3 = E::F(move _4); // scope 1 at $DIR/issue_41888.rs:+3:13: +3:20 - StorageDead(_4); // scope 1 at $DIR/issue_41888.rs:+3:19: +3:20 -- drop(_1) -> [return: bb3, unwind: bb4]; // scope 1 at $DIR/issue_41888.rs:+3:9: +3:10 -+ goto -> bb3; // scope 1 at $DIR/issue_41888.rs:+3:9: +3:10 + StorageLive(_3); + StorageLive(_4); + _4 = K; + _3 = E::F(move _4); + StorageDead(_4); +- drop(_1) -> [return: bb3, unwind: bb4]; ++ goto -> bb3; } bb3: { -+ _7 = const true; // scope 1 at $DIR/issue_41888.rs:+3:9: +3:10 -+ _8 = const true; // scope 1 at $DIR/issue_41888.rs:+3:9: +3:10 -+ _9 = const true; // scope 1 at $DIR/issue_41888.rs:+3:9: +3:10 - _1 = move _3; // scope 1 at $DIR/issue_41888.rs:+3:9: +3:10 -- drop(_3) -> [return: bb5, unwind: bb11]; // scope 1 at $DIR/issue_41888.rs:+3:19: +3:20 -+ goto -> bb5; // scope 1 at $DIR/issue_41888.rs:+3:19: +3:20 ++ _7 = const true; ++ _8 = const true; ++ _9 = const true; + _1 = move _3; +- drop(_3) -> [return: bb5, unwind: bb11]; ++ goto -> bb5; } bb4 (cleanup): { - _1 = move _3; // scope 1 at $DIR/issue_41888.rs:+3:9: +3:10 - drop(_3) -> [return: bb11, unwind terminate]; // scope 1 at $DIR/issue_41888.rs:+3:19: +3:20 + _1 = move _3; + drop(_3) -> [return: bb11, unwind terminate]; } bb5: { - StorageDead(_3); // scope 1 at $DIR/issue_41888.rs:+3:19: +3:20 - _5 = discriminant(_1); // scope 2 at $DIR/issue_41888.rs:+4:16: +4:24 - switchInt(move _5) -> [0: bb6, otherwise: bb7]; // scope 2 at $DIR/issue_41888.rs:+4:16: +4:24 + StorageDead(_3); + _5 = discriminant(_1); + switchInt(move _5) -> [0: bb6, otherwise: bb7]; } bb6: { - StorageLive(_6); // scope 2 at $DIR/issue_41888.rs:+4:21: +4:23 -+ _9 = const false; // scope 2 at $DIR/issue_41888.rs:+4:21: +4:23 - _6 = move ((_1 as F).0: K); // scope 2 at $DIR/issue_41888.rs:+4:21: +4:23 - _0 = const (); // scope 2 at $DIR/issue_41888.rs:+4:29: +7:10 - StorageDead(_6); // scope 1 at $DIR/issue_41888.rs:+7:9: +7:10 - goto -> bb9; // scope 1 at $DIR/issue_41888.rs:+4:9: +7:10 + StorageLive(_6); ++ _9 = const false; + _6 = move ((_1 as F).0: K); + _0 = const (); + StorageDead(_6); + goto -> bb9; } bb7: { - _0 = const (); // scope 1 at $DIR/issue_41888.rs:+7:10: +7:10 - goto -> bb9; // scope 1 at $DIR/issue_41888.rs:+4:9: +7:10 + _0 = const (); + goto -> bb9; } bb8: { - _0 = const (); // scope 1 at $DIR/issue_41888.rs:+8:6: +8:6 - goto -> bb9; // scope 1 at $DIR/issue_41888.rs:+2:5: +8:6 + _0 = const (); + goto -> bb9; } bb9: { - StorageDead(_2); // scope 1 at $DIR/issue_41888.rs:+8:5: +8:6 -- drop(_1) -> [return: bb10, unwind: bb12]; // scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 -+ goto -> bb19; // scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 + StorageDead(_2); +- drop(_1) -> [return: bb10, unwind: bb12]; ++ goto -> bb19; } bb10: { -+ _7 = const false; // scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 -+ _8 = const false; // scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 -+ _9 = const false; // scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 - StorageDead(_1); // scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 - return; // scope 0 at $DIR/issue_41888.rs:+9:2: +9:2 ++ _7 = const false; ++ _8 = const false; ++ _9 = const false; + StorageDead(_1); + return; } bb11 (cleanup): { -- drop(_1) -> [return: bb12, unwind terminate]; // scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 -+ goto -> bb12; // scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 +- drop(_1) -> [return: bb12, unwind terminate]; ++ goto -> bb12; } bb12 (cleanup): { - resume; // scope 0 at $DIR/issue_41888.rs:+0:1: +9:2 + resume; + } + + bb13 (cleanup): { -+ unreachable; // scope 0 at $DIR/issue_41888.rs:+0:1: +9:2 ++ unreachable; + } + + bb14: { -+ _7 = const false; // scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 -+ goto -> bb10; // scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 ++ _7 = const false; ++ goto -> bb10; + } + + bb15 (cleanup): { -+ goto -> bb12; // scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 ++ goto -> bb12; + } + + bb16: { -+ drop(_1) -> [return: bb14, unwind: bb12]; // scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 ++ drop(_1) -> [return: bb14, unwind: bb12]; + } + + bb17 (cleanup): { -+ drop(_1) -> [return: bb12, unwind terminate]; // scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 ++ drop(_1) -> [return: bb12, unwind terminate]; + } + + bb18: { -+ _10 = discriminant(_1); // scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 -+ switchInt(move _10) -> [0: bb14, otherwise: bb16]; // scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 ++ _10 = discriminant(_1); ++ switchInt(move _10) -> [0: bb14, otherwise: bb16]; + } + + bb19: { -+ switchInt(_7) -> [0: bb14, otherwise: bb18]; // scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 ++ switchInt(_7) -> [0: bb14, otherwise: bb18]; + } + + bb20 (cleanup): { -+ _11 = discriminant(_1); // scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 -+ switchInt(move _11) -> [0: bb15, otherwise: bb17]; // scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 ++ _11 = discriminant(_1); ++ switchInt(move _11) -> [0: bb15, otherwise: bb17]; + } + + bb21 (cleanup): { -+ switchInt(_7) -> [0: bb12, otherwise: bb20]; // scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 ++ switchInt(_7) -> [0: bb12, otherwise: bb20]; } } diff --git a/tests/mir-opt/issue_41888.main.ElaborateDrops.panic-unwind.diff b/tests/mir-opt/issue_41888.main.ElaborateDrops.panic-unwind.diff index 46b450a4e47f7..04071c72555e8 100644 --- a/tests/mir-opt/issue_41888.main.ElaborateDrops.panic-unwind.diff +++ b/tests/mir-opt/issue_41888.main.ElaborateDrops.panic-unwind.diff @@ -2,150 +2,147 @@ + // MIR for `main` after ElaborateDrops fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/issue_41888.rs:+0:11: +0:11 - let _1: E; // in scope 0 at $DIR/issue_41888.rs:+1:9: +1:10 - let mut _2: bool; // in scope 0 at $DIR/issue_41888.rs:+2:8: +2:14 - let mut _3: E; // in scope 0 at $DIR/issue_41888.rs:+3:13: +3:20 - let mut _4: K; // in scope 0 at $DIR/issue_41888.rs:+3:18: +3:19 - let mut _5: isize; // in scope 0 at $DIR/issue_41888.rs:+4:16: +4:24 -+ let mut _7: bool; // in scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 -+ let mut _8: bool; // in scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 -+ let mut _9: bool; // in scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 -+ let mut _10: isize; // in scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 -+ let mut _11: isize; // in scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 + let mut _0: (); + let _1: E; + let mut _2: bool; + let mut _3: E; + let mut _4: K; + let mut _5: isize; ++ let mut _7: bool; ++ let mut _8: bool; ++ let mut _9: bool; ++ let mut _10: isize; ++ let mut _11: isize; scope 1 { - debug e => _1; // in scope 1 at $DIR/issue_41888.rs:+1:9: +1:10 + debug e => _1; scope 2 { - debug _k => _6; // in scope 2 at $DIR/issue_41888.rs:+4:21: +4:23 - let _6: K; // in scope 2 at $DIR/issue_41888.rs:+4:21: +4:23 + debug _k => _6; + let _6: K; } } bb0: { -+ _7 = const false; // scope 0 at $DIR/issue_41888.rs:+1:9: +1:10 -+ _8 = const false; // scope 0 at $DIR/issue_41888.rs:+1:9: +1:10 -+ _9 = const false; // scope 0 at $DIR/issue_41888.rs:+1:9: +1:10 - StorageLive(_1); // scope 0 at $DIR/issue_41888.rs:+1:9: +1:10 - StorageLive(_2); // scope 1 at $DIR/issue_41888.rs:+2:8: +2:14 - _2 = cond() -> [return: bb1, unwind: bb11]; // scope 1 at $DIR/issue_41888.rs:+2:8: +2:14 - // mir::Constant - // + span: $DIR/issue_41888.rs:8:8: 8:12 - // + literal: Const { ty: fn() -> bool {cond}, val: Value() } ++ _7 = const false; ++ _8 = const false; ++ _9 = const false; + StorageLive(_1); + StorageLive(_2); + _2 = cond() -> [return: bb1, unwind: bb11]; } bb1: { - switchInt(move _2) -> [0: bb8, otherwise: bb2]; // scope 1 at $DIR/issue_41888.rs:+2:8: +2:14 + switchInt(move _2) -> [0: bb8, otherwise: bb2]; } bb2: { - StorageLive(_3); // scope 1 at $DIR/issue_41888.rs:+3:13: +3:20 - StorageLive(_4); // scope 1 at $DIR/issue_41888.rs:+3:18: +3:19 - _4 = K; // scope 1 at $DIR/issue_41888.rs:+3:18: +3:19 - _3 = E::F(move _4); // scope 1 at $DIR/issue_41888.rs:+3:13: +3:20 - StorageDead(_4); // scope 1 at $DIR/issue_41888.rs:+3:19: +3:20 -- drop(_1) -> [return: bb3, unwind: bb4]; // scope 1 at $DIR/issue_41888.rs:+3:9: +3:10 -+ goto -> bb3; // scope 1 at $DIR/issue_41888.rs:+3:9: +3:10 + StorageLive(_3); + StorageLive(_4); + _4 = K; + _3 = E::F(move _4); + StorageDead(_4); +- drop(_1) -> [return: bb3, unwind: bb4]; ++ goto -> bb3; } bb3: { -+ _7 = const true; // scope 1 at $DIR/issue_41888.rs:+3:9: +3:10 -+ _8 = const true; // scope 1 at $DIR/issue_41888.rs:+3:9: +3:10 -+ _9 = const true; // scope 1 at $DIR/issue_41888.rs:+3:9: +3:10 - _1 = move _3; // scope 1 at $DIR/issue_41888.rs:+3:9: +3:10 -- drop(_3) -> [return: bb5, unwind: bb11]; // scope 1 at $DIR/issue_41888.rs:+3:19: +3:20 -+ goto -> bb5; // scope 1 at $DIR/issue_41888.rs:+3:19: +3:20 ++ _7 = const true; ++ _8 = const true; ++ _9 = const true; + _1 = move _3; +- drop(_3) -> [return: bb5, unwind: bb11]; ++ goto -> bb5; } bb4 (cleanup): { - _1 = move _3; // scope 1 at $DIR/issue_41888.rs:+3:9: +3:10 - drop(_3) -> [return: bb11, unwind terminate]; // scope 1 at $DIR/issue_41888.rs:+3:19: +3:20 + _1 = move _3; + drop(_3) -> [return: bb11, unwind terminate]; } bb5: { - StorageDead(_3); // scope 1 at $DIR/issue_41888.rs:+3:19: +3:20 - _5 = discriminant(_1); // scope 2 at $DIR/issue_41888.rs:+4:16: +4:24 - switchInt(move _5) -> [0: bb6, otherwise: bb7]; // scope 2 at $DIR/issue_41888.rs:+4:16: +4:24 + StorageDead(_3); + _5 = discriminant(_1); + switchInt(move _5) -> [0: bb6, otherwise: bb7]; } bb6: { - StorageLive(_6); // scope 2 at $DIR/issue_41888.rs:+4:21: +4:23 -+ _9 = const false; // scope 2 at $DIR/issue_41888.rs:+4:21: +4:23 - _6 = move ((_1 as F).0: K); // scope 2 at $DIR/issue_41888.rs:+4:21: +4:23 - _0 = const (); // scope 2 at $DIR/issue_41888.rs:+4:29: +7:10 - StorageDead(_6); // scope 1 at $DIR/issue_41888.rs:+7:9: +7:10 - goto -> bb9; // scope 1 at $DIR/issue_41888.rs:+4:9: +7:10 + StorageLive(_6); ++ _9 = const false; + _6 = move ((_1 as F).0: K); + _0 = const (); + StorageDead(_6); + goto -> bb9; } bb7: { - _0 = const (); // scope 1 at $DIR/issue_41888.rs:+7:10: +7:10 - goto -> bb9; // scope 1 at $DIR/issue_41888.rs:+4:9: +7:10 + _0 = const (); + goto -> bb9; } bb8: { - _0 = const (); // scope 1 at $DIR/issue_41888.rs:+8:6: +8:6 - goto -> bb9; // scope 1 at $DIR/issue_41888.rs:+2:5: +8:6 + _0 = const (); + goto -> bb9; } bb9: { - StorageDead(_2); // scope 1 at $DIR/issue_41888.rs:+8:5: +8:6 -- drop(_1) -> bb10; // scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 -+ goto -> bb19; // scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 + StorageDead(_2); +- drop(_1) -> bb10; ++ goto -> bb19; } bb10: { -+ _7 = const false; // scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 -+ _8 = const false; // scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 -+ _9 = const false; // scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 - StorageDead(_1); // scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 - return; // scope 0 at $DIR/issue_41888.rs:+9:2: +9:2 ++ _7 = const false; ++ _8 = const false; ++ _9 = const false; + StorageDead(_1); + return; } bb11 (cleanup): { -- drop(_1) -> [return: bb12, unwind terminate]; // scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 -+ goto -> bb12; // scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 +- drop(_1) -> [return: bb12, unwind terminate]; ++ goto -> bb12; } bb12 (cleanup): { - resume; // scope 0 at $DIR/issue_41888.rs:+0:1: +9:2 + resume; + } + + bb13 (cleanup): { -+ unreachable; // scope 0 at $DIR/issue_41888.rs:+0:1: +9:2 ++ unreachable; + } + + bb14: { -+ _7 = const false; // scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 -+ goto -> bb10; // scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 ++ _7 = const false; ++ goto -> bb10; + } + + bb15 (cleanup): { -+ goto -> bb12; // scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 ++ goto -> bb12; + } + + bb16: { -+ drop(_1) -> [return: bb14, unwind: bb12]; // scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 ++ drop(_1) -> [return: bb14, unwind: bb12]; + } + + bb17 (cleanup): { -+ drop(_1) -> [return: bb12, unwind terminate]; // scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 ++ drop(_1) -> [return: bb12, unwind terminate]; + } + + bb18: { -+ _10 = discriminant(_1); // scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 -+ switchInt(move _10) -> [0: bb14, otherwise: bb16]; // scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 ++ _10 = discriminant(_1); ++ switchInt(move _10) -> [0: bb14, otherwise: bb16]; + } + + bb19: { -+ switchInt(_7) -> [0: bb14, otherwise: bb18]; // scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 ++ switchInt(_7) -> [0: bb14, otherwise: bb18]; + } + + bb20 (cleanup): { -+ _11 = discriminant(_1); // scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 -+ switchInt(move _11) -> [0: bb15, otherwise: bb17]; // scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 ++ _11 = discriminant(_1); ++ switchInt(move _11) -> [0: bb15, otherwise: bb17]; + } + + bb21 (cleanup): { -+ switchInt(_7) -> [0: bb12, otherwise: bb20]; // scope 0 at $DIR/issue_41888.rs:+9:1: +9:2 ++ switchInt(_7) -> [0: bb12, otherwise: bb20]; } } diff --git a/tests/mir-opt/issue_62289.test.ElaborateDrops.before.panic-abort.mir b/tests/mir-opt/issue_62289.test.ElaborateDrops.before.panic-abort.mir index b3566e475b574..ae0beffae1849 100644 --- a/tests/mir-opt/issue_62289.test.ElaborateDrops.before.panic-abort.mir +++ b/tests/mir-opt/issue_62289.test.ElaborateDrops.before.panic-abort.mir @@ -1,122 +1,113 @@ // MIR for `test` before ElaborateDrops fn test() -> Option> { - let mut _0: std::option::Option>; // return place in scope 0 at $DIR/issue_62289.rs:+0:14: +0:30 - let mut _1: std::boxed::Box; // in scope 0 at $DIR/issue_62289.rs:+3:9: +3:24 - let mut _2: usize; // in scope 0 at $DIR/issue_62289.rs:+3:9: +3:24 - let mut _3: usize; // in scope 0 at $DIR/issue_62289.rs:+3:9: +3:24 - let mut _4: *mut u8; // in scope 0 at $DIR/issue_62289.rs:+3:9: +3:24 - let mut _5: std::boxed::Box; // in scope 0 at $DIR/issue_62289.rs:+3:9: +3:24 - let mut _6: std::ops::ControlFlow, u32>; // in scope 0 at $DIR/issue_62289.rs:+3:18: +3:23 - let mut _7: std::option::Option; // in scope 0 at $DIR/issue_62289.rs:+3:18: +3:22 - let mut _8: isize; // in scope 0 at $DIR/issue_62289.rs:+3:22: +3:23 - let _9: std::option::Option; // in scope 0 at $DIR/issue_62289.rs:+3:22: +3:23 - let mut _10: !; // in scope 0 at $DIR/issue_62289.rs:+3:22: +3:23 - let mut _11: std::option::Option; // in scope 0 at $DIR/issue_62289.rs:+3:22: +3:23 - let _12: u32; // in scope 0 at $DIR/issue_62289.rs:+3:18: +3:23 + let mut _0: std::option::Option>; + let mut _1: std::boxed::Box; + let mut _2: usize; + let mut _3: usize; + let mut _4: *mut u8; + let mut _5: std::boxed::Box; + let mut _6: std::ops::ControlFlow, u32>; + let mut _7: std::option::Option; + let mut _8: isize; + let _9: std::option::Option; + let mut _10: !; + let mut _11: std::option::Option; + let _12: u32; scope 1 { } scope 2 { - debug residual => _9; // in scope 2 at $DIR/issue_62289.rs:+3:22: +3:23 + debug residual => _9; scope 3 { } } scope 4 { - debug val => _12; // in scope 4 at $DIR/issue_62289.rs:+3:18: +3:23 + debug val => _12; scope 5 { } } bb0: { - StorageLive(_1); // scope 0 at $DIR/issue_62289.rs:+3:9: +3:24 - _2 = SizeOf(u32); // scope 1 at $DIR/issue_62289.rs:+3:9: +3:24 - _3 = AlignOf(u32); // scope 1 at $DIR/issue_62289.rs:+3:9: +3:24 - _4 = alloc::alloc::exchange_malloc(move _2, move _3) -> [return: bb1, unwind: bb13]; // scope 1 at $DIR/issue_62289.rs:+3:9: +3:24 - // mir::Constant - // + span: $DIR/issue_62289.rs:11:9: 11:24 - // + literal: Const { ty: unsafe fn(usize, usize) -> *mut u8 {alloc::alloc::exchange_malloc}, val: Value() } + StorageLive(_1); + _2 = SizeOf(u32); + _3 = AlignOf(u32); + _4 = alloc::alloc::exchange_malloc(move _2, move _3) -> [return: bb1, unwind: bb13]; } bb1: { - StorageLive(_5); // scope 0 at $DIR/issue_62289.rs:+3:9: +3:24 - _5 = ShallowInitBox(move _4, u32); // scope 0 at $DIR/issue_62289.rs:+3:9: +3:24 - StorageLive(_6); // scope 0 at $DIR/issue_62289.rs:+3:18: +3:23 - StorageLive(_7); // scope 0 at $DIR/issue_62289.rs:+3:18: +3:22 - _7 = Option::::None; // scope 0 at $DIR/issue_62289.rs:+3:18: +3:22 - _6 = as Try>::branch(move _7) -> [return: bb2, unwind: bb12]; // scope 0 at $DIR/issue_62289.rs:+3:18: +3:23 - // mir::Constant - // + span: $DIR/issue_62289.rs:11:18: 11:23 - // + literal: Const { ty: fn(Option) -> ControlFlow< as Try>::Residual, as Try>::Output> { as Try>::branch}, val: Value() } + StorageLive(_5); + _5 = ShallowInitBox(move _4, u32); + StorageLive(_6); + StorageLive(_7); + _7 = Option::::None; + _6 = as Try>::branch(move _7) -> [return: bb2, unwind: bb12]; } bb2: { - StorageDead(_7); // scope 0 at $DIR/issue_62289.rs:+3:22: +3:23 - _8 = discriminant(_6); // scope 0 at $DIR/issue_62289.rs:+3:18: +3:23 - switchInt(move _8) -> [0: bb3, 1: bb5, otherwise: bb4]; // scope 0 at $DIR/issue_62289.rs:+3:18: +3:23 + StorageDead(_7); + _8 = discriminant(_6); + switchInt(move _8) -> [0: bb3, 1: bb5, otherwise: bb4]; } bb3: { - StorageLive(_12); // scope 0 at $DIR/issue_62289.rs:+3:18: +3:23 - _12 = ((_6 as Continue).0: u32); // scope 0 at $DIR/issue_62289.rs:+3:18: +3:23 - (*_5) = _12; // scope 5 at $DIR/issue_62289.rs:+3:18: +3:23 - StorageDead(_12); // scope 0 at $DIR/issue_62289.rs:+3:22: +3:23 - _1 = move _5; // scope 0 at $DIR/issue_62289.rs:+3:9: +3:24 - drop(_5) -> [return: bb7, unwind: bb11]; // scope 0 at $DIR/issue_62289.rs:+3:23: +3:24 + StorageLive(_12); + _12 = ((_6 as Continue).0: u32); + (*_5) = _12; + StorageDead(_12); + _1 = move _5; + drop(_5) -> [return: bb7, unwind: bb11]; } bb4: { - unreachable; // scope 0 at $DIR/issue_62289.rs:+3:18: +3:23 + unreachable; } bb5: { - StorageLive(_9); // scope 0 at $DIR/issue_62289.rs:+3:22: +3:23 - _9 = ((_6 as Break).0: std::option::Option); // scope 0 at $DIR/issue_62289.rs:+3:22: +3:23 - StorageLive(_11); // scope 3 at $DIR/issue_62289.rs:+3:22: +3:23 - _11 = _9; // scope 3 at $DIR/issue_62289.rs:+3:22: +3:23 - _0 = > as FromResidual>>::from_residual(move _11) -> [return: bb6, unwind: bb12]; // scope 3 at $DIR/issue_62289.rs:+3:18: +3:23 - // mir::Constant - // + span: $DIR/issue_62289.rs:11:22: 11:23 - // + literal: Const { ty: fn(Option) -> Option> {> as FromResidual>>::from_residual}, val: Value() } + StorageLive(_9); + _9 = ((_6 as Break).0: std::option::Option); + StorageLive(_11); + _11 = _9; + _0 = > as FromResidual>>::from_residual(move _11) -> [return: bb6, unwind: bb12]; } bb6: { - StorageDead(_11); // scope 3 at $DIR/issue_62289.rs:+3:22: +3:23 - StorageDead(_9); // scope 0 at $DIR/issue_62289.rs:+3:22: +3:23 - drop(_5) -> [return: bb9, unwind: bb13]; // scope 0 at $DIR/issue_62289.rs:+3:23: +3:24 + StorageDead(_11); + StorageDead(_9); + drop(_5) -> [return: bb9, unwind: bb13]; } bb7: { - StorageDead(_5); // scope 0 at $DIR/issue_62289.rs:+3:23: +3:24 - _0 = Option::>::Some(move _1); // scope 0 at $DIR/issue_62289.rs:+1:5: +4:6 - drop(_1) -> [return: bb8, unwind: bb13]; // scope 0 at $DIR/issue_62289.rs:+4:5: +4:6 + StorageDead(_5); + _0 = Option::>::Some(move _1); + drop(_1) -> [return: bb8, unwind: bb13]; } bb8: { - StorageDead(_1); // scope 0 at $DIR/issue_62289.rs:+4:5: +4:6 - StorageDead(_6); // scope 0 at $DIR/issue_62289.rs:+5:1: +5:2 - goto -> bb10; // scope 0 at $DIR/issue_62289.rs:+5:2: +5:2 + StorageDead(_1); + StorageDead(_6); + goto -> bb10; } bb9: { - StorageDead(_5); // scope 0 at $DIR/issue_62289.rs:+3:23: +3:24 - StorageDead(_1); // scope 0 at $DIR/issue_62289.rs:+4:5: +4:6 - StorageDead(_6); // scope 0 at $DIR/issue_62289.rs:+5:1: +5:2 - goto -> bb10; // scope 0 at $DIR/issue_62289.rs:+5:2: +5:2 + StorageDead(_5); + StorageDead(_1); + StorageDead(_6); + goto -> bb10; } bb10: { - return; // scope 0 at $DIR/issue_62289.rs:+5:2: +5:2 + return; } bb11 (cleanup): { - drop(_1) -> [return: bb13, unwind terminate]; // scope 0 at $DIR/issue_62289.rs:+4:5: +4:6 + drop(_1) -> [return: bb13, unwind terminate]; } bb12 (cleanup): { - drop(_5) -> [return: bb13, unwind terminate]; // scope 0 at $DIR/issue_62289.rs:+3:23: +3:24 + drop(_5) -> [return: bb13, unwind terminate]; } bb13 (cleanup): { - resume; // scope 0 at $DIR/issue_62289.rs:+0:1: +5:2 + resume; } } diff --git a/tests/mir-opt/issue_62289.test.ElaborateDrops.before.panic-unwind.mir b/tests/mir-opt/issue_62289.test.ElaborateDrops.before.panic-unwind.mir index 8ed9101500e4d..4bbfe47299c86 100644 --- a/tests/mir-opt/issue_62289.test.ElaborateDrops.before.panic-unwind.mir +++ b/tests/mir-opt/issue_62289.test.ElaborateDrops.before.panic-unwind.mir @@ -1,122 +1,113 @@ // MIR for `test` before ElaborateDrops fn test() -> Option> { - let mut _0: std::option::Option>; // return place in scope 0 at $DIR/issue_62289.rs:+0:14: +0:30 - let mut _1: std::boxed::Box; // in scope 0 at $DIR/issue_62289.rs:+3:9: +3:24 - let mut _2: usize; // in scope 0 at $DIR/issue_62289.rs:+3:9: +3:24 - let mut _3: usize; // in scope 0 at $DIR/issue_62289.rs:+3:9: +3:24 - let mut _4: *mut u8; // in scope 0 at $DIR/issue_62289.rs:+3:9: +3:24 - let mut _5: std::boxed::Box; // in scope 0 at $DIR/issue_62289.rs:+3:9: +3:24 - let mut _6: std::ops::ControlFlow, u32>; // in scope 0 at $DIR/issue_62289.rs:+3:18: +3:23 - let mut _7: std::option::Option; // in scope 0 at $DIR/issue_62289.rs:+3:18: +3:22 - let mut _8: isize; // in scope 0 at $DIR/issue_62289.rs:+3:22: +3:23 - let _9: std::option::Option; // in scope 0 at $DIR/issue_62289.rs:+3:22: +3:23 - let mut _10: !; // in scope 0 at $DIR/issue_62289.rs:+3:22: +3:23 - let mut _11: std::option::Option; // in scope 0 at $DIR/issue_62289.rs:+3:22: +3:23 - let _12: u32; // in scope 0 at $DIR/issue_62289.rs:+3:18: +3:23 + let mut _0: std::option::Option>; + let mut _1: std::boxed::Box; + let mut _2: usize; + let mut _3: usize; + let mut _4: *mut u8; + let mut _5: std::boxed::Box; + let mut _6: std::ops::ControlFlow, u32>; + let mut _7: std::option::Option; + let mut _8: isize; + let _9: std::option::Option; + let mut _10: !; + let mut _11: std::option::Option; + let _12: u32; scope 1 { } scope 2 { - debug residual => _9; // in scope 2 at $DIR/issue_62289.rs:+3:22: +3:23 + debug residual => _9; scope 3 { } } scope 4 { - debug val => _12; // in scope 4 at $DIR/issue_62289.rs:+3:18: +3:23 + debug val => _12; scope 5 { } } bb0: { - StorageLive(_1); // scope 0 at $DIR/issue_62289.rs:+3:9: +3:24 - _2 = SizeOf(u32); // scope 1 at $DIR/issue_62289.rs:+3:9: +3:24 - _3 = AlignOf(u32); // scope 1 at $DIR/issue_62289.rs:+3:9: +3:24 - _4 = alloc::alloc::exchange_malloc(move _2, move _3) -> bb1; // scope 1 at $DIR/issue_62289.rs:+3:9: +3:24 - // mir::Constant - // + span: $DIR/issue_62289.rs:11:9: 11:24 - // + literal: Const { ty: unsafe fn(usize, usize) -> *mut u8 {alloc::alloc::exchange_malloc}, val: Value() } + StorageLive(_1); + _2 = SizeOf(u32); + _3 = AlignOf(u32); + _4 = alloc::alloc::exchange_malloc(move _2, move _3) -> bb1; } bb1: { - StorageLive(_5); // scope 0 at $DIR/issue_62289.rs:+3:9: +3:24 - _5 = ShallowInitBox(move _4, u32); // scope 0 at $DIR/issue_62289.rs:+3:9: +3:24 - StorageLive(_6); // scope 0 at $DIR/issue_62289.rs:+3:18: +3:23 - StorageLive(_7); // scope 0 at $DIR/issue_62289.rs:+3:18: +3:22 - _7 = Option::::None; // scope 0 at $DIR/issue_62289.rs:+3:18: +3:22 - _6 = as Try>::branch(move _7) -> [return: bb2, unwind: bb12]; // scope 0 at $DIR/issue_62289.rs:+3:18: +3:23 - // mir::Constant - // + span: $DIR/issue_62289.rs:11:18: 11:23 - // + literal: Const { ty: fn(Option) -> ControlFlow< as Try>::Residual, as Try>::Output> { as Try>::branch}, val: Value() } + StorageLive(_5); + _5 = ShallowInitBox(move _4, u32); + StorageLive(_6); + StorageLive(_7); + _7 = Option::::None; + _6 = as Try>::branch(move _7) -> [return: bb2, unwind: bb12]; } bb2: { - StorageDead(_7); // scope 0 at $DIR/issue_62289.rs:+3:22: +3:23 - _8 = discriminant(_6); // scope 0 at $DIR/issue_62289.rs:+3:18: +3:23 - switchInt(move _8) -> [0: bb3, 1: bb5, otherwise: bb4]; // scope 0 at $DIR/issue_62289.rs:+3:18: +3:23 + StorageDead(_7); + _8 = discriminant(_6); + switchInt(move _8) -> [0: bb3, 1: bb5, otherwise: bb4]; } bb3: { - StorageLive(_12); // scope 0 at $DIR/issue_62289.rs:+3:18: +3:23 - _12 = ((_6 as Continue).0: u32); // scope 0 at $DIR/issue_62289.rs:+3:18: +3:23 - (*_5) = _12; // scope 5 at $DIR/issue_62289.rs:+3:18: +3:23 - StorageDead(_12); // scope 0 at $DIR/issue_62289.rs:+3:22: +3:23 - _1 = move _5; // scope 0 at $DIR/issue_62289.rs:+3:9: +3:24 - drop(_5) -> [return: bb7, unwind: bb11]; // scope 0 at $DIR/issue_62289.rs:+3:23: +3:24 + StorageLive(_12); + _12 = ((_6 as Continue).0: u32); + (*_5) = _12; + StorageDead(_12); + _1 = move _5; + drop(_5) -> [return: bb7, unwind: bb11]; } bb4: { - unreachable; // scope 0 at $DIR/issue_62289.rs:+3:18: +3:23 + unreachable; } bb5: { - StorageLive(_9); // scope 0 at $DIR/issue_62289.rs:+3:22: +3:23 - _9 = ((_6 as Break).0: std::option::Option); // scope 0 at $DIR/issue_62289.rs:+3:22: +3:23 - StorageLive(_11); // scope 3 at $DIR/issue_62289.rs:+3:22: +3:23 - _11 = _9; // scope 3 at $DIR/issue_62289.rs:+3:22: +3:23 - _0 = > as FromResidual>>::from_residual(move _11) -> [return: bb6, unwind: bb12]; // scope 3 at $DIR/issue_62289.rs:+3:18: +3:23 - // mir::Constant - // + span: $DIR/issue_62289.rs:11:22: 11:23 - // + literal: Const { ty: fn(Option) -> Option> {> as FromResidual>>::from_residual}, val: Value() } + StorageLive(_9); + _9 = ((_6 as Break).0: std::option::Option); + StorageLive(_11); + _11 = _9; + _0 = > as FromResidual>>::from_residual(move _11) -> [return: bb6, unwind: bb12]; } bb6: { - StorageDead(_11); // scope 3 at $DIR/issue_62289.rs:+3:22: +3:23 - StorageDead(_9); // scope 0 at $DIR/issue_62289.rs:+3:22: +3:23 - drop(_5) -> bb9; // scope 0 at $DIR/issue_62289.rs:+3:23: +3:24 + StorageDead(_11); + StorageDead(_9); + drop(_5) -> bb9; } bb7: { - StorageDead(_5); // scope 0 at $DIR/issue_62289.rs:+3:23: +3:24 - _0 = Option::>::Some(move _1); // scope 0 at $DIR/issue_62289.rs:+1:5: +4:6 - drop(_1) -> bb8; // scope 0 at $DIR/issue_62289.rs:+4:5: +4:6 + StorageDead(_5); + _0 = Option::>::Some(move _1); + drop(_1) -> bb8; } bb8: { - StorageDead(_1); // scope 0 at $DIR/issue_62289.rs:+4:5: +4:6 - StorageDead(_6); // scope 0 at $DIR/issue_62289.rs:+5:1: +5:2 - goto -> bb10; // scope 0 at $DIR/issue_62289.rs:+5:2: +5:2 + StorageDead(_1); + StorageDead(_6); + goto -> bb10; } bb9: { - StorageDead(_5); // scope 0 at $DIR/issue_62289.rs:+3:23: +3:24 - StorageDead(_1); // scope 0 at $DIR/issue_62289.rs:+4:5: +4:6 - StorageDead(_6); // scope 0 at $DIR/issue_62289.rs:+5:1: +5:2 - goto -> bb10; // scope 0 at $DIR/issue_62289.rs:+5:2: +5:2 + StorageDead(_5); + StorageDead(_1); + StorageDead(_6); + goto -> bb10; } bb10: { - return; // scope 0 at $DIR/issue_62289.rs:+5:2: +5:2 + return; } bb11 (cleanup): { - drop(_1) -> [return: bb13, unwind terminate]; // scope 0 at $DIR/issue_62289.rs:+4:5: +4:6 + drop(_1) -> [return: bb13, unwind terminate]; } bb12 (cleanup): { - drop(_5) -> [return: bb13, unwind terminate]; // scope 0 at $DIR/issue_62289.rs:+3:23: +3:24 + drop(_5) -> [return: bb13, unwind terminate]; } bb13 (cleanup): { - resume; // scope 0 at $DIR/issue_62289.rs:+0:1: +5:2 + resume; } } diff --git a/tests/mir-opt/issue_72181.bar.built.after.mir b/tests/mir-opt/issue_72181.bar.built.after.mir index ebee89001b998..c2e4e2072de5a 100644 --- a/tests/mir-opt/issue_72181.bar.built.after.mir +++ b/tests/mir-opt/issue_72181.bar.built.after.mir @@ -1,17 +1,17 @@ // MIR for `bar` after built fn bar(_1: [(Never, u32); 1]) -> u32 { - let mut _0: u32; // return place in scope 0 at $DIR/issue_72181.rs:+0:40: +0:43 - let _2: u32; // in scope 0 at $DIR/issue_72181.rs:+0:13: +0:14 + let mut _0: u32; + let _2: u32; scope 1 { - debug x => _2; // in scope 1 at $DIR/issue_72181.rs:+0:13: +0:14 + debug x => _2; } bb0: { - StorageLive(_2); // scope 0 at $DIR/issue_72181.rs:+0:13: +0:14 - _2 = (_1[0 of 1].1: u32); // scope 0 at $DIR/issue_72181.rs:+0:13: +0:14 - _0 = _2; // scope 1 at $DIR/issue_72181.rs:+0:46: +0:47 - StorageDead(_2); // scope 0 at $DIR/issue_72181.rs:+0:48: +0:49 - return; // scope 0 at $DIR/issue_72181.rs:+0:49: +0:49 + StorageLive(_2); + _2 = (_1[0 of 1].1: u32); + _0 = _2; + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/issue_72181.foo.built.after.mir b/tests/mir-opt/issue_72181.foo.built.after.mir index 90c9785202a74..f78942cc56fdc 100644 --- a/tests/mir-opt/issue_72181.foo.built.after.mir +++ b/tests/mir-opt/issue_72181.foo.built.after.mir @@ -1,27 +1,27 @@ // MIR for `foo` after built fn foo(_1: [(Never, u32); 1]) -> u32 { - debug xs => _1; // in scope 0 at $DIR/issue_72181.rs:+0:8: +0:10 - let mut _0: u32; // return place in scope 0 at $DIR/issue_72181.rs:+0:34: +0:37 - let _2: usize; // in scope 0 at $DIR/issue_72181.rs:+0:43: +0:44 - let mut _3: usize; // in scope 0 at $DIR/issue_72181.rs:+0:40: +0:45 - let mut _4: bool; // in scope 0 at $DIR/issue_72181.rs:+0:40: +0:45 + debug xs => _1; + let mut _0: u32; + let _2: usize; + let mut _3: usize; + let mut _4: bool; bb0: { - StorageLive(_2); // scope 0 at $DIR/issue_72181.rs:+0:43: +0:44 - _2 = const 0_usize; // scope 0 at $DIR/issue_72181.rs:+0:43: +0:44 - _3 = Len(_1); // scope 0 at $DIR/issue_72181.rs:+0:40: +0:45 - _4 = Lt(_2, _3); // scope 0 at $DIR/issue_72181.rs:+0:40: +0:45 - assert(move _4, "index out of bounds: the length is {} but the index is {}", move _3, _2) -> [success: bb1, unwind: bb2]; // scope 0 at $DIR/issue_72181.rs:+0:40: +0:45 + StorageLive(_2); + _2 = const 0_usize; + _3 = Len(_1); + _4 = Lt(_2, _3); + assert(move _4, "index out of bounds: the length is {} but the index is {}", move _3, _2) -> [success: bb1, unwind: bb2]; } bb1: { - _0 = (_1[_2].1: u32); // scope 0 at $DIR/issue_72181.rs:+0:40: +0:47 - StorageDead(_2); // scope 0 at $DIR/issue_72181.rs:+0:48: +0:49 - return; // scope 0 at $DIR/issue_72181.rs:+0:49: +0:49 + _0 = (_1[_2].1: u32); + StorageDead(_2); + return; } bb2 (cleanup): { - resume; // scope 0 at $DIR/issue_72181.rs:+0:1: +0:49 + resume; } } diff --git a/tests/mir-opt/issue_72181.main.built.after.mir b/tests/mir-opt/issue_72181.main.built.after.mir index 724e55e17fb3e..4e4071536b1cd 100644 --- a/tests/mir-opt/issue_72181.main.built.after.mir +++ b/tests/mir-opt/issue_72181.main.built.after.mir @@ -1,18 +1,18 @@ // MIR for `main` after built fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/issue_72181.rs:+0:11: +0:11 - let mut _1: usize; // in scope 0 at $DIR/issue_72181.rs:+1:13: +1:34 - let mut _3: Foo; // in scope 0 at $DIR/issue_72181.rs:+3:14: +3:27 - let mut _4: Foo; // in scope 0 at $DIR/issue_72181.rs:+3:29: +3:42 - let mut _5: u64; // in scope 0 at $DIR/issue_72181.rs:+4:13: +4:30 - let _6: usize; // in scope 0 at $DIR/issue_72181.rs:+4:24: +4:25 - let mut _7: usize; // in scope 0 at $DIR/issue_72181.rs:+4:22: +4:26 - let mut _8: bool; // in scope 0 at $DIR/issue_72181.rs:+4:22: +4:26 + let mut _0: (); + let mut _1: usize; + let mut _3: Foo; + let mut _4: Foo; + let mut _5: u64; + let _6: usize; + let mut _7: usize; + let mut _8: bool; scope 1 { - let _2: [Foo; 2]; // in scope 1 at $DIR/issue_72181.rs:+3:9: +3:10 + let _2: [Foo; 2]; scope 2 { - debug f => _2; // in scope 2 at $DIR/issue_72181.rs:+3:9: +3:10 + debug f => _2; scope 3 { } scope 4 { @@ -21,44 +21,41 @@ fn main() -> () { } bb0: { - StorageLive(_1); // scope 0 at $DIR/issue_72181.rs:+1:13: +1:34 - _1 = std::mem::size_of::() -> [return: bb1, unwind: bb3]; // scope 0 at $DIR/issue_72181.rs:+1:13: +1:34 - // mir::Constant - // + span: $DIR/issue_72181.rs:24:13: 24:32 - // + literal: Const { ty: fn() -> usize {std::mem::size_of::}, val: Value() } + StorageLive(_1); + _1 = std::mem::size_of::() -> [return: bb1, unwind: bb3]; } bb1: { - PlaceMention(_1); // scope 0 at $DIR/issue_72181.rs:+1:13: +1:34 - StorageDead(_1); // scope 0 at $DIR/issue_72181.rs:+1:34: +1:35 - StorageLive(_2); // scope 1 at $DIR/issue_72181.rs:+3:9: +3:10 - StorageLive(_3); // scope 1 at $DIR/issue_72181.rs:+3:14: +3:27 - _3 = Foo { a: const 42_u64 }; // scope 1 at $DIR/issue_72181.rs:+3:14: +3:27 - StorageLive(_4); // scope 1 at $DIR/issue_72181.rs:+3:29: +3:42 - _4 = Foo { a: const 10_u64 }; // scope 1 at $DIR/issue_72181.rs:+3:29: +3:42 - _2 = [move _3, move _4]; // scope 1 at $DIR/issue_72181.rs:+3:13: +3:43 - StorageDead(_4); // scope 1 at $DIR/issue_72181.rs:+3:42: +3:43 - StorageDead(_3); // scope 1 at $DIR/issue_72181.rs:+3:42: +3:43 - FakeRead(ForLet(None), _2); // scope 1 at $DIR/issue_72181.rs:+3:9: +3:10 - StorageLive(_5); // scope 2 at $DIR/issue_72181.rs:+4:13: +4:30 - StorageLive(_6); // scope 4 at $DIR/issue_72181.rs:+4:24: +4:25 - _6 = const 0_usize; // scope 4 at $DIR/issue_72181.rs:+4:24: +4:25 - _7 = Len(_2); // scope 4 at $DIR/issue_72181.rs:+4:22: +4:26 - _8 = Lt(_6, _7); // scope 4 at $DIR/issue_72181.rs:+4:22: +4:26 - assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> [success: bb2, unwind: bb3]; // scope 4 at $DIR/issue_72181.rs:+4:22: +4:26 + PlaceMention(_1); + StorageDead(_1); + StorageLive(_2); + StorageLive(_3); + _3 = Foo { a: const 42_u64 }; + StorageLive(_4); + _4 = Foo { a: const 10_u64 }; + _2 = [move _3, move _4]; + StorageDead(_4); + StorageDead(_3); + FakeRead(ForLet(None), _2); + StorageLive(_5); + StorageLive(_6); + _6 = const 0_usize; + _7 = Len(_2); + _8 = Lt(_6, _7); + assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> [success: bb2, unwind: bb3]; } bb2: { - _5 = (_2[_6].0: u64); // scope 4 at $DIR/issue_72181.rs:+4:22: +4:28 - PlaceMention(_5); // scope 2 at $DIR/issue_72181.rs:+4:13: +4:30 - StorageDead(_6); // scope 2 at $DIR/issue_72181.rs:+4:30: +4:31 - StorageDead(_5); // scope 2 at $DIR/issue_72181.rs:+4:30: +4:31 - _0 = const (); // scope 0 at $DIR/issue_72181.rs:+0:11: +5:2 - StorageDead(_2); // scope 1 at $DIR/issue_72181.rs:+5:1: +5:2 - return; // scope 0 at $DIR/issue_72181.rs:+5:2: +5:2 + _5 = (_2[_6].0: u64); + PlaceMention(_5); + StorageDead(_6); + StorageDead(_5); + _0 = const (); + StorageDead(_2); + return; } bb3 (cleanup): { - resume; // scope 0 at $DIR/issue_72181.rs:+0:1: +5:2 + resume; } } diff --git a/tests/mir-opt/issue_72181_1.f.built.after.mir b/tests/mir-opt/issue_72181_1.f.built.after.mir index 25f472251137d..16f34e4a44985 100644 --- a/tests/mir-opt/issue_72181_1.f.built.after.mir +++ b/tests/mir-opt/issue_72181_1.f.built.after.mir @@ -1,15 +1,15 @@ // MIR for `f` after built fn f(_1: Void) -> ! { - debug v => _1; // in scope 0 at $DIR/issue_72181_1.rs:+0:6: +0:7 - let mut _0: !; // return place in scope 0 at $DIR/issue_72181_1.rs:+0:18: +0:19 + debug v => _1; + let mut _0: !; bb0: { - FakeRead(ForMatchedPlace(None), _1); // scope 0 at $DIR/issue_72181_1.rs:+1:11: +1:12 - unreachable; // scope 0 at $DIR/issue_72181_1.rs:+1:11: +1:12 + FakeRead(ForMatchedPlace(None), _1); + unreachable; } bb1: { - return; // scope 0 at $DIR/issue_72181_1.rs:+2:2: +2:2 + return; } } diff --git a/tests/mir-opt/issue_72181_1.main.built.after.mir b/tests/mir-opt/issue_72181_1.main.built.after.mir index e1d896cbcfbe3..f5ab5b526df6e 100644 --- a/tests/mir-opt/issue_72181_1.main.built.after.mir +++ b/tests/mir-opt/issue_72181_1.main.built.after.mir @@ -5,53 +5,47 @@ | 1: user_ty: Canonical { value: Ty(Void), max_universe: U0, variables: [] }, span: $DIR/issue_72181_1.rs:16:12: 16:16, inferred_ty: Void | fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/issue_72181_1.rs:+0:11: +0:11 - let mut _1: !; // in scope 0 at $DIR/issue_72181_1.rs:+0:11: +6:2 - let _2: Void as UserTypeProjection { base: UserType(0), projs: [] }; // in scope 0 at $DIR/issue_72181_1.rs:+1:9: +1:10 - let mut _3: (); // in scope 0 at $DIR/issue_72181_1.rs:+2:41: +2:43 - let _4: !; // in scope 0 at $DIR/issue_72181_1.rs:+5:5: +5:9 - let mut _5: Void; // in scope 0 at $DIR/issue_72181_1.rs:+5:7: +5:8 + let mut _0: (); + let mut _1: !; + let _2: Void as UserTypeProjection { base: UserType(0), projs: [] }; + let mut _3: (); + let _4: !; + let mut _5: Void; scope 1 { - debug v => _2; // in scope 1 at $DIR/issue_72181_1.rs:+1:9: +1:10 + debug v => _2; } scope 2 { } bb0: { - StorageLive(_2); // scope 0 at $DIR/issue_72181_1.rs:+1:9: +1:10 - StorageLive(_3); // scope 2 at $DIR/issue_72181_1.rs:+2:41: +2:43 - _3 = (); // scope 2 at $DIR/issue_72181_1.rs:+2:41: +2:43 - _2 = transmute::<(), Void>(move _3) -> bb4; // scope 2 at $DIR/issue_72181_1.rs:+2:9: +2:44 - // mir::Constant - // + span: $DIR/issue_72181_1.rs:17:9: 17:40 - // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(()) -> Void {transmute::<(), Void>}, val: Value() } + StorageLive(_2); + StorageLive(_3); + _3 = (); + _2 = transmute::<(), Void>(move _3) -> bb4; } bb1: { - StorageDead(_3); // scope 2 at $DIR/issue_72181_1.rs:+2:43: +2:44 - FakeRead(ForLet(None), _2); // scope 0 at $DIR/issue_72181_1.rs:+1:9: +1:10 - AscribeUserType(_2, o, UserTypeProjection { base: UserType(1), projs: [] }); // scope 0 at $DIR/issue_72181_1.rs:+1:12: +1:16 - StorageLive(_4); // scope 1 at $DIR/issue_72181_1.rs:+5:5: +5:9 - StorageLive(_5); // scope 1 at $DIR/issue_72181_1.rs:+5:7: +5:8 - _5 = move _2; // scope 1 at $DIR/issue_72181_1.rs:+5:7: +5:8 - _4 = f(move _5) -> bb4; // scope 1 at $DIR/issue_72181_1.rs:+5:5: +5:9 - // mir::Constant - // + span: $DIR/issue_72181_1.rs:20:5: 20:6 - // + literal: Const { ty: fn(Void) -> ! {f}, val: Value() } + StorageDead(_3); + FakeRead(ForLet(None), _2); + AscribeUserType(_2, o, UserTypeProjection { base: UserType(1), projs: [] }); + StorageLive(_4); + StorageLive(_5); + _5 = move _2; + _4 = f(move _5) -> bb4; } bb2: { - StorageDead(_5); // scope 1 at $DIR/issue_72181_1.rs:+5:8: +5:9 - StorageDead(_4); // scope 1 at $DIR/issue_72181_1.rs:+5:9: +5:10 - StorageDead(_2); // scope 0 at $DIR/issue_72181_1.rs:+6:1: +6:2 - unreachable; // scope 0 at $DIR/issue_72181_1.rs:+0:11: +6:2 + StorageDead(_5); + StorageDead(_4); + StorageDead(_2); + unreachable; } bb3: { - return; // scope 0 at $DIR/issue_72181_1.rs:+6:2: +6:2 + return; } bb4 (cleanup): { - resume; // scope 0 at $DIR/issue_72181_1.rs:+0:1: +6:2 + resume; } } diff --git a/tests/mir-opt/issue_76432.test.SimplifyComparisonIntegral.panic-abort.diff b/tests/mir-opt/issue_76432.test.SimplifyComparisonIntegral.panic-abort.diff index 6515aeceed3d2..f2a925273dbb5 100644 --- a/tests/mir-opt/issue_76432.test.SimplifyComparisonIntegral.panic-abort.diff +++ b/tests/mir-opt/issue_76432.test.SimplifyComparisonIntegral.panic-abort.diff @@ -2,59 +2,53 @@ + // MIR for `test` after SimplifyComparisonIntegral fn test(_1: T) -> () { - debug x => _1; // in scope 0 at $DIR/issue_76432.rs:+0:38: +0:39 - let mut _0: (); // return place in scope 0 at $DIR/issue_76432.rs:+0:44: +0:44 - let _2: &[T]; // in scope 0 at $DIR/issue_76432.rs:+1:9: +1:10 - let mut _3: &[T; 3]; // in scope 0 at $DIR/issue_76432.rs:+1:19: +1:29 - let _4: &[T; 3]; // in scope 0 at $DIR/issue_76432.rs:+1:19: +1:29 - let _5: [T; 3]; // in scope 0 at $DIR/issue_76432.rs:+1:20: +1:29 - let mut _6: T; // in scope 0 at $DIR/issue_76432.rs:+1:21: +1:22 - let mut _7: T; // in scope 0 at $DIR/issue_76432.rs:+1:24: +1:25 - let mut _8: T; // in scope 0 at $DIR/issue_76432.rs:+1:27: +1:28 - let mut _9: usize; // in scope 0 at $DIR/issue_76432.rs:+3:9: +3:33 - let mut _10: usize; // in scope 0 at $DIR/issue_76432.rs:+3:9: +3:33 - let mut _11: bool; // in scope 0 at $DIR/issue_76432.rs:+3:9: +3:33 - let mut _15: !; // in scope 0 at $SRC_DIR/core/src/panic.rs:LL:COL + debug x => _1; + let mut _0: (); + let _2: &[T]; + let mut _3: &[T; 3]; + let _4: &[T; 3]; + let _5: [T; 3]; + let mut _6: T; + let mut _7: T; + let mut _8: T; + let mut _9: usize; + let mut _10: usize; + let mut _11: bool; + let mut _15: !; scope 1 { - debug v => _2; // in scope 1 at $DIR/issue_76432.rs:+1:9: +1:10 - let _12: &T; // in scope 1 at $DIR/issue_76432.rs:+3:10: +3:16 - let _13: &T; // in scope 1 at $DIR/issue_76432.rs:+3:18: +3:24 - let _14: &T; // in scope 1 at $DIR/issue_76432.rs:+3:26: +3:32 + debug v => _2; + let _12: &T; + let _13: &T; + let _14: &T; scope 2 { - debug v1 => &(*_2)[0 of 3]; // in scope 2 at $DIR/issue_76432.rs:+3:10: +3:16 - debug v2 => &(*_2)[1 of 3]; // in scope 2 at $DIR/issue_76432.rs:+3:18: +3:24 - debug v3 => &(*_2)[2 of 3]; // in scope 2 at $DIR/issue_76432.rs:+3:26: +3:32 + debug v1 => &(*_2)[0 of 3]; + debug v2 => &(*_2)[1 of 3]; + debug v3 => &(*_2)[2 of 3]; } } bb0: { - StorageLive(_2); // scope 0 at $DIR/issue_76432.rs:+1:9: +1:10 - StorageLive(_5); // scope 0 at $DIR/issue_76432.rs:+1:20: +1:29 - _5 = [_1, _1, _1]; // scope 0 at $DIR/issue_76432.rs:+1:20: +1:29 - _4 = &_5; // scope 0 at $DIR/issue_76432.rs:+1:19: +1:29 - _2 = _4 as &[T] (Pointer(Unsize)); // scope 0 at $DIR/issue_76432.rs:+1:19: +1:29 - _9 = Len((*_2)); // scope 1 at $DIR/issue_76432.rs:+3:9: +3:33 - _10 = const 3_usize; // scope 1 at $DIR/issue_76432.rs:+3:9: +3:33 -- _11 = Eq(move _9, const 3_usize); // scope 1 at $DIR/issue_76432.rs:+3:9: +3:33 -- switchInt(move _11) -> [0: bb1, otherwise: bb2]; // scope 1 at $DIR/issue_76432.rs:+3:9: +3:33 -+ nop; // scope 1 at $DIR/issue_76432.rs:+3:9: +3:33 -+ switchInt(move _9) -> [3: bb2, otherwise: bb1]; // scope 1 at $DIR/issue_76432.rs:+3:9: +3:33 + StorageLive(_2); + StorageLive(_5); + _5 = [_1, _1, _1]; + _4 = &_5; + _2 = _4 as &[T] (Pointer(Unsize)); + _9 = Len((*_2)); + _10 = const 3_usize; +- _11 = Eq(move _9, const 3_usize); +- switchInt(move _11) -> [0: bb1, otherwise: bb2]; ++ nop; ++ switchInt(move _9) -> [3: bb2, otherwise: bb1]; } bb1: { - _15 = core::panicking::panic(const "internal error: entered unreachable code") -> unwind unreachable; // scope 1 at $SRC_DIR/core/src/panic.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/core/src/panic.rs:LL:COL - // + literal: Const { ty: fn(&'static str) -> ! {core::panicking::panic}, val: Value() } - // mir::Constant - // + span: $SRC_DIR/core/src/panic.rs:LL:COL - // + literal: Const { ty: &str, val: Value(Slice(..)) } + _15 = core::panicking::panic(const "internal error: entered unreachable code") -> unwind unreachable; } bb2: { - StorageDead(_5); // scope 0 at $DIR/issue_76432.rs:+6:1: +6:2 - StorageDead(_2); // scope 0 at $DIR/issue_76432.rs:+6:1: +6:2 - return; // scope 0 at $DIR/issue_76432.rs:+6:2: +6:2 + StorageDead(_5); + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/issue_76432.test.SimplifyComparisonIntegral.panic-unwind.diff b/tests/mir-opt/issue_76432.test.SimplifyComparisonIntegral.panic-unwind.diff index 73b9ea46c449b..761673ca546bc 100644 --- a/tests/mir-opt/issue_76432.test.SimplifyComparisonIntegral.panic-unwind.diff +++ b/tests/mir-opt/issue_76432.test.SimplifyComparisonIntegral.panic-unwind.diff @@ -2,59 +2,53 @@ + // MIR for `test` after SimplifyComparisonIntegral fn test(_1: T) -> () { - debug x => _1; // in scope 0 at $DIR/issue_76432.rs:+0:38: +0:39 - let mut _0: (); // return place in scope 0 at $DIR/issue_76432.rs:+0:44: +0:44 - let _2: &[T]; // in scope 0 at $DIR/issue_76432.rs:+1:9: +1:10 - let mut _3: &[T; 3]; // in scope 0 at $DIR/issue_76432.rs:+1:19: +1:29 - let _4: &[T; 3]; // in scope 0 at $DIR/issue_76432.rs:+1:19: +1:29 - let _5: [T; 3]; // in scope 0 at $DIR/issue_76432.rs:+1:20: +1:29 - let mut _6: T; // in scope 0 at $DIR/issue_76432.rs:+1:21: +1:22 - let mut _7: T; // in scope 0 at $DIR/issue_76432.rs:+1:24: +1:25 - let mut _8: T; // in scope 0 at $DIR/issue_76432.rs:+1:27: +1:28 - let mut _9: usize; // in scope 0 at $DIR/issue_76432.rs:+3:9: +3:33 - let mut _10: usize; // in scope 0 at $DIR/issue_76432.rs:+3:9: +3:33 - let mut _11: bool; // in scope 0 at $DIR/issue_76432.rs:+3:9: +3:33 - let mut _15: !; // in scope 0 at $SRC_DIR/core/src/panic.rs:LL:COL + debug x => _1; + let mut _0: (); + let _2: &[T]; + let mut _3: &[T; 3]; + let _4: &[T; 3]; + let _5: [T; 3]; + let mut _6: T; + let mut _7: T; + let mut _8: T; + let mut _9: usize; + let mut _10: usize; + let mut _11: bool; + let mut _15: !; scope 1 { - debug v => _2; // in scope 1 at $DIR/issue_76432.rs:+1:9: +1:10 - let _12: &T; // in scope 1 at $DIR/issue_76432.rs:+3:10: +3:16 - let _13: &T; // in scope 1 at $DIR/issue_76432.rs:+3:18: +3:24 - let _14: &T; // in scope 1 at $DIR/issue_76432.rs:+3:26: +3:32 + debug v => _2; + let _12: &T; + let _13: &T; + let _14: &T; scope 2 { - debug v1 => &(*_2)[0 of 3]; // in scope 2 at $DIR/issue_76432.rs:+3:10: +3:16 - debug v2 => &(*_2)[1 of 3]; // in scope 2 at $DIR/issue_76432.rs:+3:18: +3:24 - debug v3 => &(*_2)[2 of 3]; // in scope 2 at $DIR/issue_76432.rs:+3:26: +3:32 + debug v1 => &(*_2)[0 of 3]; + debug v2 => &(*_2)[1 of 3]; + debug v3 => &(*_2)[2 of 3]; } } bb0: { - StorageLive(_2); // scope 0 at $DIR/issue_76432.rs:+1:9: +1:10 - StorageLive(_5); // scope 0 at $DIR/issue_76432.rs:+1:20: +1:29 - _5 = [_1, _1, _1]; // scope 0 at $DIR/issue_76432.rs:+1:20: +1:29 - _4 = &_5; // scope 0 at $DIR/issue_76432.rs:+1:19: +1:29 - _2 = _4 as &[T] (Pointer(Unsize)); // scope 0 at $DIR/issue_76432.rs:+1:19: +1:29 - _9 = Len((*_2)); // scope 1 at $DIR/issue_76432.rs:+3:9: +3:33 - _10 = const 3_usize; // scope 1 at $DIR/issue_76432.rs:+3:9: +3:33 -- _11 = Eq(move _9, const 3_usize); // scope 1 at $DIR/issue_76432.rs:+3:9: +3:33 -- switchInt(move _11) -> [0: bb1, otherwise: bb2]; // scope 1 at $DIR/issue_76432.rs:+3:9: +3:33 -+ nop; // scope 1 at $DIR/issue_76432.rs:+3:9: +3:33 -+ switchInt(move _9) -> [3: bb2, otherwise: bb1]; // scope 1 at $DIR/issue_76432.rs:+3:9: +3:33 + StorageLive(_2); + StorageLive(_5); + _5 = [_1, _1, _1]; + _4 = &_5; + _2 = _4 as &[T] (Pointer(Unsize)); + _9 = Len((*_2)); + _10 = const 3_usize; +- _11 = Eq(move _9, const 3_usize); +- switchInt(move _11) -> [0: bb1, otherwise: bb2]; ++ nop; ++ switchInt(move _9) -> [3: bb2, otherwise: bb1]; } bb1: { - _15 = core::panicking::panic(const "internal error: entered unreachable code"); // scope 1 at $SRC_DIR/core/src/panic.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/core/src/panic.rs:LL:COL - // + literal: Const { ty: fn(&'static str) -> ! {core::panicking::panic}, val: Value() } - // mir::Constant - // + span: $SRC_DIR/core/src/panic.rs:LL:COL - // + literal: Const { ty: &str, val: Value(Slice(..)) } + _15 = core::panicking::panic(const "internal error: entered unreachable code"); } bb2: { - StorageDead(_5); // scope 0 at $DIR/issue_76432.rs:+6:1: +6:2 - StorageDead(_2); // scope 0 at $DIR/issue_76432.rs:+6:1: +6:2 - return; // scope 0 at $DIR/issue_76432.rs:+6:2: +6:2 + StorageDead(_5); + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/issue_78192.f.InstSimplify.diff b/tests/mir-opt/issue_78192.f.InstSimplify.diff index 914d7ceb29a9a..10e3dd2036202 100644 --- a/tests/mir-opt/issue_78192.f.InstSimplify.diff +++ b/tests/mir-opt/issue_78192.f.InstSimplify.diff @@ -2,28 +2,28 @@ + // MIR for `f` after InstSimplify fn f(_1: &T) -> *const T { - debug a => _1; // in scope 0 at $DIR/issue_78192.rs:+0:13: +0:14 - let mut _0: *const T; // return place in scope 0 at $DIR/issue_78192.rs:+0:23: +0:31 - let _2: &*const T; // in scope 0 at $DIR/issue_78192.rs:+1:9: +1:10 - let _3: &*const T; // in scope 0 at $DIR/issue_78192.rs:+1:24: +1:40 - let _4: *const T; // in scope 0 at $DIR/issue_78192.rs:+1:25: +1:40 + debug a => _1; + let mut _0: *const T; + let _2: &*const T; + let _3: &*const T; + let _4: *const T; scope 1 { - debug b => _2; // in scope 1 at $DIR/issue_78192.rs:+1:9: +1:10 + debug b => _2; } bb0: { - StorageLive(_2); // scope 0 at $DIR/issue_78192.rs:+1:9: +1:10 - StorageLive(_3); // scope 0 at $DIR/issue_78192.rs:+1:24: +1:40 - StorageLive(_4); // scope 0 at $DIR/issue_78192.rs:+1:25: +1:40 - _4 = &raw const (*_1); // scope 0 at $DIR/issue_78192.rs:+1:26: +1:27 - _3 = &_4; // scope 0 at $DIR/issue_78192.rs:+1:24: +1:40 -- _2 = &(*_3); // scope 0 at $DIR/issue_78192.rs:+1:24: +1:40 -+ _2 = _3; // scope 0 at $DIR/issue_78192.rs:+1:24: +1:40 - StorageDead(_3); // scope 0 at $DIR/issue_78192.rs:+1:40: +1:41 - _0 = (*_2); // scope 1 at $DIR/issue_78192.rs:+2:5: +2:7 - StorageDead(_4); // scope 0 at $DIR/issue_78192.rs:+3:1: +3:2 - StorageDead(_2); // scope 0 at $DIR/issue_78192.rs:+3:1: +3:2 - return; // scope 0 at $DIR/issue_78192.rs:+3:2: +3:2 + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + _4 = &raw const (*_1); + _3 = &_4; +- _2 = &(*_3); ++ _2 = _3; + StorageDead(_3); + _0 = (*_2); + StorageDead(_4); + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/issue_91633.bar.built.after.mir b/tests/mir-opt/issue_91633.bar.built.after.mir index 88a383015b091..92f52e138a59f 100644 --- a/tests/mir-opt/issue_91633.bar.built.after.mir +++ b/tests/mir-opt/issue_91633.bar.built.after.mir @@ -1,40 +1,37 @@ // MIR for `bar` after built fn bar(_1: Box<[T]>) -> () { - debug it => _1; // in scope 0 at $DIR/issue_91633.rs:+0:12: +0:14 - let mut _0: (); // return place in scope 0 at $DIR/issue_91633.rs:+1:2: +1:2 - let mut _2: &<[T] as std::ops::Index>::Output; // in scope 0 at $DIR/issue_91633.rs:+4:14: +4:19 - let mut _3: &[T]; // in scope 0 at $DIR/issue_91633.rs:+4:14: +4:16 + debug it => _1; + let mut _0: (); + let mut _2: &<[T] as std::ops::Index>::Output; + let mut _3: &[T]; scope 1 { } bb0: { - StorageLive(_2); // scope 0 at $DIR/issue_91633.rs:+4:14: +4:19 - StorageLive(_3); // scope 0 at $DIR/issue_91633.rs:+4:14: +4:16 - _3 = &(*_1); // scope 0 at $DIR/issue_91633.rs:+4:14: +4:16 - _2 = <[T] as Index>::index(move _3, const 0_usize) -> [return: bb1, unwind: bb3]; // scope 0 at $DIR/issue_91633.rs:+4:14: +4:19 - // mir::Constant - // + span: $DIR/issue_91633.rs:15:14: 15:19 - // + literal: Const { ty: for<'a> fn(&'a [T], usize) -> &'a <[T] as Index>::Output {<[T] as Index>::index}, val: Value() } + StorageLive(_2); + StorageLive(_3); + _3 = &(*_1); + _2 = <[T] as Index>::index(move _3, const 0_usize) -> [return: bb1, unwind: bb3]; } bb1: { - StorageDead(_3); // scope 0 at $DIR/issue_91633.rs:+4:18: +4:19 - PlaceMention((*_2)); // scope 0 at $DIR/issue_91633.rs:+4:14: +4:19 - StorageDead(_2); // scope 0 at $DIR/issue_91633.rs:+4:19: +4:20 - _0 = const (); // scope 0 at $DIR/issue_91633.rs:+3:2: +5:3 - drop(_1) -> [return: bb2, unwind: bb4]; // scope 0 at $DIR/issue_91633.rs:+5:2: +5:3 + StorageDead(_3); + PlaceMention((*_2)); + StorageDead(_2); + _0 = const (); + drop(_1) -> [return: bb2, unwind: bb4]; } bb2: { - return; // scope 0 at $DIR/issue_91633.rs:+5:3: +5:3 + return; } bb3 (cleanup): { - drop(_1) -> [return: bb4, unwind terminate]; // scope 0 at $DIR/issue_91633.rs:+5:2: +5:3 + drop(_1) -> [return: bb4, unwind terminate]; } bb4 (cleanup): { - resume; // scope 0 at $DIR/issue_91633.rs:+0:1: +5:3 + resume; } } diff --git a/tests/mir-opt/issue_91633.foo.built.after.mir b/tests/mir-opt/issue_91633.foo.built.after.mir index 569135803ea30..4529c58a13733 100644 --- a/tests/mir-opt/issue_91633.foo.built.after.mir +++ b/tests/mir-opt/issue_91633.foo.built.after.mir @@ -1,57 +1,54 @@ // MIR for `foo` after built fn foo(_1: Box<[T]>) -> T { - debug it => _1; // in scope 0 at $DIR/issue_91633.rs:+0:19: +0:21 - let mut _0: T; // return place in scope 0 at $DIR/issue_91633.rs:+0:36: +0:37 - let _2: T; // in scope 0 at $DIR/issue_91633.rs:+2:10: +2:11 - let mut _3: &T; // in scope 0 at $DIR/issue_91633.rs:+2:14: +2:27 - let _4: usize; // in scope 0 at $DIR/issue_91633.rs:+2:17: +2:18 - let mut _5: usize; // in scope 0 at $DIR/issue_91633.rs:+2:14: +2:19 - let mut _6: bool; // in scope 0 at $DIR/issue_91633.rs:+2:14: +2:19 + debug it => _1; + let mut _0: T; + let _2: T; + let mut _3: &T; + let _4: usize; + let mut _5: usize; + let mut _6: bool; scope 1 { - debug f => _2; // in scope 1 at $DIR/issue_91633.rs:+2:10: +2:11 + debug f => _2; } bb0: { - StorageLive(_2); // scope 0 at $DIR/issue_91633.rs:+2:10: +2:11 - StorageLive(_3); // scope 0 at $DIR/issue_91633.rs:+2:14: +2:27 - StorageLive(_4); // scope 0 at $DIR/issue_91633.rs:+2:17: +2:18 - _4 = const 0_usize; // scope 0 at $DIR/issue_91633.rs:+2:17: +2:18 - _5 = Len((*_1)); // scope 0 at $DIR/issue_91633.rs:+2:14: +2:19 - _6 = Lt(_4, _5); // scope 0 at $DIR/issue_91633.rs:+2:14: +2:19 - assert(move _6, "index out of bounds: the length is {} but the index is {}", move _5, _4) -> [success: bb1, unwind: bb5]; // scope 0 at $DIR/issue_91633.rs:+2:14: +2:19 + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + _4 = const 0_usize; + _5 = Len((*_1)); + _6 = Lt(_4, _5); + assert(move _6, "index out of bounds: the length is {} but the index is {}", move _5, _4) -> [success: bb1, unwind: bb5]; } bb1: { - _3 = &(*_1)[_4]; // scope 0 at $DIR/issue_91633.rs:+2:14: +2:27 - _2 = ::clone(move _3) -> [return: bb2, unwind: bb5]; // scope 0 at $DIR/issue_91633.rs:+2:14: +2:27 - // mir::Constant - // + span: $DIR/issue_91633.rs:28:20: 28:25 - // + literal: Const { ty: for<'a> fn(&'a T) -> T {::clone}, val: Value() } + _3 = &(*_1)[_4]; + _2 = ::clone(move _3) -> [return: bb2, unwind: bb5]; } bb2: { - StorageDead(_3); // scope 0 at $DIR/issue_91633.rs:+2:26: +2:27 - FakeRead(ForLet(None), _2); // scope 0 at $DIR/issue_91633.rs:+2:10: +2:11 - StorageDead(_4); // scope 0 at $DIR/issue_91633.rs:+2:27: +2:28 - _0 = move _2; // scope 1 at $DIR/issue_91633.rs:+3:6: +3:7 - drop(_2) -> [return: bb3, unwind: bb5]; // scope 0 at $DIR/issue_91633.rs:+4:2: +4:3 + StorageDead(_3); + FakeRead(ForLet(None), _2); + StorageDead(_4); + _0 = move _2; + drop(_2) -> [return: bb3, unwind: bb5]; } bb3: { - StorageDead(_2); // scope 0 at $DIR/issue_91633.rs:+4:2: +4:3 - drop(_1) -> [return: bb4, unwind: bb6]; // scope 0 at $DIR/issue_91633.rs:+4:2: +4:3 + StorageDead(_2); + drop(_1) -> [return: bb4, unwind: bb6]; } bb4: { - return; // scope 0 at $DIR/issue_91633.rs:+4:3: +4:3 + return; } bb5 (cleanup): { - drop(_1) -> [return: bb6, unwind terminate]; // scope 0 at $DIR/issue_91633.rs:+4:2: +4:3 + drop(_1) -> [return: bb6, unwind terminate]; } bb6 (cleanup): { - resume; // scope 0 at $DIR/issue_91633.rs:+0:1: +4:3 + resume; } } diff --git a/tests/mir-opt/issue_91633.fun.built.after.mir b/tests/mir-opt/issue_91633.fun.built.after.mir index 42486d3a50e38..7175c9e800662 100644 --- a/tests/mir-opt/issue_91633.fun.built.after.mir +++ b/tests/mir-opt/issue_91633.fun.built.after.mir @@ -1,35 +1,35 @@ // MIR for `fun` after built fn fun(_1: &[T]) -> &T { - debug it => _1; // in scope 0 at $DIR/issue_91633.rs:+0:12: +0:14 - let mut _0: &T; // return place in scope 0 at $DIR/issue_91633.rs:+0:25: +0:27 - let _2: &T; // in scope 0 at $DIR/issue_91633.rs:+2:10: +2:11 - let _3: usize; // in scope 0 at $DIR/issue_91633.rs:+2:18: +2:19 - let mut _4: usize; // in scope 0 at $DIR/issue_91633.rs:+2:15: +2:20 - let mut _5: bool; // in scope 0 at $DIR/issue_91633.rs:+2:15: +2:20 + debug it => _1; + let mut _0: &T; + let _2: &T; + let _3: usize; + let mut _4: usize; + let mut _5: bool; scope 1 { - debug f => _2; // in scope 1 at $DIR/issue_91633.rs:+2:10: +2:11 + debug f => _2; } bb0: { - StorageLive(_2); // scope 0 at $DIR/issue_91633.rs:+2:10: +2:11 - StorageLive(_3); // scope 0 at $DIR/issue_91633.rs:+2:18: +2:19 - _3 = const 0_usize; // scope 0 at $DIR/issue_91633.rs:+2:18: +2:19 - _4 = Len((*_1)); // scope 0 at $DIR/issue_91633.rs:+2:15: +2:20 - _5 = Lt(_3, _4); // scope 0 at $DIR/issue_91633.rs:+2:15: +2:20 - assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind: bb2]; // scope 0 at $DIR/issue_91633.rs:+2:15: +2:20 + StorageLive(_2); + StorageLive(_3); + _3 = const 0_usize; + _4 = Len((*_1)); + _5 = Lt(_3, _4); + assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind: bb2]; } bb1: { - _2 = &(*_1)[_3]; // scope 0 at $DIR/issue_91633.rs:+2:14: +2:20 - FakeRead(ForLet(None), _2); // scope 0 at $DIR/issue_91633.rs:+2:10: +2:11 - _0 = &(*_2); // scope 1 at $DIR/issue_91633.rs:+3:6: +3:7 - StorageDead(_3); // scope 0 at $DIR/issue_91633.rs:+4:2: +4:3 - StorageDead(_2); // scope 0 at $DIR/issue_91633.rs:+4:2: +4:3 - return; // scope 0 at $DIR/issue_91633.rs:+4:3: +4:3 + _2 = &(*_1)[_3]; + FakeRead(ForLet(None), _2); + _0 = &(*_2); + StorageDead(_3); + StorageDead(_2); + return; } bb2 (cleanup): { - resume; // scope 0 at $DIR/issue_91633.rs:+0:1: +4:3 + resume; } } diff --git a/tests/mir-opt/issue_91633.hey.built.after.mir b/tests/mir-opt/issue_91633.hey.built.after.mir index 19f0c133e2e53..aa8f31f8156d0 100644 --- a/tests/mir-opt/issue_91633.hey.built.after.mir +++ b/tests/mir-opt/issue_91633.hey.built.after.mir @@ -1,36 +1,33 @@ // MIR for `hey` after built fn hey(_1: &[T]) -> () { - debug it => _1; // in scope 0 at $DIR/issue_91633.rs:+0:12: +0:14 - let mut _0: (); // return place in scope 0 at $DIR/issue_91633.rs:+1:2: +1:2 - let mut _2: &<[T] as std::ops::Index>::Output; // in scope 0 at $DIR/issue_91633.rs:+4:14: +4:20 - let _3: &<[T] as std::ops::Index>::Output; // in scope 0 at $DIR/issue_91633.rs:+4:15: +4:20 - let mut _4: &[T]; // in scope 0 at $DIR/issue_91633.rs:+4:15: +4:17 + debug it => _1; + let mut _0: (); + let mut _2: &<[T] as std::ops::Index>::Output; + let _3: &<[T] as std::ops::Index>::Output; + let mut _4: &[T]; scope 1 { } bb0: { - StorageLive(_2); // scope 0 at $DIR/issue_91633.rs:+4:14: +4:20 - StorageLive(_3); // scope 0 at $DIR/issue_91633.rs:+4:15: +4:20 - StorageLive(_4); // scope 0 at $DIR/issue_91633.rs:+4:15: +4:17 - _4 = &(*_1); // scope 0 at $DIR/issue_91633.rs:+4:15: +4:17 - _3 = <[T] as Index>::index(move _4, const 0_usize) -> [return: bb1, unwind: bb2]; // scope 0 at $DIR/issue_91633.rs:+4:15: +4:20 - // mir::Constant - // + span: $DIR/issue_91633.rs:7:15: 7:20 - // + literal: Const { ty: for<'a> fn(&'a [T], usize) -> &'a <[T] as Index>::Output {<[T] as Index>::index}, val: Value() } + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + _4 = &(*_1); + _3 = <[T] as Index>::index(move _4, const 0_usize) -> [return: bb1, unwind: bb2]; } bb1: { - StorageDead(_4); // scope 0 at $DIR/issue_91633.rs:+4:19: +4:20 - _2 = &(*_3); // scope 0 at $DIR/issue_91633.rs:+4:14: +4:20 - PlaceMention(_2); // scope 0 at $DIR/issue_91633.rs:+4:14: +4:20 - StorageDead(_2); // scope 0 at $DIR/issue_91633.rs:+4:20: +4:21 - _0 = const (); // scope 0 at $DIR/issue_91633.rs:+3:2: +5:3 - StorageDead(_3); // scope 0 at $DIR/issue_91633.rs:+5:2: +5:3 - return; // scope 0 at $DIR/issue_91633.rs:+5:3: +5:3 + StorageDead(_4); + _2 = &(*_3); + PlaceMention(_2); + StorageDead(_2); + _0 = const (); + StorageDead(_3); + return; } bb2 (cleanup): { - resume; // scope 0 at $DIR/issue_91633.rs:+0:1: +5:3 + resume; } } diff --git a/tests/mir-opt/issue_99325.main.built.after.mir b/tests/mir-opt/issue_99325.main.built.after.mir index 0424ce3abeb2e..d8a88a0635c5e 100644 --- a/tests/mir-opt/issue_99325.main.built.after.mir +++ b/tests/mir-opt/issue_99325.main.built.after.mir @@ -5,288 +5,265 @@ | 1: user_ty: Canonical { value: TypeOf(DefId(0:3 ~ issue_99325[22bb]::function_with_bytes), UserSubsts { substs: [Const { ty: &'static [u8; 4], kind: Unevaluated([], DefId(0:8 ~ issue_99325[22bb]::main::{constant#1})) }], user_self_ty: None }), max_universe: U0, variables: [] }, span: $DIR/issue_99325.rs:11:16: 11:68, inferred_ty: fn() -> &'static [u8] {function_with_bytes::<&*b"AAAA">} | fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/issue_99325.rs:+0:15: +0:15 - let _1: (); // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _2: (&&[u8], &&[u8; 4]); // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _3: &&[u8]; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let _4: &[u8]; // in scope 0 at $DIR/issue_99325.rs:+1:16: +1:48 - let mut _5: &&[u8; 4]; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let _6: &[u8; 4]; // in scope 0 at $DIR/issue_99325.rs:+1:50: +1:75 - let _7: [u8; 4]; // in scope 0 at $DIR/issue_99325.rs:+1:51: +1:75 - let _8: &&[u8]; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let _9: &&[u8; 4]; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _10: bool; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _11: bool; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _12: &&[u8]; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _13: &&[u8; 4]; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _14: !; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let _16: !; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _17: core::panicking::AssertKind; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _18: &&[u8]; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let _19: &&[u8]; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _20: &&[u8; 4]; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let _21: &&[u8; 4]; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _22: std::option::Option>; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let _23: (); // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _24: (&&[u8], &&[u8; 4]); // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _25: &&[u8]; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let _26: &[u8]; // in scope 0 at $DIR/issue_99325.rs:+2:16: +2:70 - let mut _27: &&[u8; 4]; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let _28: &[u8; 4]; // in scope 0 at $DIR/issue_99325.rs:+2:72: +2:79 - let _29: &&[u8]; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let _30: &&[u8; 4]; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _31: bool; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _32: bool; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _33: &&[u8]; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _34: &&[u8; 4]; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _35: !; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let _37: !; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _38: core::panicking::AssertKind; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _39: &&[u8]; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let _40: &&[u8]; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _41: &&[u8; 4]; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let _42: &&[u8; 4]; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _43: std::option::Option>; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL + let mut _0: (); + let _1: (); + let mut _2: (&&[u8], &&[u8; 4]); + let mut _3: &&[u8]; + let _4: &[u8]; + let mut _5: &&[u8; 4]; + let _6: &[u8; 4]; + let _7: [u8; 4]; + let _8: &&[u8]; + let _9: &&[u8; 4]; + let mut _10: bool; + let mut _11: bool; + let mut _12: &&[u8]; + let mut _13: &&[u8; 4]; + let mut _14: !; + let _16: !; + let mut _17: core::panicking::AssertKind; + let mut _18: &&[u8]; + let _19: &&[u8]; + let mut _20: &&[u8; 4]; + let _21: &&[u8; 4]; + let mut _22: std::option::Option>; + let _23: (); + let mut _24: (&&[u8], &&[u8; 4]); + let mut _25: &&[u8]; + let _26: &[u8]; + let mut _27: &&[u8; 4]; + let _28: &[u8; 4]; + let _29: &&[u8]; + let _30: &&[u8; 4]; + let mut _31: bool; + let mut _32: bool; + let mut _33: &&[u8]; + let mut _34: &&[u8; 4]; + let mut _35: !; + let _37: !; + let mut _38: core::panicking::AssertKind; + let mut _39: &&[u8]; + let _40: &&[u8]; + let mut _41: &&[u8; 4]; + let _42: &&[u8; 4]; + let mut _43: std::option::Option>; scope 1 { - debug left_val => _8; // in scope 1 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - debug right_val => _9; // in scope 1 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let _15: core::panicking::AssertKind; // in scope 1 at $SRC_DIR/core/src/macros/mod.rs:LL:COL + debug left_val => _8; + debug right_val => _9; + let _15: core::panicking::AssertKind; scope 2 { - debug kind => _15; // in scope 2 at $SRC_DIR/core/src/macros/mod.rs:LL:COL + debug kind => _15; } } scope 3 { - debug left_val => _29; // in scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - debug right_val => _30; // in scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let _36: core::panicking::AssertKind; // in scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL + debug left_val => _29; + debug right_val => _30; + let _36: core::panicking::AssertKind; scope 4 { - debug kind => _36; // in scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL + debug kind => _36; } } bb0: { - StorageLive(_1); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_2); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_3); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_4); // scope 0 at $DIR/issue_99325.rs:+1:16: +1:48 - _4 = function_with_bytes::<&*b"AAAA">() -> [return: bb1, unwind: bb19]; // scope 0 at $DIR/issue_99325.rs:+1:16: +1:48 - // mir::Constant - // + span: $DIR/issue_99325.rs:10:16: 10:46 - // + user_ty: UserType(0) - // + literal: Const { ty: fn() -> &'static [u8] {function_with_bytes::<&*b"AAAA">}, val: Value() } + StorageLive(_1); + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + _4 = function_with_bytes::<&*b"AAAA">() -> [return: bb1, unwind: bb19]; } bb1: { - _3 = &_4; // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_5); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_6); // scope 0 at $DIR/issue_99325.rs:+1:50: +1:75 - StorageLive(_7); // scope 0 at $DIR/issue_99325.rs:+1:51: +1:75 - _7 = [const 65_u8, const 65_u8, const 65_u8, const 65_u8]; // scope 0 at $DIR/issue_99325.rs:+1:51: +1:75 - _6 = &_7; // scope 0 at $DIR/issue_99325.rs:+1:50: +1:75 - _5 = &_6; // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _2 = (move _3, move _5); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_5); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_3); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - FakeRead(ForMatchedPlace(None), _2); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_8); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _8 = (_2.0: &&[u8]); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_9); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _9 = (_2.1: &&[u8; 4]); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_10); // scope 1 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_11); // scope 1 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_12); // scope 1 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _12 = &(*_8); // scope 1 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_13); // scope 1 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _13 = &(*_9); // scope 1 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _11 = <&[u8] as PartialEq<&[u8; 4]>>::eq(move _12, move _13) -> [return: bb2, unwind: bb19]; // scope 1 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/core/src/macros/mod.rs:LL:COL - // + literal: Const { ty: for<'a, 'b> fn(&'a &[u8], &'b &[u8; 4]) -> bool {<&[u8] as PartialEq<&[u8; 4]>>::eq}, val: Value() } + _3 = &_4; + StorageLive(_5); + StorageLive(_6); + StorageLive(_7); + _7 = [const 65_u8, const 65_u8, const 65_u8, const 65_u8]; + _6 = &_7; + _5 = &_6; + _2 = (move _3, move _5); + StorageDead(_5); + StorageDead(_3); + FakeRead(ForMatchedPlace(None), _2); + StorageLive(_8); + _8 = (_2.0: &&[u8]); + StorageLive(_9); + _9 = (_2.1: &&[u8; 4]); + StorageLive(_10); + StorageLive(_11); + StorageLive(_12); + _12 = &(*_8); + StorageLive(_13); + _13 = &(*_9); + _11 = <&[u8] as PartialEq<&[u8; 4]>>::eq(move _12, move _13) -> [return: bb2, unwind: bb19]; } bb2: { - StorageDead(_13); // scope 1 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_12); // scope 1 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _10 = Not(move _11); // scope 1 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_11); // scope 1 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - switchInt(move _10) -> [0: bb4, otherwise: bb3]; // scope 1 at $SRC_DIR/core/src/macros/mod.rs:LL:COL + StorageDead(_13); + StorageDead(_12); + _10 = Not(move _11); + StorageDead(_11); + switchInt(move _10) -> [0: bb4, otherwise: bb3]; } bb3: { - StorageLive(_15); // scope 1 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _15 = core::panicking::AssertKind::Eq; // scope 1 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - FakeRead(ForLet(None), _15); // scope 1 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_16); // scope 2 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_17); // scope 2 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _17 = move _15; // scope 2 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_18); // scope 2 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_19); // scope 2 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _19 = &(*_8); // scope 2 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _18 = &(*_19); // scope 2 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_20); // scope 2 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_21); // scope 2 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _21 = &(*_9); // scope 2 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _20 = &(*_21); // scope 2 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_22); // scope 2 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _22 = Option::>::None; // scope 2 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _16 = core::panicking::assert_failed::<&[u8], &[u8; 4]>(move _17, move _18, move _20, move _22) -> bb19; // scope 2 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/core/src/macros/mod.rs:LL:COL - // + literal: Const { ty: for<'a, 'b, 'c> fn(core::panicking::AssertKind, &'a &[u8], &'b &[u8; 4], Option>) -> ! {core::panicking::assert_failed::<&[u8], &[u8; 4]>}, val: Value() } + StorageLive(_15); + _15 = core::panicking::AssertKind::Eq; + FakeRead(ForLet(None), _15); + StorageLive(_16); + StorageLive(_17); + _17 = move _15; + StorageLive(_18); + StorageLive(_19); + _19 = &(*_8); + _18 = &(*_19); + StorageLive(_20); + StorageLive(_21); + _21 = &(*_9); + _20 = &(*_21); + StorageLive(_22); + _22 = Option::>::None; + _16 = core::panicking::assert_failed::<&[u8], &[u8; 4]>(move _17, move _18, move _20, move _22) -> bb19; } bb4: { - goto -> bb7; // scope 1 at $SRC_DIR/core/src/macros/mod.rs:LL:COL + goto -> bb7; } bb5: { - StorageDead(_22); // scope 2 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_20); // scope 2 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_18); // scope 2 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_17); // scope 2 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_21); // scope 2 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_19); // scope 2 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_16); // scope 2 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_15); // scope 1 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - unreachable; // scope 1 at $SRC_DIR/core/src/macros/mod.rs:LL:COL + StorageDead(_22); + StorageDead(_20); + StorageDead(_18); + StorageDead(_17); + StorageDead(_21); + StorageDead(_19); + StorageDead(_16); + StorageDead(_15); + unreachable; } bb6: { - goto -> bb8; // scope 1 at $SRC_DIR/core/src/macros/mod.rs:LL:COL + goto -> bb8; } bb7: { - _1 = const (); // scope 1 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - goto -> bb8; // scope 1 at $SRC_DIR/core/src/macros/mod.rs:LL:COL + _1 = const (); + goto -> bb8; } bb8: { - StorageDead(_10); // scope 1 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_9); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_8); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - goto -> bb9; // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL + StorageDead(_10); + StorageDead(_9); + StorageDead(_8); + goto -> bb9; } bb9: { - StorageDead(_7); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_6); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_4); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_2); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_1); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_23); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_24); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_25); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_26); // scope 0 at $DIR/issue_99325.rs:+2:16: +2:70 - _26 = function_with_bytes::<&*b"AAAA">() -> [return: bb10, unwind: bb19]; // scope 0 at $DIR/issue_99325.rs:+2:16: +2:70 - // mir::Constant - // + span: $DIR/issue_99325.rs:11:16: 11:68 - // + user_ty: UserType(1) - // + literal: Const { ty: fn() -> &'static [u8] {function_with_bytes::<&*b"AAAA">}, val: Value() } + StorageDead(_7); + StorageDead(_6); + StorageDead(_4); + StorageDead(_2); + StorageDead(_1); + StorageLive(_23); + StorageLive(_24); + StorageLive(_25); + StorageLive(_26); + _26 = function_with_bytes::<&*b"AAAA">() -> [return: bb10, unwind: bb19]; } bb10: { - _25 = &_26; // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_27); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_28); // scope 0 at $DIR/issue_99325.rs:+2:72: +2:79 - _28 = const b"AAAA"; // scope 0 at $DIR/issue_99325.rs:+2:72: +2:79 - // mir::Constant - // + span: $DIR/issue_99325.rs:11:72: 11:79 - // + literal: Const { ty: &[u8; 4], val: Value(Scalar(alloc4)) } - _27 = &_28; // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _24 = (move _25, move _27); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_27); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_25); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - FakeRead(ForMatchedPlace(None), _24); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_29); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _29 = (_24.0: &&[u8]); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_30); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _30 = (_24.1: &&[u8; 4]); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_31); // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_32); // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_33); // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _33 = &(*_29); // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_34); // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _34 = &(*_30); // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _32 = <&[u8] as PartialEq<&[u8; 4]>>::eq(move _33, move _34) -> [return: bb11, unwind: bb19]; // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/core/src/macros/mod.rs:LL:COL - // + literal: Const { ty: for<'a, 'b> fn(&'a &[u8], &'b &[u8; 4]) -> bool {<&[u8] as PartialEq<&[u8; 4]>>::eq}, val: Value() } + _25 = &_26; + StorageLive(_27); + StorageLive(_28); + _28 = const b"AAAA"; + _27 = &_28; + _24 = (move _25, move _27); + StorageDead(_27); + StorageDead(_25); + FakeRead(ForMatchedPlace(None), _24); + StorageLive(_29); + _29 = (_24.0: &&[u8]); + StorageLive(_30); + _30 = (_24.1: &&[u8; 4]); + StorageLive(_31); + StorageLive(_32); + StorageLive(_33); + _33 = &(*_29); + StorageLive(_34); + _34 = &(*_30); + _32 = <&[u8] as PartialEq<&[u8; 4]>>::eq(move _33, move _34) -> [return: bb11, unwind: bb19]; } bb11: { - StorageDead(_34); // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_33); // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _31 = Not(move _32); // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_32); // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - switchInt(move _31) -> [0: bb13, otherwise: bb12]; // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL + StorageDead(_34); + StorageDead(_33); + _31 = Not(move _32); + StorageDead(_32); + switchInt(move _31) -> [0: bb13, otherwise: bb12]; } bb12: { - StorageLive(_36); // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _36 = core::panicking::AssertKind::Eq; // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - FakeRead(ForLet(None), _36); // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_37); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_38); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _38 = move _36; // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_39); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_40); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _40 = &(*_29); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _39 = &(*_40); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_41); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_42); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _42 = &(*_30); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _41 = &(*_42); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_43); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _43 = Option::>::None; // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _37 = core::panicking::assert_failed::<&[u8], &[u8; 4]>(move _38, move _39, move _41, move _43) -> bb19; // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/core/src/macros/mod.rs:LL:COL - // + literal: Const { ty: for<'a, 'b, 'c> fn(core::panicking::AssertKind, &'a &[u8], &'b &[u8; 4], Option>) -> ! {core::panicking::assert_failed::<&[u8], &[u8; 4]>}, val: Value() } + StorageLive(_36); + _36 = core::panicking::AssertKind::Eq; + FakeRead(ForLet(None), _36); + StorageLive(_37); + StorageLive(_38); + _38 = move _36; + StorageLive(_39); + StorageLive(_40); + _40 = &(*_29); + _39 = &(*_40); + StorageLive(_41); + StorageLive(_42); + _42 = &(*_30); + _41 = &(*_42); + StorageLive(_43); + _43 = Option::>::None; + _37 = core::panicking::assert_failed::<&[u8], &[u8; 4]>(move _38, move _39, move _41, move _43) -> bb19; } bb13: { - goto -> bb16; // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL + goto -> bb16; } bb14: { - StorageDead(_43); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_41); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_39); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_38); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_42); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_40); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_37); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_36); // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - unreachable; // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL + StorageDead(_43); + StorageDead(_41); + StorageDead(_39); + StorageDead(_38); + StorageDead(_42); + StorageDead(_40); + StorageDead(_37); + StorageDead(_36); + unreachable; } bb15: { - goto -> bb17; // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL + goto -> bb17; } bb16: { - _23 = const (); // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - goto -> bb17; // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL + _23 = const (); + goto -> bb17; } bb17: { - StorageDead(_31); // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_30); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_29); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - goto -> bb18; // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL + StorageDead(_31); + StorageDead(_30); + StorageDead(_29); + goto -> bb18; } bb18: { - StorageDead(_28); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_26); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_24); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_23); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _0 = const (); // scope 0 at $DIR/issue_99325.rs:+0:15: +3:2 - return; // scope 0 at $DIR/issue_99325.rs:+3:2: +3:2 + StorageDead(_28); + StorageDead(_26); + StorageDead(_24); + StorageDead(_23); + _0 = const (); + return; } bb19 (cleanup): { - resume; // scope 0 at $DIR/issue_99325.rs:+0:1: +3:2 + resume; } } diff --git a/tests/mir-opt/issues/issue_59352.num_to_digit.PreCodegen.after.panic-abort.mir b/tests/mir-opt/issues/issue_59352.num_to_digit.PreCodegen.after.panic-abort.mir index a25d8e2733017..787f9ee095f11 100644 --- a/tests/mir-opt/issues/issue_59352.num_to_digit.PreCodegen.after.panic-abort.mir +++ b/tests/mir-opt/issues/issue_59352.num_to_digit.PreCodegen.after.panic-abort.mir @@ -1,84 +1,72 @@ // MIR for `num_to_digit` after PreCodegen fn num_to_digit(_1: char) -> u32 { - debug num => _1; // in scope 0 at $DIR/issue_59352.rs:+0:21: +0:24 - let mut _0: u32; // return place in scope 0 at $DIR/issue_59352.rs:+0:35: +0:38 - let mut _5: std::option::Option; // in scope 0 at $DIR/issue_59352.rs:+2:26: +2:41 - scope 1 (inlined char::methods::::is_digit) { // at $DIR/issue_59352.rs:15:12: 15:23 - debug self => _1; // in scope 1 at $SRC_DIR/core/src/char/methods.rs:LL:COL - debug radix => const 8_u32; // in scope 1 at $SRC_DIR/core/src/char/methods.rs:LL:COL - let _2: std::option::Option; // in scope 1 at $SRC_DIR/core/src/char/methods.rs:LL:COL - let mut _3: &std::option::Option; // in scope 1 at $SRC_DIR/core/src/char/methods.rs:LL:COL - scope 2 (inlined Option::::is_some) { // at $SRC_DIR/core/src/char/methods.rs:LL:COL - debug self => _3; // in scope 2 at $SRC_DIR/core/src/option.rs:LL:COL - let mut _4: isize; // in scope 2 at $SRC_DIR/core/src/option.rs:LL:COL + debug num => _1; + let mut _0: u32; + let mut _5: std::option::Option; + scope 1 (inlined char::methods::::is_digit) { + debug self => _1; + debug radix => const 8_u32; + let _2: std::option::Option; + let mut _3: &std::option::Option; + scope 2 (inlined Option::::is_some) { + debug self => _3; + let mut _4: isize; } } - scope 3 (inlined #[track_caller] Option::::unwrap) { // at $DIR/issue_59352.rs:15:42: 15:50 - debug self => _5; // in scope 3 at $SRC_DIR/core/src/option.rs:LL:COL - let mut _6: isize; // in scope 3 at $SRC_DIR/core/src/option.rs:LL:COL - let mut _7: !; // in scope 3 at $SRC_DIR/core/src/option.rs:LL:COL + scope 3 (inlined #[track_caller] Option::::unwrap) { + debug self => _5; + let mut _6: isize; + let mut _7: !; scope 4 { - debug val => _0; // in scope 4 at $SRC_DIR/core/src/option.rs:LL:COL + debug val => _0; } } bb0: { - StorageLive(_3); // scope 1 at $SRC_DIR/core/src/char/methods.rs:LL:COL - StorageLive(_2); // scope 1 at $SRC_DIR/core/src/char/methods.rs:LL:COL - _2 = char::methods::::to_digit(_1, const 8_u32) -> [return: bb1, unwind unreachable]; // scope 1 at $SRC_DIR/core/src/char/methods.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/core/src/char/methods.rs:LL:COL - // + literal: Const { ty: fn(char, u32) -> Option {char::methods::::to_digit}, val: Value() } + StorageLive(_3); + StorageLive(_2); + _2 = char::methods::::to_digit(_1, const 8_u32) -> [return: bb1, unwind unreachable]; } bb1: { - _3 = &_2; // scope 1 at $SRC_DIR/core/src/char/methods.rs:LL:COL - _4 = discriminant((*_3)); // scope 2 at $SRC_DIR/core/src/option.rs:LL:COL - StorageDead(_3); // scope 1 at $SRC_DIR/core/src/char/methods.rs:LL:COL - StorageDead(_2); // scope 1 at $SRC_DIR/core/src/char/methods.rs:LL:COL - switchInt(move _4) -> [1: bb2, otherwise: bb7]; // scope 0 at $DIR/issue_59352.rs:+2:8: +2:23 + _3 = &_2; + _4 = discriminant((*_3)); + StorageDead(_3); + StorageDead(_2); + switchInt(move _4) -> [1: bb2, otherwise: bb7]; } bb2: { - StorageLive(_5); // scope 0 at $DIR/issue_59352.rs:+2:26: +2:41 - _5 = char::methods::::to_digit(_1, const 8_u32) -> [return: bb3, unwind unreachable]; // scope 0 at $DIR/issue_59352.rs:+2:26: +2:41 - // mir::Constant - // + span: $DIR/issue_59352.rs:15:30: 15:38 - // + literal: Const { ty: fn(char, u32) -> Option {char::methods::::to_digit}, val: Value() } + StorageLive(_5); + _5 = char::methods::::to_digit(_1, const 8_u32) -> [return: bb3, unwind unreachable]; } bb3: { - _6 = discriminant(_5); // scope 3 at $SRC_DIR/core/src/option.rs:LL:COL - switchInt(move _6) -> [0: bb4, 1: bb5, otherwise: bb6]; // scope 3 at $SRC_DIR/core/src/option.rs:LL:COL + _6 = discriminant(_5); + switchInt(move _6) -> [0: bb4, 1: bb5, otherwise: bb6]; } bb4: { - _7 = core::panicking::panic(const "called `Option::unwrap()` on a `None` value") -> unwind unreachable; // scope 3 at $SRC_DIR/core/src/option.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/core/src/option.rs:LL:COL - // + literal: Const { ty: fn(&'static str) -> ! {core::panicking::panic}, val: Value() } - // mir::Constant - // + span: $SRC_DIR/core/src/option.rs:LL:COL - // + literal: Const { ty: &str, val: Value(Slice(..)) } + _7 = core::panicking::panic(const "called `Option::unwrap()` on a `None` value") -> unwind unreachable; } bb5: { - _0 = move ((_5 as Some).0: u32); // scope 3 at $SRC_DIR/core/src/option.rs:LL:COL - StorageDead(_5); // scope 0 at $DIR/issue_59352.rs:+2:49: +2:50 - goto -> bb8; // scope 0 at $DIR/issue_59352.rs:+2:5: +2:63 + _0 = move ((_5 as Some).0: u32); + StorageDead(_5); + goto -> bb8; } bb6: { - unreachable; // scope 3 at $SRC_DIR/core/src/option.rs:LL:COL + unreachable; } bb7: { - _0 = const 0_u32; // scope 0 at $DIR/issue_59352.rs:+2:60: +2:61 - goto -> bb8; // scope 0 at $DIR/issue_59352.rs:+2:5: +2:63 + _0 = const 0_u32; + goto -> bb8; } bb8: { - return; // scope 0 at $DIR/issue_59352.rs:+3:2: +3:2 + return; } } diff --git a/tests/mir-opt/issues/issue_59352.num_to_digit.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/issues/issue_59352.num_to_digit.PreCodegen.after.panic-unwind.mir index fac4b8a2d25e0..e7c1be7e6e653 100644 --- a/tests/mir-opt/issues/issue_59352.num_to_digit.PreCodegen.after.panic-unwind.mir +++ b/tests/mir-opt/issues/issue_59352.num_to_digit.PreCodegen.after.panic-unwind.mir @@ -1,84 +1,72 @@ // MIR for `num_to_digit` after PreCodegen fn num_to_digit(_1: char) -> u32 { - debug num => _1; // in scope 0 at $DIR/issue_59352.rs:+0:21: +0:24 - let mut _0: u32; // return place in scope 0 at $DIR/issue_59352.rs:+0:35: +0:38 - let mut _5: std::option::Option; // in scope 0 at $DIR/issue_59352.rs:+2:26: +2:41 - scope 1 (inlined char::methods::::is_digit) { // at $DIR/issue_59352.rs:15:12: 15:23 - debug self => _1; // in scope 1 at $SRC_DIR/core/src/char/methods.rs:LL:COL - debug radix => const 8_u32; // in scope 1 at $SRC_DIR/core/src/char/methods.rs:LL:COL - let _2: std::option::Option; // in scope 1 at $SRC_DIR/core/src/char/methods.rs:LL:COL - let mut _3: &std::option::Option; // in scope 1 at $SRC_DIR/core/src/char/methods.rs:LL:COL - scope 2 (inlined Option::::is_some) { // at $SRC_DIR/core/src/char/methods.rs:LL:COL - debug self => _3; // in scope 2 at $SRC_DIR/core/src/option.rs:LL:COL - let mut _4: isize; // in scope 2 at $SRC_DIR/core/src/option.rs:LL:COL + debug num => _1; + let mut _0: u32; + let mut _5: std::option::Option; + scope 1 (inlined char::methods::::is_digit) { + debug self => _1; + debug radix => const 8_u32; + let _2: std::option::Option; + let mut _3: &std::option::Option; + scope 2 (inlined Option::::is_some) { + debug self => _3; + let mut _4: isize; } } - scope 3 (inlined #[track_caller] Option::::unwrap) { // at $DIR/issue_59352.rs:15:42: 15:50 - debug self => _5; // in scope 3 at $SRC_DIR/core/src/option.rs:LL:COL - let mut _6: isize; // in scope 3 at $SRC_DIR/core/src/option.rs:LL:COL - let mut _7: !; // in scope 3 at $SRC_DIR/core/src/option.rs:LL:COL + scope 3 (inlined #[track_caller] Option::::unwrap) { + debug self => _5; + let mut _6: isize; + let mut _7: !; scope 4 { - debug val => _0; // in scope 4 at $SRC_DIR/core/src/option.rs:LL:COL + debug val => _0; } } bb0: { - StorageLive(_3); // scope 1 at $SRC_DIR/core/src/char/methods.rs:LL:COL - StorageLive(_2); // scope 1 at $SRC_DIR/core/src/char/methods.rs:LL:COL - _2 = char::methods::::to_digit(_1, const 8_u32) -> bb1; // scope 1 at $SRC_DIR/core/src/char/methods.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/core/src/char/methods.rs:LL:COL - // + literal: Const { ty: fn(char, u32) -> Option {char::methods::::to_digit}, val: Value() } + StorageLive(_3); + StorageLive(_2); + _2 = char::methods::::to_digit(_1, const 8_u32) -> bb1; } bb1: { - _3 = &_2; // scope 1 at $SRC_DIR/core/src/char/methods.rs:LL:COL - _4 = discriminant((*_3)); // scope 2 at $SRC_DIR/core/src/option.rs:LL:COL - StorageDead(_3); // scope 1 at $SRC_DIR/core/src/char/methods.rs:LL:COL - StorageDead(_2); // scope 1 at $SRC_DIR/core/src/char/methods.rs:LL:COL - switchInt(move _4) -> [1: bb2, otherwise: bb7]; // scope 0 at $DIR/issue_59352.rs:+2:8: +2:23 + _3 = &_2; + _4 = discriminant((*_3)); + StorageDead(_3); + StorageDead(_2); + switchInt(move _4) -> [1: bb2, otherwise: bb7]; } bb2: { - StorageLive(_5); // scope 0 at $DIR/issue_59352.rs:+2:26: +2:41 - _5 = char::methods::::to_digit(_1, const 8_u32) -> bb3; // scope 0 at $DIR/issue_59352.rs:+2:26: +2:41 - // mir::Constant - // + span: $DIR/issue_59352.rs:15:30: 15:38 - // + literal: Const { ty: fn(char, u32) -> Option {char::methods::::to_digit}, val: Value() } + StorageLive(_5); + _5 = char::methods::::to_digit(_1, const 8_u32) -> bb3; } bb3: { - _6 = discriminant(_5); // scope 3 at $SRC_DIR/core/src/option.rs:LL:COL - switchInt(move _6) -> [0: bb4, 1: bb5, otherwise: bb6]; // scope 3 at $SRC_DIR/core/src/option.rs:LL:COL + _6 = discriminant(_5); + switchInt(move _6) -> [0: bb4, 1: bb5, otherwise: bb6]; } bb4: { - _7 = core::panicking::panic(const "called `Option::unwrap()` on a `None` value"); // scope 3 at $SRC_DIR/core/src/option.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/core/src/option.rs:LL:COL - // + literal: Const { ty: fn(&'static str) -> ! {core::panicking::panic}, val: Value() } - // mir::Constant - // + span: $SRC_DIR/core/src/option.rs:LL:COL - // + literal: Const { ty: &str, val: Value(Slice(..)) } + _7 = core::panicking::panic(const "called `Option::unwrap()` on a `None` value"); } bb5: { - _0 = move ((_5 as Some).0: u32); // scope 3 at $SRC_DIR/core/src/option.rs:LL:COL - StorageDead(_5); // scope 0 at $DIR/issue_59352.rs:+2:49: +2:50 - goto -> bb8; // scope 0 at $DIR/issue_59352.rs:+2:5: +2:63 + _0 = move ((_5 as Some).0: u32); + StorageDead(_5); + goto -> bb8; } bb6: { - unreachable; // scope 3 at $SRC_DIR/core/src/option.rs:LL:COL + unreachable; } bb7: { - _0 = const 0_u32; // scope 0 at $DIR/issue_59352.rs:+2:60: +2:61 - goto -> bb8; // scope 0 at $DIR/issue_59352.rs:+2:5: +2:63 + _0 = const 0_u32; + goto -> bb8; } bb8: { - return; // scope 0 at $DIR/issue_59352.rs:+3:2: +3:2 + return; } } diff --git a/tests/mir-opt/issues/issue_75439.foo.MatchBranchSimplification.diff b/tests/mir-opt/issues/issue_75439.foo.MatchBranchSimplification.diff index 8e6e6fc0ec2a3..f1d18b0f7ff9c 100644 --- a/tests/mir-opt/issues/issue_75439.foo.MatchBranchSimplification.diff +++ b/tests/mir-opt/issues/issue_75439.foo.MatchBranchSimplification.diff @@ -2,17 +2,17 @@ + // MIR for `foo` after MatchBranchSimplification fn foo(_1: [u8; 16]) -> Option<[u8; 4]> { - debug bytes => _1; // in scope 0 at $DIR/issue_75439.rs:+0:12: +0:17 - let mut _0: std::option::Option<[u8; 4]>; // return place in scope 0 at $DIR/issue_75439.rs:+0:32: +0:47 - let _2: [u32; 4]; // in scope 0 at $DIR/issue_75439.rs:+2:9: +2:15 - let mut _3: [u8; 16]; // in scope 0 at $DIR/issue_75439.rs:+2:47: +2:52 - let mut _5: [u8; 4]; // in scope 0 at $DIR/issue_75439.rs:+5:14: +5:38 - let mut _6: u32; // in scope 0 at $DIR/issue_75439.rs:+5:33: +5:35 + debug bytes => _1; + let mut _0: std::option::Option<[u8; 4]>; + let _2: [u32; 4]; + let mut _3: [u8; 16]; + let mut _5: [u8; 4]; + let mut _6: u32; scope 1 { - debug dwords => _2; // in scope 1 at $DIR/issue_75439.rs:+2:9: +2:15 + debug dwords => _2; scope 3 { - debug ip => _4; // in scope 3 at $DIR/issue_75439.rs:+4:27: +4:29 - let _4: u32; // in scope 3 at $DIR/issue_75439.rs:+4:27: +4:29 + debug ip => _4; + let _4: u32; scope 4 { } } @@ -21,54 +21,54 @@ } bb0: { - StorageLive(_2); // scope 0 at $DIR/issue_75439.rs:+2:9: +2:15 - StorageLive(_3); // scope 2 at $DIR/issue_75439.rs:+2:47: +2:52 - _3 = _1; // scope 2 at $DIR/issue_75439.rs:+2:47: +2:52 - _2 = move _3 as [u32; 4] (Transmute); // scope 2 at $DIR/issue_75439.rs:+2:37: +2:53 - StorageDead(_3); // scope 2 at $DIR/issue_75439.rs:+2:52: +2:53 - switchInt(_2[0 of 4]) -> [0: bb1, otherwise: bb6]; // scope 3 at $DIR/issue_75439.rs:+4:12: +4:30 + StorageLive(_2); + StorageLive(_3); + _3 = _1; + _2 = move _3 as [u32; 4] (Transmute); + StorageDead(_3); + switchInt(_2[0 of 4]) -> [0: bb1, otherwise: bb6]; } bb1: { - switchInt(_2[1 of 4]) -> [0: bb2, otherwise: bb6]; // scope 3 at $DIR/issue_75439.rs:+4:12: +4:30 + switchInt(_2[1 of 4]) -> [0: bb2, otherwise: bb6]; } bb2: { - switchInt(_2[2 of 4]) -> [0: bb4, 4294901760: bb5, otherwise: bb6]; // scope 3 at $DIR/issue_75439.rs:+4:12: +4:30 + switchInt(_2[2 of 4]) -> [0: bb4, 4294901760: bb5, otherwise: bb6]; } bb3: { - StorageLive(_5); // scope 3 at $DIR/issue_75439.rs:+5:14: +5:38 - StorageLive(_6); // scope 4 at $DIR/issue_75439.rs:+5:33: +5:35 - _6 = _4; // scope 4 at $DIR/issue_75439.rs:+5:33: +5:35 - _5 = move _6 as [u8; 4] (Transmute); // scope 4 at $DIR/issue_75439.rs:+5:23: +5:36 - StorageDead(_6); // scope 4 at $DIR/issue_75439.rs:+5:35: +5:36 - _0 = Option::<[u8; 4]>::Some(move _5); // scope 3 at $DIR/issue_75439.rs:+5:9: +5:39 - StorageDead(_5); // scope 3 at $DIR/issue_75439.rs:+5:38: +5:39 - StorageDead(_4); // scope 1 at $DIR/issue_75439.rs:+6:5: +6:6 - goto -> bb7; // scope 1 at $DIR/issue_75439.rs:+4:5: +8:6 + StorageLive(_5); + StorageLive(_6); + _6 = _4; + _5 = move _6 as [u8; 4] (Transmute); + StorageDead(_6); + _0 = Option::<[u8; 4]>::Some(move _5); + StorageDead(_5); + StorageDead(_4); + goto -> bb7; } bb4: { - StorageLive(_4); // scope 3 at $DIR/issue_75439.rs:+4:27: +4:29 - _4 = _2[3 of 4]; // scope 3 at $DIR/issue_75439.rs:+4:27: +4:29 - goto -> bb3; // scope 3 at $DIR/issue_75439.rs:+4:12: +4:30 + StorageLive(_4); + _4 = _2[3 of 4]; + goto -> bb3; } bb5: { - StorageLive(_4); // scope 3 at $DIR/issue_75439.rs:+4:27: +4:29 - _4 = _2[3 of 4]; // scope 3 at $DIR/issue_75439.rs:+4:27: +4:29 - goto -> bb3; // scope 3 at $DIR/issue_75439.rs:+4:12: +4:30 + StorageLive(_4); + _4 = _2[3 of 4]; + goto -> bb3; } bb6: { - _0 = Option::<[u8; 4]>::None; // scope 1 at $DIR/issue_75439.rs:+7:9: +7:13 - goto -> bb7; // scope 1 at $DIR/issue_75439.rs:+4:5: +8:6 + _0 = Option::<[u8; 4]>::None; + goto -> bb7; } bb7: { - StorageDead(_2); // scope 0 at $DIR/issue_75439.rs:+9:1: +9:2 - return; // scope 0 at $DIR/issue_75439.rs:+9:2: +9:2 + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/loop_test.main.SimplifyCfg-promote-consts.after.mir b/tests/mir-opt/loop_test.main.SimplifyCfg-promote-consts.after.mir index 43d00b29e74ee..74754bc1652e7 100644 --- a/tests/mir-opt/loop_test.main.SimplifyCfg-promote-consts.after.mir +++ b/tests/mir-opt/loop_test.main.SimplifyCfg-promote-consts.after.mir @@ -1,52 +1,52 @@ // MIR for `main` after SimplifyCfg-promote-consts fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/loop_test.rs:+0:11: +0:11 - let _1: (); // in scope 0 at $DIR/loop_test.rs:+4:5: +6:6 - let mut _2: bool; // in scope 0 at $DIR/loop_test.rs:+4:8: +4:12 - let mut _3: !; // in scope 0 at $DIR/loop_test.rs:+4:13: +6:6 - let mut _4: !; // in scope 0 at $DIR/loop_test.rs:+7:5: +10:6 - let mut _5: (); // in scope 0 at $DIR/loop_test.rs:+0:1: +11:2 - let _6: i32; // in scope 0 at $DIR/loop_test.rs:+8:13: +8:14 + let mut _0: (); + let _1: (); + let mut _2: bool; + let mut _3: !; + let mut _4: !; + let mut _5: (); + let _6: i32; scope 1 { - debug x => _6; // in scope 1 at $DIR/loop_test.rs:+8:13: +8:14 + debug x => _6; } bb0: { - StorageLive(_1); // scope 0 at $DIR/loop_test.rs:+4:5: +6:6 - StorageLive(_2); // scope 0 at $DIR/loop_test.rs:+4:8: +4:12 - _2 = const true; // scope 0 at $DIR/loop_test.rs:+4:8: +4:12 - switchInt(move _2) -> [0: bb2, otherwise: bb1]; // scope 0 at $DIR/loop_test.rs:+4:8: +4:12 + StorageLive(_1); + StorageLive(_2); + _2 = const true; + switchInt(move _2) -> [0: bb2, otherwise: bb1]; } bb1: { - _0 = const (); // scope 0 at $DIR/loop_test.rs:+5:9: +5:15 - StorageDead(_2); // scope 0 at $DIR/loop_test.rs:+6:5: +6:6 - StorageDead(_1); // scope 0 at $DIR/loop_test.rs:+6:5: +6:6 - return; // scope 0 at $DIR/loop_test.rs:+11:2: +11:2 + _0 = const (); + StorageDead(_2); + StorageDead(_1); + return; } bb2: { - _1 = const (); // scope 0 at $DIR/loop_test.rs:+6:6: +6:6 - StorageDead(_2); // scope 0 at $DIR/loop_test.rs:+6:5: +6:6 - StorageDead(_1); // scope 0 at $DIR/loop_test.rs:+6:5: +6:6 - StorageLive(_4); // scope 0 at $DIR/loop_test.rs:+7:5: +10:6 - goto -> bb3; // scope 0 at $DIR/loop_test.rs:+7:5: +10:6 + _1 = const (); + StorageDead(_2); + StorageDead(_1); + StorageLive(_4); + goto -> bb3; } bb3: { - falseUnwind -> [real: bb4, unwind: bb5]; // scope 0 at $DIR/loop_test.rs:+7:5: +10:6 + falseUnwind -> [real: bb4, unwind: bb5]; } bb4: { - StorageLive(_6); // scope 0 at $DIR/loop_test.rs:+8:13: +8:14 - _6 = const 1_i32; // scope 0 at $DIR/loop_test.rs:+8:17: +8:18 - FakeRead(ForLet(None), _6); // scope 0 at $DIR/loop_test.rs:+8:13: +8:14 - StorageDead(_6); // scope 0 at $DIR/loop_test.rs:+10:5: +10:6 - goto -> bb3; // scope 0 at no-location + StorageLive(_6); + _6 = const 1_i32; + FakeRead(ForLet(None), _6); + StorageDead(_6); + goto -> bb3; } bb5 (cleanup): { - resume; // scope 0 at $DIR/loop_test.rs:+0:1: +11:2 + resume; } } diff --git a/tests/mir-opt/lower_array_len.array_bound.NormalizeArrayLen.panic-abort.diff b/tests/mir-opt/lower_array_len.array_bound.NormalizeArrayLen.panic-abort.diff index 8b7f69361864c..de6c2366dbb30 100644 --- a/tests/mir-opt/lower_array_len.array_bound.NormalizeArrayLen.panic-abort.diff +++ b/tests/mir-opt/lower_array_len.array_bound.NormalizeArrayLen.panic-abort.diff @@ -2,63 +2,63 @@ + // MIR for `array_bound` after NormalizeArrayLen fn array_bound(_1: usize, _2: &[u8; N]) -> u8 { - debug index => _1; // in scope 0 at $DIR/lower_array_len.rs:+0:36: +0:41 - debug slice => _2; // in scope 0 at $DIR/lower_array_len.rs:+0:50: +0:55 - let mut _0: u8; // return place in scope 0 at $DIR/lower_array_len.rs:+0:70: +0:72 - let mut _3: bool; // in scope 0 at $DIR/lower_array_len.rs:+1:8: +1:27 - let mut _4: usize; // in scope 0 at $DIR/lower_array_len.rs:+1:8: +1:13 - let mut _5: usize; // in scope 0 at $DIR/lower_array_len.rs:+1:16: +1:27 - let mut _6: &[u8]; // in scope 0 at $DIR/lower_array_len.rs:+1:16: +1:27 - let mut _7: &[u8; N]; // in scope 0 at $DIR/lower_array_len.rs:+1:16: +1:27 - let _8: usize; // in scope 0 at $DIR/lower_array_len.rs:+2:15: +2:20 - let mut _9: usize; // in scope 0 at $DIR/lower_array_len.rs:+2:9: +2:21 - let mut _10: bool; // in scope 0 at $DIR/lower_array_len.rs:+2:9: +2:21 + debug index => _1; + debug slice => _2; + let mut _0: u8; + let mut _3: bool; + let mut _4: usize; + let mut _5: usize; + let mut _6: &[u8]; + let mut _7: &[u8; N]; + let _8: usize; + let mut _9: usize; + let mut _10: bool; bb0: { - StorageLive(_3); // scope 0 at $DIR/lower_array_len.rs:+1:8: +1:27 - StorageLive(_4); // scope 0 at $DIR/lower_array_len.rs:+1:8: +1:13 - _4 = _1; // scope 0 at $DIR/lower_array_len.rs:+1:8: +1:13 - StorageLive(_5); // scope 0 at $DIR/lower_array_len.rs:+1:16: +1:27 - StorageLive(_6); // scope 0 at $DIR/lower_array_len.rs:+1:16: +1:27 - StorageLive(_7); // scope 0 at $DIR/lower_array_len.rs:+1:16: +1:27 - _7 = &(*_2); // scope 0 at $DIR/lower_array_len.rs:+1:16: +1:27 - _6 = move _7 as &[u8] (Pointer(Unsize)); // scope 0 at $DIR/lower_array_len.rs:+1:16: +1:27 - StorageDead(_7); // scope 0 at $DIR/lower_array_len.rs:+1:20: +1:21 -- _5 = Len((*_6)); // scope 0 at $DIR/lower_array_len.rs:+1:16: +1:27 -+ _5 = const N; // scope 0 at $DIR/lower_array_len.rs:+1:16: +1:27 - goto -> bb1; // scope 0 at $DIR/lower_array_len.rs:+1:16: +1:27 + StorageLive(_3); + StorageLive(_4); + _4 = _1; + StorageLive(_5); + StorageLive(_6); + StorageLive(_7); + _7 = &(*_2); + _6 = move _7 as &[u8] (Pointer(Unsize)); + StorageDead(_7); +- _5 = Len((*_6)); ++ _5 = const N; + goto -> bb1; } bb1: { - StorageDead(_6); // scope 0 at $DIR/lower_array_len.rs:+1:26: +1:27 - _3 = Lt(move _4, move _5); // scope 0 at $DIR/lower_array_len.rs:+1:8: +1:27 - StorageDead(_5); // scope 0 at $DIR/lower_array_len.rs:+1:26: +1:27 - StorageDead(_4); // scope 0 at $DIR/lower_array_len.rs:+1:26: +1:27 - switchInt(move _3) -> [0: bb4, otherwise: bb2]; // scope 0 at $DIR/lower_array_len.rs:+1:8: +1:27 + StorageDead(_6); + _3 = Lt(move _4, move _5); + StorageDead(_5); + StorageDead(_4); + switchInt(move _3) -> [0: bb4, otherwise: bb2]; } bb2: { - StorageLive(_8); // scope 0 at $DIR/lower_array_len.rs:+2:15: +2:20 - _8 = _1; // scope 0 at $DIR/lower_array_len.rs:+2:15: +2:20 - _9 = Len((*_2)); // scope 0 at $DIR/lower_array_len.rs:+2:9: +2:21 - _10 = Lt(_8, _9); // scope 0 at $DIR/lower_array_len.rs:+2:9: +2:21 - assert(move _10, "index out of bounds: the length is {} but the index is {}", move _9, _8) -> [success: bb3, unwind unreachable]; // scope 0 at $DIR/lower_array_len.rs:+2:9: +2:21 + StorageLive(_8); + _8 = _1; + _9 = Len((*_2)); + _10 = Lt(_8, _9); + assert(move _10, "index out of bounds: the length is {} but the index is {}", move _9, _8) -> [success: bb3, unwind unreachable]; } bb3: { - _0 = (*_2)[_8]; // scope 0 at $DIR/lower_array_len.rs:+2:9: +2:21 - StorageDead(_8); // scope 0 at $DIR/lower_array_len.rs:+3:5: +3:6 - goto -> bb5; // scope 0 at $DIR/lower_array_len.rs:+1:5: +5:6 + _0 = (*_2)[_8]; + StorageDead(_8); + goto -> bb5; } bb4: { - _0 = const 42_u8; // scope 0 at $DIR/lower_array_len.rs:+4:9: +4:11 - goto -> bb5; // scope 0 at $DIR/lower_array_len.rs:+1:5: +5:6 + _0 = const 42_u8; + goto -> bb5; } bb5: { - StorageDead(_3); // scope 0 at $DIR/lower_array_len.rs:+5:5: +5:6 - return; // scope 0 at $DIR/lower_array_len.rs:+6:2: +6:2 + StorageDead(_3); + return; } } diff --git a/tests/mir-opt/lower_array_len.array_bound.NormalizeArrayLen.panic-unwind.diff b/tests/mir-opt/lower_array_len.array_bound.NormalizeArrayLen.panic-unwind.diff index 59de067f4a4f8..35a1e51a3ac94 100644 --- a/tests/mir-opt/lower_array_len.array_bound.NormalizeArrayLen.panic-unwind.diff +++ b/tests/mir-opt/lower_array_len.array_bound.NormalizeArrayLen.panic-unwind.diff @@ -2,63 +2,63 @@ + // MIR for `array_bound` after NormalizeArrayLen fn array_bound(_1: usize, _2: &[u8; N]) -> u8 { - debug index => _1; // in scope 0 at $DIR/lower_array_len.rs:+0:36: +0:41 - debug slice => _2; // in scope 0 at $DIR/lower_array_len.rs:+0:50: +0:55 - let mut _0: u8; // return place in scope 0 at $DIR/lower_array_len.rs:+0:70: +0:72 - let mut _3: bool; // in scope 0 at $DIR/lower_array_len.rs:+1:8: +1:27 - let mut _4: usize; // in scope 0 at $DIR/lower_array_len.rs:+1:8: +1:13 - let mut _5: usize; // in scope 0 at $DIR/lower_array_len.rs:+1:16: +1:27 - let mut _6: &[u8]; // in scope 0 at $DIR/lower_array_len.rs:+1:16: +1:27 - let mut _7: &[u8; N]; // in scope 0 at $DIR/lower_array_len.rs:+1:16: +1:27 - let _8: usize; // in scope 0 at $DIR/lower_array_len.rs:+2:15: +2:20 - let mut _9: usize; // in scope 0 at $DIR/lower_array_len.rs:+2:9: +2:21 - let mut _10: bool; // in scope 0 at $DIR/lower_array_len.rs:+2:9: +2:21 + debug index => _1; + debug slice => _2; + let mut _0: u8; + let mut _3: bool; + let mut _4: usize; + let mut _5: usize; + let mut _6: &[u8]; + let mut _7: &[u8; N]; + let _8: usize; + let mut _9: usize; + let mut _10: bool; bb0: { - StorageLive(_3); // scope 0 at $DIR/lower_array_len.rs:+1:8: +1:27 - StorageLive(_4); // scope 0 at $DIR/lower_array_len.rs:+1:8: +1:13 - _4 = _1; // scope 0 at $DIR/lower_array_len.rs:+1:8: +1:13 - StorageLive(_5); // scope 0 at $DIR/lower_array_len.rs:+1:16: +1:27 - StorageLive(_6); // scope 0 at $DIR/lower_array_len.rs:+1:16: +1:27 - StorageLive(_7); // scope 0 at $DIR/lower_array_len.rs:+1:16: +1:27 - _7 = &(*_2); // scope 0 at $DIR/lower_array_len.rs:+1:16: +1:27 - _6 = move _7 as &[u8] (Pointer(Unsize)); // scope 0 at $DIR/lower_array_len.rs:+1:16: +1:27 - StorageDead(_7); // scope 0 at $DIR/lower_array_len.rs:+1:20: +1:21 -- _5 = Len((*_6)); // scope 0 at $DIR/lower_array_len.rs:+1:16: +1:27 -+ _5 = const N; // scope 0 at $DIR/lower_array_len.rs:+1:16: +1:27 - goto -> bb1; // scope 0 at $DIR/lower_array_len.rs:+1:16: +1:27 + StorageLive(_3); + StorageLive(_4); + _4 = _1; + StorageLive(_5); + StorageLive(_6); + StorageLive(_7); + _7 = &(*_2); + _6 = move _7 as &[u8] (Pointer(Unsize)); + StorageDead(_7); +- _5 = Len((*_6)); ++ _5 = const N; + goto -> bb1; } bb1: { - StorageDead(_6); // scope 0 at $DIR/lower_array_len.rs:+1:26: +1:27 - _3 = Lt(move _4, move _5); // scope 0 at $DIR/lower_array_len.rs:+1:8: +1:27 - StorageDead(_5); // scope 0 at $DIR/lower_array_len.rs:+1:26: +1:27 - StorageDead(_4); // scope 0 at $DIR/lower_array_len.rs:+1:26: +1:27 - switchInt(move _3) -> [0: bb4, otherwise: bb2]; // scope 0 at $DIR/lower_array_len.rs:+1:8: +1:27 + StorageDead(_6); + _3 = Lt(move _4, move _5); + StorageDead(_5); + StorageDead(_4); + switchInt(move _3) -> [0: bb4, otherwise: bb2]; } bb2: { - StorageLive(_8); // scope 0 at $DIR/lower_array_len.rs:+2:15: +2:20 - _8 = _1; // scope 0 at $DIR/lower_array_len.rs:+2:15: +2:20 - _9 = Len((*_2)); // scope 0 at $DIR/lower_array_len.rs:+2:9: +2:21 - _10 = Lt(_8, _9); // scope 0 at $DIR/lower_array_len.rs:+2:9: +2:21 - assert(move _10, "index out of bounds: the length is {} but the index is {}", move _9, _8) -> bb3; // scope 0 at $DIR/lower_array_len.rs:+2:9: +2:21 + StorageLive(_8); + _8 = _1; + _9 = Len((*_2)); + _10 = Lt(_8, _9); + assert(move _10, "index out of bounds: the length is {} but the index is {}", move _9, _8) -> bb3; } bb3: { - _0 = (*_2)[_8]; // scope 0 at $DIR/lower_array_len.rs:+2:9: +2:21 - StorageDead(_8); // scope 0 at $DIR/lower_array_len.rs:+3:5: +3:6 - goto -> bb5; // scope 0 at $DIR/lower_array_len.rs:+1:5: +5:6 + _0 = (*_2)[_8]; + StorageDead(_8); + goto -> bb5; } bb4: { - _0 = const 42_u8; // scope 0 at $DIR/lower_array_len.rs:+4:9: +4:11 - goto -> bb5; // scope 0 at $DIR/lower_array_len.rs:+1:5: +5:6 + _0 = const 42_u8; + goto -> bb5; } bb5: { - StorageDead(_3); // scope 0 at $DIR/lower_array_len.rs:+5:5: +5:6 - return; // scope 0 at $DIR/lower_array_len.rs:+6:2: +6:2 + StorageDead(_3); + return; } } diff --git a/tests/mir-opt/lower_array_len.array_bound_mut.NormalizeArrayLen.panic-abort.diff b/tests/mir-opt/lower_array_len.array_bound_mut.NormalizeArrayLen.panic-abort.diff index 50903ccb16180..76175afc2f827 100644 --- a/tests/mir-opt/lower_array_len.array_bound_mut.NormalizeArrayLen.panic-abort.diff +++ b/tests/mir-opt/lower_array_len.array_bound_mut.NormalizeArrayLen.panic-abort.diff @@ -2,76 +2,76 @@ + // MIR for `array_bound_mut` after NormalizeArrayLen fn array_bound_mut(_1: usize, _2: &mut [u8; N]) -> u8 { - debug index => _1; // in scope 0 at $DIR/lower_array_len.rs:+0:40: +0:45 - debug slice => _2; // in scope 0 at $DIR/lower_array_len.rs:+0:54: +0:59 - let mut _0: u8; // return place in scope 0 at $DIR/lower_array_len.rs:+0:78: +0:80 - let mut _3: bool; // in scope 0 at $DIR/lower_array_len.rs:+1:8: +1:27 - let mut _4: usize; // in scope 0 at $DIR/lower_array_len.rs:+1:8: +1:13 - let mut _5: usize; // in scope 0 at $DIR/lower_array_len.rs:+1:16: +1:27 - let mut _6: &[u8]; // in scope 0 at $DIR/lower_array_len.rs:+1:16: +1:27 - let mut _7: &[u8; N]; // in scope 0 at $DIR/lower_array_len.rs:+1:16: +1:27 - let _8: usize; // in scope 0 at $DIR/lower_array_len.rs:+2:15: +2:20 - let mut _9: usize; // in scope 0 at $DIR/lower_array_len.rs:+2:9: +2:21 - let mut _10: bool; // in scope 0 at $DIR/lower_array_len.rs:+2:9: +2:21 - let _11: usize; // in scope 0 at $DIR/lower_array_len.rs:+4:15: +4:16 - let mut _12: usize; // in scope 0 at $DIR/lower_array_len.rs:+4:9: +4:17 - let mut _13: bool; // in scope 0 at $DIR/lower_array_len.rs:+4:9: +4:17 + debug index => _1; + debug slice => _2; + let mut _0: u8; + let mut _3: bool; + let mut _4: usize; + let mut _5: usize; + let mut _6: &[u8]; + let mut _7: &[u8; N]; + let _8: usize; + let mut _9: usize; + let mut _10: bool; + let _11: usize; + let mut _12: usize; + let mut _13: bool; bb0: { - StorageLive(_3); // scope 0 at $DIR/lower_array_len.rs:+1:8: +1:27 - StorageLive(_4); // scope 0 at $DIR/lower_array_len.rs:+1:8: +1:13 - _4 = _1; // scope 0 at $DIR/lower_array_len.rs:+1:8: +1:13 - StorageLive(_5); // scope 0 at $DIR/lower_array_len.rs:+1:16: +1:27 - StorageLive(_6); // scope 0 at $DIR/lower_array_len.rs:+1:16: +1:27 - StorageLive(_7); // scope 0 at $DIR/lower_array_len.rs:+1:16: +1:27 - _7 = &(*_2); // scope 0 at $DIR/lower_array_len.rs:+1:16: +1:27 - _6 = move _7 as &[u8] (Pointer(Unsize)); // scope 0 at $DIR/lower_array_len.rs:+1:16: +1:27 - StorageDead(_7); // scope 0 at $DIR/lower_array_len.rs:+1:20: +1:21 -- _5 = Len((*_6)); // scope 0 at $DIR/lower_array_len.rs:+1:16: +1:27 -+ _5 = const N; // scope 0 at $DIR/lower_array_len.rs:+1:16: +1:27 - goto -> bb1; // scope 0 at $DIR/lower_array_len.rs:+1:16: +1:27 + StorageLive(_3); + StorageLive(_4); + _4 = _1; + StorageLive(_5); + StorageLive(_6); + StorageLive(_7); + _7 = &(*_2); + _6 = move _7 as &[u8] (Pointer(Unsize)); + StorageDead(_7); +- _5 = Len((*_6)); ++ _5 = const N; + goto -> bb1; } bb1: { - StorageDead(_6); // scope 0 at $DIR/lower_array_len.rs:+1:26: +1:27 - _3 = Lt(move _4, move _5); // scope 0 at $DIR/lower_array_len.rs:+1:8: +1:27 - StorageDead(_5); // scope 0 at $DIR/lower_array_len.rs:+1:26: +1:27 - StorageDead(_4); // scope 0 at $DIR/lower_array_len.rs:+1:26: +1:27 - switchInt(move _3) -> [0: bb4, otherwise: bb2]; // scope 0 at $DIR/lower_array_len.rs:+1:8: +1:27 + StorageDead(_6); + _3 = Lt(move _4, move _5); + StorageDead(_5); + StorageDead(_4); + switchInt(move _3) -> [0: bb4, otherwise: bb2]; } bb2: { - StorageLive(_8); // scope 0 at $DIR/lower_array_len.rs:+2:15: +2:20 - _8 = _1; // scope 0 at $DIR/lower_array_len.rs:+2:15: +2:20 - _9 = Len((*_2)); // scope 0 at $DIR/lower_array_len.rs:+2:9: +2:21 - _10 = Lt(_8, _9); // scope 0 at $DIR/lower_array_len.rs:+2:9: +2:21 - assert(move _10, "index out of bounds: the length is {} but the index is {}", move _9, _8) -> [success: bb3, unwind unreachable]; // scope 0 at $DIR/lower_array_len.rs:+2:9: +2:21 + StorageLive(_8); + _8 = _1; + _9 = Len((*_2)); + _10 = Lt(_8, _9); + assert(move _10, "index out of bounds: the length is {} but the index is {}", move _9, _8) -> [success: bb3, unwind unreachable]; } bb3: { - _0 = (*_2)[_8]; // scope 0 at $DIR/lower_array_len.rs:+2:9: +2:21 - StorageDead(_8); // scope 0 at $DIR/lower_array_len.rs:+3:5: +3:6 - goto -> bb6; // scope 0 at $DIR/lower_array_len.rs:+1:5: +7:6 + _0 = (*_2)[_8]; + StorageDead(_8); + goto -> bb6; } bb4: { - StorageLive(_11); // scope 0 at $DIR/lower_array_len.rs:+4:15: +4:16 - _11 = const 0_usize; // scope 0 at $DIR/lower_array_len.rs:+4:15: +4:16 - _12 = Len((*_2)); // scope 0 at $DIR/lower_array_len.rs:+4:9: +4:17 - _13 = Lt(_11, _12); // scope 0 at $DIR/lower_array_len.rs:+4:9: +4:17 - assert(move _13, "index out of bounds: the length is {} but the index is {}", move _12, _11) -> [success: bb5, unwind unreachable]; // scope 0 at $DIR/lower_array_len.rs:+4:9: +4:17 + StorageLive(_11); + _11 = const 0_usize; + _12 = Len((*_2)); + _13 = Lt(_11, _12); + assert(move _13, "index out of bounds: the length is {} but the index is {}", move _12, _11) -> [success: bb5, unwind unreachable]; } bb5: { - (*_2)[_11] = const 42_u8; // scope 0 at $DIR/lower_array_len.rs:+4:9: +4:22 - StorageDead(_11); // scope 0 at $DIR/lower_array_len.rs:+4:22: +4:23 - _0 = const 42_u8; // scope 0 at $DIR/lower_array_len.rs:+6:9: +6:11 - goto -> bb6; // scope 0 at $DIR/lower_array_len.rs:+1:5: +7:6 + (*_2)[_11] = const 42_u8; + StorageDead(_11); + _0 = const 42_u8; + goto -> bb6; } bb6: { - StorageDead(_3); // scope 0 at $DIR/lower_array_len.rs:+7:5: +7:6 - return; // scope 0 at $DIR/lower_array_len.rs:+8:2: +8:2 + StorageDead(_3); + return; } } diff --git a/tests/mir-opt/lower_array_len.array_bound_mut.NormalizeArrayLen.panic-unwind.diff b/tests/mir-opt/lower_array_len.array_bound_mut.NormalizeArrayLen.panic-unwind.diff index 17574b1b63568..3c6f373462464 100644 --- a/tests/mir-opt/lower_array_len.array_bound_mut.NormalizeArrayLen.panic-unwind.diff +++ b/tests/mir-opt/lower_array_len.array_bound_mut.NormalizeArrayLen.panic-unwind.diff @@ -2,76 +2,76 @@ + // MIR for `array_bound_mut` after NormalizeArrayLen fn array_bound_mut(_1: usize, _2: &mut [u8; N]) -> u8 { - debug index => _1; // in scope 0 at $DIR/lower_array_len.rs:+0:40: +0:45 - debug slice => _2; // in scope 0 at $DIR/lower_array_len.rs:+0:54: +0:59 - let mut _0: u8; // return place in scope 0 at $DIR/lower_array_len.rs:+0:78: +0:80 - let mut _3: bool; // in scope 0 at $DIR/lower_array_len.rs:+1:8: +1:27 - let mut _4: usize; // in scope 0 at $DIR/lower_array_len.rs:+1:8: +1:13 - let mut _5: usize; // in scope 0 at $DIR/lower_array_len.rs:+1:16: +1:27 - let mut _6: &[u8]; // in scope 0 at $DIR/lower_array_len.rs:+1:16: +1:27 - let mut _7: &[u8; N]; // in scope 0 at $DIR/lower_array_len.rs:+1:16: +1:27 - let _8: usize; // in scope 0 at $DIR/lower_array_len.rs:+2:15: +2:20 - let mut _9: usize; // in scope 0 at $DIR/lower_array_len.rs:+2:9: +2:21 - let mut _10: bool; // in scope 0 at $DIR/lower_array_len.rs:+2:9: +2:21 - let _11: usize; // in scope 0 at $DIR/lower_array_len.rs:+4:15: +4:16 - let mut _12: usize; // in scope 0 at $DIR/lower_array_len.rs:+4:9: +4:17 - let mut _13: bool; // in scope 0 at $DIR/lower_array_len.rs:+4:9: +4:17 + debug index => _1; + debug slice => _2; + let mut _0: u8; + let mut _3: bool; + let mut _4: usize; + let mut _5: usize; + let mut _6: &[u8]; + let mut _7: &[u8; N]; + let _8: usize; + let mut _9: usize; + let mut _10: bool; + let _11: usize; + let mut _12: usize; + let mut _13: bool; bb0: { - StorageLive(_3); // scope 0 at $DIR/lower_array_len.rs:+1:8: +1:27 - StorageLive(_4); // scope 0 at $DIR/lower_array_len.rs:+1:8: +1:13 - _4 = _1; // scope 0 at $DIR/lower_array_len.rs:+1:8: +1:13 - StorageLive(_5); // scope 0 at $DIR/lower_array_len.rs:+1:16: +1:27 - StorageLive(_6); // scope 0 at $DIR/lower_array_len.rs:+1:16: +1:27 - StorageLive(_7); // scope 0 at $DIR/lower_array_len.rs:+1:16: +1:27 - _7 = &(*_2); // scope 0 at $DIR/lower_array_len.rs:+1:16: +1:27 - _6 = move _7 as &[u8] (Pointer(Unsize)); // scope 0 at $DIR/lower_array_len.rs:+1:16: +1:27 - StorageDead(_7); // scope 0 at $DIR/lower_array_len.rs:+1:20: +1:21 -- _5 = Len((*_6)); // scope 0 at $DIR/lower_array_len.rs:+1:16: +1:27 -+ _5 = const N; // scope 0 at $DIR/lower_array_len.rs:+1:16: +1:27 - goto -> bb1; // scope 0 at $DIR/lower_array_len.rs:+1:16: +1:27 + StorageLive(_3); + StorageLive(_4); + _4 = _1; + StorageLive(_5); + StorageLive(_6); + StorageLive(_7); + _7 = &(*_2); + _6 = move _7 as &[u8] (Pointer(Unsize)); + StorageDead(_7); +- _5 = Len((*_6)); ++ _5 = const N; + goto -> bb1; } bb1: { - StorageDead(_6); // scope 0 at $DIR/lower_array_len.rs:+1:26: +1:27 - _3 = Lt(move _4, move _5); // scope 0 at $DIR/lower_array_len.rs:+1:8: +1:27 - StorageDead(_5); // scope 0 at $DIR/lower_array_len.rs:+1:26: +1:27 - StorageDead(_4); // scope 0 at $DIR/lower_array_len.rs:+1:26: +1:27 - switchInt(move _3) -> [0: bb4, otherwise: bb2]; // scope 0 at $DIR/lower_array_len.rs:+1:8: +1:27 + StorageDead(_6); + _3 = Lt(move _4, move _5); + StorageDead(_5); + StorageDead(_4); + switchInt(move _3) -> [0: bb4, otherwise: bb2]; } bb2: { - StorageLive(_8); // scope 0 at $DIR/lower_array_len.rs:+2:15: +2:20 - _8 = _1; // scope 0 at $DIR/lower_array_len.rs:+2:15: +2:20 - _9 = Len((*_2)); // scope 0 at $DIR/lower_array_len.rs:+2:9: +2:21 - _10 = Lt(_8, _9); // scope 0 at $DIR/lower_array_len.rs:+2:9: +2:21 - assert(move _10, "index out of bounds: the length is {} but the index is {}", move _9, _8) -> bb3; // scope 0 at $DIR/lower_array_len.rs:+2:9: +2:21 + StorageLive(_8); + _8 = _1; + _9 = Len((*_2)); + _10 = Lt(_8, _9); + assert(move _10, "index out of bounds: the length is {} but the index is {}", move _9, _8) -> bb3; } bb3: { - _0 = (*_2)[_8]; // scope 0 at $DIR/lower_array_len.rs:+2:9: +2:21 - StorageDead(_8); // scope 0 at $DIR/lower_array_len.rs:+3:5: +3:6 - goto -> bb6; // scope 0 at $DIR/lower_array_len.rs:+1:5: +7:6 + _0 = (*_2)[_8]; + StorageDead(_8); + goto -> bb6; } bb4: { - StorageLive(_11); // scope 0 at $DIR/lower_array_len.rs:+4:15: +4:16 - _11 = const 0_usize; // scope 0 at $DIR/lower_array_len.rs:+4:15: +4:16 - _12 = Len((*_2)); // scope 0 at $DIR/lower_array_len.rs:+4:9: +4:17 - _13 = Lt(_11, _12); // scope 0 at $DIR/lower_array_len.rs:+4:9: +4:17 - assert(move _13, "index out of bounds: the length is {} but the index is {}", move _12, _11) -> bb5; // scope 0 at $DIR/lower_array_len.rs:+4:9: +4:17 + StorageLive(_11); + _11 = const 0_usize; + _12 = Len((*_2)); + _13 = Lt(_11, _12); + assert(move _13, "index out of bounds: the length is {} but the index is {}", move _12, _11) -> bb5; } bb5: { - (*_2)[_11] = const 42_u8; // scope 0 at $DIR/lower_array_len.rs:+4:9: +4:22 - StorageDead(_11); // scope 0 at $DIR/lower_array_len.rs:+4:22: +4:23 - _0 = const 42_u8; // scope 0 at $DIR/lower_array_len.rs:+6:9: +6:11 - goto -> bb6; // scope 0 at $DIR/lower_array_len.rs:+1:5: +7:6 + (*_2)[_11] = const 42_u8; + StorageDead(_11); + _0 = const 42_u8; + goto -> bb6; } bb6: { - StorageDead(_3); // scope 0 at $DIR/lower_array_len.rs:+7:5: +7:6 - return; // scope 0 at $DIR/lower_array_len.rs:+8:2: +8:2 + StorageDead(_3); + return; } } diff --git a/tests/mir-opt/lower_array_len.array_len.NormalizeArrayLen.panic-abort.diff b/tests/mir-opt/lower_array_len.array_len.NormalizeArrayLen.panic-abort.diff index 66feff62f4246..a20d5288c402f 100644 --- a/tests/mir-opt/lower_array_len.array_len.NormalizeArrayLen.panic-abort.diff +++ b/tests/mir-opt/lower_array_len.array_len.NormalizeArrayLen.panic-abort.diff @@ -2,25 +2,25 @@ + // MIR for `array_len` after NormalizeArrayLen fn array_len(_1: &[u8; N]) -> usize { - debug arr => _1; // in scope 0 at $DIR/lower_array_len.rs:+0:34: +0:37 - let mut _0: usize; // return place in scope 0 at $DIR/lower_array_len.rs:+0:52: +0:57 - let mut _2: &[u8]; // in scope 0 at $DIR/lower_array_len.rs:+1:5: +1:14 - let mut _3: &[u8; N]; // in scope 0 at $DIR/lower_array_len.rs:+1:5: +1:14 + debug arr => _1; + let mut _0: usize; + let mut _2: &[u8]; + let mut _3: &[u8; N]; bb0: { - StorageLive(_2); // scope 0 at $DIR/lower_array_len.rs:+1:5: +1:14 - StorageLive(_3); // scope 0 at $DIR/lower_array_len.rs:+1:5: +1:14 - _3 = &(*_1); // scope 0 at $DIR/lower_array_len.rs:+1:5: +1:14 - _2 = move _3 as &[u8] (Pointer(Unsize)); // scope 0 at $DIR/lower_array_len.rs:+1:5: +1:14 - StorageDead(_3); // scope 0 at $DIR/lower_array_len.rs:+1:7: +1:8 -- _0 = Len((*_2)); // scope 0 at $DIR/lower_array_len.rs:+1:5: +1:14 -+ _0 = const N; // scope 0 at $DIR/lower_array_len.rs:+1:5: +1:14 - goto -> bb1; // scope 0 at $DIR/lower_array_len.rs:+1:5: +1:14 + StorageLive(_2); + StorageLive(_3); + _3 = &(*_1); + _2 = move _3 as &[u8] (Pointer(Unsize)); + StorageDead(_3); +- _0 = Len((*_2)); ++ _0 = const N; + goto -> bb1; } bb1: { - StorageDead(_2); // scope 0 at $DIR/lower_array_len.rs:+1:13: +1:14 - return; // scope 0 at $DIR/lower_array_len.rs:+2:2: +2:2 + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/lower_array_len.array_len.NormalizeArrayLen.panic-unwind.diff b/tests/mir-opt/lower_array_len.array_len.NormalizeArrayLen.panic-unwind.diff index 66feff62f4246..a20d5288c402f 100644 --- a/tests/mir-opt/lower_array_len.array_len.NormalizeArrayLen.panic-unwind.diff +++ b/tests/mir-opt/lower_array_len.array_len.NormalizeArrayLen.panic-unwind.diff @@ -2,25 +2,25 @@ + // MIR for `array_len` after NormalizeArrayLen fn array_len(_1: &[u8; N]) -> usize { - debug arr => _1; // in scope 0 at $DIR/lower_array_len.rs:+0:34: +0:37 - let mut _0: usize; // return place in scope 0 at $DIR/lower_array_len.rs:+0:52: +0:57 - let mut _2: &[u8]; // in scope 0 at $DIR/lower_array_len.rs:+1:5: +1:14 - let mut _3: &[u8; N]; // in scope 0 at $DIR/lower_array_len.rs:+1:5: +1:14 + debug arr => _1; + let mut _0: usize; + let mut _2: &[u8]; + let mut _3: &[u8; N]; bb0: { - StorageLive(_2); // scope 0 at $DIR/lower_array_len.rs:+1:5: +1:14 - StorageLive(_3); // scope 0 at $DIR/lower_array_len.rs:+1:5: +1:14 - _3 = &(*_1); // scope 0 at $DIR/lower_array_len.rs:+1:5: +1:14 - _2 = move _3 as &[u8] (Pointer(Unsize)); // scope 0 at $DIR/lower_array_len.rs:+1:5: +1:14 - StorageDead(_3); // scope 0 at $DIR/lower_array_len.rs:+1:7: +1:8 -- _0 = Len((*_2)); // scope 0 at $DIR/lower_array_len.rs:+1:5: +1:14 -+ _0 = const N; // scope 0 at $DIR/lower_array_len.rs:+1:5: +1:14 - goto -> bb1; // scope 0 at $DIR/lower_array_len.rs:+1:5: +1:14 + StorageLive(_2); + StorageLive(_3); + _3 = &(*_1); + _2 = move _3 as &[u8] (Pointer(Unsize)); + StorageDead(_3); +- _0 = Len((*_2)); ++ _0 = const N; + goto -> bb1; } bb1: { - StorageDead(_2); // scope 0 at $DIR/lower_array_len.rs:+1:13: +1:14 - return; // scope 0 at $DIR/lower_array_len.rs:+2:2: +2:2 + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/lower_array_len.array_len_by_value.NormalizeArrayLen.panic-abort.diff b/tests/mir-opt/lower_array_len.array_len_by_value.NormalizeArrayLen.panic-abort.diff index c0a277edc4670..c3842bf4edcde 100644 --- a/tests/mir-opt/lower_array_len.array_len_by_value.NormalizeArrayLen.panic-abort.diff +++ b/tests/mir-opt/lower_array_len.array_len_by_value.NormalizeArrayLen.panic-abort.diff @@ -2,25 +2,25 @@ + // MIR for `array_len_by_value` after NormalizeArrayLen fn array_len_by_value(_1: [u8; N]) -> usize { - debug arr => _1; // in scope 0 at $DIR/lower_array_len.rs:+0:43: +0:46 - let mut _0: usize; // return place in scope 0 at $DIR/lower_array_len.rs:+0:60: +0:65 - let mut _2: &[u8]; // in scope 0 at $DIR/lower_array_len.rs:+1:5: +1:14 - let mut _3: &[u8; N]; // in scope 0 at $DIR/lower_array_len.rs:+1:5: +1:14 + debug arr => _1; + let mut _0: usize; + let mut _2: &[u8]; + let mut _3: &[u8; N]; bb0: { - StorageLive(_2); // scope 0 at $DIR/lower_array_len.rs:+1:5: +1:14 - StorageLive(_3); // scope 0 at $DIR/lower_array_len.rs:+1:5: +1:14 - _3 = &_1; // scope 0 at $DIR/lower_array_len.rs:+1:5: +1:14 - _2 = move _3 as &[u8] (Pointer(Unsize)); // scope 0 at $DIR/lower_array_len.rs:+1:5: +1:14 - StorageDead(_3); // scope 0 at $DIR/lower_array_len.rs:+1:7: +1:8 -- _0 = Len((*_2)); // scope 0 at $DIR/lower_array_len.rs:+1:5: +1:14 -+ _0 = const N; // scope 0 at $DIR/lower_array_len.rs:+1:5: +1:14 - goto -> bb1; // scope 0 at $DIR/lower_array_len.rs:+1:5: +1:14 + StorageLive(_2); + StorageLive(_3); + _3 = &_1; + _2 = move _3 as &[u8] (Pointer(Unsize)); + StorageDead(_3); +- _0 = Len((*_2)); ++ _0 = const N; + goto -> bb1; } bb1: { - StorageDead(_2); // scope 0 at $DIR/lower_array_len.rs:+1:13: +1:14 - return; // scope 0 at $DIR/lower_array_len.rs:+2:2: +2:2 + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/lower_array_len.array_len_by_value.NormalizeArrayLen.panic-unwind.diff b/tests/mir-opt/lower_array_len.array_len_by_value.NormalizeArrayLen.panic-unwind.diff index c0a277edc4670..c3842bf4edcde 100644 --- a/tests/mir-opt/lower_array_len.array_len_by_value.NormalizeArrayLen.panic-unwind.diff +++ b/tests/mir-opt/lower_array_len.array_len_by_value.NormalizeArrayLen.panic-unwind.diff @@ -2,25 +2,25 @@ + // MIR for `array_len_by_value` after NormalizeArrayLen fn array_len_by_value(_1: [u8; N]) -> usize { - debug arr => _1; // in scope 0 at $DIR/lower_array_len.rs:+0:43: +0:46 - let mut _0: usize; // return place in scope 0 at $DIR/lower_array_len.rs:+0:60: +0:65 - let mut _2: &[u8]; // in scope 0 at $DIR/lower_array_len.rs:+1:5: +1:14 - let mut _3: &[u8; N]; // in scope 0 at $DIR/lower_array_len.rs:+1:5: +1:14 + debug arr => _1; + let mut _0: usize; + let mut _2: &[u8]; + let mut _3: &[u8; N]; bb0: { - StorageLive(_2); // scope 0 at $DIR/lower_array_len.rs:+1:5: +1:14 - StorageLive(_3); // scope 0 at $DIR/lower_array_len.rs:+1:5: +1:14 - _3 = &_1; // scope 0 at $DIR/lower_array_len.rs:+1:5: +1:14 - _2 = move _3 as &[u8] (Pointer(Unsize)); // scope 0 at $DIR/lower_array_len.rs:+1:5: +1:14 - StorageDead(_3); // scope 0 at $DIR/lower_array_len.rs:+1:7: +1:8 -- _0 = Len((*_2)); // scope 0 at $DIR/lower_array_len.rs:+1:5: +1:14 -+ _0 = const N; // scope 0 at $DIR/lower_array_len.rs:+1:5: +1:14 - goto -> bb1; // scope 0 at $DIR/lower_array_len.rs:+1:5: +1:14 + StorageLive(_2); + StorageLive(_3); + _3 = &_1; + _2 = move _3 as &[u8] (Pointer(Unsize)); + StorageDead(_3); +- _0 = Len((*_2)); ++ _0 = const N; + goto -> bb1; } bb1: { - StorageDead(_2); // scope 0 at $DIR/lower_array_len.rs:+1:13: +1:14 - return; // scope 0 at $DIR/lower_array_len.rs:+2:2: +2:2 + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/lower_array_len.array_len_raw.NormalizeArrayLen.panic-abort.diff b/tests/mir-opt/lower_array_len.array_len_raw.NormalizeArrayLen.panic-abort.diff index 8b35fd57fa016..c407482d17b61 100644 --- a/tests/mir-opt/lower_array_len.array_len_raw.NormalizeArrayLen.panic-abort.diff +++ b/tests/mir-opt/lower_array_len.array_len_raw.NormalizeArrayLen.panic-abort.diff @@ -2,49 +2,49 @@ + // MIR for `array_len_raw` after NormalizeArrayLen fn array_len_raw(_1: [u8; N]) -> usize { - debug arr => _1; // in scope 0 at $DIR/lower_array_len.rs:+0:38: +0:41 - let mut _0: usize; // return place in scope 0 at $DIR/lower_array_len.rs:+0:55: +0:60 - let _2: &[u8]; // in scope 0 at $DIR/lower_array_len.rs:+1:9: +1:12 - let mut _3: &[u8; N]; // in scope 0 at $DIR/lower_array_len.rs:+1:21: +1:25 - let _4: &[u8; N]; // in scope 0 at $DIR/lower_array_len.rs:+1:21: +1:25 - let mut _6: &[u8]; // in scope 0 at $DIR/lower_array_len.rs:+3:5: +3:27 - let _7: &[u8]; // in scope 0 at $DIR/lower_array_len.rs:+3:14: +3:19 + debug arr => _1; + let mut _0: usize; + let _2: &[u8]; + let mut _3: &[u8; N]; + let _4: &[u8; N]; + let mut _6: &[u8]; + let _7: &[u8]; scope 1 { - debug arr => _2; // in scope 1 at $DIR/lower_array_len.rs:+1:9: +1:12 - let _5: *const [u8]; // in scope 1 at $DIR/lower_array_len.rs:+2:9: +2:12 + debug arr => _2; + let _5: *const [u8]; scope 2 { - debug arr => _5; // in scope 2 at $DIR/lower_array_len.rs:+2:9: +2:12 + debug arr => _5; scope 3 { } } } bb0: { - StorageLive(_2); // scope 0 at $DIR/lower_array_len.rs:+1:9: +1:12 - StorageLive(_3); // scope 0 at $DIR/lower_array_len.rs:+1:21: +1:25 - StorageLive(_4); // scope 0 at $DIR/lower_array_len.rs:+1:21: +1:25 - _4 = &_1; // scope 0 at $DIR/lower_array_len.rs:+1:21: +1:25 - _3 = &(*_4); // scope 0 at $DIR/lower_array_len.rs:+1:21: +1:25 - _2 = move _3 as &[u8] (Pointer(Unsize)); // scope 0 at $DIR/lower_array_len.rs:+1:21: +1:25 - StorageDead(_3); // scope 0 at $DIR/lower_array_len.rs:+1:24: +1:25 - StorageDead(_4); // scope 0 at $DIR/lower_array_len.rs:+1:25: +1:26 - StorageLive(_5); // scope 1 at $DIR/lower_array_len.rs:+2:9: +2:12 - _5 = &raw const (*_2); // scope 1 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL - StorageLive(_6); // scope 2 at $DIR/lower_array_len.rs:+3:5: +3:27 - StorageLive(_7); // scope 2 at $DIR/lower_array_len.rs:+3:14: +3:19 - _7 = &(*_5); // scope 3 at $DIR/lower_array_len.rs:+3:14: +3:19 - _6 = &(*_7); // scope 2 at $DIR/lower_array_len.rs:+3:5: +3:27 -- _0 = Len((*_6)); // scope 2 at $DIR/lower_array_len.rs:+3:5: +3:27 -+ _0 = const N; // scope 2 at $DIR/lower_array_len.rs:+3:5: +3:27 - goto -> bb1; // scope 2 at $DIR/lower_array_len.rs:+3:5: +3:27 + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + _4 = &_1; + _3 = &(*_4); + _2 = move _3 as &[u8] (Pointer(Unsize)); + StorageDead(_3); + StorageDead(_4); + StorageLive(_5); + _5 = &raw const (*_2); + StorageLive(_6); + StorageLive(_7); + _7 = &(*_5); + _6 = &(*_7); +- _0 = Len((*_6)); ++ _0 = const N; + goto -> bb1; } bb1: { - StorageDead(_6); // scope 2 at $DIR/lower_array_len.rs:+3:26: +3:27 - StorageDead(_5); // scope 1 at $DIR/lower_array_len.rs:+4:1: +4:2 - StorageDead(_2); // scope 0 at $DIR/lower_array_len.rs:+4:1: +4:2 - StorageDead(_7); // scope 0 at $DIR/lower_array_len.rs:+4:1: +4:2 - return; // scope 0 at $DIR/lower_array_len.rs:+4:2: +4:2 + StorageDead(_6); + StorageDead(_5); + StorageDead(_2); + StorageDead(_7); + return; } } diff --git a/tests/mir-opt/lower_array_len.array_len_raw.NormalizeArrayLen.panic-unwind.diff b/tests/mir-opt/lower_array_len.array_len_raw.NormalizeArrayLen.panic-unwind.diff index 8b35fd57fa016..c407482d17b61 100644 --- a/tests/mir-opt/lower_array_len.array_len_raw.NormalizeArrayLen.panic-unwind.diff +++ b/tests/mir-opt/lower_array_len.array_len_raw.NormalizeArrayLen.panic-unwind.diff @@ -2,49 +2,49 @@ + // MIR for `array_len_raw` after NormalizeArrayLen fn array_len_raw(_1: [u8; N]) -> usize { - debug arr => _1; // in scope 0 at $DIR/lower_array_len.rs:+0:38: +0:41 - let mut _0: usize; // return place in scope 0 at $DIR/lower_array_len.rs:+0:55: +0:60 - let _2: &[u8]; // in scope 0 at $DIR/lower_array_len.rs:+1:9: +1:12 - let mut _3: &[u8; N]; // in scope 0 at $DIR/lower_array_len.rs:+1:21: +1:25 - let _4: &[u8; N]; // in scope 0 at $DIR/lower_array_len.rs:+1:21: +1:25 - let mut _6: &[u8]; // in scope 0 at $DIR/lower_array_len.rs:+3:5: +3:27 - let _7: &[u8]; // in scope 0 at $DIR/lower_array_len.rs:+3:14: +3:19 + debug arr => _1; + let mut _0: usize; + let _2: &[u8]; + let mut _3: &[u8; N]; + let _4: &[u8; N]; + let mut _6: &[u8]; + let _7: &[u8]; scope 1 { - debug arr => _2; // in scope 1 at $DIR/lower_array_len.rs:+1:9: +1:12 - let _5: *const [u8]; // in scope 1 at $DIR/lower_array_len.rs:+2:9: +2:12 + debug arr => _2; + let _5: *const [u8]; scope 2 { - debug arr => _5; // in scope 2 at $DIR/lower_array_len.rs:+2:9: +2:12 + debug arr => _5; scope 3 { } } } bb0: { - StorageLive(_2); // scope 0 at $DIR/lower_array_len.rs:+1:9: +1:12 - StorageLive(_3); // scope 0 at $DIR/lower_array_len.rs:+1:21: +1:25 - StorageLive(_4); // scope 0 at $DIR/lower_array_len.rs:+1:21: +1:25 - _4 = &_1; // scope 0 at $DIR/lower_array_len.rs:+1:21: +1:25 - _3 = &(*_4); // scope 0 at $DIR/lower_array_len.rs:+1:21: +1:25 - _2 = move _3 as &[u8] (Pointer(Unsize)); // scope 0 at $DIR/lower_array_len.rs:+1:21: +1:25 - StorageDead(_3); // scope 0 at $DIR/lower_array_len.rs:+1:24: +1:25 - StorageDead(_4); // scope 0 at $DIR/lower_array_len.rs:+1:25: +1:26 - StorageLive(_5); // scope 1 at $DIR/lower_array_len.rs:+2:9: +2:12 - _5 = &raw const (*_2); // scope 1 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL - StorageLive(_6); // scope 2 at $DIR/lower_array_len.rs:+3:5: +3:27 - StorageLive(_7); // scope 2 at $DIR/lower_array_len.rs:+3:14: +3:19 - _7 = &(*_5); // scope 3 at $DIR/lower_array_len.rs:+3:14: +3:19 - _6 = &(*_7); // scope 2 at $DIR/lower_array_len.rs:+3:5: +3:27 -- _0 = Len((*_6)); // scope 2 at $DIR/lower_array_len.rs:+3:5: +3:27 -+ _0 = const N; // scope 2 at $DIR/lower_array_len.rs:+3:5: +3:27 - goto -> bb1; // scope 2 at $DIR/lower_array_len.rs:+3:5: +3:27 + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + _4 = &_1; + _3 = &(*_4); + _2 = move _3 as &[u8] (Pointer(Unsize)); + StorageDead(_3); + StorageDead(_4); + StorageLive(_5); + _5 = &raw const (*_2); + StorageLive(_6); + StorageLive(_7); + _7 = &(*_5); + _6 = &(*_7); +- _0 = Len((*_6)); ++ _0 = const N; + goto -> bb1; } bb1: { - StorageDead(_6); // scope 2 at $DIR/lower_array_len.rs:+3:26: +3:27 - StorageDead(_5); // scope 1 at $DIR/lower_array_len.rs:+4:1: +4:2 - StorageDead(_2); // scope 0 at $DIR/lower_array_len.rs:+4:1: +4:2 - StorageDead(_7); // scope 0 at $DIR/lower_array_len.rs:+4:1: +4:2 - return; // scope 0 at $DIR/lower_array_len.rs:+4:2: +4:2 + StorageDead(_6); + StorageDead(_5); + StorageDead(_2); + StorageDead(_7); + return; } } diff --git a/tests/mir-opt/lower_array_len.array_len_reborrow.NormalizeArrayLen.panic-abort.diff b/tests/mir-opt/lower_array_len.array_len_reborrow.NormalizeArrayLen.panic-abort.diff index 8bdd2ede6bc41..f50f7baa6e340 100644 --- a/tests/mir-opt/lower_array_len.array_len_reborrow.NormalizeArrayLen.panic-abort.diff +++ b/tests/mir-opt/lower_array_len.array_len_reborrow.NormalizeArrayLen.panic-abort.diff @@ -2,43 +2,43 @@ + // MIR for `array_len_reborrow` after NormalizeArrayLen fn array_len_reborrow(_1: [u8; N]) -> usize { - debug arr => _1; // in scope 0 at $DIR/lower_array_len.rs:+0:43: +0:50 - let mut _0: usize; // return place in scope 0 at $DIR/lower_array_len.rs:+0:64: +0:69 - let _2: &mut [u8]; // in scope 0 at $DIR/lower_array_len.rs:+1:9: +1:12 - let mut _3: &mut [u8; N]; // in scope 0 at $DIR/lower_array_len.rs:+1:25: +1:33 - let mut _4: &mut [u8; N]; // in scope 0 at $DIR/lower_array_len.rs:+1:25: +1:33 - let mut _6: &[u8]; // in scope 0 at $DIR/lower_array_len.rs:+3:5: +3:14 + debug arr => _1; + let mut _0: usize; + let _2: &mut [u8]; + let mut _3: &mut [u8; N]; + let mut _4: &mut [u8; N]; + let mut _6: &[u8]; scope 1 { - debug arr => _2; // in scope 1 at $DIR/lower_array_len.rs:+1:9: +1:12 - let _5: &[u8]; // in scope 1 at $DIR/lower_array_len.rs:+2:9: +2:12 + debug arr => _2; + let _5: &[u8]; scope 2 { - debug arr => _5; // in scope 2 at $DIR/lower_array_len.rs:+2:9: +2:12 + debug arr => _5; } } bb0: { - StorageLive(_2); // scope 0 at $DIR/lower_array_len.rs:+1:9: +1:12 - StorageLive(_3); // scope 0 at $DIR/lower_array_len.rs:+1:25: +1:33 - StorageLive(_4); // scope 0 at $DIR/lower_array_len.rs:+1:25: +1:33 - _4 = &mut _1; // scope 0 at $DIR/lower_array_len.rs:+1:25: +1:33 - _3 = &mut (*_4); // scope 0 at $DIR/lower_array_len.rs:+1:25: +1:33 - _2 = move _3 as &mut [u8] (Pointer(Unsize)); // scope 0 at $DIR/lower_array_len.rs:+1:25: +1:33 - StorageDead(_3); // scope 0 at $DIR/lower_array_len.rs:+1:32: +1:33 - StorageDead(_4); // scope 0 at $DIR/lower_array_len.rs:+1:33: +1:34 - StorageLive(_5); // scope 1 at $DIR/lower_array_len.rs:+2:9: +2:12 - _5 = &(*_2); // scope 1 at $DIR/lower_array_len.rs:+2:15: +2:20 - StorageLive(_6); // scope 2 at $DIR/lower_array_len.rs:+3:5: +3:14 - _6 = &(*_5); // scope 2 at $DIR/lower_array_len.rs:+3:5: +3:14 -- _0 = Len((*_6)); // scope 2 at $DIR/lower_array_len.rs:+3:5: +3:14 -+ _0 = const N; // scope 2 at $DIR/lower_array_len.rs:+3:5: +3:14 - goto -> bb1; // scope 2 at $DIR/lower_array_len.rs:+3:5: +3:14 + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + _4 = &mut _1; + _3 = &mut (*_4); + _2 = move _3 as &mut [u8] (Pointer(Unsize)); + StorageDead(_3); + StorageDead(_4); + StorageLive(_5); + _5 = &(*_2); + StorageLive(_6); + _6 = &(*_5); +- _0 = Len((*_6)); ++ _0 = const N; + goto -> bb1; } bb1: { - StorageDead(_6); // scope 2 at $DIR/lower_array_len.rs:+3:13: +3:14 - StorageDead(_5); // scope 1 at $DIR/lower_array_len.rs:+4:1: +4:2 - StorageDead(_2); // scope 0 at $DIR/lower_array_len.rs:+4:1: +4:2 - return; // scope 0 at $DIR/lower_array_len.rs:+4:2: +4:2 + StorageDead(_6); + StorageDead(_5); + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/lower_array_len.array_len_reborrow.NormalizeArrayLen.panic-unwind.diff b/tests/mir-opt/lower_array_len.array_len_reborrow.NormalizeArrayLen.panic-unwind.diff index 8bdd2ede6bc41..f50f7baa6e340 100644 --- a/tests/mir-opt/lower_array_len.array_len_reborrow.NormalizeArrayLen.panic-unwind.diff +++ b/tests/mir-opt/lower_array_len.array_len_reborrow.NormalizeArrayLen.panic-unwind.diff @@ -2,43 +2,43 @@ + // MIR for `array_len_reborrow` after NormalizeArrayLen fn array_len_reborrow(_1: [u8; N]) -> usize { - debug arr => _1; // in scope 0 at $DIR/lower_array_len.rs:+0:43: +0:50 - let mut _0: usize; // return place in scope 0 at $DIR/lower_array_len.rs:+0:64: +0:69 - let _2: &mut [u8]; // in scope 0 at $DIR/lower_array_len.rs:+1:9: +1:12 - let mut _3: &mut [u8; N]; // in scope 0 at $DIR/lower_array_len.rs:+1:25: +1:33 - let mut _4: &mut [u8; N]; // in scope 0 at $DIR/lower_array_len.rs:+1:25: +1:33 - let mut _6: &[u8]; // in scope 0 at $DIR/lower_array_len.rs:+3:5: +3:14 + debug arr => _1; + let mut _0: usize; + let _2: &mut [u8]; + let mut _3: &mut [u8; N]; + let mut _4: &mut [u8; N]; + let mut _6: &[u8]; scope 1 { - debug arr => _2; // in scope 1 at $DIR/lower_array_len.rs:+1:9: +1:12 - let _5: &[u8]; // in scope 1 at $DIR/lower_array_len.rs:+2:9: +2:12 + debug arr => _2; + let _5: &[u8]; scope 2 { - debug arr => _5; // in scope 2 at $DIR/lower_array_len.rs:+2:9: +2:12 + debug arr => _5; } } bb0: { - StorageLive(_2); // scope 0 at $DIR/lower_array_len.rs:+1:9: +1:12 - StorageLive(_3); // scope 0 at $DIR/lower_array_len.rs:+1:25: +1:33 - StorageLive(_4); // scope 0 at $DIR/lower_array_len.rs:+1:25: +1:33 - _4 = &mut _1; // scope 0 at $DIR/lower_array_len.rs:+1:25: +1:33 - _3 = &mut (*_4); // scope 0 at $DIR/lower_array_len.rs:+1:25: +1:33 - _2 = move _3 as &mut [u8] (Pointer(Unsize)); // scope 0 at $DIR/lower_array_len.rs:+1:25: +1:33 - StorageDead(_3); // scope 0 at $DIR/lower_array_len.rs:+1:32: +1:33 - StorageDead(_4); // scope 0 at $DIR/lower_array_len.rs:+1:33: +1:34 - StorageLive(_5); // scope 1 at $DIR/lower_array_len.rs:+2:9: +2:12 - _5 = &(*_2); // scope 1 at $DIR/lower_array_len.rs:+2:15: +2:20 - StorageLive(_6); // scope 2 at $DIR/lower_array_len.rs:+3:5: +3:14 - _6 = &(*_5); // scope 2 at $DIR/lower_array_len.rs:+3:5: +3:14 -- _0 = Len((*_6)); // scope 2 at $DIR/lower_array_len.rs:+3:5: +3:14 -+ _0 = const N; // scope 2 at $DIR/lower_array_len.rs:+3:5: +3:14 - goto -> bb1; // scope 2 at $DIR/lower_array_len.rs:+3:5: +3:14 + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + _4 = &mut _1; + _3 = &mut (*_4); + _2 = move _3 as &mut [u8] (Pointer(Unsize)); + StorageDead(_3); + StorageDead(_4); + StorageLive(_5); + _5 = &(*_2); + StorageLive(_6); + _6 = &(*_5); +- _0 = Len((*_6)); ++ _0 = const N; + goto -> bb1; } bb1: { - StorageDead(_6); // scope 2 at $DIR/lower_array_len.rs:+3:13: +3:14 - StorageDead(_5); // scope 1 at $DIR/lower_array_len.rs:+4:1: +4:2 - StorageDead(_2); // scope 0 at $DIR/lower_array_len.rs:+4:1: +4:2 - return; // scope 0 at $DIR/lower_array_len.rs:+4:2: +4:2 + StorageDead(_6); + StorageDead(_5); + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/lower_intrinsics.align_of.LowerIntrinsics.panic-abort.diff b/tests/mir-opt/lower_intrinsics.align_of.LowerIntrinsics.panic-abort.diff index 3530f4a807f2c..8ebd07b9c9c1e 100644 --- a/tests/mir-opt/lower_intrinsics.align_of.LowerIntrinsics.panic-abort.diff +++ b/tests/mir-opt/lower_intrinsics.align_of.LowerIntrinsics.panic-abort.diff @@ -2,19 +2,16 @@ + // MIR for `align_of` after LowerIntrinsics fn align_of() -> usize { - let mut _0: usize; // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:25: +0:30 + let mut _0: usize; bb0: { -- _0 = std::intrinsics::min_align_of::() -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/lower_intrinsics.rs:+1:5: +1:42 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:27:5: 27:40 -- // + literal: Const { ty: extern "rust-intrinsic" fn() -> usize {std::intrinsics::min_align_of::}, val: Value() } -+ _0 = AlignOf(T); // scope 0 at $DIR/lower_intrinsics.rs:+1:5: +1:42 -+ goto -> bb1; // scope 0 at $DIR/lower_intrinsics.rs:+1:5: +1:42 +- _0 = std::intrinsics::min_align_of::() -> [return: bb1, unwind unreachable]; ++ _0 = AlignOf(T); ++ goto -> bb1; } bb1: { - return; // scope 0 at $DIR/lower_intrinsics.rs:+2:2: +2:2 + return; } } diff --git a/tests/mir-opt/lower_intrinsics.align_of.LowerIntrinsics.panic-unwind.diff b/tests/mir-opt/lower_intrinsics.align_of.LowerIntrinsics.panic-unwind.diff index 3530f4a807f2c..8ebd07b9c9c1e 100644 --- a/tests/mir-opt/lower_intrinsics.align_of.LowerIntrinsics.panic-unwind.diff +++ b/tests/mir-opt/lower_intrinsics.align_of.LowerIntrinsics.panic-unwind.diff @@ -2,19 +2,16 @@ + // MIR for `align_of` after LowerIntrinsics fn align_of() -> usize { - let mut _0: usize; // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:25: +0:30 + let mut _0: usize; bb0: { -- _0 = std::intrinsics::min_align_of::() -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/lower_intrinsics.rs:+1:5: +1:42 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:27:5: 27:40 -- // + literal: Const { ty: extern "rust-intrinsic" fn() -> usize {std::intrinsics::min_align_of::}, val: Value() } -+ _0 = AlignOf(T); // scope 0 at $DIR/lower_intrinsics.rs:+1:5: +1:42 -+ goto -> bb1; // scope 0 at $DIR/lower_intrinsics.rs:+1:5: +1:42 +- _0 = std::intrinsics::min_align_of::() -> [return: bb1, unwind unreachable]; ++ _0 = AlignOf(T); ++ goto -> bb1; } bb1: { - return; // scope 0 at $DIR/lower_intrinsics.rs:+2:2: +2:2 + return; } } diff --git a/tests/mir-opt/lower_intrinsics.assume.LowerIntrinsics.panic-abort.diff b/tests/mir-opt/lower_intrinsics.assume.LowerIntrinsics.panic-abort.diff index 158ce62e209c2..79635f23e8ebf 100644 --- a/tests/mir-opt/lower_intrinsics.assume.LowerIntrinsics.panic-abort.diff +++ b/tests/mir-opt/lower_intrinsics.assume.LowerIntrinsics.panic-abort.diff @@ -2,25 +2,22 @@ + // MIR for `assume` after LowerIntrinsics fn assume() -> () { - let mut _0: (); // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:17: +0:17 - let _1: (); // in scope 0 at $DIR/lower_intrinsics.rs:+2:9: +2:38 + let mut _0: (); + let _1: (); scope 1 { } bb0: { - StorageLive(_1); // scope 1 at $DIR/lower_intrinsics.rs:+2:9: +2:38 -- _1 = std::intrinsics::assume(const true) -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/lower_intrinsics.rs:+2:9: +2:38 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:112:9: 112:32 -- // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(bool) {std::intrinsics::assume}, val: Value() } -+ assume(const true); // scope 1 at $DIR/lower_intrinsics.rs:+2:9: +2:38 -+ goto -> bb1; // scope 1 at $DIR/lower_intrinsics.rs:+2:9: +2:38 + StorageLive(_1); +- _1 = std::intrinsics::assume(const true) -> [return: bb1, unwind unreachable]; ++ assume(const true); ++ goto -> bb1; } bb1: { - StorageDead(_1); // scope 1 at $DIR/lower_intrinsics.rs:+2:38: +2:39 - _0 = const (); // scope 1 at $DIR/lower_intrinsics.rs:+1:5: +3:6 - return; // scope 0 at $DIR/lower_intrinsics.rs:+4:2: +4:2 + StorageDead(_1); + _0 = const (); + return; } } diff --git a/tests/mir-opt/lower_intrinsics.assume.LowerIntrinsics.panic-unwind.diff b/tests/mir-opt/lower_intrinsics.assume.LowerIntrinsics.panic-unwind.diff index 158ce62e209c2..79635f23e8ebf 100644 --- a/tests/mir-opt/lower_intrinsics.assume.LowerIntrinsics.panic-unwind.diff +++ b/tests/mir-opt/lower_intrinsics.assume.LowerIntrinsics.panic-unwind.diff @@ -2,25 +2,22 @@ + // MIR for `assume` after LowerIntrinsics fn assume() -> () { - let mut _0: (); // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:17: +0:17 - let _1: (); // in scope 0 at $DIR/lower_intrinsics.rs:+2:9: +2:38 + let mut _0: (); + let _1: (); scope 1 { } bb0: { - StorageLive(_1); // scope 1 at $DIR/lower_intrinsics.rs:+2:9: +2:38 -- _1 = std::intrinsics::assume(const true) -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/lower_intrinsics.rs:+2:9: +2:38 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:112:9: 112:32 -- // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(bool) {std::intrinsics::assume}, val: Value() } -+ assume(const true); // scope 1 at $DIR/lower_intrinsics.rs:+2:9: +2:38 -+ goto -> bb1; // scope 1 at $DIR/lower_intrinsics.rs:+2:9: +2:38 + StorageLive(_1); +- _1 = std::intrinsics::assume(const true) -> [return: bb1, unwind unreachable]; ++ assume(const true); ++ goto -> bb1; } bb1: { - StorageDead(_1); // scope 1 at $DIR/lower_intrinsics.rs:+2:38: +2:39 - _0 = const (); // scope 1 at $DIR/lower_intrinsics.rs:+1:5: +3:6 - return; // scope 0 at $DIR/lower_intrinsics.rs:+4:2: +4:2 + StorageDead(_1); + _0 = const (); + return; } } diff --git a/tests/mir-opt/lower_intrinsics.discriminant.LowerIntrinsics.panic-abort.diff b/tests/mir-opt/lower_intrinsics.discriminant.LowerIntrinsics.panic-abort.diff index 63f5b80e2764d..4b5275f0f6fe1 100644 --- a/tests/mir-opt/lower_intrinsics.discriminant.LowerIntrinsics.panic-abort.diff +++ b/tests/mir-opt/lower_intrinsics.discriminant.LowerIntrinsics.panic-abort.diff @@ -2,114 +2,93 @@ + // MIR for `discriminant` after LowerIntrinsics fn discriminant(_1: T) -> () { - debug t => _1; // in scope 0 at $DIR/lower_intrinsics.rs:+0:24: +0:25 - let mut _0: (); // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:30: +0:30 - let _2: ::Discriminant; // in scope 0 at $DIR/lower_intrinsics.rs:+1:5: +1:45 - let mut _3: &T; // in scope 0 at $DIR/lower_intrinsics.rs:+1:42: +1:44 - let _4: &T; // in scope 0 at $DIR/lower_intrinsics.rs:+1:42: +1:44 - let _5: u8; // in scope 0 at $DIR/lower_intrinsics.rs:+2:5: +2:45 - let mut _6: &i32; // in scope 0 at $DIR/lower_intrinsics.rs:+2:42: +2:44 - let _7: &i32; // in scope 0 at $DIR/lower_intrinsics.rs:+2:42: +2:44 - let _8: i32; // in scope 0 at $DIR/lower_intrinsics.rs:+2:43: +2:44 - let _9: u8; // in scope 0 at $DIR/lower_intrinsics.rs:+3:5: +3:46 - let mut _10: &(); // in scope 0 at $DIR/lower_intrinsics.rs:+3:42: +3:45 - let _11: &(); // in scope 0 at $DIR/lower_intrinsics.rs:+3:42: +3:45 - let _12: (); // in scope 0 at $DIR/lower_intrinsics.rs:+3:43: +3:45 - let _13: isize; // in scope 0 at $DIR/lower_intrinsics.rs:+4:5: +4:48 - let mut _14: &E; // in scope 0 at $DIR/lower_intrinsics.rs:+4:42: +4:47 - let _15: &E; // in scope 0 at $DIR/lower_intrinsics.rs:+4:42: +4:47 - let _16: E; // in scope 0 at $DIR/lower_intrinsics.rs:+4:43: +4:47 - let mut _17: &E; // in scope 0 at $DIR/lower_intrinsics.rs:+4:42: +4:47 - let mut _18: &(); // in scope 0 at $DIR/lower_intrinsics.rs:+3:42: +3:45 - let mut _19: &i32; // in scope 0 at $DIR/lower_intrinsics.rs:+2:42: +2:44 + debug t => _1; + let mut _0: (); + let _2: ::Discriminant; + let mut _3: &T; + let _4: &T; + let _5: u8; + let mut _6: &i32; + let _7: &i32; + let _8: i32; + let _9: u8; + let mut _10: &(); + let _11: &(); + let _12: (); + let _13: isize; + let mut _14: &E; + let _15: &E; + let _16: E; + let mut _17: &E; + let mut _18: &(); + let mut _19: &i32; bb0: { - StorageLive(_2); // scope 0 at $DIR/lower_intrinsics.rs:+1:5: +1:45 - StorageLive(_3); // scope 0 at $DIR/lower_intrinsics.rs:+1:42: +1:44 - StorageLive(_4); // scope 0 at $DIR/lower_intrinsics.rs:+1:42: +1:44 - _4 = &_1; // scope 0 at $DIR/lower_intrinsics.rs:+1:42: +1:44 - _3 = &(*_4); // scope 0 at $DIR/lower_intrinsics.rs:+1:42: +1:44 -- _2 = discriminant_value::(move _3) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/lower_intrinsics.rs:+1:5: +1:45 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:88:5: 88:41 -- // + literal: Const { ty: for<'a> extern "rust-intrinsic" fn(&'a T) -> ::Discriminant {discriminant_value::}, val: Value() } -+ _2 = discriminant((*_3)); // scope 0 at $DIR/lower_intrinsics.rs:+1:5: +1:45 -+ goto -> bb1; // scope 0 at $DIR/lower_intrinsics.rs:+1:5: +1:45 + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + _4 = &_1; + _3 = &(*_4); +- _2 = discriminant_value::(move _3) -> [return: bb1, unwind unreachable]; ++ _2 = discriminant((*_3)); ++ goto -> bb1; } bb1: { - StorageDead(_3); // scope 0 at $DIR/lower_intrinsics.rs:+1:44: +1:45 - StorageDead(_4); // scope 0 at $DIR/lower_intrinsics.rs:+1:45: +1:46 - StorageDead(_2); // scope 0 at $DIR/lower_intrinsics.rs:+1:45: +1:46 - StorageLive(_5); // scope 0 at $DIR/lower_intrinsics.rs:+2:5: +2:45 - StorageLive(_6); // scope 0 at $DIR/lower_intrinsics.rs:+2:42: +2:44 - StorageLive(_7); // scope 0 at $DIR/lower_intrinsics.rs:+2:42: +2:44 - _19 = const _; // scope 0 at $DIR/lower_intrinsics.rs:+2:42: +2:44 - // mir::Constant - // + span: $DIR/lower_intrinsics.rs:89:42: 89:44 - // + literal: Const { ty: &i32, val: Unevaluated(discriminant, [T], Some(promoted[2])) } - _7 = &(*_19); // scope 0 at $DIR/lower_intrinsics.rs:+2:42: +2:44 - _6 = &(*_7); // scope 0 at $DIR/lower_intrinsics.rs:+2:42: +2:44 -- _5 = discriminant_value::(move _6) -> [return: bb2, unwind unreachable]; // scope 0 at $DIR/lower_intrinsics.rs:+2:5: +2:45 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:89:5: 89:41 -- // + literal: Const { ty: for<'a> extern "rust-intrinsic" fn(&'a i32) -> ::Discriminant {discriminant_value::}, val: Value() } -+ _5 = discriminant((*_6)); // scope 0 at $DIR/lower_intrinsics.rs:+2:5: +2:45 -+ goto -> bb2; // scope 0 at $DIR/lower_intrinsics.rs:+2:5: +2:45 + StorageDead(_3); + StorageDead(_4); + StorageDead(_2); + StorageLive(_5); + StorageLive(_6); + StorageLive(_7); + _19 = const _; + _7 = &(*_19); + _6 = &(*_7); +- _5 = discriminant_value::(move _6) -> [return: bb2, unwind unreachable]; ++ _5 = discriminant((*_6)); ++ goto -> bb2; } bb2: { - StorageDead(_6); // scope 0 at $DIR/lower_intrinsics.rs:+2:44: +2:45 - StorageDead(_7); // scope 0 at $DIR/lower_intrinsics.rs:+2:45: +2:46 - StorageDead(_5); // scope 0 at $DIR/lower_intrinsics.rs:+2:45: +2:46 - StorageLive(_9); // scope 0 at $DIR/lower_intrinsics.rs:+3:5: +3:46 - StorageLive(_10); // scope 0 at $DIR/lower_intrinsics.rs:+3:42: +3:45 - StorageLive(_11); // scope 0 at $DIR/lower_intrinsics.rs:+3:42: +3:45 - _18 = const _; // scope 0 at $DIR/lower_intrinsics.rs:+3:42: +3:45 - // mir::Constant - // + span: $DIR/lower_intrinsics.rs:90:42: 90:45 - // + literal: Const { ty: &(), val: Unevaluated(discriminant, [T], Some(promoted[1])) } - _11 = &(*_18); // scope 0 at $DIR/lower_intrinsics.rs:+3:42: +3:45 - _10 = &(*_11); // scope 0 at $DIR/lower_intrinsics.rs:+3:42: +3:45 -- _9 = discriminant_value::<()>(move _10) -> [return: bb3, unwind unreachable]; // scope 0 at $DIR/lower_intrinsics.rs:+3:5: +3:46 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:90:5: 90:41 -- // + literal: Const { ty: for<'a> extern "rust-intrinsic" fn(&'a ()) -> <() as DiscriminantKind>::Discriminant {discriminant_value::<()>}, val: Value() } -+ _9 = discriminant((*_10)); // scope 0 at $DIR/lower_intrinsics.rs:+3:5: +3:46 -+ goto -> bb3; // scope 0 at $DIR/lower_intrinsics.rs:+3:5: +3:46 + StorageDead(_6); + StorageDead(_7); + StorageDead(_5); + StorageLive(_9); + StorageLive(_10); + StorageLive(_11); + _18 = const _; + _11 = &(*_18); + _10 = &(*_11); +- _9 = discriminant_value::<()>(move _10) -> [return: bb3, unwind unreachable]; ++ _9 = discriminant((*_10)); ++ goto -> bb3; } bb3: { - StorageDead(_10); // scope 0 at $DIR/lower_intrinsics.rs:+3:45: +3:46 - StorageDead(_11); // scope 0 at $DIR/lower_intrinsics.rs:+3:46: +3:47 - StorageDead(_9); // scope 0 at $DIR/lower_intrinsics.rs:+3:46: +3:47 - StorageLive(_13); // scope 0 at $DIR/lower_intrinsics.rs:+4:5: +4:48 - StorageLive(_14); // scope 0 at $DIR/lower_intrinsics.rs:+4:42: +4:47 - StorageLive(_15); // scope 0 at $DIR/lower_intrinsics.rs:+4:42: +4:47 - _17 = const _; // scope 0 at $DIR/lower_intrinsics.rs:+4:42: +4:47 - // mir::Constant - // + span: $DIR/lower_intrinsics.rs:91:42: 91:47 - // + literal: Const { ty: &E, val: Unevaluated(discriminant, [T], Some(promoted[0])) } - _15 = &(*_17); // scope 0 at $DIR/lower_intrinsics.rs:+4:42: +4:47 - _14 = &(*_15); // scope 0 at $DIR/lower_intrinsics.rs:+4:42: +4:47 -- _13 = discriminant_value::(move _14) -> [return: bb4, unwind unreachable]; // scope 0 at $DIR/lower_intrinsics.rs:+4:5: +4:48 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:91:5: 91:41 -- // + literal: Const { ty: for<'a> extern "rust-intrinsic" fn(&'a E) -> ::Discriminant {discriminant_value::}, val: Value() } -+ _13 = discriminant((*_14)); // scope 0 at $DIR/lower_intrinsics.rs:+4:5: +4:48 -+ goto -> bb4; // scope 0 at $DIR/lower_intrinsics.rs:+4:5: +4:48 + StorageDead(_10); + StorageDead(_11); + StorageDead(_9); + StorageLive(_13); + StorageLive(_14); + StorageLive(_15); + _17 = const _; + _15 = &(*_17); + _14 = &(*_15); +- _13 = discriminant_value::(move _14) -> [return: bb4, unwind unreachable]; ++ _13 = discriminant((*_14)); ++ goto -> bb4; } bb4: { - StorageDead(_14); // scope 0 at $DIR/lower_intrinsics.rs:+4:47: +4:48 - StorageDead(_15); // scope 0 at $DIR/lower_intrinsics.rs:+4:48: +4:49 - StorageDead(_13); // scope 0 at $DIR/lower_intrinsics.rs:+4:48: +4:49 - _0 = const (); // scope 0 at $DIR/lower_intrinsics.rs:+0:30: +5:2 - drop(_1) -> [return: bb5, unwind unreachable]; // scope 0 at $DIR/lower_intrinsics.rs:+5:1: +5:2 + StorageDead(_14); + StorageDead(_15); + StorageDead(_13); + _0 = const (); + drop(_1) -> [return: bb5, unwind unreachable]; } bb5: { - return; // scope 0 at $DIR/lower_intrinsics.rs:+5:2: +5:2 + return; } } diff --git a/tests/mir-opt/lower_intrinsics.discriminant.LowerIntrinsics.panic-unwind.diff b/tests/mir-opt/lower_intrinsics.discriminant.LowerIntrinsics.panic-unwind.diff index 6fc9616d85540..5848288ecfdcf 100644 --- a/tests/mir-opt/lower_intrinsics.discriminant.LowerIntrinsics.panic-unwind.diff +++ b/tests/mir-opt/lower_intrinsics.discriminant.LowerIntrinsics.panic-unwind.diff @@ -2,118 +2,97 @@ + // MIR for `discriminant` after LowerIntrinsics fn discriminant(_1: T) -> () { - debug t => _1; // in scope 0 at $DIR/lower_intrinsics.rs:+0:24: +0:25 - let mut _0: (); // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:30: +0:30 - let _2: ::Discriminant; // in scope 0 at $DIR/lower_intrinsics.rs:+1:5: +1:45 - let mut _3: &T; // in scope 0 at $DIR/lower_intrinsics.rs:+1:42: +1:44 - let _4: &T; // in scope 0 at $DIR/lower_intrinsics.rs:+1:42: +1:44 - let _5: u8; // in scope 0 at $DIR/lower_intrinsics.rs:+2:5: +2:45 - let mut _6: &i32; // in scope 0 at $DIR/lower_intrinsics.rs:+2:42: +2:44 - let _7: &i32; // in scope 0 at $DIR/lower_intrinsics.rs:+2:42: +2:44 - let _8: i32; // in scope 0 at $DIR/lower_intrinsics.rs:+2:43: +2:44 - let _9: u8; // in scope 0 at $DIR/lower_intrinsics.rs:+3:5: +3:46 - let mut _10: &(); // in scope 0 at $DIR/lower_intrinsics.rs:+3:42: +3:45 - let _11: &(); // in scope 0 at $DIR/lower_intrinsics.rs:+3:42: +3:45 - let _12: (); // in scope 0 at $DIR/lower_intrinsics.rs:+3:43: +3:45 - let _13: isize; // in scope 0 at $DIR/lower_intrinsics.rs:+4:5: +4:48 - let mut _14: &E; // in scope 0 at $DIR/lower_intrinsics.rs:+4:42: +4:47 - let _15: &E; // in scope 0 at $DIR/lower_intrinsics.rs:+4:42: +4:47 - let _16: E; // in scope 0 at $DIR/lower_intrinsics.rs:+4:43: +4:47 - let mut _17: &E; // in scope 0 at $DIR/lower_intrinsics.rs:+4:42: +4:47 - let mut _18: &(); // in scope 0 at $DIR/lower_intrinsics.rs:+3:42: +3:45 - let mut _19: &i32; // in scope 0 at $DIR/lower_intrinsics.rs:+2:42: +2:44 + debug t => _1; + let mut _0: (); + let _2: ::Discriminant; + let mut _3: &T; + let _4: &T; + let _5: u8; + let mut _6: &i32; + let _7: &i32; + let _8: i32; + let _9: u8; + let mut _10: &(); + let _11: &(); + let _12: (); + let _13: isize; + let mut _14: &E; + let _15: &E; + let _16: E; + let mut _17: &E; + let mut _18: &(); + let mut _19: &i32; bb0: { - StorageLive(_2); // scope 0 at $DIR/lower_intrinsics.rs:+1:5: +1:45 - StorageLive(_3); // scope 0 at $DIR/lower_intrinsics.rs:+1:42: +1:44 - StorageLive(_4); // scope 0 at $DIR/lower_intrinsics.rs:+1:42: +1:44 - _4 = &_1; // scope 0 at $DIR/lower_intrinsics.rs:+1:42: +1:44 - _3 = &(*_4); // scope 0 at $DIR/lower_intrinsics.rs:+1:42: +1:44 -- _2 = discriminant_value::(move _3) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/lower_intrinsics.rs:+1:5: +1:45 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:88:5: 88:41 -- // + literal: Const { ty: for<'a> extern "rust-intrinsic" fn(&'a T) -> ::Discriminant {discriminant_value::}, val: Value() } -+ _2 = discriminant((*_3)); // scope 0 at $DIR/lower_intrinsics.rs:+1:5: +1:45 -+ goto -> bb1; // scope 0 at $DIR/lower_intrinsics.rs:+1:5: +1:45 + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + _4 = &_1; + _3 = &(*_4); +- _2 = discriminant_value::(move _3) -> [return: bb1, unwind unreachable]; ++ _2 = discriminant((*_3)); ++ goto -> bb1; } bb1: { - StorageDead(_3); // scope 0 at $DIR/lower_intrinsics.rs:+1:44: +1:45 - StorageDead(_4); // scope 0 at $DIR/lower_intrinsics.rs:+1:45: +1:46 - StorageDead(_2); // scope 0 at $DIR/lower_intrinsics.rs:+1:45: +1:46 - StorageLive(_5); // scope 0 at $DIR/lower_intrinsics.rs:+2:5: +2:45 - StorageLive(_6); // scope 0 at $DIR/lower_intrinsics.rs:+2:42: +2:44 - StorageLive(_7); // scope 0 at $DIR/lower_intrinsics.rs:+2:42: +2:44 - _19 = const _; // scope 0 at $DIR/lower_intrinsics.rs:+2:42: +2:44 - // mir::Constant - // + span: $DIR/lower_intrinsics.rs:89:42: 89:44 - // + literal: Const { ty: &i32, val: Unevaluated(discriminant, [T], Some(promoted[2])) } - _7 = &(*_19); // scope 0 at $DIR/lower_intrinsics.rs:+2:42: +2:44 - _6 = &(*_7); // scope 0 at $DIR/lower_intrinsics.rs:+2:42: +2:44 -- _5 = discriminant_value::(move _6) -> [return: bb2, unwind unreachable]; // scope 0 at $DIR/lower_intrinsics.rs:+2:5: +2:45 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:89:5: 89:41 -- // + literal: Const { ty: for<'a> extern "rust-intrinsic" fn(&'a i32) -> ::Discriminant {discriminant_value::}, val: Value() } -+ _5 = discriminant((*_6)); // scope 0 at $DIR/lower_intrinsics.rs:+2:5: +2:45 -+ goto -> bb2; // scope 0 at $DIR/lower_intrinsics.rs:+2:5: +2:45 + StorageDead(_3); + StorageDead(_4); + StorageDead(_2); + StorageLive(_5); + StorageLive(_6); + StorageLive(_7); + _19 = const _; + _7 = &(*_19); + _6 = &(*_7); +- _5 = discriminant_value::(move _6) -> [return: bb2, unwind unreachable]; ++ _5 = discriminant((*_6)); ++ goto -> bb2; } bb2: { - StorageDead(_6); // scope 0 at $DIR/lower_intrinsics.rs:+2:44: +2:45 - StorageDead(_7); // scope 0 at $DIR/lower_intrinsics.rs:+2:45: +2:46 - StorageDead(_5); // scope 0 at $DIR/lower_intrinsics.rs:+2:45: +2:46 - StorageLive(_9); // scope 0 at $DIR/lower_intrinsics.rs:+3:5: +3:46 - StorageLive(_10); // scope 0 at $DIR/lower_intrinsics.rs:+3:42: +3:45 - StorageLive(_11); // scope 0 at $DIR/lower_intrinsics.rs:+3:42: +3:45 - _18 = const _; // scope 0 at $DIR/lower_intrinsics.rs:+3:42: +3:45 - // mir::Constant - // + span: $DIR/lower_intrinsics.rs:90:42: 90:45 - // + literal: Const { ty: &(), val: Unevaluated(discriminant, [T], Some(promoted[1])) } - _11 = &(*_18); // scope 0 at $DIR/lower_intrinsics.rs:+3:42: +3:45 - _10 = &(*_11); // scope 0 at $DIR/lower_intrinsics.rs:+3:42: +3:45 -- _9 = discriminant_value::<()>(move _10) -> [return: bb3, unwind unreachable]; // scope 0 at $DIR/lower_intrinsics.rs:+3:5: +3:46 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:90:5: 90:41 -- // + literal: Const { ty: for<'a> extern "rust-intrinsic" fn(&'a ()) -> <() as DiscriminantKind>::Discriminant {discriminant_value::<()>}, val: Value() } -+ _9 = discriminant((*_10)); // scope 0 at $DIR/lower_intrinsics.rs:+3:5: +3:46 -+ goto -> bb3; // scope 0 at $DIR/lower_intrinsics.rs:+3:5: +3:46 + StorageDead(_6); + StorageDead(_7); + StorageDead(_5); + StorageLive(_9); + StorageLive(_10); + StorageLive(_11); + _18 = const _; + _11 = &(*_18); + _10 = &(*_11); +- _9 = discriminant_value::<()>(move _10) -> [return: bb3, unwind unreachable]; ++ _9 = discriminant((*_10)); ++ goto -> bb3; } bb3: { - StorageDead(_10); // scope 0 at $DIR/lower_intrinsics.rs:+3:45: +3:46 - StorageDead(_11); // scope 0 at $DIR/lower_intrinsics.rs:+3:46: +3:47 - StorageDead(_9); // scope 0 at $DIR/lower_intrinsics.rs:+3:46: +3:47 - StorageLive(_13); // scope 0 at $DIR/lower_intrinsics.rs:+4:5: +4:48 - StorageLive(_14); // scope 0 at $DIR/lower_intrinsics.rs:+4:42: +4:47 - StorageLive(_15); // scope 0 at $DIR/lower_intrinsics.rs:+4:42: +4:47 - _17 = const _; // scope 0 at $DIR/lower_intrinsics.rs:+4:42: +4:47 - // mir::Constant - // + span: $DIR/lower_intrinsics.rs:91:42: 91:47 - // + literal: Const { ty: &E, val: Unevaluated(discriminant, [T], Some(promoted[0])) } - _15 = &(*_17); // scope 0 at $DIR/lower_intrinsics.rs:+4:42: +4:47 - _14 = &(*_15); // scope 0 at $DIR/lower_intrinsics.rs:+4:42: +4:47 -- _13 = discriminant_value::(move _14) -> [return: bb4, unwind unreachable]; // scope 0 at $DIR/lower_intrinsics.rs:+4:5: +4:48 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:91:5: 91:41 -- // + literal: Const { ty: for<'a> extern "rust-intrinsic" fn(&'a E) -> ::Discriminant {discriminant_value::}, val: Value() } -+ _13 = discriminant((*_14)); // scope 0 at $DIR/lower_intrinsics.rs:+4:5: +4:48 -+ goto -> bb4; // scope 0 at $DIR/lower_intrinsics.rs:+4:5: +4:48 + StorageDead(_10); + StorageDead(_11); + StorageDead(_9); + StorageLive(_13); + StorageLive(_14); + StorageLive(_15); + _17 = const _; + _15 = &(*_17); + _14 = &(*_15); +- _13 = discriminant_value::(move _14) -> [return: bb4, unwind unreachable]; ++ _13 = discriminant((*_14)); ++ goto -> bb4; } bb4: { - StorageDead(_14); // scope 0 at $DIR/lower_intrinsics.rs:+4:47: +4:48 - StorageDead(_15); // scope 0 at $DIR/lower_intrinsics.rs:+4:48: +4:49 - StorageDead(_13); // scope 0 at $DIR/lower_intrinsics.rs:+4:48: +4:49 - _0 = const (); // scope 0 at $DIR/lower_intrinsics.rs:+0:30: +5:2 - drop(_1) -> [return: bb5, unwind: bb6]; // scope 0 at $DIR/lower_intrinsics.rs:+5:1: +5:2 + StorageDead(_14); + StorageDead(_15); + StorageDead(_13); + _0 = const (); + drop(_1) -> [return: bb5, unwind: bb6]; } bb5: { - return; // scope 0 at $DIR/lower_intrinsics.rs:+5:2: +5:2 + return; } bb6 (cleanup): { - resume; // scope 0 at $DIR/lower_intrinsics.rs:+0:1: +5:2 + resume; } } diff --git a/tests/mir-opt/lower_intrinsics.f_copy_nonoverlapping.LowerIntrinsics.panic-abort.diff b/tests/mir-opt/lower_intrinsics.f_copy_nonoverlapping.LowerIntrinsics.panic-abort.diff index 5b870ccf5ee28..6de5f2c4f0741 100644 --- a/tests/mir-opt/lower_intrinsics.f_copy_nonoverlapping.LowerIntrinsics.panic-abort.diff +++ b/tests/mir-opt/lower_intrinsics.f_copy_nonoverlapping.LowerIntrinsics.panic-abort.diff @@ -2,71 +2,68 @@ + // MIR for `f_copy_nonoverlapping` after LowerIntrinsics fn f_copy_nonoverlapping() -> () { - let mut _0: (); // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:32: +0:32 - let _1: (); // in scope 0 at $DIR/lower_intrinsics.rs:+1:9: +1:12 - let _3: (); // in scope 0 at $DIR/lower_intrinsics.rs:+4:9: +4:95 - let mut _4: *const i32; // in scope 0 at $DIR/lower_intrinsics.rs:+4:29: +4:59 - let mut _5: *const (); // in scope 0 at $DIR/lower_intrinsics.rs:+4:29: +4:45 - let mut _6: *const (); // in scope 0 at $DIR/lower_intrinsics.rs:+4:29: +4:45 - let _7: &(); // in scope 0 at $DIR/lower_intrinsics.rs:+4:29: +4:33 - let mut _8: *mut i32; // in scope 0 at $DIR/lower_intrinsics.rs:+4:61: +4:91 - let mut _9: *mut (); // in scope 0 at $DIR/lower_intrinsics.rs:+4:61: +4:79 - let mut _10: *mut (); // in scope 0 at $DIR/lower_intrinsics.rs:+4:61: +4:79 - let mut _11: &mut (); // in scope 0 at $DIR/lower_intrinsics.rs:+4:61: +4:69 + let mut _0: (); + let _1: (); + let _3: (); + let mut _4: *const i32; + let mut _5: *const (); + let mut _6: *const (); + let _7: &(); + let mut _8: *mut i32; + let mut _9: *mut (); + let mut _10: *mut (); + let mut _11: &mut (); scope 1 { - debug src => _1; // in scope 1 at $DIR/lower_intrinsics.rs:+1:9: +1:12 - let mut _2: (); // in scope 1 at $DIR/lower_intrinsics.rs:+2:9: +2:16 + debug src => _1; + let mut _2: (); scope 2 { - debug dst => _2; // in scope 2 at $DIR/lower_intrinsics.rs:+2:9: +2:16 + debug dst => _2; scope 3 { } } } bb0: { - StorageLive(_1); // scope 0 at $DIR/lower_intrinsics.rs:+1:9: +1:12 - _1 = (); // scope 0 at $DIR/lower_intrinsics.rs:+1:15: +1:17 - StorageLive(_2); // scope 1 at $DIR/lower_intrinsics.rs:+2:9: +2:16 - _2 = (); // scope 1 at $DIR/lower_intrinsics.rs:+2:19: +2:21 - StorageLive(_3); // scope 3 at $DIR/lower_intrinsics.rs:+4:9: +4:95 - StorageLive(_4); // scope 3 at $DIR/lower_intrinsics.rs:+4:29: +4:59 - StorageLive(_5); // scope 3 at $DIR/lower_intrinsics.rs:+4:29: +4:45 - StorageLive(_6); // scope 3 at $DIR/lower_intrinsics.rs:+4:29: +4:45 - StorageLive(_7); // scope 3 at $DIR/lower_intrinsics.rs:+4:29: +4:33 - _7 = &_1; // scope 3 at $DIR/lower_intrinsics.rs:+4:29: +4:33 - _6 = &raw const (*_7); // scope 3 at $DIR/lower_intrinsics.rs:+4:29: +4:33 - _5 = _6; // scope 3 at $DIR/lower_intrinsics.rs:+4:29: +4:45 - _4 = move _5 as *const i32 (PtrToPtr); // scope 3 at $DIR/lower_intrinsics.rs:+4:29: +4:59 - StorageDead(_5); // scope 3 at $DIR/lower_intrinsics.rs:+4:58: +4:59 - StorageLive(_8); // scope 3 at $DIR/lower_intrinsics.rs:+4:61: +4:91 - StorageLive(_9); // scope 3 at $DIR/lower_intrinsics.rs:+4:61: +4:79 - StorageLive(_10); // scope 3 at $DIR/lower_intrinsics.rs:+4:61: +4:79 - StorageLive(_11); // scope 3 at $DIR/lower_intrinsics.rs:+4:61: +4:69 - _11 = &mut _2; // scope 3 at $DIR/lower_intrinsics.rs:+4:61: +4:69 - _10 = &raw mut (*_11); // scope 3 at $DIR/lower_intrinsics.rs:+4:61: +4:69 - _9 = _10; // scope 3 at $DIR/lower_intrinsics.rs:+4:61: +4:79 - _8 = move _9 as *mut i32 (PtrToPtr); // scope 3 at $DIR/lower_intrinsics.rs:+4:61: +4:91 - StorageDead(_9); // scope 3 at $DIR/lower_intrinsics.rs:+4:90: +4:91 -- _3 = copy_nonoverlapping::(move _4, move _8, const 0_usize) -> [return: bb1, unwind unreachable]; // scope 3 at $DIR/lower_intrinsics.rs:+4:9: +4:95 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:105:9: 105:28 -- // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(*const i32, *mut i32, usize) {copy_nonoverlapping::}, val: Value() } -+ copy_nonoverlapping(dst = move _8, src = move _4, count = const 0_usize); // scope 3 at $DIR/lower_intrinsics.rs:+4:9: +4:95 -+ goto -> bb1; // scope 3 at $DIR/lower_intrinsics.rs:+4:9: +4:95 + StorageLive(_1); + _1 = (); + StorageLive(_2); + _2 = (); + StorageLive(_3); + StorageLive(_4); + StorageLive(_5); + StorageLive(_6); + StorageLive(_7); + _7 = &_1; + _6 = &raw const (*_7); + _5 = _6; + _4 = move _5 as *const i32 (PtrToPtr); + StorageDead(_5); + StorageLive(_8); + StorageLive(_9); + StorageLive(_10); + StorageLive(_11); + _11 = &mut _2; + _10 = &raw mut (*_11); + _9 = _10; + _8 = move _9 as *mut i32 (PtrToPtr); + StorageDead(_9); +- _3 = copy_nonoverlapping::(move _4, move _8, const 0_usize) -> [return: bb1, unwind unreachable]; ++ copy_nonoverlapping(dst = move _8, src = move _4, count = const 0_usize); ++ goto -> bb1; } bb1: { - StorageDead(_8); // scope 3 at $DIR/lower_intrinsics.rs:+4:94: +4:95 - StorageDead(_4); // scope 3 at $DIR/lower_intrinsics.rs:+4:94: +4:95 - StorageDead(_11); // scope 3 at $DIR/lower_intrinsics.rs:+4:95: +4:96 - StorageDead(_10); // scope 3 at $DIR/lower_intrinsics.rs:+4:95: +4:96 - StorageDead(_7); // scope 3 at $DIR/lower_intrinsics.rs:+4:95: +4:96 - StorageDead(_6); // scope 3 at $DIR/lower_intrinsics.rs:+4:95: +4:96 - StorageDead(_3); // scope 3 at $DIR/lower_intrinsics.rs:+4:95: +4:96 - _0 = const (); // scope 3 at $DIR/lower_intrinsics.rs:+3:5: +5:6 - StorageDead(_2); // scope 1 at $DIR/lower_intrinsics.rs:+6:1: +6:2 - StorageDead(_1); // scope 0 at $DIR/lower_intrinsics.rs:+6:1: +6:2 - return; // scope 0 at $DIR/lower_intrinsics.rs:+6:2: +6:2 + StorageDead(_8); + StorageDead(_4); + StorageDead(_11); + StorageDead(_10); + StorageDead(_7); + StorageDead(_6); + StorageDead(_3); + _0 = const (); + StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/lower_intrinsics.f_copy_nonoverlapping.LowerIntrinsics.panic-unwind.diff b/tests/mir-opt/lower_intrinsics.f_copy_nonoverlapping.LowerIntrinsics.panic-unwind.diff index 5b870ccf5ee28..6de5f2c4f0741 100644 --- a/tests/mir-opt/lower_intrinsics.f_copy_nonoverlapping.LowerIntrinsics.panic-unwind.diff +++ b/tests/mir-opt/lower_intrinsics.f_copy_nonoverlapping.LowerIntrinsics.panic-unwind.diff @@ -2,71 +2,68 @@ + // MIR for `f_copy_nonoverlapping` after LowerIntrinsics fn f_copy_nonoverlapping() -> () { - let mut _0: (); // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:32: +0:32 - let _1: (); // in scope 0 at $DIR/lower_intrinsics.rs:+1:9: +1:12 - let _3: (); // in scope 0 at $DIR/lower_intrinsics.rs:+4:9: +4:95 - let mut _4: *const i32; // in scope 0 at $DIR/lower_intrinsics.rs:+4:29: +4:59 - let mut _5: *const (); // in scope 0 at $DIR/lower_intrinsics.rs:+4:29: +4:45 - let mut _6: *const (); // in scope 0 at $DIR/lower_intrinsics.rs:+4:29: +4:45 - let _7: &(); // in scope 0 at $DIR/lower_intrinsics.rs:+4:29: +4:33 - let mut _8: *mut i32; // in scope 0 at $DIR/lower_intrinsics.rs:+4:61: +4:91 - let mut _9: *mut (); // in scope 0 at $DIR/lower_intrinsics.rs:+4:61: +4:79 - let mut _10: *mut (); // in scope 0 at $DIR/lower_intrinsics.rs:+4:61: +4:79 - let mut _11: &mut (); // in scope 0 at $DIR/lower_intrinsics.rs:+4:61: +4:69 + let mut _0: (); + let _1: (); + let _3: (); + let mut _4: *const i32; + let mut _5: *const (); + let mut _6: *const (); + let _7: &(); + let mut _8: *mut i32; + let mut _9: *mut (); + let mut _10: *mut (); + let mut _11: &mut (); scope 1 { - debug src => _1; // in scope 1 at $DIR/lower_intrinsics.rs:+1:9: +1:12 - let mut _2: (); // in scope 1 at $DIR/lower_intrinsics.rs:+2:9: +2:16 + debug src => _1; + let mut _2: (); scope 2 { - debug dst => _2; // in scope 2 at $DIR/lower_intrinsics.rs:+2:9: +2:16 + debug dst => _2; scope 3 { } } } bb0: { - StorageLive(_1); // scope 0 at $DIR/lower_intrinsics.rs:+1:9: +1:12 - _1 = (); // scope 0 at $DIR/lower_intrinsics.rs:+1:15: +1:17 - StorageLive(_2); // scope 1 at $DIR/lower_intrinsics.rs:+2:9: +2:16 - _2 = (); // scope 1 at $DIR/lower_intrinsics.rs:+2:19: +2:21 - StorageLive(_3); // scope 3 at $DIR/lower_intrinsics.rs:+4:9: +4:95 - StorageLive(_4); // scope 3 at $DIR/lower_intrinsics.rs:+4:29: +4:59 - StorageLive(_5); // scope 3 at $DIR/lower_intrinsics.rs:+4:29: +4:45 - StorageLive(_6); // scope 3 at $DIR/lower_intrinsics.rs:+4:29: +4:45 - StorageLive(_7); // scope 3 at $DIR/lower_intrinsics.rs:+4:29: +4:33 - _7 = &_1; // scope 3 at $DIR/lower_intrinsics.rs:+4:29: +4:33 - _6 = &raw const (*_7); // scope 3 at $DIR/lower_intrinsics.rs:+4:29: +4:33 - _5 = _6; // scope 3 at $DIR/lower_intrinsics.rs:+4:29: +4:45 - _4 = move _5 as *const i32 (PtrToPtr); // scope 3 at $DIR/lower_intrinsics.rs:+4:29: +4:59 - StorageDead(_5); // scope 3 at $DIR/lower_intrinsics.rs:+4:58: +4:59 - StorageLive(_8); // scope 3 at $DIR/lower_intrinsics.rs:+4:61: +4:91 - StorageLive(_9); // scope 3 at $DIR/lower_intrinsics.rs:+4:61: +4:79 - StorageLive(_10); // scope 3 at $DIR/lower_intrinsics.rs:+4:61: +4:79 - StorageLive(_11); // scope 3 at $DIR/lower_intrinsics.rs:+4:61: +4:69 - _11 = &mut _2; // scope 3 at $DIR/lower_intrinsics.rs:+4:61: +4:69 - _10 = &raw mut (*_11); // scope 3 at $DIR/lower_intrinsics.rs:+4:61: +4:69 - _9 = _10; // scope 3 at $DIR/lower_intrinsics.rs:+4:61: +4:79 - _8 = move _9 as *mut i32 (PtrToPtr); // scope 3 at $DIR/lower_intrinsics.rs:+4:61: +4:91 - StorageDead(_9); // scope 3 at $DIR/lower_intrinsics.rs:+4:90: +4:91 -- _3 = copy_nonoverlapping::(move _4, move _8, const 0_usize) -> [return: bb1, unwind unreachable]; // scope 3 at $DIR/lower_intrinsics.rs:+4:9: +4:95 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:105:9: 105:28 -- // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(*const i32, *mut i32, usize) {copy_nonoverlapping::}, val: Value() } -+ copy_nonoverlapping(dst = move _8, src = move _4, count = const 0_usize); // scope 3 at $DIR/lower_intrinsics.rs:+4:9: +4:95 -+ goto -> bb1; // scope 3 at $DIR/lower_intrinsics.rs:+4:9: +4:95 + StorageLive(_1); + _1 = (); + StorageLive(_2); + _2 = (); + StorageLive(_3); + StorageLive(_4); + StorageLive(_5); + StorageLive(_6); + StorageLive(_7); + _7 = &_1; + _6 = &raw const (*_7); + _5 = _6; + _4 = move _5 as *const i32 (PtrToPtr); + StorageDead(_5); + StorageLive(_8); + StorageLive(_9); + StorageLive(_10); + StorageLive(_11); + _11 = &mut _2; + _10 = &raw mut (*_11); + _9 = _10; + _8 = move _9 as *mut i32 (PtrToPtr); + StorageDead(_9); +- _3 = copy_nonoverlapping::(move _4, move _8, const 0_usize) -> [return: bb1, unwind unreachable]; ++ copy_nonoverlapping(dst = move _8, src = move _4, count = const 0_usize); ++ goto -> bb1; } bb1: { - StorageDead(_8); // scope 3 at $DIR/lower_intrinsics.rs:+4:94: +4:95 - StorageDead(_4); // scope 3 at $DIR/lower_intrinsics.rs:+4:94: +4:95 - StorageDead(_11); // scope 3 at $DIR/lower_intrinsics.rs:+4:95: +4:96 - StorageDead(_10); // scope 3 at $DIR/lower_intrinsics.rs:+4:95: +4:96 - StorageDead(_7); // scope 3 at $DIR/lower_intrinsics.rs:+4:95: +4:96 - StorageDead(_6); // scope 3 at $DIR/lower_intrinsics.rs:+4:95: +4:96 - StorageDead(_3); // scope 3 at $DIR/lower_intrinsics.rs:+4:95: +4:96 - _0 = const (); // scope 3 at $DIR/lower_intrinsics.rs:+3:5: +5:6 - StorageDead(_2); // scope 1 at $DIR/lower_intrinsics.rs:+6:1: +6:2 - StorageDead(_1); // scope 0 at $DIR/lower_intrinsics.rs:+6:1: +6:2 - return; // scope 0 at $DIR/lower_intrinsics.rs:+6:2: +6:2 + StorageDead(_8); + StorageDead(_4); + StorageDead(_11); + StorageDead(_10); + StorageDead(_7); + StorageDead(_6); + StorageDead(_3); + _0 = const (); + StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/lower_intrinsics.forget.LowerIntrinsics.panic-abort.diff b/tests/mir-opt/lower_intrinsics.forget.LowerIntrinsics.panic-abort.diff index 582a79f48d8c8..7d300e6c66b3c 100644 --- a/tests/mir-opt/lower_intrinsics.forget.LowerIntrinsics.panic-abort.diff +++ b/tests/mir-opt/lower_intrinsics.forget.LowerIntrinsics.panic-abort.diff @@ -2,28 +2,25 @@ + // MIR for `forget` after LowerIntrinsics fn forget(_1: T) -> () { - debug t => _1; // in scope 0 at $DIR/lower_intrinsics.rs:+0:18: +0:19 - let mut _0: (); // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:24: +0:24 - let mut _2: T; // in scope 0 at $DIR/lower_intrinsics.rs:+1:30: +1:31 + debug t => _1; + let mut _0: (); + let mut _2: T; bb0: { - StorageLive(_2); // scope 0 at $DIR/lower_intrinsics.rs:+1:30: +1:31 - _2 = move _1; // scope 0 at $DIR/lower_intrinsics.rs:+1:30: +1:31 -- _0 = std::intrinsics::forget::(move _2) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/lower_intrinsics.rs:+1:5: +1:32 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:32:5: 32:29 -- // + literal: Const { ty: extern "rust-intrinsic" fn(T) {std::intrinsics::forget::}, val: Value() } -+ _0 = const (); // scope 0 at $DIR/lower_intrinsics.rs:+1:5: +1:32 -+ goto -> bb1; // scope 0 at $DIR/lower_intrinsics.rs:+1:5: +1:32 + StorageLive(_2); + _2 = move _1; +- _0 = std::intrinsics::forget::(move _2) -> [return: bb1, unwind unreachable]; ++ _0 = const (); ++ goto -> bb1; } bb1: { - StorageDead(_2); // scope 0 at $DIR/lower_intrinsics.rs:+1:31: +1:32 - goto -> bb2; // scope 0 at $DIR/lower_intrinsics.rs:+2:1: +2:2 + StorageDead(_2); + goto -> bb2; } bb2: { - return; // scope 0 at $DIR/lower_intrinsics.rs:+2:2: +2:2 + return; } } diff --git a/tests/mir-opt/lower_intrinsics.forget.LowerIntrinsics.panic-unwind.diff b/tests/mir-opt/lower_intrinsics.forget.LowerIntrinsics.panic-unwind.diff index 582a79f48d8c8..7d300e6c66b3c 100644 --- a/tests/mir-opt/lower_intrinsics.forget.LowerIntrinsics.panic-unwind.diff +++ b/tests/mir-opt/lower_intrinsics.forget.LowerIntrinsics.panic-unwind.diff @@ -2,28 +2,25 @@ + // MIR for `forget` after LowerIntrinsics fn forget(_1: T) -> () { - debug t => _1; // in scope 0 at $DIR/lower_intrinsics.rs:+0:18: +0:19 - let mut _0: (); // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:24: +0:24 - let mut _2: T; // in scope 0 at $DIR/lower_intrinsics.rs:+1:30: +1:31 + debug t => _1; + let mut _0: (); + let mut _2: T; bb0: { - StorageLive(_2); // scope 0 at $DIR/lower_intrinsics.rs:+1:30: +1:31 - _2 = move _1; // scope 0 at $DIR/lower_intrinsics.rs:+1:30: +1:31 -- _0 = std::intrinsics::forget::(move _2) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/lower_intrinsics.rs:+1:5: +1:32 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:32:5: 32:29 -- // + literal: Const { ty: extern "rust-intrinsic" fn(T) {std::intrinsics::forget::}, val: Value() } -+ _0 = const (); // scope 0 at $DIR/lower_intrinsics.rs:+1:5: +1:32 -+ goto -> bb1; // scope 0 at $DIR/lower_intrinsics.rs:+1:5: +1:32 + StorageLive(_2); + _2 = move _1; +- _0 = std::intrinsics::forget::(move _2) -> [return: bb1, unwind unreachable]; ++ _0 = const (); ++ goto -> bb1; } bb1: { - StorageDead(_2); // scope 0 at $DIR/lower_intrinsics.rs:+1:31: +1:32 - goto -> bb2; // scope 0 at $DIR/lower_intrinsics.rs:+2:1: +2:2 + StorageDead(_2); + goto -> bb2; } bb2: { - return; // scope 0 at $DIR/lower_intrinsics.rs:+2:2: +2:2 + return; } } diff --git a/tests/mir-opt/lower_intrinsics.non_const.LowerIntrinsics.panic-abort.diff b/tests/mir-opt/lower_intrinsics.non_const.LowerIntrinsics.panic-abort.diff index 81ad97077b428..801e28ff2f4f9 100644 --- a/tests/mir-opt/lower_intrinsics.non_const.LowerIntrinsics.panic-abort.diff +++ b/tests/mir-opt/lower_intrinsics.non_const.LowerIntrinsics.panic-abort.diff @@ -2,30 +2,27 @@ + // MIR for `non_const` after LowerIntrinsics fn non_const() -> usize { - let mut _0: usize; // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:26: +0:31 - let _1: extern "rust-intrinsic" fn() -> usize {std::intrinsics::size_of::}; // in scope 0 at $DIR/lower_intrinsics.rs:+2:9: +2:18 - let mut _2: extern "rust-intrinsic" fn() -> usize {std::intrinsics::size_of::}; // in scope 0 at $DIR/lower_intrinsics.rs:+3:5: +3:14 + let mut _0: usize; + let _1: extern "rust-intrinsic" fn() -> usize {std::intrinsics::size_of::}; + let mut _2: extern "rust-intrinsic" fn() -> usize {std::intrinsics::size_of::}; scope 1 { - debug size_of_t => _1; // in scope 1 at $DIR/lower_intrinsics.rs:+2:9: +2:18 + debug size_of_t => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/lower_intrinsics.rs:+2:9: +2:18 - _1 = std::intrinsics::size_of::; // scope 0 at $DIR/lower_intrinsics.rs:+2:21: +2:51 - // mir::Constant - // + span: $DIR/lower_intrinsics.rs:43:21: 43:51 - // + literal: Const { ty: extern "rust-intrinsic" fn() -> usize {std::intrinsics::size_of::}, val: Value() } - StorageLive(_2); // scope 1 at $DIR/lower_intrinsics.rs:+3:5: +3:14 - _2 = _1; // scope 1 at $DIR/lower_intrinsics.rs:+3:5: +3:14 -- _0 = move _2() -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/lower_intrinsics.rs:+3:5: +3:16 -+ _0 = SizeOf(T); // scope 1 at $DIR/lower_intrinsics.rs:+3:5: +3:16 -+ goto -> bb1; // scope 1 at $DIR/lower_intrinsics.rs:+3:5: +3:16 + StorageLive(_1); + _1 = std::intrinsics::size_of::; + StorageLive(_2); + _2 = _1; +- _0 = move _2() -> [return: bb1, unwind unreachable]; ++ _0 = SizeOf(T); ++ goto -> bb1; } bb1: { - StorageDead(_2); // scope 1 at $DIR/lower_intrinsics.rs:+3:15: +3:16 - StorageDead(_1); // scope 0 at $DIR/lower_intrinsics.rs:+4:1: +4:2 - return; // scope 0 at $DIR/lower_intrinsics.rs:+4:2: +4:2 + StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/lower_intrinsics.non_const.LowerIntrinsics.panic-unwind.diff b/tests/mir-opt/lower_intrinsics.non_const.LowerIntrinsics.panic-unwind.diff index 81ad97077b428..801e28ff2f4f9 100644 --- a/tests/mir-opt/lower_intrinsics.non_const.LowerIntrinsics.panic-unwind.diff +++ b/tests/mir-opt/lower_intrinsics.non_const.LowerIntrinsics.panic-unwind.diff @@ -2,30 +2,27 @@ + // MIR for `non_const` after LowerIntrinsics fn non_const() -> usize { - let mut _0: usize; // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:26: +0:31 - let _1: extern "rust-intrinsic" fn() -> usize {std::intrinsics::size_of::}; // in scope 0 at $DIR/lower_intrinsics.rs:+2:9: +2:18 - let mut _2: extern "rust-intrinsic" fn() -> usize {std::intrinsics::size_of::}; // in scope 0 at $DIR/lower_intrinsics.rs:+3:5: +3:14 + let mut _0: usize; + let _1: extern "rust-intrinsic" fn() -> usize {std::intrinsics::size_of::}; + let mut _2: extern "rust-intrinsic" fn() -> usize {std::intrinsics::size_of::}; scope 1 { - debug size_of_t => _1; // in scope 1 at $DIR/lower_intrinsics.rs:+2:9: +2:18 + debug size_of_t => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/lower_intrinsics.rs:+2:9: +2:18 - _1 = std::intrinsics::size_of::; // scope 0 at $DIR/lower_intrinsics.rs:+2:21: +2:51 - // mir::Constant - // + span: $DIR/lower_intrinsics.rs:43:21: 43:51 - // + literal: Const { ty: extern "rust-intrinsic" fn() -> usize {std::intrinsics::size_of::}, val: Value() } - StorageLive(_2); // scope 1 at $DIR/lower_intrinsics.rs:+3:5: +3:14 - _2 = _1; // scope 1 at $DIR/lower_intrinsics.rs:+3:5: +3:14 -- _0 = move _2() -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/lower_intrinsics.rs:+3:5: +3:16 -+ _0 = SizeOf(T); // scope 1 at $DIR/lower_intrinsics.rs:+3:5: +3:16 -+ goto -> bb1; // scope 1 at $DIR/lower_intrinsics.rs:+3:5: +3:16 + StorageLive(_1); + _1 = std::intrinsics::size_of::; + StorageLive(_2); + _2 = _1; +- _0 = move _2() -> [return: bb1, unwind unreachable]; ++ _0 = SizeOf(T); ++ goto -> bb1; } bb1: { - StorageDead(_2); // scope 1 at $DIR/lower_intrinsics.rs:+3:15: +3:16 - StorageDead(_1); // scope 0 at $DIR/lower_intrinsics.rs:+4:1: +4:2 - return; // scope 0 at $DIR/lower_intrinsics.rs:+4:2: +4:2 + StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/lower_intrinsics.option_payload.LowerIntrinsics.panic-abort.diff b/tests/mir-opt/lower_intrinsics.option_payload.LowerIntrinsics.panic-abort.diff index edc66e2c75ce4..194478560e929 100644 --- a/tests/mir-opt/lower_intrinsics.option_payload.LowerIntrinsics.panic-abort.diff +++ b/tests/mir-opt/lower_intrinsics.option_payload.LowerIntrinsics.panic-abort.diff @@ -2,53 +2,47 @@ + // MIR for `option_payload` after LowerIntrinsics fn option_payload(_1: &Option, _2: &Option) -> () { - debug o => _1; // in scope 0 at $DIR/lower_intrinsics.rs:+0:23: +0:24 - debug p => _2; // in scope 0 at $DIR/lower_intrinsics.rs:+0:42: +0:43 - let mut _0: (); // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:62: +0:62 - let mut _4: *const std::option::Option; // in scope 0 at $DIR/lower_intrinsics.rs:+2:55: +2:56 - let mut _6: *const std::option::Option; // in scope 0 at $DIR/lower_intrinsics.rs:+3:55: +3:56 + debug o => _1; + debug p => _2; + let mut _0: (); + let mut _4: *const std::option::Option; + let mut _6: *const std::option::Option; scope 1 { - let _3: *const usize; // in scope 1 at $DIR/lower_intrinsics.rs:+2:13: +2:15 + let _3: *const usize; scope 2 { - debug _x => _3; // in scope 2 at $DIR/lower_intrinsics.rs:+2:13: +2:15 - let _5: *const std::string::String; // in scope 2 at $DIR/lower_intrinsics.rs:+3:13: +3:15 + debug _x => _3; + let _5: *const std::string::String; scope 3 { - debug _y => _5; // in scope 3 at $DIR/lower_intrinsics.rs:+3:13: +3:15 + debug _y => _5; } } } bb0: { - StorageLive(_3); // scope 1 at $DIR/lower_intrinsics.rs:+2:13: +2:15 - StorageLive(_4); // scope 1 at $DIR/lower_intrinsics.rs:+2:55: +2:56 - _4 = &raw const (*_1); // scope 1 at $DIR/lower_intrinsics.rs:+2:55: +2:56 -- _3 = option_payload_ptr::(move _4) -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/lower_intrinsics.rs:+2:18: +2:57 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:143:18: 143:54 -- // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(*const Option) -> *const usize {option_payload_ptr::}, val: Value() } -+ _3 = &raw const (((*_4) as Some).0: usize); // scope 1 at $DIR/lower_intrinsics.rs:+2:18: +2:57 -+ goto -> bb1; // scope 1 at $DIR/lower_intrinsics.rs:+2:18: +2:57 + StorageLive(_3); + StorageLive(_4); + _4 = &raw const (*_1); +- _3 = option_payload_ptr::(move _4) -> [return: bb1, unwind unreachable]; ++ _3 = &raw const (((*_4) as Some).0: usize); ++ goto -> bb1; } bb1: { - StorageDead(_4); // scope 1 at $DIR/lower_intrinsics.rs:+2:56: +2:57 - StorageLive(_5); // scope 2 at $DIR/lower_intrinsics.rs:+3:13: +3:15 - StorageLive(_6); // scope 2 at $DIR/lower_intrinsics.rs:+3:55: +3:56 - _6 = &raw const (*_2); // scope 2 at $DIR/lower_intrinsics.rs:+3:55: +3:56 -- _5 = option_payload_ptr::(move _6) -> [return: bb2, unwind unreachable]; // scope 2 at $DIR/lower_intrinsics.rs:+3:18: +3:57 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:144:18: 144:54 -- // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(*const Option) -> *const String {option_payload_ptr::}, val: Value() } -+ _5 = &raw const (((*_6) as Some).0: std::string::String); // scope 2 at $DIR/lower_intrinsics.rs:+3:18: +3:57 -+ goto -> bb2; // scope 2 at $DIR/lower_intrinsics.rs:+3:18: +3:57 + StorageDead(_4); + StorageLive(_5); + StorageLive(_6); + _6 = &raw const (*_2); +- _5 = option_payload_ptr::(move _6) -> [return: bb2, unwind unreachable]; ++ _5 = &raw const (((*_6) as Some).0: std::string::String); ++ goto -> bb2; } bb2: { - StorageDead(_6); // scope 2 at $DIR/lower_intrinsics.rs:+3:56: +3:57 - _0 = const (); // scope 1 at $DIR/lower_intrinsics.rs:+1:5: +4:6 - StorageDead(_5); // scope 2 at $DIR/lower_intrinsics.rs:+4:5: +4:6 - StorageDead(_3); // scope 1 at $DIR/lower_intrinsics.rs:+4:5: +4:6 - return; // scope 0 at $DIR/lower_intrinsics.rs:+5:2: +5:2 + StorageDead(_6); + _0 = const (); + StorageDead(_5); + StorageDead(_3); + return; } } diff --git a/tests/mir-opt/lower_intrinsics.option_payload.LowerIntrinsics.panic-unwind.diff b/tests/mir-opt/lower_intrinsics.option_payload.LowerIntrinsics.panic-unwind.diff index edc66e2c75ce4..194478560e929 100644 --- a/tests/mir-opt/lower_intrinsics.option_payload.LowerIntrinsics.panic-unwind.diff +++ b/tests/mir-opt/lower_intrinsics.option_payload.LowerIntrinsics.panic-unwind.diff @@ -2,53 +2,47 @@ + // MIR for `option_payload` after LowerIntrinsics fn option_payload(_1: &Option, _2: &Option) -> () { - debug o => _1; // in scope 0 at $DIR/lower_intrinsics.rs:+0:23: +0:24 - debug p => _2; // in scope 0 at $DIR/lower_intrinsics.rs:+0:42: +0:43 - let mut _0: (); // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:62: +0:62 - let mut _4: *const std::option::Option; // in scope 0 at $DIR/lower_intrinsics.rs:+2:55: +2:56 - let mut _6: *const std::option::Option; // in scope 0 at $DIR/lower_intrinsics.rs:+3:55: +3:56 + debug o => _1; + debug p => _2; + let mut _0: (); + let mut _4: *const std::option::Option; + let mut _6: *const std::option::Option; scope 1 { - let _3: *const usize; // in scope 1 at $DIR/lower_intrinsics.rs:+2:13: +2:15 + let _3: *const usize; scope 2 { - debug _x => _3; // in scope 2 at $DIR/lower_intrinsics.rs:+2:13: +2:15 - let _5: *const std::string::String; // in scope 2 at $DIR/lower_intrinsics.rs:+3:13: +3:15 + debug _x => _3; + let _5: *const std::string::String; scope 3 { - debug _y => _5; // in scope 3 at $DIR/lower_intrinsics.rs:+3:13: +3:15 + debug _y => _5; } } } bb0: { - StorageLive(_3); // scope 1 at $DIR/lower_intrinsics.rs:+2:13: +2:15 - StorageLive(_4); // scope 1 at $DIR/lower_intrinsics.rs:+2:55: +2:56 - _4 = &raw const (*_1); // scope 1 at $DIR/lower_intrinsics.rs:+2:55: +2:56 -- _3 = option_payload_ptr::(move _4) -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/lower_intrinsics.rs:+2:18: +2:57 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:143:18: 143:54 -- // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(*const Option) -> *const usize {option_payload_ptr::}, val: Value() } -+ _3 = &raw const (((*_4) as Some).0: usize); // scope 1 at $DIR/lower_intrinsics.rs:+2:18: +2:57 -+ goto -> bb1; // scope 1 at $DIR/lower_intrinsics.rs:+2:18: +2:57 + StorageLive(_3); + StorageLive(_4); + _4 = &raw const (*_1); +- _3 = option_payload_ptr::(move _4) -> [return: bb1, unwind unreachable]; ++ _3 = &raw const (((*_4) as Some).0: usize); ++ goto -> bb1; } bb1: { - StorageDead(_4); // scope 1 at $DIR/lower_intrinsics.rs:+2:56: +2:57 - StorageLive(_5); // scope 2 at $DIR/lower_intrinsics.rs:+3:13: +3:15 - StorageLive(_6); // scope 2 at $DIR/lower_intrinsics.rs:+3:55: +3:56 - _6 = &raw const (*_2); // scope 2 at $DIR/lower_intrinsics.rs:+3:55: +3:56 -- _5 = option_payload_ptr::(move _6) -> [return: bb2, unwind unreachable]; // scope 2 at $DIR/lower_intrinsics.rs:+3:18: +3:57 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:144:18: 144:54 -- // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(*const Option) -> *const String {option_payload_ptr::}, val: Value() } -+ _5 = &raw const (((*_6) as Some).0: std::string::String); // scope 2 at $DIR/lower_intrinsics.rs:+3:18: +3:57 -+ goto -> bb2; // scope 2 at $DIR/lower_intrinsics.rs:+3:18: +3:57 + StorageDead(_4); + StorageLive(_5); + StorageLive(_6); + _6 = &raw const (*_2); +- _5 = option_payload_ptr::(move _6) -> [return: bb2, unwind unreachable]; ++ _5 = &raw const (((*_6) as Some).0: std::string::String); ++ goto -> bb2; } bb2: { - StorageDead(_6); // scope 2 at $DIR/lower_intrinsics.rs:+3:56: +3:57 - _0 = const (); // scope 1 at $DIR/lower_intrinsics.rs:+1:5: +4:6 - StorageDead(_5); // scope 2 at $DIR/lower_intrinsics.rs:+4:5: +4:6 - StorageDead(_3); // scope 1 at $DIR/lower_intrinsics.rs:+4:5: +4:6 - return; // scope 0 at $DIR/lower_intrinsics.rs:+5:2: +5:2 + StorageDead(_6); + _0 = const (); + StorageDead(_5); + StorageDead(_3); + return; } } diff --git a/tests/mir-opt/lower_intrinsics.ptr_offset.LowerIntrinsics.panic-abort.diff b/tests/mir-opt/lower_intrinsics.ptr_offset.LowerIntrinsics.panic-abort.diff index 1760efe77d98f..4f7ad0b6094f6 100644 --- a/tests/mir-opt/lower_intrinsics.ptr_offset.LowerIntrinsics.panic-abort.diff +++ b/tests/mir-opt/lower_intrinsics.ptr_offset.LowerIntrinsics.panic-abort.diff @@ -2,29 +2,26 @@ + // MIR for `ptr_offset` after LowerIntrinsics fn ptr_offset(_1: *const i32, _2: isize) -> *const i32 { - debug p => _1; // in scope 0 at $DIR/lower_intrinsics.rs:+0:26: +0:27 - debug d => _2; // in scope 0 at $DIR/lower_intrinsics.rs:+0:41: +0:42 - let mut _0: *const i32; // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:54: +0:64 - let mut _3: *const i32; // in scope 0 at $DIR/lower_intrinsics.rs:+1:30: +1:31 - let mut _4: isize; // in scope 0 at $DIR/lower_intrinsics.rs:+1:33: +1:34 + debug p => _1; + debug d => _2; + let mut _0: *const i32; + let mut _3: *const i32; + let mut _4: isize; bb0: { - StorageLive(_3); // scope 0 at $DIR/lower_intrinsics.rs:+1:30: +1:31 - _3 = _1; // scope 0 at $DIR/lower_intrinsics.rs:+1:30: +1:31 - StorageLive(_4); // scope 0 at $DIR/lower_intrinsics.rs:+1:33: +1:34 - _4 = _2; // scope 0 at $DIR/lower_intrinsics.rs:+1:33: +1:34 -- _0 = offset::<*const i32, isize>(move _3, move _4) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/lower_intrinsics.rs:+1:5: +1:35 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:150:5: 150:29 -- // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(*const i32, isize) -> *const i32 {offset::<*const i32, isize>}, val: Value() } -+ _0 = Offset(move _3, move _4); // scope 0 at $DIR/lower_intrinsics.rs:+1:5: +1:35 -+ goto -> bb1; // scope 0 at $DIR/lower_intrinsics.rs:+1:5: +1:35 + StorageLive(_3); + _3 = _1; + StorageLive(_4); + _4 = _2; +- _0 = offset::<*const i32, isize>(move _3, move _4) -> [return: bb1, unwind unreachable]; ++ _0 = Offset(move _3, move _4); ++ goto -> bb1; } bb1: { - StorageDead(_4); // scope 0 at $DIR/lower_intrinsics.rs:+1:34: +1:35 - StorageDead(_3); // scope 0 at $DIR/lower_intrinsics.rs:+1:34: +1:35 - return; // scope 0 at $DIR/lower_intrinsics.rs:+2:2: +2:2 + StorageDead(_4); + StorageDead(_3); + return; } } diff --git a/tests/mir-opt/lower_intrinsics.ptr_offset.LowerIntrinsics.panic-unwind.diff b/tests/mir-opt/lower_intrinsics.ptr_offset.LowerIntrinsics.panic-unwind.diff index 1760efe77d98f..4f7ad0b6094f6 100644 --- a/tests/mir-opt/lower_intrinsics.ptr_offset.LowerIntrinsics.panic-unwind.diff +++ b/tests/mir-opt/lower_intrinsics.ptr_offset.LowerIntrinsics.panic-unwind.diff @@ -2,29 +2,26 @@ + // MIR for `ptr_offset` after LowerIntrinsics fn ptr_offset(_1: *const i32, _2: isize) -> *const i32 { - debug p => _1; // in scope 0 at $DIR/lower_intrinsics.rs:+0:26: +0:27 - debug d => _2; // in scope 0 at $DIR/lower_intrinsics.rs:+0:41: +0:42 - let mut _0: *const i32; // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:54: +0:64 - let mut _3: *const i32; // in scope 0 at $DIR/lower_intrinsics.rs:+1:30: +1:31 - let mut _4: isize; // in scope 0 at $DIR/lower_intrinsics.rs:+1:33: +1:34 + debug p => _1; + debug d => _2; + let mut _0: *const i32; + let mut _3: *const i32; + let mut _4: isize; bb0: { - StorageLive(_3); // scope 0 at $DIR/lower_intrinsics.rs:+1:30: +1:31 - _3 = _1; // scope 0 at $DIR/lower_intrinsics.rs:+1:30: +1:31 - StorageLive(_4); // scope 0 at $DIR/lower_intrinsics.rs:+1:33: +1:34 - _4 = _2; // scope 0 at $DIR/lower_intrinsics.rs:+1:33: +1:34 -- _0 = offset::<*const i32, isize>(move _3, move _4) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/lower_intrinsics.rs:+1:5: +1:35 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:150:5: 150:29 -- // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(*const i32, isize) -> *const i32 {offset::<*const i32, isize>}, val: Value() } -+ _0 = Offset(move _3, move _4); // scope 0 at $DIR/lower_intrinsics.rs:+1:5: +1:35 -+ goto -> bb1; // scope 0 at $DIR/lower_intrinsics.rs:+1:5: +1:35 + StorageLive(_3); + _3 = _1; + StorageLive(_4); + _4 = _2; +- _0 = offset::<*const i32, isize>(move _3, move _4) -> [return: bb1, unwind unreachable]; ++ _0 = Offset(move _3, move _4); ++ goto -> bb1; } bb1: { - StorageDead(_4); // scope 0 at $DIR/lower_intrinsics.rs:+1:34: +1:35 - StorageDead(_3); // scope 0 at $DIR/lower_intrinsics.rs:+1:34: +1:35 - return; // scope 0 at $DIR/lower_intrinsics.rs:+2:2: +2:2 + StorageDead(_4); + StorageDead(_3); + return; } } diff --git a/tests/mir-opt/lower_intrinsics.read_via_copy_primitive.LowerIntrinsics.panic-abort.diff b/tests/mir-opt/lower_intrinsics.read_via_copy_primitive.LowerIntrinsics.panic-abort.diff index 8583766348a6e..147c48a3c01d3 100644 --- a/tests/mir-opt/lower_intrinsics.read_via_copy_primitive.LowerIntrinsics.panic-abort.diff +++ b/tests/mir-opt/lower_intrinsics.read_via_copy_primitive.LowerIntrinsics.panic-abort.diff @@ -2,26 +2,23 @@ + // MIR for `read_via_copy_primitive` after LowerIntrinsics fn read_via_copy_primitive(_1: &i32) -> i32 { - debug r => _1; // in scope 0 at $DIR/lower_intrinsics.rs:+0:32: +0:33 - let mut _0: i32; // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:44: +0:47 - let mut _2: *const i32; // in scope 0 at $DIR/lower_intrinsics.rs:+1:46: +1:47 + debug r => _1; + let mut _0: i32; + let mut _2: *const i32; scope 1 { } bb0: { - StorageLive(_2); // scope 1 at $DIR/lower_intrinsics.rs:+1:46: +1:47 - _2 = &raw const (*_1); // scope 1 at $DIR/lower_intrinsics.rs:+1:46: +1:47 -- _0 = read_via_copy::(move _2) -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/lower_intrinsics.rs:+1:14: +1:48 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:125:14: 125:45 -- // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(*const i32) -> i32 {read_via_copy::}, val: Value() } -+ _0 = (*_2); // scope 1 at $DIR/lower_intrinsics.rs:+1:14: +1:48 -+ goto -> bb1; // scope 1 at $DIR/lower_intrinsics.rs:+1:14: +1:48 + StorageLive(_2); + _2 = &raw const (*_1); +- _0 = read_via_copy::(move _2) -> [return: bb1, unwind unreachable]; ++ _0 = (*_2); ++ goto -> bb1; } bb1: { - StorageDead(_2); // scope 1 at $DIR/lower_intrinsics.rs:+1:47: +1:48 - return; // scope 0 at $DIR/lower_intrinsics.rs:+2:2: +2:2 + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/lower_intrinsics.read_via_copy_primitive.LowerIntrinsics.panic-unwind.diff b/tests/mir-opt/lower_intrinsics.read_via_copy_primitive.LowerIntrinsics.panic-unwind.diff index 8583766348a6e..147c48a3c01d3 100644 --- a/tests/mir-opt/lower_intrinsics.read_via_copy_primitive.LowerIntrinsics.panic-unwind.diff +++ b/tests/mir-opt/lower_intrinsics.read_via_copy_primitive.LowerIntrinsics.panic-unwind.diff @@ -2,26 +2,23 @@ + // MIR for `read_via_copy_primitive` after LowerIntrinsics fn read_via_copy_primitive(_1: &i32) -> i32 { - debug r => _1; // in scope 0 at $DIR/lower_intrinsics.rs:+0:32: +0:33 - let mut _0: i32; // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:44: +0:47 - let mut _2: *const i32; // in scope 0 at $DIR/lower_intrinsics.rs:+1:46: +1:47 + debug r => _1; + let mut _0: i32; + let mut _2: *const i32; scope 1 { } bb0: { - StorageLive(_2); // scope 1 at $DIR/lower_intrinsics.rs:+1:46: +1:47 - _2 = &raw const (*_1); // scope 1 at $DIR/lower_intrinsics.rs:+1:46: +1:47 -- _0 = read_via_copy::(move _2) -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/lower_intrinsics.rs:+1:14: +1:48 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:125:14: 125:45 -- // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(*const i32) -> i32 {read_via_copy::}, val: Value() } -+ _0 = (*_2); // scope 1 at $DIR/lower_intrinsics.rs:+1:14: +1:48 -+ goto -> bb1; // scope 1 at $DIR/lower_intrinsics.rs:+1:14: +1:48 + StorageLive(_2); + _2 = &raw const (*_1); +- _0 = read_via_copy::(move _2) -> [return: bb1, unwind unreachable]; ++ _0 = (*_2); ++ goto -> bb1; } bb1: { - StorageDead(_2); // scope 1 at $DIR/lower_intrinsics.rs:+1:47: +1:48 - return; // scope 0 at $DIR/lower_intrinsics.rs:+2:2: +2:2 + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/lower_intrinsics.read_via_copy_uninhabited.LowerIntrinsics.panic-abort.diff b/tests/mir-opt/lower_intrinsics.read_via_copy_uninhabited.LowerIntrinsics.panic-abort.diff index f64bc9dcf620c..95a4a83d66386 100644 --- a/tests/mir-opt/lower_intrinsics.read_via_copy_uninhabited.LowerIntrinsics.panic-abort.diff +++ b/tests/mir-opt/lower_intrinsics.read_via_copy_uninhabited.LowerIntrinsics.panic-abort.diff @@ -2,20 +2,17 @@ + // MIR for `read_via_copy_uninhabited` after LowerIntrinsics fn read_via_copy_uninhabited(_1: &Never) -> Never { - debug r => _1; // in scope 0 at $DIR/lower_intrinsics.rs:+0:34: +0:35 - let mut _0: Never; // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:48: +0:53 - let mut _2: *const Never; // in scope 0 at $DIR/lower_intrinsics.rs:+1:46: +1:47 + debug r => _1; + let mut _0: Never; + let mut _2: *const Never; scope 1 { } bb0: { - StorageLive(_2); // scope 1 at $DIR/lower_intrinsics.rs:+1:46: +1:47 - _2 = &raw const (*_1); // scope 1 at $DIR/lower_intrinsics.rs:+1:46: +1:47 -- _0 = read_via_copy::(move _2) -> unwind unreachable; // scope 1 at $DIR/lower_intrinsics.rs:+1:14: +1:48 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:130:14: 130:45 -- // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(*const Never) -> Never {read_via_copy::}, val: Value() } -+ unreachable; // scope 1 at $DIR/lower_intrinsics.rs:+1:14: +1:48 + StorageLive(_2); + _2 = &raw const (*_1); +- _0 = read_via_copy::(move _2) -> unwind unreachable; ++ unreachable; } } diff --git a/tests/mir-opt/lower_intrinsics.read_via_copy_uninhabited.LowerIntrinsics.panic-unwind.diff b/tests/mir-opt/lower_intrinsics.read_via_copy_uninhabited.LowerIntrinsics.panic-unwind.diff index f64bc9dcf620c..95a4a83d66386 100644 --- a/tests/mir-opt/lower_intrinsics.read_via_copy_uninhabited.LowerIntrinsics.panic-unwind.diff +++ b/tests/mir-opt/lower_intrinsics.read_via_copy_uninhabited.LowerIntrinsics.panic-unwind.diff @@ -2,20 +2,17 @@ + // MIR for `read_via_copy_uninhabited` after LowerIntrinsics fn read_via_copy_uninhabited(_1: &Never) -> Never { - debug r => _1; // in scope 0 at $DIR/lower_intrinsics.rs:+0:34: +0:35 - let mut _0: Never; // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:48: +0:53 - let mut _2: *const Never; // in scope 0 at $DIR/lower_intrinsics.rs:+1:46: +1:47 + debug r => _1; + let mut _0: Never; + let mut _2: *const Never; scope 1 { } bb0: { - StorageLive(_2); // scope 1 at $DIR/lower_intrinsics.rs:+1:46: +1:47 - _2 = &raw const (*_1); // scope 1 at $DIR/lower_intrinsics.rs:+1:46: +1:47 -- _0 = read_via_copy::(move _2) -> unwind unreachable; // scope 1 at $DIR/lower_intrinsics.rs:+1:14: +1:48 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:130:14: 130:45 -- // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(*const Never) -> Never {read_via_copy::}, val: Value() } -+ unreachable; // scope 1 at $DIR/lower_intrinsics.rs:+1:14: +1:48 + StorageLive(_2); + _2 = &raw const (*_1); +- _0 = read_via_copy::(move _2) -> unwind unreachable; ++ unreachable; } } diff --git a/tests/mir-opt/lower_intrinsics.size_of.LowerIntrinsics.panic-abort.diff b/tests/mir-opt/lower_intrinsics.size_of.LowerIntrinsics.panic-abort.diff index a880df6a5c236..a547bdf3737b9 100644 --- a/tests/mir-opt/lower_intrinsics.size_of.LowerIntrinsics.panic-abort.diff +++ b/tests/mir-opt/lower_intrinsics.size_of.LowerIntrinsics.panic-abort.diff @@ -2,19 +2,16 @@ + // MIR for `size_of` after LowerIntrinsics fn size_of() -> usize { - let mut _0: usize; // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:24: +0:29 + let mut _0: usize; bb0: { -- _0 = std::intrinsics::size_of::() -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/lower_intrinsics.rs:+1:5: +1:37 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:22:5: 22:35 -- // + literal: Const { ty: extern "rust-intrinsic" fn() -> usize {std::intrinsics::size_of::}, val: Value() } -+ _0 = SizeOf(T); // scope 0 at $DIR/lower_intrinsics.rs:+1:5: +1:37 -+ goto -> bb1; // scope 0 at $DIR/lower_intrinsics.rs:+1:5: +1:37 +- _0 = std::intrinsics::size_of::() -> [return: bb1, unwind unreachable]; ++ _0 = SizeOf(T); ++ goto -> bb1; } bb1: { - return; // scope 0 at $DIR/lower_intrinsics.rs:+2:2: +2:2 + return; } } diff --git a/tests/mir-opt/lower_intrinsics.size_of.LowerIntrinsics.panic-unwind.diff b/tests/mir-opt/lower_intrinsics.size_of.LowerIntrinsics.panic-unwind.diff index a880df6a5c236..a547bdf3737b9 100644 --- a/tests/mir-opt/lower_intrinsics.size_of.LowerIntrinsics.panic-unwind.diff +++ b/tests/mir-opt/lower_intrinsics.size_of.LowerIntrinsics.panic-unwind.diff @@ -2,19 +2,16 @@ + // MIR for `size_of` after LowerIntrinsics fn size_of() -> usize { - let mut _0: usize; // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:24: +0:29 + let mut _0: usize; bb0: { -- _0 = std::intrinsics::size_of::() -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/lower_intrinsics.rs:+1:5: +1:37 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:22:5: 22:35 -- // + literal: Const { ty: extern "rust-intrinsic" fn() -> usize {std::intrinsics::size_of::}, val: Value() } -+ _0 = SizeOf(T); // scope 0 at $DIR/lower_intrinsics.rs:+1:5: +1:37 -+ goto -> bb1; // scope 0 at $DIR/lower_intrinsics.rs:+1:5: +1:37 +- _0 = std::intrinsics::size_of::() -> [return: bb1, unwind unreachable]; ++ _0 = SizeOf(T); ++ goto -> bb1; } bb1: { - return; // scope 0 at $DIR/lower_intrinsics.rs:+2:2: +2:2 + return; } } diff --git a/tests/mir-opt/lower_intrinsics.transmute_inhabited.LowerIntrinsics.panic-abort.diff b/tests/mir-opt/lower_intrinsics.transmute_inhabited.LowerIntrinsics.panic-abort.diff index cde7c64c57a56..3b4051e4ae2d7 100644 --- a/tests/mir-opt/lower_intrinsics.transmute_inhabited.LowerIntrinsics.panic-abort.diff +++ b/tests/mir-opt/lower_intrinsics.transmute_inhabited.LowerIntrinsics.panic-abort.diff @@ -2,26 +2,23 @@ + // MIR for `transmute_inhabited` after LowerIntrinsics fn transmute_inhabited(_1: std::cmp::Ordering) -> i8 { - debug c => _1; // in scope 0 at $DIR/lower_intrinsics.rs:+0:28: +0:29 - let mut _0: i8; // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:54: +0:56 - let mut _2: std::cmp::Ordering; // in scope 0 at $DIR/lower_intrinsics.rs:+1:34: +1:35 + debug c => _1; + let mut _0: i8; + let mut _2: std::cmp::Ordering; scope 1 { } bb0: { - StorageLive(_2); // scope 1 at $DIR/lower_intrinsics.rs:+1:34: +1:35 - _2 = _1; // scope 1 at $DIR/lower_intrinsics.rs:+1:34: +1:35 -- _0 = transmute::(move _2) -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/lower_intrinsics.rs:+1:14: +1:36 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:49:14: 49:33 -- // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(std::cmp::Ordering) -> i8 {transmute::}, val: Value() } -+ _0 = move _2 as i8 (Transmute); // scope 1 at $DIR/lower_intrinsics.rs:+1:14: +1:36 -+ goto -> bb1; // scope 1 at $DIR/lower_intrinsics.rs:+1:14: +1:36 + StorageLive(_2); + _2 = _1; +- _0 = transmute::(move _2) -> [return: bb1, unwind unreachable]; ++ _0 = move _2 as i8 (Transmute); ++ goto -> bb1; } bb1: { - StorageDead(_2); // scope 1 at $DIR/lower_intrinsics.rs:+1:35: +1:36 - return; // scope 0 at $DIR/lower_intrinsics.rs:+2:2: +2:2 + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/lower_intrinsics.transmute_inhabited.LowerIntrinsics.panic-unwind.diff b/tests/mir-opt/lower_intrinsics.transmute_inhabited.LowerIntrinsics.panic-unwind.diff index cde7c64c57a56..3b4051e4ae2d7 100644 --- a/tests/mir-opt/lower_intrinsics.transmute_inhabited.LowerIntrinsics.panic-unwind.diff +++ b/tests/mir-opt/lower_intrinsics.transmute_inhabited.LowerIntrinsics.panic-unwind.diff @@ -2,26 +2,23 @@ + // MIR for `transmute_inhabited` after LowerIntrinsics fn transmute_inhabited(_1: std::cmp::Ordering) -> i8 { - debug c => _1; // in scope 0 at $DIR/lower_intrinsics.rs:+0:28: +0:29 - let mut _0: i8; // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:54: +0:56 - let mut _2: std::cmp::Ordering; // in scope 0 at $DIR/lower_intrinsics.rs:+1:34: +1:35 + debug c => _1; + let mut _0: i8; + let mut _2: std::cmp::Ordering; scope 1 { } bb0: { - StorageLive(_2); // scope 1 at $DIR/lower_intrinsics.rs:+1:34: +1:35 - _2 = _1; // scope 1 at $DIR/lower_intrinsics.rs:+1:34: +1:35 -- _0 = transmute::(move _2) -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/lower_intrinsics.rs:+1:14: +1:36 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:49:14: 49:33 -- // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(std::cmp::Ordering) -> i8 {transmute::}, val: Value() } -+ _0 = move _2 as i8 (Transmute); // scope 1 at $DIR/lower_intrinsics.rs:+1:14: +1:36 -+ goto -> bb1; // scope 1 at $DIR/lower_intrinsics.rs:+1:14: +1:36 + StorageLive(_2); + _2 = _1; +- _0 = transmute::(move _2) -> [return: bb1, unwind unreachable]; ++ _0 = move _2 as i8 (Transmute); ++ goto -> bb1; } bb1: { - StorageDead(_2); // scope 1 at $DIR/lower_intrinsics.rs:+1:35: +1:36 - return; // scope 0 at $DIR/lower_intrinsics.rs:+2:2: +2:2 + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/lower_intrinsics.transmute_ref_dst.LowerIntrinsics.panic-abort.diff b/tests/mir-opt/lower_intrinsics.transmute_ref_dst.LowerIntrinsics.panic-abort.diff index 6fc0f3d3e3fee..91276a1b5c4da 100644 --- a/tests/mir-opt/lower_intrinsics.transmute_ref_dst.LowerIntrinsics.panic-abort.diff +++ b/tests/mir-opt/lower_intrinsics.transmute_ref_dst.LowerIntrinsics.panic-abort.diff @@ -2,26 +2,23 @@ + // MIR for `transmute_ref_dst` after LowerIntrinsics fn transmute_ref_dst(_1: &T) -> *const T { - debug u => _1; // in scope 0 at $DIR/lower_intrinsics.rs:+0:44: +0:45 - let mut _0: *const T; // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:54: +0:62 - let mut _2: &T; // in scope 0 at $DIR/lower_intrinsics.rs:+1:34: +1:35 + debug u => _1; + let mut _0: *const T; + let mut _2: &T; scope 1 { } bb0: { - StorageLive(_2); // scope 1 at $DIR/lower_intrinsics.rs:+1:34: +1:35 - _2 = _1; // scope 1 at $DIR/lower_intrinsics.rs:+1:34: +1:35 -- _0 = transmute::<&T, *const T>(move _2) -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/lower_intrinsics.rs:+1:14: +1:36 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:59:14: 59:33 -- // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(&T) -> *const T {transmute::<&T, *const T>}, val: Value() } -+ _0 = move _2 as *const T (Transmute); // scope 1 at $DIR/lower_intrinsics.rs:+1:14: +1:36 -+ goto -> bb1; // scope 1 at $DIR/lower_intrinsics.rs:+1:14: +1:36 + StorageLive(_2); + _2 = _1; +- _0 = transmute::<&T, *const T>(move _2) -> [return: bb1, unwind unreachable]; ++ _0 = move _2 as *const T (Transmute); ++ goto -> bb1; } bb1: { - StorageDead(_2); // scope 1 at $DIR/lower_intrinsics.rs:+1:35: +1:36 - return; // scope 0 at $DIR/lower_intrinsics.rs:+2:2: +2:2 + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/lower_intrinsics.transmute_ref_dst.LowerIntrinsics.panic-unwind.diff b/tests/mir-opt/lower_intrinsics.transmute_ref_dst.LowerIntrinsics.panic-unwind.diff index 6fc0f3d3e3fee..91276a1b5c4da 100644 --- a/tests/mir-opt/lower_intrinsics.transmute_ref_dst.LowerIntrinsics.panic-unwind.diff +++ b/tests/mir-opt/lower_intrinsics.transmute_ref_dst.LowerIntrinsics.panic-unwind.diff @@ -2,26 +2,23 @@ + // MIR for `transmute_ref_dst` after LowerIntrinsics fn transmute_ref_dst(_1: &T) -> *const T { - debug u => _1; // in scope 0 at $DIR/lower_intrinsics.rs:+0:44: +0:45 - let mut _0: *const T; // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:54: +0:62 - let mut _2: &T; // in scope 0 at $DIR/lower_intrinsics.rs:+1:34: +1:35 + debug u => _1; + let mut _0: *const T; + let mut _2: &T; scope 1 { } bb0: { - StorageLive(_2); // scope 1 at $DIR/lower_intrinsics.rs:+1:34: +1:35 - _2 = _1; // scope 1 at $DIR/lower_intrinsics.rs:+1:34: +1:35 -- _0 = transmute::<&T, *const T>(move _2) -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/lower_intrinsics.rs:+1:14: +1:36 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:59:14: 59:33 -- // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(&T) -> *const T {transmute::<&T, *const T>}, val: Value() } -+ _0 = move _2 as *const T (Transmute); // scope 1 at $DIR/lower_intrinsics.rs:+1:14: +1:36 -+ goto -> bb1; // scope 1 at $DIR/lower_intrinsics.rs:+1:14: +1:36 + StorageLive(_2); + _2 = _1; +- _0 = transmute::<&T, *const T>(move _2) -> [return: bb1, unwind unreachable]; ++ _0 = move _2 as *const T (Transmute); ++ goto -> bb1; } bb1: { - StorageDead(_2); // scope 1 at $DIR/lower_intrinsics.rs:+1:35: +1:36 - return; // scope 0 at $DIR/lower_intrinsics.rs:+2:2: +2:2 + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/lower_intrinsics.transmute_to_box_uninhabited.LowerIntrinsics.panic-abort.diff b/tests/mir-opt/lower_intrinsics.transmute_to_box_uninhabited.LowerIntrinsics.panic-abort.diff index e6887a382a2d6..49cc8b1afe3e4 100644 --- a/tests/mir-opt/lower_intrinsics.transmute_to_box_uninhabited.LowerIntrinsics.panic-abort.diff +++ b/tests/mir-opt/lower_intrinsics.transmute_to_box_uninhabited.LowerIntrinsics.panic-abort.diff @@ -2,24 +2,21 @@ + // MIR for `transmute_to_box_uninhabited` after LowerIntrinsics fn transmute_to_box_uninhabited() -> ! { - let mut _0: !; // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:49: +0:50 - let _1: std::boxed::Box; // in scope 0 at $DIR/lower_intrinsics.rs:+1:9: +1:10 + let mut _0: !; + let _1: std::boxed::Box; scope 1 { - debug x => _1; // in scope 1 at $DIR/lower_intrinsics.rs:+1:9: +1:10 + debug x => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/lower_intrinsics.rs:+1:9: +1:10 -- _1 = transmute::>(const 1_usize) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/lower_intrinsics.rs:+1:25: +1:52 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:76:25: 76:44 -- // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(usize) -> Box {transmute::>}, val: Value() } -+ _1 = const 1_usize as std::boxed::Box (Transmute); // scope 0 at $DIR/lower_intrinsics.rs:+1:25: +1:52 -+ goto -> bb1; // scope 0 at $DIR/lower_intrinsics.rs:+1:25: +1:52 + StorageLive(_1); +- _1 = transmute::>(const 1_usize) -> [return: bb1, unwind unreachable]; ++ _1 = const 1_usize as std::boxed::Box (Transmute); ++ goto -> bb1; } bb1: { - unreachable; // scope 1 at $DIR/lower_intrinsics.rs:+2:11: +2:13 + unreachable; } } diff --git a/tests/mir-opt/lower_intrinsics.transmute_to_box_uninhabited.LowerIntrinsics.panic-unwind.diff b/tests/mir-opt/lower_intrinsics.transmute_to_box_uninhabited.LowerIntrinsics.panic-unwind.diff index e6887a382a2d6..49cc8b1afe3e4 100644 --- a/tests/mir-opt/lower_intrinsics.transmute_to_box_uninhabited.LowerIntrinsics.panic-unwind.diff +++ b/tests/mir-opt/lower_intrinsics.transmute_to_box_uninhabited.LowerIntrinsics.panic-unwind.diff @@ -2,24 +2,21 @@ + // MIR for `transmute_to_box_uninhabited` after LowerIntrinsics fn transmute_to_box_uninhabited() -> ! { - let mut _0: !; // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:49: +0:50 - let _1: std::boxed::Box; // in scope 0 at $DIR/lower_intrinsics.rs:+1:9: +1:10 + let mut _0: !; + let _1: std::boxed::Box; scope 1 { - debug x => _1; // in scope 1 at $DIR/lower_intrinsics.rs:+1:9: +1:10 + debug x => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/lower_intrinsics.rs:+1:9: +1:10 -- _1 = transmute::>(const 1_usize) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/lower_intrinsics.rs:+1:25: +1:52 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:76:25: 76:44 -- // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(usize) -> Box {transmute::>}, val: Value() } -+ _1 = const 1_usize as std::boxed::Box (Transmute); // scope 0 at $DIR/lower_intrinsics.rs:+1:25: +1:52 -+ goto -> bb1; // scope 0 at $DIR/lower_intrinsics.rs:+1:25: +1:52 + StorageLive(_1); +- _1 = transmute::>(const 1_usize) -> [return: bb1, unwind unreachable]; ++ _1 = const 1_usize as std::boxed::Box (Transmute); ++ goto -> bb1; } bb1: { - unreachable; // scope 1 at $DIR/lower_intrinsics.rs:+2:11: +2:13 + unreachable; } } diff --git a/tests/mir-opt/lower_intrinsics.transmute_to_mut_uninhabited.LowerIntrinsics.panic-abort.diff b/tests/mir-opt/lower_intrinsics.transmute_to_mut_uninhabited.LowerIntrinsics.panic-abort.diff index b2a44b7c56114..94c7ebe1520cb 100644 --- a/tests/mir-opt/lower_intrinsics.transmute_to_mut_uninhabited.LowerIntrinsics.panic-abort.diff +++ b/tests/mir-opt/lower_intrinsics.transmute_to_mut_uninhabited.LowerIntrinsics.panic-abort.diff @@ -2,24 +2,21 @@ + // MIR for `transmute_to_mut_uninhabited` after LowerIntrinsics fn transmute_to_mut_uninhabited() -> ! { - let mut _0: !; // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:49: +0:50 - let _1: &mut Never; // in scope 0 at $DIR/lower_intrinsics.rs:+1:9: +1:10 + let mut _0: !; + let _1: &mut Never; scope 1 { - debug x => _1; // in scope 1 at $DIR/lower_intrinsics.rs:+1:9: +1:10 + debug x => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/lower_intrinsics.rs:+1:9: +1:10 -- _1 = transmute::(const 1_usize) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/lower_intrinsics.rs:+1:25: +1:52 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:70:25: 70:44 -- // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(usize) -> &mut Never {transmute::}, val: Value() } -+ _1 = const 1_usize as &mut Never (Transmute); // scope 0 at $DIR/lower_intrinsics.rs:+1:25: +1:52 -+ goto -> bb1; // scope 0 at $DIR/lower_intrinsics.rs:+1:25: +1:52 + StorageLive(_1); +- _1 = transmute::(const 1_usize) -> [return: bb1, unwind unreachable]; ++ _1 = const 1_usize as &mut Never (Transmute); ++ goto -> bb1; } bb1: { - unreachable; // scope 1 at $DIR/lower_intrinsics.rs:+2:11: +2:13 + unreachable; } } diff --git a/tests/mir-opt/lower_intrinsics.transmute_to_mut_uninhabited.LowerIntrinsics.panic-unwind.diff b/tests/mir-opt/lower_intrinsics.transmute_to_mut_uninhabited.LowerIntrinsics.panic-unwind.diff index b2a44b7c56114..94c7ebe1520cb 100644 --- a/tests/mir-opt/lower_intrinsics.transmute_to_mut_uninhabited.LowerIntrinsics.panic-unwind.diff +++ b/tests/mir-opt/lower_intrinsics.transmute_to_mut_uninhabited.LowerIntrinsics.panic-unwind.diff @@ -2,24 +2,21 @@ + // MIR for `transmute_to_mut_uninhabited` after LowerIntrinsics fn transmute_to_mut_uninhabited() -> ! { - let mut _0: !; // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:49: +0:50 - let _1: &mut Never; // in scope 0 at $DIR/lower_intrinsics.rs:+1:9: +1:10 + let mut _0: !; + let _1: &mut Never; scope 1 { - debug x => _1; // in scope 1 at $DIR/lower_intrinsics.rs:+1:9: +1:10 + debug x => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/lower_intrinsics.rs:+1:9: +1:10 -- _1 = transmute::(const 1_usize) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/lower_intrinsics.rs:+1:25: +1:52 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:70:25: 70:44 -- // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(usize) -> &mut Never {transmute::}, val: Value() } -+ _1 = const 1_usize as &mut Never (Transmute); // scope 0 at $DIR/lower_intrinsics.rs:+1:25: +1:52 -+ goto -> bb1; // scope 0 at $DIR/lower_intrinsics.rs:+1:25: +1:52 + StorageLive(_1); +- _1 = transmute::(const 1_usize) -> [return: bb1, unwind unreachable]; ++ _1 = const 1_usize as &mut Never (Transmute); ++ goto -> bb1; } bb1: { - unreachable; // scope 1 at $DIR/lower_intrinsics.rs:+2:11: +2:13 + unreachable; } } diff --git a/tests/mir-opt/lower_intrinsics.transmute_to_ref_uninhabited.LowerIntrinsics.panic-abort.diff b/tests/mir-opt/lower_intrinsics.transmute_to_ref_uninhabited.LowerIntrinsics.panic-abort.diff index c49d3aeff70b6..6576616e0ca27 100644 --- a/tests/mir-opt/lower_intrinsics.transmute_to_ref_uninhabited.LowerIntrinsics.panic-abort.diff +++ b/tests/mir-opt/lower_intrinsics.transmute_to_ref_uninhabited.LowerIntrinsics.panic-abort.diff @@ -2,24 +2,21 @@ + // MIR for `transmute_to_ref_uninhabited` after LowerIntrinsics fn transmute_to_ref_uninhabited() -> ! { - let mut _0: !; // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:49: +0:50 - let _1: &Never; // in scope 0 at $DIR/lower_intrinsics.rs:+1:9: +1:10 + let mut _0: !; + let _1: &Never; scope 1 { - debug x => _1; // in scope 1 at $DIR/lower_intrinsics.rs:+1:9: +1:10 + debug x => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/lower_intrinsics.rs:+1:9: +1:10 -- _1 = transmute::(const 1_usize) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/lower_intrinsics.rs:+1:21: +1:48 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:64:21: 64:40 -- // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(usize) -> &Never {transmute::}, val: Value() } -+ _1 = const 1_usize as &Never (Transmute); // scope 0 at $DIR/lower_intrinsics.rs:+1:21: +1:48 -+ goto -> bb1; // scope 0 at $DIR/lower_intrinsics.rs:+1:21: +1:48 + StorageLive(_1); +- _1 = transmute::(const 1_usize) -> [return: bb1, unwind unreachable]; ++ _1 = const 1_usize as &Never (Transmute); ++ goto -> bb1; } bb1: { - unreachable; // scope 1 at $DIR/lower_intrinsics.rs:+2:11: +2:13 + unreachable; } } diff --git a/tests/mir-opt/lower_intrinsics.transmute_to_ref_uninhabited.LowerIntrinsics.panic-unwind.diff b/tests/mir-opt/lower_intrinsics.transmute_to_ref_uninhabited.LowerIntrinsics.panic-unwind.diff index c49d3aeff70b6..6576616e0ca27 100644 --- a/tests/mir-opt/lower_intrinsics.transmute_to_ref_uninhabited.LowerIntrinsics.panic-unwind.diff +++ b/tests/mir-opt/lower_intrinsics.transmute_to_ref_uninhabited.LowerIntrinsics.panic-unwind.diff @@ -2,24 +2,21 @@ + // MIR for `transmute_to_ref_uninhabited` after LowerIntrinsics fn transmute_to_ref_uninhabited() -> ! { - let mut _0: !; // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:49: +0:50 - let _1: &Never; // in scope 0 at $DIR/lower_intrinsics.rs:+1:9: +1:10 + let mut _0: !; + let _1: &Never; scope 1 { - debug x => _1; // in scope 1 at $DIR/lower_intrinsics.rs:+1:9: +1:10 + debug x => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/lower_intrinsics.rs:+1:9: +1:10 -- _1 = transmute::(const 1_usize) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/lower_intrinsics.rs:+1:21: +1:48 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:64:21: 64:40 -- // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(usize) -> &Never {transmute::}, val: Value() } -+ _1 = const 1_usize as &Never (Transmute); // scope 0 at $DIR/lower_intrinsics.rs:+1:21: +1:48 -+ goto -> bb1; // scope 0 at $DIR/lower_intrinsics.rs:+1:21: +1:48 + StorageLive(_1); +- _1 = transmute::(const 1_usize) -> [return: bb1, unwind unreachable]; ++ _1 = const 1_usize as &Never (Transmute); ++ goto -> bb1; } bb1: { - unreachable; // scope 1 at $DIR/lower_intrinsics.rs:+2:11: +2:13 + unreachable; } } diff --git a/tests/mir-opt/lower_intrinsics.transmute_uninhabited.LowerIntrinsics.panic-abort.diff b/tests/mir-opt/lower_intrinsics.transmute_uninhabited.LowerIntrinsics.panic-abort.diff index 06759d74a3205..792c77d575b6f 100644 --- a/tests/mir-opt/lower_intrinsics.transmute_uninhabited.LowerIntrinsics.panic-abort.diff +++ b/tests/mir-opt/lower_intrinsics.transmute_uninhabited.LowerIntrinsics.panic-abort.diff @@ -2,21 +2,18 @@ + // MIR for `transmute_uninhabited` after LowerIntrinsics fn transmute_uninhabited(_1: ()) -> Never { - debug u => _1; // in scope 0 at $DIR/lower_intrinsics.rs:+0:37: +0:38 - let mut _0: Never; // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:47: +0:52 - let mut _2: (); // in scope 0 at $DIR/lower_intrinsics.rs:+1:47: +1:48 + debug u => _1; + let mut _0: Never; + let mut _2: (); scope 1 { } bb0: { - StorageLive(_2); // scope 1 at $DIR/lower_intrinsics.rs:+1:47: +1:48 - _2 = _1; // scope 1 at $DIR/lower_intrinsics.rs:+1:47: +1:48 -- _0 = transmute::<(), Never>(move _2) -> unwind unreachable; // scope 1 at $DIR/lower_intrinsics.rs:+1:14: +1:49 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:54:14: 54:46 -- // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(()) -> Never {transmute::<(), Never>}, val: Value() } -+ _0 = move _2 as Never (Transmute); // scope 1 at $DIR/lower_intrinsics.rs:+1:14: +1:49 -+ unreachable; // scope 1 at $DIR/lower_intrinsics.rs:+1:14: +1:49 + StorageLive(_2); + _2 = _1; +- _0 = transmute::<(), Never>(move _2) -> unwind unreachable; ++ _0 = move _2 as Never (Transmute); ++ unreachable; } } diff --git a/tests/mir-opt/lower_intrinsics.transmute_uninhabited.LowerIntrinsics.panic-unwind.diff b/tests/mir-opt/lower_intrinsics.transmute_uninhabited.LowerIntrinsics.panic-unwind.diff index 06759d74a3205..792c77d575b6f 100644 --- a/tests/mir-opt/lower_intrinsics.transmute_uninhabited.LowerIntrinsics.panic-unwind.diff +++ b/tests/mir-opt/lower_intrinsics.transmute_uninhabited.LowerIntrinsics.panic-unwind.diff @@ -2,21 +2,18 @@ + // MIR for `transmute_uninhabited` after LowerIntrinsics fn transmute_uninhabited(_1: ()) -> Never { - debug u => _1; // in scope 0 at $DIR/lower_intrinsics.rs:+0:37: +0:38 - let mut _0: Never; // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:47: +0:52 - let mut _2: (); // in scope 0 at $DIR/lower_intrinsics.rs:+1:47: +1:48 + debug u => _1; + let mut _0: Never; + let mut _2: (); scope 1 { } bb0: { - StorageLive(_2); // scope 1 at $DIR/lower_intrinsics.rs:+1:47: +1:48 - _2 = _1; // scope 1 at $DIR/lower_intrinsics.rs:+1:47: +1:48 -- _0 = transmute::<(), Never>(move _2) -> unwind unreachable; // scope 1 at $DIR/lower_intrinsics.rs:+1:14: +1:49 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:54:14: 54:46 -- // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(()) -> Never {transmute::<(), Never>}, val: Value() } -+ _0 = move _2 as Never (Transmute); // scope 1 at $DIR/lower_intrinsics.rs:+1:14: +1:49 -+ unreachable; // scope 1 at $DIR/lower_intrinsics.rs:+1:14: +1:49 + StorageLive(_2); + _2 = _1; +- _0 = transmute::<(), Never>(move _2) -> unwind unreachable; ++ _0 = move _2 as Never (Transmute); ++ unreachable; } } diff --git a/tests/mir-opt/lower_intrinsics.unchecked.LowerIntrinsics.panic-abort.diff b/tests/mir-opt/lower_intrinsics.unchecked.LowerIntrinsics.panic-abort.diff index 9bb43d850ebf3..c532d74ced053 100644 --- a/tests/mir-opt/lower_intrinsics.unchecked.LowerIntrinsics.panic-abort.diff +++ b/tests/mir-opt/lower_intrinsics.unchecked.LowerIntrinsics.panic-abort.diff @@ -2,59 +2,53 @@ + // MIR for `unchecked` after LowerIntrinsics fn unchecked(_1: i32, _2: i32) -> () { - debug a => _1; // in scope 0 at $DIR/lower_intrinsics.rs:+0:25: +0:26 - debug b => _2; // in scope 0 at $DIR/lower_intrinsics.rs:+0:33: +0:34 - let mut _0: (); // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:41: +0:41 - let _3: i32; // in scope 0 at $DIR/lower_intrinsics.rs:+1:9: +1:11 - let mut _4: i32; // in scope 0 at $DIR/lower_intrinsics.rs:+1:46: +1:47 - let mut _5: i32; // in scope 0 at $DIR/lower_intrinsics.rs:+1:49: +1:50 - let mut _7: i32; // in scope 0 at $DIR/lower_intrinsics.rs:+2:46: +2:47 - let mut _8: i32; // in scope 0 at $DIR/lower_intrinsics.rs:+2:49: +2:50 + debug a => _1; + debug b => _2; + let mut _0: (); + let _3: i32; + let mut _4: i32; + let mut _5: i32; + let mut _7: i32; + let mut _8: i32; scope 1 { - debug _x => _3; // in scope 1 at $DIR/lower_intrinsics.rs:+1:9: +1:11 - let _6: i32; // in scope 1 at $DIR/lower_intrinsics.rs:+2:9: +2:11 + debug _x => _3; + let _6: i32; scope 2 { - debug _y => _6; // in scope 2 at $DIR/lower_intrinsics.rs:+2:9: +2:11 + debug _y => _6; } } bb0: { - StorageLive(_3); // scope 0 at $DIR/lower_intrinsics.rs:+1:9: +1:11 - StorageLive(_4); // scope 0 at $DIR/lower_intrinsics.rs:+1:46: +1:47 - _4 = _1; // scope 0 at $DIR/lower_intrinsics.rs:+1:46: +1:47 - StorageLive(_5); // scope 0 at $DIR/lower_intrinsics.rs:+1:49: +1:50 - _5 = _2; // scope 0 at $DIR/lower_intrinsics.rs:+1:49: +1:50 -- _3 = unchecked_div::(move _4, move _5) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/lower_intrinsics.rs:+1:14: +1:51 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:16:14: 16:45 -- // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(i32, i32) -> i32 {unchecked_div::}, val: Value() } -+ _3 = Div(move _4, move _5); // scope 0 at $DIR/lower_intrinsics.rs:+1:14: +1:51 -+ goto -> bb1; // scope 0 at $DIR/lower_intrinsics.rs:+1:14: +1:51 + StorageLive(_3); + StorageLive(_4); + _4 = _1; + StorageLive(_5); + _5 = _2; +- _3 = unchecked_div::(move _4, move _5) -> [return: bb1, unwind unreachable]; ++ _3 = Div(move _4, move _5); ++ goto -> bb1; } bb1: { - StorageDead(_5); // scope 0 at $DIR/lower_intrinsics.rs:+1:50: +1:51 - StorageDead(_4); // scope 0 at $DIR/lower_intrinsics.rs:+1:50: +1:51 - StorageLive(_6); // scope 1 at $DIR/lower_intrinsics.rs:+2:9: +2:11 - StorageLive(_7); // scope 1 at $DIR/lower_intrinsics.rs:+2:46: +2:47 - _7 = _1; // scope 1 at $DIR/lower_intrinsics.rs:+2:46: +2:47 - StorageLive(_8); // scope 1 at $DIR/lower_intrinsics.rs:+2:49: +2:50 - _8 = _2; // scope 1 at $DIR/lower_intrinsics.rs:+2:49: +2:50 -- _6 = unchecked_rem::(move _7, move _8) -> [return: bb2, unwind unreachable]; // scope 1 at $DIR/lower_intrinsics.rs:+2:14: +2:51 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:17:14: 17:45 -- // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(i32, i32) -> i32 {unchecked_rem::}, val: Value() } -+ _6 = Rem(move _7, move _8); // scope 1 at $DIR/lower_intrinsics.rs:+2:14: +2:51 -+ goto -> bb2; // scope 1 at $DIR/lower_intrinsics.rs:+2:14: +2:51 + StorageDead(_5); + StorageDead(_4); + StorageLive(_6); + StorageLive(_7); + _7 = _1; + StorageLive(_8); + _8 = _2; +- _6 = unchecked_rem::(move _7, move _8) -> [return: bb2, unwind unreachable]; ++ _6 = Rem(move _7, move _8); ++ goto -> bb2; } bb2: { - StorageDead(_8); // scope 1 at $DIR/lower_intrinsics.rs:+2:50: +2:51 - StorageDead(_7); // scope 1 at $DIR/lower_intrinsics.rs:+2:50: +2:51 - _0 = const (); // scope 0 at $DIR/lower_intrinsics.rs:+0:41: +3:2 - StorageDead(_6); // scope 1 at $DIR/lower_intrinsics.rs:+3:1: +3:2 - StorageDead(_3); // scope 0 at $DIR/lower_intrinsics.rs:+3:1: +3:2 - return; // scope 0 at $DIR/lower_intrinsics.rs:+3:2: +3:2 + StorageDead(_8); + StorageDead(_7); + _0 = const (); + StorageDead(_6); + StorageDead(_3); + return; } } diff --git a/tests/mir-opt/lower_intrinsics.unchecked.LowerIntrinsics.panic-unwind.diff b/tests/mir-opt/lower_intrinsics.unchecked.LowerIntrinsics.panic-unwind.diff index 9bb43d850ebf3..c532d74ced053 100644 --- a/tests/mir-opt/lower_intrinsics.unchecked.LowerIntrinsics.panic-unwind.diff +++ b/tests/mir-opt/lower_intrinsics.unchecked.LowerIntrinsics.panic-unwind.diff @@ -2,59 +2,53 @@ + // MIR for `unchecked` after LowerIntrinsics fn unchecked(_1: i32, _2: i32) -> () { - debug a => _1; // in scope 0 at $DIR/lower_intrinsics.rs:+0:25: +0:26 - debug b => _2; // in scope 0 at $DIR/lower_intrinsics.rs:+0:33: +0:34 - let mut _0: (); // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:41: +0:41 - let _3: i32; // in scope 0 at $DIR/lower_intrinsics.rs:+1:9: +1:11 - let mut _4: i32; // in scope 0 at $DIR/lower_intrinsics.rs:+1:46: +1:47 - let mut _5: i32; // in scope 0 at $DIR/lower_intrinsics.rs:+1:49: +1:50 - let mut _7: i32; // in scope 0 at $DIR/lower_intrinsics.rs:+2:46: +2:47 - let mut _8: i32; // in scope 0 at $DIR/lower_intrinsics.rs:+2:49: +2:50 + debug a => _1; + debug b => _2; + let mut _0: (); + let _3: i32; + let mut _4: i32; + let mut _5: i32; + let mut _7: i32; + let mut _8: i32; scope 1 { - debug _x => _3; // in scope 1 at $DIR/lower_intrinsics.rs:+1:9: +1:11 - let _6: i32; // in scope 1 at $DIR/lower_intrinsics.rs:+2:9: +2:11 + debug _x => _3; + let _6: i32; scope 2 { - debug _y => _6; // in scope 2 at $DIR/lower_intrinsics.rs:+2:9: +2:11 + debug _y => _6; } } bb0: { - StorageLive(_3); // scope 0 at $DIR/lower_intrinsics.rs:+1:9: +1:11 - StorageLive(_4); // scope 0 at $DIR/lower_intrinsics.rs:+1:46: +1:47 - _4 = _1; // scope 0 at $DIR/lower_intrinsics.rs:+1:46: +1:47 - StorageLive(_5); // scope 0 at $DIR/lower_intrinsics.rs:+1:49: +1:50 - _5 = _2; // scope 0 at $DIR/lower_intrinsics.rs:+1:49: +1:50 -- _3 = unchecked_div::(move _4, move _5) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/lower_intrinsics.rs:+1:14: +1:51 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:16:14: 16:45 -- // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(i32, i32) -> i32 {unchecked_div::}, val: Value() } -+ _3 = Div(move _4, move _5); // scope 0 at $DIR/lower_intrinsics.rs:+1:14: +1:51 -+ goto -> bb1; // scope 0 at $DIR/lower_intrinsics.rs:+1:14: +1:51 + StorageLive(_3); + StorageLive(_4); + _4 = _1; + StorageLive(_5); + _5 = _2; +- _3 = unchecked_div::(move _4, move _5) -> [return: bb1, unwind unreachable]; ++ _3 = Div(move _4, move _5); ++ goto -> bb1; } bb1: { - StorageDead(_5); // scope 0 at $DIR/lower_intrinsics.rs:+1:50: +1:51 - StorageDead(_4); // scope 0 at $DIR/lower_intrinsics.rs:+1:50: +1:51 - StorageLive(_6); // scope 1 at $DIR/lower_intrinsics.rs:+2:9: +2:11 - StorageLive(_7); // scope 1 at $DIR/lower_intrinsics.rs:+2:46: +2:47 - _7 = _1; // scope 1 at $DIR/lower_intrinsics.rs:+2:46: +2:47 - StorageLive(_8); // scope 1 at $DIR/lower_intrinsics.rs:+2:49: +2:50 - _8 = _2; // scope 1 at $DIR/lower_intrinsics.rs:+2:49: +2:50 -- _6 = unchecked_rem::(move _7, move _8) -> [return: bb2, unwind unreachable]; // scope 1 at $DIR/lower_intrinsics.rs:+2:14: +2:51 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:17:14: 17:45 -- // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(i32, i32) -> i32 {unchecked_rem::}, val: Value() } -+ _6 = Rem(move _7, move _8); // scope 1 at $DIR/lower_intrinsics.rs:+2:14: +2:51 -+ goto -> bb2; // scope 1 at $DIR/lower_intrinsics.rs:+2:14: +2:51 + StorageDead(_5); + StorageDead(_4); + StorageLive(_6); + StorageLive(_7); + _7 = _1; + StorageLive(_8); + _8 = _2; +- _6 = unchecked_rem::(move _7, move _8) -> [return: bb2, unwind unreachable]; ++ _6 = Rem(move _7, move _8); ++ goto -> bb2; } bb2: { - StorageDead(_8); // scope 1 at $DIR/lower_intrinsics.rs:+2:50: +2:51 - StorageDead(_7); // scope 1 at $DIR/lower_intrinsics.rs:+2:50: +2:51 - _0 = const (); // scope 0 at $DIR/lower_intrinsics.rs:+0:41: +3:2 - StorageDead(_6); // scope 1 at $DIR/lower_intrinsics.rs:+3:1: +3:2 - StorageDead(_3); // scope 0 at $DIR/lower_intrinsics.rs:+3:1: +3:2 - return; // scope 0 at $DIR/lower_intrinsics.rs:+3:2: +3:2 + StorageDead(_8); + StorageDead(_7); + _0 = const (); + StorageDead(_6); + StorageDead(_3); + return; } } diff --git a/tests/mir-opt/lower_intrinsics.unreachable.LowerIntrinsics.panic-abort.diff b/tests/mir-opt/lower_intrinsics.unreachable.LowerIntrinsics.panic-abort.diff index 83c9c508bc0b0..f5646e7f1e991 100644 --- a/tests/mir-opt/lower_intrinsics.unreachable.LowerIntrinsics.panic-abort.diff +++ b/tests/mir-opt/lower_intrinsics.unreachable.LowerIntrinsics.panic-abort.diff @@ -2,20 +2,17 @@ + // MIR for `unreachable` after LowerIntrinsics fn unreachable() -> ! { - let mut _0: !; // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:25: +0:26 - let _1: (); // in scope 0 at $DIR/lower_intrinsics.rs:+1:14: +1:45 - let mut _2: !; // in scope 0 at $DIR/lower_intrinsics.rs:+1:14: +1:45 + let mut _0: !; + let _1: (); + let mut _2: !; scope 1 { } bb0: { - StorageLive(_1); // scope 0 at $DIR/lower_intrinsics.rs:+1:5: +1:47 - StorageLive(_2); // scope 1 at $DIR/lower_intrinsics.rs:+1:14: +1:45 -- _2 = std::intrinsics::unreachable() -> unwind unreachable; // scope 1 at $DIR/lower_intrinsics.rs:+1:14: +1:45 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:37:14: 37:43 -- // + literal: Const { ty: unsafe extern "rust-intrinsic" fn() -> ! {std::intrinsics::unreachable}, val: Value() } -+ unreachable; // scope 1 at $DIR/lower_intrinsics.rs:+1:14: +1:45 + StorageLive(_1); + StorageLive(_2); +- _2 = std::intrinsics::unreachable() -> unwind unreachable; ++ unreachable; } } diff --git a/tests/mir-opt/lower_intrinsics.unreachable.LowerIntrinsics.panic-unwind.diff b/tests/mir-opt/lower_intrinsics.unreachable.LowerIntrinsics.panic-unwind.diff index 83c9c508bc0b0..f5646e7f1e991 100644 --- a/tests/mir-opt/lower_intrinsics.unreachable.LowerIntrinsics.panic-unwind.diff +++ b/tests/mir-opt/lower_intrinsics.unreachable.LowerIntrinsics.panic-unwind.diff @@ -2,20 +2,17 @@ + // MIR for `unreachable` after LowerIntrinsics fn unreachable() -> ! { - let mut _0: !; // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:25: +0:26 - let _1: (); // in scope 0 at $DIR/lower_intrinsics.rs:+1:14: +1:45 - let mut _2: !; // in scope 0 at $DIR/lower_intrinsics.rs:+1:14: +1:45 + let mut _0: !; + let _1: (); + let mut _2: !; scope 1 { } bb0: { - StorageLive(_1); // scope 0 at $DIR/lower_intrinsics.rs:+1:5: +1:47 - StorageLive(_2); // scope 1 at $DIR/lower_intrinsics.rs:+1:14: +1:45 -- _2 = std::intrinsics::unreachable() -> unwind unreachable; // scope 1 at $DIR/lower_intrinsics.rs:+1:14: +1:45 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:37:14: 37:43 -- // + literal: Const { ty: unsafe extern "rust-intrinsic" fn() -> ! {std::intrinsics::unreachable}, val: Value() } -+ unreachable; // scope 1 at $DIR/lower_intrinsics.rs:+1:14: +1:45 + StorageLive(_1); + StorageLive(_2); +- _2 = std::intrinsics::unreachable() -> unwind unreachable; ++ unreachable; } } diff --git a/tests/mir-opt/lower_intrinsics.with_overflow.LowerIntrinsics.panic-abort.diff b/tests/mir-opt/lower_intrinsics.with_overflow.LowerIntrinsics.panic-abort.diff index 4ae4466a60038..da84449aaa524 100644 --- a/tests/mir-opt/lower_intrinsics.with_overflow.LowerIntrinsics.panic-abort.diff +++ b/tests/mir-opt/lower_intrinsics.with_overflow.LowerIntrinsics.panic-abort.diff @@ -2,82 +2,73 @@ + // MIR for `with_overflow` after LowerIntrinsics fn with_overflow(_1: i32, _2: i32) -> () { - debug a => _1; // in scope 0 at $DIR/lower_intrinsics.rs:+0:22: +0:23 - debug b => _2; // in scope 0 at $DIR/lower_intrinsics.rs:+0:30: +0:31 - let mut _0: (); // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:38: +0:38 - let _3: (i32, bool); // in scope 0 at $DIR/lower_intrinsics.rs:+1:9: +1:11 - let mut _4: i32; // in scope 0 at $DIR/lower_intrinsics.rs:+1:50: +1:51 - let mut _5: i32; // in scope 0 at $DIR/lower_intrinsics.rs:+1:53: +1:54 - let mut _7: i32; // in scope 0 at $DIR/lower_intrinsics.rs:+2:50: +2:51 - let mut _8: i32; // in scope 0 at $DIR/lower_intrinsics.rs:+2:53: +2:54 - let mut _10: i32; // in scope 0 at $DIR/lower_intrinsics.rs:+3:50: +3:51 - let mut _11: i32; // in scope 0 at $DIR/lower_intrinsics.rs:+3:53: +3:54 + debug a => _1; + debug b => _2; + let mut _0: (); + let _3: (i32, bool); + let mut _4: i32; + let mut _5: i32; + let mut _7: i32; + let mut _8: i32; + let mut _10: i32; + let mut _11: i32; scope 1 { - debug _x => _3; // in scope 1 at $DIR/lower_intrinsics.rs:+1:9: +1:11 - let _6: (i32, bool); // in scope 1 at $DIR/lower_intrinsics.rs:+2:9: +2:11 + debug _x => _3; + let _6: (i32, bool); scope 2 { - debug _y => _6; // in scope 2 at $DIR/lower_intrinsics.rs:+2:9: +2:11 - let _9: (i32, bool); // in scope 2 at $DIR/lower_intrinsics.rs:+3:9: +3:11 + debug _y => _6; + let _9: (i32, bool); scope 3 { - debug _z => _9; // in scope 3 at $DIR/lower_intrinsics.rs:+3:9: +3:11 + debug _z => _9; } } } bb0: { - StorageLive(_3); // scope 0 at $DIR/lower_intrinsics.rs:+1:9: +1:11 - StorageLive(_4); // scope 0 at $DIR/lower_intrinsics.rs:+1:50: +1:51 - _4 = _1; // scope 0 at $DIR/lower_intrinsics.rs:+1:50: +1:51 - StorageLive(_5); // scope 0 at $DIR/lower_intrinsics.rs:+1:53: +1:54 - _5 = _2; // scope 0 at $DIR/lower_intrinsics.rs:+1:53: +1:54 -- _3 = add_with_overflow::(move _4, move _5) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/lower_intrinsics.rs:+1:14: +1:55 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:118:14: 118:49 -- // + literal: Const { ty: extern "rust-intrinsic" fn(i32, i32) -> (i32, bool) {add_with_overflow::}, val: Value() } -+ _3 = CheckedAdd(move _4, move _5); // scope 0 at $DIR/lower_intrinsics.rs:+1:14: +1:55 -+ goto -> bb1; // scope 0 at $DIR/lower_intrinsics.rs:+1:14: +1:55 + StorageLive(_3); + StorageLive(_4); + _4 = _1; + StorageLive(_5); + _5 = _2; +- _3 = add_with_overflow::(move _4, move _5) -> [return: bb1, unwind unreachable]; ++ _3 = CheckedAdd(move _4, move _5); ++ goto -> bb1; } bb1: { - StorageDead(_5); // scope 0 at $DIR/lower_intrinsics.rs:+1:54: +1:55 - StorageDead(_4); // scope 0 at $DIR/lower_intrinsics.rs:+1:54: +1:55 - StorageLive(_6); // scope 1 at $DIR/lower_intrinsics.rs:+2:9: +2:11 - StorageLive(_7); // scope 1 at $DIR/lower_intrinsics.rs:+2:50: +2:51 - _7 = _1; // scope 1 at $DIR/lower_intrinsics.rs:+2:50: +2:51 - StorageLive(_8); // scope 1 at $DIR/lower_intrinsics.rs:+2:53: +2:54 - _8 = _2; // scope 1 at $DIR/lower_intrinsics.rs:+2:53: +2:54 -- _6 = sub_with_overflow::(move _7, move _8) -> [return: bb2, unwind unreachable]; // scope 1 at $DIR/lower_intrinsics.rs:+2:14: +2:55 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:119:14: 119:49 -- // + literal: Const { ty: extern "rust-intrinsic" fn(i32, i32) -> (i32, bool) {sub_with_overflow::}, val: Value() } -+ _6 = CheckedSub(move _7, move _8); // scope 1 at $DIR/lower_intrinsics.rs:+2:14: +2:55 -+ goto -> bb2; // scope 1 at $DIR/lower_intrinsics.rs:+2:14: +2:55 + StorageDead(_5); + StorageDead(_4); + StorageLive(_6); + StorageLive(_7); + _7 = _1; + StorageLive(_8); + _8 = _2; +- _6 = sub_with_overflow::(move _7, move _8) -> [return: bb2, unwind unreachable]; ++ _6 = CheckedSub(move _7, move _8); ++ goto -> bb2; } bb2: { - StorageDead(_8); // scope 1 at $DIR/lower_intrinsics.rs:+2:54: +2:55 - StorageDead(_7); // scope 1 at $DIR/lower_intrinsics.rs:+2:54: +2:55 - StorageLive(_9); // scope 2 at $DIR/lower_intrinsics.rs:+3:9: +3:11 - StorageLive(_10); // scope 2 at $DIR/lower_intrinsics.rs:+3:50: +3:51 - _10 = _1; // scope 2 at $DIR/lower_intrinsics.rs:+3:50: +3:51 - StorageLive(_11); // scope 2 at $DIR/lower_intrinsics.rs:+3:53: +3:54 - _11 = _2; // scope 2 at $DIR/lower_intrinsics.rs:+3:53: +3:54 -- _9 = mul_with_overflow::(move _10, move _11) -> [return: bb3, unwind unreachable]; // scope 2 at $DIR/lower_intrinsics.rs:+3:14: +3:55 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:120:14: 120:49 -- // + literal: Const { ty: extern "rust-intrinsic" fn(i32, i32) -> (i32, bool) {mul_with_overflow::}, val: Value() } -+ _9 = CheckedMul(move _10, move _11); // scope 2 at $DIR/lower_intrinsics.rs:+3:14: +3:55 -+ goto -> bb3; // scope 2 at $DIR/lower_intrinsics.rs:+3:14: +3:55 + StorageDead(_8); + StorageDead(_7); + StorageLive(_9); + StorageLive(_10); + _10 = _1; + StorageLive(_11); + _11 = _2; +- _9 = mul_with_overflow::(move _10, move _11) -> [return: bb3, unwind unreachable]; ++ _9 = CheckedMul(move _10, move _11); ++ goto -> bb3; } bb3: { - StorageDead(_11); // scope 2 at $DIR/lower_intrinsics.rs:+3:54: +3:55 - StorageDead(_10); // scope 2 at $DIR/lower_intrinsics.rs:+3:54: +3:55 - _0 = const (); // scope 0 at $DIR/lower_intrinsics.rs:+0:38: +4:2 - StorageDead(_9); // scope 2 at $DIR/lower_intrinsics.rs:+4:1: +4:2 - StorageDead(_6); // scope 1 at $DIR/lower_intrinsics.rs:+4:1: +4:2 - StorageDead(_3); // scope 0 at $DIR/lower_intrinsics.rs:+4:1: +4:2 - return; // scope 0 at $DIR/lower_intrinsics.rs:+4:2: +4:2 + StorageDead(_11); + StorageDead(_10); + _0 = const (); + StorageDead(_9); + StorageDead(_6); + StorageDead(_3); + return; } } diff --git a/tests/mir-opt/lower_intrinsics.with_overflow.LowerIntrinsics.panic-unwind.diff b/tests/mir-opt/lower_intrinsics.with_overflow.LowerIntrinsics.panic-unwind.diff index 4ae4466a60038..da84449aaa524 100644 --- a/tests/mir-opt/lower_intrinsics.with_overflow.LowerIntrinsics.panic-unwind.diff +++ b/tests/mir-opt/lower_intrinsics.with_overflow.LowerIntrinsics.panic-unwind.diff @@ -2,82 +2,73 @@ + // MIR for `with_overflow` after LowerIntrinsics fn with_overflow(_1: i32, _2: i32) -> () { - debug a => _1; // in scope 0 at $DIR/lower_intrinsics.rs:+0:22: +0:23 - debug b => _2; // in scope 0 at $DIR/lower_intrinsics.rs:+0:30: +0:31 - let mut _0: (); // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:38: +0:38 - let _3: (i32, bool); // in scope 0 at $DIR/lower_intrinsics.rs:+1:9: +1:11 - let mut _4: i32; // in scope 0 at $DIR/lower_intrinsics.rs:+1:50: +1:51 - let mut _5: i32; // in scope 0 at $DIR/lower_intrinsics.rs:+1:53: +1:54 - let mut _7: i32; // in scope 0 at $DIR/lower_intrinsics.rs:+2:50: +2:51 - let mut _8: i32; // in scope 0 at $DIR/lower_intrinsics.rs:+2:53: +2:54 - let mut _10: i32; // in scope 0 at $DIR/lower_intrinsics.rs:+3:50: +3:51 - let mut _11: i32; // in scope 0 at $DIR/lower_intrinsics.rs:+3:53: +3:54 + debug a => _1; + debug b => _2; + let mut _0: (); + let _3: (i32, bool); + let mut _4: i32; + let mut _5: i32; + let mut _7: i32; + let mut _8: i32; + let mut _10: i32; + let mut _11: i32; scope 1 { - debug _x => _3; // in scope 1 at $DIR/lower_intrinsics.rs:+1:9: +1:11 - let _6: (i32, bool); // in scope 1 at $DIR/lower_intrinsics.rs:+2:9: +2:11 + debug _x => _3; + let _6: (i32, bool); scope 2 { - debug _y => _6; // in scope 2 at $DIR/lower_intrinsics.rs:+2:9: +2:11 - let _9: (i32, bool); // in scope 2 at $DIR/lower_intrinsics.rs:+3:9: +3:11 + debug _y => _6; + let _9: (i32, bool); scope 3 { - debug _z => _9; // in scope 3 at $DIR/lower_intrinsics.rs:+3:9: +3:11 + debug _z => _9; } } } bb0: { - StorageLive(_3); // scope 0 at $DIR/lower_intrinsics.rs:+1:9: +1:11 - StorageLive(_4); // scope 0 at $DIR/lower_intrinsics.rs:+1:50: +1:51 - _4 = _1; // scope 0 at $DIR/lower_intrinsics.rs:+1:50: +1:51 - StorageLive(_5); // scope 0 at $DIR/lower_intrinsics.rs:+1:53: +1:54 - _5 = _2; // scope 0 at $DIR/lower_intrinsics.rs:+1:53: +1:54 -- _3 = add_with_overflow::(move _4, move _5) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/lower_intrinsics.rs:+1:14: +1:55 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:118:14: 118:49 -- // + literal: Const { ty: extern "rust-intrinsic" fn(i32, i32) -> (i32, bool) {add_with_overflow::}, val: Value() } -+ _3 = CheckedAdd(move _4, move _5); // scope 0 at $DIR/lower_intrinsics.rs:+1:14: +1:55 -+ goto -> bb1; // scope 0 at $DIR/lower_intrinsics.rs:+1:14: +1:55 + StorageLive(_3); + StorageLive(_4); + _4 = _1; + StorageLive(_5); + _5 = _2; +- _3 = add_with_overflow::(move _4, move _5) -> [return: bb1, unwind unreachable]; ++ _3 = CheckedAdd(move _4, move _5); ++ goto -> bb1; } bb1: { - StorageDead(_5); // scope 0 at $DIR/lower_intrinsics.rs:+1:54: +1:55 - StorageDead(_4); // scope 0 at $DIR/lower_intrinsics.rs:+1:54: +1:55 - StorageLive(_6); // scope 1 at $DIR/lower_intrinsics.rs:+2:9: +2:11 - StorageLive(_7); // scope 1 at $DIR/lower_intrinsics.rs:+2:50: +2:51 - _7 = _1; // scope 1 at $DIR/lower_intrinsics.rs:+2:50: +2:51 - StorageLive(_8); // scope 1 at $DIR/lower_intrinsics.rs:+2:53: +2:54 - _8 = _2; // scope 1 at $DIR/lower_intrinsics.rs:+2:53: +2:54 -- _6 = sub_with_overflow::(move _7, move _8) -> [return: bb2, unwind unreachable]; // scope 1 at $DIR/lower_intrinsics.rs:+2:14: +2:55 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:119:14: 119:49 -- // + literal: Const { ty: extern "rust-intrinsic" fn(i32, i32) -> (i32, bool) {sub_with_overflow::}, val: Value() } -+ _6 = CheckedSub(move _7, move _8); // scope 1 at $DIR/lower_intrinsics.rs:+2:14: +2:55 -+ goto -> bb2; // scope 1 at $DIR/lower_intrinsics.rs:+2:14: +2:55 + StorageDead(_5); + StorageDead(_4); + StorageLive(_6); + StorageLive(_7); + _7 = _1; + StorageLive(_8); + _8 = _2; +- _6 = sub_with_overflow::(move _7, move _8) -> [return: bb2, unwind unreachable]; ++ _6 = CheckedSub(move _7, move _8); ++ goto -> bb2; } bb2: { - StorageDead(_8); // scope 1 at $DIR/lower_intrinsics.rs:+2:54: +2:55 - StorageDead(_7); // scope 1 at $DIR/lower_intrinsics.rs:+2:54: +2:55 - StorageLive(_9); // scope 2 at $DIR/lower_intrinsics.rs:+3:9: +3:11 - StorageLive(_10); // scope 2 at $DIR/lower_intrinsics.rs:+3:50: +3:51 - _10 = _1; // scope 2 at $DIR/lower_intrinsics.rs:+3:50: +3:51 - StorageLive(_11); // scope 2 at $DIR/lower_intrinsics.rs:+3:53: +3:54 - _11 = _2; // scope 2 at $DIR/lower_intrinsics.rs:+3:53: +3:54 -- _9 = mul_with_overflow::(move _10, move _11) -> [return: bb3, unwind unreachable]; // scope 2 at $DIR/lower_intrinsics.rs:+3:14: +3:55 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:120:14: 120:49 -- // + literal: Const { ty: extern "rust-intrinsic" fn(i32, i32) -> (i32, bool) {mul_with_overflow::}, val: Value() } -+ _9 = CheckedMul(move _10, move _11); // scope 2 at $DIR/lower_intrinsics.rs:+3:14: +3:55 -+ goto -> bb3; // scope 2 at $DIR/lower_intrinsics.rs:+3:14: +3:55 + StorageDead(_8); + StorageDead(_7); + StorageLive(_9); + StorageLive(_10); + _10 = _1; + StorageLive(_11); + _11 = _2; +- _9 = mul_with_overflow::(move _10, move _11) -> [return: bb3, unwind unreachable]; ++ _9 = CheckedMul(move _10, move _11); ++ goto -> bb3; } bb3: { - StorageDead(_11); // scope 2 at $DIR/lower_intrinsics.rs:+3:54: +3:55 - StorageDead(_10); // scope 2 at $DIR/lower_intrinsics.rs:+3:54: +3:55 - _0 = const (); // scope 0 at $DIR/lower_intrinsics.rs:+0:38: +4:2 - StorageDead(_9); // scope 2 at $DIR/lower_intrinsics.rs:+4:1: +4:2 - StorageDead(_6); // scope 1 at $DIR/lower_intrinsics.rs:+4:1: +4:2 - StorageDead(_3); // scope 0 at $DIR/lower_intrinsics.rs:+4:1: +4:2 - return; // scope 0 at $DIR/lower_intrinsics.rs:+4:2: +4:2 + StorageDead(_11); + StorageDead(_10); + _0 = const (); + StorageDead(_9); + StorageDead(_6); + StorageDead(_3); + return; } } diff --git a/tests/mir-opt/lower_intrinsics.wrapping.LowerIntrinsics.panic-abort.diff b/tests/mir-opt/lower_intrinsics.wrapping.LowerIntrinsics.panic-abort.diff index 217f27efe5cc9..2acb193e054d5 100644 --- a/tests/mir-opt/lower_intrinsics.wrapping.LowerIntrinsics.panic-abort.diff +++ b/tests/mir-opt/lower_intrinsics.wrapping.LowerIntrinsics.panic-abort.diff @@ -2,82 +2,73 @@ + // MIR for `wrapping` after LowerIntrinsics fn wrapping(_1: i32, _2: i32) -> () { - debug a => _1; // in scope 0 at $DIR/lower_intrinsics.rs:+0:17: +0:18 - debug b => _2; // in scope 0 at $DIR/lower_intrinsics.rs:+0:25: +0:26 - let mut _0: (); // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:33: +0:33 - let _3: i32; // in scope 0 at $DIR/lower_intrinsics.rs:+1:9: +1:11 - let mut _4: i32; // in scope 0 at $DIR/lower_intrinsics.rs:+1:45: +1:46 - let mut _5: i32; // in scope 0 at $DIR/lower_intrinsics.rs:+1:48: +1:49 - let mut _7: i32; // in scope 0 at $DIR/lower_intrinsics.rs:+2:45: +2:46 - let mut _8: i32; // in scope 0 at $DIR/lower_intrinsics.rs:+2:48: +2:49 - let mut _10: i32; // in scope 0 at $DIR/lower_intrinsics.rs:+3:45: +3:46 - let mut _11: i32; // in scope 0 at $DIR/lower_intrinsics.rs:+3:48: +3:49 + debug a => _1; + debug b => _2; + let mut _0: (); + let _3: i32; + let mut _4: i32; + let mut _5: i32; + let mut _7: i32; + let mut _8: i32; + let mut _10: i32; + let mut _11: i32; scope 1 { - debug _x => _3; // in scope 1 at $DIR/lower_intrinsics.rs:+1:9: +1:11 - let _6: i32; // in scope 1 at $DIR/lower_intrinsics.rs:+2:9: +2:11 + debug _x => _3; + let _6: i32; scope 2 { - debug _y => _6; // in scope 2 at $DIR/lower_intrinsics.rs:+2:9: +2:11 - let _9: i32; // in scope 2 at $DIR/lower_intrinsics.rs:+3:9: +3:11 + debug _y => _6; + let _9: i32; scope 3 { - debug _z => _9; // in scope 3 at $DIR/lower_intrinsics.rs:+3:9: +3:11 + debug _z => _9; } } } bb0: { - StorageLive(_3); // scope 0 at $DIR/lower_intrinsics.rs:+1:9: +1:11 - StorageLive(_4); // scope 0 at $DIR/lower_intrinsics.rs:+1:45: +1:46 - _4 = _1; // scope 0 at $DIR/lower_intrinsics.rs:+1:45: +1:46 - StorageLive(_5); // scope 0 at $DIR/lower_intrinsics.rs:+1:48: +1:49 - _5 = _2; // scope 0 at $DIR/lower_intrinsics.rs:+1:48: +1:49 -- _3 = std::intrinsics::wrapping_add::(move _4, move _5) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/lower_intrinsics.rs:+1:14: +1:50 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:9:14: 9:44 -- // + literal: Const { ty: extern "rust-intrinsic" fn(i32, i32) -> i32 {std::intrinsics::wrapping_add::}, val: Value() } -+ _3 = Add(move _4, move _5); // scope 0 at $DIR/lower_intrinsics.rs:+1:14: +1:50 -+ goto -> bb1; // scope 0 at $DIR/lower_intrinsics.rs:+1:14: +1:50 + StorageLive(_3); + StorageLive(_4); + _4 = _1; + StorageLive(_5); + _5 = _2; +- _3 = std::intrinsics::wrapping_add::(move _4, move _5) -> [return: bb1, unwind unreachable]; ++ _3 = Add(move _4, move _5); ++ goto -> bb1; } bb1: { - StorageDead(_5); // scope 0 at $DIR/lower_intrinsics.rs:+1:49: +1:50 - StorageDead(_4); // scope 0 at $DIR/lower_intrinsics.rs:+1:49: +1:50 - StorageLive(_6); // scope 1 at $DIR/lower_intrinsics.rs:+2:9: +2:11 - StorageLive(_7); // scope 1 at $DIR/lower_intrinsics.rs:+2:45: +2:46 - _7 = _1; // scope 1 at $DIR/lower_intrinsics.rs:+2:45: +2:46 - StorageLive(_8); // scope 1 at $DIR/lower_intrinsics.rs:+2:48: +2:49 - _8 = _2; // scope 1 at $DIR/lower_intrinsics.rs:+2:48: +2:49 -- _6 = std::intrinsics::wrapping_sub::(move _7, move _8) -> [return: bb2, unwind unreachable]; // scope 1 at $DIR/lower_intrinsics.rs:+2:14: +2:50 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:10:14: 10:44 -- // + literal: Const { ty: extern "rust-intrinsic" fn(i32, i32) -> i32 {std::intrinsics::wrapping_sub::}, val: Value() } -+ _6 = Sub(move _7, move _8); // scope 1 at $DIR/lower_intrinsics.rs:+2:14: +2:50 -+ goto -> bb2; // scope 1 at $DIR/lower_intrinsics.rs:+2:14: +2:50 + StorageDead(_5); + StorageDead(_4); + StorageLive(_6); + StorageLive(_7); + _7 = _1; + StorageLive(_8); + _8 = _2; +- _6 = std::intrinsics::wrapping_sub::(move _7, move _8) -> [return: bb2, unwind unreachable]; ++ _6 = Sub(move _7, move _8); ++ goto -> bb2; } bb2: { - StorageDead(_8); // scope 1 at $DIR/lower_intrinsics.rs:+2:49: +2:50 - StorageDead(_7); // scope 1 at $DIR/lower_intrinsics.rs:+2:49: +2:50 - StorageLive(_9); // scope 2 at $DIR/lower_intrinsics.rs:+3:9: +3:11 - StorageLive(_10); // scope 2 at $DIR/lower_intrinsics.rs:+3:45: +3:46 - _10 = _1; // scope 2 at $DIR/lower_intrinsics.rs:+3:45: +3:46 - StorageLive(_11); // scope 2 at $DIR/lower_intrinsics.rs:+3:48: +3:49 - _11 = _2; // scope 2 at $DIR/lower_intrinsics.rs:+3:48: +3:49 -- _9 = wrapping_mul::(move _10, move _11) -> [return: bb3, unwind unreachable]; // scope 2 at $DIR/lower_intrinsics.rs:+3:14: +3:50 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:11:14: 11:44 -- // + literal: Const { ty: extern "rust-intrinsic" fn(i32, i32) -> i32 {wrapping_mul::}, val: Value() } -+ _9 = Mul(move _10, move _11); // scope 2 at $DIR/lower_intrinsics.rs:+3:14: +3:50 -+ goto -> bb3; // scope 2 at $DIR/lower_intrinsics.rs:+3:14: +3:50 + StorageDead(_8); + StorageDead(_7); + StorageLive(_9); + StorageLive(_10); + _10 = _1; + StorageLive(_11); + _11 = _2; +- _9 = wrapping_mul::(move _10, move _11) -> [return: bb3, unwind unreachable]; ++ _9 = Mul(move _10, move _11); ++ goto -> bb3; } bb3: { - StorageDead(_11); // scope 2 at $DIR/lower_intrinsics.rs:+3:49: +3:50 - StorageDead(_10); // scope 2 at $DIR/lower_intrinsics.rs:+3:49: +3:50 - _0 = const (); // scope 0 at $DIR/lower_intrinsics.rs:+0:33: +4:2 - StorageDead(_9); // scope 2 at $DIR/lower_intrinsics.rs:+4:1: +4:2 - StorageDead(_6); // scope 1 at $DIR/lower_intrinsics.rs:+4:1: +4:2 - StorageDead(_3); // scope 0 at $DIR/lower_intrinsics.rs:+4:1: +4:2 - return; // scope 0 at $DIR/lower_intrinsics.rs:+4:2: +4:2 + StorageDead(_11); + StorageDead(_10); + _0 = const (); + StorageDead(_9); + StorageDead(_6); + StorageDead(_3); + return; } } diff --git a/tests/mir-opt/lower_intrinsics.wrapping.LowerIntrinsics.panic-unwind.diff b/tests/mir-opt/lower_intrinsics.wrapping.LowerIntrinsics.panic-unwind.diff index 217f27efe5cc9..2acb193e054d5 100644 --- a/tests/mir-opt/lower_intrinsics.wrapping.LowerIntrinsics.panic-unwind.diff +++ b/tests/mir-opt/lower_intrinsics.wrapping.LowerIntrinsics.panic-unwind.diff @@ -2,82 +2,73 @@ + // MIR for `wrapping` after LowerIntrinsics fn wrapping(_1: i32, _2: i32) -> () { - debug a => _1; // in scope 0 at $DIR/lower_intrinsics.rs:+0:17: +0:18 - debug b => _2; // in scope 0 at $DIR/lower_intrinsics.rs:+0:25: +0:26 - let mut _0: (); // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:33: +0:33 - let _3: i32; // in scope 0 at $DIR/lower_intrinsics.rs:+1:9: +1:11 - let mut _4: i32; // in scope 0 at $DIR/lower_intrinsics.rs:+1:45: +1:46 - let mut _5: i32; // in scope 0 at $DIR/lower_intrinsics.rs:+1:48: +1:49 - let mut _7: i32; // in scope 0 at $DIR/lower_intrinsics.rs:+2:45: +2:46 - let mut _8: i32; // in scope 0 at $DIR/lower_intrinsics.rs:+2:48: +2:49 - let mut _10: i32; // in scope 0 at $DIR/lower_intrinsics.rs:+3:45: +3:46 - let mut _11: i32; // in scope 0 at $DIR/lower_intrinsics.rs:+3:48: +3:49 + debug a => _1; + debug b => _2; + let mut _0: (); + let _3: i32; + let mut _4: i32; + let mut _5: i32; + let mut _7: i32; + let mut _8: i32; + let mut _10: i32; + let mut _11: i32; scope 1 { - debug _x => _3; // in scope 1 at $DIR/lower_intrinsics.rs:+1:9: +1:11 - let _6: i32; // in scope 1 at $DIR/lower_intrinsics.rs:+2:9: +2:11 + debug _x => _3; + let _6: i32; scope 2 { - debug _y => _6; // in scope 2 at $DIR/lower_intrinsics.rs:+2:9: +2:11 - let _9: i32; // in scope 2 at $DIR/lower_intrinsics.rs:+3:9: +3:11 + debug _y => _6; + let _9: i32; scope 3 { - debug _z => _9; // in scope 3 at $DIR/lower_intrinsics.rs:+3:9: +3:11 + debug _z => _9; } } } bb0: { - StorageLive(_3); // scope 0 at $DIR/lower_intrinsics.rs:+1:9: +1:11 - StorageLive(_4); // scope 0 at $DIR/lower_intrinsics.rs:+1:45: +1:46 - _4 = _1; // scope 0 at $DIR/lower_intrinsics.rs:+1:45: +1:46 - StorageLive(_5); // scope 0 at $DIR/lower_intrinsics.rs:+1:48: +1:49 - _5 = _2; // scope 0 at $DIR/lower_intrinsics.rs:+1:48: +1:49 -- _3 = std::intrinsics::wrapping_add::(move _4, move _5) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/lower_intrinsics.rs:+1:14: +1:50 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:9:14: 9:44 -- // + literal: Const { ty: extern "rust-intrinsic" fn(i32, i32) -> i32 {std::intrinsics::wrapping_add::}, val: Value() } -+ _3 = Add(move _4, move _5); // scope 0 at $DIR/lower_intrinsics.rs:+1:14: +1:50 -+ goto -> bb1; // scope 0 at $DIR/lower_intrinsics.rs:+1:14: +1:50 + StorageLive(_3); + StorageLive(_4); + _4 = _1; + StorageLive(_5); + _5 = _2; +- _3 = std::intrinsics::wrapping_add::(move _4, move _5) -> [return: bb1, unwind unreachable]; ++ _3 = Add(move _4, move _5); ++ goto -> bb1; } bb1: { - StorageDead(_5); // scope 0 at $DIR/lower_intrinsics.rs:+1:49: +1:50 - StorageDead(_4); // scope 0 at $DIR/lower_intrinsics.rs:+1:49: +1:50 - StorageLive(_6); // scope 1 at $DIR/lower_intrinsics.rs:+2:9: +2:11 - StorageLive(_7); // scope 1 at $DIR/lower_intrinsics.rs:+2:45: +2:46 - _7 = _1; // scope 1 at $DIR/lower_intrinsics.rs:+2:45: +2:46 - StorageLive(_8); // scope 1 at $DIR/lower_intrinsics.rs:+2:48: +2:49 - _8 = _2; // scope 1 at $DIR/lower_intrinsics.rs:+2:48: +2:49 -- _6 = std::intrinsics::wrapping_sub::(move _7, move _8) -> [return: bb2, unwind unreachable]; // scope 1 at $DIR/lower_intrinsics.rs:+2:14: +2:50 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:10:14: 10:44 -- // + literal: Const { ty: extern "rust-intrinsic" fn(i32, i32) -> i32 {std::intrinsics::wrapping_sub::}, val: Value() } -+ _6 = Sub(move _7, move _8); // scope 1 at $DIR/lower_intrinsics.rs:+2:14: +2:50 -+ goto -> bb2; // scope 1 at $DIR/lower_intrinsics.rs:+2:14: +2:50 + StorageDead(_5); + StorageDead(_4); + StorageLive(_6); + StorageLive(_7); + _7 = _1; + StorageLive(_8); + _8 = _2; +- _6 = std::intrinsics::wrapping_sub::(move _7, move _8) -> [return: bb2, unwind unreachable]; ++ _6 = Sub(move _7, move _8); ++ goto -> bb2; } bb2: { - StorageDead(_8); // scope 1 at $DIR/lower_intrinsics.rs:+2:49: +2:50 - StorageDead(_7); // scope 1 at $DIR/lower_intrinsics.rs:+2:49: +2:50 - StorageLive(_9); // scope 2 at $DIR/lower_intrinsics.rs:+3:9: +3:11 - StorageLive(_10); // scope 2 at $DIR/lower_intrinsics.rs:+3:45: +3:46 - _10 = _1; // scope 2 at $DIR/lower_intrinsics.rs:+3:45: +3:46 - StorageLive(_11); // scope 2 at $DIR/lower_intrinsics.rs:+3:48: +3:49 - _11 = _2; // scope 2 at $DIR/lower_intrinsics.rs:+3:48: +3:49 -- _9 = wrapping_mul::(move _10, move _11) -> [return: bb3, unwind unreachable]; // scope 2 at $DIR/lower_intrinsics.rs:+3:14: +3:50 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:11:14: 11:44 -- // + literal: Const { ty: extern "rust-intrinsic" fn(i32, i32) -> i32 {wrapping_mul::}, val: Value() } -+ _9 = Mul(move _10, move _11); // scope 2 at $DIR/lower_intrinsics.rs:+3:14: +3:50 -+ goto -> bb3; // scope 2 at $DIR/lower_intrinsics.rs:+3:14: +3:50 + StorageDead(_8); + StorageDead(_7); + StorageLive(_9); + StorageLive(_10); + _10 = _1; + StorageLive(_11); + _11 = _2; +- _9 = wrapping_mul::(move _10, move _11) -> [return: bb3, unwind unreachable]; ++ _9 = Mul(move _10, move _11); ++ goto -> bb3; } bb3: { - StorageDead(_11); // scope 2 at $DIR/lower_intrinsics.rs:+3:49: +3:50 - StorageDead(_10); // scope 2 at $DIR/lower_intrinsics.rs:+3:49: +3:50 - _0 = const (); // scope 0 at $DIR/lower_intrinsics.rs:+0:33: +4:2 - StorageDead(_9); // scope 2 at $DIR/lower_intrinsics.rs:+4:1: +4:2 - StorageDead(_6); // scope 1 at $DIR/lower_intrinsics.rs:+4:1: +4:2 - StorageDead(_3); // scope 0 at $DIR/lower_intrinsics.rs:+4:1: +4:2 - return; // scope 0 at $DIR/lower_intrinsics.rs:+4:2: +4:2 + StorageDead(_11); + StorageDead(_10); + _0 = const (); + StorageDead(_9); + StorageDead(_6); + StorageDead(_3); + return; } } diff --git a/tests/mir-opt/lower_intrinsics.write_via_move_string.LowerIntrinsics.panic-abort.diff b/tests/mir-opt/lower_intrinsics.write_via_move_string.LowerIntrinsics.panic-abort.diff index 2eabd7f626b69..ddc8cf9a3d931 100644 --- a/tests/mir-opt/lower_intrinsics.write_via_move_string.LowerIntrinsics.panic-abort.diff +++ b/tests/mir-opt/lower_intrinsics.write_via_move_string.LowerIntrinsics.panic-abort.diff @@ -2,35 +2,32 @@ + // MIR for `write_via_move_string` after LowerIntrinsics fn write_via_move_string(_1: &mut String, _2: String) -> () { - debug r => _1; // in scope 0 at $DIR/lower_intrinsics.rs:+0:30: +0:31 - debug v => _2; // in scope 0 at $DIR/lower_intrinsics.rs:+0:46: +0:47 - let mut _0: (); // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:57: +0:57 - let mut _3: *mut std::string::String; // in scope 0 at $DIR/lower_intrinsics.rs:+1:47: +1:48 - let mut _4: std::string::String; // in scope 0 at $DIR/lower_intrinsics.rs:+1:50: +1:51 + debug r => _1; + debug v => _2; + let mut _0: (); + let mut _3: *mut std::string::String; + let mut _4: std::string::String; scope 1 { } bb0: { - StorageLive(_3); // scope 1 at $DIR/lower_intrinsics.rs:+1:47: +1:48 - _3 = &raw mut (*_1); // scope 1 at $DIR/lower_intrinsics.rs:+1:47: +1:48 - StorageLive(_4); // scope 1 at $DIR/lower_intrinsics.rs:+1:50: +1:51 - _4 = move _2; // scope 1 at $DIR/lower_intrinsics.rs:+1:50: +1:51 -- _0 = write_via_move::(move _3, move _4) -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/lower_intrinsics.rs:+1:14: +1:52 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:135:14: 135:46 -- // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(*mut String, String) {write_via_move::}, val: Value() } -+ (*_3) = move _4; // scope 1 at $DIR/lower_intrinsics.rs:+1:14: +1:52 -+ goto -> bb1; // scope 1 at $DIR/lower_intrinsics.rs:+1:14: +1:52 + StorageLive(_3); + _3 = &raw mut (*_1); + StorageLive(_4); + _4 = move _2; +- _0 = write_via_move::(move _3, move _4) -> [return: bb1, unwind unreachable]; ++ (*_3) = move _4; ++ goto -> bb1; } bb1: { - StorageDead(_4); // scope 1 at $DIR/lower_intrinsics.rs:+1:51: +1:52 - StorageDead(_3); // scope 1 at $DIR/lower_intrinsics.rs:+1:51: +1:52 - goto -> bb2; // scope 0 at $DIR/lower_intrinsics.rs:+2:1: +2:2 + StorageDead(_4); + StorageDead(_3); + goto -> bb2; } bb2: { - return; // scope 0 at $DIR/lower_intrinsics.rs:+2:2: +2:2 + return; } } diff --git a/tests/mir-opt/lower_intrinsics.write_via_move_string.LowerIntrinsics.panic-unwind.diff b/tests/mir-opt/lower_intrinsics.write_via_move_string.LowerIntrinsics.panic-unwind.diff index 2eabd7f626b69..ddc8cf9a3d931 100644 --- a/tests/mir-opt/lower_intrinsics.write_via_move_string.LowerIntrinsics.panic-unwind.diff +++ b/tests/mir-opt/lower_intrinsics.write_via_move_string.LowerIntrinsics.panic-unwind.diff @@ -2,35 +2,32 @@ + // MIR for `write_via_move_string` after LowerIntrinsics fn write_via_move_string(_1: &mut String, _2: String) -> () { - debug r => _1; // in scope 0 at $DIR/lower_intrinsics.rs:+0:30: +0:31 - debug v => _2; // in scope 0 at $DIR/lower_intrinsics.rs:+0:46: +0:47 - let mut _0: (); // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:57: +0:57 - let mut _3: *mut std::string::String; // in scope 0 at $DIR/lower_intrinsics.rs:+1:47: +1:48 - let mut _4: std::string::String; // in scope 0 at $DIR/lower_intrinsics.rs:+1:50: +1:51 + debug r => _1; + debug v => _2; + let mut _0: (); + let mut _3: *mut std::string::String; + let mut _4: std::string::String; scope 1 { } bb0: { - StorageLive(_3); // scope 1 at $DIR/lower_intrinsics.rs:+1:47: +1:48 - _3 = &raw mut (*_1); // scope 1 at $DIR/lower_intrinsics.rs:+1:47: +1:48 - StorageLive(_4); // scope 1 at $DIR/lower_intrinsics.rs:+1:50: +1:51 - _4 = move _2; // scope 1 at $DIR/lower_intrinsics.rs:+1:50: +1:51 -- _0 = write_via_move::(move _3, move _4) -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/lower_intrinsics.rs:+1:14: +1:52 -- // mir::Constant -- // + span: $DIR/lower_intrinsics.rs:135:14: 135:46 -- // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(*mut String, String) {write_via_move::}, val: Value() } -+ (*_3) = move _4; // scope 1 at $DIR/lower_intrinsics.rs:+1:14: +1:52 -+ goto -> bb1; // scope 1 at $DIR/lower_intrinsics.rs:+1:14: +1:52 + StorageLive(_3); + _3 = &raw mut (*_1); + StorageLive(_4); + _4 = move _2; +- _0 = write_via_move::(move _3, move _4) -> [return: bb1, unwind unreachable]; ++ (*_3) = move _4; ++ goto -> bb1; } bb1: { - StorageDead(_4); // scope 1 at $DIR/lower_intrinsics.rs:+1:51: +1:52 - StorageDead(_3); // scope 1 at $DIR/lower_intrinsics.rs:+1:51: +1:52 - goto -> bb2; // scope 0 at $DIR/lower_intrinsics.rs:+2:1: +2:2 + StorageDead(_4); + StorageDead(_3); + goto -> bb2; } bb2: { - return; // scope 0 at $DIR/lower_intrinsics.rs:+2:2: +2:2 + return; } } diff --git a/tests/mir-opt/lower_slice_len.bound.LowerSliceLenCalls.panic-abort.diff b/tests/mir-opt/lower_slice_len.bound.LowerSliceLenCalls.panic-abort.diff index 8a9ac6b6673b0..70b33fb703bc0 100644 --- a/tests/mir-opt/lower_slice_len.bound.LowerSliceLenCalls.panic-abort.diff +++ b/tests/mir-opt/lower_slice_len.bound.LowerSliceLenCalls.panic-abort.diff @@ -2,62 +2,59 @@ + // MIR for `bound` after LowerSliceLenCalls fn bound(_1: usize, _2: &[u8]) -> u8 { - debug index => _1; // in scope 0 at $DIR/lower_slice_len.rs:+0:14: +0:19 - debug slice => _2; // in scope 0 at $DIR/lower_slice_len.rs:+0:28: +0:33 - let mut _0: u8; // return place in scope 0 at $DIR/lower_slice_len.rs:+0:45: +0:47 - let mut _3: bool; // in scope 0 at $DIR/lower_slice_len.rs:+1:8: +1:27 - let mut _4: usize; // in scope 0 at $DIR/lower_slice_len.rs:+1:8: +1:13 - let mut _5: usize; // in scope 0 at $DIR/lower_slice_len.rs:+1:16: +1:27 - let mut _6: &[u8]; // in scope 0 at $DIR/lower_slice_len.rs:+1:16: +1:27 - let _7: usize; // in scope 0 at $DIR/lower_slice_len.rs:+2:15: +2:20 - let mut _8: usize; // in scope 0 at $DIR/lower_slice_len.rs:+2:9: +2:21 - let mut _9: bool; // in scope 0 at $DIR/lower_slice_len.rs:+2:9: +2:21 + debug index => _1; + debug slice => _2; + let mut _0: u8; + let mut _3: bool; + let mut _4: usize; + let mut _5: usize; + let mut _6: &[u8]; + let _7: usize; + let mut _8: usize; + let mut _9: bool; bb0: { - StorageLive(_3); // scope 0 at $DIR/lower_slice_len.rs:+1:8: +1:27 - StorageLive(_4); // scope 0 at $DIR/lower_slice_len.rs:+1:8: +1:13 - _4 = _1; // scope 0 at $DIR/lower_slice_len.rs:+1:8: +1:13 - StorageLive(_5); // scope 0 at $DIR/lower_slice_len.rs:+1:16: +1:27 - StorageLive(_6); // scope 0 at $DIR/lower_slice_len.rs:+1:16: +1:27 - _6 = &(*_2); // scope 0 at $DIR/lower_slice_len.rs:+1:16: +1:27 -- _5 = core::slice::::len(move _6) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/lower_slice_len.rs:+1:16: +1:27 -- // mir::Constant -- // + span: $DIR/lower_slice_len.rs:6:22: 6:25 -- // + literal: Const { ty: for<'a> fn(&'a [u8]) -> usize {core::slice::::len}, val: Value() } -+ _5 = Len((*_6)); // scope 0 at $DIR/lower_slice_len.rs:+1:16: +1:27 -+ goto -> bb1; // scope 0 at $DIR/lower_slice_len.rs:+1:16: +1:27 + StorageLive(_3); + StorageLive(_4); + _4 = _1; + StorageLive(_5); + StorageLive(_6); + _6 = &(*_2); +- _5 = core::slice::::len(move _6) -> [return: bb1, unwind unreachable]; ++ _5 = Len((*_6)); ++ goto -> bb1; } bb1: { - StorageDead(_6); // scope 0 at $DIR/lower_slice_len.rs:+1:26: +1:27 - _3 = Lt(move _4, move _5); // scope 0 at $DIR/lower_slice_len.rs:+1:8: +1:27 - StorageDead(_5); // scope 0 at $DIR/lower_slice_len.rs:+1:26: +1:27 - StorageDead(_4); // scope 0 at $DIR/lower_slice_len.rs:+1:26: +1:27 - switchInt(move _3) -> [0: bb4, otherwise: bb2]; // scope 0 at $DIR/lower_slice_len.rs:+1:8: +1:27 + StorageDead(_6); + _3 = Lt(move _4, move _5); + StorageDead(_5); + StorageDead(_4); + switchInt(move _3) -> [0: bb4, otherwise: bb2]; } bb2: { - StorageLive(_7); // scope 0 at $DIR/lower_slice_len.rs:+2:15: +2:20 - _7 = _1; // scope 0 at $DIR/lower_slice_len.rs:+2:15: +2:20 - _8 = Len((*_2)); // scope 0 at $DIR/lower_slice_len.rs:+2:9: +2:21 - _9 = Lt(_7, _8); // scope 0 at $DIR/lower_slice_len.rs:+2:9: +2:21 - assert(move _9, "index out of bounds: the length is {} but the index is {}", move _8, _7) -> [success: bb3, unwind unreachable]; // scope 0 at $DIR/lower_slice_len.rs:+2:9: +2:21 + StorageLive(_7); + _7 = _1; + _8 = Len((*_2)); + _9 = Lt(_7, _8); + assert(move _9, "index out of bounds: the length is {} but the index is {}", move _8, _7) -> [success: bb3, unwind unreachable]; } bb3: { - _0 = (*_2)[_7]; // scope 0 at $DIR/lower_slice_len.rs:+2:9: +2:21 - StorageDead(_7); // scope 0 at $DIR/lower_slice_len.rs:+3:5: +3:6 - goto -> bb5; // scope 0 at $DIR/lower_slice_len.rs:+1:5: +5:6 + _0 = (*_2)[_7]; + StorageDead(_7); + goto -> bb5; } bb4: { - _0 = const 42_u8; // scope 0 at $DIR/lower_slice_len.rs:+4:9: +4:11 - goto -> bb5; // scope 0 at $DIR/lower_slice_len.rs:+1:5: +5:6 + _0 = const 42_u8; + goto -> bb5; } bb5: { - StorageDead(_3); // scope 0 at $DIR/lower_slice_len.rs:+5:5: +5:6 - return; // scope 0 at $DIR/lower_slice_len.rs:+6:2: +6:2 + StorageDead(_3); + return; } } diff --git a/tests/mir-opt/lower_slice_len.bound.LowerSliceLenCalls.panic-unwind.diff b/tests/mir-opt/lower_slice_len.bound.LowerSliceLenCalls.panic-unwind.diff index 67918e62b9c22..d90f3dddf58ee 100644 --- a/tests/mir-opt/lower_slice_len.bound.LowerSliceLenCalls.panic-unwind.diff +++ b/tests/mir-opt/lower_slice_len.bound.LowerSliceLenCalls.panic-unwind.diff @@ -2,62 +2,59 @@ + // MIR for `bound` after LowerSliceLenCalls fn bound(_1: usize, _2: &[u8]) -> u8 { - debug index => _1; // in scope 0 at $DIR/lower_slice_len.rs:+0:14: +0:19 - debug slice => _2; // in scope 0 at $DIR/lower_slice_len.rs:+0:28: +0:33 - let mut _0: u8; // return place in scope 0 at $DIR/lower_slice_len.rs:+0:45: +0:47 - let mut _3: bool; // in scope 0 at $DIR/lower_slice_len.rs:+1:8: +1:27 - let mut _4: usize; // in scope 0 at $DIR/lower_slice_len.rs:+1:8: +1:13 - let mut _5: usize; // in scope 0 at $DIR/lower_slice_len.rs:+1:16: +1:27 - let mut _6: &[u8]; // in scope 0 at $DIR/lower_slice_len.rs:+1:16: +1:27 - let _7: usize; // in scope 0 at $DIR/lower_slice_len.rs:+2:15: +2:20 - let mut _8: usize; // in scope 0 at $DIR/lower_slice_len.rs:+2:9: +2:21 - let mut _9: bool; // in scope 0 at $DIR/lower_slice_len.rs:+2:9: +2:21 + debug index => _1; + debug slice => _2; + let mut _0: u8; + let mut _3: bool; + let mut _4: usize; + let mut _5: usize; + let mut _6: &[u8]; + let _7: usize; + let mut _8: usize; + let mut _9: bool; bb0: { - StorageLive(_3); // scope 0 at $DIR/lower_slice_len.rs:+1:8: +1:27 - StorageLive(_4); // scope 0 at $DIR/lower_slice_len.rs:+1:8: +1:13 - _4 = _1; // scope 0 at $DIR/lower_slice_len.rs:+1:8: +1:13 - StorageLive(_5); // scope 0 at $DIR/lower_slice_len.rs:+1:16: +1:27 - StorageLive(_6); // scope 0 at $DIR/lower_slice_len.rs:+1:16: +1:27 - _6 = &(*_2); // scope 0 at $DIR/lower_slice_len.rs:+1:16: +1:27 -- _5 = core::slice::::len(move _6) -> bb1; // scope 0 at $DIR/lower_slice_len.rs:+1:16: +1:27 -- // mir::Constant -- // + span: $DIR/lower_slice_len.rs:6:22: 6:25 -- // + literal: Const { ty: for<'a> fn(&'a [u8]) -> usize {core::slice::::len}, val: Value() } -+ _5 = Len((*_6)); // scope 0 at $DIR/lower_slice_len.rs:+1:16: +1:27 -+ goto -> bb1; // scope 0 at $DIR/lower_slice_len.rs:+1:16: +1:27 + StorageLive(_3); + StorageLive(_4); + _4 = _1; + StorageLive(_5); + StorageLive(_6); + _6 = &(*_2); +- _5 = core::slice::::len(move _6) -> bb1; ++ _5 = Len((*_6)); ++ goto -> bb1; } bb1: { - StorageDead(_6); // scope 0 at $DIR/lower_slice_len.rs:+1:26: +1:27 - _3 = Lt(move _4, move _5); // scope 0 at $DIR/lower_slice_len.rs:+1:8: +1:27 - StorageDead(_5); // scope 0 at $DIR/lower_slice_len.rs:+1:26: +1:27 - StorageDead(_4); // scope 0 at $DIR/lower_slice_len.rs:+1:26: +1:27 - switchInt(move _3) -> [0: bb4, otherwise: bb2]; // scope 0 at $DIR/lower_slice_len.rs:+1:8: +1:27 + StorageDead(_6); + _3 = Lt(move _4, move _5); + StorageDead(_5); + StorageDead(_4); + switchInt(move _3) -> [0: bb4, otherwise: bb2]; } bb2: { - StorageLive(_7); // scope 0 at $DIR/lower_slice_len.rs:+2:15: +2:20 - _7 = _1; // scope 0 at $DIR/lower_slice_len.rs:+2:15: +2:20 - _8 = Len((*_2)); // scope 0 at $DIR/lower_slice_len.rs:+2:9: +2:21 - _9 = Lt(_7, _8); // scope 0 at $DIR/lower_slice_len.rs:+2:9: +2:21 - assert(move _9, "index out of bounds: the length is {} but the index is {}", move _8, _7) -> bb3; // scope 0 at $DIR/lower_slice_len.rs:+2:9: +2:21 + StorageLive(_7); + _7 = _1; + _8 = Len((*_2)); + _9 = Lt(_7, _8); + assert(move _9, "index out of bounds: the length is {} but the index is {}", move _8, _7) -> bb3; } bb3: { - _0 = (*_2)[_7]; // scope 0 at $DIR/lower_slice_len.rs:+2:9: +2:21 - StorageDead(_7); // scope 0 at $DIR/lower_slice_len.rs:+3:5: +3:6 - goto -> bb5; // scope 0 at $DIR/lower_slice_len.rs:+1:5: +5:6 + _0 = (*_2)[_7]; + StorageDead(_7); + goto -> bb5; } bb4: { - _0 = const 42_u8; // scope 0 at $DIR/lower_slice_len.rs:+4:9: +4:11 - goto -> bb5; // scope 0 at $DIR/lower_slice_len.rs:+1:5: +5:6 + _0 = const 42_u8; + goto -> bb5; } bb5: { - StorageDead(_3); // scope 0 at $DIR/lower_slice_len.rs:+5:5: +5:6 - return; // scope 0 at $DIR/lower_slice_len.rs:+6:2: +6:2 + StorageDead(_3); + return; } } diff --git a/tests/mir-opt/match_arm_scopes.complicated_match.panic-abort.SimplifyCfg-initial.after-ElaborateDrops.after.diff b/tests/mir-opt/match_arm_scopes.complicated_match.panic-abort.SimplifyCfg-initial.after-ElaborateDrops.after.diff index 3081e78f26db7..be09ed641b877 100644 --- a/tests/mir-opt/match_arm_scopes.complicated_match.panic-abort.SimplifyCfg-initial.after-ElaborateDrops.after.diff +++ b/tests/mir-opt/match_arm_scopes.complicated_match.panic-abort.SimplifyCfg-initial.after-ElaborateDrops.after.diff @@ -2,271 +2,271 @@ + // MIR for `complicated_match` after ElaborateDrops fn complicated_match(_1: bool, _2: (bool, bool, String)) -> i32 { - debug cond => _1; // in scope 0 at $DIR/match_arm_scopes.rs:+0:22: +0:26 - debug items => _2; // in scope 0 at $DIR/match_arm_scopes.rs:+0:34: +0:39 - let mut _0: i32; // return place in scope 0 at $DIR/match_arm_scopes.rs:+0:66: +0:69 - let mut _3: &bool; // in scope 0 at $DIR/match_arm_scopes.rs:+1:11: +1:16 - let mut _4: &bool; // in scope 0 at $DIR/match_arm_scopes.rs:+1:11: +1:16 - let _5: bool; // in scope 0 at $DIR/match_arm_scopes.rs:+2:17: +2:18 - let _6: &bool; // in scope 0 at $DIR/match_arm_scopes.rs:+2:17: +2:18 - let _7: std::string::String; // in scope 0 at $DIR/match_arm_scopes.rs:+2:20: +2:21 - let _8: &std::string::String; // in scope 0 at $DIR/match_arm_scopes.rs:+2:20: +2:21 - let mut _9: bool; // in scope 0 at $DIR/match_arm_scopes.rs:+2:42: +2:73 - let mut _10: bool; // in scope 0 at $DIR/match_arm_scopes.rs:+2:45: +2:49 - let mut _11: !; // in scope 0 at $DIR/match_arm_scopes.rs:+2:52: +2:60 - let mut _12: bool; // in scope 0 at $DIR/match_arm_scopes.rs:+2:42: +2:73 - let mut _13: bool; // in scope 0 at $DIR/match_arm_scopes.rs:+2:45: +2:49 - let mut _14: !; // in scope 0 at $DIR/match_arm_scopes.rs:+2:52: +2:60 - let _15: bool; // in scope 0 at $DIR/match_arm_scopes.rs:+3:16: +3:17 - let _16: std::string::String; // in scope 0 at $DIR/match_arm_scopes.rs:+3:19: +3:20 + debug cond => _1; + debug items => _2; + let mut _0: i32; + let mut _3: &bool; + let mut _4: &bool; + let _5: bool; + let _6: &bool; + let _7: std::string::String; + let _8: &std::string::String; + let mut _9: bool; + let mut _10: bool; + let mut _11: !; + let mut _12: bool; + let mut _13: bool; + let mut _14: !; + let _15: bool; + let _16: std::string::String; scope 1 { - debug a => _5; // in scope 1 at $DIR/match_arm_scopes.rs:+2:17: +2:18 - debug a => _6; // in scope 1 at $DIR/match_arm_scopes.rs:+2:17: +2:18 - debug s => _7; // in scope 1 at $DIR/match_arm_scopes.rs:+2:20: +2:21 - debug s => _8; // in scope 1 at $DIR/match_arm_scopes.rs:+2:20: +2:21 + debug a => _5; + debug a => _6; + debug s => _7; + debug s => _8; } scope 2 { - debug b => _15; // in scope 2 at $DIR/match_arm_scopes.rs:+3:16: +3:17 - debug t => _16; // in scope 2 at $DIR/match_arm_scopes.rs:+3:19: +3:20 + debug b => _15; + debug t => _16; } bb0: { -- FakeRead(ForMatchedPlace(None), _2); // scope 0 at $DIR/match_arm_scopes.rs:+1:11: +1:16 -- switchInt((_2.0: bool)) -> [0: bb1, otherwise: bb2]; // scope 0 at $DIR/match_arm_scopes.rs:+1:5: +1:16 -+ switchInt((_2.0: bool)) -> [0: bb5, otherwise: bb1]; // scope 0 at $DIR/match_arm_scopes.rs:+1:5: +1:16 +- FakeRead(ForMatchedPlace(None), _2); +- switchInt((_2.0: bool)) -> [0: bb1, otherwise: bb2]; ++ switchInt((_2.0: bool)) -> [0: bb5, otherwise: bb1]; } bb1: { -- falseEdge -> [real: bb8, imaginary: bb3]; // scope 0 at $DIR/match_arm_scopes.rs:+2:9: +2:22 -+ switchInt((_2.1: bool)) -> [0: bb10, otherwise: bb2]; // scope 0 at $DIR/match_arm_scopes.rs:+1:5: +1:16 +- falseEdge -> [real: bb8, imaginary: bb3]; ++ switchInt((_2.1: bool)) -> [0: bb10, otherwise: bb2]; } bb2: { -- switchInt((_2.1: bool)) -> [0: bb3, otherwise: bb4]; // scope 0 at $DIR/match_arm_scopes.rs:+1:5: +1:16 -+ switchInt((_2.0: bool)) -> [0: bb3, otherwise: bb17]; // scope 0 at $DIR/match_arm_scopes.rs:+1:5: +1:16 +- switchInt((_2.1: bool)) -> [0: bb3, otherwise: bb4]; ++ switchInt((_2.0: bool)) -> [0: bb3, otherwise: bb17]; } bb3: { -- falseEdge -> [real: bb13, imaginary: bb5]; // scope 0 at $DIR/match_arm_scopes.rs:+2:25: +2:38 +- falseEdge -> [real: bb13, imaginary: bb5]; - } - - bb4: { -- switchInt((_2.0: bool)) -> [0: bb6, otherwise: bb5]; // scope 0 at $DIR/match_arm_scopes.rs:+1:5: +1:16 +- switchInt((_2.0: bool)) -> [0: bb6, otherwise: bb5]; - } - - bb5: { -- falseEdge -> [real: bb20, imaginary: bb6]; // scope 0 at $DIR/match_arm_scopes.rs:+3:9: +3:21 +- falseEdge -> [real: bb20, imaginary: bb6]; - } - - bb6: { - StorageLive(_15); // scope 0 at $DIR/match_arm_scopes.rs:+3:32: +3:33 - _15 = (_2.1: bool); // scope 0 at $DIR/match_arm_scopes.rs:+3:32: +3:33 - StorageLive(_16); // scope 0 at $DIR/match_arm_scopes.rs:+3:35: +3:36 - _16 = move (_2.2: std::string::String); // scope 0 at $DIR/match_arm_scopes.rs:+3:35: +3:36 -- goto -> bb19; // scope 0 at $DIR/match_arm_scopes.rs:+1:5: +4:6 -+ goto -> bb16; // scope 0 at $DIR/match_arm_scopes.rs:+1:5: +4:6 + StorageLive(_15); + _15 = (_2.1: bool); + StorageLive(_16); + _16 = move (_2.2: std::string::String); +- goto -> bb19; ++ goto -> bb16; } - bb7: { + bb4: { - _0 = const 1_i32; // scope 1 at $DIR/match_arm_scopes.rs:+2:77: +2:78 -- drop(_7) -> [return: bb18, unwind: bb25]; // scope 0 at $DIR/match_arm_scopes.rs:+2:77: +2:78 -+ drop(_7) -> [return: bb15, unwind: bb22]; // scope 0 at $DIR/match_arm_scopes.rs:+2:77: +2:78 + _0 = const 1_i32; +- drop(_7) -> [return: bb18, unwind: bb25]; ++ drop(_7) -> [return: bb15, unwind: bb22]; } - bb8: { + bb5: { - StorageLive(_6); // scope 0 at $DIR/match_arm_scopes.rs:+2:17: +2:18 - _6 = &(_2.1: bool); // scope 0 at $DIR/match_arm_scopes.rs:+2:17: +2:18 - StorageLive(_8); // scope 0 at $DIR/match_arm_scopes.rs:+2:20: +2:21 - _8 = &(_2.2: std::string::String); // scope 0 at $DIR/match_arm_scopes.rs:+2:20: +2:21 -- _3 = &shallow (_2.0: bool); // scope 0 at $DIR/match_arm_scopes.rs:+1:11: +1:16 -- _4 = &shallow (_2.1: bool); // scope 0 at $DIR/match_arm_scopes.rs:+1:11: +1:16 - StorageLive(_9); // scope 0 at $DIR/match_arm_scopes.rs:+2:42: +2:73 - StorageLive(_10); // scope 0 at $DIR/match_arm_scopes.rs:+2:45: +2:49 - _10 = _1; // scope 0 at $DIR/match_arm_scopes.rs:+2:45: +2:49 -- switchInt(move _10) -> [0: bb10, otherwise: bb9]; // scope 0 at $DIR/match_arm_scopes.rs:+2:45: +2:49 -+ switchInt(move _10) -> [0: bb7, otherwise: bb6]; // scope 0 at $DIR/match_arm_scopes.rs:+2:45: +2:49 + StorageLive(_6); + _6 = &(_2.1: bool); + StorageLive(_8); + _8 = &(_2.2: std::string::String); +- _3 = &shallow (_2.0: bool); +- _4 = &shallow (_2.1: bool); + StorageLive(_9); + StorageLive(_10); + _10 = _1; +- switchInt(move _10) -> [0: bb10, otherwise: bb9]; ++ switchInt(move _10) -> [0: bb7, otherwise: bb6]; } - bb9: { + bb6: { - _0 = const 3_i32; // scope 0 at $DIR/match_arm_scopes.rs:+2:59: +2:60 - StorageDead(_10); // scope 0 at $DIR/match_arm_scopes.rs:+2:72: +2:73 - StorageDead(_9); // scope 0 at $DIR/match_arm_scopes.rs:+2:72: +2:73 -- goto -> bb23; // scope 0 at no-location -+ goto -> bb20; // scope 0 at no-location + _0 = const 3_i32; + StorageDead(_10); + StorageDead(_9); +- goto -> bb23; ++ goto -> bb20; } - bb10: { + bb7: { - _9 = (*_6); // scope 0 at $DIR/match_arm_scopes.rs:+2:70: +2:71 -- switchInt(move _9) -> [0: bb12, otherwise: bb11]; // scope 0 at $DIR/match_arm_scopes.rs:+2:42: +2:73 -+ switchInt(move _9) -> [0: bb9, otherwise: bb8]; // scope 0 at $DIR/match_arm_scopes.rs:+2:42: +2:73 + _9 = (*_6); +- switchInt(move _9) -> [0: bb12, otherwise: bb11]; ++ switchInt(move _9) -> [0: bb9, otherwise: bb8]; } - bb11: { + bb8: { - StorageDead(_10); // scope 0 at $DIR/match_arm_scopes.rs:+2:72: +2:73 - StorageDead(_9); // scope 0 at $DIR/match_arm_scopes.rs:+2:72: +2:73 -- FakeRead(ForMatchGuard, _3); // scope 0 at $DIR/match_arm_scopes.rs:+2:72: +2:73 -- FakeRead(ForMatchGuard, _4); // scope 0 at $DIR/match_arm_scopes.rs:+2:72: +2:73 -- FakeRead(ForGuardBinding, _6); // scope 0 at $DIR/match_arm_scopes.rs:+2:72: +2:73 -- FakeRead(ForGuardBinding, _8); // scope 0 at $DIR/match_arm_scopes.rs:+2:72: +2:73 - StorageLive(_5); // scope 0 at $DIR/match_arm_scopes.rs:+2:17: +2:18 - _5 = (_2.1: bool); // scope 0 at $DIR/match_arm_scopes.rs:+2:17: +2:18 - StorageLive(_7); // scope 0 at $DIR/match_arm_scopes.rs:+2:20: +2:21 - _7 = move (_2.2: std::string::String); // scope 0 at $DIR/match_arm_scopes.rs:+2:20: +2:21 -- goto -> bb7; // scope 0 at $DIR/match_arm_scopes.rs:+1:5: +4:6 -+ goto -> bb4; // scope 0 at $DIR/match_arm_scopes.rs:+1:5: +4:6 + StorageDead(_10); + StorageDead(_9); +- FakeRead(ForMatchGuard, _3); +- FakeRead(ForMatchGuard, _4); +- FakeRead(ForGuardBinding, _6); +- FakeRead(ForGuardBinding, _8); + StorageLive(_5); + _5 = (_2.1: bool); + StorageLive(_7); + _7 = move (_2.2: std::string::String); +- goto -> bb7; ++ goto -> bb4; } - bb12: { + bb9: { - StorageDead(_10); // scope 0 at $DIR/match_arm_scopes.rs:+2:72: +2:73 - StorageDead(_9); // scope 0 at $DIR/match_arm_scopes.rs:+2:72: +2:73 - StorageDead(_8); // scope 0 at $DIR/match_arm_scopes.rs:+2:77: +2:78 - StorageDead(_6); // scope 0 at $DIR/match_arm_scopes.rs:+2:77: +2:78 -- falseEdge -> [real: bb2, imaginary: bb3]; // scope 0 at $DIR/match_arm_scopes.rs:+2:42: +2:73 -+ goto -> bb1; // scope 0 at $DIR/match_arm_scopes.rs:+2:42: +2:73 + StorageDead(_10); + StorageDead(_9); + StorageDead(_8); + StorageDead(_6); +- falseEdge -> [real: bb2, imaginary: bb3]; ++ goto -> bb1; } - bb13: { + bb10: { - StorageLive(_6); // scope 0 at $DIR/match_arm_scopes.rs:+2:26: +2:27 - _6 = &(_2.0: bool); // scope 0 at $DIR/match_arm_scopes.rs:+2:26: +2:27 - StorageLive(_8); // scope 0 at $DIR/match_arm_scopes.rs:+2:36: +2:37 - _8 = &(_2.2: std::string::String); // scope 0 at $DIR/match_arm_scopes.rs:+2:36: +2:37 -- _3 = &shallow (_2.0: bool); // scope 0 at $DIR/match_arm_scopes.rs:+1:11: +1:16 -- _4 = &shallow (_2.1: bool); // scope 0 at $DIR/match_arm_scopes.rs:+1:11: +1:16 - StorageLive(_12); // scope 0 at $DIR/match_arm_scopes.rs:+2:42: +2:73 - StorageLive(_13); // scope 0 at $DIR/match_arm_scopes.rs:+2:45: +2:49 - _13 = _1; // scope 0 at $DIR/match_arm_scopes.rs:+2:45: +2:49 -- switchInt(move _13) -> [0: bb15, otherwise: bb14]; // scope 0 at $DIR/match_arm_scopes.rs:+2:45: +2:49 -+ switchInt(move _13) -> [0: bb12, otherwise: bb11]; // scope 0 at $DIR/match_arm_scopes.rs:+2:45: +2:49 + StorageLive(_6); + _6 = &(_2.0: bool); + StorageLive(_8); + _8 = &(_2.2: std::string::String); +- _3 = &shallow (_2.0: bool); +- _4 = &shallow (_2.1: bool); + StorageLive(_12); + StorageLive(_13); + _13 = _1; +- switchInt(move _13) -> [0: bb15, otherwise: bb14]; ++ switchInt(move _13) -> [0: bb12, otherwise: bb11]; } - bb14: { + bb11: { - _0 = const 3_i32; // scope 0 at $DIR/match_arm_scopes.rs:+2:59: +2:60 - StorageDead(_13); // scope 0 at $DIR/match_arm_scopes.rs:+2:72: +2:73 - StorageDead(_12); // scope 0 at $DIR/match_arm_scopes.rs:+2:72: +2:73 -- goto -> bb23; // scope 0 at no-location -+ goto -> bb20; // scope 0 at no-location + _0 = const 3_i32; + StorageDead(_13); + StorageDead(_12); +- goto -> bb23; ++ goto -> bb20; } - bb15: { + bb12: { - _12 = (*_6); // scope 0 at $DIR/match_arm_scopes.rs:+2:70: +2:71 -- switchInt(move _12) -> [0: bb17, otherwise: bb16]; // scope 0 at $DIR/match_arm_scopes.rs:+2:42: +2:73 -+ switchInt(move _12) -> [0: bb14, otherwise: bb13]; // scope 0 at $DIR/match_arm_scopes.rs:+2:42: +2:73 + _12 = (*_6); +- switchInt(move _12) -> [0: bb17, otherwise: bb16]; ++ switchInt(move _12) -> [0: bb14, otherwise: bb13]; } - bb16: { + bb13: { - StorageDead(_13); // scope 0 at $DIR/match_arm_scopes.rs:+2:72: +2:73 - StorageDead(_12); // scope 0 at $DIR/match_arm_scopes.rs:+2:72: +2:73 -- FakeRead(ForMatchGuard, _3); // scope 0 at $DIR/match_arm_scopes.rs:+2:72: +2:73 -- FakeRead(ForMatchGuard, _4); // scope 0 at $DIR/match_arm_scopes.rs:+2:72: +2:73 -- FakeRead(ForGuardBinding, _6); // scope 0 at $DIR/match_arm_scopes.rs:+2:72: +2:73 -- FakeRead(ForGuardBinding, _8); // scope 0 at $DIR/match_arm_scopes.rs:+2:72: +2:73 - StorageLive(_5); // scope 0 at $DIR/match_arm_scopes.rs:+2:26: +2:27 - _5 = (_2.0: bool); // scope 0 at $DIR/match_arm_scopes.rs:+2:26: +2:27 - StorageLive(_7); // scope 0 at $DIR/match_arm_scopes.rs:+2:36: +2:37 - _7 = move (_2.2: std::string::String); // scope 0 at $DIR/match_arm_scopes.rs:+2:36: +2:37 -- goto -> bb7; // scope 0 at $DIR/match_arm_scopes.rs:+1:5: +4:6 -+ goto -> bb4; // scope 0 at $DIR/match_arm_scopes.rs:+1:5: +4:6 + StorageDead(_13); + StorageDead(_12); +- FakeRead(ForMatchGuard, _3); +- FakeRead(ForMatchGuard, _4); +- FakeRead(ForGuardBinding, _6); +- FakeRead(ForGuardBinding, _8); + StorageLive(_5); + _5 = (_2.0: bool); + StorageLive(_7); + _7 = move (_2.2: std::string::String); +- goto -> bb7; ++ goto -> bb4; } - bb17: { + bb14: { - StorageDead(_13); // scope 0 at $DIR/match_arm_scopes.rs:+2:72: +2:73 - StorageDead(_12); // scope 0 at $DIR/match_arm_scopes.rs:+2:72: +2:73 - StorageDead(_8); // scope 0 at $DIR/match_arm_scopes.rs:+2:77: +2:78 - StorageDead(_6); // scope 0 at $DIR/match_arm_scopes.rs:+2:77: +2:78 -- falseEdge -> [real: bb4, imaginary: bb5]; // scope 0 at $DIR/match_arm_scopes.rs:+2:42: +2:73 -+ goto -> bb2; // scope 0 at $DIR/match_arm_scopes.rs:+2:42: +2:73 + StorageDead(_13); + StorageDead(_12); + StorageDead(_8); + StorageDead(_6); +- falseEdge -> [real: bb4, imaginary: bb5]; ++ goto -> bb2; } - bb18: { + bb15: { - StorageDead(_7); // scope 0 at $DIR/match_arm_scopes.rs:+2:77: +2:78 - StorageDead(_5); // scope 0 at $DIR/match_arm_scopes.rs:+2:77: +2:78 - StorageDead(_8); // scope 0 at $DIR/match_arm_scopes.rs:+2:77: +2:78 - StorageDead(_6); // scope 0 at $DIR/match_arm_scopes.rs:+2:77: +2:78 -- goto -> bb22; // scope 0 at $DIR/match_arm_scopes.rs:+2:77: +2:78 -+ goto -> bb19; // scope 0 at $DIR/match_arm_scopes.rs:+2:77: +2:78 + StorageDead(_7); + StorageDead(_5); + StorageDead(_8); + StorageDead(_6); +- goto -> bb22; ++ goto -> bb19; } - bb19: { + bb16: { - _0 = const 2_i32; // scope 2 at $DIR/match_arm_scopes.rs:+3:41: +3:42 -- drop(_16) -> [return: bb21, unwind: bb25]; // scope 0 at $DIR/match_arm_scopes.rs:+3:41: +3:42 -+ drop(_16) -> [return: bb18, unwind: bb22]; // scope 0 at $DIR/match_arm_scopes.rs:+3:41: +3:42 + _0 = const 2_i32; +- drop(_16) -> [return: bb21, unwind: bb25]; ++ drop(_16) -> [return: bb18, unwind: bb22]; } - bb20: { + bb17: { - StorageLive(_15); // scope 0 at $DIR/match_arm_scopes.rs:+3:16: +3:17 - _15 = (_2.1: bool); // scope 0 at $DIR/match_arm_scopes.rs:+3:16: +3:17 - StorageLive(_16); // scope 0 at $DIR/match_arm_scopes.rs:+3:19: +3:20 - _16 = move (_2.2: std::string::String); // scope 0 at $DIR/match_arm_scopes.rs:+3:19: +3:20 -- goto -> bb19; // scope 0 at $DIR/match_arm_scopes.rs:+1:5: +4:6 -+ goto -> bb16; // scope 0 at $DIR/match_arm_scopes.rs:+1:5: +4:6 + StorageLive(_15); + _15 = (_2.1: bool); + StorageLive(_16); + _16 = move (_2.2: std::string::String); +- goto -> bb19; ++ goto -> bb16; } - bb21: { + bb18: { - StorageDead(_16); // scope 0 at $DIR/match_arm_scopes.rs:+3:41: +3:42 - StorageDead(_15); // scope 0 at $DIR/match_arm_scopes.rs:+3:41: +3:42 -- goto -> bb22; // scope 0 at $DIR/match_arm_scopes.rs:+3:41: +3:42 -+ goto -> bb19; // scope 0 at $DIR/match_arm_scopes.rs:+3:41: +3:42 + StorageDead(_16); + StorageDead(_15); +- goto -> bb22; ++ goto -> bb19; } - bb22: { -- drop(_2) -> [return: bb24, unwind: bb26]; // scope 0 at $DIR/match_arm_scopes.rs:+5:1: +5:2 +- drop(_2) -> [return: bb24, unwind: bb26]; + bb19: { -+ goto -> bb26; // scope 0 at $DIR/match_arm_scopes.rs:+5:1: +5:2 ++ goto -> bb26; } - bb23: { + bb20: { - StorageDead(_8); // scope 0 at $DIR/match_arm_scopes.rs:+2:77: +2:78 - StorageDead(_6); // scope 0 at $DIR/match_arm_scopes.rs:+2:77: +2:78 -- drop(_2) -> [return: bb24, unwind: bb26]; // scope 0 at $DIR/match_arm_scopes.rs:+5:1: +5:2 -+ drop(_2) -> [return: bb21, unwind: bb23]; // scope 0 at $DIR/match_arm_scopes.rs:+5:1: +5:2 + StorageDead(_8); + StorageDead(_6); +- drop(_2) -> [return: bb24, unwind: bb26]; ++ drop(_2) -> [return: bb21, unwind: bb23]; } - bb24: { + bb21: { - return; // scope 0 at $DIR/match_arm_scopes.rs:+5:2: +5:2 + return; } - bb25 (cleanup): { -- drop(_2) -> [return: bb26, unwind terminate]; // scope 0 at $DIR/match_arm_scopes.rs:+5:1: +5:2 +- drop(_2) -> [return: bb26, unwind terminate]; + bb22 (cleanup): { -+ goto -> bb27; // scope 0 at $DIR/match_arm_scopes.rs:+5:1: +5:2 ++ goto -> bb27; } - bb26 (cleanup): { + bb23 (cleanup): { - resume; // scope 0 at $DIR/match_arm_scopes.rs:+0:1: +5:2 + resume; + } + + bb24: { -+ goto -> bb21; // scope 0 at $DIR/match_arm_scopes.rs:+5:1: +5:2 ++ goto -> bb21; + } + + bb25 (cleanup): { -+ goto -> bb23; // scope 0 at $DIR/match_arm_scopes.rs:+5:1: +5:2 ++ goto -> bb23; + } + + bb26: { -+ goto -> bb24; // scope 0 at $DIR/match_arm_scopes.rs:+5:1: +5:2 ++ goto -> bb24; + } + + bb27 (cleanup): { -+ goto -> bb23; // scope 0 at $DIR/match_arm_scopes.rs:+5:1: +5:2 ++ goto -> bb23; } } diff --git a/tests/mir-opt/match_arm_scopes.complicated_match.panic-unwind.SimplifyCfg-initial.after-ElaborateDrops.after.diff b/tests/mir-opt/match_arm_scopes.complicated_match.panic-unwind.SimplifyCfg-initial.after-ElaborateDrops.after.diff index 3081e78f26db7..be09ed641b877 100644 --- a/tests/mir-opt/match_arm_scopes.complicated_match.panic-unwind.SimplifyCfg-initial.after-ElaborateDrops.after.diff +++ b/tests/mir-opt/match_arm_scopes.complicated_match.panic-unwind.SimplifyCfg-initial.after-ElaborateDrops.after.diff @@ -2,271 +2,271 @@ + // MIR for `complicated_match` after ElaborateDrops fn complicated_match(_1: bool, _2: (bool, bool, String)) -> i32 { - debug cond => _1; // in scope 0 at $DIR/match_arm_scopes.rs:+0:22: +0:26 - debug items => _2; // in scope 0 at $DIR/match_arm_scopes.rs:+0:34: +0:39 - let mut _0: i32; // return place in scope 0 at $DIR/match_arm_scopes.rs:+0:66: +0:69 - let mut _3: &bool; // in scope 0 at $DIR/match_arm_scopes.rs:+1:11: +1:16 - let mut _4: &bool; // in scope 0 at $DIR/match_arm_scopes.rs:+1:11: +1:16 - let _5: bool; // in scope 0 at $DIR/match_arm_scopes.rs:+2:17: +2:18 - let _6: &bool; // in scope 0 at $DIR/match_arm_scopes.rs:+2:17: +2:18 - let _7: std::string::String; // in scope 0 at $DIR/match_arm_scopes.rs:+2:20: +2:21 - let _8: &std::string::String; // in scope 0 at $DIR/match_arm_scopes.rs:+2:20: +2:21 - let mut _9: bool; // in scope 0 at $DIR/match_arm_scopes.rs:+2:42: +2:73 - let mut _10: bool; // in scope 0 at $DIR/match_arm_scopes.rs:+2:45: +2:49 - let mut _11: !; // in scope 0 at $DIR/match_arm_scopes.rs:+2:52: +2:60 - let mut _12: bool; // in scope 0 at $DIR/match_arm_scopes.rs:+2:42: +2:73 - let mut _13: bool; // in scope 0 at $DIR/match_arm_scopes.rs:+2:45: +2:49 - let mut _14: !; // in scope 0 at $DIR/match_arm_scopes.rs:+2:52: +2:60 - let _15: bool; // in scope 0 at $DIR/match_arm_scopes.rs:+3:16: +3:17 - let _16: std::string::String; // in scope 0 at $DIR/match_arm_scopes.rs:+3:19: +3:20 + debug cond => _1; + debug items => _2; + let mut _0: i32; + let mut _3: &bool; + let mut _4: &bool; + let _5: bool; + let _6: &bool; + let _7: std::string::String; + let _8: &std::string::String; + let mut _9: bool; + let mut _10: bool; + let mut _11: !; + let mut _12: bool; + let mut _13: bool; + let mut _14: !; + let _15: bool; + let _16: std::string::String; scope 1 { - debug a => _5; // in scope 1 at $DIR/match_arm_scopes.rs:+2:17: +2:18 - debug a => _6; // in scope 1 at $DIR/match_arm_scopes.rs:+2:17: +2:18 - debug s => _7; // in scope 1 at $DIR/match_arm_scopes.rs:+2:20: +2:21 - debug s => _8; // in scope 1 at $DIR/match_arm_scopes.rs:+2:20: +2:21 + debug a => _5; + debug a => _6; + debug s => _7; + debug s => _8; } scope 2 { - debug b => _15; // in scope 2 at $DIR/match_arm_scopes.rs:+3:16: +3:17 - debug t => _16; // in scope 2 at $DIR/match_arm_scopes.rs:+3:19: +3:20 + debug b => _15; + debug t => _16; } bb0: { -- FakeRead(ForMatchedPlace(None), _2); // scope 0 at $DIR/match_arm_scopes.rs:+1:11: +1:16 -- switchInt((_2.0: bool)) -> [0: bb1, otherwise: bb2]; // scope 0 at $DIR/match_arm_scopes.rs:+1:5: +1:16 -+ switchInt((_2.0: bool)) -> [0: bb5, otherwise: bb1]; // scope 0 at $DIR/match_arm_scopes.rs:+1:5: +1:16 +- FakeRead(ForMatchedPlace(None), _2); +- switchInt((_2.0: bool)) -> [0: bb1, otherwise: bb2]; ++ switchInt((_2.0: bool)) -> [0: bb5, otherwise: bb1]; } bb1: { -- falseEdge -> [real: bb8, imaginary: bb3]; // scope 0 at $DIR/match_arm_scopes.rs:+2:9: +2:22 -+ switchInt((_2.1: bool)) -> [0: bb10, otherwise: bb2]; // scope 0 at $DIR/match_arm_scopes.rs:+1:5: +1:16 +- falseEdge -> [real: bb8, imaginary: bb3]; ++ switchInt((_2.1: bool)) -> [0: bb10, otherwise: bb2]; } bb2: { -- switchInt((_2.1: bool)) -> [0: bb3, otherwise: bb4]; // scope 0 at $DIR/match_arm_scopes.rs:+1:5: +1:16 -+ switchInt((_2.0: bool)) -> [0: bb3, otherwise: bb17]; // scope 0 at $DIR/match_arm_scopes.rs:+1:5: +1:16 +- switchInt((_2.1: bool)) -> [0: bb3, otherwise: bb4]; ++ switchInt((_2.0: bool)) -> [0: bb3, otherwise: bb17]; } bb3: { -- falseEdge -> [real: bb13, imaginary: bb5]; // scope 0 at $DIR/match_arm_scopes.rs:+2:25: +2:38 +- falseEdge -> [real: bb13, imaginary: bb5]; - } - - bb4: { -- switchInt((_2.0: bool)) -> [0: bb6, otherwise: bb5]; // scope 0 at $DIR/match_arm_scopes.rs:+1:5: +1:16 +- switchInt((_2.0: bool)) -> [0: bb6, otherwise: bb5]; - } - - bb5: { -- falseEdge -> [real: bb20, imaginary: bb6]; // scope 0 at $DIR/match_arm_scopes.rs:+3:9: +3:21 +- falseEdge -> [real: bb20, imaginary: bb6]; - } - - bb6: { - StorageLive(_15); // scope 0 at $DIR/match_arm_scopes.rs:+3:32: +3:33 - _15 = (_2.1: bool); // scope 0 at $DIR/match_arm_scopes.rs:+3:32: +3:33 - StorageLive(_16); // scope 0 at $DIR/match_arm_scopes.rs:+3:35: +3:36 - _16 = move (_2.2: std::string::String); // scope 0 at $DIR/match_arm_scopes.rs:+3:35: +3:36 -- goto -> bb19; // scope 0 at $DIR/match_arm_scopes.rs:+1:5: +4:6 -+ goto -> bb16; // scope 0 at $DIR/match_arm_scopes.rs:+1:5: +4:6 + StorageLive(_15); + _15 = (_2.1: bool); + StorageLive(_16); + _16 = move (_2.2: std::string::String); +- goto -> bb19; ++ goto -> bb16; } - bb7: { + bb4: { - _0 = const 1_i32; // scope 1 at $DIR/match_arm_scopes.rs:+2:77: +2:78 -- drop(_7) -> [return: bb18, unwind: bb25]; // scope 0 at $DIR/match_arm_scopes.rs:+2:77: +2:78 -+ drop(_7) -> [return: bb15, unwind: bb22]; // scope 0 at $DIR/match_arm_scopes.rs:+2:77: +2:78 + _0 = const 1_i32; +- drop(_7) -> [return: bb18, unwind: bb25]; ++ drop(_7) -> [return: bb15, unwind: bb22]; } - bb8: { + bb5: { - StorageLive(_6); // scope 0 at $DIR/match_arm_scopes.rs:+2:17: +2:18 - _6 = &(_2.1: bool); // scope 0 at $DIR/match_arm_scopes.rs:+2:17: +2:18 - StorageLive(_8); // scope 0 at $DIR/match_arm_scopes.rs:+2:20: +2:21 - _8 = &(_2.2: std::string::String); // scope 0 at $DIR/match_arm_scopes.rs:+2:20: +2:21 -- _3 = &shallow (_2.0: bool); // scope 0 at $DIR/match_arm_scopes.rs:+1:11: +1:16 -- _4 = &shallow (_2.1: bool); // scope 0 at $DIR/match_arm_scopes.rs:+1:11: +1:16 - StorageLive(_9); // scope 0 at $DIR/match_arm_scopes.rs:+2:42: +2:73 - StorageLive(_10); // scope 0 at $DIR/match_arm_scopes.rs:+2:45: +2:49 - _10 = _1; // scope 0 at $DIR/match_arm_scopes.rs:+2:45: +2:49 -- switchInt(move _10) -> [0: bb10, otherwise: bb9]; // scope 0 at $DIR/match_arm_scopes.rs:+2:45: +2:49 -+ switchInt(move _10) -> [0: bb7, otherwise: bb6]; // scope 0 at $DIR/match_arm_scopes.rs:+2:45: +2:49 + StorageLive(_6); + _6 = &(_2.1: bool); + StorageLive(_8); + _8 = &(_2.2: std::string::String); +- _3 = &shallow (_2.0: bool); +- _4 = &shallow (_2.1: bool); + StorageLive(_9); + StorageLive(_10); + _10 = _1; +- switchInt(move _10) -> [0: bb10, otherwise: bb9]; ++ switchInt(move _10) -> [0: bb7, otherwise: bb6]; } - bb9: { + bb6: { - _0 = const 3_i32; // scope 0 at $DIR/match_arm_scopes.rs:+2:59: +2:60 - StorageDead(_10); // scope 0 at $DIR/match_arm_scopes.rs:+2:72: +2:73 - StorageDead(_9); // scope 0 at $DIR/match_arm_scopes.rs:+2:72: +2:73 -- goto -> bb23; // scope 0 at no-location -+ goto -> bb20; // scope 0 at no-location + _0 = const 3_i32; + StorageDead(_10); + StorageDead(_9); +- goto -> bb23; ++ goto -> bb20; } - bb10: { + bb7: { - _9 = (*_6); // scope 0 at $DIR/match_arm_scopes.rs:+2:70: +2:71 -- switchInt(move _9) -> [0: bb12, otherwise: bb11]; // scope 0 at $DIR/match_arm_scopes.rs:+2:42: +2:73 -+ switchInt(move _9) -> [0: bb9, otherwise: bb8]; // scope 0 at $DIR/match_arm_scopes.rs:+2:42: +2:73 + _9 = (*_6); +- switchInt(move _9) -> [0: bb12, otherwise: bb11]; ++ switchInt(move _9) -> [0: bb9, otherwise: bb8]; } - bb11: { + bb8: { - StorageDead(_10); // scope 0 at $DIR/match_arm_scopes.rs:+2:72: +2:73 - StorageDead(_9); // scope 0 at $DIR/match_arm_scopes.rs:+2:72: +2:73 -- FakeRead(ForMatchGuard, _3); // scope 0 at $DIR/match_arm_scopes.rs:+2:72: +2:73 -- FakeRead(ForMatchGuard, _4); // scope 0 at $DIR/match_arm_scopes.rs:+2:72: +2:73 -- FakeRead(ForGuardBinding, _6); // scope 0 at $DIR/match_arm_scopes.rs:+2:72: +2:73 -- FakeRead(ForGuardBinding, _8); // scope 0 at $DIR/match_arm_scopes.rs:+2:72: +2:73 - StorageLive(_5); // scope 0 at $DIR/match_arm_scopes.rs:+2:17: +2:18 - _5 = (_2.1: bool); // scope 0 at $DIR/match_arm_scopes.rs:+2:17: +2:18 - StorageLive(_7); // scope 0 at $DIR/match_arm_scopes.rs:+2:20: +2:21 - _7 = move (_2.2: std::string::String); // scope 0 at $DIR/match_arm_scopes.rs:+2:20: +2:21 -- goto -> bb7; // scope 0 at $DIR/match_arm_scopes.rs:+1:5: +4:6 -+ goto -> bb4; // scope 0 at $DIR/match_arm_scopes.rs:+1:5: +4:6 + StorageDead(_10); + StorageDead(_9); +- FakeRead(ForMatchGuard, _3); +- FakeRead(ForMatchGuard, _4); +- FakeRead(ForGuardBinding, _6); +- FakeRead(ForGuardBinding, _8); + StorageLive(_5); + _5 = (_2.1: bool); + StorageLive(_7); + _7 = move (_2.2: std::string::String); +- goto -> bb7; ++ goto -> bb4; } - bb12: { + bb9: { - StorageDead(_10); // scope 0 at $DIR/match_arm_scopes.rs:+2:72: +2:73 - StorageDead(_9); // scope 0 at $DIR/match_arm_scopes.rs:+2:72: +2:73 - StorageDead(_8); // scope 0 at $DIR/match_arm_scopes.rs:+2:77: +2:78 - StorageDead(_6); // scope 0 at $DIR/match_arm_scopes.rs:+2:77: +2:78 -- falseEdge -> [real: bb2, imaginary: bb3]; // scope 0 at $DIR/match_arm_scopes.rs:+2:42: +2:73 -+ goto -> bb1; // scope 0 at $DIR/match_arm_scopes.rs:+2:42: +2:73 + StorageDead(_10); + StorageDead(_9); + StorageDead(_8); + StorageDead(_6); +- falseEdge -> [real: bb2, imaginary: bb3]; ++ goto -> bb1; } - bb13: { + bb10: { - StorageLive(_6); // scope 0 at $DIR/match_arm_scopes.rs:+2:26: +2:27 - _6 = &(_2.0: bool); // scope 0 at $DIR/match_arm_scopes.rs:+2:26: +2:27 - StorageLive(_8); // scope 0 at $DIR/match_arm_scopes.rs:+2:36: +2:37 - _8 = &(_2.2: std::string::String); // scope 0 at $DIR/match_arm_scopes.rs:+2:36: +2:37 -- _3 = &shallow (_2.0: bool); // scope 0 at $DIR/match_arm_scopes.rs:+1:11: +1:16 -- _4 = &shallow (_2.1: bool); // scope 0 at $DIR/match_arm_scopes.rs:+1:11: +1:16 - StorageLive(_12); // scope 0 at $DIR/match_arm_scopes.rs:+2:42: +2:73 - StorageLive(_13); // scope 0 at $DIR/match_arm_scopes.rs:+2:45: +2:49 - _13 = _1; // scope 0 at $DIR/match_arm_scopes.rs:+2:45: +2:49 -- switchInt(move _13) -> [0: bb15, otherwise: bb14]; // scope 0 at $DIR/match_arm_scopes.rs:+2:45: +2:49 -+ switchInt(move _13) -> [0: bb12, otherwise: bb11]; // scope 0 at $DIR/match_arm_scopes.rs:+2:45: +2:49 + StorageLive(_6); + _6 = &(_2.0: bool); + StorageLive(_8); + _8 = &(_2.2: std::string::String); +- _3 = &shallow (_2.0: bool); +- _4 = &shallow (_2.1: bool); + StorageLive(_12); + StorageLive(_13); + _13 = _1; +- switchInt(move _13) -> [0: bb15, otherwise: bb14]; ++ switchInt(move _13) -> [0: bb12, otherwise: bb11]; } - bb14: { + bb11: { - _0 = const 3_i32; // scope 0 at $DIR/match_arm_scopes.rs:+2:59: +2:60 - StorageDead(_13); // scope 0 at $DIR/match_arm_scopes.rs:+2:72: +2:73 - StorageDead(_12); // scope 0 at $DIR/match_arm_scopes.rs:+2:72: +2:73 -- goto -> bb23; // scope 0 at no-location -+ goto -> bb20; // scope 0 at no-location + _0 = const 3_i32; + StorageDead(_13); + StorageDead(_12); +- goto -> bb23; ++ goto -> bb20; } - bb15: { + bb12: { - _12 = (*_6); // scope 0 at $DIR/match_arm_scopes.rs:+2:70: +2:71 -- switchInt(move _12) -> [0: bb17, otherwise: bb16]; // scope 0 at $DIR/match_arm_scopes.rs:+2:42: +2:73 -+ switchInt(move _12) -> [0: bb14, otherwise: bb13]; // scope 0 at $DIR/match_arm_scopes.rs:+2:42: +2:73 + _12 = (*_6); +- switchInt(move _12) -> [0: bb17, otherwise: bb16]; ++ switchInt(move _12) -> [0: bb14, otherwise: bb13]; } - bb16: { + bb13: { - StorageDead(_13); // scope 0 at $DIR/match_arm_scopes.rs:+2:72: +2:73 - StorageDead(_12); // scope 0 at $DIR/match_arm_scopes.rs:+2:72: +2:73 -- FakeRead(ForMatchGuard, _3); // scope 0 at $DIR/match_arm_scopes.rs:+2:72: +2:73 -- FakeRead(ForMatchGuard, _4); // scope 0 at $DIR/match_arm_scopes.rs:+2:72: +2:73 -- FakeRead(ForGuardBinding, _6); // scope 0 at $DIR/match_arm_scopes.rs:+2:72: +2:73 -- FakeRead(ForGuardBinding, _8); // scope 0 at $DIR/match_arm_scopes.rs:+2:72: +2:73 - StorageLive(_5); // scope 0 at $DIR/match_arm_scopes.rs:+2:26: +2:27 - _5 = (_2.0: bool); // scope 0 at $DIR/match_arm_scopes.rs:+2:26: +2:27 - StorageLive(_7); // scope 0 at $DIR/match_arm_scopes.rs:+2:36: +2:37 - _7 = move (_2.2: std::string::String); // scope 0 at $DIR/match_arm_scopes.rs:+2:36: +2:37 -- goto -> bb7; // scope 0 at $DIR/match_arm_scopes.rs:+1:5: +4:6 -+ goto -> bb4; // scope 0 at $DIR/match_arm_scopes.rs:+1:5: +4:6 + StorageDead(_13); + StorageDead(_12); +- FakeRead(ForMatchGuard, _3); +- FakeRead(ForMatchGuard, _4); +- FakeRead(ForGuardBinding, _6); +- FakeRead(ForGuardBinding, _8); + StorageLive(_5); + _5 = (_2.0: bool); + StorageLive(_7); + _7 = move (_2.2: std::string::String); +- goto -> bb7; ++ goto -> bb4; } - bb17: { + bb14: { - StorageDead(_13); // scope 0 at $DIR/match_arm_scopes.rs:+2:72: +2:73 - StorageDead(_12); // scope 0 at $DIR/match_arm_scopes.rs:+2:72: +2:73 - StorageDead(_8); // scope 0 at $DIR/match_arm_scopes.rs:+2:77: +2:78 - StorageDead(_6); // scope 0 at $DIR/match_arm_scopes.rs:+2:77: +2:78 -- falseEdge -> [real: bb4, imaginary: bb5]; // scope 0 at $DIR/match_arm_scopes.rs:+2:42: +2:73 -+ goto -> bb2; // scope 0 at $DIR/match_arm_scopes.rs:+2:42: +2:73 + StorageDead(_13); + StorageDead(_12); + StorageDead(_8); + StorageDead(_6); +- falseEdge -> [real: bb4, imaginary: bb5]; ++ goto -> bb2; } - bb18: { + bb15: { - StorageDead(_7); // scope 0 at $DIR/match_arm_scopes.rs:+2:77: +2:78 - StorageDead(_5); // scope 0 at $DIR/match_arm_scopes.rs:+2:77: +2:78 - StorageDead(_8); // scope 0 at $DIR/match_arm_scopes.rs:+2:77: +2:78 - StorageDead(_6); // scope 0 at $DIR/match_arm_scopes.rs:+2:77: +2:78 -- goto -> bb22; // scope 0 at $DIR/match_arm_scopes.rs:+2:77: +2:78 -+ goto -> bb19; // scope 0 at $DIR/match_arm_scopes.rs:+2:77: +2:78 + StorageDead(_7); + StorageDead(_5); + StorageDead(_8); + StorageDead(_6); +- goto -> bb22; ++ goto -> bb19; } - bb19: { + bb16: { - _0 = const 2_i32; // scope 2 at $DIR/match_arm_scopes.rs:+3:41: +3:42 -- drop(_16) -> [return: bb21, unwind: bb25]; // scope 0 at $DIR/match_arm_scopes.rs:+3:41: +3:42 -+ drop(_16) -> [return: bb18, unwind: bb22]; // scope 0 at $DIR/match_arm_scopes.rs:+3:41: +3:42 + _0 = const 2_i32; +- drop(_16) -> [return: bb21, unwind: bb25]; ++ drop(_16) -> [return: bb18, unwind: bb22]; } - bb20: { + bb17: { - StorageLive(_15); // scope 0 at $DIR/match_arm_scopes.rs:+3:16: +3:17 - _15 = (_2.1: bool); // scope 0 at $DIR/match_arm_scopes.rs:+3:16: +3:17 - StorageLive(_16); // scope 0 at $DIR/match_arm_scopes.rs:+3:19: +3:20 - _16 = move (_2.2: std::string::String); // scope 0 at $DIR/match_arm_scopes.rs:+3:19: +3:20 -- goto -> bb19; // scope 0 at $DIR/match_arm_scopes.rs:+1:5: +4:6 -+ goto -> bb16; // scope 0 at $DIR/match_arm_scopes.rs:+1:5: +4:6 + StorageLive(_15); + _15 = (_2.1: bool); + StorageLive(_16); + _16 = move (_2.2: std::string::String); +- goto -> bb19; ++ goto -> bb16; } - bb21: { + bb18: { - StorageDead(_16); // scope 0 at $DIR/match_arm_scopes.rs:+3:41: +3:42 - StorageDead(_15); // scope 0 at $DIR/match_arm_scopes.rs:+3:41: +3:42 -- goto -> bb22; // scope 0 at $DIR/match_arm_scopes.rs:+3:41: +3:42 -+ goto -> bb19; // scope 0 at $DIR/match_arm_scopes.rs:+3:41: +3:42 + StorageDead(_16); + StorageDead(_15); +- goto -> bb22; ++ goto -> bb19; } - bb22: { -- drop(_2) -> [return: bb24, unwind: bb26]; // scope 0 at $DIR/match_arm_scopes.rs:+5:1: +5:2 +- drop(_2) -> [return: bb24, unwind: bb26]; + bb19: { -+ goto -> bb26; // scope 0 at $DIR/match_arm_scopes.rs:+5:1: +5:2 ++ goto -> bb26; } - bb23: { + bb20: { - StorageDead(_8); // scope 0 at $DIR/match_arm_scopes.rs:+2:77: +2:78 - StorageDead(_6); // scope 0 at $DIR/match_arm_scopes.rs:+2:77: +2:78 -- drop(_2) -> [return: bb24, unwind: bb26]; // scope 0 at $DIR/match_arm_scopes.rs:+5:1: +5:2 -+ drop(_2) -> [return: bb21, unwind: bb23]; // scope 0 at $DIR/match_arm_scopes.rs:+5:1: +5:2 + StorageDead(_8); + StorageDead(_6); +- drop(_2) -> [return: bb24, unwind: bb26]; ++ drop(_2) -> [return: bb21, unwind: bb23]; } - bb24: { + bb21: { - return; // scope 0 at $DIR/match_arm_scopes.rs:+5:2: +5:2 + return; } - bb25 (cleanup): { -- drop(_2) -> [return: bb26, unwind terminate]; // scope 0 at $DIR/match_arm_scopes.rs:+5:1: +5:2 +- drop(_2) -> [return: bb26, unwind terminate]; + bb22 (cleanup): { -+ goto -> bb27; // scope 0 at $DIR/match_arm_scopes.rs:+5:1: +5:2 ++ goto -> bb27; } - bb26 (cleanup): { + bb23 (cleanup): { - resume; // scope 0 at $DIR/match_arm_scopes.rs:+0:1: +5:2 + resume; + } + + bb24: { -+ goto -> bb21; // scope 0 at $DIR/match_arm_scopes.rs:+5:1: +5:2 ++ goto -> bb21; + } + + bb25 (cleanup): { -+ goto -> bb23; // scope 0 at $DIR/match_arm_scopes.rs:+5:1: +5:2 ++ goto -> bb23; + } + + bb26: { -+ goto -> bb24; // scope 0 at $DIR/match_arm_scopes.rs:+5:1: +5:2 ++ goto -> bb24; + } + + bb27 (cleanup): { -+ goto -> bb23; // scope 0 at $DIR/match_arm_scopes.rs:+5:1: +5:2 ++ goto -> bb23; } } diff --git a/tests/mir-opt/match_test.main.SimplifyCfg-initial.after.mir b/tests/mir-opt/match_test.main.SimplifyCfg-initial.after.mir index d51dbf4258c54..7f8eb82c772fe 100644 --- a/tests/mir-opt/match_test.main.SimplifyCfg-initial.after.mir +++ b/tests/mir-opt/match_test.main.SimplifyCfg-initial.after.mir @@ -1,106 +1,106 @@ // MIR for `main` after SimplifyCfg-initial fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/match_test.rs:+0:11: +0:11 - let _1: i32; // in scope 0 at $DIR/match_test.rs:+1:9: +1:10 - let _3: i32; // in scope 0 at $DIR/match_test.rs:+6:5: +11:6 - let mut _4: bool; // in scope 0 at $DIR/match_test.rs:+8:9: +8:16 - let mut _5: bool; // in scope 0 at $DIR/match_test.rs:+8:9: +8:16 - let mut _6: bool; // in scope 0 at $DIR/match_test.rs:+7:9: +7:14 - let mut _7: bool; // in scope 0 at $DIR/match_test.rs:+7:9: +7:14 - let mut _8: &i32; // in scope 0 at $DIR/match_test.rs:+6:11: +6:12 - let mut _9: bool; // in scope 0 at $DIR/match_test.rs:+7:18: +7:19 + let mut _0: (); + let _1: i32; + let _3: i32; + let mut _4: bool; + let mut _5: bool; + let mut _6: bool; + let mut _7: bool; + let mut _8: &i32; + let mut _9: bool; scope 1 { - debug x => _1; // in scope 1 at $DIR/match_test.rs:+1:9: +1:10 - let _2: bool; // in scope 1 at $DIR/match_test.rs:+2:9: +2:10 + debug x => _1; + let _2: bool; scope 2 { - debug b => _2; // in scope 2 at $DIR/match_test.rs:+2:9: +2:10 + debug b => _2; } } bb0: { - StorageLive(_1); // scope 0 at $DIR/match_test.rs:+1:9: +1:10 - _1 = const 3_i32; // scope 0 at $DIR/match_test.rs:+1:13: +1:14 - FakeRead(ForLet(None), _1); // scope 0 at $DIR/match_test.rs:+1:9: +1:10 - StorageLive(_2); // scope 1 at $DIR/match_test.rs:+2:9: +2:10 - _2 = const true; // scope 1 at $DIR/match_test.rs:+2:13: +2:17 - FakeRead(ForLet(None), _2); // scope 1 at $DIR/match_test.rs:+2:9: +2:10 - StorageLive(_3); // scope 2 at $DIR/match_test.rs:+6:5: +11:6 - FakeRead(ForMatchedPlace(None), _1); // scope 2 at $DIR/match_test.rs:+6:11: +6:12 - _6 = Le(const 0_i32, _1); // scope 2 at $DIR/match_test.rs:+7:9: +7:14 - switchInt(move _6) -> [0: bb4, otherwise: bb1]; // scope 2 at $DIR/match_test.rs:+7:9: +7:14 + StorageLive(_1); + _1 = const 3_i32; + FakeRead(ForLet(None), _1); + StorageLive(_2); + _2 = const true; + FakeRead(ForLet(None), _2); + StorageLive(_3); + FakeRead(ForMatchedPlace(None), _1); + _6 = Le(const 0_i32, _1); + switchInt(move _6) -> [0: bb4, otherwise: bb1]; } bb1: { - _7 = Lt(_1, const 10_i32); // scope 2 at $DIR/match_test.rs:+7:9: +7:14 - switchInt(move _7) -> [0: bb4, otherwise: bb2]; // scope 2 at $DIR/match_test.rs:+7:9: +7:14 + _7 = Lt(_1, const 10_i32); + switchInt(move _7) -> [0: bb4, otherwise: bb2]; } bb2: { - falseEdge -> [real: bb9, imaginary: bb6]; // scope 2 at $DIR/match_test.rs:+7:9: +7:14 + falseEdge -> [real: bb9, imaginary: bb6]; } bb3: { - _3 = const 3_i32; // scope 2 at $DIR/match_test.rs:+10:14: +10:15 - goto -> bb14; // scope 2 at $DIR/match_test.rs:+10:14: +10:15 + _3 = const 3_i32; + goto -> bb14; } bb4: { - _4 = Le(const 10_i32, _1); // scope 2 at $DIR/match_test.rs:+8:9: +8:16 - switchInt(move _4) -> [0: bb7, otherwise: bb5]; // scope 2 at $DIR/match_test.rs:+8:9: +8:16 + _4 = Le(const 10_i32, _1); + switchInt(move _4) -> [0: bb7, otherwise: bb5]; } bb5: { - _5 = Le(_1, const 20_i32); // scope 2 at $DIR/match_test.rs:+8:9: +8:16 - switchInt(move _5) -> [0: bb7, otherwise: bb6]; // scope 2 at $DIR/match_test.rs:+8:9: +8:16 + _5 = Le(_1, const 20_i32); + switchInt(move _5) -> [0: bb7, otherwise: bb6]; } bb6: { - falseEdge -> [real: bb12, imaginary: bb8]; // scope 2 at $DIR/match_test.rs:+8:9: +8:16 + falseEdge -> [real: bb12, imaginary: bb8]; } bb7: { - switchInt(_1) -> [4294967295: bb8, otherwise: bb3]; // scope 2 at $DIR/match_test.rs:+6:5: +6:12 + switchInt(_1) -> [4294967295: bb8, otherwise: bb3]; } bb8: { - falseEdge -> [real: bb13, imaginary: bb3]; // scope 2 at $DIR/match_test.rs:+9:9: +9:11 + falseEdge -> [real: bb13, imaginary: bb3]; } bb9: { - _8 = &shallow _1; // scope 2 at $DIR/match_test.rs:+6:11: +6:12 - StorageLive(_9); // scope 2 at $DIR/match_test.rs:+7:18: +7:19 - _9 = _2; // scope 2 at $DIR/match_test.rs:+7:18: +7:19 - switchInt(move _9) -> [0: bb11, otherwise: bb10]; // scope 2 at $DIR/match_test.rs:+7:18: +7:19 + _8 = &shallow _1; + StorageLive(_9); + _9 = _2; + switchInt(move _9) -> [0: bb11, otherwise: bb10]; } bb10: { - StorageDead(_9); // scope 2 at $DIR/match_test.rs:+7:18: +7:19 - FakeRead(ForMatchGuard, _8); // scope 2 at $DIR/match_test.rs:+7:18: +7:19 - _3 = const 0_i32; // scope 2 at $DIR/match_test.rs:+7:23: +7:24 - goto -> bb14; // scope 2 at $DIR/match_test.rs:+7:23: +7:24 + StorageDead(_9); + FakeRead(ForMatchGuard, _8); + _3 = const 0_i32; + goto -> bb14; } bb11: { - StorageDead(_9); // scope 2 at $DIR/match_test.rs:+7:18: +7:19 - falseEdge -> [real: bb3, imaginary: bb6]; // scope 2 at $DIR/match_test.rs:+7:18: +7:19 + StorageDead(_9); + falseEdge -> [real: bb3, imaginary: bb6]; } bb12: { - _3 = const 1_i32; // scope 2 at $DIR/match_test.rs:+8:20: +8:21 - goto -> bb14; // scope 2 at $DIR/match_test.rs:+8:20: +8:21 + _3 = const 1_i32; + goto -> bb14; } bb13: { - _3 = const 2_i32; // scope 2 at $DIR/match_test.rs:+9:15: +9:16 - goto -> bb14; // scope 2 at $DIR/match_test.rs:+9:15: +9:16 + _3 = const 2_i32; + goto -> bb14; } bb14: { - StorageDead(_3); // scope 2 at $DIR/match_test.rs:+11:6: +11:7 - _0 = const (); // scope 0 at $DIR/match_test.rs:+0:11: +12:2 - StorageDead(_2); // scope 1 at $DIR/match_test.rs:+12:1: +12:2 - StorageDead(_1); // scope 0 at $DIR/match_test.rs:+12:1: +12:2 - return; // scope 0 at $DIR/match_test.rs:+12:2: +12:2 + StorageDead(_3); + _0 = const (); + StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/matches_reduce_branches.bar.MatchBranchSimplification.diff b/tests/mir-opt/matches_reduce_branches.bar.MatchBranchSimplification.diff index 92f8d4e14abbd..65da13eec50e3 100644 --- a/tests/mir-opt/matches_reduce_branches.bar.MatchBranchSimplification.diff +++ b/tests/mir-opt/matches_reduce_branches.bar.MatchBranchSimplification.diff @@ -2,83 +2,83 @@ + // MIR for `bar` after MatchBranchSimplification fn bar(_1: i32) -> (bool, bool, bool, bool) { - debug i => _1; // in scope 0 at $DIR/matches_reduce_branches.rs:+0:8: +0:9 - let mut _0: (bool, bool, bool, bool); // return place in scope 0 at $DIR/matches_reduce_branches.rs:+0:19: +0:43 - let _2: bool; // in scope 0 at $DIR/matches_reduce_branches.rs:+1:9: +1:10 - let _6: (); // in scope 0 at $DIR/matches_reduce_branches.rs:+6:5: +21:6 - let mut _7: bool; // in scope 0 at $DIR/matches_reduce_branches.rs:+23:6: +23:7 - let mut _8: bool; // in scope 0 at $DIR/matches_reduce_branches.rs:+23:9: +23:10 - let mut _9: bool; // in scope 0 at $DIR/matches_reduce_branches.rs:+23:12: +23:13 - let mut _10: bool; // in scope 0 at $DIR/matches_reduce_branches.rs:+23:15: +23:16 -+ let mut _11: i32; // in scope 0 at $DIR/matches_reduce_branches.rs:+6:5: +6:12 + debug i => _1; + let mut _0: (bool, bool, bool, bool); + let _2: bool; + let _6: (); + let mut _7: bool; + let mut _8: bool; + let mut _9: bool; + let mut _10: bool; ++ let mut _11: i32; scope 1 { - debug a => _2; // in scope 1 at $DIR/matches_reduce_branches.rs:+1:9: +1:10 - let _3: bool; // in scope 1 at $DIR/matches_reduce_branches.rs:+2:9: +2:10 + debug a => _2; + let _3: bool; scope 2 { - debug b => _3; // in scope 2 at $DIR/matches_reduce_branches.rs:+2:9: +2:10 - let _4: bool; // in scope 2 at $DIR/matches_reduce_branches.rs:+3:9: +3:10 + debug b => _3; + let _4: bool; scope 3 { - debug c => _4; // in scope 3 at $DIR/matches_reduce_branches.rs:+3:9: +3:10 - let _5: bool; // in scope 3 at $DIR/matches_reduce_branches.rs:+4:9: +4:10 + debug c => _4; + let _5: bool; scope 4 { - debug d => _5; // in scope 4 at $DIR/matches_reduce_branches.rs:+4:9: +4:10 + debug d => _5; } } } } bb0: { - StorageLive(_2); // scope 0 at $DIR/matches_reduce_branches.rs:+1:9: +1:10 - StorageLive(_3); // scope 1 at $DIR/matches_reduce_branches.rs:+2:9: +2:10 - StorageLive(_4); // scope 2 at $DIR/matches_reduce_branches.rs:+3:9: +3:10 - StorageLive(_5); // scope 3 at $DIR/matches_reduce_branches.rs:+4:9: +4:10 - StorageLive(_6); // scope 4 at $DIR/matches_reduce_branches.rs:+6:5: +21:6 -- switchInt(_1) -> [7: bb2, otherwise: bb1]; // scope 4 at $DIR/matches_reduce_branches.rs:+6:5: +6:12 + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + StorageLive(_5); + StorageLive(_6); +- switchInt(_1) -> [7: bb2, otherwise: bb1]; - } - - bb1: { -- _2 = const true; // scope 4 at $DIR/matches_reduce_branches.rs:+15:13: +15:21 -- _3 = const false; // scope 4 at $DIR/matches_reduce_branches.rs:+16:13: +16:22 -- _4 = const false; // scope 4 at $DIR/matches_reduce_branches.rs:+17:13: +17:22 -- _5 = const true; // scope 4 at $DIR/matches_reduce_branches.rs:+18:13: +18:21 -- _6 = (); // scope 4 at $DIR/matches_reduce_branches.rs:+19:13: +19:15 -- goto -> bb3; // scope 4 at $DIR/matches_reduce_branches.rs:+19:13: +19:15 +- _2 = const true; +- _3 = const false; ++ StorageLive(_11); ++ _11 = _1; ++ _2 = Ne(_11, const 7_i32); ++ _3 = Eq(_11, const 7_i32); + _4 = const false; + _5 = const true; + _6 = (); +- goto -> bb3; - } - - bb2: { -- _2 = const false; // scope 4 at $DIR/matches_reduce_branches.rs:+8:13: +8:22 -- _3 = const true; // scope 4 at $DIR/matches_reduce_branches.rs:+9:13: +9:21 -+ StorageLive(_11); // scope 4 at $DIR/matches_reduce_branches.rs:+6:5: +6:12 -+ _11 = _1; // scope 4 at $DIR/matches_reduce_branches.rs:+6:5: +6:12 -+ _2 = Ne(_11, const 7_i32); // scope 4 at $DIR/matches_reduce_branches.rs:+8:13: +8:22 -+ _3 = Eq(_11, const 7_i32); // scope 4 at $DIR/matches_reduce_branches.rs:+9:13: +9:21 - _4 = const false; // scope 4 at $DIR/matches_reduce_branches.rs:+10:13: +10:22 - _5 = const true; // scope 4 at $DIR/matches_reduce_branches.rs:+11:13: +11:21 - _6 = (); // scope 4 at $DIR/matches_reduce_branches.rs:+12:13: +12:15 -- goto -> bb3; // scope 4 at $DIR/matches_reduce_branches.rs:+12:13: +12:15 +- _2 = const false; +- _3 = const true; +- _4 = const false; +- _5 = const true; +- _6 = (); +- goto -> bb3; - } - - bb3: { -+ StorageDead(_11); // scope 4 at $DIR/matches_reduce_branches.rs:+6:5: +6:12 - StorageDead(_6); // scope 4 at $DIR/matches_reduce_branches.rs:+21:6: +21:7 - StorageLive(_7); // scope 4 at $DIR/matches_reduce_branches.rs:+23:6: +23:7 - _7 = _2; // scope 4 at $DIR/matches_reduce_branches.rs:+23:6: +23:7 - StorageLive(_8); // scope 4 at $DIR/matches_reduce_branches.rs:+23:9: +23:10 - _8 = _3; // scope 4 at $DIR/matches_reduce_branches.rs:+23:9: +23:10 - StorageLive(_9); // scope 4 at $DIR/matches_reduce_branches.rs:+23:12: +23:13 - _9 = _4; // scope 4 at $DIR/matches_reduce_branches.rs:+23:12: +23:13 - StorageLive(_10); // scope 4 at $DIR/matches_reduce_branches.rs:+23:15: +23:16 - _10 = _5; // scope 4 at $DIR/matches_reduce_branches.rs:+23:15: +23:16 - _0 = (move _7, move _8, move _9, move _10); // scope 4 at $DIR/matches_reduce_branches.rs:+23:5: +23:17 - StorageDead(_10); // scope 4 at $DIR/matches_reduce_branches.rs:+23:16: +23:17 - StorageDead(_9); // scope 4 at $DIR/matches_reduce_branches.rs:+23:16: +23:17 - StorageDead(_8); // scope 4 at $DIR/matches_reduce_branches.rs:+23:16: +23:17 - StorageDead(_7); // scope 4 at $DIR/matches_reduce_branches.rs:+23:16: +23:17 - StorageDead(_5); // scope 3 at $DIR/matches_reduce_branches.rs:+24:1: +24:2 - StorageDead(_4); // scope 2 at $DIR/matches_reduce_branches.rs:+24:1: +24:2 - StorageDead(_3); // scope 1 at $DIR/matches_reduce_branches.rs:+24:1: +24:2 - StorageDead(_2); // scope 0 at $DIR/matches_reduce_branches.rs:+24:1: +24:2 - return; // scope 0 at $DIR/matches_reduce_branches.rs:+24:2: +24:2 ++ StorageDead(_11); + StorageDead(_6); + StorageLive(_7); + _7 = _2; + StorageLive(_8); + _8 = _3; + StorageLive(_9); + _9 = _4; + StorageLive(_10); + _10 = _5; + _0 = (move _7, move _8, move _9, move _10); + StorageDead(_10); + StorageDead(_9); + StorageDead(_8); + StorageDead(_7); + StorageDead(_5); + StorageDead(_4); + StorageDead(_3); + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/matches_reduce_branches.foo.MatchBranchSimplification.diff b/tests/mir-opt/matches_reduce_branches.foo.MatchBranchSimplification.diff index 0580f73341d21..052e2e126643e 100644 --- a/tests/mir-opt/matches_reduce_branches.foo.MatchBranchSimplification.diff +++ b/tests/mir-opt/matches_reduce_branches.foo.MatchBranchSimplification.diff @@ -2,54 +2,52 @@ + // MIR for `foo` after MatchBranchSimplification fn foo(_1: Option<()>) -> () { - debug bar => _1; // in scope 0 at $DIR/matches_reduce_branches.rs:+0:8: +0:11 - let mut _0: (); // return place in scope 0 at $DIR/matches_reduce_branches.rs:+0:25: +0:25 - let mut _2: bool; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _3: isize; // in scope 0 at $DIR/matches_reduce_branches.rs:+1:22: +1:26 -+ let mut _4: isize; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL + debug bar => _1; + let mut _0: (); + let mut _2: bool; + let mut _3: isize; ++ let mut _4: isize; bb0: { - StorageLive(_2); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _3 = discriminant(_1); // scope 0 at $DIR/matches_reduce_branches.rs:+1:17: +1:20 -- switchInt(move _3) -> [0: bb2, otherwise: bb1]; // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL -+ StorageLive(_4); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL -+ _4 = move _3; // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL -+ _2 = Eq(_4, const 0_isize); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL -+ StorageDead(_4); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL -+ switchInt(move _2) -> [0: bb2, otherwise: bb1]; // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL + StorageLive(_2); + _3 = discriminant(_1); +- switchInt(move _3) -> [0: bb2, otherwise: bb1]; ++ StorageLive(_4); ++ _4 = move _3; ++ _2 = Eq(_4, const 0_isize); ++ StorageDead(_4); ++ switchInt(move _2) -> [0: bb2, otherwise: bb1]; } bb1: { -- _2 = const false; // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL -- goto -> bb3; // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL +- _2 = const false; ++ _0 = (); + goto -> bb3; + } + + bb2: { +- _2 = const true; ++ _0 = const (); + goto -> bb3; + } + + bb3: { +- switchInt(move _2) -> [0: bb5, otherwise: bb4]; - } - -- bb2: { -- _2 = const true; // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL -- goto -> bb3; // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL +- bb4: { +- _0 = (); +- goto -> bb6; - } - -- bb3: { -- switchInt(move _2) -> [0: bb5, otherwise: bb4]; // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL +- bb5: { +- _0 = const (); +- goto -> bb6; - } - -- bb4: { - _0 = (); // scope 0 at $DIR/matches_reduce_branches.rs:+2:9: +2:11 -- goto -> bb6; // scope 0 at $DIR/matches_reduce_branches.rs:+1:5: +3:6 -+ goto -> bb3; // scope 0 at $DIR/matches_reduce_branches.rs:+1:5: +3:6 - } - -- bb5: { -+ bb2: { - _0 = const (); // scope 0 at $DIR/matches_reduce_branches.rs:+3:6: +3:6 -- goto -> bb6; // scope 0 at $DIR/matches_reduce_branches.rs:+1:5: +3:6 -+ goto -> bb3; // scope 0 at $DIR/matches_reduce_branches.rs:+1:5: +3:6 - } - - bb6: { -+ bb3: { - StorageDead(_2); // scope 0 at $DIR/matches_reduce_branches.rs:+3:5: +3:6 - return; // scope 0 at $DIR/matches_reduce_branches.rs:+4:2: +4:2 + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/matches_reduce_branches.match_nested_if.MatchBranchSimplification.diff b/tests/mir-opt/matches_reduce_branches.match_nested_if.MatchBranchSimplification.diff index 20e8ef2f72029..b5edbfee0fc1e 100644 --- a/tests/mir-opt/matches_reduce_branches.match_nested_if.MatchBranchSimplification.diff +++ b/tests/mir-opt/matches_reduce_branches.match_nested_if.MatchBranchSimplification.diff @@ -2,112 +2,112 @@ + // MIR for `match_nested_if` after MatchBranchSimplification fn match_nested_if() -> bool { - let mut _0: bool; // return place in scope 0 at $DIR/matches_reduce_branches.rs:+0:25: +0:29 - let _1: bool; // in scope 0 at $DIR/matches_reduce_branches.rs:+1:9: +1:12 - let mut _2: (); // in scope 0 at $DIR/matches_reduce_branches.rs:+1:21: +1:23 - let mut _3: bool; // in scope 0 at $DIR/matches_reduce_branches.rs:+2:15: +6:10 - let mut _4: bool; // in scope 0 at $DIR/matches_reduce_branches.rs:+2:18: +2:76 - let mut _5: bool; // in scope 0 at $DIR/matches_reduce_branches.rs:+2:21: +2:52 - let mut _6: bool; // in scope 0 at $DIR/matches_reduce_branches.rs:+2:24: +2:28 -+ let mut _7: bool; // in scope 0 at $DIR/matches_reduce_branches.rs:+2:24: +2:28 -+ let mut _8: bool; // in scope 0 at $DIR/matches_reduce_branches.rs:+2:21: +2:52 -+ let mut _9: bool; // in scope 0 at $DIR/matches_reduce_branches.rs:+2:18: +2:76 -+ let mut _10: bool; // in scope 0 at $DIR/matches_reduce_branches.rs:+2:15: +6:10 + let mut _0: bool; + let _1: bool; + let mut _2: (); + let mut _3: bool; + let mut _4: bool; + let mut _5: bool; + let mut _6: bool; ++ let mut _7: bool; ++ let mut _8: bool; ++ let mut _9: bool; ++ let mut _10: bool; scope 1 { - debug val => _1; // in scope 1 at $DIR/matches_reduce_branches.rs:+1:9: +1:12 + debug val => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/matches_reduce_branches.rs:+1:9: +1:12 - StorageLive(_2); // scope 0 at $DIR/matches_reduce_branches.rs:+1:21: +1:23 - _2 = (); // scope 0 at $DIR/matches_reduce_branches.rs:+1:21: +1:23 - StorageLive(_3); // scope 0 at $DIR/matches_reduce_branches.rs:+2:15: +6:10 - StorageLive(_4); // scope 0 at $DIR/matches_reduce_branches.rs:+2:18: +2:76 - StorageLive(_5); // scope 0 at $DIR/matches_reduce_branches.rs:+2:21: +2:52 - StorageLive(_6); // scope 0 at $DIR/matches_reduce_branches.rs:+2:24: +2:28 - _6 = const true; // scope 0 at $DIR/matches_reduce_branches.rs:+2:24: +2:28 -- switchInt(move _6) -> [0: bb2, otherwise: bb1]; // scope 0 at $DIR/matches_reduce_branches.rs:+2:24: +2:28 + StorageLive(_1); + StorageLive(_2); + _2 = (); + StorageLive(_3); + StorageLive(_4); + StorageLive(_5); + StorageLive(_6); + _6 = const true; +- switchInt(move _6) -> [0: bb2, otherwise: bb1]; - } - - bb1: { -- _5 = const true; // scope 0 at $DIR/matches_reduce_branches.rs:+2:31: +2:35 -- goto -> bb3; // scope 0 at $DIR/matches_reduce_branches.rs:+2:21: +2:52 +- _5 = const true; +- goto -> bb3; - } - - bb2: { -- _5 = const false; // scope 0 at $DIR/matches_reduce_branches.rs:+2:45: +2:50 -- goto -> bb3; // scope 0 at $DIR/matches_reduce_branches.rs:+2:21: +2:52 +- _5 = const false; +- goto -> bb3; - } - - bb3: { -+ StorageLive(_7); // scope 0 at $DIR/matches_reduce_branches.rs:+2:24: +2:28 -+ _7 = move _6; // scope 0 at $DIR/matches_reduce_branches.rs:+2:24: +2:28 -+ _5 = Ne(_7, const false); // scope 0 at $DIR/matches_reduce_branches.rs:+2:45: +2:50 -+ StorageDead(_7); // scope 0 at $DIR/matches_reduce_branches.rs:+2:24: +2:28 - StorageDead(_6); // scope 0 at $DIR/matches_reduce_branches.rs:+2:51: +2:52 -- switchInt(move _5) -> [0: bb5, otherwise: bb4]; // scope 0 at $DIR/matches_reduce_branches.rs:+2:21: +2:52 ++ StorageLive(_7); ++ _7 = move _6; ++ _5 = Ne(_7, const false); ++ StorageDead(_7); + StorageDead(_6); +- switchInt(move _5) -> [0: bb5, otherwise: bb4]; - } - - bb4: { -- _4 = const true; // scope 0 at $DIR/matches_reduce_branches.rs:+2:55: +2:59 -- goto -> bb6; // scope 0 at $DIR/matches_reduce_branches.rs:+2:18: +2:76 +- _4 = const true; +- goto -> bb6; - } - - bb5: { -- _4 = const false; // scope 0 at $DIR/matches_reduce_branches.rs:+2:69: +2:74 -- goto -> bb6; // scope 0 at $DIR/matches_reduce_branches.rs:+2:18: +2:76 +- _4 = const false; +- goto -> bb6; - } - - bb6: { -+ StorageLive(_8); // scope 0 at $DIR/matches_reduce_branches.rs:+2:21: +2:52 -+ _8 = move _5; // scope 0 at $DIR/matches_reduce_branches.rs:+2:21: +2:52 -+ _4 = Ne(_8, const false); // scope 0 at $DIR/matches_reduce_branches.rs:+2:69: +2:74 -+ StorageDead(_8); // scope 0 at $DIR/matches_reduce_branches.rs:+2:21: +2:52 - StorageDead(_5); // scope 0 at $DIR/matches_reduce_branches.rs:+2:75: +2:76 -- switchInt(move _4) -> [0: bb8, otherwise: bb7]; // scope 0 at $DIR/matches_reduce_branches.rs:+2:18: +2:76 ++ StorageLive(_8); ++ _8 = move _5; ++ _4 = Ne(_8, const false); ++ StorageDead(_8); + StorageDead(_5); +- switchInt(move _4) -> [0: bb8, otherwise: bb7]; - } - - bb7: { -- _3 = const true; // scope 0 at $DIR/matches_reduce_branches.rs:+3:13: +3:17 -- goto -> bb9; // scope 0 at $DIR/matches_reduce_branches.rs:+2:15: +6:10 +- _3 = const true; +- goto -> bb9; - } - - bb8: { -- _3 = const false; // scope 0 at $DIR/matches_reduce_branches.rs:+5:13: +5:18 -- goto -> bb9; // scope 0 at $DIR/matches_reduce_branches.rs:+2:15: +6:10 +- _3 = const false; +- goto -> bb9; - } - - bb9: { -- switchInt(move _3) -> [0: bb11, otherwise: bb10]; // scope 0 at $DIR/matches_reduce_branches.rs:+2:15: +6:10 +- switchInt(move _3) -> [0: bb11, otherwise: bb10]; - } - - bb10: { -+ StorageLive(_9); // scope 0 at $DIR/matches_reduce_branches.rs:+2:18: +2:76 -+ _9 = move _4; // scope 0 at $DIR/matches_reduce_branches.rs:+2:18: +2:76 -+ _3 = Ne(_9, const false); // scope 0 at $DIR/matches_reduce_branches.rs:+5:13: +5:18 -+ StorageDead(_9); // scope 0 at $DIR/matches_reduce_branches.rs:+2:18: +2:76 -+ StorageLive(_10); // scope 0 at $DIR/matches_reduce_branches.rs:+2:15: +6:10 -+ _10 = move _3; // scope 0 at $DIR/matches_reduce_branches.rs:+2:15: +6:10 - StorageDead(_4); // scope 0 at $DIR/matches_reduce_branches.rs:+6:9: +6:10 - StorageDead(_3); // scope 0 at $DIR/matches_reduce_branches.rs:+6:9: +6:10 -- _1 = const true; // scope 0 at $DIR/matches_reduce_branches.rs:+8:13: +8:17 -- goto -> bb12; // scope 0 at $DIR/matches_reduce_branches.rs:+8:13: +8:17 ++ StorageLive(_9); ++ _9 = move _4; ++ _3 = Ne(_9, const false); ++ StorageDead(_9); ++ StorageLive(_10); ++ _10 = move _3; + StorageDead(_4); + StorageDead(_3); +- _1 = const true; +- goto -> bb12; - } - - bb11: { -- StorageDead(_4); // scope 0 at $DIR/matches_reduce_branches.rs:+6:9: +6:10 -- StorageDead(_3); // scope 0 at $DIR/matches_reduce_branches.rs:+6:9: +6:10 -- _1 = const false; // scope 0 at $DIR/matches_reduce_branches.rs:+10:14: +10:19 -- goto -> bb12; // scope 0 at $DIR/matches_reduce_branches.rs:+10:14: +10:19 +- StorageDead(_4); +- StorageDead(_3); +- _1 = const false; +- goto -> bb12; - } - - bb12: { -+ _1 = Ne(_10, const false); // scope 0 at $DIR/matches_reduce_branches.rs:+10:14: +10:19 -+ StorageDead(_10); // scope 0 at $DIR/matches_reduce_branches.rs:+2:15: +6:10 - StorageDead(_2); // scope 0 at $DIR/matches_reduce_branches.rs:+11:6: +11:7 - _0 = _1; // scope 1 at $DIR/matches_reduce_branches.rs:+12:5: +12:8 - StorageDead(_1); // scope 0 at $DIR/matches_reduce_branches.rs:+13:1: +13:2 - return; // scope 0 at $DIR/matches_reduce_branches.rs:+13:2: +13:2 ++ _1 = Ne(_10, const false); ++ StorageDead(_10); + StorageDead(_2); + _0 = _1; + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/matches_u8.exhaustive_match.MatchBranchSimplification.diff b/tests/mir-opt/matches_u8.exhaustive_match.MatchBranchSimplification.diff index 3766d99a43b3b..fec5855636605 100644 --- a/tests/mir-opt/matches_u8.exhaustive_match.MatchBranchSimplification.diff +++ b/tests/mir-opt/matches_u8.exhaustive_match.MatchBranchSimplification.diff @@ -2,31 +2,31 @@ + // MIR for `exhaustive_match` after MatchBranchSimplification fn exhaustive_match(_1: E) -> u8 { - debug e => _1; // in scope 0 at $DIR/matches_u8.rs:+0:25: +0:26 - let mut _0: u8; // return place in scope 0 at $DIR/matches_u8.rs:+0:34: +0:36 - let mut _2: isize; // in scope 0 at $DIR/matches_u8.rs:+2:9: +2:13 + debug e => _1; + let mut _0: u8; + let mut _2: isize; bb0: { - _2 = discriminant(_1); // scope 0 at $DIR/matches_u8.rs:+1:11: +1:12 - switchInt(move _2) -> [0: bb3, 1: bb1, otherwise: bb2]; // scope 0 at $DIR/matches_u8.rs:+1:5: +1:12 + _2 = discriminant(_1); + switchInt(move _2) -> [0: bb3, 1: bb1, otherwise: bb2]; } bb1: { - _0 = const 1_u8; // scope 0 at $DIR/matches_u8.rs:+3:17: +3:18 - goto -> bb4; // scope 0 at $DIR/matches_u8.rs:+3:17: +3:18 + _0 = const 1_u8; + goto -> bb4; } bb2: { - unreachable; // scope 0 at $DIR/matches_u8.rs:+1:11: +1:12 + unreachable; } bb3: { - _0 = const 0_u8; // scope 0 at $DIR/matches_u8.rs:+2:17: +2:18 - goto -> bb4; // scope 0 at $DIR/matches_u8.rs:+2:17: +2:18 + _0 = const 0_u8; + goto -> bb4; } bb4: { - return; // scope 0 at $DIR/matches_u8.rs:+5:2: +5:2 + return; } } diff --git a/tests/mir-opt/matches_u8.exhaustive_match_i8.MatchBranchSimplification.diff b/tests/mir-opt/matches_u8.exhaustive_match_i8.MatchBranchSimplification.diff index b5146cd539f39..94d3ce6c97158 100644 --- a/tests/mir-opt/matches_u8.exhaustive_match_i8.MatchBranchSimplification.diff +++ b/tests/mir-opt/matches_u8.exhaustive_match_i8.MatchBranchSimplification.diff @@ -2,31 +2,31 @@ + // MIR for `exhaustive_match_i8` after MatchBranchSimplification fn exhaustive_match_i8(_1: E) -> i8 { - debug e => _1; // in scope 0 at $DIR/matches_u8.rs:+0:28: +0:29 - let mut _0: i8; // return place in scope 0 at $DIR/matches_u8.rs:+0:37: +0:39 - let mut _2: isize; // in scope 0 at $DIR/matches_u8.rs:+2:9: +2:13 + debug e => _1; + let mut _0: i8; + let mut _2: isize; bb0: { - _2 = discriminant(_1); // scope 0 at $DIR/matches_u8.rs:+1:11: +1:12 - switchInt(move _2) -> [0: bb3, 1: bb1, otherwise: bb2]; // scope 0 at $DIR/matches_u8.rs:+1:5: +1:12 + _2 = discriminant(_1); + switchInt(move _2) -> [0: bb3, 1: bb1, otherwise: bb2]; } bb1: { - _0 = const 1_i8; // scope 0 at $DIR/matches_u8.rs:+3:17: +3:18 - goto -> bb4; // scope 0 at $DIR/matches_u8.rs:+3:17: +3:18 + _0 = const 1_i8; + goto -> bb4; } bb2: { - unreachable; // scope 0 at $DIR/matches_u8.rs:+1:11: +1:12 + unreachable; } bb3: { - _0 = const 0_i8; // scope 0 at $DIR/matches_u8.rs:+2:17: +2:18 - goto -> bb4; // scope 0 at $DIR/matches_u8.rs:+2:17: +2:18 + _0 = const 0_i8; + goto -> bb4; } bb4: { - return; // scope 0 at $DIR/matches_u8.rs:+5:2: +5:2 + return; } } diff --git a/tests/mir-opt/multiple_return_terminators.test.MultipleReturnTerminators.diff b/tests/mir-opt/multiple_return_terminators.test.MultipleReturnTerminators.diff index 48a11c950639a..e28809f38afa6 100644 --- a/tests/mir-opt/multiple_return_terminators.test.MultipleReturnTerminators.diff +++ b/tests/mir-opt/multiple_return_terminators.test.MultipleReturnTerminators.diff @@ -2,11 +2,11 @@ + // MIR for `test` after MultipleReturnTerminators fn test(_1: bool) -> () { - debug x => _1; // in scope 0 at $DIR/multiple_return_terminators.rs:+0:9: +0:10 - let mut _0: (); // return place in scope 0 at $DIR/multiple_return_terminators.rs:+0:18: +0:18 + debug x => _1; + let mut _0: (); bb0: { - return; // scope 0 at $DIR/multiple_return_terminators.rs:+6:2: +6:2 + return; } } diff --git a/tests/mir-opt/nll/named_lifetimes_basic.use_x.nll.0.mir b/tests/mir-opt/nll/named_lifetimes_basic.use_x.nll.0.mir index be5baf6ee3923..1d6b830739019 100644 --- a/tests/mir-opt/nll/named_lifetimes_basic.use_x.nll.0.mir +++ b/tests/mir-opt/nll/named_lifetimes_basic.use_x.nll.0.mir @@ -34,14 +34,14 @@ | '?8: '?3 due to BoringNoLocation at All($DIR/named_lifetimes_basic.rs:12:66: 12:67) ($DIR/named_lifetimes_basic.rs:12:66: 12:67 (#0) | fn use_x(_1: &'?5 mut i32, _2: &'?6 u32, _3: &'?7 u32, _4: &'?8 u32) -> bool { - debug w => _1; // in scope 0 at $DIR/named_lifetimes_basic.rs:+0:26: +0:27 - debug x => _2; // in scope 0 at $DIR/named_lifetimes_basic.rs:+0:42: +0:43 - debug y => _3; // in scope 0 at $DIR/named_lifetimes_basic.rs:+0:54: +0:55 - debug z => _4; // in scope 0 at $DIR/named_lifetimes_basic.rs:+0:66: +0:67 - let mut _0: bool; // return place in scope 0 at $DIR/named_lifetimes_basic.rs:+0:81: +0:85 + debug w => _1; + debug x => _2; + debug y => _3; + debug z => _4; + let mut _0: bool; bb0: { - _0 = const ConstValue(Scalar(0x01): bool); // bb0[0]: scope 0 at $DIR/named_lifetimes_basic.rs:+0:88: +0:92 - return; // bb0[1]: scope 0 at $DIR/named_lifetimes_basic.rs:+0:94: +0:94 + _0 = const ConstValue(Scalar(0x01): bool); + return; } } diff --git a/tests/mir-opt/nll/region_subtyping_basic.main.nll.0.32bit.mir b/tests/mir-opt/nll/region_subtyping_basic.main.nll.0.32bit.mir index c425f3cd5069b..56b0f81657378 100644 --- a/tests/mir-opt/nll/region_subtyping_basic.main.nll.0.32bit.mir +++ b/tests/mir-opt/nll/region_subtyping_basic.main.nll.0.32bit.mir @@ -21,91 +21,85 @@ | '?3: '?4 due to Assignment at Single(bb1[3]) ($DIR/region_subtyping_basic.rs:19:13: 19:14 (#0) | fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/region_subtyping_basic.rs:+0:11: +0:11 - let mut _1: [usize; Const { ty: usize, kind: Leaf(0x00000003) }]; // in scope 0 at $DIR/region_subtyping_basic.rs:+1:9: +1:14 - let _3: usize; // in scope 0 at $DIR/region_subtyping_basic.rs:+2:16: +2:17 - let mut _4: usize; // in scope 0 at $DIR/region_subtyping_basic.rs:+2:14: +2:18 - let mut _5: bool; // in scope 0 at $DIR/region_subtyping_basic.rs:+2:14: +2:18 - let mut _7: bool; // in scope 0 at $DIR/region_subtyping_basic.rs:+4:8: +4:12 - let _8: bool; // in scope 0 at $DIR/region_subtyping_basic.rs:+5:9: +5:18 - let mut _9: usize; // in scope 0 at $DIR/region_subtyping_basic.rs:+5:15: +5:17 - let _10: bool; // in scope 0 at $DIR/region_subtyping_basic.rs:+7:9: +7:18 + let mut _0: (); + let mut _1: [usize; Const { ty: usize, kind: Leaf(0x00000003) }]; + let _3: usize; + let mut _4: usize; + let mut _5: bool; + let mut _7: bool; + let _8: bool; + let mut _9: usize; + let _10: bool; scope 1 { - debug v => _1; // in scope 1 at $DIR/region_subtyping_basic.rs:+1:9: +1:14 - let _2: &'?3 usize; // in scope 1 at $DIR/region_subtyping_basic.rs:+2:9: +2:10 + debug v => _1; + let _2: &'?3 usize; scope 2 { - debug p => _2; // in scope 2 at $DIR/region_subtyping_basic.rs:+2:9: +2:10 - let _6: &'?4 usize; // in scope 2 at $DIR/region_subtyping_basic.rs:+3:9: +3:10 + debug p => _2; + let _6: &'?4 usize; scope 3 { - debug q => _6; // in scope 3 at $DIR/region_subtyping_basic.rs:+3:9: +3:10 + debug q => _6; } } } bb0: { - StorageLive(_1); // bb0[0]: scope 0 at $DIR/region_subtyping_basic.rs:+1:9: +1:14 - _1 = [const ConstValue(Scalar(0x00000001): usize), const ConstValue(Scalar(0x00000002): usize), const ConstValue(Scalar(0x00000003): usize)]; // bb0[1]: scope 0 at $DIR/region_subtyping_basic.rs:+1:17: +1:26 - FakeRead(ForLet(None), _1); // bb0[2]: scope 0 at $DIR/region_subtyping_basic.rs:+1:9: +1:14 - StorageLive(_2); // bb0[3]: scope 1 at $DIR/region_subtyping_basic.rs:+2:9: +2:10 - StorageLive(_3); // bb0[4]: scope 1 at $DIR/region_subtyping_basic.rs:+2:16: +2:17 - _3 = const ConstValue(Scalar(0x00000000): usize); // bb0[5]: scope 1 at $DIR/region_subtyping_basic.rs:+2:16: +2:17 - _4 = Len(_1); // bb0[6]: scope 1 at $DIR/region_subtyping_basic.rs:+2:14: +2:18 - _5 = Lt(_3, _4); // bb0[7]: scope 1 at $DIR/region_subtyping_basic.rs:+2:14: +2:18 - assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind: bb7]; // bb0[8]: scope 1 at $DIR/region_subtyping_basic.rs:+2:14: +2:18 + StorageLive(_1); + _1 = [const ConstValue(Scalar(0x00000001): usize), const ConstValue(Scalar(0x00000002): usize), const ConstValue(Scalar(0x00000003): usize)]; + FakeRead(ForLet(None), _1); + StorageLive(_2); + StorageLive(_3); + _3 = const ConstValue(Scalar(0x00000000): usize); + _4 = Len(_1); + _5 = Lt(_3, _4); + assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind: bb7]; } bb1: { - _2 = &'?2 _1[_3]; // bb1[0]: scope 1 at $DIR/region_subtyping_basic.rs:+2:13: +2:18 - FakeRead(ForLet(None), _2); // bb1[1]: scope 1 at $DIR/region_subtyping_basic.rs:+2:9: +2:10 - StorageLive(_6); // bb1[2]: scope 2 at $DIR/region_subtyping_basic.rs:+3:9: +3:10 - _6 = _2; // bb1[3]: scope 2 at $DIR/region_subtyping_basic.rs:+3:13: +3:14 - FakeRead(ForLet(None), _6); // bb1[4]: scope 2 at $DIR/region_subtyping_basic.rs:+3:9: +3:10 - StorageLive(_7); // bb1[5]: scope 3 at $DIR/region_subtyping_basic.rs:+4:8: +4:12 - _7 = const ConstValue(Scalar(0x01): bool); // bb1[6]: scope 3 at $DIR/region_subtyping_basic.rs:+4:8: +4:12 - switchInt(move _7) -> [0: bb4, otherwise: bb2]; // bb1[7]: scope 3 at $DIR/region_subtyping_basic.rs:+4:8: +4:12 + _2 = &'?2 _1[_3]; + FakeRead(ForLet(None), _2); + StorageLive(_6); + _6 = _2; + FakeRead(ForLet(None), _6); + StorageLive(_7); + _7 = const ConstValue(Scalar(0x01): bool); + switchInt(move _7) -> [0: bb4, otherwise: bb2]; } bb2: { - StorageLive(_8); // bb2[0]: scope 3 at $DIR/region_subtyping_basic.rs:+5:9: +5:18 - StorageLive(_9); // bb2[1]: scope 3 at $DIR/region_subtyping_basic.rs:+5:15: +5:17 - _9 = (*_6); // bb2[2]: scope 3 at $DIR/region_subtyping_basic.rs:+5:15: +5:17 - _8 = ConstValue(ZeroSized: fn(usize) -> bool {use_x})(move _9) -> [return: bb3, unwind: bb7]; // bb2[3]: scope 3 at $DIR/region_subtyping_basic.rs:+5:9: +5:18 - // mir::Constant - // + span: $DIR/region_subtyping_basic.rs:21:9: 21:14 - // + literal: Const { ty: fn(usize) -> bool {use_x}, val: Value() } + StorageLive(_8); + StorageLive(_9); + _9 = (*_6); + _8 = ConstValue(ZeroSized: fn(usize) -> bool {use_x})(move _9) -> [return: bb3, unwind: bb7]; } bb3: { - StorageDead(_9); // bb3[0]: scope 3 at $DIR/region_subtyping_basic.rs:+5:17: +5:18 - StorageDead(_8); // bb3[1]: scope 3 at $DIR/region_subtyping_basic.rs:+5:18: +5:19 - _0 = const ConstValue(ZeroSized: ()); // bb3[2]: scope 3 at $DIR/region_subtyping_basic.rs:+4:13: +6:6 - goto -> bb6; // bb3[3]: scope 3 at $DIR/region_subtyping_basic.rs:+4:5: +8:6 + StorageDead(_9); + StorageDead(_8); + _0 = const ConstValue(ZeroSized: ()); + goto -> bb6; } bb4: { - StorageLive(_10); // bb4[0]: scope 3 at $DIR/region_subtyping_basic.rs:+7:9: +7:18 - _10 = ConstValue(ZeroSized: fn(usize) -> bool {use_x})(const ConstValue(Scalar(0x00000016): usize)) -> [return: bb5, unwind: bb7]; // bb4[1]: scope 3 at $DIR/region_subtyping_basic.rs:+7:9: +7:18 - // mir::Constant - // + span: $DIR/region_subtyping_basic.rs:23:9: 23:14 - // + literal: Const { ty: fn(usize) -> bool {use_x}, val: Value() } + StorageLive(_10); + _10 = ConstValue(ZeroSized: fn(usize) -> bool {use_x})(const ConstValue(Scalar(0x00000016): usize)) -> [return: bb5, unwind: bb7]; } bb5: { - StorageDead(_10); // bb5[0]: scope 3 at $DIR/region_subtyping_basic.rs:+7:18: +7:19 - _0 = const ConstValue(ZeroSized: ()); // bb5[1]: scope 3 at $DIR/region_subtyping_basic.rs:+6:12: +8:6 - goto -> bb6; // bb5[2]: scope 3 at $DIR/region_subtyping_basic.rs:+4:5: +8:6 + StorageDead(_10); + _0 = const ConstValue(ZeroSized: ()); + goto -> bb6; } bb6: { - StorageDead(_7); // bb6[0]: scope 3 at $DIR/region_subtyping_basic.rs:+8:5: +8:6 - StorageDead(_6); // bb6[1]: scope 2 at $DIR/region_subtyping_basic.rs:+9:1: +9:2 - StorageDead(_3); // bb6[2]: scope 1 at $DIR/region_subtyping_basic.rs:+9:1: +9:2 - StorageDead(_2); // bb6[3]: scope 1 at $DIR/region_subtyping_basic.rs:+9:1: +9:2 - StorageDead(_1); // bb6[4]: scope 0 at $DIR/region_subtyping_basic.rs:+9:1: +9:2 - return; // bb6[5]: scope 0 at $DIR/region_subtyping_basic.rs:+9:2: +9:2 + StorageDead(_7); + StorageDead(_6); + StorageDead(_3); + StorageDead(_2); + StorageDead(_1); + return; } bb7 (cleanup): { - resume; // bb7[0]: scope 0 at $DIR/region_subtyping_basic.rs:+0:1: +9:2 + resume; } } diff --git a/tests/mir-opt/nll/region_subtyping_basic.main.nll.0.64bit.mir b/tests/mir-opt/nll/region_subtyping_basic.main.nll.0.64bit.mir index 22ad24f8d7724..83b851eed74f1 100644 --- a/tests/mir-opt/nll/region_subtyping_basic.main.nll.0.64bit.mir +++ b/tests/mir-opt/nll/region_subtyping_basic.main.nll.0.64bit.mir @@ -21,91 +21,85 @@ | '?3: '?4 due to Assignment at Single(bb1[3]) ($DIR/region_subtyping_basic.rs:19:13: 19:14 (#0) | fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/region_subtyping_basic.rs:+0:11: +0:11 - let mut _1: [usize; Const { ty: usize, kind: Leaf(0x0000000000000003) }]; // in scope 0 at $DIR/region_subtyping_basic.rs:+1:9: +1:14 - let _3: usize; // in scope 0 at $DIR/region_subtyping_basic.rs:+2:16: +2:17 - let mut _4: usize; // in scope 0 at $DIR/region_subtyping_basic.rs:+2:14: +2:18 - let mut _5: bool; // in scope 0 at $DIR/region_subtyping_basic.rs:+2:14: +2:18 - let mut _7: bool; // in scope 0 at $DIR/region_subtyping_basic.rs:+4:8: +4:12 - let _8: bool; // in scope 0 at $DIR/region_subtyping_basic.rs:+5:9: +5:18 - let mut _9: usize; // in scope 0 at $DIR/region_subtyping_basic.rs:+5:15: +5:17 - let _10: bool; // in scope 0 at $DIR/region_subtyping_basic.rs:+7:9: +7:18 + let mut _0: (); + let mut _1: [usize; Const { ty: usize, kind: Leaf(0x0000000000000003) }]; + let _3: usize; + let mut _4: usize; + let mut _5: bool; + let mut _7: bool; + let _8: bool; + let mut _9: usize; + let _10: bool; scope 1 { - debug v => _1; // in scope 1 at $DIR/region_subtyping_basic.rs:+1:9: +1:14 - let _2: &'?3 usize; // in scope 1 at $DIR/region_subtyping_basic.rs:+2:9: +2:10 + debug v => _1; + let _2: &'?3 usize; scope 2 { - debug p => _2; // in scope 2 at $DIR/region_subtyping_basic.rs:+2:9: +2:10 - let _6: &'?4 usize; // in scope 2 at $DIR/region_subtyping_basic.rs:+3:9: +3:10 + debug p => _2; + let _6: &'?4 usize; scope 3 { - debug q => _6; // in scope 3 at $DIR/region_subtyping_basic.rs:+3:9: +3:10 + debug q => _6; } } } bb0: { - StorageLive(_1); // bb0[0]: scope 0 at $DIR/region_subtyping_basic.rs:+1:9: +1:14 - _1 = [const ConstValue(Scalar(0x0000000000000001): usize), const ConstValue(Scalar(0x0000000000000002): usize), const ConstValue(Scalar(0x0000000000000003): usize)]; // bb0[1]: scope 0 at $DIR/region_subtyping_basic.rs:+1:17: +1:26 - FakeRead(ForLet(None), _1); // bb0[2]: scope 0 at $DIR/region_subtyping_basic.rs:+1:9: +1:14 - StorageLive(_2); // bb0[3]: scope 1 at $DIR/region_subtyping_basic.rs:+2:9: +2:10 - StorageLive(_3); // bb0[4]: scope 1 at $DIR/region_subtyping_basic.rs:+2:16: +2:17 - _3 = const ConstValue(Scalar(0x0000000000000000): usize); // bb0[5]: scope 1 at $DIR/region_subtyping_basic.rs:+2:16: +2:17 - _4 = Len(_1); // bb0[6]: scope 1 at $DIR/region_subtyping_basic.rs:+2:14: +2:18 - _5 = Lt(_3, _4); // bb0[7]: scope 1 at $DIR/region_subtyping_basic.rs:+2:14: +2:18 - assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind: bb7]; // bb0[8]: scope 1 at $DIR/region_subtyping_basic.rs:+2:14: +2:18 + StorageLive(_1); + _1 = [const ConstValue(Scalar(0x0000000000000001): usize), const ConstValue(Scalar(0x0000000000000002): usize), const ConstValue(Scalar(0x0000000000000003): usize)]; + FakeRead(ForLet(None), _1); + StorageLive(_2); + StorageLive(_3); + _3 = const ConstValue(Scalar(0x0000000000000000): usize); + _4 = Len(_1); + _5 = Lt(_3, _4); + assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind: bb7]; } bb1: { - _2 = &'?2 _1[_3]; // bb1[0]: scope 1 at $DIR/region_subtyping_basic.rs:+2:13: +2:18 - FakeRead(ForLet(None), _2); // bb1[1]: scope 1 at $DIR/region_subtyping_basic.rs:+2:9: +2:10 - StorageLive(_6); // bb1[2]: scope 2 at $DIR/region_subtyping_basic.rs:+3:9: +3:10 - _6 = _2; // bb1[3]: scope 2 at $DIR/region_subtyping_basic.rs:+3:13: +3:14 - FakeRead(ForLet(None), _6); // bb1[4]: scope 2 at $DIR/region_subtyping_basic.rs:+3:9: +3:10 - StorageLive(_7); // bb1[5]: scope 3 at $DIR/region_subtyping_basic.rs:+4:8: +4:12 - _7 = const ConstValue(Scalar(0x01): bool); // bb1[6]: scope 3 at $DIR/region_subtyping_basic.rs:+4:8: +4:12 - switchInt(move _7) -> [0: bb4, otherwise: bb2]; // bb1[7]: scope 3 at $DIR/region_subtyping_basic.rs:+4:8: +4:12 + _2 = &'?2 _1[_3]; + FakeRead(ForLet(None), _2); + StorageLive(_6); + _6 = _2; + FakeRead(ForLet(None), _6); + StorageLive(_7); + _7 = const ConstValue(Scalar(0x01): bool); + switchInt(move _7) -> [0: bb4, otherwise: bb2]; } bb2: { - StorageLive(_8); // bb2[0]: scope 3 at $DIR/region_subtyping_basic.rs:+5:9: +5:18 - StorageLive(_9); // bb2[1]: scope 3 at $DIR/region_subtyping_basic.rs:+5:15: +5:17 - _9 = (*_6); // bb2[2]: scope 3 at $DIR/region_subtyping_basic.rs:+5:15: +5:17 - _8 = ConstValue(ZeroSized: fn(usize) -> bool {use_x})(move _9) -> [return: bb3, unwind: bb7]; // bb2[3]: scope 3 at $DIR/region_subtyping_basic.rs:+5:9: +5:18 - // mir::Constant - // + span: $DIR/region_subtyping_basic.rs:21:9: 21:14 - // + literal: Const { ty: fn(usize) -> bool {use_x}, val: Value() } + StorageLive(_8); + StorageLive(_9); + _9 = (*_6); + _8 = ConstValue(ZeroSized: fn(usize) -> bool {use_x})(move _9) -> [return: bb3, unwind: bb7]; } bb3: { - StorageDead(_9); // bb3[0]: scope 3 at $DIR/region_subtyping_basic.rs:+5:17: +5:18 - StorageDead(_8); // bb3[1]: scope 3 at $DIR/region_subtyping_basic.rs:+5:18: +5:19 - _0 = const ConstValue(ZeroSized: ()); // bb3[2]: scope 3 at $DIR/region_subtyping_basic.rs:+4:13: +6:6 - goto -> bb6; // bb3[3]: scope 3 at $DIR/region_subtyping_basic.rs:+4:5: +8:6 + StorageDead(_9); + StorageDead(_8); + _0 = const ConstValue(ZeroSized: ()); + goto -> bb6; } bb4: { - StorageLive(_10); // bb4[0]: scope 3 at $DIR/region_subtyping_basic.rs:+7:9: +7:18 - _10 = ConstValue(ZeroSized: fn(usize) -> bool {use_x})(const ConstValue(Scalar(0x0000000000000016): usize)) -> [return: bb5, unwind: bb7]; // bb4[1]: scope 3 at $DIR/region_subtyping_basic.rs:+7:9: +7:18 - // mir::Constant - // + span: $DIR/region_subtyping_basic.rs:23:9: 23:14 - // + literal: Const { ty: fn(usize) -> bool {use_x}, val: Value() } + StorageLive(_10); + _10 = ConstValue(ZeroSized: fn(usize) -> bool {use_x})(const ConstValue(Scalar(0x0000000000000016): usize)) -> [return: bb5, unwind: bb7]; } bb5: { - StorageDead(_10); // bb5[0]: scope 3 at $DIR/region_subtyping_basic.rs:+7:18: +7:19 - _0 = const ConstValue(ZeroSized: ()); // bb5[1]: scope 3 at $DIR/region_subtyping_basic.rs:+6:12: +8:6 - goto -> bb6; // bb5[2]: scope 3 at $DIR/region_subtyping_basic.rs:+4:5: +8:6 + StorageDead(_10); + _0 = const ConstValue(ZeroSized: ()); + goto -> bb6; } bb6: { - StorageDead(_7); // bb6[0]: scope 3 at $DIR/region_subtyping_basic.rs:+8:5: +8:6 - StorageDead(_6); // bb6[1]: scope 2 at $DIR/region_subtyping_basic.rs:+9:1: +9:2 - StorageDead(_3); // bb6[2]: scope 1 at $DIR/region_subtyping_basic.rs:+9:1: +9:2 - StorageDead(_2); // bb6[3]: scope 1 at $DIR/region_subtyping_basic.rs:+9:1: +9:2 - StorageDead(_1); // bb6[4]: scope 0 at $DIR/region_subtyping_basic.rs:+9:1: +9:2 - return; // bb6[5]: scope 0 at $DIR/region_subtyping_basic.rs:+9:2: +9:2 + StorageDead(_7); + StorageDead(_6); + StorageDead(_3); + StorageDead(_2); + StorageDead(_1); + return; } bb7 (cleanup): { - resume; // bb7[0]: scope 0 at $DIR/region_subtyping_basic.rs:+0:1: +9:2 + resume; } } diff --git a/tests/mir-opt/no_drop_for_inactive_variant.unwrap.SimplifyCfg-elaborate-drops.after.panic-abort.mir b/tests/mir-opt/no_drop_for_inactive_variant.unwrap.SimplifyCfg-elaborate-drops.after.panic-abort.mir index 90b547913e48e..086955236466f 100644 --- a/tests/mir-opt/no_drop_for_inactive_variant.unwrap.SimplifyCfg-elaborate-drops.after.panic-abort.mir +++ b/tests/mir-opt/no_drop_for_inactive_variant.unwrap.SimplifyCfg-elaborate-drops.after.panic-abort.mir @@ -1,44 +1,38 @@ // MIR for `unwrap` after SimplifyCfg-elaborate-drops fn unwrap(_1: Option) -> T { - debug opt => _1; // in scope 0 at $DIR/no_drop_for_inactive_variant.rs:+0:14: +0:17 - let mut _0: T; // return place in scope 0 at $DIR/no_drop_for_inactive_variant.rs:+0:33: +0:34 - let mut _2: isize; // in scope 0 at $DIR/no_drop_for_inactive_variant.rs:+2:9: +2:16 - let _3: T; // in scope 0 at $DIR/no_drop_for_inactive_variant.rs:+2:14: +2:15 - let mut _4: !; // in scope 0 at $SRC_DIR/std/src/panic.rs:LL:COL - let mut _5: isize; // in scope 0 at $DIR/no_drop_for_inactive_variant.rs:+5:1: +5:2 - let mut _6: isize; // in scope 0 at $DIR/no_drop_for_inactive_variant.rs:+5:1: +5:2 - let mut _7: isize; // in scope 0 at $DIR/no_drop_for_inactive_variant.rs:+5:1: +5:2 + debug opt => _1; + let mut _0: T; + let mut _2: isize; + let _3: T; + let mut _4: !; + let mut _5: isize; + let mut _6: isize; + let mut _7: isize; scope 1 { - debug x => _3; // in scope 1 at $DIR/no_drop_for_inactive_variant.rs:+2:14: +2:15 + debug x => _3; } bb0: { - _2 = discriminant(_1); // scope 0 at $DIR/no_drop_for_inactive_variant.rs:+1:11: +1:14 - switchInt(move _2) -> [0: bb1, 1: bb3, otherwise: bb2]; // scope 0 at $DIR/no_drop_for_inactive_variant.rs:+1:5: +1:14 + _2 = discriminant(_1); + switchInt(move _2) -> [0: bb1, 1: bb3, otherwise: bb2]; } bb1: { - StorageLive(_4); // scope 0 at $SRC_DIR/std/src/panic.rs:LL:COL - _4 = begin_panic::<&str>(const "explicit panic") -> unwind unreachable; // scope 0 at $SRC_DIR/std/src/panic.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/std/src/panic.rs:LL:COL - // + literal: Const { ty: fn(&str) -> ! {begin_panic::<&str>}, val: Value() } - // mir::Constant - // + span: $SRC_DIR/std/src/panic.rs:LL:COL - // + literal: Const { ty: &str, val: Value(Slice(..)) } + StorageLive(_4); + _4 = begin_panic::<&str>(const "explicit panic") -> unwind unreachable; } bb2: { - unreachable; // scope 0 at $DIR/no_drop_for_inactive_variant.rs:+1:11: +1:14 + unreachable; } bb3: { - StorageLive(_3); // scope 0 at $DIR/no_drop_for_inactive_variant.rs:+2:14: +2:15 - _3 = move ((_1 as Some).0: T); // scope 0 at $DIR/no_drop_for_inactive_variant.rs:+2:14: +2:15 - _0 = move _3; // scope 1 at $DIR/no_drop_for_inactive_variant.rs:+2:20: +2:21 - StorageDead(_3); // scope 0 at $DIR/no_drop_for_inactive_variant.rs:+2:20: +2:21 - _5 = discriminant(_1); // scope 0 at $DIR/no_drop_for_inactive_variant.rs:+5:1: +5:2 - return; // scope 0 at $DIR/no_drop_for_inactive_variant.rs:+5:2: +5:2 + StorageLive(_3); + _3 = move ((_1 as Some).0: T); + _0 = move _3; + StorageDead(_3); + _5 = discriminant(_1); + return; } } diff --git a/tests/mir-opt/no_drop_for_inactive_variant.unwrap.SimplifyCfg-elaborate-drops.after.panic-unwind.mir b/tests/mir-opt/no_drop_for_inactive_variant.unwrap.SimplifyCfg-elaborate-drops.after.panic-unwind.mir index 69327b7afac7e..6276d85484618 100644 --- a/tests/mir-opt/no_drop_for_inactive_variant.unwrap.SimplifyCfg-elaborate-drops.after.panic-unwind.mir +++ b/tests/mir-opt/no_drop_for_inactive_variant.unwrap.SimplifyCfg-elaborate-drops.after.panic-unwind.mir @@ -1,49 +1,43 @@ // MIR for `unwrap` after SimplifyCfg-elaborate-drops fn unwrap(_1: Option) -> T { - debug opt => _1; // in scope 0 at $DIR/no_drop_for_inactive_variant.rs:+0:14: +0:17 - let mut _0: T; // return place in scope 0 at $DIR/no_drop_for_inactive_variant.rs:+0:33: +0:34 - let mut _2: isize; // in scope 0 at $DIR/no_drop_for_inactive_variant.rs:+2:9: +2:16 - let _3: T; // in scope 0 at $DIR/no_drop_for_inactive_variant.rs:+2:14: +2:15 - let mut _4: !; // in scope 0 at $SRC_DIR/std/src/panic.rs:LL:COL - let mut _5: isize; // in scope 0 at $DIR/no_drop_for_inactive_variant.rs:+5:1: +5:2 - let mut _6: isize; // in scope 0 at $DIR/no_drop_for_inactive_variant.rs:+5:1: +5:2 - let mut _7: isize; // in scope 0 at $DIR/no_drop_for_inactive_variant.rs:+5:1: +5:2 + debug opt => _1; + let mut _0: T; + let mut _2: isize; + let _3: T; + let mut _4: !; + let mut _5: isize; + let mut _6: isize; + let mut _7: isize; scope 1 { - debug x => _3; // in scope 1 at $DIR/no_drop_for_inactive_variant.rs:+2:14: +2:15 + debug x => _3; } bb0: { - _2 = discriminant(_1); // scope 0 at $DIR/no_drop_for_inactive_variant.rs:+1:11: +1:14 - switchInt(move _2) -> [0: bb1, 1: bb3, otherwise: bb2]; // scope 0 at $DIR/no_drop_for_inactive_variant.rs:+1:5: +1:14 + _2 = discriminant(_1); + switchInt(move _2) -> [0: bb1, 1: bb3, otherwise: bb2]; } bb1: { - StorageLive(_4); // scope 0 at $SRC_DIR/std/src/panic.rs:LL:COL - _4 = begin_panic::<&str>(const "explicit panic") -> bb4; // scope 0 at $SRC_DIR/std/src/panic.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/std/src/panic.rs:LL:COL - // + literal: Const { ty: fn(&str) -> ! {begin_panic::<&str>}, val: Value() } - // mir::Constant - // + span: $SRC_DIR/std/src/panic.rs:LL:COL - // + literal: Const { ty: &str, val: Value(Slice(..)) } + StorageLive(_4); + _4 = begin_panic::<&str>(const "explicit panic") -> bb4; } bb2: { - unreachable; // scope 0 at $DIR/no_drop_for_inactive_variant.rs:+1:11: +1:14 + unreachable; } bb3: { - StorageLive(_3); // scope 0 at $DIR/no_drop_for_inactive_variant.rs:+2:14: +2:15 - _3 = move ((_1 as Some).0: T); // scope 0 at $DIR/no_drop_for_inactive_variant.rs:+2:14: +2:15 - _0 = move _3; // scope 1 at $DIR/no_drop_for_inactive_variant.rs:+2:20: +2:21 - StorageDead(_3); // scope 0 at $DIR/no_drop_for_inactive_variant.rs:+2:20: +2:21 - _5 = discriminant(_1); // scope 0 at $DIR/no_drop_for_inactive_variant.rs:+5:1: +5:2 - return; // scope 0 at $DIR/no_drop_for_inactive_variant.rs:+5:2: +5:2 + StorageLive(_3); + _3 = move ((_1 as Some).0: T); + _0 = move _3; + StorageDead(_3); + _5 = discriminant(_1); + return; } bb4 (cleanup): { - _7 = discriminant(_1); // scope 0 at $DIR/no_drop_for_inactive_variant.rs:+5:1: +5:2 - resume; // scope 0 at $DIR/no_drop_for_inactive_variant.rs:+0:1: +5:2 + _7 = discriminant(_1); + resume; } } diff --git a/tests/mir-opt/no_spurious_drop_after_call.main.ElaborateDrops.before.panic-abort.mir b/tests/mir-opt/no_spurious_drop_after_call.main.ElaborateDrops.before.panic-abort.mir index 14b315ad9a3ea..e22fc7d54bc47 100644 --- a/tests/mir-opt/no_spurious_drop_after_call.main.ElaborateDrops.before.panic-abort.mir +++ b/tests/mir-opt/no_spurious_drop_after_call.main.ElaborateDrops.before.panic-abort.mir @@ -1,49 +1,40 @@ // MIR for `main` before ElaborateDrops fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/no_spurious_drop_after_call.rs:+0:11: +0:11 - let _1: (); // in scope 0 at $DIR/no_spurious_drop_after_call.rs:+1:5: +1:35 - let mut _2: std::string::String; // in scope 0 at $DIR/no_spurious_drop_after_call.rs:+1:20: +1:34 - let mut _3: &str; // in scope 0 at $DIR/no_spurious_drop_after_call.rs:+1:20: +1:34 - let _4: &str; // in scope 0 at $DIR/no_spurious_drop_after_call.rs:+1:20: +1:22 + let mut _0: (); + let _1: (); + let mut _2: std::string::String; + let mut _3: &str; + let _4: &str; bb0: { - StorageLive(_1); // scope 0 at $DIR/no_spurious_drop_after_call.rs:+1:5: +1:35 - StorageLive(_2); // scope 0 at $DIR/no_spurious_drop_after_call.rs:+1:20: +1:34 - StorageLive(_3); // scope 0 at $DIR/no_spurious_drop_after_call.rs:+1:20: +1:34 - StorageLive(_4); // scope 0 at $DIR/no_spurious_drop_after_call.rs:+1:20: +1:22 - _4 = const ""; // scope 0 at $DIR/no_spurious_drop_after_call.rs:+1:20: +1:22 - // mir::Constant - // + span: $DIR/no_spurious_drop_after_call.rs:9:20: 9:22 - // + literal: Const { ty: &str, val: Value(Slice(..)) } - _3 = &(*_4); // scope 0 at $DIR/no_spurious_drop_after_call.rs:+1:20: +1:34 - _2 = ::to_string(move _3) -> [return: bb1, unwind: bb4]; // scope 0 at $DIR/no_spurious_drop_after_call.rs:+1:20: +1:34 - // mir::Constant - // + span: $DIR/no_spurious_drop_after_call.rs:9:23: 9:32 - // + literal: Const { ty: for<'a> fn(&'a str) -> String {::to_string}, val: Value() } + StorageLive(_1); + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + _4 = const ""; + _3 = &(*_4); + _2 = ::to_string(move _3) -> [return: bb1, unwind: bb4]; } bb1: { - StorageDead(_3); // scope 0 at $DIR/no_spurious_drop_after_call.rs:+1:33: +1:34 - _1 = std::mem::drop::(move _2) -> [return: bb2, unwind: bb3]; // scope 0 at $DIR/no_spurious_drop_after_call.rs:+1:5: +1:35 - // mir::Constant - // + span: $DIR/no_spurious_drop_after_call.rs:9:5: 9:19 - // + literal: Const { ty: fn(String) {std::mem::drop::}, val: Value() } + StorageDead(_3); + _1 = std::mem::drop::(move _2) -> [return: bb2, unwind: bb3]; } bb2: { - StorageDead(_2); // scope 0 at $DIR/no_spurious_drop_after_call.rs:+1:34: +1:35 - StorageDead(_4); // scope 0 at $DIR/no_spurious_drop_after_call.rs:+1:35: +1:36 - StorageDead(_1); // scope 0 at $DIR/no_spurious_drop_after_call.rs:+1:35: +1:36 - _0 = const (); // scope 0 at $DIR/no_spurious_drop_after_call.rs:+0:11: +2:2 - return; // scope 0 at $DIR/no_spurious_drop_after_call.rs:+2:2: +2:2 + StorageDead(_2); + StorageDead(_4); + StorageDead(_1); + _0 = const (); + return; } bb3 (cleanup): { - drop(_2) -> [return: bb4, unwind terminate]; // scope 0 at $DIR/no_spurious_drop_after_call.rs:+1:34: +1:35 + drop(_2) -> [return: bb4, unwind terminate]; } bb4 (cleanup): { - resume; // scope 0 at $DIR/no_spurious_drop_after_call.rs:+0:1: +2:2 + resume; } } diff --git a/tests/mir-opt/no_spurious_drop_after_call.main.ElaborateDrops.before.panic-unwind.mir b/tests/mir-opt/no_spurious_drop_after_call.main.ElaborateDrops.before.panic-unwind.mir index 950f8758e31c4..568ad441cbcd6 100644 --- a/tests/mir-opt/no_spurious_drop_after_call.main.ElaborateDrops.before.panic-unwind.mir +++ b/tests/mir-opt/no_spurious_drop_after_call.main.ElaborateDrops.before.panic-unwind.mir @@ -1,49 +1,40 @@ // MIR for `main` before ElaborateDrops fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/no_spurious_drop_after_call.rs:+0:11: +0:11 - let _1: (); // in scope 0 at $DIR/no_spurious_drop_after_call.rs:+1:5: +1:35 - let mut _2: std::string::String; // in scope 0 at $DIR/no_spurious_drop_after_call.rs:+1:20: +1:34 - let mut _3: &str; // in scope 0 at $DIR/no_spurious_drop_after_call.rs:+1:20: +1:34 - let _4: &str; // in scope 0 at $DIR/no_spurious_drop_after_call.rs:+1:20: +1:22 + let mut _0: (); + let _1: (); + let mut _2: std::string::String; + let mut _3: &str; + let _4: &str; bb0: { - StorageLive(_1); // scope 0 at $DIR/no_spurious_drop_after_call.rs:+1:5: +1:35 - StorageLive(_2); // scope 0 at $DIR/no_spurious_drop_after_call.rs:+1:20: +1:34 - StorageLive(_3); // scope 0 at $DIR/no_spurious_drop_after_call.rs:+1:20: +1:34 - StorageLive(_4); // scope 0 at $DIR/no_spurious_drop_after_call.rs:+1:20: +1:22 - _4 = const ""; // scope 0 at $DIR/no_spurious_drop_after_call.rs:+1:20: +1:22 - // mir::Constant - // + span: $DIR/no_spurious_drop_after_call.rs:9:20: 9:22 - // + literal: Const { ty: &str, val: Value(Slice(..)) } - _3 = &(*_4); // scope 0 at $DIR/no_spurious_drop_after_call.rs:+1:20: +1:34 - _2 = ::to_string(move _3) -> bb1; // scope 0 at $DIR/no_spurious_drop_after_call.rs:+1:20: +1:34 - // mir::Constant - // + span: $DIR/no_spurious_drop_after_call.rs:9:23: 9:32 - // + literal: Const { ty: for<'a> fn(&'a str) -> String {::to_string}, val: Value() } + StorageLive(_1); + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + _4 = const ""; + _3 = &(*_4); + _2 = ::to_string(move _3) -> bb1; } bb1: { - StorageDead(_3); // scope 0 at $DIR/no_spurious_drop_after_call.rs:+1:33: +1:34 - _1 = std::mem::drop::(move _2) -> [return: bb2, unwind: bb3]; // scope 0 at $DIR/no_spurious_drop_after_call.rs:+1:5: +1:35 - // mir::Constant - // + span: $DIR/no_spurious_drop_after_call.rs:9:5: 9:19 - // + literal: Const { ty: fn(String) {std::mem::drop::}, val: Value() } + StorageDead(_3); + _1 = std::mem::drop::(move _2) -> [return: bb2, unwind: bb3]; } bb2: { - StorageDead(_2); // scope 0 at $DIR/no_spurious_drop_after_call.rs:+1:34: +1:35 - StorageDead(_4); // scope 0 at $DIR/no_spurious_drop_after_call.rs:+1:35: +1:36 - StorageDead(_1); // scope 0 at $DIR/no_spurious_drop_after_call.rs:+1:35: +1:36 - _0 = const (); // scope 0 at $DIR/no_spurious_drop_after_call.rs:+0:11: +2:2 - return; // scope 0 at $DIR/no_spurious_drop_after_call.rs:+2:2: +2:2 + StorageDead(_2); + StorageDead(_4); + StorageDead(_1); + _0 = const (); + return; } bb3 (cleanup): { - drop(_2) -> [return: bb4, unwind terminate]; // scope 0 at $DIR/no_spurious_drop_after_call.rs:+1:34: +1:35 + drop(_2) -> [return: bb4, unwind terminate]; } bb4 (cleanup): { - resume; // scope 0 at $DIR/no_spurious_drop_after_call.rs:+0:1: +2:2 + resume; } } diff --git a/tests/mir-opt/not_equal_false.opt.InstSimplify.diff b/tests/mir-opt/not_equal_false.opt.InstSimplify.diff index 8e7776a0bbcae..71353be24a67c 100644 --- a/tests/mir-opt/not_equal_false.opt.InstSimplify.diff +++ b/tests/mir-opt/not_equal_false.opt.InstSimplify.diff @@ -2,34 +2,34 @@ + // MIR for `opt` after InstSimplify fn opt(_1: bool) -> u32 { - debug x => _1; // in scope 0 at $DIR/not_equal_false.rs:+0:8: +0:9 - let mut _0: u32; // return place in scope 0 at $DIR/not_equal_false.rs:+0:20: +0:23 - let mut _2: bool; // in scope 0 at $DIR/not_equal_false.rs:+1:8: +1:18 - let mut _3: bool; // in scope 0 at $DIR/not_equal_false.rs:+1:8: +1:9 + debug x => _1; + let mut _0: u32; + let mut _2: bool; + let mut _3: bool; bb0: { - StorageLive(_2); // scope 0 at $DIR/not_equal_false.rs:+1:8: +1:18 - StorageLive(_3); // scope 0 at $DIR/not_equal_false.rs:+1:8: +1:9 - _3 = _1; // scope 0 at $DIR/not_equal_false.rs:+1:8: +1:9 -- _2 = Ne(move _3, const false); // scope 0 at $DIR/not_equal_false.rs:+1:8: +1:18 -+ _2 = move _3; // scope 0 at $DIR/not_equal_false.rs:+1:8: +1:18 - StorageDead(_3); // scope 0 at $DIR/not_equal_false.rs:+1:17: +1:18 - switchInt(move _2) -> [0: bb2, otherwise: bb1]; // scope 0 at $DIR/not_equal_false.rs:+1:8: +1:18 + StorageLive(_2); + StorageLive(_3); + _3 = _1; +- _2 = Ne(move _3, const false); ++ _2 = move _3; + StorageDead(_3); + switchInt(move _2) -> [0: bb2, otherwise: bb1]; } bb1: { - _0 = const 0_u32; // scope 0 at $DIR/not_equal_false.rs:+1:21: +1:22 - goto -> bb3; // scope 0 at $DIR/not_equal_false.rs:+1:5: +1:35 + _0 = const 0_u32; + goto -> bb3; } bb2: { - _0 = const 1_u32; // scope 0 at $DIR/not_equal_false.rs:+1:32: +1:33 - goto -> bb3; // scope 0 at $DIR/not_equal_false.rs:+1:5: +1:35 + _0 = const 1_u32; + goto -> bb3; } bb3: { - StorageDead(_2); // scope 0 at $DIR/not_equal_false.rs:+1:34: +1:35 - return; // scope 0 at $DIR/not_equal_false.rs:+2:2: +2:2 + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/nrvo_miscompile_111005.wrong.RenameReturnPlace.diff b/tests/mir-opt/nrvo_miscompile_111005.wrong.RenameReturnPlace.diff index a0acb6e7e119d..260b472daa92a 100644 --- a/tests/mir-opt/nrvo_miscompile_111005.wrong.RenameReturnPlace.diff +++ b/tests/mir-opt/nrvo_miscompile_111005.wrong.RenameReturnPlace.diff @@ -2,17 +2,16 @@ + // MIR for `wrong` after RenameReturnPlace fn wrong(_1: char) -> char { -- let mut _0: char; // return place in scope 0 at $DIR/nrvo_miscompile_111005.rs:+0:28: +0:32 -+ let mut _0: char; // return place in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _2: char; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL + let mut _0: char; + let mut _2: char; bb0: { -- _2 = _1; // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL -- _0 = _2; // scope 0 at $DIR/nrvo_miscompile_111005.rs:+3:9: +3:19 -- _2 = const 'b'; // scope 0 at $DIR/nrvo_miscompile_111005.rs:+4:9: +4:19 -+ _0 = _1; // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL -+ _0 = const 'b'; // scope 0 at $DIR/nrvo_miscompile_111005.rs:+4:9: +4:19 - return; // scope 0 at $DIR/nrvo_miscompile_111005.rs:+5:9: +5:17 +- _2 = _1; +- _0 = _2; +- _2 = const 'b'; ++ _0 = _1; ++ _0 = const 'b'; + return; } } diff --git a/tests/mir-opt/nrvo_simple.nrvo.RenameReturnPlace.panic-abort.diff b/tests/mir-opt/nrvo_simple.nrvo.RenameReturnPlace.panic-abort.diff index 45b2efa3fe25e..f7bc5559ab7b4 100644 --- a/tests/mir-opt/nrvo_simple.nrvo.RenameReturnPlace.panic-abort.diff +++ b/tests/mir-opt/nrvo_simple.nrvo.RenameReturnPlace.panic-abort.diff @@ -2,42 +2,41 @@ + // MIR for `nrvo` after RenameReturnPlace fn nrvo(_1: for<'a> fn(&'a mut [u8; 1024])) -> [u8; 1024] { - debug init => _1; // in scope 0 at $DIR/nrvo_simple.rs:+0:9: +0:13 -- let mut _0: [u8; 1024]; // return place in scope 0 at $DIR/nrvo_simple.rs:+0:39: +0:49 -+ let mut _0: [u8; 1024]; // return place in scope 0 at $DIR/nrvo_simple.rs:+1:9: +1:16 - let mut _2: [u8; 1024]; // in scope 0 at $DIR/nrvo_simple.rs:+1:9: +1:16 - let _3: (); // in scope 0 at $DIR/nrvo_simple.rs:+2:5: +2:19 - let mut _4: for<'a> fn(&'a mut [u8; 1024]); // in scope 0 at $DIR/nrvo_simple.rs:+2:5: +2:9 - let mut _5: &mut [u8; 1024]; // in scope 0 at $DIR/nrvo_simple.rs:+2:10: +2:18 - let mut _6: &mut [u8; 1024]; // in scope 0 at $DIR/nrvo_simple.rs:+2:10: +2:18 + debug init => _1; + let mut _0: [u8; 1024]; + let mut _2: [u8; 1024]; + let _3: (); + let mut _4: for<'a> fn(&'a mut [u8; 1024]); + let mut _5: &mut [u8; 1024]; + let mut _6: &mut [u8; 1024]; scope 1 { -- debug buf => _2; // in scope 1 at $DIR/nrvo_simple.rs:+1:9: +1:16 -+ debug buf => _0; // in scope 1 at $DIR/nrvo_simple.rs:+1:9: +1:16 +- debug buf => _2; ++ debug buf => _0; } bb0: { -- StorageLive(_2); // scope 0 at $DIR/nrvo_simple.rs:+1:9: +1:16 -- _2 = [const 0_u8; 1024]; // scope 0 at $DIR/nrvo_simple.rs:+1:19: +1:28 -+ _0 = [const 0_u8; 1024]; // scope 0 at $DIR/nrvo_simple.rs:+1:19: +1:28 - StorageLive(_3); // scope 1 at $DIR/nrvo_simple.rs:+2:5: +2:19 - StorageLive(_4); // scope 1 at $DIR/nrvo_simple.rs:+2:5: +2:9 - _4 = _1; // scope 1 at $DIR/nrvo_simple.rs:+2:5: +2:9 - StorageLive(_5); // scope 1 at $DIR/nrvo_simple.rs:+2:10: +2:18 - StorageLive(_6); // scope 1 at $DIR/nrvo_simple.rs:+2:10: +2:18 -- _6 = &mut _2; // scope 1 at $DIR/nrvo_simple.rs:+2:10: +2:18 -+ _6 = &mut _0; // scope 1 at $DIR/nrvo_simple.rs:+2:10: +2:18 - _5 = &mut (*_6); // scope 1 at $DIR/nrvo_simple.rs:+2:10: +2:18 - _3 = move _4(move _5) -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/nrvo_simple.rs:+2:5: +2:19 +- StorageLive(_2); +- _2 = [const 0_u8; 1024]; ++ _0 = [const 0_u8; 1024]; + StorageLive(_3); + StorageLive(_4); + _4 = _1; + StorageLive(_5); + StorageLive(_6); +- _6 = &mut _2; ++ _6 = &mut _0; + _5 = &mut (*_6); + _3 = move _4(move _5) -> [return: bb1, unwind unreachable]; } bb1: { - StorageDead(_5); // scope 1 at $DIR/nrvo_simple.rs:+2:18: +2:19 - StorageDead(_4); // scope 1 at $DIR/nrvo_simple.rs:+2:18: +2:19 - StorageDead(_6); // scope 1 at $DIR/nrvo_simple.rs:+2:19: +2:20 - StorageDead(_3); // scope 1 at $DIR/nrvo_simple.rs:+2:19: +2:20 -- _0 = _2; // scope 1 at $DIR/nrvo_simple.rs:+3:5: +3:8 -- StorageDead(_2); // scope 0 at $DIR/nrvo_simple.rs:+4:1: +4:2 - return; // scope 0 at $DIR/nrvo_simple.rs:+4:2: +4:2 + StorageDead(_5); + StorageDead(_4); + StorageDead(_6); + StorageDead(_3); +- _0 = _2; +- StorageDead(_2); + return; } } diff --git a/tests/mir-opt/nrvo_simple.nrvo.RenameReturnPlace.panic-unwind.diff b/tests/mir-opt/nrvo_simple.nrvo.RenameReturnPlace.panic-unwind.diff index 61a16065bfbdc..b17675ec1edf0 100644 --- a/tests/mir-opt/nrvo_simple.nrvo.RenameReturnPlace.panic-unwind.diff +++ b/tests/mir-opt/nrvo_simple.nrvo.RenameReturnPlace.panic-unwind.diff @@ -2,42 +2,41 @@ + // MIR for `nrvo` after RenameReturnPlace fn nrvo(_1: for<'a> fn(&'a mut [u8; 1024])) -> [u8; 1024] { - debug init => _1; // in scope 0 at $DIR/nrvo_simple.rs:+0:9: +0:13 -- let mut _0: [u8; 1024]; // return place in scope 0 at $DIR/nrvo_simple.rs:+0:39: +0:49 -+ let mut _0: [u8; 1024]; // return place in scope 0 at $DIR/nrvo_simple.rs:+1:9: +1:16 - let mut _2: [u8; 1024]; // in scope 0 at $DIR/nrvo_simple.rs:+1:9: +1:16 - let _3: (); // in scope 0 at $DIR/nrvo_simple.rs:+2:5: +2:19 - let mut _4: for<'a> fn(&'a mut [u8; 1024]); // in scope 0 at $DIR/nrvo_simple.rs:+2:5: +2:9 - let mut _5: &mut [u8; 1024]; // in scope 0 at $DIR/nrvo_simple.rs:+2:10: +2:18 - let mut _6: &mut [u8; 1024]; // in scope 0 at $DIR/nrvo_simple.rs:+2:10: +2:18 + debug init => _1; + let mut _0: [u8; 1024]; + let mut _2: [u8; 1024]; + let _3: (); + let mut _4: for<'a> fn(&'a mut [u8; 1024]); + let mut _5: &mut [u8; 1024]; + let mut _6: &mut [u8; 1024]; scope 1 { -- debug buf => _2; // in scope 1 at $DIR/nrvo_simple.rs:+1:9: +1:16 -+ debug buf => _0; // in scope 1 at $DIR/nrvo_simple.rs:+1:9: +1:16 +- debug buf => _2; ++ debug buf => _0; } bb0: { -- StorageLive(_2); // scope 0 at $DIR/nrvo_simple.rs:+1:9: +1:16 -- _2 = [const 0_u8; 1024]; // scope 0 at $DIR/nrvo_simple.rs:+1:19: +1:28 -+ _0 = [const 0_u8; 1024]; // scope 0 at $DIR/nrvo_simple.rs:+1:19: +1:28 - StorageLive(_3); // scope 1 at $DIR/nrvo_simple.rs:+2:5: +2:19 - StorageLive(_4); // scope 1 at $DIR/nrvo_simple.rs:+2:5: +2:9 - _4 = _1; // scope 1 at $DIR/nrvo_simple.rs:+2:5: +2:9 - StorageLive(_5); // scope 1 at $DIR/nrvo_simple.rs:+2:10: +2:18 - StorageLive(_6); // scope 1 at $DIR/nrvo_simple.rs:+2:10: +2:18 -- _6 = &mut _2; // scope 1 at $DIR/nrvo_simple.rs:+2:10: +2:18 -+ _6 = &mut _0; // scope 1 at $DIR/nrvo_simple.rs:+2:10: +2:18 - _5 = &mut (*_6); // scope 1 at $DIR/nrvo_simple.rs:+2:10: +2:18 - _3 = move _4(move _5) -> bb1; // scope 1 at $DIR/nrvo_simple.rs:+2:5: +2:19 +- StorageLive(_2); +- _2 = [const 0_u8; 1024]; ++ _0 = [const 0_u8; 1024]; + StorageLive(_3); + StorageLive(_4); + _4 = _1; + StorageLive(_5); + StorageLive(_6); +- _6 = &mut _2; ++ _6 = &mut _0; + _5 = &mut (*_6); + _3 = move _4(move _5) -> bb1; } bb1: { - StorageDead(_5); // scope 1 at $DIR/nrvo_simple.rs:+2:18: +2:19 - StorageDead(_4); // scope 1 at $DIR/nrvo_simple.rs:+2:18: +2:19 - StorageDead(_6); // scope 1 at $DIR/nrvo_simple.rs:+2:19: +2:20 - StorageDead(_3); // scope 1 at $DIR/nrvo_simple.rs:+2:19: +2:20 -- _0 = _2; // scope 1 at $DIR/nrvo_simple.rs:+3:5: +3:8 -- StorageDead(_2); // scope 0 at $DIR/nrvo_simple.rs:+4:1: +4:2 - return; // scope 0 at $DIR/nrvo_simple.rs:+4:2: +4:2 + StorageDead(_5); + StorageDead(_4); + StorageDead(_6); + StorageDead(_3); +- _0 = _2; +- StorageDead(_2); + return; } } diff --git a/tests/mir-opt/packed_struct_drop_aligned.main.SimplifyCfg-elaborate-drops.after.panic-abort.mir b/tests/mir-opt/packed_struct_drop_aligned.main.SimplifyCfg-elaborate-drops.after.panic-abort.mir index f17682ae71d06..089adff0c565e 100644 --- a/tests/mir-opt/packed_struct_drop_aligned.main.SimplifyCfg-elaborate-drops.after.panic-abort.mir +++ b/tests/mir-opt/packed_struct_drop_aligned.main.SimplifyCfg-elaborate-drops.after.panic-abort.mir @@ -1,46 +1,46 @@ // MIR for `main` after SimplifyCfg-elaborate-drops fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/packed_struct_drop_aligned.rs:+0:11: +0:11 - let mut _1: Packed; // in scope 0 at $DIR/packed_struct_drop_aligned.rs:+1:9: +1:14 - let mut _2: Aligned; // in scope 0 at $DIR/packed_struct_drop_aligned.rs:+1:24: +1:42 - let mut _3: Droppy; // in scope 0 at $DIR/packed_struct_drop_aligned.rs:+1:32: +1:41 - let mut _4: Aligned; // in scope 0 at $DIR/packed_struct_drop_aligned.rs:+2:11: +2:29 - let mut _5: Droppy; // in scope 0 at $DIR/packed_struct_drop_aligned.rs:+2:19: +2:28 - let mut _6: Aligned; // in scope 0 at $DIR/packed_struct_drop_aligned.rs:+2:5: +2:8 + let mut _0: (); + let mut _1: Packed; + let mut _2: Aligned; + let mut _3: Droppy; + let mut _4: Aligned; + let mut _5: Droppy; + let mut _6: Aligned; scope 1 { - debug x => _1; // in scope 1 at $DIR/packed_struct_drop_aligned.rs:+1:9: +1:14 + debug x => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/packed_struct_drop_aligned.rs:+1:9: +1:14 - StorageLive(_2); // scope 0 at $DIR/packed_struct_drop_aligned.rs:+1:24: +1:42 - StorageLive(_3); // scope 0 at $DIR/packed_struct_drop_aligned.rs:+1:32: +1:41 - _3 = Droppy(const 0_usize); // scope 0 at $DIR/packed_struct_drop_aligned.rs:+1:32: +1:41 - _2 = Aligned(move _3); // scope 0 at $DIR/packed_struct_drop_aligned.rs:+1:24: +1:42 - StorageDead(_3); // scope 0 at $DIR/packed_struct_drop_aligned.rs:+1:41: +1:42 - _1 = Packed(move _2); // scope 0 at $DIR/packed_struct_drop_aligned.rs:+1:17: +1:43 - StorageDead(_2); // scope 0 at $DIR/packed_struct_drop_aligned.rs:+1:42: +1:43 - StorageLive(_4); // scope 1 at $DIR/packed_struct_drop_aligned.rs:+2:11: +2:29 - StorageLive(_5); // scope 1 at $DIR/packed_struct_drop_aligned.rs:+2:19: +2:28 - _5 = Droppy(const 0_usize); // scope 1 at $DIR/packed_struct_drop_aligned.rs:+2:19: +2:28 - _4 = Aligned(move _5); // scope 1 at $DIR/packed_struct_drop_aligned.rs:+2:11: +2:29 - StorageDead(_5); // scope 1 at $DIR/packed_struct_drop_aligned.rs:+2:28: +2:29 - StorageLive(_6); // scope 1 at $DIR/packed_struct_drop_aligned.rs:+2:5: +2:8 - _6 = move (_1.0: Aligned); // scope 1 at $DIR/packed_struct_drop_aligned.rs:+2:5: +2:8 - drop(_6) -> [return: bb2, unwind unreachable]; // scope 1 at $DIR/packed_struct_drop_aligned.rs:+2:5: +2:8 + StorageLive(_1); + StorageLive(_2); + StorageLive(_3); + _3 = Droppy(const 0_usize); + _2 = Aligned(move _3); + StorageDead(_3); + _1 = Packed(move _2); + StorageDead(_2); + StorageLive(_4); + StorageLive(_5); + _5 = Droppy(const 0_usize); + _4 = Aligned(move _5); + StorageDead(_5); + StorageLive(_6); + _6 = move (_1.0: Aligned); + drop(_6) -> [return: bb2, unwind unreachable]; } bb1: { - StorageDead(_1); // scope 0 at $DIR/packed_struct_drop_aligned.rs:+3:1: +3:2 - return; // scope 0 at $DIR/packed_struct_drop_aligned.rs:+3:2: +3:2 + StorageDead(_1); + return; } bb2: { - StorageDead(_6); // scope 1 at $DIR/packed_struct_drop_aligned.rs:+2:5: +2:8 - (_1.0: Aligned) = move _4; // scope 1 at $DIR/packed_struct_drop_aligned.rs:+2:5: +2:8 - StorageDead(_4); // scope 1 at $DIR/packed_struct_drop_aligned.rs:+2:28: +2:29 - _0 = const (); // scope 0 at $DIR/packed_struct_drop_aligned.rs:+0:11: +3:2 - drop(_1) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/packed_struct_drop_aligned.rs:+3:1: +3:2 + StorageDead(_6); + (_1.0: Aligned) = move _4; + StorageDead(_4); + _0 = const (); + drop(_1) -> [return: bb1, unwind unreachable]; } } diff --git a/tests/mir-opt/packed_struct_drop_aligned.main.SimplifyCfg-elaborate-drops.after.panic-unwind.mir b/tests/mir-opt/packed_struct_drop_aligned.main.SimplifyCfg-elaborate-drops.after.panic-unwind.mir index 81b96e3b6315d..bc04790028d37 100644 --- a/tests/mir-opt/packed_struct_drop_aligned.main.SimplifyCfg-elaborate-drops.after.panic-unwind.mir +++ b/tests/mir-opt/packed_struct_drop_aligned.main.SimplifyCfg-elaborate-drops.after.panic-unwind.mir @@ -1,55 +1,55 @@ // MIR for `main` after SimplifyCfg-elaborate-drops fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/packed_struct_drop_aligned.rs:+0:11: +0:11 - let mut _1: Packed; // in scope 0 at $DIR/packed_struct_drop_aligned.rs:+1:9: +1:14 - let mut _2: Aligned; // in scope 0 at $DIR/packed_struct_drop_aligned.rs:+1:24: +1:42 - let mut _3: Droppy; // in scope 0 at $DIR/packed_struct_drop_aligned.rs:+1:32: +1:41 - let mut _4: Aligned; // in scope 0 at $DIR/packed_struct_drop_aligned.rs:+2:11: +2:29 - let mut _5: Droppy; // in scope 0 at $DIR/packed_struct_drop_aligned.rs:+2:19: +2:28 - let mut _6: Aligned; // in scope 0 at $DIR/packed_struct_drop_aligned.rs:+2:5: +2:8 + let mut _0: (); + let mut _1: Packed; + let mut _2: Aligned; + let mut _3: Droppy; + let mut _4: Aligned; + let mut _5: Droppy; + let mut _6: Aligned; scope 1 { - debug x => _1; // in scope 1 at $DIR/packed_struct_drop_aligned.rs:+1:9: +1:14 + debug x => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/packed_struct_drop_aligned.rs:+1:9: +1:14 - StorageLive(_2); // scope 0 at $DIR/packed_struct_drop_aligned.rs:+1:24: +1:42 - StorageLive(_3); // scope 0 at $DIR/packed_struct_drop_aligned.rs:+1:32: +1:41 - _3 = Droppy(const 0_usize); // scope 0 at $DIR/packed_struct_drop_aligned.rs:+1:32: +1:41 - _2 = Aligned(move _3); // scope 0 at $DIR/packed_struct_drop_aligned.rs:+1:24: +1:42 - StorageDead(_3); // scope 0 at $DIR/packed_struct_drop_aligned.rs:+1:41: +1:42 - _1 = Packed(move _2); // scope 0 at $DIR/packed_struct_drop_aligned.rs:+1:17: +1:43 - StorageDead(_2); // scope 0 at $DIR/packed_struct_drop_aligned.rs:+1:42: +1:43 - StorageLive(_4); // scope 1 at $DIR/packed_struct_drop_aligned.rs:+2:11: +2:29 - StorageLive(_5); // scope 1 at $DIR/packed_struct_drop_aligned.rs:+2:19: +2:28 - _5 = Droppy(const 0_usize); // scope 1 at $DIR/packed_struct_drop_aligned.rs:+2:19: +2:28 - _4 = Aligned(move _5); // scope 1 at $DIR/packed_struct_drop_aligned.rs:+2:11: +2:29 - StorageDead(_5); // scope 1 at $DIR/packed_struct_drop_aligned.rs:+2:28: +2:29 - StorageLive(_6); // scope 1 at $DIR/packed_struct_drop_aligned.rs:+2:5: +2:8 - _6 = move (_1.0: Aligned); // scope 1 at $DIR/packed_struct_drop_aligned.rs:+2:5: +2:8 - drop(_6) -> [return: bb4, unwind: bb1]; // scope 1 at $DIR/packed_struct_drop_aligned.rs:+2:5: +2:8 + StorageLive(_1); + StorageLive(_2); + StorageLive(_3); + _3 = Droppy(const 0_usize); + _2 = Aligned(move _3); + StorageDead(_3); + _1 = Packed(move _2); + StorageDead(_2); + StorageLive(_4); + StorageLive(_5); + _5 = Droppy(const 0_usize); + _4 = Aligned(move _5); + StorageDead(_5); + StorageLive(_6); + _6 = move (_1.0: Aligned); + drop(_6) -> [return: bb4, unwind: bb1]; } bb1 (cleanup): { - (_1.0: Aligned) = move _4; // scope 1 at $DIR/packed_struct_drop_aligned.rs:+2:5: +2:8 - drop(_1) -> [return: bb3, unwind terminate]; // scope 0 at $DIR/packed_struct_drop_aligned.rs:+3:1: +3:2 + (_1.0: Aligned) = move _4; + drop(_1) -> [return: bb3, unwind terminate]; } bb2: { - StorageDead(_1); // scope 0 at $DIR/packed_struct_drop_aligned.rs:+3:1: +3:2 - return; // scope 0 at $DIR/packed_struct_drop_aligned.rs:+3:2: +3:2 + StorageDead(_1); + return; } bb3 (cleanup): { - resume; // scope 0 at $DIR/packed_struct_drop_aligned.rs:+0:1: +3:2 + resume; } bb4: { - StorageDead(_6); // scope 1 at $DIR/packed_struct_drop_aligned.rs:+2:5: +2:8 - (_1.0: Aligned) = move _4; // scope 1 at $DIR/packed_struct_drop_aligned.rs:+2:5: +2:8 - StorageDead(_4); // scope 1 at $DIR/packed_struct_drop_aligned.rs:+2:28: +2:29 - _0 = const (); // scope 0 at $DIR/packed_struct_drop_aligned.rs:+0:11: +3:2 - drop(_1) -> [return: bb2, unwind: bb3]; // scope 0 at $DIR/packed_struct_drop_aligned.rs:+3:1: +3:2 + StorageDead(_6); + (_1.0: Aligned) = move _4; + StorageDead(_4); + _0 = const (); + drop(_1) -> [return: bb2, unwind: bb3]; } } diff --git a/tests/mir-opt/pre-codegen/chained_comparison.bitand.PreCodegen.after.mir b/tests/mir-opt/pre-codegen/chained_comparison.bitand.PreCodegen.after.mir index 40ddf82f4cf95..99ca659c637b1 100644 --- a/tests/mir-opt/pre-codegen/chained_comparison.bitand.PreCodegen.after.mir +++ b/tests/mir-opt/pre-codegen/chained_comparison.bitand.PreCodegen.after.mir @@ -1,84 +1,84 @@ // MIR for `bitand` after PreCodegen fn bitand(_1: &Blueprint, _2: &Blueprint) -> bool { - debug a => _1; // in scope 0 at $DIR/chained_comparison.rs:+0:15: +0:16 - debug b => _2; // in scope 0 at $DIR/chained_comparison.rs:+0:30: +0:31 - let mut _0: bool; // return place in scope 0 at $DIR/chained_comparison.rs:+0:48: +0:52 - let mut _3: u32; // in scope 0 at $DIR/chained_comparison.rs:+1:6: +1:22 - let mut _4: u32; // in scope 0 at $DIR/chained_comparison.rs:+1:26: +1:42 - let mut _5: bool; // in scope 0 at $DIR/chained_comparison.rs:+1:5: +1:43 - let mut _6: u32; // in scope 0 at $DIR/chained_comparison.rs:+2:12: +2:21 - let mut _7: u32; // in scope 0 at $DIR/chained_comparison.rs:+2:25: +2:34 - let mut _8: bool; // in scope 0 at $DIR/chained_comparison.rs:+2:11: +2:35 - let mut _9: bool; // in scope 0 at $DIR/chained_comparison.rs:+1:5: +2:35 - let mut _10: u32; // in scope 0 at $DIR/chained_comparison.rs:+3:12: +3:28 - let mut _11: u32; // in scope 0 at $DIR/chained_comparison.rs:+3:32: +3:48 - let mut _12: bool; // in scope 0 at $DIR/chained_comparison.rs:+3:11: +3:49 - let mut _13: bool; // in scope 0 at $DIR/chained_comparison.rs:+1:5: +3:49 - let mut _14: u32; // in scope 0 at $DIR/chained_comparison.rs:+4:12: +4:25 - let mut _15: u32; // in scope 0 at $DIR/chained_comparison.rs:+4:29: +4:42 - let mut _16: bool; // in scope 0 at $DIR/chained_comparison.rs:+4:11: +4:43 - let mut _17: bool; // in scope 0 at $DIR/chained_comparison.rs:+1:5: +4:43 - let mut _18: u32; // in scope 0 at $DIR/chained_comparison.rs:+5:12: +5:21 - let mut _19: u32; // in scope 0 at $DIR/chained_comparison.rs:+5:25: +5:34 - let mut _20: bool; // in scope 0 at $DIR/chained_comparison.rs:+5:11: +5:35 + debug a => _1; + debug b => _2; + let mut _0: bool; + let mut _3: u32; + let mut _4: u32; + let mut _5: bool; + let mut _6: u32; + let mut _7: u32; + let mut _8: bool; + let mut _9: bool; + let mut _10: u32; + let mut _11: u32; + let mut _12: bool; + let mut _13: bool; + let mut _14: u32; + let mut _15: u32; + let mut _16: bool; + let mut _17: bool; + let mut _18: u32; + let mut _19: u32; + let mut _20: bool; bb0: { - StorageLive(_17); // scope 0 at $DIR/chained_comparison.rs:+1:5: +4:43 - StorageLive(_13); // scope 0 at $DIR/chained_comparison.rs:+1:5: +3:49 - StorageLive(_9); // scope 0 at $DIR/chained_comparison.rs:+1:5: +2:35 - StorageLive(_5); // scope 0 at $DIR/chained_comparison.rs:+1:5: +1:43 - StorageLive(_3); // scope 0 at $DIR/chained_comparison.rs:+1:6: +1:22 - _3 = ((*_1).0: u32); // scope 0 at $DIR/chained_comparison.rs:+1:6: +1:22 - StorageLive(_4); // scope 0 at $DIR/chained_comparison.rs:+1:26: +1:42 - _4 = ((*_2).0: u32); // scope 0 at $DIR/chained_comparison.rs:+1:26: +1:42 - _5 = Eq(move _3, move _4); // scope 0 at $DIR/chained_comparison.rs:+1:5: +1:43 - StorageDead(_4); // scope 0 at $DIR/chained_comparison.rs:+1:42: +1:43 - StorageDead(_3); // scope 0 at $DIR/chained_comparison.rs:+1:42: +1:43 - StorageLive(_8); // scope 0 at $DIR/chained_comparison.rs:+2:11: +2:35 - StorageLive(_6); // scope 0 at $DIR/chained_comparison.rs:+2:12: +2:21 - _6 = ((*_1).1: u32); // scope 0 at $DIR/chained_comparison.rs:+2:12: +2:21 - StorageLive(_7); // scope 0 at $DIR/chained_comparison.rs:+2:25: +2:34 - _7 = ((*_2).1: u32); // scope 0 at $DIR/chained_comparison.rs:+2:25: +2:34 - _8 = Eq(move _6, move _7); // scope 0 at $DIR/chained_comparison.rs:+2:11: +2:35 - StorageDead(_7); // scope 0 at $DIR/chained_comparison.rs:+2:34: +2:35 - StorageDead(_6); // scope 0 at $DIR/chained_comparison.rs:+2:34: +2:35 - _9 = BitAnd(move _5, move _8); // scope 0 at $DIR/chained_comparison.rs:+1:5: +2:35 - StorageDead(_8); // scope 0 at $DIR/chained_comparison.rs:+2:34: +2:35 - StorageDead(_5); // scope 0 at $DIR/chained_comparison.rs:+2:34: +2:35 - StorageLive(_12); // scope 0 at $DIR/chained_comparison.rs:+3:11: +3:49 - StorageLive(_10); // scope 0 at $DIR/chained_comparison.rs:+3:12: +3:28 - _10 = ((*_1).2: u32); // scope 0 at $DIR/chained_comparison.rs:+3:12: +3:28 - StorageLive(_11); // scope 0 at $DIR/chained_comparison.rs:+3:32: +3:48 - _11 = ((*_2).2: u32); // scope 0 at $DIR/chained_comparison.rs:+3:32: +3:48 - _12 = Eq(move _10, move _11); // scope 0 at $DIR/chained_comparison.rs:+3:11: +3:49 - StorageDead(_11); // scope 0 at $DIR/chained_comparison.rs:+3:48: +3:49 - StorageDead(_10); // scope 0 at $DIR/chained_comparison.rs:+3:48: +3:49 - _13 = BitAnd(move _9, move _12); // scope 0 at $DIR/chained_comparison.rs:+1:5: +3:49 - StorageDead(_12); // scope 0 at $DIR/chained_comparison.rs:+3:48: +3:49 - StorageDead(_9); // scope 0 at $DIR/chained_comparison.rs:+3:48: +3:49 - StorageLive(_16); // scope 0 at $DIR/chained_comparison.rs:+4:11: +4:43 - StorageLive(_14); // scope 0 at $DIR/chained_comparison.rs:+4:12: +4:25 - _14 = ((*_1).3: u32); // scope 0 at $DIR/chained_comparison.rs:+4:12: +4:25 - StorageLive(_15); // scope 0 at $DIR/chained_comparison.rs:+4:29: +4:42 - _15 = ((*_2).3: u32); // scope 0 at $DIR/chained_comparison.rs:+4:29: +4:42 - _16 = Eq(move _14, move _15); // scope 0 at $DIR/chained_comparison.rs:+4:11: +4:43 - StorageDead(_15); // scope 0 at $DIR/chained_comparison.rs:+4:42: +4:43 - StorageDead(_14); // scope 0 at $DIR/chained_comparison.rs:+4:42: +4:43 - _17 = BitAnd(move _13, move _16); // scope 0 at $DIR/chained_comparison.rs:+1:5: +4:43 - StorageDead(_16); // scope 0 at $DIR/chained_comparison.rs:+4:42: +4:43 - StorageDead(_13); // scope 0 at $DIR/chained_comparison.rs:+4:42: +4:43 - StorageLive(_20); // scope 0 at $DIR/chained_comparison.rs:+5:11: +5:35 - StorageLive(_18); // scope 0 at $DIR/chained_comparison.rs:+5:12: +5:21 - _18 = ((*_1).4: u32); // scope 0 at $DIR/chained_comparison.rs:+5:12: +5:21 - StorageLive(_19); // scope 0 at $DIR/chained_comparison.rs:+5:25: +5:34 - _19 = ((*_2).4: u32); // scope 0 at $DIR/chained_comparison.rs:+5:25: +5:34 - _20 = Eq(move _18, move _19); // scope 0 at $DIR/chained_comparison.rs:+5:11: +5:35 - StorageDead(_19); // scope 0 at $DIR/chained_comparison.rs:+5:34: +5:35 - StorageDead(_18); // scope 0 at $DIR/chained_comparison.rs:+5:34: +5:35 - _0 = BitAnd(move _17, move _20); // scope 0 at $DIR/chained_comparison.rs:+1:5: +5:35 - StorageDead(_20); // scope 0 at $DIR/chained_comparison.rs:+5:34: +5:35 - StorageDead(_17); // scope 0 at $DIR/chained_comparison.rs:+5:34: +5:35 - return; // scope 0 at $DIR/chained_comparison.rs:+6:2: +6:2 + StorageLive(_17); + StorageLive(_13); + StorageLive(_9); + StorageLive(_5); + StorageLive(_3); + _3 = ((*_1).0: u32); + StorageLive(_4); + _4 = ((*_2).0: u32); + _5 = Eq(move _3, move _4); + StorageDead(_4); + StorageDead(_3); + StorageLive(_8); + StorageLive(_6); + _6 = ((*_1).1: u32); + StorageLive(_7); + _7 = ((*_2).1: u32); + _8 = Eq(move _6, move _7); + StorageDead(_7); + StorageDead(_6); + _9 = BitAnd(move _5, move _8); + StorageDead(_8); + StorageDead(_5); + StorageLive(_12); + StorageLive(_10); + _10 = ((*_1).2: u32); + StorageLive(_11); + _11 = ((*_2).2: u32); + _12 = Eq(move _10, move _11); + StorageDead(_11); + StorageDead(_10); + _13 = BitAnd(move _9, move _12); + StorageDead(_12); + StorageDead(_9); + StorageLive(_16); + StorageLive(_14); + _14 = ((*_1).3: u32); + StorageLive(_15); + _15 = ((*_2).3: u32); + _16 = Eq(move _14, move _15); + StorageDead(_15); + StorageDead(_14); + _17 = BitAnd(move _13, move _16); + StorageDead(_16); + StorageDead(_13); + StorageLive(_20); + StorageLive(_18); + _18 = ((*_1).4: u32); + StorageLive(_19); + _19 = ((*_2).4: u32); + _20 = Eq(move _18, move _19); + StorageDead(_19); + StorageDead(_18); + _0 = BitAnd(move _17, move _20); + StorageDead(_20); + StorageDead(_17); + return; } } diff --git a/tests/mir-opt/pre-codegen/chained_comparison.naive.PreCodegen.after.mir b/tests/mir-opt/pre-codegen/chained_comparison.naive.PreCodegen.after.mir index 26ce7fda4ed01..1c74ae74d53d5 100644 --- a/tests/mir-opt/pre-codegen/chained_comparison.naive.PreCodegen.after.mir +++ b/tests/mir-opt/pre-codegen/chained_comparison.naive.PreCodegen.after.mir @@ -1,127 +1,127 @@ // MIR for `naive` after PreCodegen fn naive(_1: &Blueprint, _2: &Blueprint) -> bool { - debug a => _1; // in scope 0 at $DIR/chained_comparison.rs:+0:14: +0:15 - debug b => _2; // in scope 0 at $DIR/chained_comparison.rs:+0:29: +0:30 - let mut _0: bool; // return place in scope 0 at $DIR/chained_comparison.rs:+0:47: +0:51 - let mut _3: u32; // in scope 0 at $DIR/chained_comparison.rs:+1:6: +1:22 - let mut _4: u32; // in scope 0 at $DIR/chained_comparison.rs:+1:26: +1:42 - let mut _5: bool; // in scope 0 at $DIR/chained_comparison.rs:+1:5: +1:43 - let mut _6: u32; // in scope 0 at $DIR/chained_comparison.rs:+2:13: +2:22 - let mut _7: u32; // in scope 0 at $DIR/chained_comparison.rs:+2:26: +2:35 - let mut _8: bool; // in scope 0 at $DIR/chained_comparison.rs:+2:12: +2:36 - let mut _9: bool; // in scope 0 at $DIR/chained_comparison.rs:+1:5: +2:36 - let mut _10: u32; // in scope 0 at $DIR/chained_comparison.rs:+3:13: +3:29 - let mut _11: u32; // in scope 0 at $DIR/chained_comparison.rs:+3:33: +3:49 - let mut _12: bool; // in scope 0 at $DIR/chained_comparison.rs:+3:12: +3:50 - let mut _13: bool; // in scope 0 at $DIR/chained_comparison.rs:+1:5: +3:50 - let mut _14: u32; // in scope 0 at $DIR/chained_comparison.rs:+4:13: +4:26 - let mut _15: u32; // in scope 0 at $DIR/chained_comparison.rs:+4:30: +4:43 - let mut _16: bool; // in scope 0 at $DIR/chained_comparison.rs:+4:12: +4:44 - let mut _17: bool; // in scope 0 at $DIR/chained_comparison.rs:+1:5: +4:44 - let mut _18: u32; // in scope 0 at $DIR/chained_comparison.rs:+5:13: +5:22 - let mut _19: u32; // in scope 0 at $DIR/chained_comparison.rs:+5:26: +5:35 - let mut _20: bool; // in scope 0 at $DIR/chained_comparison.rs:+5:12: +5:36 + debug a => _1; + debug b => _2; + let mut _0: bool; + let mut _3: u32; + let mut _4: u32; + let mut _5: bool; + let mut _6: u32; + let mut _7: u32; + let mut _8: bool; + let mut _9: bool; + let mut _10: u32; + let mut _11: u32; + let mut _12: bool; + let mut _13: bool; + let mut _14: u32; + let mut _15: u32; + let mut _16: bool; + let mut _17: bool; + let mut _18: u32; + let mut _19: u32; + let mut _20: bool; bb0: { - StorageLive(_17); // scope 0 at $DIR/chained_comparison.rs:+1:5: +4:44 - StorageLive(_13); // scope 0 at $DIR/chained_comparison.rs:+1:5: +3:50 - StorageLive(_9); // scope 0 at $DIR/chained_comparison.rs:+1:5: +2:36 - StorageLive(_5); // scope 0 at $DIR/chained_comparison.rs:+1:5: +1:43 - StorageLive(_3); // scope 0 at $DIR/chained_comparison.rs:+1:6: +1:22 - _3 = ((*_1).0: u32); // scope 0 at $DIR/chained_comparison.rs:+1:6: +1:22 - StorageLive(_4); // scope 0 at $DIR/chained_comparison.rs:+1:26: +1:42 - _4 = ((*_2).0: u32); // scope 0 at $DIR/chained_comparison.rs:+1:26: +1:42 - _5 = Eq(move _3, move _4); // scope 0 at $DIR/chained_comparison.rs:+1:5: +1:43 - StorageDead(_4); // scope 0 at $DIR/chained_comparison.rs:+1:42: +1:43 - StorageDead(_3); // scope 0 at $DIR/chained_comparison.rs:+1:42: +1:43 - switchInt(move _5) -> [0: bb1, otherwise: bb2]; // scope 0 at $DIR/chained_comparison.rs:+1:5: +2:36 + StorageLive(_17); + StorageLive(_13); + StorageLive(_9); + StorageLive(_5); + StorageLive(_3); + _3 = ((*_1).0: u32); + StorageLive(_4); + _4 = ((*_2).0: u32); + _5 = Eq(move _3, move _4); + StorageDead(_4); + StorageDead(_3); + switchInt(move _5) -> [0: bb1, otherwise: bb2]; } bb1: { - StorageDead(_8); // scope 0 at $DIR/chained_comparison.rs:+2:35: +2:36 - StorageDead(_5); // scope 0 at $DIR/chained_comparison.rs:+2:35: +2:36 - goto -> bb3; // scope 0 at $DIR/chained_comparison.rs:+1:5: +2:36 + StorageDead(_8); + StorageDead(_5); + goto -> bb3; } bb2: { - StorageLive(_8); // scope 0 at $DIR/chained_comparison.rs:+2:12: +2:36 - StorageLive(_6); // scope 0 at $DIR/chained_comparison.rs:+2:13: +2:22 - _6 = ((*_1).1: u32); // scope 0 at $DIR/chained_comparison.rs:+2:13: +2:22 - StorageLive(_7); // scope 0 at $DIR/chained_comparison.rs:+2:26: +2:35 - _7 = ((*_2).1: u32); // scope 0 at $DIR/chained_comparison.rs:+2:26: +2:35 - _8 = Eq(move _6, move _7); // scope 0 at $DIR/chained_comparison.rs:+2:12: +2:36 - StorageDead(_7); // scope 0 at $DIR/chained_comparison.rs:+2:35: +2:36 - StorageDead(_6); // scope 0 at $DIR/chained_comparison.rs:+2:35: +2:36 - _9 = move _8; // scope 0 at $DIR/chained_comparison.rs:+1:5: +2:36 - StorageDead(_8); // scope 0 at $DIR/chained_comparison.rs:+2:35: +2:36 - StorageDead(_5); // scope 0 at $DIR/chained_comparison.rs:+2:35: +2:36 - switchInt(move _9) -> [0: bb3, otherwise: bb4]; // scope 0 at $DIR/chained_comparison.rs:+1:5: +3:50 + StorageLive(_8); + StorageLive(_6); + _6 = ((*_1).1: u32); + StorageLive(_7); + _7 = ((*_2).1: u32); + _8 = Eq(move _6, move _7); + StorageDead(_7); + StorageDead(_6); + _9 = move _8; + StorageDead(_8); + StorageDead(_5); + switchInt(move _9) -> [0: bb3, otherwise: bb4]; } bb3: { - StorageDead(_12); // scope 0 at $DIR/chained_comparison.rs:+3:49: +3:50 - StorageDead(_9); // scope 0 at $DIR/chained_comparison.rs:+3:49: +3:50 - goto -> bb5; // scope 0 at $DIR/chained_comparison.rs:+1:5: +3:50 + StorageDead(_12); + StorageDead(_9); + goto -> bb5; } bb4: { - StorageLive(_12); // scope 0 at $DIR/chained_comparison.rs:+3:12: +3:50 - StorageLive(_10); // scope 0 at $DIR/chained_comparison.rs:+3:13: +3:29 - _10 = ((*_1).2: u32); // scope 0 at $DIR/chained_comparison.rs:+3:13: +3:29 - StorageLive(_11); // scope 0 at $DIR/chained_comparison.rs:+3:33: +3:49 - _11 = ((*_2).2: u32); // scope 0 at $DIR/chained_comparison.rs:+3:33: +3:49 - _12 = Eq(move _10, move _11); // scope 0 at $DIR/chained_comparison.rs:+3:12: +3:50 - StorageDead(_11); // scope 0 at $DIR/chained_comparison.rs:+3:49: +3:50 - StorageDead(_10); // scope 0 at $DIR/chained_comparison.rs:+3:49: +3:50 - _13 = move _12; // scope 0 at $DIR/chained_comparison.rs:+1:5: +3:50 - StorageDead(_12); // scope 0 at $DIR/chained_comparison.rs:+3:49: +3:50 - StorageDead(_9); // scope 0 at $DIR/chained_comparison.rs:+3:49: +3:50 - switchInt(move _13) -> [0: bb5, otherwise: bb6]; // scope 0 at $DIR/chained_comparison.rs:+1:5: +4:44 + StorageLive(_12); + StorageLive(_10); + _10 = ((*_1).2: u32); + StorageLive(_11); + _11 = ((*_2).2: u32); + _12 = Eq(move _10, move _11); + StorageDead(_11); + StorageDead(_10); + _13 = move _12; + StorageDead(_12); + StorageDead(_9); + switchInt(move _13) -> [0: bb5, otherwise: bb6]; } bb5: { - StorageDead(_16); // scope 0 at $DIR/chained_comparison.rs:+4:43: +4:44 - StorageDead(_13); // scope 0 at $DIR/chained_comparison.rs:+4:43: +4:44 - goto -> bb7; // scope 0 at $DIR/chained_comparison.rs:+1:5: +4:44 + StorageDead(_16); + StorageDead(_13); + goto -> bb7; } bb6: { - StorageLive(_16); // scope 0 at $DIR/chained_comparison.rs:+4:12: +4:44 - StorageLive(_14); // scope 0 at $DIR/chained_comparison.rs:+4:13: +4:26 - _14 = ((*_1).3: u32); // scope 0 at $DIR/chained_comparison.rs:+4:13: +4:26 - StorageLive(_15); // scope 0 at $DIR/chained_comparison.rs:+4:30: +4:43 - _15 = ((*_2).3: u32); // scope 0 at $DIR/chained_comparison.rs:+4:30: +4:43 - _16 = Eq(move _14, move _15); // scope 0 at $DIR/chained_comparison.rs:+4:12: +4:44 - StorageDead(_15); // scope 0 at $DIR/chained_comparison.rs:+4:43: +4:44 - StorageDead(_14); // scope 0 at $DIR/chained_comparison.rs:+4:43: +4:44 - _17 = move _16; // scope 0 at $DIR/chained_comparison.rs:+1:5: +4:44 - StorageDead(_16); // scope 0 at $DIR/chained_comparison.rs:+4:43: +4:44 - StorageDead(_13); // scope 0 at $DIR/chained_comparison.rs:+4:43: +4:44 - switchInt(move _17) -> [0: bb7, otherwise: bb8]; // scope 0 at $DIR/chained_comparison.rs:+1:5: +5:36 + StorageLive(_16); + StorageLive(_14); + _14 = ((*_1).3: u32); + StorageLive(_15); + _15 = ((*_2).3: u32); + _16 = Eq(move _14, move _15); + StorageDead(_15); + StorageDead(_14); + _17 = move _16; + StorageDead(_16); + StorageDead(_13); + switchInt(move _17) -> [0: bb7, otherwise: bb8]; } bb7: { - _0 = const false; // scope 0 at $DIR/chained_comparison.rs:+1:5: +5:36 - goto -> bb9; // scope 0 at $DIR/chained_comparison.rs:+1:5: +5:36 + _0 = const false; + goto -> bb9; } bb8: { - StorageLive(_20); // scope 0 at $DIR/chained_comparison.rs:+5:12: +5:36 - StorageLive(_18); // scope 0 at $DIR/chained_comparison.rs:+5:13: +5:22 - _18 = ((*_1).4: u32); // scope 0 at $DIR/chained_comparison.rs:+5:13: +5:22 - StorageLive(_19); // scope 0 at $DIR/chained_comparison.rs:+5:26: +5:35 - _19 = ((*_2).4: u32); // scope 0 at $DIR/chained_comparison.rs:+5:26: +5:35 - _20 = Eq(move _18, move _19); // scope 0 at $DIR/chained_comparison.rs:+5:12: +5:36 - StorageDead(_19); // scope 0 at $DIR/chained_comparison.rs:+5:35: +5:36 - StorageDead(_18); // scope 0 at $DIR/chained_comparison.rs:+5:35: +5:36 - _0 = move _20; // scope 0 at $DIR/chained_comparison.rs:+1:5: +5:36 - goto -> bb9; // scope 0 at $DIR/chained_comparison.rs:+1:5: +5:36 + StorageLive(_20); + StorageLive(_18); + _18 = ((*_1).4: u32); + StorageLive(_19); + _19 = ((*_2).4: u32); + _20 = Eq(move _18, move _19); + StorageDead(_19); + StorageDead(_18); + _0 = move _20; + goto -> bb9; } bb9: { - StorageDead(_20); // scope 0 at $DIR/chained_comparison.rs:+5:35: +5:36 - StorageDead(_17); // scope 0 at $DIR/chained_comparison.rs:+5:35: +5:36 - return; // scope 0 at $DIR/chained_comparison.rs:+6:2: +6:2 + StorageDead(_20); + StorageDead(_17); + return; } } diff --git a/tests/mir-opt/pre-codegen/chained_comparison.returning.PreCodegen.after.mir b/tests/mir-opt/pre-codegen/chained_comparison.returning.PreCodegen.after.mir index 7560e1e26cea9..1e619bc9704ac 100644 --- a/tests/mir-opt/pre-codegen/chained_comparison.returning.PreCodegen.after.mir +++ b/tests/mir-opt/pre-codegen/chained_comparison.returning.PreCodegen.after.mir @@ -1,126 +1,126 @@ // MIR for `returning` after PreCodegen fn returning(_1: &Blueprint, _2: &Blueprint) -> bool { - debug a => _1; // in scope 0 at $DIR/chained_comparison.rs:+0:18: +0:19 - debug b => _2; // in scope 0 at $DIR/chained_comparison.rs:+0:33: +0:34 - let mut _0: bool; // return place in scope 0 at $DIR/chained_comparison.rs:+0:51: +0:55 - let mut _3: u32; // in scope 0 at $DIR/chained_comparison.rs:+1:8: +1:24 - let mut _4: u32; // in scope 0 at $DIR/chained_comparison.rs:+1:28: +1:44 - let mut _5: bool; // in scope 0 at $DIR/chained_comparison.rs:+1:8: +1:44 - let mut _6: u32; // in scope 0 at $DIR/chained_comparison.rs:+4:8: +4:17 - let mut _7: u32; // in scope 0 at $DIR/chained_comparison.rs:+4:21: +4:30 - let mut _8: bool; // in scope 0 at $DIR/chained_comparison.rs:+4:8: +4:30 - let mut _9: u32; // in scope 0 at $DIR/chained_comparison.rs:+7:8: +7:24 - let mut _10: u32; // in scope 0 at $DIR/chained_comparison.rs:+7:28: +7:44 - let mut _11: bool; // in scope 0 at $DIR/chained_comparison.rs:+7:8: +7:44 - let mut _12: u32; // in scope 0 at $DIR/chained_comparison.rs:+10:8: +10:21 - let mut _13: u32; // in scope 0 at $DIR/chained_comparison.rs:+10:25: +10:38 - let mut _14: bool; // in scope 0 at $DIR/chained_comparison.rs:+10:8: +10:38 - let mut _15: u32; // in scope 0 at $DIR/chained_comparison.rs:+13:8: +13:17 - let mut _16: u32; // in scope 0 at $DIR/chained_comparison.rs:+13:21: +13:30 - let mut _17: bool; // in scope 0 at $DIR/chained_comparison.rs:+13:8: +13:30 + debug a => _1; + debug b => _2; + let mut _0: bool; + let mut _3: u32; + let mut _4: u32; + let mut _5: bool; + let mut _6: u32; + let mut _7: u32; + let mut _8: bool; + let mut _9: u32; + let mut _10: u32; + let mut _11: bool; + let mut _12: u32; + let mut _13: u32; + let mut _14: bool; + let mut _15: u32; + let mut _16: u32; + let mut _17: bool; bb0: { - StorageLive(_5); // scope 0 at $DIR/chained_comparison.rs:+1:8: +1:44 - StorageLive(_3); // scope 0 at $DIR/chained_comparison.rs:+1:8: +1:24 - _3 = ((*_1).0: u32); // scope 0 at $DIR/chained_comparison.rs:+1:8: +1:24 - StorageLive(_4); // scope 0 at $DIR/chained_comparison.rs:+1:28: +1:44 - _4 = ((*_2).0: u32); // scope 0 at $DIR/chained_comparison.rs:+1:28: +1:44 - _5 = Ne(move _3, move _4); // scope 0 at $DIR/chained_comparison.rs:+1:8: +1:44 - StorageDead(_4); // scope 0 at $DIR/chained_comparison.rs:+1:43: +1:44 - StorageDead(_3); // scope 0 at $DIR/chained_comparison.rs:+1:43: +1:44 - switchInt(move _5) -> [0: bb1, otherwise: bb10]; // scope 0 at $DIR/chained_comparison.rs:+1:8: +1:44 + StorageLive(_5); + StorageLive(_3); + _3 = ((*_1).0: u32); + StorageLive(_4); + _4 = ((*_2).0: u32); + _5 = Ne(move _3, move _4); + StorageDead(_4); + StorageDead(_3); + switchInt(move _5) -> [0: bb1, otherwise: bb10]; } bb1: { - StorageDead(_5); // scope 0 at $DIR/chained_comparison.rs:+3:5: +3:6 - StorageLive(_8); // scope 0 at $DIR/chained_comparison.rs:+4:8: +4:30 - StorageLive(_6); // scope 0 at $DIR/chained_comparison.rs:+4:8: +4:17 - _6 = ((*_1).1: u32); // scope 0 at $DIR/chained_comparison.rs:+4:8: +4:17 - StorageLive(_7); // scope 0 at $DIR/chained_comparison.rs:+4:21: +4:30 - _7 = ((*_2).1: u32); // scope 0 at $DIR/chained_comparison.rs:+4:21: +4:30 - _8 = Ne(move _6, move _7); // scope 0 at $DIR/chained_comparison.rs:+4:8: +4:30 - StorageDead(_7); // scope 0 at $DIR/chained_comparison.rs:+4:29: +4:30 - StorageDead(_6); // scope 0 at $DIR/chained_comparison.rs:+4:29: +4:30 - switchInt(move _8) -> [0: bb2, otherwise: bb9]; // scope 0 at $DIR/chained_comparison.rs:+4:8: +4:30 + StorageDead(_5); + StorageLive(_8); + StorageLive(_6); + _6 = ((*_1).1: u32); + StorageLive(_7); + _7 = ((*_2).1: u32); + _8 = Ne(move _6, move _7); + StorageDead(_7); + StorageDead(_6); + switchInt(move _8) -> [0: bb2, otherwise: bb9]; } bb2: { - StorageDead(_8); // scope 0 at $DIR/chained_comparison.rs:+6:5: +6:6 - StorageLive(_11); // scope 0 at $DIR/chained_comparison.rs:+7:8: +7:44 - StorageLive(_9); // scope 0 at $DIR/chained_comparison.rs:+7:8: +7:24 - _9 = ((*_1).2: u32); // scope 0 at $DIR/chained_comparison.rs:+7:8: +7:24 - StorageLive(_10); // scope 0 at $DIR/chained_comparison.rs:+7:28: +7:44 - _10 = ((*_2).2: u32); // scope 0 at $DIR/chained_comparison.rs:+7:28: +7:44 - _11 = Ne(move _9, move _10); // scope 0 at $DIR/chained_comparison.rs:+7:8: +7:44 - StorageDead(_10); // scope 0 at $DIR/chained_comparison.rs:+7:43: +7:44 - StorageDead(_9); // scope 0 at $DIR/chained_comparison.rs:+7:43: +7:44 - switchInt(move _11) -> [0: bb3, otherwise: bb8]; // scope 0 at $DIR/chained_comparison.rs:+7:8: +7:44 + StorageDead(_8); + StorageLive(_11); + StorageLive(_9); + _9 = ((*_1).2: u32); + StorageLive(_10); + _10 = ((*_2).2: u32); + _11 = Ne(move _9, move _10); + StorageDead(_10); + StorageDead(_9); + switchInt(move _11) -> [0: bb3, otherwise: bb8]; } bb3: { - StorageDead(_11); // scope 0 at $DIR/chained_comparison.rs:+9:5: +9:6 - StorageLive(_14); // scope 0 at $DIR/chained_comparison.rs:+10:8: +10:38 - StorageLive(_12); // scope 0 at $DIR/chained_comparison.rs:+10:8: +10:21 - _12 = ((*_1).3: u32); // scope 0 at $DIR/chained_comparison.rs:+10:8: +10:21 - StorageLive(_13); // scope 0 at $DIR/chained_comparison.rs:+10:25: +10:38 - _13 = ((*_2).3: u32); // scope 0 at $DIR/chained_comparison.rs:+10:25: +10:38 - _14 = Ne(move _12, move _13); // scope 0 at $DIR/chained_comparison.rs:+10:8: +10:38 - StorageDead(_13); // scope 0 at $DIR/chained_comparison.rs:+10:37: +10:38 - StorageDead(_12); // scope 0 at $DIR/chained_comparison.rs:+10:37: +10:38 - switchInt(move _14) -> [0: bb4, otherwise: bb7]; // scope 0 at $DIR/chained_comparison.rs:+10:8: +10:38 + StorageDead(_11); + StorageLive(_14); + StorageLive(_12); + _12 = ((*_1).3: u32); + StorageLive(_13); + _13 = ((*_2).3: u32); + _14 = Ne(move _12, move _13); + StorageDead(_13); + StorageDead(_12); + switchInt(move _14) -> [0: bb4, otherwise: bb7]; } bb4: { - StorageDead(_14); // scope 0 at $DIR/chained_comparison.rs:+12:5: +12:6 - StorageLive(_17); // scope 0 at $DIR/chained_comparison.rs:+13:8: +13:30 - StorageLive(_15); // scope 0 at $DIR/chained_comparison.rs:+13:8: +13:17 - _15 = ((*_1).4: u32); // scope 0 at $DIR/chained_comparison.rs:+13:8: +13:17 - StorageLive(_16); // scope 0 at $DIR/chained_comparison.rs:+13:21: +13:30 - _16 = ((*_2).4: u32); // scope 0 at $DIR/chained_comparison.rs:+13:21: +13:30 - _17 = Ne(move _15, move _16); // scope 0 at $DIR/chained_comparison.rs:+13:8: +13:30 - StorageDead(_16); // scope 0 at $DIR/chained_comparison.rs:+13:29: +13:30 - StorageDead(_15); // scope 0 at $DIR/chained_comparison.rs:+13:29: +13:30 - switchInt(move _17) -> [0: bb5, otherwise: bb6]; // scope 0 at $DIR/chained_comparison.rs:+13:8: +13:30 + StorageDead(_14); + StorageLive(_17); + StorageLive(_15); + _15 = ((*_1).4: u32); + StorageLive(_16); + _16 = ((*_2).4: u32); + _17 = Ne(move _15, move _16); + StorageDead(_16); + StorageDead(_15); + switchInt(move _17) -> [0: bb5, otherwise: bb6]; } bb5: { - StorageDead(_17); // scope 0 at $DIR/chained_comparison.rs:+15:5: +15:6 - _0 = const true; // scope 0 at $DIR/chained_comparison.rs:+16:5: +16:9 - goto -> bb11; // scope 0 at $DIR/chained_comparison.rs:+17:2: +17:2 + StorageDead(_17); + _0 = const true; + goto -> bb11; } bb6: { - _0 = const false; // scope 0 at $DIR/chained_comparison.rs:+14:16: +14:21 - StorageDead(_17); // scope 0 at $DIR/chained_comparison.rs:+15:5: +15:6 - goto -> bb11; // scope 0 at no-location + _0 = const false; + StorageDead(_17); + goto -> bb11; } bb7: { - _0 = const false; // scope 0 at $DIR/chained_comparison.rs:+11:16: +11:21 - StorageDead(_14); // scope 0 at $DIR/chained_comparison.rs:+12:5: +12:6 - goto -> bb11; // scope 0 at no-location + _0 = const false; + StorageDead(_14); + goto -> bb11; } bb8: { - _0 = const false; // scope 0 at $DIR/chained_comparison.rs:+8:16: +8:21 - StorageDead(_11); // scope 0 at $DIR/chained_comparison.rs:+9:5: +9:6 - goto -> bb11; // scope 0 at no-location + _0 = const false; + StorageDead(_11); + goto -> bb11; } bb9: { - _0 = const false; // scope 0 at $DIR/chained_comparison.rs:+5:16: +5:21 - StorageDead(_8); // scope 0 at $DIR/chained_comparison.rs:+6:5: +6:6 - goto -> bb11; // scope 0 at no-location + _0 = const false; + StorageDead(_8); + goto -> bb11; } bb10: { - _0 = const false; // scope 0 at $DIR/chained_comparison.rs:+2:16: +2:21 - StorageDead(_5); // scope 0 at $DIR/chained_comparison.rs:+3:5: +3:6 - goto -> bb11; // scope 0 at no-location + _0 = const false; + StorageDead(_5); + goto -> bb11; } bb11: { - return; // scope 0 at $DIR/chained_comparison.rs:+17:2: +17:2 + return; } } diff --git a/tests/mir-opt/pre-codegen/checked_ops.checked_shl.PreCodegen.after.mir b/tests/mir-opt/pre-codegen/checked_ops.checked_shl.PreCodegen.after.mir index dff3cbbe76d22..10b93a15799bd 100644 --- a/tests/mir-opt/pre-codegen/checked_ops.checked_shl.PreCodegen.after.mir +++ b/tests/mir-opt/pre-codegen/checked_ops.checked_shl.PreCodegen.after.mir @@ -1,74 +1,74 @@ // MIR for `checked_shl` after PreCodegen fn checked_shl(_1: u32, _2: u32) -> Option { - debug x => _1; // in scope 0 at $DIR/checked_ops.rs:+0:20: +0:21 - debug rhs => _2; // in scope 0 at $DIR/checked_ops.rs:+0:28: +0:31 - let mut _0: std::option::Option; // return place in scope 0 at $DIR/checked_ops.rs:+0:41: +0:52 - scope 1 (inlined core::num::::checked_shl) { // at $DIR/checked_ops.rs:16:7: 16:23 - debug self => _1; // in scope 1 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - debug rhs => _2; // in scope 1 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - let mut _11: u32; // in scope 1 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - let mut _12: bool; // in scope 1 at $SRC_DIR/core/src/num/mod.rs:LL:COL + debug x => _1; + debug rhs => _2; + let mut _0: std::option::Option; + scope 1 (inlined core::num::::checked_shl) { + debug self => _1; + debug rhs => _2; + let mut _11: u32; + let mut _12: bool; scope 2 { - debug a => _11; // in scope 2 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - debug b => _10; // in scope 2 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL + debug a => _11; + debug b => _10; } - scope 3 (inlined core::num::::overflowing_shl) { // at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - debug self => _1; // in scope 3 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - debug rhs => _2; // in scope 3 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - let mut _9: u32; // in scope 3 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - let mut _10: bool; // in scope 3 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - scope 4 (inlined core::num::::wrapping_shl) { // at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - debug self => _1; // in scope 4 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - debug rhs => _2; // in scope 4 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - let mut _3: u32; // in scope 4 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - let mut _4: u32; // in scope 4 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL + scope 3 (inlined core::num::::overflowing_shl) { + debug self => _1; + debug rhs => _2; + let mut _9: u32; + let mut _10: bool; + scope 4 (inlined core::num::::wrapping_shl) { + debug self => _1; + debug rhs => _2; + let mut _3: u32; + let mut _4: u32; scope 5 { - scope 6 (inlined core::num::::unchecked_shl) { // at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - debug self => _1; // in scope 6 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - debug rhs => _4; // in scope 6 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - let mut _8: u32; // in scope 6 at $SRC_DIR/core/src/num/mod.rs:LL:COL + scope 6 (inlined core::num::::unchecked_shl) { + debug self => _1; + debug rhs => _4; + let mut _8: u32; scope 7 { - scope 8 (inlined core::num::::unchecked_shl::conv) { // at $SRC_DIR/core/src/num/mod.rs:LL:COL - debug x => _4; // in scope 8 at $SRC_DIR/core/src/num/mod.rs:LL:COL - let mut _5: std::result::Result; // in scope 8 at $SRC_DIR/core/src/num/mod.rs:LL:COL - let mut _7: std::option::Option; // in scope 8 at $SRC_DIR/core/src/num/mod.rs:LL:COL + scope 8 (inlined core::num::::unchecked_shl::conv) { + debug x => _4; + let mut _5: std::result::Result; + let mut _7: std::option::Option; scope 9 { - scope 10 (inlined >::try_into) { // at $SRC_DIR/core/src/num/mod.rs:LL:COL - debug self => _4; // in scope 10 at $SRC_DIR/core/src/convert/mod.rs:LL:COL - scope 11 (inlined >::try_from) { // at $SRC_DIR/core/src/convert/mod.rs:LL:COL - debug value => _4; // in scope 11 at $SRC_DIR/core/src/convert/mod.rs:LL:COL - scope 12 (inlined >::into) { // at $SRC_DIR/core/src/convert/mod.rs:LL:COL - debug self => _4; // in scope 12 at $SRC_DIR/core/src/convert/mod.rs:LL:COL - scope 13 (inlined >::from) { // at $SRC_DIR/core/src/convert/mod.rs:LL:COL - debug t => _4; // in scope 13 at $SRC_DIR/core/src/convert/mod.rs:LL:COL + scope 10 (inlined >::try_into) { + debug self => _4; + scope 11 (inlined >::try_from) { + debug value => _4; + scope 12 (inlined >::into) { + debug self => _4; + scope 13 (inlined >::from) { + debug t => _4; } } } } - scope 14 (inlined Result::::ok) { // at $SRC_DIR/core/src/num/mod.rs:LL:COL - debug self => _5; // in scope 14 at $SRC_DIR/core/src/result.rs:LL:COL - let _6: u32; // in scope 14 at $SRC_DIR/core/src/result.rs:LL:COL + scope 14 (inlined Result::::ok) { + debug self => _5; + let _6: u32; scope 15 { - debug x => _6; // in scope 15 at $SRC_DIR/core/src/result.rs:LL:COL + debug x => _6; } } - scope 16 (inlined #[track_caller] Option::::unwrap_unchecked) { // at $SRC_DIR/core/src/num/mod.rs:LL:COL - debug self => _7; // in scope 16 at $SRC_DIR/core/src/option.rs:LL:COL - let mut _13: &std::option::Option; // in scope 16 at $SRC_DIR/core/src/option.rs:LL:COL + scope 16 (inlined #[track_caller] Option::::unwrap_unchecked) { + debug self => _7; + let mut _13: &std::option::Option; scope 17 { - debug val => _8; // in scope 17 at $SRC_DIR/core/src/option.rs:LL:COL + debug val => _8; } scope 18 { - scope 20 (inlined unreachable_unchecked) { // at $SRC_DIR/core/src/option.rs:LL:COL + scope 20 (inlined unreachable_unchecked) { scope 21 { - scope 22 (inlined unreachable_unchecked::runtime) { // at $SRC_DIR/core/src/intrinsics.rs:LL:COL + scope 22 (inlined unreachable_unchecked::runtime) { } } } } - scope 19 (inlined Option::::is_some) { // at $SRC_DIR/core/src/option.rs:LL:COL - debug self => _13; // in scope 19 at $SRC_DIR/core/src/option.rs:LL:COL + scope 19 (inlined Option::::is_some) { + debug self => _13; } } } @@ -81,64 +81,58 @@ fn checked_shl(_1: u32, _2: u32) -> Option { } bb0: { - StorageLive(_10); // scope 0 at $DIR/checked_ops.rs:+1:7: +1:23 - StorageLive(_11); // scope 0 at $DIR/checked_ops.rs:+1:7: +1:23 - StorageLive(_9); // scope 3 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - StorageLive(_4); // scope 5 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - StorageLive(_3); // scope 5 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - _3 = const 31_u32; // scope 5 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - _4 = BitAnd(_2, move _3); // scope 5 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - StorageDead(_3); // scope 5 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - StorageLive(_8); // scope 7 at $SRC_DIR/core/src/num/mod.rs:LL:COL - StorageLive(_7); // scope 9 at $SRC_DIR/core/src/num/mod.rs:LL:COL - StorageLive(_5); // scope 9 at $SRC_DIR/core/src/num/mod.rs:LL:COL - _5 = Result::::Ok(_4); // scope 11 at $SRC_DIR/core/src/convert/mod.rs:LL:COL - StorageLive(_6); // scope 9 at $SRC_DIR/core/src/num/mod.rs:LL:COL - _6 = move ((_5 as Ok).0: u32); // scope 14 at $SRC_DIR/core/src/result.rs:LL:COL - _7 = Option::::Some(move _6); // scope 15 at $SRC_DIR/core/src/result.rs:LL:COL - StorageDead(_6); // scope 9 at $SRC_DIR/core/src/num/mod.rs:LL:COL - StorageDead(_5); // scope 9 at $SRC_DIR/core/src/num/mod.rs:LL:COL - StorageLive(_13); // scope 9 at $SRC_DIR/core/src/num/mod.rs:LL:COL - _8 = move ((_7 as Some).0: u32); // scope 16 at $SRC_DIR/core/src/option.rs:LL:COL - StorageDead(_13); // scope 9 at $SRC_DIR/core/src/num/mod.rs:LL:COL - StorageDead(_7); // scope 9 at $SRC_DIR/core/src/num/mod.rs:LL:COL - _9 = unchecked_shl::(_1, move _8) -> [return: bb1, unwind unreachable]; // scope 7 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(u32, u32) -> u32 {unchecked_shl::}, val: Value() } + StorageLive(_10); + StorageLive(_11); + StorageLive(_9); + StorageLive(_4); + StorageLive(_3); + _3 = const 31_u32; + _4 = BitAnd(_2, move _3); + StorageDead(_3); + StorageLive(_8); + StorageLive(_7); + StorageLive(_5); + _5 = Result::::Ok(_4); + StorageLive(_6); + _6 = move ((_5 as Ok).0: u32); + _7 = Option::::Some(move _6); + StorageDead(_6); + StorageDead(_5); + StorageLive(_13); + _8 = move ((_7 as Some).0: u32); + StorageDead(_13); + StorageDead(_7); + _9 = unchecked_shl::(_1, move _8) -> [return: bb1, unwind unreachable]; } bb1: { - StorageDead(_8); // scope 7 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - StorageDead(_4); // scope 5 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - _10 = Ge(_2, const _); // scope 3 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - _11 = move _9; // scope 3 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - StorageDead(_9); // scope 3 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - StorageLive(_12); // scope 2 at $SRC_DIR/core/src/num/mod.rs:LL:COL - _12 = unlikely(_10) -> [return: bb2, unwind unreachable]; // scope 2 at $SRC_DIR/core/src/num/mod.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/core/src/num/mod.rs:LL:COL - // + literal: Const { ty: extern "rust-intrinsic" fn(bool) -> bool {unlikely}, val: Value() } + StorageDead(_8); + StorageDead(_4); + _10 = Ge(_2, const _); + _11 = move _9; + StorageDead(_9); + StorageLive(_12); + _12 = unlikely(_10) -> [return: bb2, unwind unreachable]; } bb2: { - switchInt(move _12) -> [0: bb3, otherwise: bb4]; // scope 2 at $SRC_DIR/core/src/num/mod.rs:LL:COL + switchInt(move _12) -> [0: bb3, otherwise: bb4]; } bb3: { - _0 = Option::::Some(_11); // scope 2 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - goto -> bb5; // scope 2 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL + _0 = Option::::Some(_11); + goto -> bb5; } bb4: { - _0 = Option::::None; // scope 2 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - goto -> bb5; // scope 2 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL + _0 = Option::::None; + goto -> bb5; } bb5: { - StorageDead(_12); // scope 2 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - StorageDead(_11); // scope 0 at $DIR/checked_ops.rs:+1:7: +1:23 - StorageDead(_10); // scope 0 at $DIR/checked_ops.rs:+1:7: +1:23 - return; // scope 0 at $DIR/checked_ops.rs:+2:2: +2:2 + StorageDead(_12); + StorageDead(_11); + StorageDead(_10); + return; } } diff --git a/tests/mir-opt/pre-codegen/checked_ops.step_forward.PreCodegen.after.mir b/tests/mir-opt/pre-codegen/checked_ops.step_forward.PreCodegen.after.mir index 78f68e8ffe674..46c078cea0d61 100644 --- a/tests/mir-opt/pre-codegen/checked_ops.step_forward.PreCodegen.after.mir +++ b/tests/mir-opt/pre-codegen/checked_ops.step_forward.PreCodegen.after.mir @@ -1,64 +1,61 @@ // MIR for `step_forward` after PreCodegen fn step_forward(_1: u32, _2: usize) -> u32 { - debug x => _1; // in scope 0 at $DIR/checked_ops.rs:+0:21: +0:22 - debug n => _2; // in scope 0 at $DIR/checked_ops.rs:+0:29: +0:30 - let mut _0: u32; // return place in scope 0 at $DIR/checked_ops.rs:+0:42: +0:45 - scope 1 (inlined ::forward) { // at $DIR/checked_ops.rs:11:5: 11:35 - debug start => _1; // in scope 1 at $SRC_DIR/core/src/iter/range.rs:LL:COL - debug n => _2; // in scope 1 at $SRC_DIR/core/src/iter/range.rs:LL:COL - let _3: std::option::Option; // in scope 1 at $SRC_DIR/core/src/iter/range.rs:LL:COL - let mut _4: &std::option::Option; // in scope 1 at $SRC_DIR/core/src/iter/range.rs:LL:COL - let mut _7: bool; // in scope 1 at $SRC_DIR/core/src/iter/range.rs:LL:COL - let mut _8: u32; // in scope 1 at $SRC_DIR/core/src/iter/range.rs:LL:COL + debug x => _1; + debug n => _2; + let mut _0: u32; + scope 1 (inlined ::forward) { + debug start => _1; + debug n => _2; + let _3: std::option::Option; + let mut _4: &std::option::Option; + let mut _7: bool; + let mut _8: u32; scope 2 { } - scope 3 (inlined Option::::is_none) { // at $SRC_DIR/core/src/iter/range.rs:LL:COL - debug self => _4; // in scope 3 at $SRC_DIR/core/src/option.rs:LL:COL - let mut _6: bool; // in scope 3 at $SRC_DIR/core/src/option.rs:LL:COL - scope 4 (inlined Option::::is_some) { // at $SRC_DIR/core/src/option.rs:LL:COL - debug self => _4; // in scope 4 at $SRC_DIR/core/src/option.rs:LL:COL - let mut _5: isize; // in scope 4 at $SRC_DIR/core/src/option.rs:LL:COL + scope 3 (inlined Option::::is_none) { + debug self => _4; + let mut _6: bool; + scope 4 (inlined Option::::is_some) { + debug self => _4; + let mut _5: isize; } } - scope 5 (inlined core::num::::wrapping_add) { // at $SRC_DIR/core/src/iter/range.rs:LL:COL - debug self => _1; // in scope 5 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - debug rhs => _8; // in scope 5 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL + scope 5 (inlined core::num::::wrapping_add) { + debug self => _1; + debug rhs => _8; } } bb0: { - StorageLive(_7); // scope 1 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageLive(_4); // scope 1 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageLive(_3); // scope 1 at $SRC_DIR/core/src/iter/range.rs:LL:COL - _3 = ::forward_checked(_1, _2) -> bb1; // scope 1 at $SRC_DIR/core/src/iter/range.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/core/src/iter/range.rs:LL:COL - // + literal: Const { ty: fn(u32, usize) -> Option {::forward_checked}, val: Value() } + StorageLive(_7); + StorageLive(_4); + StorageLive(_3); + _3 = ::forward_checked(_1, _2) -> bb1; } bb1: { - _4 = &_3; // scope 1 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageLive(_6); // scope 3 at $SRC_DIR/core/src/option.rs:LL:COL - _5 = discriminant((*_4)); // scope 4 at $SRC_DIR/core/src/option.rs:LL:COL - _6 = Eq(_5, const 1_isize); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _7 = Not(move _6); // scope 3 at $SRC_DIR/core/src/option.rs:LL:COL - StorageDead(_6); // scope 3 at $SRC_DIR/core/src/option.rs:LL:COL - StorageDead(_3); // scope 1 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageDead(_4); // scope 1 at $SRC_DIR/core/src/iter/range.rs:LL:COL - switchInt(move _7) -> [0: bb3, otherwise: bb2]; // scope 1 at $SRC_DIR/core/src/iter/range.rs:LL:COL + _4 = &_3; + StorageLive(_6); + _5 = discriminant((*_4)); + _6 = Eq(_5, const 1_isize); + _7 = Not(move _6); + StorageDead(_6); + StorageDead(_3); + StorageDead(_4); + switchInt(move _7) -> [0: bb3, otherwise: bb2]; } bb2: { - assert(!const true, "attempt to compute `{} + {}`, which would overflow", const _, const 1_u32) -> bb3; // scope 1 at $SRC_DIR/core/src/iter/range.rs:LL:COL + assert(!const true, "attempt to compute `{} + {}`, which would overflow", const _, const 1_u32) -> bb3; } bb3: { - StorageDead(_7); // scope 1 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageLive(_8); // scope 1 at $SRC_DIR/core/src/iter/range.rs:LL:COL - _8 = _2 as u32 (IntToInt); // scope 1 at $SRC_DIR/core/src/iter/range.rs:LL:COL - _0 = Add(_1, _8); // scope 5 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL - StorageDead(_8); // scope 1 at $SRC_DIR/core/src/iter/range.rs:LL:COL - return; // scope 0 at $DIR/checked_ops.rs:+2:2: +2:2 + StorageDead(_7); + StorageLive(_8); + _8 = _2 as u32 (IntToInt); + _0 = Add(_1, _8); + StorageDead(_8); + return; } } diff --git a/tests/mir-opt/pre-codegen/duplicate_switch_targets.ub_if_b.PreCodegen.after.mir b/tests/mir-opt/pre-codegen/duplicate_switch_targets.ub_if_b.PreCodegen.after.mir index 6b805166ba29c..65d71199aaeb0 100644 --- a/tests/mir-opt/pre-codegen/duplicate_switch_targets.ub_if_b.PreCodegen.after.mir +++ b/tests/mir-opt/pre-codegen/duplicate_switch_targets.ub_if_b.PreCodegen.after.mir @@ -1,27 +1,27 @@ // MIR for `ub_if_b` after PreCodegen fn ub_if_b(_1: Thing) -> Thing { - debug t => _1; // in scope 0 at $DIR/duplicate_switch_targets.rs:+0:23: +0:24 - let mut _0: Thing; // return place in scope 0 at $DIR/duplicate_switch_targets.rs:+0:36: +0:41 - let mut _2: isize; // in scope 0 at $DIR/duplicate_switch_targets.rs:+2:9: +2:17 - scope 1 (inlined unreachable_unchecked) { // at $DIR/duplicate_switch_targets.rs:15:21: 15:55 + debug t => _1; + let mut _0: Thing; + let mut _2: isize; + scope 1 (inlined unreachable_unchecked) { scope 2 { - scope 3 (inlined unreachable_unchecked::runtime) { // at $SRC_DIR/core/src/intrinsics.rs:LL:COL + scope 3 (inlined unreachable_unchecked::runtime) { } } } bb0: { - _2 = discriminant(_1); // scope 0 at $DIR/duplicate_switch_targets.rs:+1:11: +1:12 - switchInt(move _2) -> [0: bb1, otherwise: bb2]; // scope 0 at $DIR/duplicate_switch_targets.rs:+1:5: +1:12 + _2 = discriminant(_1); + switchInt(move _2) -> [0: bb1, otherwise: bb2]; } bb1: { - _0 = move _1; // scope 0 at $DIR/duplicate_switch_targets.rs:+2:21: +2:22 - return; // scope 0 at $DIR/duplicate_switch_targets.rs:+5:2: +5:2 + _0 = move _1; + return; } bb2: { - unreachable; // scope 2 at $SRC_DIR/core/src/intrinsics.rs:LL:COL + unreachable; } } diff --git a/tests/mir-opt/pre-codegen/intrinsics.f_u64.PreCodegen.after.mir b/tests/mir-opt/pre-codegen/intrinsics.f_u64.PreCodegen.after.mir index 76e1fea2f9528..66acbbbb21e57 100644 --- a/tests/mir-opt/pre-codegen/intrinsics.f_u64.PreCodegen.after.mir +++ b/tests/mir-opt/pre-codegen/intrinsics.f_u64.PreCodegen.after.mir @@ -1,26 +1,23 @@ // MIR for `f_u64` after PreCodegen fn f_u64() -> () { - let mut _0: (); // return place in scope 0 at $DIR/intrinsics.rs:+0:16: +0:16 - let mut _1: u64; // in scope 0 at $DIR/intrinsics.rs:+1:5: +1:21 - scope 1 (inlined f_dispatch::) { // at $DIR/intrinsics.rs:19:5: 19:21 - debug t => const 0_u64; // in scope 1 at $DIR/intrinsics.rs:23:22: 23:23 - let _2: (); // in scope 1 at $DIR/intrinsics.rs:27:9: 27:21 - scope 2 (inlined std::mem::size_of::) { // at $DIR/intrinsics.rs:24:8: 24:32 + let mut _0: (); + let mut _1: u64; + scope 1 (inlined f_dispatch::) { + debug t => const 0_u64; + let _2: (); + scope 2 (inlined std::mem::size_of::) { } } bb0: { - StorageLive(_1); // scope 0 at $DIR/intrinsics.rs:+1:5: +1:21 - _1 = const 0_u64; // scope 0 at $DIR/intrinsics.rs:+1:5: +1:21 - _2 = f_non_zst::(move _1) -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/intrinsics.rs:27:9: 27:21 - // mir::Constant - // + span: $DIR/intrinsics.rs:27:9: 27:18 - // + literal: Const { ty: fn(u64) {f_non_zst::}, val: Value() } + StorageLive(_1); + _1 = const 0_u64; + _2 = f_non_zst::(move _1) -> [return: bb1, unwind unreachable]; } bb1: { - StorageDead(_1); // scope 0 at $DIR/intrinsics.rs:+1:5: +1:21 - return; // scope 0 at $DIR/intrinsics.rs:+2:2: +2:2 + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/pre-codegen/intrinsics.f_unit.PreCodegen.after.mir b/tests/mir-opt/pre-codegen/intrinsics.f_unit.PreCodegen.after.mir index 3d416de34df8b..578cb2d706985 100644 --- a/tests/mir-opt/pre-codegen/intrinsics.f_unit.PreCodegen.after.mir +++ b/tests/mir-opt/pre-codegen/intrinsics.f_unit.PreCodegen.after.mir @@ -1,22 +1,19 @@ // MIR for `f_unit` after PreCodegen fn f_unit() -> () { - let mut _0: (); // return place in scope 0 at $DIR/intrinsics.rs:+0:17: +0:17 - scope 1 (inlined f_dispatch::<()>) { // at $DIR/intrinsics.rs:13:5: 13:19 - debug t => const (); // in scope 1 at $DIR/intrinsics.rs:23:22: 23:23 - let _1: (); // in scope 1 at $DIR/intrinsics.rs:25:9: 25:17 - scope 2 (inlined std::mem::size_of::<()>) { // at $DIR/intrinsics.rs:24:8: 24:32 + let mut _0: (); + scope 1 (inlined f_dispatch::<()>) { + debug t => const (); + let _1: (); + scope 2 (inlined std::mem::size_of::<()>) { } } bb0: { - _1 = f_zst::<()>(const ()) -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/intrinsics.rs:25:9: 25:17 - // mir::Constant - // + span: $DIR/intrinsics.rs:25:9: 25:14 - // + literal: Const { ty: fn(()) {f_zst::<()>}, val: Value() } + _1 = f_zst::<()>(const ()) -> [return: bb1, unwind unreachable]; } bb1: { - return; // scope 0 at $DIR/intrinsics.rs:+2:2: +2:2 + return; } } diff --git a/tests/mir-opt/pre-codegen/loops.filter_mapped.PreCodegen.after.mir b/tests/mir-opt/pre-codegen/loops.filter_mapped.PreCodegen.after.mir index dce9feddfc570..b8b2d91adb691 100644 --- a/tests/mir-opt/pre-codegen/loops.filter_mapped.PreCodegen.after.mir +++ b/tests/mir-opt/pre-codegen/loops.filter_mapped.PreCodegen.after.mir @@ -1,102 +1,93 @@ // MIR for `filter_mapped` after PreCodegen fn filter_mapped(_1: impl Iterator, _2: impl Fn(T) -> Option) -> () { - debug iter => _1; // in scope 0 at $DIR/loops.rs:+0:28: +0:32 - debug f => _2; // in scope 0 at $DIR/loops.rs:+0:59: +0:60 - let mut _0: (); // return place in scope 0 at $DIR/loops.rs:+0:87: +0:87 - let mut _3: std::iter::FilterMap, impl Fn(T) -> Option>; // in scope 0 at $DIR/loops.rs:+1:14: +1:32 - let mut _4: std::iter::FilterMap, impl Fn(T) -> Option>; // in scope 0 at $DIR/loops.rs:+1:14: +1:32 - let mut _5: std::iter::FilterMap, impl Fn(T) -> Option>; // in scope 0 at $DIR/loops.rs:+1:14: +1:32 - let mut _6: &mut std::iter::FilterMap, impl Fn(T) -> Option>; // in scope 0 at $DIR/loops.rs:+1:14: +1:32 - let mut _9: std::option::Option; // in scope 0 at $DIR/loops.rs:+1:14: +1:32 - let mut _10: isize; // in scope 0 at $DIR/loops.rs:+1:5: +3:6 - let _12: (); // in scope 0 at $DIR/loops.rs:+1:14: +1:32 + debug iter => _1; + debug f => _2; + let mut _0: (); + let mut _3: std::iter::FilterMap, impl Fn(T) -> Option>; + let mut _4: std::iter::FilterMap, impl Fn(T) -> Option>; + let mut _5: std::iter::FilterMap, impl Fn(T) -> Option>; + let mut _6: &mut std::iter::FilterMap, impl Fn(T) -> Option>; + let mut _9: std::option::Option; + let mut _10: isize; + let _12: (); scope 1 { - debug iter => _5; // in scope 1 at $DIR/loops.rs:+1:14: +1:32 - let _11: U; // in scope 1 at $DIR/loops.rs:+1:9: +1:10 + debug iter => _5; + let _11: U; scope 2 { - debug x => _11; // in scope 2 at $DIR/loops.rs:+1:9: +1:10 + debug x => _11; } - scope 4 (inlined , impl Fn(T) -> Option> as Iterator>::next) { // at $DIR/loops.rs:20:14: 20:32 - debug self => _6; // in scope 4 at $SRC_DIR/core/src/iter/adapters/filter_map.rs:LL:COL - let mut _7: &mut impl Iterator; // in scope 4 at $SRC_DIR/core/src/iter/adapters/filter_map.rs:LL:COL - let mut _8: &mut impl Fn(T) -> Option; // in scope 4 at $SRC_DIR/core/src/iter/adapters/filter_map.rs:LL:COL + scope 4 (inlined , impl Fn(T) -> Option> as Iterator>::next) { + debug self => _6; + let mut _7: &mut impl Iterator; + let mut _8: &mut impl Fn(T) -> Option; } } - scope 3 (inlined , impl Fn(T) -> Option> as IntoIterator>::into_iter) { // at $DIR/loops.rs:20:14: 20:32 - debug self => _3; // in scope 3 at $SRC_DIR/core/src/iter/traits/collect.rs:LL:COL + scope 3 (inlined , impl Fn(T) -> Option> as IntoIterator>::into_iter) { + debug self => _3; } bb0: { - StorageLive(_4); // scope 0 at $DIR/loops.rs:+1:14: +1:32 - StorageLive(_3); // scope 0 at $DIR/loops.rs:+1:14: +1:32 - _3 = as Iterator>::filter_map:: Option>(move _1, move _2) -> bb1; // scope 0 at $DIR/loops.rs:+1:14: +1:32 - // mir::Constant - // + span: $DIR/loops.rs:20:19: 20:29 - // + literal: Const { ty: fn(impl Iterator, impl Fn(T) -> Option) -> FilterMap, impl Fn(T) -> Option> { as Iterator>::filter_map:: Option>}, val: Value() } + StorageLive(_4); + StorageLive(_3); + _3 = as Iterator>::filter_map:: Option>(move _1, move _2) -> bb1; } bb1: { - _4 = move _3; // scope 3 at $SRC_DIR/core/src/iter/traits/collect.rs:LL:COL - StorageDead(_3); // scope 0 at $DIR/loops.rs:+1:31: +1:32 - StorageLive(_5); // scope 0 at $DIR/loops.rs:+1:14: +1:32 - _5 = move _4; // scope 0 at $DIR/loops.rs:+1:14: +1:32 - goto -> bb2; // scope 1 at $DIR/loops.rs:+1:5: +3:6 + _4 = move _3; + StorageDead(_3); + StorageLive(_5); + _5 = move _4; + goto -> bb2; } bb2: { - StorageLive(_9); // scope 1 at $DIR/loops.rs:+1:14: +1:32 - _6 = &mut _5; // scope 1 at $DIR/loops.rs:+1:14: +1:32 - StorageLive(_7); // scope 4 at $SRC_DIR/core/src/iter/adapters/filter_map.rs:LL:COL - _7 = &mut ((*_6).0: impl Iterator); // scope 4 at $SRC_DIR/core/src/iter/adapters/filter_map.rs:LL:COL - StorageLive(_8); // scope 4 at $SRC_DIR/core/src/iter/adapters/filter_map.rs:LL:COL - _8 = &mut ((*_6).1: impl Fn(T) -> Option); // scope 4 at $SRC_DIR/core/src/iter/adapters/filter_map.rs:LL:COL - _9 = as Iterator>::find_map:: Option>(move _7, move _8) -> [return: bb3, unwind: bb9]; // scope 4 at $SRC_DIR/core/src/iter/adapters/filter_map.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/core/src/iter/adapters/filter_map.rs:LL:COL - // + literal: Const { ty: for<'a> fn(&'a mut impl Iterator, &mut impl Fn(T) -> Option) -> Option { as Iterator>::find_map:: Option>}, val: Value() } + StorageLive(_9); + _6 = &mut _5; + StorageLive(_7); + _7 = &mut ((*_6).0: impl Iterator); + StorageLive(_8); + _8 = &mut ((*_6).1: impl Fn(T) -> Option); + _9 = as Iterator>::find_map:: Option>(move _7, move _8) -> [return: bb3, unwind: bb9]; } bb3: { - StorageDead(_8); // scope 4 at $SRC_DIR/core/src/iter/adapters/filter_map.rs:LL:COL - StorageDead(_7); // scope 4 at $SRC_DIR/core/src/iter/adapters/filter_map.rs:LL:COL - _10 = discriminant(_9); // scope 1 at $DIR/loops.rs:+1:14: +1:32 - switchInt(move _10) -> [0: bb4, 1: bb6, otherwise: bb8]; // scope 1 at $DIR/loops.rs:+1:14: +1:32 + StorageDead(_8); + StorageDead(_7); + _10 = discriminant(_9); + switchInt(move _10) -> [0: bb4, 1: bb6, otherwise: bb8]; } bb4: { - StorageDead(_9); // scope 1 at $DIR/loops.rs:+3:5: +3:6 - drop(_5) -> bb5; // scope 0 at $DIR/loops.rs:+3:5: +3:6 + StorageDead(_9); + drop(_5) -> bb5; } bb5: { - StorageDead(_5); // scope 0 at $DIR/loops.rs:+3:5: +3:6 - StorageDead(_4); // scope 0 at $DIR/loops.rs:+3:5: +3:6 - return; // scope 0 at $DIR/loops.rs:+4:2: +4:2 + StorageDead(_5); + StorageDead(_4); + return; } bb6: { - _11 = move ((_9 as Some).0: U); // scope 1 at $DIR/loops.rs:+1:9: +1:10 - _12 = opaque::(move _11) -> [return: bb7, unwind: bb9]; // scope 2 at $DIR/loops.rs:+2:9: +2:18 - // mir::Constant - // + span: $DIR/loops.rs:21:9: 21:15 - // + literal: Const { ty: fn(U) {opaque::}, val: Value() } + _11 = move ((_9 as Some).0: U); + _12 = opaque::(move _11) -> [return: bb7, unwind: bb9]; } bb7: { - StorageDead(_9); // scope 1 at $DIR/loops.rs:+3:5: +3:6 - goto -> bb2; // scope 1 at $DIR/loops.rs:+1:5: +3:6 + StorageDead(_9); + goto -> bb2; } bb8: { - unreachable; // scope 1 at $DIR/loops.rs:+1:14: +1:32 + unreachable; } bb9 (cleanup): { - drop(_5) -> [return: bb10, unwind terminate]; // scope 0 at $DIR/loops.rs:+3:5: +3:6 + drop(_5) -> [return: bb10, unwind terminate]; } bb10 (cleanup): { - resume; // scope 0 at $DIR/loops.rs:+0:1: +4:2 + resume; } } diff --git a/tests/mir-opt/pre-codegen/loops.int_range.PreCodegen.after.mir b/tests/mir-opt/pre-codegen/loops.int_range.PreCodegen.after.mir index 86e0a62b6f968..609555c8c43ee 100644 --- a/tests/mir-opt/pre-codegen/loops.int_range.PreCodegen.after.mir +++ b/tests/mir-opt/pre-codegen/loops.int_range.PreCodegen.after.mir @@ -1,124 +1,118 @@ // MIR for `int_range` after PreCodegen fn int_range(_1: usize, _2: usize) -> () { - debug start => _1; // in scope 0 at $DIR/loops.rs:+0:18: +0:23 - debug end => _2; // in scope 0 at $DIR/loops.rs:+0:32: +0:35 - let mut _0: (); // return place in scope 0 at $DIR/loops.rs:+0:44: +0:44 - let mut _3: std::ops::Range; // in scope 0 at $DIR/loops.rs:+1:14: +1:24 - let mut _4: std::ops::Range; // in scope 0 at $DIR/loops.rs:+1:14: +1:24 - let mut _5: &mut std::ops::Range; // in scope 0 at $DIR/loops.rs:+1:14: +1:24 - let mut _11: std::option::Option; // in scope 0 at $DIR/loops.rs:+1:14: +1:24 - let mut _14: isize; // in scope 0 at $DIR/loops.rs:+1:5: +3:6 - let _16: (); // in scope 0 at $DIR/loops.rs:+1:14: +1:24 + debug start => _1; + debug end => _2; + let mut _0: (); + let mut _3: std::ops::Range; + let mut _4: std::ops::Range; + let mut _5: &mut std::ops::Range; + let mut _11: std::option::Option; + let mut _14: isize; + let _16: (); scope 1 { - debug iter => _4; // in scope 1 at $DIR/loops.rs:+1:14: +1:24 - let _15: usize; // in scope 1 at $DIR/loops.rs:+1:9: +1:10 + debug iter => _4; + let _15: usize; scope 2 { - debug i => _15; // in scope 2 at $DIR/loops.rs:+1:9: +1:10 + debug i => _15; } - scope 4 (inlined iter::range::>::next) { // at $DIR/loops.rs:8:14: 8:24 - debug self => _5; // in scope 4 at $SRC_DIR/core/src/iter/range.rs:LL:COL - scope 5 (inlined as iter::range::RangeIteratorImpl>::spec_next) { // at $SRC_DIR/core/src/iter/range.rs:LL:COL - debug self => _5; // in scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - let mut _6: &usize; // in scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - let mut _7: &usize; // in scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - let mut _10: bool; // in scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - let _12: usize; // in scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - let mut _13: usize; // in scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL + scope 4 (inlined iter::range::>::next) { + debug self => _5; + scope 5 (inlined as iter::range::RangeIteratorImpl>::spec_next) { + debug self => _5; + let mut _6: &usize; + let mut _7: &usize; + let mut _10: bool; + let _12: usize; + let mut _13: usize; scope 6 { - debug old => _12; // in scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL + debug old => _12; scope 7 { } } - scope 8 (inlined cmp::impls::::lt) { // at $SRC_DIR/core/src/iter/range.rs:LL:COL - debug self => _6; // in scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL - debug other => _7; // in scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL - let mut _8: usize; // in scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL - let mut _9: usize; // in scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL + scope 8 (inlined cmp::impls::::lt) { + debug self => _6; + debug other => _7; + let mut _8: usize; + let mut _9: usize; } } } } - scope 3 (inlined as IntoIterator>::into_iter) { // at $DIR/loops.rs:8:14: 8:24 - debug self => _3; // in scope 3 at $SRC_DIR/core/src/iter/traits/collect.rs:LL:COL + scope 3 (inlined as IntoIterator>::into_iter) { + debug self => _3; } bb0: { - _3 = std::ops::Range:: { start: _1, end: _2 }; // scope 0 at $DIR/loops.rs:+1:14: +1:24 - StorageLive(_4); // scope 0 at $DIR/loops.rs:+1:14: +1:24 - _4 = move _3; // scope 0 at $DIR/loops.rs:+1:14: +1:24 - goto -> bb1; // scope 1 at $DIR/loops.rs:+1:5: +3:6 + _3 = std::ops::Range:: { start: _1, end: _2 }; + StorageLive(_4); + _4 = move _3; + goto -> bb1; } bb1: { - StorageLive(_11); // scope 1 at $DIR/loops.rs:+1:14: +1:24 - _5 = &mut _4; // scope 1 at $DIR/loops.rs:+1:14: +1:24 - StorageLive(_12); // scope 4 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageLive(_10); // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageLive(_6); // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - _6 = &((*_5).0: usize); // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageLive(_7); // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - _7 = &((*_5).1: usize); // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageLive(_8); // scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL - _8 = (*_6); // scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageLive(_9); // scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL - _9 = (*_7); // scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL - _10 = Lt(move _8, move _9); // scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageDead(_9); // scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageDead(_8); // scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageDead(_7); // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageDead(_6); // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - switchInt(move _10) -> [0: bb2, otherwise: bb3]; // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL + StorageLive(_11); + _5 = &mut _4; + StorageLive(_12); + StorageLive(_10); + StorageLive(_6); + _6 = &((*_5).0: usize); + StorageLive(_7); + _7 = &((*_5).1: usize); + StorageLive(_8); + _8 = (*_6); + StorageLive(_9); + _9 = (*_7); + _10 = Lt(move _8, move _9); + StorageDead(_9); + StorageDead(_8); + StorageDead(_7); + StorageDead(_6); + switchInt(move _10) -> [0: bb2, otherwise: bb3]; } bb2: { - _11 = Option::::None; // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - goto -> bb5; // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL + _11 = Option::::None; + goto -> bb5; } bb3: { - _12 = ((*_5).0: usize); // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageLive(_13); // scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL - _13 = ::forward_unchecked(_12, const 1_usize) -> bb4; // scope 7 at $SRC_DIR/core/src/iter/range.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/core/src/iter/range.rs:LL:COL - // + literal: Const { ty: unsafe fn(usize, usize) -> usize {::forward_unchecked}, val: Value() } + _12 = ((*_5).0: usize); + StorageLive(_13); + _13 = ::forward_unchecked(_12, const 1_usize) -> bb4; } bb4: { - ((*_5).0: usize) = move _13; // scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageDead(_13); // scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL - _11 = Option::::Some(_12); // scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL - goto -> bb5; // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL + ((*_5).0: usize) = move _13; + StorageDead(_13); + _11 = Option::::Some(_12); + goto -> bb5; } bb5: { - StorageDead(_10); // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageDead(_12); // scope 4 at $SRC_DIR/core/src/iter/range.rs:LL:COL - _14 = discriminant(_11); // scope 1 at $DIR/loops.rs:+1:14: +1:24 - switchInt(move _14) -> [0: bb6, 1: bb7, otherwise: bb9]; // scope 1 at $DIR/loops.rs:+1:14: +1:24 + StorageDead(_10); + StorageDead(_12); + _14 = discriminant(_11); + switchInt(move _14) -> [0: bb6, 1: bb7, otherwise: bb9]; } bb6: { - StorageDead(_11); // scope 1 at $DIR/loops.rs:+3:5: +3:6 - StorageDead(_4); // scope 0 at $DIR/loops.rs:+3:5: +3:6 - return; // scope 0 at $DIR/loops.rs:+4:2: +4:2 + StorageDead(_11); + StorageDead(_4); + return; } bb7: { - _15 = ((_11 as Some).0: usize); // scope 1 at $DIR/loops.rs:+1:9: +1:10 - _16 = opaque::(_15) -> bb8; // scope 2 at $DIR/loops.rs:+2:9: +2:18 - // mir::Constant - // + span: $DIR/loops.rs:9:9: 9:15 - // + literal: Const { ty: fn(usize) {opaque::}, val: Value() } + _15 = ((_11 as Some).0: usize); + _16 = opaque::(_15) -> bb8; } bb8: { - StorageDead(_11); // scope 1 at $DIR/loops.rs:+3:5: +3:6 - goto -> bb1; // scope 1 at $DIR/loops.rs:+1:5: +3:6 + StorageDead(_11); + goto -> bb1; } bb9: { - unreachable; // scope 1 at $DIR/loops.rs:+1:14: +1:24 + unreachable; } } diff --git a/tests/mir-opt/pre-codegen/loops.mapped.PreCodegen.after.mir b/tests/mir-opt/pre-codegen/loops.mapped.PreCodegen.after.mir index bf1380b30ff2a..f756f34b7d662 100644 --- a/tests/mir-opt/pre-codegen/loops.mapped.PreCodegen.after.mir +++ b/tests/mir-opt/pre-codegen/loops.mapped.PreCodegen.after.mir @@ -1,91 +1,82 @@ // MIR for `mapped` after PreCodegen fn mapped(_1: impl Iterator, _2: impl Fn(T) -> U) -> () { - debug iter => _1; // in scope 0 at $DIR/loops.rs:+0:21: +0:25 - debug f => _2; // in scope 0 at $DIR/loops.rs:+0:52: +0:53 - let mut _0: (); // return place in scope 0 at $DIR/loops.rs:+0:72: +0:72 - let mut _3: std::iter::Map, impl Fn(T) -> U>; // in scope 0 at $DIR/loops.rs:+1:14: +1:25 - let mut _4: std::iter::Map, impl Fn(T) -> U>; // in scope 0 at $DIR/loops.rs:+1:14: +1:25 - let mut _5: std::iter::Map, impl Fn(T) -> U>; // in scope 0 at $DIR/loops.rs:+1:14: +1:25 - let mut _6: &mut std::iter::Map, impl Fn(T) -> U>; // in scope 0 at $DIR/loops.rs:+1:14: +1:25 - let mut _7: std::option::Option; // in scope 0 at $DIR/loops.rs:+1:14: +1:25 - let mut _8: isize; // in scope 0 at $DIR/loops.rs:+1:5: +3:6 - let _10: (); // in scope 0 at $DIR/loops.rs:+1:14: +1:25 + debug iter => _1; + debug f => _2; + let mut _0: (); + let mut _3: std::iter::Map, impl Fn(T) -> U>; + let mut _4: std::iter::Map, impl Fn(T) -> U>; + let mut _5: std::iter::Map, impl Fn(T) -> U>; + let mut _6: &mut std::iter::Map, impl Fn(T) -> U>; + let mut _7: std::option::Option; + let mut _8: isize; + let _10: (); scope 1 { - debug iter => _5; // in scope 1 at $DIR/loops.rs:+1:14: +1:25 - let _9: U; // in scope 1 at $DIR/loops.rs:+1:9: +1:10 + debug iter => _5; + let _9: U; scope 2 { - debug x => _9; // in scope 2 at $DIR/loops.rs:+1:9: +1:10 + debug x => _9; } } - scope 3 (inlined , impl Fn(T) -> U> as IntoIterator>::into_iter) { // at $DIR/loops.rs:14:14: 14:25 - debug self => _3; // in scope 3 at $SRC_DIR/core/src/iter/traits/collect.rs:LL:COL + scope 3 (inlined , impl Fn(T) -> U> as IntoIterator>::into_iter) { + debug self => _3; } bb0: { - StorageLive(_4); // scope 0 at $DIR/loops.rs:+1:14: +1:25 - StorageLive(_3); // scope 0 at $DIR/loops.rs:+1:14: +1:25 - _3 = as Iterator>::map:: U>(move _1, move _2) -> bb1; // scope 0 at $DIR/loops.rs:+1:14: +1:25 - // mir::Constant - // + span: $DIR/loops.rs:14:19: 14:22 - // + literal: Const { ty: fn(impl Iterator, impl Fn(T) -> U) -> Map, impl Fn(T) -> U> { as Iterator>::map:: U>}, val: Value() } + StorageLive(_4); + StorageLive(_3); + _3 = as Iterator>::map:: U>(move _1, move _2) -> bb1; } bb1: { - _4 = move _3; // scope 3 at $SRC_DIR/core/src/iter/traits/collect.rs:LL:COL - StorageDead(_3); // scope 0 at $DIR/loops.rs:+1:24: +1:25 - StorageLive(_5); // scope 0 at $DIR/loops.rs:+1:14: +1:25 - _5 = move _4; // scope 0 at $DIR/loops.rs:+1:14: +1:25 - goto -> bb2; // scope 1 at $DIR/loops.rs:+1:5: +3:6 + _4 = move _3; + StorageDead(_3); + StorageLive(_5); + _5 = move _4; + goto -> bb2; } bb2: { - StorageLive(_7); // scope 1 at $DIR/loops.rs:+1:14: +1:25 - _6 = &mut _5; // scope 1 at $DIR/loops.rs:+1:14: +1:25 - _7 = , impl Fn(T) -> U> as Iterator>::next(_6) -> [return: bb3, unwind: bb9]; // scope 1 at $DIR/loops.rs:+1:14: +1:25 - // mir::Constant - // + span: $DIR/loops.rs:14:14: 14:25 - // + literal: Const { ty: for<'a> fn(&'a mut Map, impl Fn(T) -> U>) -> Option<, impl Fn(T) -> U> as Iterator>::Item> {, impl Fn(T) -> U> as Iterator>::next}, val: Value() } + StorageLive(_7); + _6 = &mut _5; + _7 = , impl Fn(T) -> U> as Iterator>::next(_6) -> [return: bb3, unwind: bb9]; } bb3: { - _8 = discriminant(_7); // scope 1 at $DIR/loops.rs:+1:14: +1:25 - switchInt(move _8) -> [0: bb4, 1: bb6, otherwise: bb8]; // scope 1 at $DIR/loops.rs:+1:14: +1:25 + _8 = discriminant(_7); + switchInt(move _8) -> [0: bb4, 1: bb6, otherwise: bb8]; } bb4: { - StorageDead(_7); // scope 1 at $DIR/loops.rs:+3:5: +3:6 - drop(_5) -> bb5; // scope 0 at $DIR/loops.rs:+3:5: +3:6 + StorageDead(_7); + drop(_5) -> bb5; } bb5: { - StorageDead(_5); // scope 0 at $DIR/loops.rs:+3:5: +3:6 - StorageDead(_4); // scope 0 at $DIR/loops.rs:+3:5: +3:6 - return; // scope 0 at $DIR/loops.rs:+4:2: +4:2 + StorageDead(_5); + StorageDead(_4); + return; } bb6: { - _9 = move ((_7 as Some).0: U); // scope 1 at $DIR/loops.rs:+1:9: +1:10 - _10 = opaque::(move _9) -> [return: bb7, unwind: bb9]; // scope 2 at $DIR/loops.rs:+2:9: +2:18 - // mir::Constant - // + span: $DIR/loops.rs:15:9: 15:15 - // + literal: Const { ty: fn(U) {opaque::}, val: Value() } + _9 = move ((_7 as Some).0: U); + _10 = opaque::(move _9) -> [return: bb7, unwind: bb9]; } bb7: { - StorageDead(_7); // scope 1 at $DIR/loops.rs:+3:5: +3:6 - goto -> bb2; // scope 1 at $DIR/loops.rs:+1:5: +3:6 + StorageDead(_7); + goto -> bb2; } bb8: { - unreachable; // scope 1 at $DIR/loops.rs:+1:14: +1:25 + unreachable; } bb9 (cleanup): { - drop(_5) -> [return: bb10, unwind terminate]; // scope 0 at $DIR/loops.rs:+3:5: +3:6 + drop(_5) -> [return: bb10, unwind terminate]; } bb10 (cleanup): { - resume; // scope 0 at $DIR/loops.rs:+0:1: +4:2 + resume; } } diff --git a/tests/mir-opt/pre-codegen/loops.vec_move.PreCodegen.after.mir b/tests/mir-opt/pre-codegen/loops.vec_move.PreCodegen.after.mir index 6cd5a66de00fc..604cb773da571 100644 --- a/tests/mir-opt/pre-codegen/loops.vec_move.PreCodegen.after.mir +++ b/tests/mir-opt/pre-codegen/loops.vec_move.PreCodegen.after.mir @@ -1,83 +1,74 @@ // MIR for `vec_move` after PreCodegen fn vec_move(_1: Vec) -> () { - debug v => _1; // in scope 0 at $DIR/loops.rs:+0:17: +0:22 - let mut _0: (); // return place in scope 0 at $DIR/loops.rs:+0:41: +0:41 - let mut _2: std::vec::IntoIter; // in scope 0 at $DIR/loops.rs:+1:14: +1:15 - let mut _3: std::vec::IntoIter; // in scope 0 at $DIR/loops.rs:+1:14: +1:15 - let mut _4: &mut std::vec::IntoIter; // in scope 0 at $DIR/loops.rs:+1:14: +1:15 - let mut _5: std::option::Option; // in scope 0 at $DIR/loops.rs:+1:14: +1:15 - let mut _6: isize; // in scope 0 at $DIR/loops.rs:+1:5: +3:6 - let _8: (); // in scope 0 at $DIR/loops.rs:+1:14: +1:15 + debug v => _1; + let mut _0: (); + let mut _2: std::vec::IntoIter; + let mut _3: std::vec::IntoIter; + let mut _4: &mut std::vec::IntoIter; + let mut _5: std::option::Option; + let mut _6: isize; + let _8: (); scope 1 { - debug iter => _3; // in scope 1 at $DIR/loops.rs:+1:14: +1:15 - let _7: impl Sized; // in scope 1 at $DIR/loops.rs:+1:9: +1:10 + debug iter => _3; + let _7: impl Sized; scope 2 { - debug x => _7; // in scope 2 at $DIR/loops.rs:+1:9: +1:10 + debug x => _7; } } bb0: { - StorageLive(_2); // scope 0 at $DIR/loops.rs:+1:14: +1:15 - _2 = as IntoIterator>::into_iter(move _1) -> bb1; // scope 0 at $DIR/loops.rs:+1:14: +1:15 - // mir::Constant - // + span: $DIR/loops.rs:26:14: 26:15 - // + literal: Const { ty: fn(Vec) -> as IntoIterator>::IntoIter { as IntoIterator>::into_iter}, val: Value() } + StorageLive(_2); + _2 = as IntoIterator>::into_iter(move _1) -> bb1; } bb1: { - StorageLive(_3); // scope 0 at $DIR/loops.rs:+1:14: +1:15 - _3 = move _2; // scope 0 at $DIR/loops.rs:+1:14: +1:15 - goto -> bb2; // scope 1 at $DIR/loops.rs:+1:5: +3:6 + StorageLive(_3); + _3 = move _2; + goto -> bb2; } bb2: { - StorageLive(_5); // scope 1 at $DIR/loops.rs:+1:14: +1:15 - _4 = &mut _3; // scope 1 at $DIR/loops.rs:+1:14: +1:15 - _5 = as Iterator>::next(_4) -> [return: bb3, unwind: bb9]; // scope 1 at $DIR/loops.rs:+1:14: +1:15 - // mir::Constant - // + span: $DIR/loops.rs:26:14: 26:15 - // + literal: Const { ty: for<'a> fn(&'a mut std::vec::IntoIter) -> Option< as Iterator>::Item> { as Iterator>::next}, val: Value() } + StorageLive(_5); + _4 = &mut _3; + _5 = as Iterator>::next(_4) -> [return: bb3, unwind: bb9]; } bb3: { - _6 = discriminant(_5); // scope 1 at $DIR/loops.rs:+1:14: +1:15 - switchInt(move _6) -> [0: bb4, 1: bb6, otherwise: bb8]; // scope 1 at $DIR/loops.rs:+1:14: +1:15 + _6 = discriminant(_5); + switchInt(move _6) -> [0: bb4, 1: bb6, otherwise: bb8]; } bb4: { - StorageDead(_5); // scope 1 at $DIR/loops.rs:+3:5: +3:6 - drop(_3) -> bb5; // scope 0 at $DIR/loops.rs:+3:5: +3:6 + StorageDead(_5); + drop(_3) -> bb5; } bb5: { - StorageDead(_3); // scope 0 at $DIR/loops.rs:+3:5: +3:6 - StorageDead(_2); // scope 0 at $DIR/loops.rs:+3:5: +3:6 - return; // scope 0 at $DIR/loops.rs:+4:2: +4:2 + StorageDead(_3); + StorageDead(_2); + return; } bb6: { - _7 = move ((_5 as Some).0: impl Sized); // scope 1 at $DIR/loops.rs:+1:9: +1:10 - _8 = opaque::(move _7) -> [return: bb7, unwind: bb9]; // scope 2 at $DIR/loops.rs:+2:9: +2:18 - // mir::Constant - // + span: $DIR/loops.rs:27:9: 27:15 - // + literal: Const { ty: fn(impl Sized) {opaque::}, val: Value() } + _7 = move ((_5 as Some).0: impl Sized); + _8 = opaque::(move _7) -> [return: bb7, unwind: bb9]; } bb7: { - StorageDead(_5); // scope 1 at $DIR/loops.rs:+3:5: +3:6 - goto -> bb2; // scope 1 at $DIR/loops.rs:+1:5: +3:6 + StorageDead(_5); + goto -> bb2; } bb8: { - unreachable; // scope 1 at $DIR/loops.rs:+1:14: +1:15 + unreachable; } bb9 (cleanup): { - drop(_3) -> [return: bb10, unwind terminate]; // scope 0 at $DIR/loops.rs:+3:5: +3:6 + drop(_3) -> [return: bb10, unwind terminate]; } bb10 (cleanup): { - resume; // scope 0 at $DIR/loops.rs:+0:1: +4:2 + resume; } } diff --git a/tests/mir-opt/pre-codegen/mem_replace.manual_replace.PreCodegen.after.mir b/tests/mir-opt/pre-codegen/mem_replace.manual_replace.PreCodegen.after.mir index 1d23871029d96..3ca24e152a4e0 100644 --- a/tests/mir-opt/pre-codegen/mem_replace.manual_replace.PreCodegen.after.mir +++ b/tests/mir-opt/pre-codegen/mem_replace.manual_replace.PreCodegen.after.mir @@ -1,16 +1,16 @@ // MIR for `manual_replace` after PreCodegen fn manual_replace(_1: &mut u32, _2: u32) -> u32 { - debug r => _1; // in scope 0 at $DIR/mem_replace.rs:+0:23: +0:24 - debug v => _2; // in scope 0 at $DIR/mem_replace.rs:+0:36: +0:37 - let mut _0: u32; // return place in scope 0 at $DIR/mem_replace.rs:+0:47: +0:50 + debug r => _1; + debug v => _2; + let mut _0: u32; scope 1 { - debug temp => _0; // in scope 1 at $DIR/mem_replace.rs:+1:9: +1:13 + debug temp => _0; } bb0: { - _0 = (*_1); // scope 0 at $DIR/mem_replace.rs:+1:16: +1:18 - (*_1) = _2; // scope 1 at $DIR/mem_replace.rs:+2:5: +2:11 - return; // scope 0 at $DIR/mem_replace.rs:+4:2: +4:2 + _0 = (*_1); + (*_1) = _2; + return; } } diff --git a/tests/mir-opt/pre-codegen/mem_replace.mem_replace.PreCodegen.after.mir b/tests/mir-opt/pre-codegen/mem_replace.mem_replace.PreCodegen.after.mir index 0cf9643dfc224..dde7a6188814f 100644 --- a/tests/mir-opt/pre-codegen/mem_replace.mem_replace.PreCodegen.after.mir +++ b/tests/mir-opt/pre-codegen/mem_replace.mem_replace.PreCodegen.after.mir @@ -1,32 +1,32 @@ // MIR for `mem_replace` after PreCodegen fn mem_replace(_1: &mut u32, _2: u32) -> u32 { - debug r => _1; // in scope 0 at $DIR/mem_replace.rs:+0:20: +0:21 - debug v => _2; // in scope 0 at $DIR/mem_replace.rs:+0:33: +0:34 - let mut _0: u32; // return place in scope 0 at $DIR/mem_replace.rs:+0:44: +0:47 - scope 1 (inlined std::mem::replace::) { // at $DIR/mem_replace.rs:16:5: 16:28 - debug dest => _1; // in scope 1 at $SRC_DIR/core/src/mem/mod.rs:LL:COL - debug src => _2; // in scope 1 at $SRC_DIR/core/src/mem/mod.rs:LL:COL - let mut _3: *const u32; // in scope 1 at $SRC_DIR/core/src/mem/mod.rs:LL:COL - let mut _4: *mut u32; // in scope 1 at $SRC_DIR/core/src/mem/mod.rs:LL:COL + debug r => _1; + debug v => _2; + let mut _0: u32; + scope 1 (inlined std::mem::replace::) { + debug dest => _1; + debug src => _2; + let mut _3: *const u32; + let mut _4: *mut u32; scope 2 { scope 3 { - debug result => _0; // in scope 3 at $SRC_DIR/core/src/mem/mod.rs:LL:COL - scope 7 (inlined std::ptr::write::) { // at $SRC_DIR/core/src/mem/mod.rs:LL:COL - debug dst => _4; // in scope 7 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL - debug src => _2; // in scope 7 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL + debug result => _0; + scope 7 (inlined std::ptr::write::) { + debug dst => _4; + debug src => _2; scope 8 { - scope 9 (inlined std::ptr::write::runtime::) { // at $SRC_DIR/core/src/intrinsics.rs:LL:COL - debug dst => _4; // in scope 9 at $SRC_DIR/core/src/intrinsics.rs:LL:COL + scope 9 (inlined std::ptr::write::runtime::) { + debug dst => _4; } } } } - scope 4 (inlined std::ptr::read::) { // at $SRC_DIR/core/src/mem/mod.rs:LL:COL - debug src => _3; // in scope 4 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL + scope 4 (inlined std::ptr::read::) { + debug src => _3; scope 5 { - scope 6 (inlined std::ptr::read::runtime::) { // at $SRC_DIR/core/src/intrinsics.rs:LL:COL - debug src => _3; // in scope 6 at $SRC_DIR/core/src/intrinsics.rs:LL:COL + scope 6 (inlined std::ptr::read::runtime::) { + debug src => _3; } } } @@ -34,14 +34,14 @@ fn mem_replace(_1: &mut u32, _2: u32) -> u32 { } bb0: { - StorageLive(_3); // scope 2 at $SRC_DIR/core/src/mem/mod.rs:LL:COL - _3 = &raw const (*_1); // scope 2 at $SRC_DIR/core/src/mem/mod.rs:LL:COL - _0 = (*_3); // scope 5 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL - StorageDead(_3); // scope 2 at $SRC_DIR/core/src/mem/mod.rs:LL:COL - StorageLive(_4); // scope 3 at $SRC_DIR/core/src/mem/mod.rs:LL:COL - _4 = &raw mut (*_1); // scope 3 at $SRC_DIR/core/src/mem/mod.rs:LL:COL - (*_4) = _2; // scope 8 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL - StorageDead(_4); // scope 3 at $SRC_DIR/core/src/mem/mod.rs:LL:COL - return; // scope 0 at $DIR/mem_replace.rs:+2:2: +2:2 + StorageLive(_3); + _3 = &raw const (*_1); + _0 = (*_3); + StorageDead(_3); + StorageLive(_4); + _4 = &raw mut (*_1); + (*_4) = _2; + StorageDead(_4); + return; } } diff --git a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ConstProp.32bit.panic-abort.diff b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ConstProp.32bit.panic-abort.diff index eeb67c4412673..2c607b4c055fa 100644 --- a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ConstProp.32bit.panic-abort.diff +++ b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ConstProp.32bit.panic-abort.diff @@ -2,58 +2,58 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/optimizes_into_variable.rs:+0:11: +0:11 - let _1: i32; // in scope 0 at $DIR/optimizes_into_variable.rs:+1:9: +1:10 - let mut _2: (i32, bool); // in scope 0 at $DIR/optimizes_into_variable.rs:+1:13: +1:18 - let mut _4: [i32; 6]; // in scope 0 at $DIR/optimizes_into_variable.rs:+2:13: +2:31 - let _5: usize; // in scope 0 at $DIR/optimizes_into_variable.rs:+2:32: +2:33 - let mut _6: usize; // in scope 0 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 - let mut _7: bool; // in scope 0 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 - let mut _9: u32; // in scope 0 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 + let mut _0: (); + let _1: i32; + let mut _2: (i32, bool); + let mut _4: [i32; 6]; + let _5: usize; + let mut _6: usize; + let mut _7: bool; + let mut _9: u32; scope 1 { - debug x => _1; // in scope 1 at $DIR/optimizes_into_variable.rs:+1:9: +1:10 - let _3: i32; // in scope 1 at $DIR/optimizes_into_variable.rs:+2:9: +2:10 + debug x => _1; + let _3: i32; scope 2 { - debug y => _3; // in scope 2 at $DIR/optimizes_into_variable.rs:+2:9: +2:10 - let _8: u32; // in scope 2 at $DIR/optimizes_into_variable.rs:+3:9: +3:10 + debug y => _3; + let _8: u32; scope 3 { - debug z => _9; // in scope 3 at $DIR/optimizes_into_variable.rs:+3:9: +3:10 + debug z => _9; } } } bb0: { - StorageLive(_1); // scope 0 at $DIR/optimizes_into_variable.rs:+1:9: +1:10 -- _2 = CheckedAdd(const 2_i32, const 2_i32); // scope 0 at $DIR/optimizes_into_variable.rs:+1:13: +1:18 -- assert(!move (_2.1: bool), "attempt to compute `{} + {}`, which would overflow", const 2_i32, const 2_i32) -> [success: bb1, unwind unreachable]; // scope 0 at $DIR/optimizes_into_variable.rs:+1:13: +1:18 -+ _2 = const (4_i32, false); // scope 0 at $DIR/optimizes_into_variable.rs:+1:13: +1:18 -+ assert(!const false, "attempt to compute `{} + {}`, which would overflow", const 2_i32, const 2_i32) -> [success: bb1, unwind unreachable]; // scope 0 at $DIR/optimizes_into_variable.rs:+1:13: +1:18 + StorageLive(_1); +- _2 = CheckedAdd(const 2_i32, const 2_i32); +- assert(!move (_2.1: bool), "attempt to compute `{} + {}`, which would overflow", const 2_i32, const 2_i32) -> [success: bb1, unwind unreachable]; ++ _2 = const (4_i32, false); ++ assert(!const false, "attempt to compute `{} + {}`, which would overflow", const 2_i32, const 2_i32) -> [success: bb1, unwind unreachable]; } bb1: { -- _1 = move (_2.0: i32); // scope 0 at $DIR/optimizes_into_variable.rs:+1:13: +1:18 -+ _1 = const 4_i32; // scope 0 at $DIR/optimizes_into_variable.rs:+1:13: +1:18 - StorageLive(_3); // scope 1 at $DIR/optimizes_into_variable.rs:+2:9: +2:10 - StorageLive(_4); // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:31 - _4 = [const 0_i32, const 1_i32, const 2_i32, const 3_i32, const 4_i32, const 5_i32]; // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:31 - StorageLive(_5); // scope 1 at $DIR/optimizes_into_variable.rs:+2:32: +2:33 - _5 = const 3_usize; // scope 1 at $DIR/optimizes_into_variable.rs:+2:32: +2:33 - _6 = const 6_usize; // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 -- _7 = Lt(_5, _6); // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 -- assert(move _7, "index out of bounds: the length is {} but the index is {}", move _6, _5) -> [success: bb2, unwind unreachable]; // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 -+ _7 = const true; // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 -+ assert(const true, "index out of bounds: the length is {} but the index is {}", const 6_usize, const 3_usize) -> [success: bb2, unwind unreachable]; // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 +- _1 = move (_2.0: i32); ++ _1 = const 4_i32; + StorageLive(_3); + StorageLive(_4); + _4 = [const 0_i32, const 1_i32, const 2_i32, const 3_i32, const 4_i32, const 5_i32]; + StorageLive(_5); + _5 = const 3_usize; + _6 = const 6_usize; +- _7 = Lt(_5, _6); +- assert(move _7, "index out of bounds: the length is {} but the index is {}", move _6, _5) -> [success: bb2, unwind unreachable]; ++ _7 = const true; ++ assert(const true, "index out of bounds: the length is {} but the index is {}", const 6_usize, const 3_usize) -> [success: bb2, unwind unreachable]; } bb2: { -- _3 = _4[_5]; // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 -+ _3 = const 3_i32; // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 - StorageDead(_5); // scope 1 at $DIR/optimizes_into_variable.rs:+2:34: +2:35 - StorageDead(_4); // scope 1 at $DIR/optimizes_into_variable.rs:+2:34: +2:35 - _9 = const 42_u32; // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 - StorageDead(_3); // scope 1 at $DIR/optimizes_into_variable.rs:+4:1: +4:2 - StorageDead(_1); // scope 0 at $DIR/optimizes_into_variable.rs:+4:1: +4:2 - return; // scope 0 at $DIR/optimizes_into_variable.rs:+4:2: +4:2 +- _3 = _4[_5]; ++ _3 = const 3_i32; + StorageDead(_5); + StorageDead(_4); + _9 = const 42_u32; + StorageDead(_3); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ConstProp.32bit.panic-unwind.diff b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ConstProp.32bit.panic-unwind.diff index 691aa01a56408..a57ce86bc25a0 100644 --- a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ConstProp.32bit.panic-unwind.diff +++ b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ConstProp.32bit.panic-unwind.diff @@ -2,58 +2,58 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/optimizes_into_variable.rs:+0:11: +0:11 - let _1: i32; // in scope 0 at $DIR/optimizes_into_variable.rs:+1:9: +1:10 - let mut _2: (i32, bool); // in scope 0 at $DIR/optimizes_into_variable.rs:+1:13: +1:18 - let mut _4: [i32; 6]; // in scope 0 at $DIR/optimizes_into_variable.rs:+2:13: +2:31 - let _5: usize; // in scope 0 at $DIR/optimizes_into_variable.rs:+2:32: +2:33 - let mut _6: usize; // in scope 0 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 - let mut _7: bool; // in scope 0 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 - let mut _9: u32; // in scope 0 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 + let mut _0: (); + let _1: i32; + let mut _2: (i32, bool); + let mut _4: [i32; 6]; + let _5: usize; + let mut _6: usize; + let mut _7: bool; + let mut _9: u32; scope 1 { - debug x => _1; // in scope 1 at $DIR/optimizes_into_variable.rs:+1:9: +1:10 - let _3: i32; // in scope 1 at $DIR/optimizes_into_variable.rs:+2:9: +2:10 + debug x => _1; + let _3: i32; scope 2 { - debug y => _3; // in scope 2 at $DIR/optimizes_into_variable.rs:+2:9: +2:10 - let _8: u32; // in scope 2 at $DIR/optimizes_into_variable.rs:+3:9: +3:10 + debug y => _3; + let _8: u32; scope 3 { - debug z => _9; // in scope 3 at $DIR/optimizes_into_variable.rs:+3:9: +3:10 + debug z => _9; } } } bb0: { - StorageLive(_1); // scope 0 at $DIR/optimizes_into_variable.rs:+1:9: +1:10 -- _2 = CheckedAdd(const 2_i32, const 2_i32); // scope 0 at $DIR/optimizes_into_variable.rs:+1:13: +1:18 -- assert(!move (_2.1: bool), "attempt to compute `{} + {}`, which would overflow", const 2_i32, const 2_i32) -> bb1; // scope 0 at $DIR/optimizes_into_variable.rs:+1:13: +1:18 -+ _2 = const (4_i32, false); // scope 0 at $DIR/optimizes_into_variable.rs:+1:13: +1:18 -+ assert(!const false, "attempt to compute `{} + {}`, which would overflow", const 2_i32, const 2_i32) -> bb1; // scope 0 at $DIR/optimizes_into_variable.rs:+1:13: +1:18 + StorageLive(_1); +- _2 = CheckedAdd(const 2_i32, const 2_i32); +- assert(!move (_2.1: bool), "attempt to compute `{} + {}`, which would overflow", const 2_i32, const 2_i32) -> bb1; ++ _2 = const (4_i32, false); ++ assert(!const false, "attempt to compute `{} + {}`, which would overflow", const 2_i32, const 2_i32) -> bb1; } bb1: { -- _1 = move (_2.0: i32); // scope 0 at $DIR/optimizes_into_variable.rs:+1:13: +1:18 -+ _1 = const 4_i32; // scope 0 at $DIR/optimizes_into_variable.rs:+1:13: +1:18 - StorageLive(_3); // scope 1 at $DIR/optimizes_into_variable.rs:+2:9: +2:10 - StorageLive(_4); // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:31 - _4 = [const 0_i32, const 1_i32, const 2_i32, const 3_i32, const 4_i32, const 5_i32]; // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:31 - StorageLive(_5); // scope 1 at $DIR/optimizes_into_variable.rs:+2:32: +2:33 - _5 = const 3_usize; // scope 1 at $DIR/optimizes_into_variable.rs:+2:32: +2:33 - _6 = const 6_usize; // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 -- _7 = Lt(_5, _6); // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 -- assert(move _7, "index out of bounds: the length is {} but the index is {}", move _6, _5) -> bb2; // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 -+ _7 = const true; // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 -+ assert(const true, "index out of bounds: the length is {} but the index is {}", const 6_usize, const 3_usize) -> bb2; // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 +- _1 = move (_2.0: i32); ++ _1 = const 4_i32; + StorageLive(_3); + StorageLive(_4); + _4 = [const 0_i32, const 1_i32, const 2_i32, const 3_i32, const 4_i32, const 5_i32]; + StorageLive(_5); + _5 = const 3_usize; + _6 = const 6_usize; +- _7 = Lt(_5, _6); +- assert(move _7, "index out of bounds: the length is {} but the index is {}", move _6, _5) -> bb2; ++ _7 = const true; ++ assert(const true, "index out of bounds: the length is {} but the index is {}", const 6_usize, const 3_usize) -> bb2; } bb2: { -- _3 = _4[_5]; // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 -+ _3 = const 3_i32; // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 - StorageDead(_5); // scope 1 at $DIR/optimizes_into_variable.rs:+2:34: +2:35 - StorageDead(_4); // scope 1 at $DIR/optimizes_into_variable.rs:+2:34: +2:35 - _9 = const 42_u32; // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 - StorageDead(_3); // scope 1 at $DIR/optimizes_into_variable.rs:+4:1: +4:2 - StorageDead(_1); // scope 0 at $DIR/optimizes_into_variable.rs:+4:1: +4:2 - return; // scope 0 at $DIR/optimizes_into_variable.rs:+4:2: +4:2 +- _3 = _4[_5]; ++ _3 = const 3_i32; + StorageDead(_5); + StorageDead(_4); + _9 = const 42_u32; + StorageDead(_3); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ConstProp.64bit.panic-abort.diff b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ConstProp.64bit.panic-abort.diff index eeb67c4412673..2c607b4c055fa 100644 --- a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ConstProp.64bit.panic-abort.diff +++ b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ConstProp.64bit.panic-abort.diff @@ -2,58 +2,58 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/optimizes_into_variable.rs:+0:11: +0:11 - let _1: i32; // in scope 0 at $DIR/optimizes_into_variable.rs:+1:9: +1:10 - let mut _2: (i32, bool); // in scope 0 at $DIR/optimizes_into_variable.rs:+1:13: +1:18 - let mut _4: [i32; 6]; // in scope 0 at $DIR/optimizes_into_variable.rs:+2:13: +2:31 - let _5: usize; // in scope 0 at $DIR/optimizes_into_variable.rs:+2:32: +2:33 - let mut _6: usize; // in scope 0 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 - let mut _7: bool; // in scope 0 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 - let mut _9: u32; // in scope 0 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 + let mut _0: (); + let _1: i32; + let mut _2: (i32, bool); + let mut _4: [i32; 6]; + let _5: usize; + let mut _6: usize; + let mut _7: bool; + let mut _9: u32; scope 1 { - debug x => _1; // in scope 1 at $DIR/optimizes_into_variable.rs:+1:9: +1:10 - let _3: i32; // in scope 1 at $DIR/optimizes_into_variable.rs:+2:9: +2:10 + debug x => _1; + let _3: i32; scope 2 { - debug y => _3; // in scope 2 at $DIR/optimizes_into_variable.rs:+2:9: +2:10 - let _8: u32; // in scope 2 at $DIR/optimizes_into_variable.rs:+3:9: +3:10 + debug y => _3; + let _8: u32; scope 3 { - debug z => _9; // in scope 3 at $DIR/optimizes_into_variable.rs:+3:9: +3:10 + debug z => _9; } } } bb0: { - StorageLive(_1); // scope 0 at $DIR/optimizes_into_variable.rs:+1:9: +1:10 -- _2 = CheckedAdd(const 2_i32, const 2_i32); // scope 0 at $DIR/optimizes_into_variable.rs:+1:13: +1:18 -- assert(!move (_2.1: bool), "attempt to compute `{} + {}`, which would overflow", const 2_i32, const 2_i32) -> [success: bb1, unwind unreachable]; // scope 0 at $DIR/optimizes_into_variable.rs:+1:13: +1:18 -+ _2 = const (4_i32, false); // scope 0 at $DIR/optimizes_into_variable.rs:+1:13: +1:18 -+ assert(!const false, "attempt to compute `{} + {}`, which would overflow", const 2_i32, const 2_i32) -> [success: bb1, unwind unreachable]; // scope 0 at $DIR/optimizes_into_variable.rs:+1:13: +1:18 + StorageLive(_1); +- _2 = CheckedAdd(const 2_i32, const 2_i32); +- assert(!move (_2.1: bool), "attempt to compute `{} + {}`, which would overflow", const 2_i32, const 2_i32) -> [success: bb1, unwind unreachable]; ++ _2 = const (4_i32, false); ++ assert(!const false, "attempt to compute `{} + {}`, which would overflow", const 2_i32, const 2_i32) -> [success: bb1, unwind unreachable]; } bb1: { -- _1 = move (_2.0: i32); // scope 0 at $DIR/optimizes_into_variable.rs:+1:13: +1:18 -+ _1 = const 4_i32; // scope 0 at $DIR/optimizes_into_variable.rs:+1:13: +1:18 - StorageLive(_3); // scope 1 at $DIR/optimizes_into_variable.rs:+2:9: +2:10 - StorageLive(_4); // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:31 - _4 = [const 0_i32, const 1_i32, const 2_i32, const 3_i32, const 4_i32, const 5_i32]; // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:31 - StorageLive(_5); // scope 1 at $DIR/optimizes_into_variable.rs:+2:32: +2:33 - _5 = const 3_usize; // scope 1 at $DIR/optimizes_into_variable.rs:+2:32: +2:33 - _6 = const 6_usize; // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 -- _7 = Lt(_5, _6); // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 -- assert(move _7, "index out of bounds: the length is {} but the index is {}", move _6, _5) -> [success: bb2, unwind unreachable]; // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 -+ _7 = const true; // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 -+ assert(const true, "index out of bounds: the length is {} but the index is {}", const 6_usize, const 3_usize) -> [success: bb2, unwind unreachable]; // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 +- _1 = move (_2.0: i32); ++ _1 = const 4_i32; + StorageLive(_3); + StorageLive(_4); + _4 = [const 0_i32, const 1_i32, const 2_i32, const 3_i32, const 4_i32, const 5_i32]; + StorageLive(_5); + _5 = const 3_usize; + _6 = const 6_usize; +- _7 = Lt(_5, _6); +- assert(move _7, "index out of bounds: the length is {} but the index is {}", move _6, _5) -> [success: bb2, unwind unreachable]; ++ _7 = const true; ++ assert(const true, "index out of bounds: the length is {} but the index is {}", const 6_usize, const 3_usize) -> [success: bb2, unwind unreachable]; } bb2: { -- _3 = _4[_5]; // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 -+ _3 = const 3_i32; // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 - StorageDead(_5); // scope 1 at $DIR/optimizes_into_variable.rs:+2:34: +2:35 - StorageDead(_4); // scope 1 at $DIR/optimizes_into_variable.rs:+2:34: +2:35 - _9 = const 42_u32; // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 - StorageDead(_3); // scope 1 at $DIR/optimizes_into_variable.rs:+4:1: +4:2 - StorageDead(_1); // scope 0 at $DIR/optimizes_into_variable.rs:+4:1: +4:2 - return; // scope 0 at $DIR/optimizes_into_variable.rs:+4:2: +4:2 +- _3 = _4[_5]; ++ _3 = const 3_i32; + StorageDead(_5); + StorageDead(_4); + _9 = const 42_u32; + StorageDead(_3); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ConstProp.64bit.panic-unwind.diff b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ConstProp.64bit.panic-unwind.diff index 691aa01a56408..a57ce86bc25a0 100644 --- a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ConstProp.64bit.panic-unwind.diff +++ b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ConstProp.64bit.panic-unwind.diff @@ -2,58 +2,58 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/optimizes_into_variable.rs:+0:11: +0:11 - let _1: i32; // in scope 0 at $DIR/optimizes_into_variable.rs:+1:9: +1:10 - let mut _2: (i32, bool); // in scope 0 at $DIR/optimizes_into_variable.rs:+1:13: +1:18 - let mut _4: [i32; 6]; // in scope 0 at $DIR/optimizes_into_variable.rs:+2:13: +2:31 - let _5: usize; // in scope 0 at $DIR/optimizes_into_variable.rs:+2:32: +2:33 - let mut _6: usize; // in scope 0 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 - let mut _7: bool; // in scope 0 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 - let mut _9: u32; // in scope 0 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 + let mut _0: (); + let _1: i32; + let mut _2: (i32, bool); + let mut _4: [i32; 6]; + let _5: usize; + let mut _6: usize; + let mut _7: bool; + let mut _9: u32; scope 1 { - debug x => _1; // in scope 1 at $DIR/optimizes_into_variable.rs:+1:9: +1:10 - let _3: i32; // in scope 1 at $DIR/optimizes_into_variable.rs:+2:9: +2:10 + debug x => _1; + let _3: i32; scope 2 { - debug y => _3; // in scope 2 at $DIR/optimizes_into_variable.rs:+2:9: +2:10 - let _8: u32; // in scope 2 at $DIR/optimizes_into_variable.rs:+3:9: +3:10 + debug y => _3; + let _8: u32; scope 3 { - debug z => _9; // in scope 3 at $DIR/optimizes_into_variable.rs:+3:9: +3:10 + debug z => _9; } } } bb0: { - StorageLive(_1); // scope 0 at $DIR/optimizes_into_variable.rs:+1:9: +1:10 -- _2 = CheckedAdd(const 2_i32, const 2_i32); // scope 0 at $DIR/optimizes_into_variable.rs:+1:13: +1:18 -- assert(!move (_2.1: bool), "attempt to compute `{} + {}`, which would overflow", const 2_i32, const 2_i32) -> bb1; // scope 0 at $DIR/optimizes_into_variable.rs:+1:13: +1:18 -+ _2 = const (4_i32, false); // scope 0 at $DIR/optimizes_into_variable.rs:+1:13: +1:18 -+ assert(!const false, "attempt to compute `{} + {}`, which would overflow", const 2_i32, const 2_i32) -> bb1; // scope 0 at $DIR/optimizes_into_variable.rs:+1:13: +1:18 + StorageLive(_1); +- _2 = CheckedAdd(const 2_i32, const 2_i32); +- assert(!move (_2.1: bool), "attempt to compute `{} + {}`, which would overflow", const 2_i32, const 2_i32) -> bb1; ++ _2 = const (4_i32, false); ++ assert(!const false, "attempt to compute `{} + {}`, which would overflow", const 2_i32, const 2_i32) -> bb1; } bb1: { -- _1 = move (_2.0: i32); // scope 0 at $DIR/optimizes_into_variable.rs:+1:13: +1:18 -+ _1 = const 4_i32; // scope 0 at $DIR/optimizes_into_variable.rs:+1:13: +1:18 - StorageLive(_3); // scope 1 at $DIR/optimizes_into_variable.rs:+2:9: +2:10 - StorageLive(_4); // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:31 - _4 = [const 0_i32, const 1_i32, const 2_i32, const 3_i32, const 4_i32, const 5_i32]; // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:31 - StorageLive(_5); // scope 1 at $DIR/optimizes_into_variable.rs:+2:32: +2:33 - _5 = const 3_usize; // scope 1 at $DIR/optimizes_into_variable.rs:+2:32: +2:33 - _6 = const 6_usize; // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 -- _7 = Lt(_5, _6); // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 -- assert(move _7, "index out of bounds: the length is {} but the index is {}", move _6, _5) -> bb2; // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 -+ _7 = const true; // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 -+ assert(const true, "index out of bounds: the length is {} but the index is {}", const 6_usize, const 3_usize) -> bb2; // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 +- _1 = move (_2.0: i32); ++ _1 = const 4_i32; + StorageLive(_3); + StorageLive(_4); + _4 = [const 0_i32, const 1_i32, const 2_i32, const 3_i32, const 4_i32, const 5_i32]; + StorageLive(_5); + _5 = const 3_usize; + _6 = const 6_usize; +- _7 = Lt(_5, _6); +- assert(move _7, "index out of bounds: the length is {} but the index is {}", move _6, _5) -> bb2; ++ _7 = const true; ++ assert(const true, "index out of bounds: the length is {} but the index is {}", const 6_usize, const 3_usize) -> bb2; } bb2: { -- _3 = _4[_5]; // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 -+ _3 = const 3_i32; // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 - StorageDead(_5); // scope 1 at $DIR/optimizes_into_variable.rs:+2:34: +2:35 - StorageDead(_4); // scope 1 at $DIR/optimizes_into_variable.rs:+2:34: +2:35 - _9 = const 42_u32; // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 - StorageDead(_3); // scope 1 at $DIR/optimizes_into_variable.rs:+4:1: +4:2 - StorageDead(_1); // scope 0 at $DIR/optimizes_into_variable.rs:+4:1: +4:2 - return; // scope 0 at $DIR/optimizes_into_variable.rs:+4:2: +4:2 +- _3 = _4[_5]; ++ _3 = const 3_i32; + StorageDead(_5); + StorageDead(_4); + _9 = const 42_u32; + StorageDead(_3); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.PreCodegen.after.32bit.panic-abort.mir b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.PreCodegen.after.32bit.panic-abort.mir index 7886bf19e0c17..681dadff302b9 100644 --- a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.PreCodegen.after.32bit.panic-abort.mir +++ b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.PreCodegen.after.32bit.panic-abort.mir @@ -1,18 +1,18 @@ // MIR for `main` after PreCodegen fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/optimizes_into_variable.rs:+0:11: +0:11 + let mut _0: (); scope 1 { - debug x => const 4_i32; // in scope 1 at $DIR/optimizes_into_variable.rs:+1:9: +1:10 + debug x => const 4_i32; scope 2 { - debug y => const 3_i32; // in scope 2 at $DIR/optimizes_into_variable.rs:+2:9: +2:10 + debug y => const 3_i32; scope 3 { - debug z => const 42_u32; // in scope 3 at $DIR/optimizes_into_variable.rs:+3:9: +3:10 + debug z => const 42_u32; } } } bb0: { - return; // scope 0 at $DIR/optimizes_into_variable.rs:+4:2: +4:2 + return; } } diff --git a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.PreCodegen.after.32bit.panic-unwind.mir b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.PreCodegen.after.32bit.panic-unwind.mir index 7886bf19e0c17..681dadff302b9 100644 --- a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.PreCodegen.after.32bit.panic-unwind.mir +++ b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.PreCodegen.after.32bit.panic-unwind.mir @@ -1,18 +1,18 @@ // MIR for `main` after PreCodegen fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/optimizes_into_variable.rs:+0:11: +0:11 + let mut _0: (); scope 1 { - debug x => const 4_i32; // in scope 1 at $DIR/optimizes_into_variable.rs:+1:9: +1:10 + debug x => const 4_i32; scope 2 { - debug y => const 3_i32; // in scope 2 at $DIR/optimizes_into_variable.rs:+2:9: +2:10 + debug y => const 3_i32; scope 3 { - debug z => const 42_u32; // in scope 3 at $DIR/optimizes_into_variable.rs:+3:9: +3:10 + debug z => const 42_u32; } } } bb0: { - return; // scope 0 at $DIR/optimizes_into_variable.rs:+4:2: +4:2 + return; } } diff --git a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.PreCodegen.after.64bit.panic-abort.mir b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.PreCodegen.after.64bit.panic-abort.mir index 7886bf19e0c17..681dadff302b9 100644 --- a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.PreCodegen.after.64bit.panic-abort.mir +++ b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.PreCodegen.after.64bit.panic-abort.mir @@ -1,18 +1,18 @@ // MIR for `main` after PreCodegen fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/optimizes_into_variable.rs:+0:11: +0:11 + let mut _0: (); scope 1 { - debug x => const 4_i32; // in scope 1 at $DIR/optimizes_into_variable.rs:+1:9: +1:10 + debug x => const 4_i32; scope 2 { - debug y => const 3_i32; // in scope 2 at $DIR/optimizes_into_variable.rs:+2:9: +2:10 + debug y => const 3_i32; scope 3 { - debug z => const 42_u32; // in scope 3 at $DIR/optimizes_into_variable.rs:+3:9: +3:10 + debug z => const 42_u32; } } } bb0: { - return; // scope 0 at $DIR/optimizes_into_variable.rs:+4:2: +4:2 + return; } } diff --git a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.PreCodegen.after.64bit.panic-unwind.mir b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.PreCodegen.after.64bit.panic-unwind.mir index 7886bf19e0c17..681dadff302b9 100644 --- a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.PreCodegen.after.64bit.panic-unwind.mir +++ b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.PreCodegen.after.64bit.panic-unwind.mir @@ -1,18 +1,18 @@ // MIR for `main` after PreCodegen fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/optimizes_into_variable.rs:+0:11: +0:11 + let mut _0: (); scope 1 { - debug x => const 4_i32; // in scope 1 at $DIR/optimizes_into_variable.rs:+1:9: +1:10 + debug x => const 4_i32; scope 2 { - debug y => const 3_i32; // in scope 2 at $DIR/optimizes_into_variable.rs:+2:9: +2:10 + debug y => const 3_i32; scope 3 { - debug z => const 42_u32; // in scope 3 at $DIR/optimizes_into_variable.rs:+3:9: +3:10 + debug z => const 42_u32; } } } bb0: { - return; // scope 0 at $DIR/optimizes_into_variable.rs:+4:2: +4:2 + return; } } diff --git a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ScalarReplacementOfAggregates.32bit.panic-abort.diff b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ScalarReplacementOfAggregates.32bit.panic-abort.diff index 2c0e15fc74ad5..6e681b4f970bf 100644 --- a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ScalarReplacementOfAggregates.32bit.panic-abort.diff +++ b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ScalarReplacementOfAggregates.32bit.panic-abort.diff @@ -2,70 +2,70 @@ + // MIR for `main` after ScalarReplacementOfAggregates fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/optimizes_into_variable.rs:+0:11: +0:11 - let _1: i32; // in scope 0 at $DIR/optimizes_into_variable.rs:+1:9: +1:10 - let mut _2: (i32, bool); // in scope 0 at $DIR/optimizes_into_variable.rs:+1:13: +1:18 - let mut _4: [i32; 6]; // in scope 0 at $DIR/optimizes_into_variable.rs:+2:13: +2:31 - let _5: usize; // in scope 0 at $DIR/optimizes_into_variable.rs:+2:32: +2:33 - let mut _6: usize; // in scope 0 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 - let mut _7: bool; // in scope 0 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 - let mut _9: Point; // in scope 0 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 -+ let mut _10: u32; // in scope 0 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 -+ let mut _11: u32; // in scope 0 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 + let mut _0: (); + let _1: i32; + let mut _2: (i32, bool); + let mut _4: [i32; 6]; + let _5: usize; + let mut _6: usize; + let mut _7: bool; + let mut _9: Point; ++ let mut _10: u32; ++ let mut _11: u32; scope 1 { - debug x => _1; // in scope 1 at $DIR/optimizes_into_variable.rs:+1:9: +1:10 - let _3: i32; // in scope 1 at $DIR/optimizes_into_variable.rs:+2:9: +2:10 + debug x => _1; + let _3: i32; scope 2 { - debug y => _3; // in scope 2 at $DIR/optimizes_into_variable.rs:+2:9: +2:10 - let _8: u32; // in scope 2 at $DIR/optimizes_into_variable.rs:+3:9: +3:10 + debug y => _3; + let _8: u32; scope 3 { - debug z => _8; // in scope 3 at $DIR/optimizes_into_variable.rs:+3:9: +3:10 + debug z => _8; } } } bb0: { - StorageLive(_1); // scope 0 at $DIR/optimizes_into_variable.rs:+1:9: +1:10 - _2 = CheckedAdd(const 2_i32, const 2_i32); // scope 0 at $DIR/optimizes_into_variable.rs:+1:13: +1:18 - assert(!move (_2.1: bool), "attempt to compute `{} + {}`, which would overflow", const 2_i32, const 2_i32) -> [success: bb1, unwind unreachable]; // scope 0 at $DIR/optimizes_into_variable.rs:+1:13: +1:18 + StorageLive(_1); + _2 = CheckedAdd(const 2_i32, const 2_i32); + assert(!move (_2.1: bool), "attempt to compute `{} + {}`, which would overflow", const 2_i32, const 2_i32) -> [success: bb1, unwind unreachable]; } bb1: { - _1 = move (_2.0: i32); // scope 0 at $DIR/optimizes_into_variable.rs:+1:13: +1:18 - StorageLive(_3); // scope 1 at $DIR/optimizes_into_variable.rs:+2:9: +2:10 - StorageLive(_4); // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:31 - _4 = [const 0_i32, const 1_i32, const 2_i32, const 3_i32, const 4_i32, const 5_i32]; // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:31 - StorageLive(_5); // scope 1 at $DIR/optimizes_into_variable.rs:+2:32: +2:33 - _5 = const 3_usize; // scope 1 at $DIR/optimizes_into_variable.rs:+2:32: +2:33 - _6 = Len(_4); // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 - _7 = Lt(_5, _6); // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 - assert(move _7, "index out of bounds: the length is {} but the index is {}", move _6, _5) -> [success: bb2, unwind unreachable]; // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 + _1 = move (_2.0: i32); + StorageLive(_3); + StorageLive(_4); + _4 = [const 0_i32, const 1_i32, const 2_i32, const 3_i32, const 4_i32, const 5_i32]; + StorageLive(_5); + _5 = const 3_usize; + _6 = Len(_4); + _7 = Lt(_5, _6); + assert(move _7, "index out of bounds: the length is {} but the index is {}", move _6, _5) -> [success: bb2, unwind unreachable]; } bb2: { - _3 = _4[_5]; // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 - StorageDead(_5); // scope 1 at $DIR/optimizes_into_variable.rs:+2:34: +2:35 - StorageDead(_4); // scope 1 at $DIR/optimizes_into_variable.rs:+2:34: +2:35 - StorageLive(_8); // scope 2 at $DIR/optimizes_into_variable.rs:+3:9: +3:10 -- StorageLive(_9); // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 -- _9 = Point { x: const 12_u32, y: const 42_u32 }; // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 -- _8 = (_9.1: u32); // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:38 -- StorageDead(_9); // scope 2 at $DIR/optimizes_into_variable.rs:+3:38: +3:39 -+ StorageLive(_10); // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 -+ StorageLive(_11); // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 -+ nop; // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 -+ _10 = const 12_u32; // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 -+ _11 = const 42_u32; // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 -+ nop; // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 -+ _8 = _11; // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:38 -+ StorageDead(_10); // scope 2 at $DIR/optimizes_into_variable.rs:+3:38: +3:39 -+ StorageDead(_11); // scope 2 at $DIR/optimizes_into_variable.rs:+3:38: +3:39 -+ nop; // scope 2 at $DIR/optimizes_into_variable.rs:+3:38: +3:39 - nop; // scope 0 at $DIR/optimizes_into_variable.rs:+0:11: +4:2 - StorageDead(_8); // scope 2 at $DIR/optimizes_into_variable.rs:+4:1: +4:2 - StorageDead(_3); // scope 1 at $DIR/optimizes_into_variable.rs:+4:1: +4:2 - StorageDead(_1); // scope 0 at $DIR/optimizes_into_variable.rs:+4:1: +4:2 - return; // scope 0 at $DIR/optimizes_into_variable.rs:+4:2: +4:2 + _3 = _4[_5]; + StorageDead(_5); + StorageDead(_4); + StorageLive(_8); +- StorageLive(_9); +- _9 = Point { x: const 12_u32, y: const 42_u32 }; +- _8 = (_9.1: u32); +- StorageDead(_9); ++ StorageLive(_10); ++ StorageLive(_11); ++ nop; ++ _10 = const 12_u32; ++ _11 = const 42_u32; ++ nop; ++ _8 = _11; ++ StorageDead(_10); ++ StorageDead(_11); ++ nop; + nop; + StorageDead(_8); + StorageDead(_3); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ScalarReplacementOfAggregates.32bit.panic-unwind.diff b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ScalarReplacementOfAggregates.32bit.panic-unwind.diff index 98cd020dade4b..1a5617c7639be 100644 --- a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ScalarReplacementOfAggregates.32bit.panic-unwind.diff +++ b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ScalarReplacementOfAggregates.32bit.panic-unwind.diff @@ -2,70 +2,70 @@ + // MIR for `main` after ScalarReplacementOfAggregates fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/optimizes_into_variable.rs:+0:11: +0:11 - let _1: i32; // in scope 0 at $DIR/optimizes_into_variable.rs:+1:9: +1:10 - let mut _2: (i32, bool); // in scope 0 at $DIR/optimizes_into_variable.rs:+1:13: +1:18 - let mut _4: [i32; 6]; // in scope 0 at $DIR/optimizes_into_variable.rs:+2:13: +2:31 - let _5: usize; // in scope 0 at $DIR/optimizes_into_variable.rs:+2:32: +2:33 - let mut _6: usize; // in scope 0 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 - let mut _7: bool; // in scope 0 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 - let mut _9: Point; // in scope 0 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 -+ let mut _10: u32; // in scope 0 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 -+ let mut _11: u32; // in scope 0 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 + let mut _0: (); + let _1: i32; + let mut _2: (i32, bool); + let mut _4: [i32; 6]; + let _5: usize; + let mut _6: usize; + let mut _7: bool; + let mut _9: Point; ++ let mut _10: u32; ++ let mut _11: u32; scope 1 { - debug x => _1; // in scope 1 at $DIR/optimizes_into_variable.rs:+1:9: +1:10 - let _3: i32; // in scope 1 at $DIR/optimizes_into_variable.rs:+2:9: +2:10 + debug x => _1; + let _3: i32; scope 2 { - debug y => _3; // in scope 2 at $DIR/optimizes_into_variable.rs:+2:9: +2:10 - let _8: u32; // in scope 2 at $DIR/optimizes_into_variable.rs:+3:9: +3:10 + debug y => _3; + let _8: u32; scope 3 { - debug z => _8; // in scope 3 at $DIR/optimizes_into_variable.rs:+3:9: +3:10 + debug z => _8; } } } bb0: { - StorageLive(_1); // scope 0 at $DIR/optimizes_into_variable.rs:+1:9: +1:10 - _2 = CheckedAdd(const 2_i32, const 2_i32); // scope 0 at $DIR/optimizes_into_variable.rs:+1:13: +1:18 - assert(!move (_2.1: bool), "attempt to compute `{} + {}`, which would overflow", const 2_i32, const 2_i32) -> bb1; // scope 0 at $DIR/optimizes_into_variable.rs:+1:13: +1:18 + StorageLive(_1); + _2 = CheckedAdd(const 2_i32, const 2_i32); + assert(!move (_2.1: bool), "attempt to compute `{} + {}`, which would overflow", const 2_i32, const 2_i32) -> bb1; } bb1: { - _1 = move (_2.0: i32); // scope 0 at $DIR/optimizes_into_variable.rs:+1:13: +1:18 - StorageLive(_3); // scope 1 at $DIR/optimizes_into_variable.rs:+2:9: +2:10 - StorageLive(_4); // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:31 - _4 = [const 0_i32, const 1_i32, const 2_i32, const 3_i32, const 4_i32, const 5_i32]; // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:31 - StorageLive(_5); // scope 1 at $DIR/optimizes_into_variable.rs:+2:32: +2:33 - _5 = const 3_usize; // scope 1 at $DIR/optimizes_into_variable.rs:+2:32: +2:33 - _6 = Len(_4); // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 - _7 = Lt(_5, _6); // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 - assert(move _7, "index out of bounds: the length is {} but the index is {}", move _6, _5) -> bb2; // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 + _1 = move (_2.0: i32); + StorageLive(_3); + StorageLive(_4); + _4 = [const 0_i32, const 1_i32, const 2_i32, const 3_i32, const 4_i32, const 5_i32]; + StorageLive(_5); + _5 = const 3_usize; + _6 = Len(_4); + _7 = Lt(_5, _6); + assert(move _7, "index out of bounds: the length is {} but the index is {}", move _6, _5) -> bb2; } bb2: { - _3 = _4[_5]; // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 - StorageDead(_5); // scope 1 at $DIR/optimizes_into_variable.rs:+2:34: +2:35 - StorageDead(_4); // scope 1 at $DIR/optimizes_into_variable.rs:+2:34: +2:35 - StorageLive(_8); // scope 2 at $DIR/optimizes_into_variable.rs:+3:9: +3:10 -- StorageLive(_9); // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 -- _9 = Point { x: const 12_u32, y: const 42_u32 }; // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 -- _8 = (_9.1: u32); // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:38 -- StorageDead(_9); // scope 2 at $DIR/optimizes_into_variable.rs:+3:38: +3:39 -+ StorageLive(_10); // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 -+ StorageLive(_11); // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 -+ nop; // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 -+ _10 = const 12_u32; // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 -+ _11 = const 42_u32; // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 -+ nop; // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 -+ _8 = _11; // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:38 -+ StorageDead(_10); // scope 2 at $DIR/optimizes_into_variable.rs:+3:38: +3:39 -+ StorageDead(_11); // scope 2 at $DIR/optimizes_into_variable.rs:+3:38: +3:39 -+ nop; // scope 2 at $DIR/optimizes_into_variable.rs:+3:38: +3:39 - nop; // scope 0 at $DIR/optimizes_into_variable.rs:+0:11: +4:2 - StorageDead(_8); // scope 2 at $DIR/optimizes_into_variable.rs:+4:1: +4:2 - StorageDead(_3); // scope 1 at $DIR/optimizes_into_variable.rs:+4:1: +4:2 - StorageDead(_1); // scope 0 at $DIR/optimizes_into_variable.rs:+4:1: +4:2 - return; // scope 0 at $DIR/optimizes_into_variable.rs:+4:2: +4:2 + _3 = _4[_5]; + StorageDead(_5); + StorageDead(_4); + StorageLive(_8); +- StorageLive(_9); +- _9 = Point { x: const 12_u32, y: const 42_u32 }; +- _8 = (_9.1: u32); +- StorageDead(_9); ++ StorageLive(_10); ++ StorageLive(_11); ++ nop; ++ _10 = const 12_u32; ++ _11 = const 42_u32; ++ nop; ++ _8 = _11; ++ StorageDead(_10); ++ StorageDead(_11); ++ nop; + nop; + StorageDead(_8); + StorageDead(_3); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ScalarReplacementOfAggregates.64bit.panic-abort.diff b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ScalarReplacementOfAggregates.64bit.panic-abort.diff index 2c0e15fc74ad5..6e681b4f970bf 100644 --- a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ScalarReplacementOfAggregates.64bit.panic-abort.diff +++ b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ScalarReplacementOfAggregates.64bit.panic-abort.diff @@ -2,70 +2,70 @@ + // MIR for `main` after ScalarReplacementOfAggregates fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/optimizes_into_variable.rs:+0:11: +0:11 - let _1: i32; // in scope 0 at $DIR/optimizes_into_variable.rs:+1:9: +1:10 - let mut _2: (i32, bool); // in scope 0 at $DIR/optimizes_into_variable.rs:+1:13: +1:18 - let mut _4: [i32; 6]; // in scope 0 at $DIR/optimizes_into_variable.rs:+2:13: +2:31 - let _5: usize; // in scope 0 at $DIR/optimizes_into_variable.rs:+2:32: +2:33 - let mut _6: usize; // in scope 0 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 - let mut _7: bool; // in scope 0 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 - let mut _9: Point; // in scope 0 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 -+ let mut _10: u32; // in scope 0 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 -+ let mut _11: u32; // in scope 0 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 + let mut _0: (); + let _1: i32; + let mut _2: (i32, bool); + let mut _4: [i32; 6]; + let _5: usize; + let mut _6: usize; + let mut _7: bool; + let mut _9: Point; ++ let mut _10: u32; ++ let mut _11: u32; scope 1 { - debug x => _1; // in scope 1 at $DIR/optimizes_into_variable.rs:+1:9: +1:10 - let _3: i32; // in scope 1 at $DIR/optimizes_into_variable.rs:+2:9: +2:10 + debug x => _1; + let _3: i32; scope 2 { - debug y => _3; // in scope 2 at $DIR/optimizes_into_variable.rs:+2:9: +2:10 - let _8: u32; // in scope 2 at $DIR/optimizes_into_variable.rs:+3:9: +3:10 + debug y => _3; + let _8: u32; scope 3 { - debug z => _8; // in scope 3 at $DIR/optimizes_into_variable.rs:+3:9: +3:10 + debug z => _8; } } } bb0: { - StorageLive(_1); // scope 0 at $DIR/optimizes_into_variable.rs:+1:9: +1:10 - _2 = CheckedAdd(const 2_i32, const 2_i32); // scope 0 at $DIR/optimizes_into_variable.rs:+1:13: +1:18 - assert(!move (_2.1: bool), "attempt to compute `{} + {}`, which would overflow", const 2_i32, const 2_i32) -> [success: bb1, unwind unreachable]; // scope 0 at $DIR/optimizes_into_variable.rs:+1:13: +1:18 + StorageLive(_1); + _2 = CheckedAdd(const 2_i32, const 2_i32); + assert(!move (_2.1: bool), "attempt to compute `{} + {}`, which would overflow", const 2_i32, const 2_i32) -> [success: bb1, unwind unreachable]; } bb1: { - _1 = move (_2.0: i32); // scope 0 at $DIR/optimizes_into_variable.rs:+1:13: +1:18 - StorageLive(_3); // scope 1 at $DIR/optimizes_into_variable.rs:+2:9: +2:10 - StorageLive(_4); // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:31 - _4 = [const 0_i32, const 1_i32, const 2_i32, const 3_i32, const 4_i32, const 5_i32]; // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:31 - StorageLive(_5); // scope 1 at $DIR/optimizes_into_variable.rs:+2:32: +2:33 - _5 = const 3_usize; // scope 1 at $DIR/optimizes_into_variable.rs:+2:32: +2:33 - _6 = Len(_4); // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 - _7 = Lt(_5, _6); // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 - assert(move _7, "index out of bounds: the length is {} but the index is {}", move _6, _5) -> [success: bb2, unwind unreachable]; // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 + _1 = move (_2.0: i32); + StorageLive(_3); + StorageLive(_4); + _4 = [const 0_i32, const 1_i32, const 2_i32, const 3_i32, const 4_i32, const 5_i32]; + StorageLive(_5); + _5 = const 3_usize; + _6 = Len(_4); + _7 = Lt(_5, _6); + assert(move _7, "index out of bounds: the length is {} but the index is {}", move _6, _5) -> [success: bb2, unwind unreachable]; } bb2: { - _3 = _4[_5]; // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 - StorageDead(_5); // scope 1 at $DIR/optimizes_into_variable.rs:+2:34: +2:35 - StorageDead(_4); // scope 1 at $DIR/optimizes_into_variable.rs:+2:34: +2:35 - StorageLive(_8); // scope 2 at $DIR/optimizes_into_variable.rs:+3:9: +3:10 -- StorageLive(_9); // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 -- _9 = Point { x: const 12_u32, y: const 42_u32 }; // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 -- _8 = (_9.1: u32); // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:38 -- StorageDead(_9); // scope 2 at $DIR/optimizes_into_variable.rs:+3:38: +3:39 -+ StorageLive(_10); // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 -+ StorageLive(_11); // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 -+ nop; // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 -+ _10 = const 12_u32; // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 -+ _11 = const 42_u32; // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 -+ nop; // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 -+ _8 = _11; // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:38 -+ StorageDead(_10); // scope 2 at $DIR/optimizes_into_variable.rs:+3:38: +3:39 -+ StorageDead(_11); // scope 2 at $DIR/optimizes_into_variable.rs:+3:38: +3:39 -+ nop; // scope 2 at $DIR/optimizes_into_variable.rs:+3:38: +3:39 - nop; // scope 0 at $DIR/optimizes_into_variable.rs:+0:11: +4:2 - StorageDead(_8); // scope 2 at $DIR/optimizes_into_variable.rs:+4:1: +4:2 - StorageDead(_3); // scope 1 at $DIR/optimizes_into_variable.rs:+4:1: +4:2 - StorageDead(_1); // scope 0 at $DIR/optimizes_into_variable.rs:+4:1: +4:2 - return; // scope 0 at $DIR/optimizes_into_variable.rs:+4:2: +4:2 + _3 = _4[_5]; + StorageDead(_5); + StorageDead(_4); + StorageLive(_8); +- StorageLive(_9); +- _9 = Point { x: const 12_u32, y: const 42_u32 }; +- _8 = (_9.1: u32); +- StorageDead(_9); ++ StorageLive(_10); ++ StorageLive(_11); ++ nop; ++ _10 = const 12_u32; ++ _11 = const 42_u32; ++ nop; ++ _8 = _11; ++ StorageDead(_10); ++ StorageDead(_11); ++ nop; + nop; + StorageDead(_8); + StorageDead(_3); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ScalarReplacementOfAggregates.64bit.panic-unwind.diff b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ScalarReplacementOfAggregates.64bit.panic-unwind.diff index 98cd020dade4b..1a5617c7639be 100644 --- a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ScalarReplacementOfAggregates.64bit.panic-unwind.diff +++ b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ScalarReplacementOfAggregates.64bit.panic-unwind.diff @@ -2,70 +2,70 @@ + // MIR for `main` after ScalarReplacementOfAggregates fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/optimizes_into_variable.rs:+0:11: +0:11 - let _1: i32; // in scope 0 at $DIR/optimizes_into_variable.rs:+1:9: +1:10 - let mut _2: (i32, bool); // in scope 0 at $DIR/optimizes_into_variable.rs:+1:13: +1:18 - let mut _4: [i32; 6]; // in scope 0 at $DIR/optimizes_into_variable.rs:+2:13: +2:31 - let _5: usize; // in scope 0 at $DIR/optimizes_into_variable.rs:+2:32: +2:33 - let mut _6: usize; // in scope 0 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 - let mut _7: bool; // in scope 0 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 - let mut _9: Point; // in scope 0 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 -+ let mut _10: u32; // in scope 0 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 -+ let mut _11: u32; // in scope 0 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 + let mut _0: (); + let _1: i32; + let mut _2: (i32, bool); + let mut _4: [i32; 6]; + let _5: usize; + let mut _6: usize; + let mut _7: bool; + let mut _9: Point; ++ let mut _10: u32; ++ let mut _11: u32; scope 1 { - debug x => _1; // in scope 1 at $DIR/optimizes_into_variable.rs:+1:9: +1:10 - let _3: i32; // in scope 1 at $DIR/optimizes_into_variable.rs:+2:9: +2:10 + debug x => _1; + let _3: i32; scope 2 { - debug y => _3; // in scope 2 at $DIR/optimizes_into_variable.rs:+2:9: +2:10 - let _8: u32; // in scope 2 at $DIR/optimizes_into_variable.rs:+3:9: +3:10 + debug y => _3; + let _8: u32; scope 3 { - debug z => _8; // in scope 3 at $DIR/optimizes_into_variable.rs:+3:9: +3:10 + debug z => _8; } } } bb0: { - StorageLive(_1); // scope 0 at $DIR/optimizes_into_variable.rs:+1:9: +1:10 - _2 = CheckedAdd(const 2_i32, const 2_i32); // scope 0 at $DIR/optimizes_into_variable.rs:+1:13: +1:18 - assert(!move (_2.1: bool), "attempt to compute `{} + {}`, which would overflow", const 2_i32, const 2_i32) -> bb1; // scope 0 at $DIR/optimizes_into_variable.rs:+1:13: +1:18 + StorageLive(_1); + _2 = CheckedAdd(const 2_i32, const 2_i32); + assert(!move (_2.1: bool), "attempt to compute `{} + {}`, which would overflow", const 2_i32, const 2_i32) -> bb1; } bb1: { - _1 = move (_2.0: i32); // scope 0 at $DIR/optimizes_into_variable.rs:+1:13: +1:18 - StorageLive(_3); // scope 1 at $DIR/optimizes_into_variable.rs:+2:9: +2:10 - StorageLive(_4); // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:31 - _4 = [const 0_i32, const 1_i32, const 2_i32, const 3_i32, const 4_i32, const 5_i32]; // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:31 - StorageLive(_5); // scope 1 at $DIR/optimizes_into_variable.rs:+2:32: +2:33 - _5 = const 3_usize; // scope 1 at $DIR/optimizes_into_variable.rs:+2:32: +2:33 - _6 = Len(_4); // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 - _7 = Lt(_5, _6); // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 - assert(move _7, "index out of bounds: the length is {} but the index is {}", move _6, _5) -> bb2; // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 + _1 = move (_2.0: i32); + StorageLive(_3); + StorageLive(_4); + _4 = [const 0_i32, const 1_i32, const 2_i32, const 3_i32, const 4_i32, const 5_i32]; + StorageLive(_5); + _5 = const 3_usize; + _6 = Len(_4); + _7 = Lt(_5, _6); + assert(move _7, "index out of bounds: the length is {} but the index is {}", move _6, _5) -> bb2; } bb2: { - _3 = _4[_5]; // scope 1 at $DIR/optimizes_into_variable.rs:+2:13: +2:34 - StorageDead(_5); // scope 1 at $DIR/optimizes_into_variable.rs:+2:34: +2:35 - StorageDead(_4); // scope 1 at $DIR/optimizes_into_variable.rs:+2:34: +2:35 - StorageLive(_8); // scope 2 at $DIR/optimizes_into_variable.rs:+3:9: +3:10 -- StorageLive(_9); // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 -- _9 = Point { x: const 12_u32, y: const 42_u32 }; // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 -- _8 = (_9.1: u32); // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:38 -- StorageDead(_9); // scope 2 at $DIR/optimizes_into_variable.rs:+3:38: +3:39 -+ StorageLive(_10); // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 -+ StorageLive(_11); // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 -+ nop; // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 -+ _10 = const 12_u32; // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 -+ _11 = const 42_u32; // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 -+ nop; // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36 -+ _8 = _11; // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:38 -+ StorageDead(_10); // scope 2 at $DIR/optimizes_into_variable.rs:+3:38: +3:39 -+ StorageDead(_11); // scope 2 at $DIR/optimizes_into_variable.rs:+3:38: +3:39 -+ nop; // scope 2 at $DIR/optimizes_into_variable.rs:+3:38: +3:39 - nop; // scope 0 at $DIR/optimizes_into_variable.rs:+0:11: +4:2 - StorageDead(_8); // scope 2 at $DIR/optimizes_into_variable.rs:+4:1: +4:2 - StorageDead(_3); // scope 1 at $DIR/optimizes_into_variable.rs:+4:1: +4:2 - StorageDead(_1); // scope 0 at $DIR/optimizes_into_variable.rs:+4:1: +4:2 - return; // scope 0 at $DIR/optimizes_into_variable.rs:+4:2: +4:2 + _3 = _4[_5]; + StorageDead(_5); + StorageDead(_4); + StorageLive(_8); +- StorageLive(_9); +- _9 = Point { x: const 12_u32, y: const 42_u32 }; +- _8 = (_9.1: u32); +- StorageDead(_9); ++ StorageLive(_10); ++ StorageLive(_11); ++ nop; ++ _10 = const 12_u32; ++ _11 = const 42_u32; ++ nop; ++ _8 = _11; ++ StorageDead(_10); ++ StorageDead(_11); ++ nop; + nop; + StorageDead(_8); + StorageDead(_3); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.SimplifyLocals-final.after.32bit.panic-abort.mir b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.SimplifyLocals-final.after.32bit.panic-abort.mir index 5bea94c7fe839..425b95db3363a 100644 --- a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.SimplifyLocals-final.after.32bit.panic-abort.mir +++ b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.SimplifyLocals-final.after.32bit.panic-abort.mir @@ -1,18 +1,18 @@ // MIR for `main` after SimplifyLocals-final fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/optimizes_into_variable.rs:+0:11: +0:11 + let mut _0: (); scope 1 { - debug x => const 4_i32; // in scope 1 at $DIR/optimizes_into_variable.rs:+1:9: +1:10 + debug x => const 4_i32; scope 2 { - debug y => const 3_i32; // in scope 2 at $DIR/optimizes_into_variable.rs:+2:9: +2:10 + debug y => const 3_i32; scope 3 { - debug z => const 42_u32; // in scope 3 at $DIR/optimizes_into_variable.rs:+3:9: +3:10 + debug z => const 42_u32; } } } bb0: { - return; // scope 0 at $DIR/optimizes_into_variable.rs:+4:2: +4:2 + return; } } diff --git a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.SimplifyLocals-final.after.32bit.panic-unwind.mir b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.SimplifyLocals-final.after.32bit.panic-unwind.mir index 5bea94c7fe839..425b95db3363a 100644 --- a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.SimplifyLocals-final.after.32bit.panic-unwind.mir +++ b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.SimplifyLocals-final.after.32bit.panic-unwind.mir @@ -1,18 +1,18 @@ // MIR for `main` after SimplifyLocals-final fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/optimizes_into_variable.rs:+0:11: +0:11 + let mut _0: (); scope 1 { - debug x => const 4_i32; // in scope 1 at $DIR/optimizes_into_variable.rs:+1:9: +1:10 + debug x => const 4_i32; scope 2 { - debug y => const 3_i32; // in scope 2 at $DIR/optimizes_into_variable.rs:+2:9: +2:10 + debug y => const 3_i32; scope 3 { - debug z => const 42_u32; // in scope 3 at $DIR/optimizes_into_variable.rs:+3:9: +3:10 + debug z => const 42_u32; } } } bb0: { - return; // scope 0 at $DIR/optimizes_into_variable.rs:+4:2: +4:2 + return; } } diff --git a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.SimplifyLocals-final.after.64bit.panic-abort.mir b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.SimplifyLocals-final.after.64bit.panic-abort.mir index 5bea94c7fe839..425b95db3363a 100644 --- a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.SimplifyLocals-final.after.64bit.panic-abort.mir +++ b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.SimplifyLocals-final.after.64bit.panic-abort.mir @@ -1,18 +1,18 @@ // MIR for `main` after SimplifyLocals-final fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/optimizes_into_variable.rs:+0:11: +0:11 + let mut _0: (); scope 1 { - debug x => const 4_i32; // in scope 1 at $DIR/optimizes_into_variable.rs:+1:9: +1:10 + debug x => const 4_i32; scope 2 { - debug y => const 3_i32; // in scope 2 at $DIR/optimizes_into_variable.rs:+2:9: +2:10 + debug y => const 3_i32; scope 3 { - debug z => const 42_u32; // in scope 3 at $DIR/optimizes_into_variable.rs:+3:9: +3:10 + debug z => const 42_u32; } } } bb0: { - return; // scope 0 at $DIR/optimizes_into_variable.rs:+4:2: +4:2 + return; } } diff --git a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.SimplifyLocals-final.after.64bit.panic-unwind.mir b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.SimplifyLocals-final.after.64bit.panic-unwind.mir index 5bea94c7fe839..425b95db3363a 100644 --- a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.SimplifyLocals-final.after.64bit.panic-unwind.mir +++ b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.SimplifyLocals-final.after.64bit.panic-unwind.mir @@ -1,18 +1,18 @@ // MIR for `main` after SimplifyLocals-final fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/optimizes_into_variable.rs:+0:11: +0:11 + let mut _0: (); scope 1 { - debug x => const 4_i32; // in scope 1 at $DIR/optimizes_into_variable.rs:+1:9: +1:10 + debug x => const 4_i32; scope 2 { - debug y => const 3_i32; // in scope 2 at $DIR/optimizes_into_variable.rs:+2:9: +2:10 + debug y => const 3_i32; scope 3 { - debug z => const 42_u32; // in scope 3 at $DIR/optimizes_into_variable.rs:+3:9: +3:10 + debug z => const 42_u32; } } } bb0: { - return; // scope 0 at $DIR/optimizes_into_variable.rs:+4:2: +4:2 + return; } } diff --git a/tests/mir-opt/pre-codegen/range_iter.forward_loop.PreCodegen.after.panic-abort.mir b/tests/mir-opt/pre-codegen/range_iter.forward_loop.PreCodegen.after.panic-abort.mir index d150a57a898e5..2344a3c0f83a0 100644 --- a/tests/mir-opt/pre-codegen/range_iter.forward_loop.PreCodegen.after.panic-abort.mir +++ b/tests/mir-opt/pre-codegen/range_iter.forward_loop.PreCodegen.after.panic-abort.mir @@ -1,137 +1,131 @@ // MIR for `forward_loop` after PreCodegen fn forward_loop(_1: u32, _2: u32, _3: impl Fn(u32)) -> () { - debug start => _1; // in scope 0 at $DIR/range_iter.rs:+0:21: +0:26 - debug end => _2; // in scope 0 at $DIR/range_iter.rs:+0:33: +0:36 - debug f => _3; // in scope 0 at $DIR/range_iter.rs:+0:43: +0:44 - let mut _0: (); // return place in scope 0 at $DIR/range_iter.rs:+0:60: +0:60 - let mut _4: std::ops::Range; // in scope 0 at $DIR/range_iter.rs:+1:14: +1:24 - let mut _5: std::ops::Range; // in scope 0 at $DIR/range_iter.rs:+1:14: +1:24 - let mut _6: &mut std::ops::Range; // in scope 0 at $DIR/range_iter.rs:+1:14: +1:24 - let mut _12: std::option::Option; // in scope 0 at $DIR/range_iter.rs:+1:14: +1:24 - let mut _15: isize; // in scope 0 at $DIR/range_iter.rs:+1:5: +3:6 - let mut _17: &impl Fn(u32); // in scope 0 at $DIR/range_iter.rs:+2:9: +2:10 - let mut _18: (u32,); // in scope 0 at $DIR/range_iter.rs:+2:9: +2:13 - let _19: (); // in scope 0 at $DIR/range_iter.rs:+1:14: +1:24 + debug start => _1; + debug end => _2; + debug f => _3; + let mut _0: (); + let mut _4: std::ops::Range; + let mut _5: std::ops::Range; + let mut _6: &mut std::ops::Range; + let mut _12: std::option::Option; + let mut _15: isize; + let mut _17: &impl Fn(u32); + let mut _18: (u32,); + let _19: (); scope 1 { - debug iter => _5; // in scope 1 at $DIR/range_iter.rs:+1:14: +1:24 - let _16: u32; // in scope 1 at $DIR/range_iter.rs:+1:9: +1:10 + debug iter => _5; + let _16: u32; scope 2 { - debug x => _16; // in scope 2 at $DIR/range_iter.rs:+1:9: +1:10 + debug x => _16; } - scope 4 (inlined iter::range::>::next) { // at $DIR/range_iter.rs:22:14: 22:24 - debug self => _6; // in scope 4 at $SRC_DIR/core/src/iter/range.rs:LL:COL - scope 5 (inlined as iter::range::RangeIteratorImpl>::spec_next) { // at $SRC_DIR/core/src/iter/range.rs:LL:COL - debug self => _6; // in scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - let mut _7: &u32; // in scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - let mut _8: &u32; // in scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - let mut _11: bool; // in scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - let _13: u32; // in scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - let mut _14: u32; // in scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL + scope 4 (inlined iter::range::>::next) { + debug self => _6; + scope 5 (inlined as iter::range::RangeIteratorImpl>::spec_next) { + debug self => _6; + let mut _7: &u32; + let mut _8: &u32; + let mut _11: bool; + let _13: u32; + let mut _14: u32; scope 6 { - debug old => _13; // in scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL + debug old => _13; scope 7 { } } - scope 8 (inlined cmp::impls::::lt) { // at $SRC_DIR/core/src/iter/range.rs:LL:COL - debug self => _7; // in scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL - debug other => _8; // in scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL - let mut _9: u32; // in scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL - let mut _10: u32; // in scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL + scope 8 (inlined cmp::impls::::lt) { + debug self => _7; + debug other => _8; + let mut _9: u32; + let mut _10: u32; } } } } - scope 3 (inlined as IntoIterator>::into_iter) { // at $DIR/range_iter.rs:22:14: 22:24 - debug self => _4; // in scope 3 at $SRC_DIR/core/src/iter/traits/collect.rs:LL:COL + scope 3 (inlined as IntoIterator>::into_iter) { + debug self => _4; } bb0: { - _4 = std::ops::Range:: { start: _1, end: _2 }; // scope 0 at $DIR/range_iter.rs:+1:14: +1:24 - StorageLive(_5); // scope 0 at $DIR/range_iter.rs:+1:14: +1:24 - _5 = move _4; // scope 0 at $DIR/range_iter.rs:+1:14: +1:24 - goto -> bb1; // scope 1 at $DIR/range_iter.rs:+1:5: +3:6 + _4 = std::ops::Range:: { start: _1, end: _2 }; + StorageLive(_5); + _5 = move _4; + goto -> bb1; } bb1: { - StorageLive(_12); // scope 1 at $DIR/range_iter.rs:+1:14: +1:24 - _6 = &mut _5; // scope 1 at $DIR/range_iter.rs:+1:14: +1:24 - StorageLive(_13); // scope 4 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageLive(_11); // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageLive(_7); // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - _7 = &((*_6).0: u32); // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageLive(_8); // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - _8 = &((*_6).1: u32); // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageLive(_9); // scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL - _9 = (*_7); // scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageLive(_10); // scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL - _10 = (*_8); // scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL - _11 = Lt(move _9, move _10); // scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageDead(_10); // scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageDead(_9); // scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageDead(_8); // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageDead(_7); // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - switchInt(move _11) -> [0: bb2, otherwise: bb3]; // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL + StorageLive(_12); + _6 = &mut _5; + StorageLive(_13); + StorageLive(_11); + StorageLive(_7); + _7 = &((*_6).0: u32); + StorageLive(_8); + _8 = &((*_6).1: u32); + StorageLive(_9); + _9 = (*_7); + StorageLive(_10); + _10 = (*_8); + _11 = Lt(move _9, move _10); + StorageDead(_10); + StorageDead(_9); + StorageDead(_8); + StorageDead(_7); + switchInt(move _11) -> [0: bb2, otherwise: bb3]; } bb2: { - _12 = Option::::None; // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - goto -> bb5; // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL + _12 = Option::::None; + goto -> bb5; } bb3: { - _13 = ((*_6).0: u32); // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageLive(_14); // scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL - _14 = ::forward_unchecked(_13, const 1_usize) -> [return: bb4, unwind unreachable]; // scope 7 at $SRC_DIR/core/src/iter/range.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/core/src/iter/range.rs:LL:COL - // + literal: Const { ty: unsafe fn(u32, usize) -> u32 {::forward_unchecked}, val: Value() } + _13 = ((*_6).0: u32); + StorageLive(_14); + _14 = ::forward_unchecked(_13, const 1_usize) -> [return: bb4, unwind unreachable]; } bb4: { - ((*_6).0: u32) = move _14; // scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageDead(_14); // scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL - _12 = Option::::Some(_13); // scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL - goto -> bb5; // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL + ((*_6).0: u32) = move _14; + StorageDead(_14); + _12 = Option::::Some(_13); + goto -> bb5; } bb5: { - StorageDead(_11); // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageDead(_13); // scope 4 at $SRC_DIR/core/src/iter/range.rs:LL:COL - _15 = discriminant(_12); // scope 1 at $DIR/range_iter.rs:+1:14: +1:24 - switchInt(move _15) -> [0: bb6, 1: bb8, otherwise: bb10]; // scope 1 at $DIR/range_iter.rs:+1:14: +1:24 + StorageDead(_11); + StorageDead(_13); + _15 = discriminant(_12); + switchInt(move _15) -> [0: bb6, 1: bb8, otherwise: bb10]; } bb6: { - StorageDead(_12); // scope 1 at $DIR/range_iter.rs:+3:5: +3:6 - StorageDead(_5); // scope 0 at $DIR/range_iter.rs:+3:5: +3:6 - drop(_3) -> [return: bb7, unwind unreachable]; // scope 0 at $DIR/range_iter.rs:+4:1: +4:2 + StorageDead(_12); + StorageDead(_5); + drop(_3) -> [return: bb7, unwind unreachable]; } bb7: { - return; // scope 0 at $DIR/range_iter.rs:+4:2: +4:2 + return; } bb8: { - _16 = ((_12 as Some).0: u32); // scope 1 at $DIR/range_iter.rs:+1:9: +1:10 - StorageLive(_17); // scope 2 at $DIR/range_iter.rs:+2:9: +2:10 - _17 = &_3; // scope 2 at $DIR/range_iter.rs:+2:9: +2:10 - StorageLive(_18); // scope 2 at $DIR/range_iter.rs:+2:9: +2:13 - _18 = (_16,); // scope 2 at $DIR/range_iter.rs:+2:9: +2:13 - _19 = >::call(move _17, move _18) -> [return: bb9, unwind unreachable]; // scope 2 at $DIR/range_iter.rs:+2:9: +2:13 - // mir::Constant - // + span: $DIR/range_iter.rs:23:9: 23:10 - // + literal: Const { ty: for<'a> extern "rust-call" fn(&'a impl Fn(u32), (u32,)) -> >::Output {>::call}, val: Value() } + _16 = ((_12 as Some).0: u32); + StorageLive(_17); + _17 = &_3; + StorageLive(_18); + _18 = (_16,); + _19 = >::call(move _17, move _18) -> [return: bb9, unwind unreachable]; } bb9: { - StorageDead(_18); // scope 2 at $DIR/range_iter.rs:+2:12: +2:13 - StorageDead(_17); // scope 2 at $DIR/range_iter.rs:+2:12: +2:13 - StorageDead(_12); // scope 1 at $DIR/range_iter.rs:+3:5: +3:6 - goto -> bb1; // scope 1 at $DIR/range_iter.rs:+1:5: +3:6 + StorageDead(_18); + StorageDead(_17); + StorageDead(_12); + goto -> bb1; } bb10: { - unreachable; // scope 1 at $DIR/range_iter.rs:+1:14: +1:24 + unreachable; } } diff --git a/tests/mir-opt/pre-codegen/range_iter.forward_loop.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/pre-codegen/range_iter.forward_loop.PreCodegen.after.panic-unwind.mir index 28ec230619fe9..cf98f2022c5a5 100644 --- a/tests/mir-opt/pre-codegen/range_iter.forward_loop.PreCodegen.after.panic-unwind.mir +++ b/tests/mir-opt/pre-codegen/range_iter.forward_loop.PreCodegen.after.panic-unwind.mir @@ -1,145 +1,139 @@ // MIR for `forward_loop` after PreCodegen fn forward_loop(_1: u32, _2: u32, _3: impl Fn(u32)) -> () { - debug start => _1; // in scope 0 at $DIR/range_iter.rs:+0:21: +0:26 - debug end => _2; // in scope 0 at $DIR/range_iter.rs:+0:33: +0:36 - debug f => _3; // in scope 0 at $DIR/range_iter.rs:+0:43: +0:44 - let mut _0: (); // return place in scope 0 at $DIR/range_iter.rs:+0:60: +0:60 - let mut _4: std::ops::Range; // in scope 0 at $DIR/range_iter.rs:+1:14: +1:24 - let mut _5: std::ops::Range; // in scope 0 at $DIR/range_iter.rs:+1:14: +1:24 - let mut _6: &mut std::ops::Range; // in scope 0 at $DIR/range_iter.rs:+1:14: +1:24 - let mut _12: std::option::Option; // in scope 0 at $DIR/range_iter.rs:+1:14: +1:24 - let mut _15: isize; // in scope 0 at $DIR/range_iter.rs:+1:5: +3:6 - let mut _17: &impl Fn(u32); // in scope 0 at $DIR/range_iter.rs:+2:9: +2:10 - let mut _18: (u32,); // in scope 0 at $DIR/range_iter.rs:+2:9: +2:13 - let _19: (); // in scope 0 at $DIR/range_iter.rs:+1:14: +1:24 + debug start => _1; + debug end => _2; + debug f => _3; + let mut _0: (); + let mut _4: std::ops::Range; + let mut _5: std::ops::Range; + let mut _6: &mut std::ops::Range; + let mut _12: std::option::Option; + let mut _15: isize; + let mut _17: &impl Fn(u32); + let mut _18: (u32,); + let _19: (); scope 1 { - debug iter => _5; // in scope 1 at $DIR/range_iter.rs:+1:14: +1:24 - let _16: u32; // in scope 1 at $DIR/range_iter.rs:+1:9: +1:10 + debug iter => _5; + let _16: u32; scope 2 { - debug x => _16; // in scope 2 at $DIR/range_iter.rs:+1:9: +1:10 + debug x => _16; } - scope 4 (inlined iter::range::>::next) { // at $DIR/range_iter.rs:22:14: 22:24 - debug self => _6; // in scope 4 at $SRC_DIR/core/src/iter/range.rs:LL:COL - scope 5 (inlined as iter::range::RangeIteratorImpl>::spec_next) { // at $SRC_DIR/core/src/iter/range.rs:LL:COL - debug self => _6; // in scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - let mut _7: &u32; // in scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - let mut _8: &u32; // in scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - let mut _11: bool; // in scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - let _13: u32; // in scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - let mut _14: u32; // in scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL + scope 4 (inlined iter::range::>::next) { + debug self => _6; + scope 5 (inlined as iter::range::RangeIteratorImpl>::spec_next) { + debug self => _6; + let mut _7: &u32; + let mut _8: &u32; + let mut _11: bool; + let _13: u32; + let mut _14: u32; scope 6 { - debug old => _13; // in scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL + debug old => _13; scope 7 { } } - scope 8 (inlined cmp::impls::::lt) { // at $SRC_DIR/core/src/iter/range.rs:LL:COL - debug self => _7; // in scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL - debug other => _8; // in scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL - let mut _9: u32; // in scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL - let mut _10: u32; // in scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL + scope 8 (inlined cmp::impls::::lt) { + debug self => _7; + debug other => _8; + let mut _9: u32; + let mut _10: u32; } } } } - scope 3 (inlined as IntoIterator>::into_iter) { // at $DIR/range_iter.rs:22:14: 22:24 - debug self => _4; // in scope 3 at $SRC_DIR/core/src/iter/traits/collect.rs:LL:COL + scope 3 (inlined as IntoIterator>::into_iter) { + debug self => _4; } bb0: { - _4 = std::ops::Range:: { start: _1, end: _2 }; // scope 0 at $DIR/range_iter.rs:+1:14: +1:24 - StorageLive(_5); // scope 0 at $DIR/range_iter.rs:+1:14: +1:24 - _5 = move _4; // scope 0 at $DIR/range_iter.rs:+1:14: +1:24 - goto -> bb1; // scope 1 at $DIR/range_iter.rs:+1:5: +3:6 + _4 = std::ops::Range:: { start: _1, end: _2 }; + StorageLive(_5); + _5 = move _4; + goto -> bb1; } bb1: { - StorageLive(_12); // scope 1 at $DIR/range_iter.rs:+1:14: +1:24 - _6 = &mut _5; // scope 1 at $DIR/range_iter.rs:+1:14: +1:24 - StorageLive(_13); // scope 4 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageLive(_11); // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageLive(_7); // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - _7 = &((*_6).0: u32); // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageLive(_8); // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - _8 = &((*_6).1: u32); // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageLive(_9); // scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL - _9 = (*_7); // scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageLive(_10); // scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL - _10 = (*_8); // scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL - _11 = Lt(move _9, move _10); // scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageDead(_10); // scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageDead(_9); // scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageDead(_8); // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageDead(_7); // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - switchInt(move _11) -> [0: bb2, otherwise: bb3]; // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL + StorageLive(_12); + _6 = &mut _5; + StorageLive(_13); + StorageLive(_11); + StorageLive(_7); + _7 = &((*_6).0: u32); + StorageLive(_8); + _8 = &((*_6).1: u32); + StorageLive(_9); + _9 = (*_7); + StorageLive(_10); + _10 = (*_8); + _11 = Lt(move _9, move _10); + StorageDead(_10); + StorageDead(_9); + StorageDead(_8); + StorageDead(_7); + switchInt(move _11) -> [0: bb2, otherwise: bb3]; } bb2: { - _12 = Option::::None; // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - goto -> bb5; // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL + _12 = Option::::None; + goto -> bb5; } bb3: { - _13 = ((*_6).0: u32); // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageLive(_14); // scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL - _14 = ::forward_unchecked(_13, const 1_usize) -> [return: bb4, unwind: bb11]; // scope 7 at $SRC_DIR/core/src/iter/range.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/core/src/iter/range.rs:LL:COL - // + literal: Const { ty: unsafe fn(u32, usize) -> u32 {::forward_unchecked}, val: Value() } + _13 = ((*_6).0: u32); + StorageLive(_14); + _14 = ::forward_unchecked(_13, const 1_usize) -> [return: bb4, unwind: bb11]; } bb4: { - ((*_6).0: u32) = move _14; // scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageDead(_14); // scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL - _12 = Option::::Some(_13); // scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL - goto -> bb5; // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL + ((*_6).0: u32) = move _14; + StorageDead(_14); + _12 = Option::::Some(_13); + goto -> bb5; } bb5: { - StorageDead(_11); // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageDead(_13); // scope 4 at $SRC_DIR/core/src/iter/range.rs:LL:COL - _15 = discriminant(_12); // scope 1 at $DIR/range_iter.rs:+1:14: +1:24 - switchInt(move _15) -> [0: bb6, 1: bb8, otherwise: bb10]; // scope 1 at $DIR/range_iter.rs:+1:14: +1:24 + StorageDead(_11); + StorageDead(_13); + _15 = discriminant(_12); + switchInt(move _15) -> [0: bb6, 1: bb8, otherwise: bb10]; } bb6: { - StorageDead(_12); // scope 1 at $DIR/range_iter.rs:+3:5: +3:6 - StorageDead(_5); // scope 0 at $DIR/range_iter.rs:+3:5: +3:6 - drop(_3) -> bb7; // scope 0 at $DIR/range_iter.rs:+4:1: +4:2 + StorageDead(_12); + StorageDead(_5); + drop(_3) -> bb7; } bb7: { - return; // scope 0 at $DIR/range_iter.rs:+4:2: +4:2 + return; } bb8: { - _16 = ((_12 as Some).0: u32); // scope 1 at $DIR/range_iter.rs:+1:9: +1:10 - StorageLive(_17); // scope 2 at $DIR/range_iter.rs:+2:9: +2:10 - _17 = &_3; // scope 2 at $DIR/range_iter.rs:+2:9: +2:10 - StorageLive(_18); // scope 2 at $DIR/range_iter.rs:+2:9: +2:13 - _18 = (_16,); // scope 2 at $DIR/range_iter.rs:+2:9: +2:13 - _19 = >::call(move _17, move _18) -> [return: bb9, unwind: bb11]; // scope 2 at $DIR/range_iter.rs:+2:9: +2:13 - // mir::Constant - // + span: $DIR/range_iter.rs:23:9: 23:10 - // + literal: Const { ty: for<'a> extern "rust-call" fn(&'a impl Fn(u32), (u32,)) -> >::Output {>::call}, val: Value() } + _16 = ((_12 as Some).0: u32); + StorageLive(_17); + _17 = &_3; + StorageLive(_18); + _18 = (_16,); + _19 = >::call(move _17, move _18) -> [return: bb9, unwind: bb11]; } bb9: { - StorageDead(_18); // scope 2 at $DIR/range_iter.rs:+2:12: +2:13 - StorageDead(_17); // scope 2 at $DIR/range_iter.rs:+2:12: +2:13 - StorageDead(_12); // scope 1 at $DIR/range_iter.rs:+3:5: +3:6 - goto -> bb1; // scope 1 at $DIR/range_iter.rs:+1:5: +3:6 + StorageDead(_18); + StorageDead(_17); + StorageDead(_12); + goto -> bb1; } bb10: { - unreachable; // scope 1 at $DIR/range_iter.rs:+1:14: +1:24 + unreachable; } bb11 (cleanup): { - drop(_3) -> [return: bb12, unwind terminate]; // scope 0 at $DIR/range_iter.rs:+4:1: +4:2 + drop(_3) -> [return: bb12, unwind terminate]; } bb12 (cleanup): { - resume; // scope 0 at $DIR/range_iter.rs:+0:1: +4:2 + resume; } } diff --git a/tests/mir-opt/pre-codegen/range_iter.inclusive_loop.PreCodegen.after.panic-abort.mir b/tests/mir-opt/pre-codegen/range_iter.inclusive_loop.PreCodegen.after.panic-abort.mir index e242f519c5d52..9737c9a87c7fb 100644 --- a/tests/mir-opt/pre-codegen/range_iter.inclusive_loop.PreCodegen.after.panic-abort.mir +++ b/tests/mir-opt/pre-codegen/range_iter.inclusive_loop.PreCodegen.after.panic-abort.mir @@ -1,87 +1,81 @@ // MIR for `inclusive_loop` after PreCodegen fn inclusive_loop(_1: u32, _2: u32, _3: impl Fn(u32)) -> () { - debug start => _1; // in scope 0 at $DIR/range_iter.rs:+0:23: +0:28 - debug end => _2; // in scope 0 at $DIR/range_iter.rs:+0:35: +0:38 - debug f => _3; // in scope 0 at $DIR/range_iter.rs:+0:45: +0:46 - let mut _0: (); // return place in scope 0 at $DIR/range_iter.rs:+0:62: +0:62 - let mut _4: std::ops::RangeInclusive; // in scope 0 at $DIR/range_iter.rs:+1:14: +1:25 - let mut _5: std::ops::RangeInclusive; // in scope 0 at $DIR/range_iter.rs:+1:14: +1:25 - let mut _6: &mut std::ops::RangeInclusive; // in scope 0 at $DIR/range_iter.rs:+1:14: +1:25 - let mut _7: std::option::Option; // in scope 0 at $DIR/range_iter.rs:+1:14: +1:25 - let mut _8: isize; // in scope 0 at $DIR/range_iter.rs:+1:5: +3:6 - let mut _10: &impl Fn(u32); // in scope 0 at $DIR/range_iter.rs:+2:9: +2:10 - let mut _11: (u32,); // in scope 0 at $DIR/range_iter.rs:+2:9: +2:13 - let _12: (); // in scope 0 at $DIR/range_iter.rs:+1:14: +1:25 + debug start => _1; + debug end => _2; + debug f => _3; + let mut _0: (); + let mut _4: std::ops::RangeInclusive; + let mut _5: std::ops::RangeInclusive; + let mut _6: &mut std::ops::RangeInclusive; + let mut _7: std::option::Option; + let mut _8: isize; + let mut _10: &impl Fn(u32); + let mut _11: (u32,); + let _12: (); scope 1 { - debug iter => _5; // in scope 1 at $DIR/range_iter.rs:+1:14: +1:25 - let _9: u32; // in scope 1 at $DIR/range_iter.rs:+1:9: +1:10 + debug iter => _5; + let _9: u32; scope 2 { - debug x => _9; // in scope 2 at $DIR/range_iter.rs:+1:9: +1:10 + debug x => _9; } - scope 5 (inlined iter::range::>::next) { // at $DIR/range_iter.rs:29:14: 29:25 - debug self => _6; // in scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL + scope 5 (inlined iter::range::>::next) { + debug self => _6; } } - scope 3 (inlined RangeInclusive::::new) { // at $DIR/range_iter.rs:29:14: 29:25 - debug start => _1; // in scope 3 at $SRC_DIR/core/src/ops/range.rs:LL:COL - debug end => _2; // in scope 3 at $SRC_DIR/core/src/ops/range.rs:LL:COL + scope 3 (inlined RangeInclusive::::new) { + debug start => _1; + debug end => _2; } - scope 4 (inlined as IntoIterator>::into_iter) { // at $DIR/range_iter.rs:29:14: 29:25 - debug self => _4; // in scope 4 at $SRC_DIR/core/src/iter/traits/collect.rs:LL:COL + scope 4 (inlined as IntoIterator>::into_iter) { + debug self => _4; } bb0: { - _4 = RangeInclusive:: { start: _1, end: _2, exhausted: const false }; // scope 3 at $SRC_DIR/core/src/ops/range.rs:LL:COL - StorageLive(_5); // scope 0 at $DIR/range_iter.rs:+1:14: +1:25 - _5 = move _4; // scope 0 at $DIR/range_iter.rs:+1:14: +1:25 - goto -> bb1; // scope 1 at $DIR/range_iter.rs:+1:5: +3:6 + _4 = RangeInclusive:: { start: _1, end: _2, exhausted: const false }; + StorageLive(_5); + _5 = move _4; + goto -> bb1; } bb1: { - StorageLive(_7); // scope 1 at $DIR/range_iter.rs:+1:14: +1:25 - _6 = &mut _5; // scope 1 at $DIR/range_iter.rs:+1:14: +1:25 - _7 = as iter::range::RangeInclusiveIteratorImpl>::spec_next(_6) -> [return: bb2, unwind unreachable]; // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/core/src/iter/range.rs:LL:COL - // + literal: Const { ty: for<'a> fn(&'a mut RangeInclusive) -> Option< as iter::range::RangeInclusiveIteratorImpl>::Item> { as iter::range::RangeInclusiveIteratorImpl>::spec_next}, val: Value() } + StorageLive(_7); + _6 = &mut _5; + _7 = as iter::range::RangeInclusiveIteratorImpl>::spec_next(_6) -> [return: bb2, unwind unreachable]; } bb2: { - _8 = discriminant(_7); // scope 1 at $DIR/range_iter.rs:+1:14: +1:25 - switchInt(move _8) -> [0: bb3, 1: bb5, otherwise: bb7]; // scope 1 at $DIR/range_iter.rs:+1:14: +1:25 + _8 = discriminant(_7); + switchInt(move _8) -> [0: bb3, 1: bb5, otherwise: bb7]; } bb3: { - StorageDead(_7); // scope 1 at $DIR/range_iter.rs:+3:5: +3:6 - StorageDead(_5); // scope 0 at $DIR/range_iter.rs:+3:5: +3:6 - drop(_3) -> [return: bb4, unwind unreachable]; // scope 0 at $DIR/range_iter.rs:+4:1: +4:2 + StorageDead(_7); + StorageDead(_5); + drop(_3) -> [return: bb4, unwind unreachable]; } bb4: { - return; // scope 0 at $DIR/range_iter.rs:+4:2: +4:2 + return; } bb5: { - _9 = ((_7 as Some).0: u32); // scope 1 at $DIR/range_iter.rs:+1:9: +1:10 - StorageLive(_10); // scope 2 at $DIR/range_iter.rs:+2:9: +2:10 - _10 = &_3; // scope 2 at $DIR/range_iter.rs:+2:9: +2:10 - StorageLive(_11); // scope 2 at $DIR/range_iter.rs:+2:9: +2:13 - _11 = (_9,); // scope 2 at $DIR/range_iter.rs:+2:9: +2:13 - _12 = >::call(move _10, move _11) -> [return: bb6, unwind unreachable]; // scope 2 at $DIR/range_iter.rs:+2:9: +2:13 - // mir::Constant - // + span: $DIR/range_iter.rs:30:9: 30:10 - // + literal: Const { ty: for<'a> extern "rust-call" fn(&'a impl Fn(u32), (u32,)) -> >::Output {>::call}, val: Value() } + _9 = ((_7 as Some).0: u32); + StorageLive(_10); + _10 = &_3; + StorageLive(_11); + _11 = (_9,); + _12 = >::call(move _10, move _11) -> [return: bb6, unwind unreachable]; } bb6: { - StorageDead(_11); // scope 2 at $DIR/range_iter.rs:+2:12: +2:13 - StorageDead(_10); // scope 2 at $DIR/range_iter.rs:+2:12: +2:13 - StorageDead(_7); // scope 1 at $DIR/range_iter.rs:+3:5: +3:6 - goto -> bb1; // scope 1 at $DIR/range_iter.rs:+1:5: +3:6 + StorageDead(_11); + StorageDead(_10); + StorageDead(_7); + goto -> bb1; } bb7: { - unreachable; // scope 1 at $DIR/range_iter.rs:+1:14: +1:25 + unreachable; } } diff --git a/tests/mir-opt/pre-codegen/range_iter.inclusive_loop.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/pre-codegen/range_iter.inclusive_loop.PreCodegen.after.panic-unwind.mir index e24bcb3045dff..a7525b8b9a818 100644 --- a/tests/mir-opt/pre-codegen/range_iter.inclusive_loop.PreCodegen.after.panic-unwind.mir +++ b/tests/mir-opt/pre-codegen/range_iter.inclusive_loop.PreCodegen.after.panic-unwind.mir @@ -1,95 +1,89 @@ // MIR for `inclusive_loop` after PreCodegen fn inclusive_loop(_1: u32, _2: u32, _3: impl Fn(u32)) -> () { - debug start => _1; // in scope 0 at $DIR/range_iter.rs:+0:23: +0:28 - debug end => _2; // in scope 0 at $DIR/range_iter.rs:+0:35: +0:38 - debug f => _3; // in scope 0 at $DIR/range_iter.rs:+0:45: +0:46 - let mut _0: (); // return place in scope 0 at $DIR/range_iter.rs:+0:62: +0:62 - let mut _4: std::ops::RangeInclusive; // in scope 0 at $DIR/range_iter.rs:+1:14: +1:25 - let mut _5: std::ops::RangeInclusive; // in scope 0 at $DIR/range_iter.rs:+1:14: +1:25 - let mut _6: &mut std::ops::RangeInclusive; // in scope 0 at $DIR/range_iter.rs:+1:14: +1:25 - let mut _7: std::option::Option; // in scope 0 at $DIR/range_iter.rs:+1:14: +1:25 - let mut _8: isize; // in scope 0 at $DIR/range_iter.rs:+1:5: +3:6 - let mut _10: &impl Fn(u32); // in scope 0 at $DIR/range_iter.rs:+2:9: +2:10 - let mut _11: (u32,); // in scope 0 at $DIR/range_iter.rs:+2:9: +2:13 - let _12: (); // in scope 0 at $DIR/range_iter.rs:+1:14: +1:25 + debug start => _1; + debug end => _2; + debug f => _3; + let mut _0: (); + let mut _4: std::ops::RangeInclusive; + let mut _5: std::ops::RangeInclusive; + let mut _6: &mut std::ops::RangeInclusive; + let mut _7: std::option::Option; + let mut _8: isize; + let mut _10: &impl Fn(u32); + let mut _11: (u32,); + let _12: (); scope 1 { - debug iter => _5; // in scope 1 at $DIR/range_iter.rs:+1:14: +1:25 - let _9: u32; // in scope 1 at $DIR/range_iter.rs:+1:9: +1:10 + debug iter => _5; + let _9: u32; scope 2 { - debug x => _9; // in scope 2 at $DIR/range_iter.rs:+1:9: +1:10 + debug x => _9; } - scope 5 (inlined iter::range::>::next) { // at $DIR/range_iter.rs:29:14: 29:25 - debug self => _6; // in scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL + scope 5 (inlined iter::range::>::next) { + debug self => _6; } } - scope 3 (inlined RangeInclusive::::new) { // at $DIR/range_iter.rs:29:14: 29:25 - debug start => _1; // in scope 3 at $SRC_DIR/core/src/ops/range.rs:LL:COL - debug end => _2; // in scope 3 at $SRC_DIR/core/src/ops/range.rs:LL:COL + scope 3 (inlined RangeInclusive::::new) { + debug start => _1; + debug end => _2; } - scope 4 (inlined as IntoIterator>::into_iter) { // at $DIR/range_iter.rs:29:14: 29:25 - debug self => _4; // in scope 4 at $SRC_DIR/core/src/iter/traits/collect.rs:LL:COL + scope 4 (inlined as IntoIterator>::into_iter) { + debug self => _4; } bb0: { - _4 = RangeInclusive:: { start: _1, end: _2, exhausted: const false }; // scope 3 at $SRC_DIR/core/src/ops/range.rs:LL:COL - StorageLive(_5); // scope 0 at $DIR/range_iter.rs:+1:14: +1:25 - _5 = move _4; // scope 0 at $DIR/range_iter.rs:+1:14: +1:25 - goto -> bb1; // scope 1 at $DIR/range_iter.rs:+1:5: +3:6 + _4 = RangeInclusive:: { start: _1, end: _2, exhausted: const false }; + StorageLive(_5); + _5 = move _4; + goto -> bb1; } bb1: { - StorageLive(_7); // scope 1 at $DIR/range_iter.rs:+1:14: +1:25 - _6 = &mut _5; // scope 1 at $DIR/range_iter.rs:+1:14: +1:25 - _7 = as iter::range::RangeInclusiveIteratorImpl>::spec_next(_6) -> [return: bb2, unwind: bb8]; // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/core/src/iter/range.rs:LL:COL - // + literal: Const { ty: for<'a> fn(&'a mut RangeInclusive) -> Option< as iter::range::RangeInclusiveIteratorImpl>::Item> { as iter::range::RangeInclusiveIteratorImpl>::spec_next}, val: Value() } + StorageLive(_7); + _6 = &mut _5; + _7 = as iter::range::RangeInclusiveIteratorImpl>::spec_next(_6) -> [return: bb2, unwind: bb8]; } bb2: { - _8 = discriminant(_7); // scope 1 at $DIR/range_iter.rs:+1:14: +1:25 - switchInt(move _8) -> [0: bb3, 1: bb5, otherwise: bb7]; // scope 1 at $DIR/range_iter.rs:+1:14: +1:25 + _8 = discriminant(_7); + switchInt(move _8) -> [0: bb3, 1: bb5, otherwise: bb7]; } bb3: { - StorageDead(_7); // scope 1 at $DIR/range_iter.rs:+3:5: +3:6 - StorageDead(_5); // scope 0 at $DIR/range_iter.rs:+3:5: +3:6 - drop(_3) -> bb4; // scope 0 at $DIR/range_iter.rs:+4:1: +4:2 + StorageDead(_7); + StorageDead(_5); + drop(_3) -> bb4; } bb4: { - return; // scope 0 at $DIR/range_iter.rs:+4:2: +4:2 + return; } bb5: { - _9 = ((_7 as Some).0: u32); // scope 1 at $DIR/range_iter.rs:+1:9: +1:10 - StorageLive(_10); // scope 2 at $DIR/range_iter.rs:+2:9: +2:10 - _10 = &_3; // scope 2 at $DIR/range_iter.rs:+2:9: +2:10 - StorageLive(_11); // scope 2 at $DIR/range_iter.rs:+2:9: +2:13 - _11 = (_9,); // scope 2 at $DIR/range_iter.rs:+2:9: +2:13 - _12 = >::call(move _10, move _11) -> [return: bb6, unwind: bb8]; // scope 2 at $DIR/range_iter.rs:+2:9: +2:13 - // mir::Constant - // + span: $DIR/range_iter.rs:30:9: 30:10 - // + literal: Const { ty: for<'a> extern "rust-call" fn(&'a impl Fn(u32), (u32,)) -> >::Output {>::call}, val: Value() } + _9 = ((_7 as Some).0: u32); + StorageLive(_10); + _10 = &_3; + StorageLive(_11); + _11 = (_9,); + _12 = >::call(move _10, move _11) -> [return: bb6, unwind: bb8]; } bb6: { - StorageDead(_11); // scope 2 at $DIR/range_iter.rs:+2:12: +2:13 - StorageDead(_10); // scope 2 at $DIR/range_iter.rs:+2:12: +2:13 - StorageDead(_7); // scope 1 at $DIR/range_iter.rs:+3:5: +3:6 - goto -> bb1; // scope 1 at $DIR/range_iter.rs:+1:5: +3:6 + StorageDead(_11); + StorageDead(_10); + StorageDead(_7); + goto -> bb1; } bb7: { - unreachable; // scope 1 at $DIR/range_iter.rs:+1:14: +1:25 + unreachable; } bb8 (cleanup): { - drop(_3) -> [return: bb9, unwind terminate]; // scope 0 at $DIR/range_iter.rs:+4:1: +4:2 + drop(_3) -> [return: bb9, unwind terminate]; } bb9 (cleanup): { - resume; // scope 0 at $DIR/range_iter.rs:+0:1: +4:2 + resume; } } diff --git a/tests/mir-opt/pre-codegen/range_iter.range_inclusive_iter_next.PreCodegen.after.panic-abort.mir b/tests/mir-opt/pre-codegen/range_iter.range_inclusive_iter_next.PreCodegen.after.panic-abort.mir index 347ccba28c5ad..0a71b6b2cf4a1 100644 --- a/tests/mir-opt/pre-codegen/range_iter.range_inclusive_iter_next.PreCodegen.after.panic-abort.mir +++ b/tests/mir-opt/pre-codegen/range_iter.range_inclusive_iter_next.PreCodegen.after.panic-abort.mir @@ -1,20 +1,17 @@ // MIR for `range_inclusive_iter_next` after PreCodegen fn range_inclusive_iter_next(_1: &mut RangeInclusive) -> Option { - debug it => _1; // in scope 0 at $DIR/range_iter.rs:+0:34: +0:36 - let mut _0: std::option::Option; // return place in scope 0 at $DIR/range_iter.rs:+0:67: +0:78 - scope 1 (inlined iter::range::>::next) { // at $DIR/range_iter.rs:17:8: 17:14 - debug self => _1; // in scope 1 at $SRC_DIR/core/src/iter/range.rs:LL:COL + debug it => _1; + let mut _0: std::option::Option; + scope 1 (inlined iter::range::>::next) { + debug self => _1; } bb0: { - _0 = as iter::range::RangeInclusiveIteratorImpl>::spec_next(_1) -> [return: bb1, unwind unreachable]; // scope 1 at $SRC_DIR/core/src/iter/range.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/core/src/iter/range.rs:LL:COL - // + literal: Const { ty: for<'a> fn(&'a mut RangeInclusive) -> Option< as iter::range::RangeInclusiveIteratorImpl>::Item> { as iter::range::RangeInclusiveIteratorImpl>::spec_next}, val: Value() } + _0 = as iter::range::RangeInclusiveIteratorImpl>::spec_next(_1) -> [return: bb1, unwind unreachable]; } bb1: { - return; // scope 0 at $DIR/range_iter.rs:+2:2: +2:2 + return; } } diff --git a/tests/mir-opt/pre-codegen/range_iter.range_inclusive_iter_next.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/pre-codegen/range_iter.range_inclusive_iter_next.PreCodegen.after.panic-unwind.mir index e5f257d199dbd..af775b454a7ff 100644 --- a/tests/mir-opt/pre-codegen/range_iter.range_inclusive_iter_next.PreCodegen.after.panic-unwind.mir +++ b/tests/mir-opt/pre-codegen/range_iter.range_inclusive_iter_next.PreCodegen.after.panic-unwind.mir @@ -1,20 +1,17 @@ // MIR for `range_inclusive_iter_next` after PreCodegen fn range_inclusive_iter_next(_1: &mut RangeInclusive) -> Option { - debug it => _1; // in scope 0 at $DIR/range_iter.rs:+0:34: +0:36 - let mut _0: std::option::Option; // return place in scope 0 at $DIR/range_iter.rs:+0:67: +0:78 - scope 1 (inlined iter::range::>::next) { // at $DIR/range_iter.rs:17:8: 17:14 - debug self => _1; // in scope 1 at $SRC_DIR/core/src/iter/range.rs:LL:COL + debug it => _1; + let mut _0: std::option::Option; + scope 1 (inlined iter::range::>::next) { + debug self => _1; } bb0: { - _0 = as iter::range::RangeInclusiveIteratorImpl>::spec_next(_1) -> bb1; // scope 1 at $SRC_DIR/core/src/iter/range.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/core/src/iter/range.rs:LL:COL - // + literal: Const { ty: for<'a> fn(&'a mut RangeInclusive) -> Option< as iter::range::RangeInclusiveIteratorImpl>::Item> { as iter::range::RangeInclusiveIteratorImpl>::spec_next}, val: Value() } + _0 = as iter::range::RangeInclusiveIteratorImpl>::spec_next(_1) -> bb1; } bb1: { - return; // scope 0 at $DIR/range_iter.rs:+2:2: +2:2 + return; } } diff --git a/tests/mir-opt/pre-codegen/range_iter.range_iter_next.PreCodegen.after.panic-abort.mir b/tests/mir-opt/pre-codegen/range_iter.range_iter_next.PreCodegen.after.panic-abort.mir index 35f85f173ea02..1dfd00bf31462 100644 --- a/tests/mir-opt/pre-codegen/range_iter.range_iter_next.PreCodegen.after.panic-abort.mir +++ b/tests/mir-opt/pre-codegen/range_iter.range_iter_next.PreCodegen.after.panic-abort.mir @@ -1,74 +1,71 @@ // MIR for `range_iter_next` after PreCodegen fn range_iter_next(_1: &mut std::ops::Range) -> Option { - debug it => _1; // in scope 0 at $DIR/range_iter.rs:+0:24: +0:26 - let mut _0: std::option::Option; // return place in scope 0 at $DIR/range_iter.rs:+0:48: +0:59 - scope 1 (inlined iter::range::>::next) { // at $DIR/range_iter.rs:12:8: 12:14 - debug self => _1; // in scope 1 at $SRC_DIR/core/src/iter/range.rs:LL:COL - scope 2 (inlined as iter::range::RangeIteratorImpl>::spec_next) { // at $SRC_DIR/core/src/iter/range.rs:LL:COL - debug self => _1; // in scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL - let mut _2: &u32; // in scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL - let mut _3: &u32; // in scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL - let mut _6: bool; // in scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL - let _7: u32; // in scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL - let mut _8: u32; // in scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL + debug it => _1; + let mut _0: std::option::Option; + scope 1 (inlined iter::range::>::next) { + debug self => _1; + scope 2 (inlined as iter::range::RangeIteratorImpl>::spec_next) { + debug self => _1; + let mut _2: &u32; + let mut _3: &u32; + let mut _6: bool; + let _7: u32; + let mut _8: u32; scope 3 { - debug old => _7; // in scope 3 at $SRC_DIR/core/src/iter/range.rs:LL:COL + debug old => _7; scope 4 { } } - scope 5 (inlined cmp::impls::::lt) { // at $SRC_DIR/core/src/iter/range.rs:LL:COL - debug self => _2; // in scope 5 at $SRC_DIR/core/src/cmp.rs:LL:COL - debug other => _3; // in scope 5 at $SRC_DIR/core/src/cmp.rs:LL:COL - let mut _4: u32; // in scope 5 at $SRC_DIR/core/src/cmp.rs:LL:COL - let mut _5: u32; // in scope 5 at $SRC_DIR/core/src/cmp.rs:LL:COL + scope 5 (inlined cmp::impls::::lt) { + debug self => _2; + debug other => _3; + let mut _4: u32; + let mut _5: u32; } } } bb0: { - StorageLive(_7); // scope 1 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageLive(_6); // scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageLive(_2); // scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL - _2 = &((*_1).0: u32); // scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageLive(_3); // scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL - _3 = &((*_1).1: u32); // scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageLive(_4); // scope 5 at $SRC_DIR/core/src/cmp.rs:LL:COL - _4 = (*_2); // scope 5 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageLive(_5); // scope 5 at $SRC_DIR/core/src/cmp.rs:LL:COL - _5 = (*_3); // scope 5 at $SRC_DIR/core/src/cmp.rs:LL:COL - _6 = Lt(move _4, move _5); // scope 5 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageDead(_5); // scope 5 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageDead(_4); // scope 5 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageDead(_3); // scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageDead(_2); // scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL - switchInt(move _6) -> [0: bb1, otherwise: bb2]; // scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL + StorageLive(_7); + StorageLive(_6); + StorageLive(_2); + _2 = &((*_1).0: u32); + StorageLive(_3); + _3 = &((*_1).1: u32); + StorageLive(_4); + _4 = (*_2); + StorageLive(_5); + _5 = (*_3); + _6 = Lt(move _4, move _5); + StorageDead(_5); + StorageDead(_4); + StorageDead(_3); + StorageDead(_2); + switchInt(move _6) -> [0: bb1, otherwise: bb2]; } bb1: { - _0 = Option::::None; // scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL - goto -> bb4; // scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL + _0 = Option::::None; + goto -> bb4; } bb2: { - _7 = ((*_1).0: u32); // scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageLive(_8); // scope 3 at $SRC_DIR/core/src/iter/range.rs:LL:COL - _8 = ::forward_unchecked(_7, const 1_usize) -> [return: bb3, unwind unreachable]; // scope 4 at $SRC_DIR/core/src/iter/range.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/core/src/iter/range.rs:LL:COL - // + literal: Const { ty: unsafe fn(u32, usize) -> u32 {::forward_unchecked}, val: Value() } + _7 = ((*_1).0: u32); + StorageLive(_8); + _8 = ::forward_unchecked(_7, const 1_usize) -> [return: bb3, unwind unreachable]; } bb3: { - ((*_1).0: u32) = move _8; // scope 3 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageDead(_8); // scope 3 at $SRC_DIR/core/src/iter/range.rs:LL:COL - _0 = Option::::Some(_7); // scope 3 at $SRC_DIR/core/src/iter/range.rs:LL:COL - goto -> bb4; // scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL + ((*_1).0: u32) = move _8; + StorageDead(_8); + _0 = Option::::Some(_7); + goto -> bb4; } bb4: { - StorageDead(_6); // scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageDead(_7); // scope 1 at $SRC_DIR/core/src/iter/range.rs:LL:COL - return; // scope 0 at $DIR/range_iter.rs:+2:2: +2:2 + StorageDead(_6); + StorageDead(_7); + return; } } diff --git a/tests/mir-opt/pre-codegen/range_iter.range_iter_next.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/pre-codegen/range_iter.range_iter_next.PreCodegen.after.panic-unwind.mir index 09b9539681fdc..33752e970d1a1 100644 --- a/tests/mir-opt/pre-codegen/range_iter.range_iter_next.PreCodegen.after.panic-unwind.mir +++ b/tests/mir-opt/pre-codegen/range_iter.range_iter_next.PreCodegen.after.panic-unwind.mir @@ -1,74 +1,71 @@ // MIR for `range_iter_next` after PreCodegen fn range_iter_next(_1: &mut std::ops::Range) -> Option { - debug it => _1; // in scope 0 at $DIR/range_iter.rs:+0:24: +0:26 - let mut _0: std::option::Option; // return place in scope 0 at $DIR/range_iter.rs:+0:48: +0:59 - scope 1 (inlined iter::range::>::next) { // at $DIR/range_iter.rs:12:8: 12:14 - debug self => _1; // in scope 1 at $SRC_DIR/core/src/iter/range.rs:LL:COL - scope 2 (inlined as iter::range::RangeIteratorImpl>::spec_next) { // at $SRC_DIR/core/src/iter/range.rs:LL:COL - debug self => _1; // in scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL - let mut _2: &u32; // in scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL - let mut _3: &u32; // in scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL - let mut _6: bool; // in scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL - let _7: u32; // in scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL - let mut _8: u32; // in scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL + debug it => _1; + let mut _0: std::option::Option; + scope 1 (inlined iter::range::>::next) { + debug self => _1; + scope 2 (inlined as iter::range::RangeIteratorImpl>::spec_next) { + debug self => _1; + let mut _2: &u32; + let mut _3: &u32; + let mut _6: bool; + let _7: u32; + let mut _8: u32; scope 3 { - debug old => _7; // in scope 3 at $SRC_DIR/core/src/iter/range.rs:LL:COL + debug old => _7; scope 4 { } } - scope 5 (inlined cmp::impls::::lt) { // at $SRC_DIR/core/src/iter/range.rs:LL:COL - debug self => _2; // in scope 5 at $SRC_DIR/core/src/cmp.rs:LL:COL - debug other => _3; // in scope 5 at $SRC_DIR/core/src/cmp.rs:LL:COL - let mut _4: u32; // in scope 5 at $SRC_DIR/core/src/cmp.rs:LL:COL - let mut _5: u32; // in scope 5 at $SRC_DIR/core/src/cmp.rs:LL:COL + scope 5 (inlined cmp::impls::::lt) { + debug self => _2; + debug other => _3; + let mut _4: u32; + let mut _5: u32; } } } bb0: { - StorageLive(_7); // scope 1 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageLive(_6); // scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageLive(_2); // scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL - _2 = &((*_1).0: u32); // scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageLive(_3); // scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL - _3 = &((*_1).1: u32); // scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageLive(_4); // scope 5 at $SRC_DIR/core/src/cmp.rs:LL:COL - _4 = (*_2); // scope 5 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageLive(_5); // scope 5 at $SRC_DIR/core/src/cmp.rs:LL:COL - _5 = (*_3); // scope 5 at $SRC_DIR/core/src/cmp.rs:LL:COL - _6 = Lt(move _4, move _5); // scope 5 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageDead(_5); // scope 5 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageDead(_4); // scope 5 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageDead(_3); // scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageDead(_2); // scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL - switchInt(move _6) -> [0: bb1, otherwise: bb2]; // scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL + StorageLive(_7); + StorageLive(_6); + StorageLive(_2); + _2 = &((*_1).0: u32); + StorageLive(_3); + _3 = &((*_1).1: u32); + StorageLive(_4); + _4 = (*_2); + StorageLive(_5); + _5 = (*_3); + _6 = Lt(move _4, move _5); + StorageDead(_5); + StorageDead(_4); + StorageDead(_3); + StorageDead(_2); + switchInt(move _6) -> [0: bb1, otherwise: bb2]; } bb1: { - _0 = Option::::None; // scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL - goto -> bb4; // scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL + _0 = Option::::None; + goto -> bb4; } bb2: { - _7 = ((*_1).0: u32); // scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageLive(_8); // scope 3 at $SRC_DIR/core/src/iter/range.rs:LL:COL - _8 = ::forward_unchecked(_7, const 1_usize) -> bb3; // scope 4 at $SRC_DIR/core/src/iter/range.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/core/src/iter/range.rs:LL:COL - // + literal: Const { ty: unsafe fn(u32, usize) -> u32 {::forward_unchecked}, val: Value() } + _7 = ((*_1).0: u32); + StorageLive(_8); + _8 = ::forward_unchecked(_7, const 1_usize) -> bb3; } bb3: { - ((*_1).0: u32) = move _8; // scope 3 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageDead(_8); // scope 3 at $SRC_DIR/core/src/iter/range.rs:LL:COL - _0 = Option::::Some(_7); // scope 3 at $SRC_DIR/core/src/iter/range.rs:LL:COL - goto -> bb4; // scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL + ((*_1).0: u32) = move _8; + StorageDead(_8); + _0 = Option::::Some(_7); + goto -> bb4; } bb4: { - StorageDead(_6); // scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageDead(_7); // scope 1 at $SRC_DIR/core/src/iter/range.rs:LL:COL - return; // scope 0 at $DIR/range_iter.rs:+2:2: +2:2 + StorageDead(_6); + StorageDead(_7); + return; } } diff --git a/tests/mir-opt/pre-codegen/simple_option_map.ezmap.PreCodegen.after.mir b/tests/mir-opt/pre-codegen/simple_option_map.ezmap.PreCodegen.after.mir index 73b5678ce049b..68d78f7432814 100644 --- a/tests/mir-opt/pre-codegen/simple_option_map.ezmap.PreCodegen.after.mir +++ b/tests/mir-opt/pre-codegen/simple_option_map.ezmap.PreCodegen.after.mir @@ -1,46 +1,46 @@ // MIR for `ezmap` after PreCodegen fn ezmap(_1: Option) -> Option { - debug x => _1; // in scope 0 at $DIR/simple_option_map.rs:+0:14: +0:15 - let mut _0: std::option::Option; // return place in scope 0 at $DIR/simple_option_map.rs:+0:33: +0:44 - scope 1 (inlined map::) { // at $DIR/simple_option_map.rs:18:5: 18:22 - debug slf => _1; // in scope 1 at $DIR/simple_option_map.rs:6:17: 6:20 - debug f => const ZeroSized: [closure@$DIR/simple_option_map.rs:18:12: 18:15]; // in scope 1 at $DIR/simple_option_map.rs:6:33: 6:34 - let mut _2: isize; // in scope 1 at $DIR/simple_option_map.rs:11:9: 11:16 - let _3: i32; // in scope 1 at $DIR/simple_option_map.rs:11:14: 11:15 - let mut _4: i32; // in scope 1 at $DIR/simple_option_map.rs:11:25: 11:29 + debug x => _1; + let mut _0: std::option::Option; + scope 1 (inlined map::) { + debug slf => _1; + debug f => const ZeroSized: [closure@$DIR/simple_option_map.rs:18:12: 18:15]; + let mut _2: isize; + let _3: i32; + let mut _4: i32; scope 2 { - debug x => _3; // in scope 2 at $DIR/simple_option_map.rs:11:14: 11:15 - scope 3 (inlined ezmap::{closure#0}) { // at $DIR/simple_option_map.rs:11:25: 11:29 - debug n => _3; // in scope 3 at $DIR/simple_option_map.rs:+1:13: +1:14 + debug x => _3; + scope 3 (inlined ezmap::{closure#0}) { + debug n => _3; } } } bb0: { - _2 = discriminant(_1); // scope 1 at $DIR/simple_option_map.rs:10:11: 10:14 - switchInt(move _2) -> [0: bb1, 1: bb2, otherwise: bb4]; // scope 1 at $DIR/simple_option_map.rs:10:5: 10:14 + _2 = discriminant(_1); + switchInt(move _2) -> [0: bb1, 1: bb2, otherwise: bb4]; } bb1: { - _0 = Option::::None; // scope 1 at $DIR/simple_option_map.rs:12:17: 12:21 - goto -> bb3; // scope 1 at $DIR/simple_option_map.rs:12:17: 12:21 + _0 = Option::::None; + goto -> bb3; } bb2: { - _3 = ((_1 as Some).0: i32); // scope 1 at $DIR/simple_option_map.rs:11:14: 11:15 - StorageLive(_4); // scope 2 at $DIR/simple_option_map.rs:11:25: 11:29 - _4 = Add(_3, const 1_i32); // scope 3 at $DIR/simple_option_map.rs:+1:16: +1:21 - _0 = Option::::Some(move _4); // scope 2 at $DIR/simple_option_map.rs:11:20: 11:30 - StorageDead(_4); // scope 2 at $DIR/simple_option_map.rs:11:29: 11:30 - goto -> bb3; // scope 1 at $DIR/simple_option_map.rs:14:1: 14:2 + _3 = ((_1 as Some).0: i32); + StorageLive(_4); + _4 = Add(_3, const 1_i32); + _0 = Option::::Some(move _4); + StorageDead(_4); + goto -> bb3; } bb3: { - return; // scope 0 at $DIR/simple_option_map.rs:+2:2: +2:2 + return; } bb4: { - unreachable; // scope 1 at $DIR/simple_option_map.rs:10:11: 10:14 + unreachable; } } diff --git a/tests/mir-opt/pre-codegen/slice_filter.variant_a-{closure#0}.PreCodegen.after.mir b/tests/mir-opt/pre-codegen/slice_filter.variant_a-{closure#0}.PreCodegen.after.mir index 91c8f299fdb20..6c1d5096db00a 100644 --- a/tests/mir-opt/pre-codegen/slice_filter.variant_a-{closure#0}.PreCodegen.after.mir +++ b/tests/mir-opt/pre-codegen/slice_filter.variant_a-{closure#0}.PreCodegen.after.mir @@ -1,228 +1,228 @@ // MIR for `variant_a::{closure#0}` after PreCodegen fn variant_a::{closure#0}(_1: &mut [closure@$DIR/slice_filter.rs:7:25: 7:39], _2: &&(usize, usize, usize, usize)) -> bool { - let mut _0: bool; // return place in scope 0 at $DIR/slice_filter.rs:+0:40: +0:40 - let mut _3: &(usize, usize, usize, usize); // in scope 0 at $DIR/slice_filter.rs:+0:26: +0:38 - let _4: &usize; // in scope 0 at $DIR/slice_filter.rs:+0:27: +0:28 - let mut _5: &(usize, usize, usize, usize); // in scope 0 at $DIR/slice_filter.rs:+0:26: +0:38 - let _6: &usize; // in scope 0 at $DIR/slice_filter.rs:+0:30: +0:31 - let mut _7: &(usize, usize, usize, usize); // in scope 0 at $DIR/slice_filter.rs:+0:26: +0:38 - let _8: &usize; // in scope 0 at $DIR/slice_filter.rs:+0:33: +0:34 - let mut _9: &(usize, usize, usize, usize); // in scope 0 at $DIR/slice_filter.rs:+0:26: +0:38 - let _10: &usize; // in scope 0 at $DIR/slice_filter.rs:+0:36: +0:37 - let mut _11: &&usize; // in scope 0 at $DIR/slice_filter.rs:+0:40: +0:41 - let _12: &usize; // in scope 0 at $DIR/slice_filter.rs:+0:45: +0:46 - let mut _13: &&usize; // in scope 0 at $DIR/slice_filter.rs:+0:45: +0:46 - let mut _18: bool; // in scope 0 at $DIR/slice_filter.rs:+0:40: +0:46 - let mut _19: &&usize; // in scope 0 at $DIR/slice_filter.rs:+0:50: +0:51 - let _20: &usize; // in scope 0 at $DIR/slice_filter.rs:+0:55: +0:56 - let mut _21: &&usize; // in scope 0 at $DIR/slice_filter.rs:+0:55: +0:56 - let mut _26: bool; // in scope 0 at $DIR/slice_filter.rs:+0:50: +0:56 - let mut _27: bool; // in scope 0 at $DIR/slice_filter.rs:+0:40: +0:56 - let mut _28: &&usize; // in scope 0 at $DIR/slice_filter.rs:+0:60: +0:61 - let _29: &usize; // in scope 0 at $DIR/slice_filter.rs:+0:65: +0:66 - let mut _30: &&usize; // in scope 0 at $DIR/slice_filter.rs:+0:65: +0:66 - let mut _35: bool; // in scope 0 at $DIR/slice_filter.rs:+0:60: +0:66 - let mut _36: bool; // in scope 0 at $DIR/slice_filter.rs:+0:60: +0:76 - let mut _37: &&usize; // in scope 0 at $DIR/slice_filter.rs:+0:70: +0:71 - let _38: &usize; // in scope 0 at $DIR/slice_filter.rs:+0:75: +0:76 - let mut _39: &&usize; // in scope 0 at $DIR/slice_filter.rs:+0:75: +0:76 - let mut _44: bool; // in scope 0 at $DIR/slice_filter.rs:+0:70: +0:76 + let mut _0: bool; + let mut _3: &(usize, usize, usize, usize); + let _4: &usize; + let mut _5: &(usize, usize, usize, usize); + let _6: &usize; + let mut _7: &(usize, usize, usize, usize); + let _8: &usize; + let mut _9: &(usize, usize, usize, usize); + let _10: &usize; + let mut _11: &&usize; + let _12: &usize; + let mut _13: &&usize; + let mut _18: bool; + let mut _19: &&usize; + let _20: &usize; + let mut _21: &&usize; + let mut _26: bool; + let mut _27: bool; + let mut _28: &&usize; + let _29: &usize; + let mut _30: &&usize; + let mut _35: bool; + let mut _36: bool; + let mut _37: &&usize; + let _38: &usize; + let mut _39: &&usize; + let mut _44: bool; scope 1 { - debug a => _4; // in scope 1 at $DIR/slice_filter.rs:+0:27: +0:28 - debug b => _6; // in scope 1 at $DIR/slice_filter.rs:+0:30: +0:31 - debug c => _8; // in scope 1 at $DIR/slice_filter.rs:+0:33: +0:34 - debug d => _10; // in scope 1 at $DIR/slice_filter.rs:+0:36: +0:37 - scope 2 (inlined cmp::impls::::le) { // at $DIR/slice_filter.rs:7:40: 7:46 - debug self => _11; // in scope 2 at $SRC_DIR/core/src/cmp.rs:LL:COL - debug other => _13; // in scope 2 at $SRC_DIR/core/src/cmp.rs:LL:COL - let mut _14: &usize; // in scope 2 at $SRC_DIR/core/src/cmp.rs:LL:COL - let mut _15: &usize; // in scope 2 at $SRC_DIR/core/src/cmp.rs:LL:COL - scope 3 (inlined cmp::impls::::le) { // at $SRC_DIR/core/src/cmp.rs:LL:COL - debug self => _14; // in scope 3 at $SRC_DIR/core/src/cmp.rs:LL:COL - debug other => _15; // in scope 3 at $SRC_DIR/core/src/cmp.rs:LL:COL - let mut _16: usize; // in scope 3 at $SRC_DIR/core/src/cmp.rs:LL:COL - let mut _17: usize; // in scope 3 at $SRC_DIR/core/src/cmp.rs:LL:COL + debug a => _4; + debug b => _6; + debug c => _8; + debug d => _10; + scope 2 (inlined cmp::impls::::le) { + debug self => _11; + debug other => _13; + let mut _14: &usize; + let mut _15: &usize; + scope 3 (inlined cmp::impls::::le) { + debug self => _14; + debug other => _15; + let mut _16: usize; + let mut _17: usize; } } - scope 4 (inlined cmp::impls::::le) { // at $DIR/slice_filter.rs:7:60: 7:66 - debug self => _28; // in scope 4 at $SRC_DIR/core/src/cmp.rs:LL:COL - debug other => _30; // in scope 4 at $SRC_DIR/core/src/cmp.rs:LL:COL - let mut _31: &usize; // in scope 4 at $SRC_DIR/core/src/cmp.rs:LL:COL - let mut _32: &usize; // in scope 4 at $SRC_DIR/core/src/cmp.rs:LL:COL - scope 5 (inlined cmp::impls::::le) { // at $SRC_DIR/core/src/cmp.rs:LL:COL - debug self => _31; // in scope 5 at $SRC_DIR/core/src/cmp.rs:LL:COL - debug other => _32; // in scope 5 at $SRC_DIR/core/src/cmp.rs:LL:COL - let mut _33: usize; // in scope 5 at $SRC_DIR/core/src/cmp.rs:LL:COL - let mut _34: usize; // in scope 5 at $SRC_DIR/core/src/cmp.rs:LL:COL + scope 4 (inlined cmp::impls::::le) { + debug self => _28; + debug other => _30; + let mut _31: &usize; + let mut _32: &usize; + scope 5 (inlined cmp::impls::::le) { + debug self => _31; + debug other => _32; + let mut _33: usize; + let mut _34: usize; } } - scope 6 (inlined cmp::impls::::le) { // at $DIR/slice_filter.rs:7:50: 7:56 - debug self => _19; // in scope 6 at $SRC_DIR/core/src/cmp.rs:LL:COL - debug other => _21; // in scope 6 at $SRC_DIR/core/src/cmp.rs:LL:COL - let mut _22: &usize; // in scope 6 at $SRC_DIR/core/src/cmp.rs:LL:COL - let mut _23: &usize; // in scope 6 at $SRC_DIR/core/src/cmp.rs:LL:COL - scope 7 (inlined cmp::impls::::le) { // at $SRC_DIR/core/src/cmp.rs:LL:COL - debug self => _22; // in scope 7 at $SRC_DIR/core/src/cmp.rs:LL:COL - debug other => _23; // in scope 7 at $SRC_DIR/core/src/cmp.rs:LL:COL - let mut _24: usize; // in scope 7 at $SRC_DIR/core/src/cmp.rs:LL:COL - let mut _25: usize; // in scope 7 at $SRC_DIR/core/src/cmp.rs:LL:COL + scope 6 (inlined cmp::impls::::le) { + debug self => _19; + debug other => _21; + let mut _22: &usize; + let mut _23: &usize; + scope 7 (inlined cmp::impls::::le) { + debug self => _22; + debug other => _23; + let mut _24: usize; + let mut _25: usize; } } - scope 8 (inlined cmp::impls::::le) { // at $DIR/slice_filter.rs:7:70: 7:76 - debug self => _37; // in scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL - debug other => _39; // in scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL - let mut _40: &usize; // in scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL - let mut _41: &usize; // in scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL - scope 9 (inlined cmp::impls::::le) { // at $SRC_DIR/core/src/cmp.rs:LL:COL - debug self => _40; // in scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL - debug other => _41; // in scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL - let mut _42: usize; // in scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL - let mut _43: usize; // in scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL + scope 8 (inlined cmp::impls::::le) { + debug self => _37; + debug other => _39; + let mut _40: &usize; + let mut _41: &usize; + scope 9 (inlined cmp::impls::::le) { + debug self => _40; + debug other => _41; + let mut _42: usize; + let mut _43: usize; } } } bb0: { - StorageLive(_4); // scope 0 at $DIR/slice_filter.rs:+0:27: +0:28 - _3 = deref_copy (*_2); // scope 0 at $DIR/slice_filter.rs:+0:27: +0:28 - _4 = &((*_3).0: usize); // scope 0 at $DIR/slice_filter.rs:+0:27: +0:28 - StorageLive(_6); // scope 0 at $DIR/slice_filter.rs:+0:30: +0:31 - _5 = deref_copy (*_2); // scope 0 at $DIR/slice_filter.rs:+0:30: +0:31 - _6 = &((*_5).1: usize); // scope 0 at $DIR/slice_filter.rs:+0:30: +0:31 - StorageLive(_8); // scope 0 at $DIR/slice_filter.rs:+0:33: +0:34 - _7 = deref_copy (*_2); // scope 0 at $DIR/slice_filter.rs:+0:33: +0:34 - _8 = &((*_7).2: usize); // scope 0 at $DIR/slice_filter.rs:+0:33: +0:34 - StorageLive(_10); // scope 0 at $DIR/slice_filter.rs:+0:36: +0:37 - _9 = deref_copy (*_2); // scope 0 at $DIR/slice_filter.rs:+0:36: +0:37 - _10 = &((*_9).3: usize); // scope 0 at $DIR/slice_filter.rs:+0:36: +0:37 - StorageLive(_27); // scope 1 at $DIR/slice_filter.rs:+0:40: +0:56 - StorageLive(_18); // scope 1 at $DIR/slice_filter.rs:+0:40: +0:46 - StorageLive(_11); // scope 1 at $DIR/slice_filter.rs:+0:40: +0:41 - _11 = &_4; // scope 1 at $DIR/slice_filter.rs:+0:40: +0:41 - StorageLive(_13); // scope 1 at $DIR/slice_filter.rs:+0:45: +0:46 - StorageLive(_12); // scope 1 at $DIR/slice_filter.rs:+0:45: +0:46 - _12 = _8; // scope 1 at $DIR/slice_filter.rs:+0:45: +0:46 - _13 = &_12; // scope 1 at $DIR/slice_filter.rs:+0:45: +0:46 - _14 = deref_copy (*_11); // scope 2 at $SRC_DIR/core/src/cmp.rs:LL:COL - _15 = deref_copy (*_13); // scope 2 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageLive(_16); // scope 3 at $SRC_DIR/core/src/cmp.rs:LL:COL - _16 = (*_14); // scope 3 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageLive(_17); // scope 3 at $SRC_DIR/core/src/cmp.rs:LL:COL - _17 = (*_15); // scope 3 at $SRC_DIR/core/src/cmp.rs:LL:COL - _18 = Le(move _16, move _17); // scope 3 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageDead(_17); // scope 3 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageDead(_16); // scope 3 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageDead(_12); // scope 1 at $DIR/slice_filter.rs:+0:45: +0:46 - StorageDead(_13); // scope 1 at $DIR/slice_filter.rs:+0:45: +0:46 - StorageDead(_11); // scope 1 at $DIR/slice_filter.rs:+0:45: +0:46 - switchInt(move _18) -> [0: bb1, otherwise: bb2]; // scope 1 at $DIR/slice_filter.rs:+0:40: +0:56 + StorageLive(_4); + _3 = deref_copy (*_2); + _4 = &((*_3).0: usize); + StorageLive(_6); + _5 = deref_copy (*_2); + _6 = &((*_5).1: usize); + StorageLive(_8); + _7 = deref_copy (*_2); + _8 = &((*_7).2: usize); + StorageLive(_10); + _9 = deref_copy (*_2); + _10 = &((*_9).3: usize); + StorageLive(_27); + StorageLive(_18); + StorageLive(_11); + _11 = &_4; + StorageLive(_13); + StorageLive(_12); + _12 = _8; + _13 = &_12; + _14 = deref_copy (*_11); + _15 = deref_copy (*_13); + StorageLive(_16); + _16 = (*_14); + StorageLive(_17); + _17 = (*_15); + _18 = Le(move _16, move _17); + StorageDead(_17); + StorageDead(_16); + StorageDead(_12); + StorageDead(_13); + StorageDead(_11); + switchInt(move _18) -> [0: bb1, otherwise: bb2]; } bb1: { - StorageDead(_26); // scope 1 at $DIR/slice_filter.rs:+0:55: +0:56 - StorageDead(_18); // scope 1 at $DIR/slice_filter.rs:+0:55: +0:56 - goto -> bb3; // scope 1 at $DIR/slice_filter.rs:+0:40: +0:56 + StorageDead(_26); + StorageDead(_18); + goto -> bb3; } bb2: { - StorageLive(_26); // scope 1 at $DIR/slice_filter.rs:+0:50: +0:56 - StorageLive(_19); // scope 1 at $DIR/slice_filter.rs:+0:50: +0:51 - _19 = &_10; // scope 1 at $DIR/slice_filter.rs:+0:50: +0:51 - StorageLive(_21); // scope 1 at $DIR/slice_filter.rs:+0:55: +0:56 - StorageLive(_20); // scope 1 at $DIR/slice_filter.rs:+0:55: +0:56 - _20 = _6; // scope 1 at $DIR/slice_filter.rs:+0:55: +0:56 - _21 = &_20; // scope 1 at $DIR/slice_filter.rs:+0:55: +0:56 - _22 = deref_copy (*_19); // scope 6 at $SRC_DIR/core/src/cmp.rs:LL:COL - _23 = deref_copy (*_21); // scope 6 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageLive(_24); // scope 7 at $SRC_DIR/core/src/cmp.rs:LL:COL - _24 = (*_22); // scope 7 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageLive(_25); // scope 7 at $SRC_DIR/core/src/cmp.rs:LL:COL - _25 = (*_23); // scope 7 at $SRC_DIR/core/src/cmp.rs:LL:COL - _26 = Le(move _24, move _25); // scope 7 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageDead(_25); // scope 7 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageDead(_24); // scope 7 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageDead(_20); // scope 1 at $DIR/slice_filter.rs:+0:55: +0:56 - StorageDead(_21); // scope 1 at $DIR/slice_filter.rs:+0:55: +0:56 - StorageDead(_19); // scope 1 at $DIR/slice_filter.rs:+0:55: +0:56 - _27 = move _26; // scope 1 at $DIR/slice_filter.rs:+0:40: +0:56 - StorageDead(_26); // scope 1 at $DIR/slice_filter.rs:+0:55: +0:56 - StorageDead(_18); // scope 1 at $DIR/slice_filter.rs:+0:55: +0:56 - switchInt(move _27) -> [0: bb3, otherwise: bb7]; // scope 1 at $DIR/slice_filter.rs:+0:40: +0:76 + StorageLive(_26); + StorageLive(_19); + _19 = &_10; + StorageLive(_21); + StorageLive(_20); + _20 = _6; + _21 = &_20; + _22 = deref_copy (*_19); + _23 = deref_copy (*_21); + StorageLive(_24); + _24 = (*_22); + StorageLive(_25); + _25 = (*_23); + _26 = Le(move _24, move _25); + StorageDead(_25); + StorageDead(_24); + StorageDead(_20); + StorageDead(_21); + StorageDead(_19); + _27 = move _26; + StorageDead(_26); + StorageDead(_18); + switchInt(move _27) -> [0: bb3, otherwise: bb7]; } bb3: { - StorageLive(_36); // scope 1 at $DIR/slice_filter.rs:+0:60: +0:76 - StorageLive(_35); // scope 1 at $DIR/slice_filter.rs:+0:60: +0:66 - StorageLive(_28); // scope 1 at $DIR/slice_filter.rs:+0:60: +0:61 - _28 = &_8; // scope 1 at $DIR/slice_filter.rs:+0:60: +0:61 - StorageLive(_30); // scope 1 at $DIR/slice_filter.rs:+0:65: +0:66 - StorageLive(_29); // scope 1 at $DIR/slice_filter.rs:+0:65: +0:66 - _29 = _4; // scope 1 at $DIR/slice_filter.rs:+0:65: +0:66 - _30 = &_29; // scope 1 at $DIR/slice_filter.rs:+0:65: +0:66 - _31 = deref_copy (*_28); // scope 4 at $SRC_DIR/core/src/cmp.rs:LL:COL - _32 = deref_copy (*_30); // scope 4 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageLive(_33); // scope 5 at $SRC_DIR/core/src/cmp.rs:LL:COL - _33 = (*_31); // scope 5 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageLive(_34); // scope 5 at $SRC_DIR/core/src/cmp.rs:LL:COL - _34 = (*_32); // scope 5 at $SRC_DIR/core/src/cmp.rs:LL:COL - _35 = Le(move _33, move _34); // scope 5 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageDead(_34); // scope 5 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageDead(_33); // scope 5 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageDead(_29); // scope 1 at $DIR/slice_filter.rs:+0:65: +0:66 - StorageDead(_30); // scope 1 at $DIR/slice_filter.rs:+0:65: +0:66 - StorageDead(_28); // scope 1 at $DIR/slice_filter.rs:+0:65: +0:66 - switchInt(move _35) -> [0: bb4, otherwise: bb5]; // scope 1 at $DIR/slice_filter.rs:+0:60: +0:76 + StorageLive(_36); + StorageLive(_35); + StorageLive(_28); + _28 = &_8; + StorageLive(_30); + StorageLive(_29); + _29 = _4; + _30 = &_29; + _31 = deref_copy (*_28); + _32 = deref_copy (*_30); + StorageLive(_33); + _33 = (*_31); + StorageLive(_34); + _34 = (*_32); + _35 = Le(move _33, move _34); + StorageDead(_34); + StorageDead(_33); + StorageDead(_29); + StorageDead(_30); + StorageDead(_28); + switchInt(move _35) -> [0: bb4, otherwise: bb5]; } bb4: { - _36 = const false; // scope 1 at $DIR/slice_filter.rs:+0:60: +0:76 - goto -> bb6; // scope 1 at $DIR/slice_filter.rs:+0:60: +0:76 + _36 = const false; + goto -> bb6; } bb5: { - StorageLive(_44); // scope 1 at $DIR/slice_filter.rs:+0:70: +0:76 - StorageLive(_37); // scope 1 at $DIR/slice_filter.rs:+0:70: +0:71 - _37 = &_6; // scope 1 at $DIR/slice_filter.rs:+0:70: +0:71 - StorageLive(_39); // scope 1 at $DIR/slice_filter.rs:+0:75: +0:76 - StorageLive(_38); // scope 1 at $DIR/slice_filter.rs:+0:75: +0:76 - _38 = _10; // scope 1 at $DIR/slice_filter.rs:+0:75: +0:76 - _39 = &_38; // scope 1 at $DIR/slice_filter.rs:+0:75: +0:76 - _40 = deref_copy (*_37); // scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL - _41 = deref_copy (*_39); // scope 8 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageLive(_42); // scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL - _42 = (*_40); // scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageLive(_43); // scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL - _43 = (*_41); // scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL - _44 = Le(move _42, move _43); // scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageDead(_43); // scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageDead(_42); // scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageDead(_38); // scope 1 at $DIR/slice_filter.rs:+0:75: +0:76 - StorageDead(_39); // scope 1 at $DIR/slice_filter.rs:+0:75: +0:76 - StorageDead(_37); // scope 1 at $DIR/slice_filter.rs:+0:75: +0:76 - _36 = move _44; // scope 1 at $DIR/slice_filter.rs:+0:60: +0:76 - goto -> bb6; // scope 1 at $DIR/slice_filter.rs:+0:60: +0:76 + StorageLive(_44); + StorageLive(_37); + _37 = &_6; + StorageLive(_39); + StorageLive(_38); + _38 = _10; + _39 = &_38; + _40 = deref_copy (*_37); + _41 = deref_copy (*_39); + StorageLive(_42); + _42 = (*_40); + StorageLive(_43); + _43 = (*_41); + _44 = Le(move _42, move _43); + StorageDead(_43); + StorageDead(_42); + StorageDead(_38); + StorageDead(_39); + StorageDead(_37); + _36 = move _44; + goto -> bb6; } bb6: { - StorageDead(_44); // scope 1 at $DIR/slice_filter.rs:+0:75: +0:76 - StorageDead(_35); // scope 1 at $DIR/slice_filter.rs:+0:75: +0:76 - _0 = move _36; // scope 1 at $DIR/slice_filter.rs:+0:40: +0:76 - goto -> bb8; // scope 1 at $DIR/slice_filter.rs:+0:40: +0:76 + StorageDead(_44); + StorageDead(_35); + _0 = move _36; + goto -> bb8; } bb7: { - _0 = const true; // scope 1 at $DIR/slice_filter.rs:+0:40: +0:76 - goto -> bb8; // scope 1 at $DIR/slice_filter.rs:+0:40: +0:76 + _0 = const true; + goto -> bb8; } bb8: { - StorageDead(_36); // scope 1 at $DIR/slice_filter.rs:+0:75: +0:76 - StorageDead(_27); // scope 1 at $DIR/slice_filter.rs:+0:75: +0:76 - StorageDead(_10); // scope 0 at $DIR/slice_filter.rs:+0:75: +0:76 - StorageDead(_8); // scope 0 at $DIR/slice_filter.rs:+0:75: +0:76 - StorageDead(_6); // scope 0 at $DIR/slice_filter.rs:+0:75: +0:76 - StorageDead(_4); // scope 0 at $DIR/slice_filter.rs:+0:75: +0:76 - return; // scope 0 at $DIR/slice_filter.rs:+0:76: +0:76 + StorageDead(_36); + StorageDead(_27); + StorageDead(_10); + StorageDead(_8); + StorageDead(_6); + StorageDead(_4); + return; } } diff --git a/tests/mir-opt/pre-codegen/slice_filter.variant_b-{closure#0}.PreCodegen.after.mir b/tests/mir-opt/pre-codegen/slice_filter.variant_b-{closure#0}.PreCodegen.after.mir index 9f5fe95a8b4b0..ef1036d5fafcd 100644 --- a/tests/mir-opt/pre-codegen/slice_filter.variant_b-{closure#0}.PreCodegen.after.mir +++ b/tests/mir-opt/pre-codegen/slice_filter.variant_b-{closure#0}.PreCodegen.after.mir @@ -1,92 +1,92 @@ // MIR for `variant_b::{closure#0}` after PreCodegen fn variant_b::{closure#0}(_1: &mut [closure@$DIR/slice_filter.rs:11:25: 11:41], _2: &&(usize, usize, usize, usize)) -> bool { - let mut _0: bool; // return place in scope 0 at $DIR/slice_filter.rs:+0:42: +0:42 - let mut _3: &(usize, usize, usize, usize); // in scope 0 at $DIR/slice_filter.rs:+0:26: +0:40 - let _4: usize; // in scope 0 at $DIR/slice_filter.rs:+0:29: +0:30 - let mut _5: &(usize, usize, usize, usize); // in scope 0 at $DIR/slice_filter.rs:+0:26: +0:40 - let _6: usize; // in scope 0 at $DIR/slice_filter.rs:+0:32: +0:33 - let mut _7: &(usize, usize, usize, usize); // in scope 0 at $DIR/slice_filter.rs:+0:26: +0:40 - let _8: usize; // in scope 0 at $DIR/slice_filter.rs:+0:35: +0:36 - let mut _9: &(usize, usize, usize, usize); // in scope 0 at $DIR/slice_filter.rs:+0:26: +0:40 - let _10: usize; // in scope 0 at $DIR/slice_filter.rs:+0:38: +0:39 - let mut _11: bool; // in scope 0 at $DIR/slice_filter.rs:+0:42: +0:48 - let mut _12: bool; // in scope 0 at $DIR/slice_filter.rs:+0:52: +0:58 - let mut _13: bool; // in scope 0 at $DIR/slice_filter.rs:+0:42: +0:58 - let mut _14: bool; // in scope 0 at $DIR/slice_filter.rs:+0:62: +0:68 - let mut _15: bool; // in scope 0 at $DIR/slice_filter.rs:+0:62: +0:78 - let mut _16: bool; // in scope 0 at $DIR/slice_filter.rs:+0:72: +0:78 + let mut _0: bool; + let mut _3: &(usize, usize, usize, usize); + let _4: usize; + let mut _5: &(usize, usize, usize, usize); + let _6: usize; + let mut _7: &(usize, usize, usize, usize); + let _8: usize; + let mut _9: &(usize, usize, usize, usize); + let _10: usize; + let mut _11: bool; + let mut _12: bool; + let mut _13: bool; + let mut _14: bool; + let mut _15: bool; + let mut _16: bool; scope 1 { - debug a => _4; // in scope 1 at $DIR/slice_filter.rs:+0:29: +0:30 - debug b => _6; // in scope 1 at $DIR/slice_filter.rs:+0:32: +0:33 - debug c => _8; // in scope 1 at $DIR/slice_filter.rs:+0:35: +0:36 - debug d => _10; // in scope 1 at $DIR/slice_filter.rs:+0:38: +0:39 + debug a => _4; + debug b => _6; + debug c => _8; + debug d => _10; } bb0: { - _3 = deref_copy (*_2); // scope 0 at $DIR/slice_filter.rs:+0:29: +0:30 - _4 = ((*_3).0: usize); // scope 0 at $DIR/slice_filter.rs:+0:29: +0:30 - _5 = deref_copy (*_2); // scope 0 at $DIR/slice_filter.rs:+0:32: +0:33 - _6 = ((*_5).1: usize); // scope 0 at $DIR/slice_filter.rs:+0:32: +0:33 - _7 = deref_copy (*_2); // scope 0 at $DIR/slice_filter.rs:+0:35: +0:36 - _8 = ((*_7).2: usize); // scope 0 at $DIR/slice_filter.rs:+0:35: +0:36 - _9 = deref_copy (*_2); // scope 0 at $DIR/slice_filter.rs:+0:38: +0:39 - _10 = ((*_9).3: usize); // scope 0 at $DIR/slice_filter.rs:+0:38: +0:39 - StorageLive(_13); // scope 1 at $DIR/slice_filter.rs:+0:42: +0:58 - StorageLive(_11); // scope 1 at $DIR/slice_filter.rs:+0:42: +0:48 - _11 = Le(_4, _8); // scope 1 at $DIR/slice_filter.rs:+0:42: +0:48 - switchInt(move _11) -> [0: bb1, otherwise: bb2]; // scope 1 at $DIR/slice_filter.rs:+0:42: +0:58 + _3 = deref_copy (*_2); + _4 = ((*_3).0: usize); + _5 = deref_copy (*_2); + _6 = ((*_5).1: usize); + _7 = deref_copy (*_2); + _8 = ((*_7).2: usize); + _9 = deref_copy (*_2); + _10 = ((*_9).3: usize); + StorageLive(_13); + StorageLive(_11); + _11 = Le(_4, _8); + switchInt(move _11) -> [0: bb1, otherwise: bb2]; } bb1: { - StorageDead(_12); // scope 1 at $DIR/slice_filter.rs:+0:57: +0:58 - StorageDead(_11); // scope 1 at $DIR/slice_filter.rs:+0:57: +0:58 - goto -> bb3; // scope 1 at $DIR/slice_filter.rs:+0:42: +0:58 + StorageDead(_12); + StorageDead(_11); + goto -> bb3; } bb2: { - StorageLive(_12); // scope 1 at $DIR/slice_filter.rs:+0:52: +0:58 - _12 = Le(_10, _6); // scope 1 at $DIR/slice_filter.rs:+0:52: +0:58 - _13 = move _12; // scope 1 at $DIR/slice_filter.rs:+0:42: +0:58 - StorageDead(_12); // scope 1 at $DIR/slice_filter.rs:+0:57: +0:58 - StorageDead(_11); // scope 1 at $DIR/slice_filter.rs:+0:57: +0:58 - switchInt(move _13) -> [0: bb3, otherwise: bb7]; // scope 1 at $DIR/slice_filter.rs:+0:42: +0:78 + StorageLive(_12); + _12 = Le(_10, _6); + _13 = move _12; + StorageDead(_12); + StorageDead(_11); + switchInt(move _13) -> [0: bb3, otherwise: bb7]; } bb3: { - StorageLive(_15); // scope 1 at $DIR/slice_filter.rs:+0:62: +0:78 - StorageLive(_14); // scope 1 at $DIR/slice_filter.rs:+0:62: +0:68 - _14 = Le(_8, _4); // scope 1 at $DIR/slice_filter.rs:+0:62: +0:68 - switchInt(move _14) -> [0: bb4, otherwise: bb5]; // scope 1 at $DIR/slice_filter.rs:+0:62: +0:78 + StorageLive(_15); + StorageLive(_14); + _14 = Le(_8, _4); + switchInt(move _14) -> [0: bb4, otherwise: bb5]; } bb4: { - _15 = const false; // scope 1 at $DIR/slice_filter.rs:+0:62: +0:78 - goto -> bb6; // scope 1 at $DIR/slice_filter.rs:+0:62: +0:78 + _15 = const false; + goto -> bb6; } bb5: { - StorageLive(_16); // scope 1 at $DIR/slice_filter.rs:+0:72: +0:78 - _16 = Le(_6, _10); // scope 1 at $DIR/slice_filter.rs:+0:72: +0:78 - _15 = move _16; // scope 1 at $DIR/slice_filter.rs:+0:62: +0:78 - goto -> bb6; // scope 1 at $DIR/slice_filter.rs:+0:62: +0:78 + StorageLive(_16); + _16 = Le(_6, _10); + _15 = move _16; + goto -> bb6; } bb6: { - StorageDead(_16); // scope 1 at $DIR/slice_filter.rs:+0:77: +0:78 - StorageDead(_14); // scope 1 at $DIR/slice_filter.rs:+0:77: +0:78 - _0 = move _15; // scope 1 at $DIR/slice_filter.rs:+0:42: +0:78 - goto -> bb8; // scope 1 at $DIR/slice_filter.rs:+0:42: +0:78 + StorageDead(_16); + StorageDead(_14); + _0 = move _15; + goto -> bb8; } bb7: { - _0 = const true; // scope 1 at $DIR/slice_filter.rs:+0:42: +0:78 - goto -> bb8; // scope 1 at $DIR/slice_filter.rs:+0:42: +0:78 + _0 = const true; + goto -> bb8; } bb8: { - StorageDead(_15); // scope 1 at $DIR/slice_filter.rs:+0:77: +0:78 - StorageDead(_13); // scope 1 at $DIR/slice_filter.rs:+0:77: +0:78 - return; // scope 0 at $DIR/slice_filter.rs:+0:78: +0:78 + StorageDead(_15); + StorageDead(_13); + return; } } diff --git a/tests/mir-opt/pre-codegen/slice_index.slice_get_mut_usize.PreCodegen.after.panic-abort.mir b/tests/mir-opt/pre-codegen/slice_index.slice_get_mut_usize.PreCodegen.after.panic-abort.mir index 0e2821ab5fc8a..65416d0905374 100644 --- a/tests/mir-opt/pre-codegen/slice_index.slice_get_mut_usize.PreCodegen.after.panic-abort.mir +++ b/tests/mir-opt/pre-codegen/slice_index.slice_get_mut_usize.PreCodegen.after.panic-abort.mir @@ -1,48 +1,48 @@ // MIR for `slice_get_mut_usize` after PreCodegen fn slice_get_mut_usize(_1: &mut [u32], _2: usize) -> Option<&mut u32> { - debug slice => _1; // in scope 0 at $DIR/slice_index.rs:+0:28: +0:33 - debug index => _2; // in scope 0 at $DIR/slice_index.rs:+0:47: +0:52 - let mut _0: std::option::Option<&mut u32>; // return place in scope 0 at $DIR/slice_index.rs:+0:64: +0:80 - scope 1 (inlined core::slice::::get_mut::) { // at $DIR/slice_index.rs:17:11: 17:25 - debug self => _1; // in scope 1 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - debug index => _2; // in scope 1 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - scope 2 (inlined >::get_mut) { // at $SRC_DIR/core/src/slice/mod.rs:LL:COL - debug self => _2; // in scope 2 at $SRC_DIR/core/src/slice/index.rs:LL:COL - debug slice => _1; // in scope 2 at $SRC_DIR/core/src/slice/index.rs:LL:COL - let mut _3: &[u32]; // in scope 2 at $SRC_DIR/core/src/slice/index.rs:LL:COL - let mut _4: usize; // in scope 2 at $SRC_DIR/core/src/slice/index.rs:LL:COL - let mut _5: bool; // in scope 2 at $SRC_DIR/core/src/slice/index.rs:LL:COL - let mut _6: *mut [u32]; // in scope 2 at $SRC_DIR/core/src/slice/index.rs:LL:COL - let mut _8: *mut u32; // in scope 2 at $SRC_DIR/core/src/slice/index.rs:LL:COL - let mut _9: &mut u32; // in scope 2 at $SRC_DIR/core/src/slice/index.rs:LL:COL + debug slice => _1; + debug index => _2; + let mut _0: std::option::Option<&mut u32>; + scope 1 (inlined core::slice::::get_mut::) { + debug self => _1; + debug index => _2; + scope 2 (inlined >::get_mut) { + debug self => _2; + debug slice => _1; + let mut _3: &[u32]; + let mut _4: usize; + let mut _5: bool; + let mut _6: *mut [u32]; + let mut _8: *mut u32; + let mut _9: &mut u32; scope 3 { - scope 4 (inlined >::get_unchecked_mut) { // at $SRC_DIR/core/src/slice/index.rs:LL:COL - debug self => _2; // in scope 4 at $SRC_DIR/core/src/slice/index.rs:LL:COL - debug slice => _6; // in scope 4 at $SRC_DIR/core/src/slice/index.rs:LL:COL - let mut _7: *mut u32; // in scope 4 at $SRC_DIR/core/src/slice/index.rs:LL:COL + scope 4 (inlined >::get_unchecked_mut) { + debug self => _2; + debug slice => _6; + let mut _7: *mut u32; scope 5 { - debug this => _2; // in scope 5 at $SRC_DIR/core/src/slice/index.rs:LL:COL + debug this => _2; scope 6 { - scope 7 (inlined >::get_unchecked_mut::runtime::) { // at $SRC_DIR/core/src/intrinsics.rs:LL:COL - debug this => _2; // in scope 7 at $SRC_DIR/core/src/intrinsics.rs:LL:COL - debug slice => _6; // in scope 7 at $SRC_DIR/core/src/intrinsics.rs:LL:COL - scope 8 (inlined ptr::mut_ptr::::len) { // at $SRC_DIR/core/src/slice/index.rs:LL:COL - debug self => _6; // in scope 8 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - let mut _10: *const [u32]; // in scope 8 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - scope 9 (inlined std::ptr::metadata::<[u32]>) { // at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - debug ptr => _10; // in scope 9 at $SRC_DIR/core/src/ptr/metadata.rs:LL:COL + scope 7 (inlined >::get_unchecked_mut::runtime::) { + debug this => _2; + debug slice => _6; + scope 8 (inlined ptr::mut_ptr::::len) { + debug self => _6; + let mut _10: *const [u32]; + scope 9 (inlined std::ptr::metadata::<[u32]>) { + debug ptr => _10; scope 10 { } } } } - scope 11 (inlined ptr::mut_ptr::::as_mut_ptr) { // at $SRC_DIR/core/src/slice/index.rs:LL:COL - debug self => _6; // in scope 11 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL + scope 11 (inlined ptr::mut_ptr::::as_mut_ptr) { + debug self => _6; } - scope 12 (inlined ptr::mut_ptr::::add) { // at $SRC_DIR/core/src/slice/index.rs:LL:COL - debug self => _7; // in scope 12 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - debug count => _2; // in scope 12 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL + scope 12 (inlined ptr::mut_ptr::::add) { + debug self => _7; + debug count => _2; scope 13 { } } @@ -54,46 +54,43 @@ fn slice_get_mut_usize(_1: &mut [u32], _2: usize) -> Option<&mut u32> { } bb0: { - StorageLive(_9); // scope 1 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - StorageLive(_5); // scope 2 at $SRC_DIR/core/src/slice/index.rs:LL:COL - StorageLive(_4); // scope 2 at $SRC_DIR/core/src/slice/index.rs:LL:COL - StorageLive(_3); // scope 2 at $SRC_DIR/core/src/slice/index.rs:LL:COL - _3 = &(*_1); // scope 2 at $SRC_DIR/core/src/slice/index.rs:LL:COL - _4 = Len((*_3)); // scope 2 at $SRC_DIR/core/src/slice/index.rs:LL:COL - StorageDead(_3); // scope 2 at $SRC_DIR/core/src/slice/index.rs:LL:COL - _5 = Lt(_2, move _4); // scope 2 at $SRC_DIR/core/src/slice/index.rs:LL:COL - StorageDead(_4); // scope 2 at $SRC_DIR/core/src/slice/index.rs:LL:COL - switchInt(move _5) -> [0: bb1, otherwise: bb2]; // scope 2 at $SRC_DIR/core/src/slice/index.rs:LL:COL + StorageLive(_9); + StorageLive(_5); + StorageLive(_4); + StorageLive(_3); + _3 = &(*_1); + _4 = Len((*_3)); + StorageDead(_3); + _5 = Lt(_2, move _4); + StorageDead(_4); + switchInt(move _5) -> [0: bb1, otherwise: bb2]; } bb1: { - _0 = const Option::<&mut u32>::None; // scope 2 at $SRC_DIR/core/src/slice/index.rs:LL:COL - // mir::Constant - // + span: no-location - // + literal: Const { ty: Option<&mut u32>, val: Value(Scalar(0x0000000000000000)) } - goto -> bb3; // scope 2 at $SRC_DIR/core/src/slice/index.rs:LL:COL + _0 = const Option::<&mut u32>::None; + goto -> bb3; } bb2: { - StorageLive(_8); // scope 3 at $SRC_DIR/core/src/slice/index.rs:LL:COL - StorageLive(_6); // scope 3 at $SRC_DIR/core/src/slice/index.rs:LL:COL - _6 = &raw mut (*_1); // scope 3 at $SRC_DIR/core/src/slice/index.rs:LL:COL - StorageLive(_10); // scope 3 at $SRC_DIR/core/src/slice/index.rs:LL:COL - StorageLive(_7); // scope 6 at $SRC_DIR/core/src/slice/index.rs:LL:COL - _7 = _6 as *mut u32 (PtrToPtr); // scope 11 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - _8 = Offset(_7, _2); // scope 13 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - StorageDead(_7); // scope 6 at $SRC_DIR/core/src/slice/index.rs:LL:COL - StorageDead(_10); // scope 3 at $SRC_DIR/core/src/slice/index.rs:LL:COL - StorageDead(_6); // scope 3 at $SRC_DIR/core/src/slice/index.rs:LL:COL - _9 = &mut (*_8); // scope 3 at $SRC_DIR/core/src/slice/index.rs:LL:COL - _0 = Option::<&mut u32>::Some(_9); // scope 3 at $SRC_DIR/core/src/slice/index.rs:LL:COL - StorageDead(_8); // scope 2 at $SRC_DIR/core/src/slice/index.rs:LL:COL - goto -> bb3; // scope 2 at $SRC_DIR/core/src/slice/index.rs:LL:COL + StorageLive(_8); + StorageLive(_6); + _6 = &raw mut (*_1); + StorageLive(_10); + StorageLive(_7); + _7 = _6 as *mut u32 (PtrToPtr); + _8 = Offset(_7, _2); + StorageDead(_7); + StorageDead(_10); + StorageDead(_6); + _9 = &mut (*_8); + _0 = Option::<&mut u32>::Some(_9); + StorageDead(_8); + goto -> bb3; } bb3: { - StorageDead(_5); // scope 2 at $SRC_DIR/core/src/slice/index.rs:LL:COL - StorageDead(_9); // scope 1 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - return; // scope 0 at $DIR/slice_index.rs:+2:2: +2:2 + StorageDead(_5); + StorageDead(_9); + return; } } diff --git a/tests/mir-opt/pre-codegen/slice_index.slice_get_mut_usize.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/pre-codegen/slice_index.slice_get_mut_usize.PreCodegen.after.panic-unwind.mir index 0e2821ab5fc8a..65416d0905374 100644 --- a/tests/mir-opt/pre-codegen/slice_index.slice_get_mut_usize.PreCodegen.after.panic-unwind.mir +++ b/tests/mir-opt/pre-codegen/slice_index.slice_get_mut_usize.PreCodegen.after.panic-unwind.mir @@ -1,48 +1,48 @@ // MIR for `slice_get_mut_usize` after PreCodegen fn slice_get_mut_usize(_1: &mut [u32], _2: usize) -> Option<&mut u32> { - debug slice => _1; // in scope 0 at $DIR/slice_index.rs:+0:28: +0:33 - debug index => _2; // in scope 0 at $DIR/slice_index.rs:+0:47: +0:52 - let mut _0: std::option::Option<&mut u32>; // return place in scope 0 at $DIR/slice_index.rs:+0:64: +0:80 - scope 1 (inlined core::slice::::get_mut::) { // at $DIR/slice_index.rs:17:11: 17:25 - debug self => _1; // in scope 1 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - debug index => _2; // in scope 1 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - scope 2 (inlined >::get_mut) { // at $SRC_DIR/core/src/slice/mod.rs:LL:COL - debug self => _2; // in scope 2 at $SRC_DIR/core/src/slice/index.rs:LL:COL - debug slice => _1; // in scope 2 at $SRC_DIR/core/src/slice/index.rs:LL:COL - let mut _3: &[u32]; // in scope 2 at $SRC_DIR/core/src/slice/index.rs:LL:COL - let mut _4: usize; // in scope 2 at $SRC_DIR/core/src/slice/index.rs:LL:COL - let mut _5: bool; // in scope 2 at $SRC_DIR/core/src/slice/index.rs:LL:COL - let mut _6: *mut [u32]; // in scope 2 at $SRC_DIR/core/src/slice/index.rs:LL:COL - let mut _8: *mut u32; // in scope 2 at $SRC_DIR/core/src/slice/index.rs:LL:COL - let mut _9: &mut u32; // in scope 2 at $SRC_DIR/core/src/slice/index.rs:LL:COL + debug slice => _1; + debug index => _2; + let mut _0: std::option::Option<&mut u32>; + scope 1 (inlined core::slice::::get_mut::) { + debug self => _1; + debug index => _2; + scope 2 (inlined >::get_mut) { + debug self => _2; + debug slice => _1; + let mut _3: &[u32]; + let mut _4: usize; + let mut _5: bool; + let mut _6: *mut [u32]; + let mut _8: *mut u32; + let mut _9: &mut u32; scope 3 { - scope 4 (inlined >::get_unchecked_mut) { // at $SRC_DIR/core/src/slice/index.rs:LL:COL - debug self => _2; // in scope 4 at $SRC_DIR/core/src/slice/index.rs:LL:COL - debug slice => _6; // in scope 4 at $SRC_DIR/core/src/slice/index.rs:LL:COL - let mut _7: *mut u32; // in scope 4 at $SRC_DIR/core/src/slice/index.rs:LL:COL + scope 4 (inlined >::get_unchecked_mut) { + debug self => _2; + debug slice => _6; + let mut _7: *mut u32; scope 5 { - debug this => _2; // in scope 5 at $SRC_DIR/core/src/slice/index.rs:LL:COL + debug this => _2; scope 6 { - scope 7 (inlined >::get_unchecked_mut::runtime::) { // at $SRC_DIR/core/src/intrinsics.rs:LL:COL - debug this => _2; // in scope 7 at $SRC_DIR/core/src/intrinsics.rs:LL:COL - debug slice => _6; // in scope 7 at $SRC_DIR/core/src/intrinsics.rs:LL:COL - scope 8 (inlined ptr::mut_ptr::::len) { // at $SRC_DIR/core/src/slice/index.rs:LL:COL - debug self => _6; // in scope 8 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - let mut _10: *const [u32]; // in scope 8 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - scope 9 (inlined std::ptr::metadata::<[u32]>) { // at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - debug ptr => _10; // in scope 9 at $SRC_DIR/core/src/ptr/metadata.rs:LL:COL + scope 7 (inlined >::get_unchecked_mut::runtime::) { + debug this => _2; + debug slice => _6; + scope 8 (inlined ptr::mut_ptr::::len) { + debug self => _6; + let mut _10: *const [u32]; + scope 9 (inlined std::ptr::metadata::<[u32]>) { + debug ptr => _10; scope 10 { } } } } - scope 11 (inlined ptr::mut_ptr::::as_mut_ptr) { // at $SRC_DIR/core/src/slice/index.rs:LL:COL - debug self => _6; // in scope 11 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL + scope 11 (inlined ptr::mut_ptr::::as_mut_ptr) { + debug self => _6; } - scope 12 (inlined ptr::mut_ptr::::add) { // at $SRC_DIR/core/src/slice/index.rs:LL:COL - debug self => _7; // in scope 12 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - debug count => _2; // in scope 12 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL + scope 12 (inlined ptr::mut_ptr::::add) { + debug self => _7; + debug count => _2; scope 13 { } } @@ -54,46 +54,43 @@ fn slice_get_mut_usize(_1: &mut [u32], _2: usize) -> Option<&mut u32> { } bb0: { - StorageLive(_9); // scope 1 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - StorageLive(_5); // scope 2 at $SRC_DIR/core/src/slice/index.rs:LL:COL - StorageLive(_4); // scope 2 at $SRC_DIR/core/src/slice/index.rs:LL:COL - StorageLive(_3); // scope 2 at $SRC_DIR/core/src/slice/index.rs:LL:COL - _3 = &(*_1); // scope 2 at $SRC_DIR/core/src/slice/index.rs:LL:COL - _4 = Len((*_3)); // scope 2 at $SRC_DIR/core/src/slice/index.rs:LL:COL - StorageDead(_3); // scope 2 at $SRC_DIR/core/src/slice/index.rs:LL:COL - _5 = Lt(_2, move _4); // scope 2 at $SRC_DIR/core/src/slice/index.rs:LL:COL - StorageDead(_4); // scope 2 at $SRC_DIR/core/src/slice/index.rs:LL:COL - switchInt(move _5) -> [0: bb1, otherwise: bb2]; // scope 2 at $SRC_DIR/core/src/slice/index.rs:LL:COL + StorageLive(_9); + StorageLive(_5); + StorageLive(_4); + StorageLive(_3); + _3 = &(*_1); + _4 = Len((*_3)); + StorageDead(_3); + _5 = Lt(_2, move _4); + StorageDead(_4); + switchInt(move _5) -> [0: bb1, otherwise: bb2]; } bb1: { - _0 = const Option::<&mut u32>::None; // scope 2 at $SRC_DIR/core/src/slice/index.rs:LL:COL - // mir::Constant - // + span: no-location - // + literal: Const { ty: Option<&mut u32>, val: Value(Scalar(0x0000000000000000)) } - goto -> bb3; // scope 2 at $SRC_DIR/core/src/slice/index.rs:LL:COL + _0 = const Option::<&mut u32>::None; + goto -> bb3; } bb2: { - StorageLive(_8); // scope 3 at $SRC_DIR/core/src/slice/index.rs:LL:COL - StorageLive(_6); // scope 3 at $SRC_DIR/core/src/slice/index.rs:LL:COL - _6 = &raw mut (*_1); // scope 3 at $SRC_DIR/core/src/slice/index.rs:LL:COL - StorageLive(_10); // scope 3 at $SRC_DIR/core/src/slice/index.rs:LL:COL - StorageLive(_7); // scope 6 at $SRC_DIR/core/src/slice/index.rs:LL:COL - _7 = _6 as *mut u32 (PtrToPtr); // scope 11 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - _8 = Offset(_7, _2); // scope 13 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - StorageDead(_7); // scope 6 at $SRC_DIR/core/src/slice/index.rs:LL:COL - StorageDead(_10); // scope 3 at $SRC_DIR/core/src/slice/index.rs:LL:COL - StorageDead(_6); // scope 3 at $SRC_DIR/core/src/slice/index.rs:LL:COL - _9 = &mut (*_8); // scope 3 at $SRC_DIR/core/src/slice/index.rs:LL:COL - _0 = Option::<&mut u32>::Some(_9); // scope 3 at $SRC_DIR/core/src/slice/index.rs:LL:COL - StorageDead(_8); // scope 2 at $SRC_DIR/core/src/slice/index.rs:LL:COL - goto -> bb3; // scope 2 at $SRC_DIR/core/src/slice/index.rs:LL:COL + StorageLive(_8); + StorageLive(_6); + _6 = &raw mut (*_1); + StorageLive(_10); + StorageLive(_7); + _7 = _6 as *mut u32 (PtrToPtr); + _8 = Offset(_7, _2); + StorageDead(_7); + StorageDead(_10); + StorageDead(_6); + _9 = &mut (*_8); + _0 = Option::<&mut u32>::Some(_9); + StorageDead(_8); + goto -> bb3; } bb3: { - StorageDead(_5); // scope 2 at $SRC_DIR/core/src/slice/index.rs:LL:COL - StorageDead(_9); // scope 1 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - return; // scope 0 at $DIR/slice_index.rs:+2:2: +2:2 + StorageDead(_5); + StorageDead(_9); + return; } } diff --git a/tests/mir-opt/pre-codegen/slice_index.slice_get_unchecked_mut_range.PreCodegen.after.panic-abort.mir b/tests/mir-opt/pre-codegen/slice_index.slice_get_unchecked_mut_range.PreCodegen.after.panic-abort.mir index 646d88ded5211..79282d88905b2 100644 --- a/tests/mir-opt/pre-codegen/slice_index.slice_get_unchecked_mut_range.PreCodegen.after.panic-abort.mir +++ b/tests/mir-opt/pre-codegen/slice_index.slice_get_unchecked_mut_range.PreCodegen.after.panic-abort.mir @@ -1,66 +1,66 @@ // MIR for `slice_get_unchecked_mut_range` after PreCodegen fn slice_get_unchecked_mut_range(_1: &mut [u32], _2: std::ops::Range) -> &mut [u32] { - debug slice => _1; // in scope 0 at $DIR/slice_index.rs:+0:45: +0:50 - debug index => _2; // in scope 0 at $DIR/slice_index.rs:+0:64: +0:69 - let mut _0: &mut [u32]; // return place in scope 0 at $DIR/slice_index.rs:+0:88: +0:98 - let mut _3: usize; // in scope 0 at $DIR/slice_index.rs:+1:29: +1:34 - let mut _4: usize; // in scope 0 at $DIR/slice_index.rs:+1:29: +1:34 - scope 1 (inlined core::slice::::get_unchecked_mut::>) { // at $DIR/slice_index.rs:27:11: 27:35 - debug self => _1; // in scope 1 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - debug index => std::ops::Range{ .0 => _3, .1 => _4, }; // in scope 1 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - let mut _5: *mut [u32]; // in scope 1 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - let mut _14: *mut [u32]; // in scope 1 at $SRC_DIR/core/src/slice/mod.rs:LL:COL + debug slice => _1; + debug index => _2; + let mut _0: &mut [u32]; + let mut _3: usize; + let mut _4: usize; + scope 1 (inlined core::slice::::get_unchecked_mut::>) { + debug self => _1; + debug index => std::ops::Range{ .0 => _3, .1 => _4, }; + let mut _5: *mut [u32]; + let mut _14: *mut [u32]; scope 2 { - scope 3 (inlined as SliceIndex<[u32]>>::get_unchecked_mut) { // at $SRC_DIR/core/src/slice/mod.rs:LL:COL - debug self => std::ops::Range{ .0 => _3, .1 => _4, }; // in scope 3 at $SRC_DIR/core/src/slice/index.rs:LL:COL - debug slice => _5; // in scope 3 at $SRC_DIR/core/src/slice/index.rs:LL:COL - let mut _7: *mut u32; // in scope 3 at $SRC_DIR/core/src/slice/index.rs:LL:COL - let mut _8: *mut u32; // in scope 3 at $SRC_DIR/core/src/slice/index.rs:LL:COL - let mut _9: usize; // in scope 3 at $SRC_DIR/core/src/slice/index.rs:LL:COL - let _16: usize; // in scope 3 at $SRC_DIR/core/src/slice/index.rs:LL:COL - let _17: usize; // in scope 3 at $SRC_DIR/core/src/slice/index.rs:LL:COL + scope 3 (inlined as SliceIndex<[u32]>>::get_unchecked_mut) { + debug self => std::ops::Range{ .0 => _3, .1 => _4, }; + debug slice => _5; + let mut _7: *mut u32; + let mut _8: *mut u32; + let mut _9: usize; + let _16: usize; + let _17: usize; scope 4 { - debug this => std::ops::Range{ .0 => _16, .1 => _17, }; // in scope 4 at $SRC_DIR/core/src/slice/index.rs:LL:COL + debug this => std::ops::Range{ .0 => _16, .1 => _17, }; scope 5 { - let _6: usize; // in scope 5 at $SRC_DIR/core/src/slice/index.rs:LL:COL + let _6: usize; scope 6 { - debug new_len => _6; // in scope 6 at $SRC_DIR/core/src/slice/index.rs:LL:COL - scope 11 (inlined ptr::mut_ptr::::as_mut_ptr) { // at $SRC_DIR/core/src/slice/index.rs:LL:COL - debug self => _5; // in scope 11 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL + debug new_len => _6; + scope 11 (inlined ptr::mut_ptr::::as_mut_ptr) { + debug self => _5; } - scope 12 (inlined ptr::mut_ptr::::add) { // at $SRC_DIR/core/src/slice/index.rs:LL:COL - debug self => _7; // in scope 12 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - debug count => _3; // in scope 12 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL + scope 12 (inlined ptr::mut_ptr::::add) { + debug self => _7; + debug count => _3; scope 13 { } } - scope 14 (inlined slice_from_raw_parts_mut::) { // at $SRC_DIR/core/src/slice/index.rs:LL:COL - debug data => _8; // in scope 14 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL - debug len => _9; // in scope 14 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL - let mut _10: *mut (); // in scope 14 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL - scope 15 (inlined ptr::mut_ptr::::cast::<()>) { // at $SRC_DIR/core/src/ptr/mod.rs:LL:COL - debug self => _8; // in scope 15 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL + scope 14 (inlined slice_from_raw_parts_mut::) { + debug data => _8; + debug len => _9; + let mut _10: *mut (); + scope 15 (inlined ptr::mut_ptr::::cast::<()>) { + debug self => _8; } - scope 16 (inlined std::ptr::from_raw_parts_mut::<[u32]>) { // at $SRC_DIR/core/src/ptr/mod.rs:LL:COL - debug data_address => _10; // in scope 16 at $SRC_DIR/core/src/ptr/metadata.rs:LL:COL - debug metadata => _9; // in scope 16 at $SRC_DIR/core/src/ptr/metadata.rs:LL:COL - let mut _11: *const (); // in scope 16 at $SRC_DIR/core/src/ptr/metadata.rs:LL:COL - let mut _12: std::ptr::metadata::PtrComponents<[u32]>; // in scope 16 at $SRC_DIR/core/src/ptr/metadata.rs:LL:COL - let mut _13: std::ptr::metadata::PtrRepr<[u32]>; // in scope 16 at $SRC_DIR/core/src/ptr/metadata.rs:LL:COL + scope 16 (inlined std::ptr::from_raw_parts_mut::<[u32]>) { + debug data_address => _10; + debug metadata => _9; + let mut _11: *const (); + let mut _12: std::ptr::metadata::PtrComponents<[u32]>; + let mut _13: std::ptr::metadata::PtrRepr<[u32]>; scope 17 { } } } } - scope 7 (inlined as SliceIndex<[T]>>::get_unchecked_mut::runtime::) { // at $SRC_DIR/core/src/intrinsics.rs:LL:COL - debug this => std::ops::Range{ .0 => _16, .1 => _17, }; // in scope 7 at $SRC_DIR/core/src/intrinsics.rs:LL:COL - debug slice => _5; // in scope 7 at $SRC_DIR/core/src/intrinsics.rs:LL:COL - scope 8 (inlined ptr::mut_ptr::::len) { // at $SRC_DIR/core/src/slice/index.rs:LL:COL - debug self => _5; // in scope 8 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - let mut _15: *const [u32]; // in scope 8 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - scope 9 (inlined std::ptr::metadata::<[u32]>) { // at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - debug ptr => _15; // in scope 9 at $SRC_DIR/core/src/ptr/metadata.rs:LL:COL + scope 7 (inlined as SliceIndex<[T]>>::get_unchecked_mut::runtime::) { + debug this => std::ops::Range{ .0 => _16, .1 => _17, }; + debug slice => _5; + scope 8 (inlined ptr::mut_ptr::::len) { + debug self => _5; + let mut _15: *const [u32]; + scope 9 (inlined std::ptr::metadata::<[u32]>) { + debug ptr => _15; scope 10 { } } @@ -73,51 +73,48 @@ fn slice_get_unchecked_mut_range(_1: &mut [u32], _2: std::ops::Range) -> } bb0: { - _3 = move (_2.0: usize); // scope 0 at $DIR/slice_index.rs:+1:29: +1:34 - _4 = move (_2.1: usize); // scope 0 at $DIR/slice_index.rs:+1:29: +1:34 - StorageLive(_14); // scope 2 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - StorageLive(_5); // scope 2 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - _5 = &raw mut (*_1); // scope 2 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - StorageLive(_15); // scope 2 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - StorageLive(_16); // scope 2 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - StorageLive(_17); // scope 2 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - StorageLive(_6); // scope 5 at $SRC_DIR/core/src/slice/index.rs:LL:COL - _6 = unchecked_sub::(_4, _3) -> [return: bb1, unwind unreachable]; // scope 5 at $SRC_DIR/core/src/slice/index.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/core/src/slice/index.rs:LL:COL - // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(usize, usize) -> usize {unchecked_sub::}, val: Value() } + _3 = move (_2.0: usize); + _4 = move (_2.1: usize); + StorageLive(_14); + StorageLive(_5); + _5 = &raw mut (*_1); + StorageLive(_15); + StorageLive(_16); + StorageLive(_17); + StorageLive(_6); + _6 = unchecked_sub::(_4, _3) -> [return: bb1, unwind unreachable]; } bb1: { - StorageLive(_8); // scope 6 at $SRC_DIR/core/src/slice/index.rs:LL:COL - StorageLive(_7); // scope 6 at $SRC_DIR/core/src/slice/index.rs:LL:COL - _7 = _5 as *mut u32 (PtrToPtr); // scope 11 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - _8 = Offset(_7, _3); // scope 13 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - StorageDead(_7); // scope 6 at $SRC_DIR/core/src/slice/index.rs:LL:COL - StorageLive(_9); // scope 6 at $SRC_DIR/core/src/slice/index.rs:LL:COL - _9 = _6; // scope 6 at $SRC_DIR/core/src/slice/index.rs:LL:COL - StorageLive(_10); // scope 14 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL - _10 = _8 as *mut () (PtrToPtr); // scope 15 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - StorageLive(_13); // scope 17 at $SRC_DIR/core/src/ptr/metadata.rs:LL:COL - StorageLive(_12); // scope 17 at $SRC_DIR/core/src/ptr/metadata.rs:LL:COL - StorageLive(_11); // scope 17 at $SRC_DIR/core/src/ptr/metadata.rs:LL:COL - _11 = _10 as *const () (Pointer(MutToConstPointer)); // scope 17 at $SRC_DIR/core/src/ptr/metadata.rs:LL:COL - _12 = ptr::metadata::PtrComponents::<[u32]> { data_address: move _11, metadata: _9 }; // scope 17 at $SRC_DIR/core/src/ptr/metadata.rs:LL:COL - StorageDead(_11); // scope 17 at $SRC_DIR/core/src/ptr/metadata.rs:LL:COL - _13 = ptr::metadata::PtrRepr::<[u32]> { const_ptr: move _12 }; // scope 17 at $SRC_DIR/core/src/ptr/metadata.rs:LL:COL - StorageDead(_12); // scope 17 at $SRC_DIR/core/src/ptr/metadata.rs:LL:COL - _14 = (_13.1: *mut [u32]); // scope 17 at $SRC_DIR/core/src/ptr/metadata.rs:LL:COL - StorageDead(_13); // scope 16 at $SRC_DIR/core/src/ptr/metadata.rs:LL:COL - StorageDead(_10); // scope 14 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL - StorageDead(_9); // scope 6 at $SRC_DIR/core/src/slice/index.rs:LL:COL - StorageDead(_8); // scope 6 at $SRC_DIR/core/src/slice/index.rs:LL:COL - StorageDead(_6); // scope 5 at $SRC_DIR/core/src/slice/index.rs:LL:COL - StorageDead(_17); // scope 2 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - StorageDead(_16); // scope 2 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - StorageDead(_15); // scope 2 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - StorageDead(_5); // scope 2 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - _0 = &mut (*_14); // scope 2 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - StorageDead(_14); // scope 1 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - return; // scope 0 at $DIR/slice_index.rs:+2:2: +2:2 + StorageLive(_8); + StorageLive(_7); + _7 = _5 as *mut u32 (PtrToPtr); + _8 = Offset(_7, _3); + StorageDead(_7); + StorageLive(_9); + _9 = _6; + StorageLive(_10); + _10 = _8 as *mut () (PtrToPtr); + StorageLive(_13); + StorageLive(_12); + StorageLive(_11); + _11 = _10 as *const () (Pointer(MutToConstPointer)); + _12 = ptr::metadata::PtrComponents::<[u32]> { data_address: move _11, metadata: _9 }; + StorageDead(_11); + _13 = ptr::metadata::PtrRepr::<[u32]> { const_ptr: move _12 }; + StorageDead(_12); + _14 = (_13.1: *mut [u32]); + StorageDead(_13); + StorageDead(_10); + StorageDead(_9); + StorageDead(_8); + StorageDead(_6); + StorageDead(_17); + StorageDead(_16); + StorageDead(_15); + StorageDead(_5); + _0 = &mut (*_14); + StorageDead(_14); + return; } } diff --git a/tests/mir-opt/pre-codegen/slice_index.slice_get_unchecked_mut_range.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/pre-codegen/slice_index.slice_get_unchecked_mut_range.PreCodegen.after.panic-unwind.mir index 646d88ded5211..79282d88905b2 100644 --- a/tests/mir-opt/pre-codegen/slice_index.slice_get_unchecked_mut_range.PreCodegen.after.panic-unwind.mir +++ b/tests/mir-opt/pre-codegen/slice_index.slice_get_unchecked_mut_range.PreCodegen.after.panic-unwind.mir @@ -1,66 +1,66 @@ // MIR for `slice_get_unchecked_mut_range` after PreCodegen fn slice_get_unchecked_mut_range(_1: &mut [u32], _2: std::ops::Range) -> &mut [u32] { - debug slice => _1; // in scope 0 at $DIR/slice_index.rs:+0:45: +0:50 - debug index => _2; // in scope 0 at $DIR/slice_index.rs:+0:64: +0:69 - let mut _0: &mut [u32]; // return place in scope 0 at $DIR/slice_index.rs:+0:88: +0:98 - let mut _3: usize; // in scope 0 at $DIR/slice_index.rs:+1:29: +1:34 - let mut _4: usize; // in scope 0 at $DIR/slice_index.rs:+1:29: +1:34 - scope 1 (inlined core::slice::::get_unchecked_mut::>) { // at $DIR/slice_index.rs:27:11: 27:35 - debug self => _1; // in scope 1 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - debug index => std::ops::Range{ .0 => _3, .1 => _4, }; // in scope 1 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - let mut _5: *mut [u32]; // in scope 1 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - let mut _14: *mut [u32]; // in scope 1 at $SRC_DIR/core/src/slice/mod.rs:LL:COL + debug slice => _1; + debug index => _2; + let mut _0: &mut [u32]; + let mut _3: usize; + let mut _4: usize; + scope 1 (inlined core::slice::::get_unchecked_mut::>) { + debug self => _1; + debug index => std::ops::Range{ .0 => _3, .1 => _4, }; + let mut _5: *mut [u32]; + let mut _14: *mut [u32]; scope 2 { - scope 3 (inlined as SliceIndex<[u32]>>::get_unchecked_mut) { // at $SRC_DIR/core/src/slice/mod.rs:LL:COL - debug self => std::ops::Range{ .0 => _3, .1 => _4, }; // in scope 3 at $SRC_DIR/core/src/slice/index.rs:LL:COL - debug slice => _5; // in scope 3 at $SRC_DIR/core/src/slice/index.rs:LL:COL - let mut _7: *mut u32; // in scope 3 at $SRC_DIR/core/src/slice/index.rs:LL:COL - let mut _8: *mut u32; // in scope 3 at $SRC_DIR/core/src/slice/index.rs:LL:COL - let mut _9: usize; // in scope 3 at $SRC_DIR/core/src/slice/index.rs:LL:COL - let _16: usize; // in scope 3 at $SRC_DIR/core/src/slice/index.rs:LL:COL - let _17: usize; // in scope 3 at $SRC_DIR/core/src/slice/index.rs:LL:COL + scope 3 (inlined as SliceIndex<[u32]>>::get_unchecked_mut) { + debug self => std::ops::Range{ .0 => _3, .1 => _4, }; + debug slice => _5; + let mut _7: *mut u32; + let mut _8: *mut u32; + let mut _9: usize; + let _16: usize; + let _17: usize; scope 4 { - debug this => std::ops::Range{ .0 => _16, .1 => _17, }; // in scope 4 at $SRC_DIR/core/src/slice/index.rs:LL:COL + debug this => std::ops::Range{ .0 => _16, .1 => _17, }; scope 5 { - let _6: usize; // in scope 5 at $SRC_DIR/core/src/slice/index.rs:LL:COL + let _6: usize; scope 6 { - debug new_len => _6; // in scope 6 at $SRC_DIR/core/src/slice/index.rs:LL:COL - scope 11 (inlined ptr::mut_ptr::::as_mut_ptr) { // at $SRC_DIR/core/src/slice/index.rs:LL:COL - debug self => _5; // in scope 11 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL + debug new_len => _6; + scope 11 (inlined ptr::mut_ptr::::as_mut_ptr) { + debug self => _5; } - scope 12 (inlined ptr::mut_ptr::::add) { // at $SRC_DIR/core/src/slice/index.rs:LL:COL - debug self => _7; // in scope 12 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - debug count => _3; // in scope 12 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL + scope 12 (inlined ptr::mut_ptr::::add) { + debug self => _7; + debug count => _3; scope 13 { } } - scope 14 (inlined slice_from_raw_parts_mut::) { // at $SRC_DIR/core/src/slice/index.rs:LL:COL - debug data => _8; // in scope 14 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL - debug len => _9; // in scope 14 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL - let mut _10: *mut (); // in scope 14 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL - scope 15 (inlined ptr::mut_ptr::::cast::<()>) { // at $SRC_DIR/core/src/ptr/mod.rs:LL:COL - debug self => _8; // in scope 15 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL + scope 14 (inlined slice_from_raw_parts_mut::) { + debug data => _8; + debug len => _9; + let mut _10: *mut (); + scope 15 (inlined ptr::mut_ptr::::cast::<()>) { + debug self => _8; } - scope 16 (inlined std::ptr::from_raw_parts_mut::<[u32]>) { // at $SRC_DIR/core/src/ptr/mod.rs:LL:COL - debug data_address => _10; // in scope 16 at $SRC_DIR/core/src/ptr/metadata.rs:LL:COL - debug metadata => _9; // in scope 16 at $SRC_DIR/core/src/ptr/metadata.rs:LL:COL - let mut _11: *const (); // in scope 16 at $SRC_DIR/core/src/ptr/metadata.rs:LL:COL - let mut _12: std::ptr::metadata::PtrComponents<[u32]>; // in scope 16 at $SRC_DIR/core/src/ptr/metadata.rs:LL:COL - let mut _13: std::ptr::metadata::PtrRepr<[u32]>; // in scope 16 at $SRC_DIR/core/src/ptr/metadata.rs:LL:COL + scope 16 (inlined std::ptr::from_raw_parts_mut::<[u32]>) { + debug data_address => _10; + debug metadata => _9; + let mut _11: *const (); + let mut _12: std::ptr::metadata::PtrComponents<[u32]>; + let mut _13: std::ptr::metadata::PtrRepr<[u32]>; scope 17 { } } } } - scope 7 (inlined as SliceIndex<[T]>>::get_unchecked_mut::runtime::) { // at $SRC_DIR/core/src/intrinsics.rs:LL:COL - debug this => std::ops::Range{ .0 => _16, .1 => _17, }; // in scope 7 at $SRC_DIR/core/src/intrinsics.rs:LL:COL - debug slice => _5; // in scope 7 at $SRC_DIR/core/src/intrinsics.rs:LL:COL - scope 8 (inlined ptr::mut_ptr::::len) { // at $SRC_DIR/core/src/slice/index.rs:LL:COL - debug self => _5; // in scope 8 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - let mut _15: *const [u32]; // in scope 8 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - scope 9 (inlined std::ptr::metadata::<[u32]>) { // at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - debug ptr => _15; // in scope 9 at $SRC_DIR/core/src/ptr/metadata.rs:LL:COL + scope 7 (inlined as SliceIndex<[T]>>::get_unchecked_mut::runtime::) { + debug this => std::ops::Range{ .0 => _16, .1 => _17, }; + debug slice => _5; + scope 8 (inlined ptr::mut_ptr::::len) { + debug self => _5; + let mut _15: *const [u32]; + scope 9 (inlined std::ptr::metadata::<[u32]>) { + debug ptr => _15; scope 10 { } } @@ -73,51 +73,48 @@ fn slice_get_unchecked_mut_range(_1: &mut [u32], _2: std::ops::Range) -> } bb0: { - _3 = move (_2.0: usize); // scope 0 at $DIR/slice_index.rs:+1:29: +1:34 - _4 = move (_2.1: usize); // scope 0 at $DIR/slice_index.rs:+1:29: +1:34 - StorageLive(_14); // scope 2 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - StorageLive(_5); // scope 2 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - _5 = &raw mut (*_1); // scope 2 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - StorageLive(_15); // scope 2 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - StorageLive(_16); // scope 2 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - StorageLive(_17); // scope 2 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - StorageLive(_6); // scope 5 at $SRC_DIR/core/src/slice/index.rs:LL:COL - _6 = unchecked_sub::(_4, _3) -> [return: bb1, unwind unreachable]; // scope 5 at $SRC_DIR/core/src/slice/index.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/core/src/slice/index.rs:LL:COL - // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(usize, usize) -> usize {unchecked_sub::}, val: Value() } + _3 = move (_2.0: usize); + _4 = move (_2.1: usize); + StorageLive(_14); + StorageLive(_5); + _5 = &raw mut (*_1); + StorageLive(_15); + StorageLive(_16); + StorageLive(_17); + StorageLive(_6); + _6 = unchecked_sub::(_4, _3) -> [return: bb1, unwind unreachable]; } bb1: { - StorageLive(_8); // scope 6 at $SRC_DIR/core/src/slice/index.rs:LL:COL - StorageLive(_7); // scope 6 at $SRC_DIR/core/src/slice/index.rs:LL:COL - _7 = _5 as *mut u32 (PtrToPtr); // scope 11 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - _8 = Offset(_7, _3); // scope 13 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - StorageDead(_7); // scope 6 at $SRC_DIR/core/src/slice/index.rs:LL:COL - StorageLive(_9); // scope 6 at $SRC_DIR/core/src/slice/index.rs:LL:COL - _9 = _6; // scope 6 at $SRC_DIR/core/src/slice/index.rs:LL:COL - StorageLive(_10); // scope 14 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL - _10 = _8 as *mut () (PtrToPtr); // scope 15 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - StorageLive(_13); // scope 17 at $SRC_DIR/core/src/ptr/metadata.rs:LL:COL - StorageLive(_12); // scope 17 at $SRC_DIR/core/src/ptr/metadata.rs:LL:COL - StorageLive(_11); // scope 17 at $SRC_DIR/core/src/ptr/metadata.rs:LL:COL - _11 = _10 as *const () (Pointer(MutToConstPointer)); // scope 17 at $SRC_DIR/core/src/ptr/metadata.rs:LL:COL - _12 = ptr::metadata::PtrComponents::<[u32]> { data_address: move _11, metadata: _9 }; // scope 17 at $SRC_DIR/core/src/ptr/metadata.rs:LL:COL - StorageDead(_11); // scope 17 at $SRC_DIR/core/src/ptr/metadata.rs:LL:COL - _13 = ptr::metadata::PtrRepr::<[u32]> { const_ptr: move _12 }; // scope 17 at $SRC_DIR/core/src/ptr/metadata.rs:LL:COL - StorageDead(_12); // scope 17 at $SRC_DIR/core/src/ptr/metadata.rs:LL:COL - _14 = (_13.1: *mut [u32]); // scope 17 at $SRC_DIR/core/src/ptr/metadata.rs:LL:COL - StorageDead(_13); // scope 16 at $SRC_DIR/core/src/ptr/metadata.rs:LL:COL - StorageDead(_10); // scope 14 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL - StorageDead(_9); // scope 6 at $SRC_DIR/core/src/slice/index.rs:LL:COL - StorageDead(_8); // scope 6 at $SRC_DIR/core/src/slice/index.rs:LL:COL - StorageDead(_6); // scope 5 at $SRC_DIR/core/src/slice/index.rs:LL:COL - StorageDead(_17); // scope 2 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - StorageDead(_16); // scope 2 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - StorageDead(_15); // scope 2 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - StorageDead(_5); // scope 2 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - _0 = &mut (*_14); // scope 2 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - StorageDead(_14); // scope 1 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - return; // scope 0 at $DIR/slice_index.rs:+2:2: +2:2 + StorageLive(_8); + StorageLive(_7); + _7 = _5 as *mut u32 (PtrToPtr); + _8 = Offset(_7, _3); + StorageDead(_7); + StorageLive(_9); + _9 = _6; + StorageLive(_10); + _10 = _8 as *mut () (PtrToPtr); + StorageLive(_13); + StorageLive(_12); + StorageLive(_11); + _11 = _10 as *const () (Pointer(MutToConstPointer)); + _12 = ptr::metadata::PtrComponents::<[u32]> { data_address: move _11, metadata: _9 }; + StorageDead(_11); + _13 = ptr::metadata::PtrRepr::<[u32]> { const_ptr: move _12 }; + StorageDead(_12); + _14 = (_13.1: *mut [u32]); + StorageDead(_13); + StorageDead(_10); + StorageDead(_9); + StorageDead(_8); + StorageDead(_6); + StorageDead(_17); + StorageDead(_16); + StorageDead(_15); + StorageDead(_5); + _0 = &mut (*_14); + StorageDead(_14); + return; } } diff --git a/tests/mir-opt/pre-codegen/slice_index.slice_index_range.PreCodegen.after.panic-abort.mir b/tests/mir-opt/pre-codegen/slice_index.slice_index_range.PreCodegen.after.panic-abort.mir index 4739693d2597f..aff718566ae13 100644 --- a/tests/mir-opt/pre-codegen/slice_index.slice_index_range.PreCodegen.after.panic-abort.mir +++ b/tests/mir-opt/pre-codegen/slice_index.slice_index_range.PreCodegen.after.panic-abort.mir @@ -1,26 +1,23 @@ // MIR for `slice_index_range` after PreCodegen fn slice_index_range(_1: &[u32], _2: std::ops::Range) -> &[u32] { - debug slice => _1; // in scope 0 at $DIR/slice_index.rs:+0:26: +0:31 - debug index => _2; // in scope 0 at $DIR/slice_index.rs:+0:41: +0:46 - let mut _0: &[u32]; // return place in scope 0 at $DIR/slice_index.rs:+0:65: +0:71 - scope 1 (inlined #[track_caller] core::slice::index::> for [u32]>::index) { // at $DIR/slice_index.rs:22:6: 22:18 - debug self => _1; // in scope 1 at $SRC_DIR/core/src/slice/index.rs:LL:COL - debug index => _2; // in scope 1 at $SRC_DIR/core/src/slice/index.rs:LL:COL - let _3: &[u32]; // in scope 1 at $SRC_DIR/core/src/slice/index.rs:LL:COL + debug slice => _1; + debug index => _2; + let mut _0: &[u32]; + scope 1 (inlined #[track_caller] core::slice::index::> for [u32]>::index) { + debug self => _1; + debug index => _2; + let _3: &[u32]; } bb0: { - StorageLive(_3); // scope 1 at $SRC_DIR/core/src/slice/index.rs:LL:COL - _3 = as SliceIndex<[u32]>>::index(move _2, _1) -> [return: bb1, unwind unreachable]; // scope 1 at $SRC_DIR/core/src/slice/index.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/core/src/slice/index.rs:LL:COL - // + literal: Const { ty: for<'a> fn(std::ops::Range, &'a [u32]) -> &'a as SliceIndex<[u32]>>::Output { as SliceIndex<[u32]>>::index}, val: Value() } + StorageLive(_3); + _3 = as SliceIndex<[u32]>>::index(move _2, _1) -> [return: bb1, unwind unreachable]; } bb1: { - _0 = _3; // scope 1 at $SRC_DIR/core/src/slice/index.rs:LL:COL - StorageDead(_3); // scope 1 at $SRC_DIR/core/src/slice/index.rs:LL:COL - return; // scope 0 at $DIR/slice_index.rs:+2:2: +2:2 + _0 = _3; + StorageDead(_3); + return; } } diff --git a/tests/mir-opt/pre-codegen/slice_index.slice_index_range.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/pre-codegen/slice_index.slice_index_range.PreCodegen.after.panic-unwind.mir index 3136282c82781..9f7fca639f75d 100644 --- a/tests/mir-opt/pre-codegen/slice_index.slice_index_range.PreCodegen.after.panic-unwind.mir +++ b/tests/mir-opt/pre-codegen/slice_index.slice_index_range.PreCodegen.after.panic-unwind.mir @@ -1,26 +1,23 @@ // MIR for `slice_index_range` after PreCodegen fn slice_index_range(_1: &[u32], _2: std::ops::Range) -> &[u32] { - debug slice => _1; // in scope 0 at $DIR/slice_index.rs:+0:26: +0:31 - debug index => _2; // in scope 0 at $DIR/slice_index.rs:+0:41: +0:46 - let mut _0: &[u32]; // return place in scope 0 at $DIR/slice_index.rs:+0:65: +0:71 - scope 1 (inlined #[track_caller] core::slice::index::> for [u32]>::index) { // at $DIR/slice_index.rs:22:6: 22:18 - debug self => _1; // in scope 1 at $SRC_DIR/core/src/slice/index.rs:LL:COL - debug index => _2; // in scope 1 at $SRC_DIR/core/src/slice/index.rs:LL:COL - let _3: &[u32]; // in scope 1 at $SRC_DIR/core/src/slice/index.rs:LL:COL + debug slice => _1; + debug index => _2; + let mut _0: &[u32]; + scope 1 (inlined #[track_caller] core::slice::index::> for [u32]>::index) { + debug self => _1; + debug index => _2; + let _3: &[u32]; } bb0: { - StorageLive(_3); // scope 1 at $SRC_DIR/core/src/slice/index.rs:LL:COL - _3 = as SliceIndex<[u32]>>::index(move _2, _1) -> bb1; // scope 1 at $SRC_DIR/core/src/slice/index.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/core/src/slice/index.rs:LL:COL - // + literal: Const { ty: for<'a> fn(std::ops::Range, &'a [u32]) -> &'a as SliceIndex<[u32]>>::Output { as SliceIndex<[u32]>>::index}, val: Value() } + StorageLive(_3); + _3 = as SliceIndex<[u32]>>::index(move _2, _1) -> bb1; } bb1: { - _0 = _3; // scope 1 at $SRC_DIR/core/src/slice/index.rs:LL:COL - StorageDead(_3); // scope 1 at $SRC_DIR/core/src/slice/index.rs:LL:COL - return; // scope 0 at $DIR/slice_index.rs:+2:2: +2:2 + _0 = _3; + StorageDead(_3); + return; } } diff --git a/tests/mir-opt/pre-codegen/slice_index.slice_index_usize.PreCodegen.after.panic-abort.mir b/tests/mir-opt/pre-codegen/slice_index.slice_index_usize.PreCodegen.after.panic-abort.mir index d3a64d5feb530..210f9d6a12403 100644 --- a/tests/mir-opt/pre-codegen/slice_index.slice_index_usize.PreCodegen.after.panic-abort.mir +++ b/tests/mir-opt/pre-codegen/slice_index.slice_index_usize.PreCodegen.after.panic-abort.mir @@ -1,20 +1,20 @@ // MIR for `slice_index_usize` after PreCodegen fn slice_index_usize(_1: &[u32], _2: usize) -> u32 { - debug slice => _1; // in scope 0 at $DIR/slice_index.rs:+0:26: +0:31 - debug index => _2; // in scope 0 at $DIR/slice_index.rs:+0:41: +0:46 - let mut _0: u32; // return place in scope 0 at $DIR/slice_index.rs:+0:58: +0:61 - let mut _3: usize; // in scope 0 at $DIR/slice_index.rs:+1:5: +1:17 - let mut _4: bool; // in scope 0 at $DIR/slice_index.rs:+1:5: +1:17 + debug slice => _1; + debug index => _2; + let mut _0: u32; + let mut _3: usize; + let mut _4: bool; bb0: { - _3 = Len((*_1)); // scope 0 at $DIR/slice_index.rs:+1:5: +1:17 - _4 = Lt(_2, _3); // scope 0 at $DIR/slice_index.rs:+1:5: +1:17 - assert(move _4, "index out of bounds: the length is {} but the index is {}", move _3, _2) -> [success: bb1, unwind unreachable]; // scope 0 at $DIR/slice_index.rs:+1:5: +1:17 + _3 = Len((*_1)); + _4 = Lt(_2, _3); + assert(move _4, "index out of bounds: the length is {} but the index is {}", move _3, _2) -> [success: bb1, unwind unreachable]; } bb1: { - _0 = (*_1)[_2]; // scope 0 at $DIR/slice_index.rs:+1:5: +1:17 - return; // scope 0 at $DIR/slice_index.rs:+2:2: +2:2 + _0 = (*_1)[_2]; + return; } } diff --git a/tests/mir-opt/pre-codegen/slice_index.slice_index_usize.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/pre-codegen/slice_index.slice_index_usize.PreCodegen.after.panic-unwind.mir index 6cc0ee0570bb5..13bd84f9596ca 100644 --- a/tests/mir-opt/pre-codegen/slice_index.slice_index_usize.PreCodegen.after.panic-unwind.mir +++ b/tests/mir-opt/pre-codegen/slice_index.slice_index_usize.PreCodegen.after.panic-unwind.mir @@ -1,20 +1,20 @@ // MIR for `slice_index_usize` after PreCodegen fn slice_index_usize(_1: &[u32], _2: usize) -> u32 { - debug slice => _1; // in scope 0 at $DIR/slice_index.rs:+0:26: +0:31 - debug index => _2; // in scope 0 at $DIR/slice_index.rs:+0:41: +0:46 - let mut _0: u32; // return place in scope 0 at $DIR/slice_index.rs:+0:58: +0:61 - let mut _3: usize; // in scope 0 at $DIR/slice_index.rs:+1:5: +1:17 - let mut _4: bool; // in scope 0 at $DIR/slice_index.rs:+1:5: +1:17 + debug slice => _1; + debug index => _2; + let mut _0: u32; + let mut _3: usize; + let mut _4: bool; bb0: { - _3 = Len((*_1)); // scope 0 at $DIR/slice_index.rs:+1:5: +1:17 - _4 = Lt(_2, _3); // scope 0 at $DIR/slice_index.rs:+1:5: +1:17 - assert(move _4, "index out of bounds: the length is {} but the index is {}", move _3, _2) -> bb1; // scope 0 at $DIR/slice_index.rs:+1:5: +1:17 + _3 = Len((*_1)); + _4 = Lt(_2, _3); + assert(move _4, "index out of bounds: the length is {} but the index is {}", move _3, _2) -> bb1; } bb1: { - _0 = (*_1)[_2]; // scope 0 at $DIR/slice_index.rs:+1:5: +1:17 - return; // scope 0 at $DIR/slice_index.rs:+2:2: +2:2 + _0 = (*_1)[_2]; + return; } } diff --git a/tests/mir-opt/pre-codegen/slice_iter.enumerated_loop.PreCodegen.after.panic-abort.mir b/tests/mir-opt/pre-codegen/slice_iter.enumerated_loop.PreCodegen.after.panic-abort.mir index e1446291bff52..1e401c60bf3ec 100644 --- a/tests/mir-opt/pre-codegen/slice_iter.enumerated_loop.PreCodegen.after.panic-abort.mir +++ b/tests/mir-opt/pre-codegen/slice_iter.enumerated_loop.PreCodegen.after.panic-abort.mir @@ -1,61 +1,61 @@ // MIR for `enumerated_loop` after PreCodegen fn enumerated_loop(_1: &[T], _2: impl Fn(usize, &T)) -> () { - debug slice => _1; // in scope 0 at $DIR/slice_iter.rs:+0:31: +0:36 - debug f => _2; // in scope 0 at $DIR/slice_iter.rs:+0:47: +0:48 - let mut _0: (); // return place in scope 0 at $DIR/slice_iter.rs:+0:70: +0:70 - let mut _13: std::slice::Iter<'_, T>; // in scope 0 at $DIR/slice_iter.rs:+1:19: +1:31 - let mut _14: std::iter::Enumerate>; // in scope 0 at $DIR/slice_iter.rs:+1:19: +1:43 - let mut _15: std::iter::Enumerate>; // in scope 0 at $DIR/slice_iter.rs:+1:19: +1:43 - let mut _16: &mut std::iter::Enumerate>; // in scope 0 at $DIR/slice_iter.rs:+1:19: +1:43 - let mut _17: std::option::Option<(usize, &T)>; // in scope 0 at $DIR/slice_iter.rs:+1:19: +1:43 - let mut _18: isize; // in scope 0 at $DIR/slice_iter.rs:+1:5: +3:6 - let mut _21: &impl Fn(usize, &T); // in scope 0 at $DIR/slice_iter.rs:+2:9: +2:10 - let mut _22: (usize, &T); // in scope 0 at $DIR/slice_iter.rs:+2:9: +2:16 - let _23: (); // in scope 0 at $DIR/slice_iter.rs:+1:19: +1:43 + debug slice => _1; + debug f => _2; + let mut _0: (); + let mut _13: std::slice::Iter<'_, T>; + let mut _14: std::iter::Enumerate>; + let mut _15: std::iter::Enumerate>; + let mut _16: &mut std::iter::Enumerate>; + let mut _17: std::option::Option<(usize, &T)>; + let mut _18: isize; + let mut _21: &impl Fn(usize, &T); + let mut _22: (usize, &T); + let _23: (); scope 1 { - debug iter => _15; // in scope 1 at $DIR/slice_iter.rs:+1:19: +1:43 - let _19: usize; // in scope 1 at $DIR/slice_iter.rs:+1:10: +1:11 - let _20: &T; // in scope 1 at $DIR/slice_iter.rs:+1:13: +1:14 + debug iter => _15; + let _19: usize; + let _20: &T; scope 2 { - debug i => _19; // in scope 2 at $DIR/slice_iter.rs:+1:10: +1:11 - debug x => _20; // in scope 2 at $DIR/slice_iter.rs:+1:13: +1:14 + debug i => _19; + debug x => _20; } } - scope 3 (inlined core::slice::::iter) { // at $DIR/slice_iter.rs:43:25: 43:31 - debug self => _1; // in scope 3 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - scope 4 (inlined std::slice::Iter::<'_, T>::new) { // at $SRC_DIR/core/src/slice/mod.rs:LL:COL - debug slice => _1; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - let _4: *const T; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - let mut _5: bool; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - let mut _6: usize; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - let mut _8: usize; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - let mut _9: *mut T; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - let mut _11: std::ptr::NonNull; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - let mut _12: *const T; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL + scope 3 (inlined core::slice::::iter) { + debug self => _1; + scope 4 (inlined std::slice::Iter::<'_, T>::new) { + debug slice => _1; + let _4: *const T; + let mut _5: bool; + let mut _6: usize; + let mut _8: usize; + let mut _9: *mut T; + let mut _11: std::ptr::NonNull; + let mut _12: *const T; scope 5 { - debug ptr => _4; // in scope 5 at $SRC_DIR/core/src/slice/iter.rs:LL:COL + debug ptr => _4; scope 6 { - let _7: *const T; // in scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL + let _7: *const T; scope 7 { - debug end => _7; // in scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - scope 13 (inlined NonNull::::new_unchecked) { // at $SRC_DIR/core/src/slice/iter.rs:LL:COL - debug ptr => _9; // in scope 13 at $SRC_DIR/core/src/ptr/non_null.rs:LL:COL - let mut _10: *const T; // in scope 13 at $SRC_DIR/core/src/ptr/non_null.rs:LL:COL + debug end => _7; + scope 13 (inlined NonNull::::new_unchecked) { + debug ptr => _9; + let mut _10: *const T; scope 14 { - scope 15 (inlined NonNull::::new_unchecked::runtime::) { // at $SRC_DIR/core/src/intrinsics.rs:LL:COL - debug ptr => _9; // in scope 15 at $SRC_DIR/core/src/intrinsics.rs:LL:COL - scope 16 (inlined ptr::mut_ptr::::is_null) { // at $SRC_DIR/core/src/ptr/non_null.rs:LL:COL - debug self => _9; // in scope 16 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - let mut _24: *mut u8; // in scope 16 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL + scope 15 (inlined NonNull::::new_unchecked::runtime::) { + debug ptr => _9; + scope 16 (inlined ptr::mut_ptr::::is_null) { + debug self => _9; + let mut _24: *mut u8; scope 17 { - scope 18 (inlined ptr::mut_ptr::::is_null::runtime_impl) { // at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - debug ptr => _24; // in scope 18 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - scope 19 (inlined ptr::mut_ptr::::addr) { // at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - debug self => _24; // in scope 19 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL + scope 18 (inlined ptr::mut_ptr::::is_null::runtime_impl) { + debug ptr => _24; + scope 19 (inlined ptr::mut_ptr::::addr) { + debug self => _24; scope 20 { - scope 21 (inlined ptr::mut_ptr::::cast::<()>) { // at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - debug self => _24; // in scope 21 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL + scope 21 (inlined ptr::mut_ptr::::cast::<()>) { + debug self => _24; } } } @@ -66,140 +66,129 @@ fn enumerated_loop(_1: &[T], _2: impl Fn(usize, &T)) -> () { } } } - scope 9 (inlined invalid::) { // at $SRC_DIR/core/src/slice/iter.rs:LL:COL - debug addr => _8; // in scope 9 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL + scope 9 (inlined invalid::) { + debug addr => _8; scope 10 { } } - scope 11 (inlined ptr::const_ptr::::add) { // at $SRC_DIR/core/src/slice/iter.rs:LL:COL - debug self => _4; // in scope 11 at $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL - debug count => _6; // in scope 11 at $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL + scope 11 (inlined ptr::const_ptr::::add) { + debug self => _4; + debug count => _6; scope 12 { } } } } - scope 8 (inlined core::slice::::as_ptr) { // at $SRC_DIR/core/src/slice/iter.rs:LL:COL - debug self => _1; // in scope 8 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - let mut _3: *const [T]; // in scope 8 at $SRC_DIR/core/src/slice/mod.rs:LL:COL + scope 8 (inlined core::slice::::as_ptr) { + debug self => _1; + let mut _3: *const [T]; } } } - scope 22 (inlined as Iterator>::enumerate) { // at $DIR/slice_iter.rs:43:32: 43:43 - debug self => _13; // in scope 22 at $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL - scope 23 (inlined Enumerate::>::new) { // at $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL - debug iter => _13; // in scope 23 at $SRC_DIR/core/src/iter/adapters/enumerate.rs:LL:COL + scope 22 (inlined as Iterator>::enumerate) { + debug self => _13; + scope 23 (inlined Enumerate::>::new) { + debug iter => _13; } } - scope 24 (inlined > as IntoIterator>::into_iter) { // at $DIR/slice_iter.rs:43:19: 43:43 - debug self => _14; // in scope 24 at $SRC_DIR/core/src/iter/traits/collect.rs:LL:COL + scope 24 (inlined > as IntoIterator>::into_iter) { + debug self => _14; } bb0: { - StorageLive(_13); // scope 0 at $DIR/slice_iter.rs:+1:19: +1:31 - StorageLive(_4); // scope 3 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - StorageLive(_3); // scope 8 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - _3 = &raw const (*_1); // scope 8 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - _4 = move _3 as *const T (PtrToPtr); // scope 8 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - StorageDead(_3); // scope 8 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - StorageLive(_7); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageLive(_5); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _5 = const _; // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - switchInt(move _5) -> [0: bb1, otherwise: bb2]; // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL + StorageLive(_13); + StorageLive(_4); + StorageLive(_3); + _3 = &raw const (*_1); + _4 = move _3 as *const T (PtrToPtr); + StorageDead(_3); + StorageLive(_7); + StorageLive(_5); + _5 = const _; + switchInt(move _5) -> [0: bb1, otherwise: bb2]; } bb1: { - StorageLive(_6); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _6 = Len((*_1)); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _7 = Offset(_4, _6); // scope 12 at $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL - StorageDead(_6); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - goto -> bb3; // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL + StorageLive(_6); + _6 = Len((*_1)); + _7 = Offset(_4, _6); + StorageDead(_6); + goto -> bb3; } bb2: { - StorageLive(_8); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _8 = Len((*_1)); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _7 = _8 as *const T (Transmute); // scope 10 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL - StorageDead(_8); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - goto -> bb3; // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL + StorageLive(_8); + _8 = Len((*_1)); + _7 = _8 as *const T (Transmute); + StorageDead(_8); + goto -> bb3; } bb3: { - StorageDead(_5); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageLive(_11); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageLive(_9); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _9 = _4 as *mut T (PtrToPtr); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageLive(_10); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageLive(_24); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _10 = _9 as *const T (Pointer(MutToConstPointer)); // scope 14 at $SRC_DIR/core/src/ptr/non_null.rs:LL:COL - _11 = NonNull:: { pointer: _10 }; // scope 14 at $SRC_DIR/core/src/ptr/non_null.rs:LL:COL - StorageDead(_24); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageDead(_10); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageDead(_9); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageLive(_12); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _12 = _7; // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _13 = std::slice::Iter::<'_, T> { ptr: move _11, end: move _12, _marker: const ZeroSized: PhantomData<&T> }; // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - // mir::Constant - // + span: no-location - // + literal: Const { ty: PhantomData<&T>, val: Value() } - // adt - // + user_ty: UserType(1) - StorageDead(_12); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageDead(_11); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageDead(_7); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageDead(_4); // scope 3 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - _14 = Enumerate::> { iter: move _13, count: const 0_usize }; // scope 23 at $SRC_DIR/core/src/iter/adapters/enumerate.rs:LL:COL - StorageDead(_13); // scope 0 at $DIR/slice_iter.rs:+1:42: +1:43 - StorageLive(_15); // scope 0 at $DIR/slice_iter.rs:+1:19: +1:43 - _15 = move _14; // scope 0 at $DIR/slice_iter.rs:+1:19: +1:43 - goto -> bb4; // scope 1 at $DIR/slice_iter.rs:+1:5: +3:6 + StorageDead(_5); + StorageLive(_11); + StorageLive(_9); + _9 = _4 as *mut T (PtrToPtr); + StorageLive(_10); + StorageLive(_24); + _10 = _9 as *const T (Pointer(MutToConstPointer)); + _11 = NonNull:: { pointer: _10 }; + StorageDead(_24); + StorageDead(_10); + StorageDead(_9); + StorageLive(_12); + _12 = _7; + _13 = std::slice::Iter::<'_, T> { ptr: move _11, end: move _12, _marker: const ZeroSized: PhantomData<&T> }; + StorageDead(_12); + StorageDead(_11); + StorageDead(_7); + StorageDead(_4); + _14 = Enumerate::> { iter: move _13, count: const 0_usize }; + StorageDead(_13); + StorageLive(_15); + _15 = move _14; + goto -> bb4; } bb4: { - StorageLive(_17); // scope 1 at $DIR/slice_iter.rs:+1:19: +1:43 - _16 = &mut _15; // scope 1 at $DIR/slice_iter.rs:+1:19: +1:43 - _17 = > as Iterator>::next(_16) -> [return: bb5, unwind unreachable]; // scope 1 at $DIR/slice_iter.rs:+1:19: +1:43 - // mir::Constant - // + span: $DIR/slice_iter.rs:43:19: 43:43 - // + literal: Const { ty: for<'a> fn(&'a mut Enumerate>) -> Option<> as Iterator>::Item> {> as Iterator>::next}, val: Value() } + StorageLive(_17); + _16 = &mut _15; + _17 = > as Iterator>::next(_16) -> [return: bb5, unwind unreachable]; } bb5: { - _18 = discriminant(_17); // scope 1 at $DIR/slice_iter.rs:+1:19: +1:43 - switchInt(move _18) -> [0: bb6, 1: bb8, otherwise: bb10]; // scope 1 at $DIR/slice_iter.rs:+1:19: +1:43 + _18 = discriminant(_17); + switchInt(move _18) -> [0: bb6, 1: bb8, otherwise: bb10]; } bb6: { - StorageDead(_17); // scope 1 at $DIR/slice_iter.rs:+3:5: +3:6 - StorageDead(_15); // scope 0 at $DIR/slice_iter.rs:+3:5: +3:6 - drop(_2) -> [return: bb7, unwind unreachable]; // scope 0 at $DIR/slice_iter.rs:+4:1: +4:2 + StorageDead(_17); + StorageDead(_15); + drop(_2) -> [return: bb7, unwind unreachable]; } bb7: { - return; // scope 0 at $DIR/slice_iter.rs:+4:2: +4:2 + return; } bb8: { - _19 = (((_17 as Some).0: (usize, &T)).0: usize); // scope 1 at $DIR/slice_iter.rs:+1:10: +1:11 - _20 = (((_17 as Some).0: (usize, &T)).1: &T); // scope 1 at $DIR/slice_iter.rs:+1:13: +1:14 - StorageLive(_21); // scope 2 at $DIR/slice_iter.rs:+2:9: +2:10 - _21 = &_2; // scope 2 at $DIR/slice_iter.rs:+2:9: +2:10 - StorageLive(_22); // scope 2 at $DIR/slice_iter.rs:+2:9: +2:16 - _22 = (_19, _20); // scope 2 at $DIR/slice_iter.rs:+2:9: +2:16 - _23 = >::call(move _21, move _22) -> [return: bb9, unwind unreachable]; // scope 2 at $DIR/slice_iter.rs:+2:9: +2:16 - // mir::Constant - // + span: $DIR/slice_iter.rs:44:9: 44:10 - // + literal: Const { ty: for<'a> extern "rust-call" fn(&'a impl Fn(usize, &T), (usize, &T)) -> >::Output {>::call}, val: Value() } + _19 = (((_17 as Some).0: (usize, &T)).0: usize); + _20 = (((_17 as Some).0: (usize, &T)).1: &T); + StorageLive(_21); + _21 = &_2; + StorageLive(_22); + _22 = (_19, _20); + _23 = >::call(move _21, move _22) -> [return: bb9, unwind unreachable]; } bb9: { - StorageDead(_22); // scope 2 at $DIR/slice_iter.rs:+2:15: +2:16 - StorageDead(_21); // scope 2 at $DIR/slice_iter.rs:+2:15: +2:16 - StorageDead(_17); // scope 1 at $DIR/slice_iter.rs:+3:5: +3:6 - goto -> bb4; // scope 1 at $DIR/slice_iter.rs:+1:5: +3:6 + StorageDead(_22); + StorageDead(_21); + StorageDead(_17); + goto -> bb4; } bb10: { - unreachable; // scope 1 at $DIR/slice_iter.rs:+1:19: +1:43 + unreachable; } } diff --git a/tests/mir-opt/pre-codegen/slice_iter.enumerated_loop.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/pre-codegen/slice_iter.enumerated_loop.PreCodegen.after.panic-unwind.mir index f35ea0fa05742..71162df4bd066 100644 --- a/tests/mir-opt/pre-codegen/slice_iter.enumerated_loop.PreCodegen.after.panic-unwind.mir +++ b/tests/mir-opt/pre-codegen/slice_iter.enumerated_loop.PreCodegen.after.panic-unwind.mir @@ -1,61 +1,61 @@ // MIR for `enumerated_loop` after PreCodegen fn enumerated_loop(_1: &[T], _2: impl Fn(usize, &T)) -> () { - debug slice => _1; // in scope 0 at $DIR/slice_iter.rs:+0:31: +0:36 - debug f => _2; // in scope 0 at $DIR/slice_iter.rs:+0:47: +0:48 - let mut _0: (); // return place in scope 0 at $DIR/slice_iter.rs:+0:70: +0:70 - let mut _13: std::slice::Iter<'_, T>; // in scope 0 at $DIR/slice_iter.rs:+1:19: +1:31 - let mut _14: std::iter::Enumerate>; // in scope 0 at $DIR/slice_iter.rs:+1:19: +1:43 - let mut _15: std::iter::Enumerate>; // in scope 0 at $DIR/slice_iter.rs:+1:19: +1:43 - let mut _16: &mut std::iter::Enumerate>; // in scope 0 at $DIR/slice_iter.rs:+1:19: +1:43 - let mut _17: std::option::Option<(usize, &T)>; // in scope 0 at $DIR/slice_iter.rs:+1:19: +1:43 - let mut _18: isize; // in scope 0 at $DIR/slice_iter.rs:+1:5: +3:6 - let mut _21: &impl Fn(usize, &T); // in scope 0 at $DIR/slice_iter.rs:+2:9: +2:10 - let mut _22: (usize, &T); // in scope 0 at $DIR/slice_iter.rs:+2:9: +2:16 - let _23: (); // in scope 0 at $DIR/slice_iter.rs:+1:19: +1:43 + debug slice => _1; + debug f => _2; + let mut _0: (); + let mut _13: std::slice::Iter<'_, T>; + let mut _14: std::iter::Enumerate>; + let mut _15: std::iter::Enumerate>; + let mut _16: &mut std::iter::Enumerate>; + let mut _17: std::option::Option<(usize, &T)>; + let mut _18: isize; + let mut _21: &impl Fn(usize, &T); + let mut _22: (usize, &T); + let _23: (); scope 1 { - debug iter => _15; // in scope 1 at $DIR/slice_iter.rs:+1:19: +1:43 - let _19: usize; // in scope 1 at $DIR/slice_iter.rs:+1:10: +1:11 - let _20: &T; // in scope 1 at $DIR/slice_iter.rs:+1:13: +1:14 + debug iter => _15; + let _19: usize; + let _20: &T; scope 2 { - debug i => _19; // in scope 2 at $DIR/slice_iter.rs:+1:10: +1:11 - debug x => _20; // in scope 2 at $DIR/slice_iter.rs:+1:13: +1:14 + debug i => _19; + debug x => _20; } } - scope 3 (inlined core::slice::::iter) { // at $DIR/slice_iter.rs:43:25: 43:31 - debug self => _1; // in scope 3 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - scope 4 (inlined std::slice::Iter::<'_, T>::new) { // at $SRC_DIR/core/src/slice/mod.rs:LL:COL - debug slice => _1; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - let _4: *const T; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - let mut _5: bool; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - let mut _6: usize; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - let mut _8: usize; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - let mut _9: *mut T; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - let mut _11: std::ptr::NonNull; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - let mut _12: *const T; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL + scope 3 (inlined core::slice::::iter) { + debug self => _1; + scope 4 (inlined std::slice::Iter::<'_, T>::new) { + debug slice => _1; + let _4: *const T; + let mut _5: bool; + let mut _6: usize; + let mut _8: usize; + let mut _9: *mut T; + let mut _11: std::ptr::NonNull; + let mut _12: *const T; scope 5 { - debug ptr => _4; // in scope 5 at $SRC_DIR/core/src/slice/iter.rs:LL:COL + debug ptr => _4; scope 6 { - let _7: *const T; // in scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL + let _7: *const T; scope 7 { - debug end => _7; // in scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - scope 13 (inlined NonNull::::new_unchecked) { // at $SRC_DIR/core/src/slice/iter.rs:LL:COL - debug ptr => _9; // in scope 13 at $SRC_DIR/core/src/ptr/non_null.rs:LL:COL - let mut _10: *const T; // in scope 13 at $SRC_DIR/core/src/ptr/non_null.rs:LL:COL + debug end => _7; + scope 13 (inlined NonNull::::new_unchecked) { + debug ptr => _9; + let mut _10: *const T; scope 14 { - scope 15 (inlined NonNull::::new_unchecked::runtime::) { // at $SRC_DIR/core/src/intrinsics.rs:LL:COL - debug ptr => _9; // in scope 15 at $SRC_DIR/core/src/intrinsics.rs:LL:COL - scope 16 (inlined ptr::mut_ptr::::is_null) { // at $SRC_DIR/core/src/ptr/non_null.rs:LL:COL - debug self => _9; // in scope 16 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - let mut _24: *mut u8; // in scope 16 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL + scope 15 (inlined NonNull::::new_unchecked::runtime::) { + debug ptr => _9; + scope 16 (inlined ptr::mut_ptr::::is_null) { + debug self => _9; + let mut _24: *mut u8; scope 17 { - scope 18 (inlined ptr::mut_ptr::::is_null::runtime_impl) { // at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - debug ptr => _24; // in scope 18 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - scope 19 (inlined ptr::mut_ptr::::addr) { // at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - debug self => _24; // in scope 19 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL + scope 18 (inlined ptr::mut_ptr::::is_null::runtime_impl) { + debug ptr => _24; + scope 19 (inlined ptr::mut_ptr::::addr) { + debug self => _24; scope 20 { - scope 21 (inlined ptr::mut_ptr::::cast::<()>) { // at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - debug self => _24; // in scope 21 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL + scope 21 (inlined ptr::mut_ptr::::cast::<()>) { + debug self => _24; } } } @@ -66,148 +66,137 @@ fn enumerated_loop(_1: &[T], _2: impl Fn(usize, &T)) -> () { } } } - scope 9 (inlined invalid::) { // at $SRC_DIR/core/src/slice/iter.rs:LL:COL - debug addr => _8; // in scope 9 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL + scope 9 (inlined invalid::) { + debug addr => _8; scope 10 { } } - scope 11 (inlined ptr::const_ptr::::add) { // at $SRC_DIR/core/src/slice/iter.rs:LL:COL - debug self => _4; // in scope 11 at $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL - debug count => _6; // in scope 11 at $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL + scope 11 (inlined ptr::const_ptr::::add) { + debug self => _4; + debug count => _6; scope 12 { } } } } - scope 8 (inlined core::slice::::as_ptr) { // at $SRC_DIR/core/src/slice/iter.rs:LL:COL - debug self => _1; // in scope 8 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - let mut _3: *const [T]; // in scope 8 at $SRC_DIR/core/src/slice/mod.rs:LL:COL + scope 8 (inlined core::slice::::as_ptr) { + debug self => _1; + let mut _3: *const [T]; } } } - scope 22 (inlined as Iterator>::enumerate) { // at $DIR/slice_iter.rs:43:32: 43:43 - debug self => _13; // in scope 22 at $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL - scope 23 (inlined Enumerate::>::new) { // at $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL - debug iter => _13; // in scope 23 at $SRC_DIR/core/src/iter/adapters/enumerate.rs:LL:COL + scope 22 (inlined as Iterator>::enumerate) { + debug self => _13; + scope 23 (inlined Enumerate::>::new) { + debug iter => _13; } } - scope 24 (inlined > as IntoIterator>::into_iter) { // at $DIR/slice_iter.rs:43:19: 43:43 - debug self => _14; // in scope 24 at $SRC_DIR/core/src/iter/traits/collect.rs:LL:COL + scope 24 (inlined > as IntoIterator>::into_iter) { + debug self => _14; } bb0: { - StorageLive(_13); // scope 0 at $DIR/slice_iter.rs:+1:19: +1:31 - StorageLive(_4); // scope 3 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - StorageLive(_3); // scope 8 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - _3 = &raw const (*_1); // scope 8 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - _4 = move _3 as *const T (PtrToPtr); // scope 8 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - StorageDead(_3); // scope 8 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - StorageLive(_7); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageLive(_5); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _5 = const _; // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - switchInt(move _5) -> [0: bb1, otherwise: bb2]; // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL + StorageLive(_13); + StorageLive(_4); + StorageLive(_3); + _3 = &raw const (*_1); + _4 = move _3 as *const T (PtrToPtr); + StorageDead(_3); + StorageLive(_7); + StorageLive(_5); + _5 = const _; + switchInt(move _5) -> [0: bb1, otherwise: bb2]; } bb1: { - StorageLive(_6); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _6 = Len((*_1)); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _7 = Offset(_4, _6); // scope 12 at $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL - StorageDead(_6); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - goto -> bb3; // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL + StorageLive(_6); + _6 = Len((*_1)); + _7 = Offset(_4, _6); + StorageDead(_6); + goto -> bb3; } bb2: { - StorageLive(_8); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _8 = Len((*_1)); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _7 = _8 as *const T (Transmute); // scope 10 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL - StorageDead(_8); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - goto -> bb3; // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL + StorageLive(_8); + _8 = Len((*_1)); + _7 = _8 as *const T (Transmute); + StorageDead(_8); + goto -> bb3; } bb3: { - StorageDead(_5); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageLive(_11); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageLive(_9); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _9 = _4 as *mut T (PtrToPtr); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageLive(_10); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageLive(_24); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _10 = _9 as *const T (Pointer(MutToConstPointer)); // scope 14 at $SRC_DIR/core/src/ptr/non_null.rs:LL:COL - _11 = NonNull:: { pointer: _10 }; // scope 14 at $SRC_DIR/core/src/ptr/non_null.rs:LL:COL - StorageDead(_24); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageDead(_10); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageDead(_9); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageLive(_12); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _12 = _7; // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _13 = std::slice::Iter::<'_, T> { ptr: move _11, end: move _12, _marker: const ZeroSized: PhantomData<&T> }; // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - // mir::Constant - // + span: no-location - // + literal: Const { ty: PhantomData<&T>, val: Value() } - // adt - // + user_ty: UserType(1) - StorageDead(_12); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageDead(_11); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageDead(_7); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageDead(_4); // scope 3 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - _14 = Enumerate::> { iter: move _13, count: const 0_usize }; // scope 23 at $SRC_DIR/core/src/iter/adapters/enumerate.rs:LL:COL - StorageDead(_13); // scope 0 at $DIR/slice_iter.rs:+1:42: +1:43 - StorageLive(_15); // scope 0 at $DIR/slice_iter.rs:+1:19: +1:43 - _15 = move _14; // scope 0 at $DIR/slice_iter.rs:+1:19: +1:43 - goto -> bb4; // scope 1 at $DIR/slice_iter.rs:+1:5: +3:6 + StorageDead(_5); + StorageLive(_11); + StorageLive(_9); + _9 = _4 as *mut T (PtrToPtr); + StorageLive(_10); + StorageLive(_24); + _10 = _9 as *const T (Pointer(MutToConstPointer)); + _11 = NonNull:: { pointer: _10 }; + StorageDead(_24); + StorageDead(_10); + StorageDead(_9); + StorageLive(_12); + _12 = _7; + _13 = std::slice::Iter::<'_, T> { ptr: move _11, end: move _12, _marker: const ZeroSized: PhantomData<&T> }; + StorageDead(_12); + StorageDead(_11); + StorageDead(_7); + StorageDead(_4); + _14 = Enumerate::> { iter: move _13, count: const 0_usize }; + StorageDead(_13); + StorageLive(_15); + _15 = move _14; + goto -> bb4; } bb4: { - StorageLive(_17); // scope 1 at $DIR/slice_iter.rs:+1:19: +1:43 - _16 = &mut _15; // scope 1 at $DIR/slice_iter.rs:+1:19: +1:43 - _17 = > as Iterator>::next(_16) -> [return: bb5, unwind: bb11]; // scope 1 at $DIR/slice_iter.rs:+1:19: +1:43 - // mir::Constant - // + span: $DIR/slice_iter.rs:43:19: 43:43 - // + literal: Const { ty: for<'a> fn(&'a mut Enumerate>) -> Option<> as Iterator>::Item> {> as Iterator>::next}, val: Value() } + StorageLive(_17); + _16 = &mut _15; + _17 = > as Iterator>::next(_16) -> [return: bb5, unwind: bb11]; } bb5: { - _18 = discriminant(_17); // scope 1 at $DIR/slice_iter.rs:+1:19: +1:43 - switchInt(move _18) -> [0: bb6, 1: bb8, otherwise: bb10]; // scope 1 at $DIR/slice_iter.rs:+1:19: +1:43 + _18 = discriminant(_17); + switchInt(move _18) -> [0: bb6, 1: bb8, otherwise: bb10]; } bb6: { - StorageDead(_17); // scope 1 at $DIR/slice_iter.rs:+3:5: +3:6 - StorageDead(_15); // scope 0 at $DIR/slice_iter.rs:+3:5: +3:6 - drop(_2) -> bb7; // scope 0 at $DIR/slice_iter.rs:+4:1: +4:2 + StorageDead(_17); + StorageDead(_15); + drop(_2) -> bb7; } bb7: { - return; // scope 0 at $DIR/slice_iter.rs:+4:2: +4:2 + return; } bb8: { - _19 = (((_17 as Some).0: (usize, &T)).0: usize); // scope 1 at $DIR/slice_iter.rs:+1:10: +1:11 - _20 = (((_17 as Some).0: (usize, &T)).1: &T); // scope 1 at $DIR/slice_iter.rs:+1:13: +1:14 - StorageLive(_21); // scope 2 at $DIR/slice_iter.rs:+2:9: +2:10 - _21 = &_2; // scope 2 at $DIR/slice_iter.rs:+2:9: +2:10 - StorageLive(_22); // scope 2 at $DIR/slice_iter.rs:+2:9: +2:16 - _22 = (_19, _20); // scope 2 at $DIR/slice_iter.rs:+2:9: +2:16 - _23 = >::call(move _21, move _22) -> [return: bb9, unwind: bb11]; // scope 2 at $DIR/slice_iter.rs:+2:9: +2:16 - // mir::Constant - // + span: $DIR/slice_iter.rs:44:9: 44:10 - // + literal: Const { ty: for<'a> extern "rust-call" fn(&'a impl Fn(usize, &T), (usize, &T)) -> >::Output {>::call}, val: Value() } + _19 = (((_17 as Some).0: (usize, &T)).0: usize); + _20 = (((_17 as Some).0: (usize, &T)).1: &T); + StorageLive(_21); + _21 = &_2; + StorageLive(_22); + _22 = (_19, _20); + _23 = >::call(move _21, move _22) -> [return: bb9, unwind: bb11]; } bb9: { - StorageDead(_22); // scope 2 at $DIR/slice_iter.rs:+2:15: +2:16 - StorageDead(_21); // scope 2 at $DIR/slice_iter.rs:+2:15: +2:16 - StorageDead(_17); // scope 1 at $DIR/slice_iter.rs:+3:5: +3:6 - goto -> bb4; // scope 1 at $DIR/slice_iter.rs:+1:5: +3:6 + StorageDead(_22); + StorageDead(_21); + StorageDead(_17); + goto -> bb4; } bb10: { - unreachable; // scope 1 at $DIR/slice_iter.rs:+1:19: +1:43 + unreachable; } bb11 (cleanup): { - drop(_2) -> [return: bb12, unwind terminate]; // scope 0 at $DIR/slice_iter.rs:+4:1: +4:2 + drop(_2) -> [return: bb12, unwind terminate]; } bb12 (cleanup): { - resume; // scope 0 at $DIR/slice_iter.rs:+0:1: +4:2 + resume; } } diff --git a/tests/mir-opt/pre-codegen/slice_iter.forward_loop.PreCodegen.after.panic-abort.mir b/tests/mir-opt/pre-codegen/slice_iter.forward_loop.PreCodegen.after.panic-abort.mir index 1ffda32509e6c..c1c7861b9c9e6 100644 --- a/tests/mir-opt/pre-codegen/slice_iter.forward_loop.PreCodegen.after.panic-abort.mir +++ b/tests/mir-opt/pre-codegen/slice_iter.forward_loop.PreCodegen.after.panic-abort.mir @@ -1,58 +1,58 @@ // MIR for `forward_loop` after PreCodegen fn forward_loop(_1: &[T], _2: impl Fn(&T)) -> () { - debug slice => _1; // in scope 0 at $DIR/slice_iter.rs:+0:28: +0:33 - debug f => _2; // in scope 0 at $DIR/slice_iter.rs:+0:44: +0:45 - let mut _0: (); // return place in scope 0 at $DIR/slice_iter.rs:+0:60: +0:60 - let mut _13: std::slice::Iter<'_, T>; // in scope 0 at $DIR/slice_iter.rs:+1:14: +1:26 - let mut _14: std::slice::Iter<'_, T>; // in scope 0 at $DIR/slice_iter.rs:+1:14: +1:26 - let mut _15: &mut std::slice::Iter<'_, T>; // in scope 0 at $DIR/slice_iter.rs:+1:14: +1:26 - let mut _16: std::option::Option<&T>; // in scope 0 at $DIR/slice_iter.rs:+1:14: +1:26 - let mut _17: isize; // in scope 0 at $DIR/slice_iter.rs:+1:5: +3:6 - let mut _19: &impl Fn(&T); // in scope 0 at $DIR/slice_iter.rs:+2:9: +2:10 - let mut _20: (&T,); // in scope 0 at $DIR/slice_iter.rs:+2:9: +2:13 - let _21: (); // in scope 0 at $DIR/slice_iter.rs:+1:14: +1:26 + debug slice => _1; + debug f => _2; + let mut _0: (); + let mut _13: std::slice::Iter<'_, T>; + let mut _14: std::slice::Iter<'_, T>; + let mut _15: &mut std::slice::Iter<'_, T>; + let mut _16: std::option::Option<&T>; + let mut _17: isize; + let mut _19: &impl Fn(&T); + let mut _20: (&T,); + let _21: (); scope 1 { - debug iter => _14; // in scope 1 at $DIR/slice_iter.rs:+1:14: +1:26 - let _18: &T; // in scope 1 at $DIR/slice_iter.rs:+1:9: +1:10 + debug iter => _14; + let _18: &T; scope 2 { - debug x => _18; // in scope 2 at $DIR/slice_iter.rs:+1:9: +1:10 + debug x => _18; } } - scope 3 (inlined core::slice::::iter) { // at $DIR/slice_iter.rs:29:20: 29:26 - debug self => _1; // in scope 3 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - scope 4 (inlined std::slice::Iter::<'_, T>::new) { // at $SRC_DIR/core/src/slice/mod.rs:LL:COL - debug slice => _1; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - let _4: *const T; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - let mut _5: bool; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - let mut _6: usize; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - let mut _8: usize; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - let mut _9: *mut T; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - let mut _11: std::ptr::NonNull; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - let mut _12: *const T; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL + scope 3 (inlined core::slice::::iter) { + debug self => _1; + scope 4 (inlined std::slice::Iter::<'_, T>::new) { + debug slice => _1; + let _4: *const T; + let mut _5: bool; + let mut _6: usize; + let mut _8: usize; + let mut _9: *mut T; + let mut _11: std::ptr::NonNull; + let mut _12: *const T; scope 5 { - debug ptr => _4; // in scope 5 at $SRC_DIR/core/src/slice/iter.rs:LL:COL + debug ptr => _4; scope 6 { - let _7: *const T; // in scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL + let _7: *const T; scope 7 { - debug end => _7; // in scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - scope 13 (inlined NonNull::::new_unchecked) { // at $SRC_DIR/core/src/slice/iter.rs:LL:COL - debug ptr => _9; // in scope 13 at $SRC_DIR/core/src/ptr/non_null.rs:LL:COL - let mut _10: *const T; // in scope 13 at $SRC_DIR/core/src/ptr/non_null.rs:LL:COL + debug end => _7; + scope 13 (inlined NonNull::::new_unchecked) { + debug ptr => _9; + let mut _10: *const T; scope 14 { - scope 15 (inlined NonNull::::new_unchecked::runtime::) { // at $SRC_DIR/core/src/intrinsics.rs:LL:COL - debug ptr => _9; // in scope 15 at $SRC_DIR/core/src/intrinsics.rs:LL:COL - scope 16 (inlined ptr::mut_ptr::::is_null) { // at $SRC_DIR/core/src/ptr/non_null.rs:LL:COL - debug self => _9; // in scope 16 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - let mut _22: *mut u8; // in scope 16 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL + scope 15 (inlined NonNull::::new_unchecked::runtime::) { + debug ptr => _9; + scope 16 (inlined ptr::mut_ptr::::is_null) { + debug self => _9; + let mut _22: *mut u8; scope 17 { - scope 18 (inlined ptr::mut_ptr::::is_null::runtime_impl) { // at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - debug ptr => _22; // in scope 18 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - scope 19 (inlined ptr::mut_ptr::::addr) { // at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - debug self => _22; // in scope 19 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL + scope 18 (inlined ptr::mut_ptr::::is_null::runtime_impl) { + debug ptr => _22; + scope 19 (inlined ptr::mut_ptr::::addr) { + debug self => _22; scope 20 { - scope 21 (inlined ptr::mut_ptr::::cast::<()>) { // at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - debug self => _22; // in scope 21 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL + scope 21 (inlined ptr::mut_ptr::::cast::<()>) { + debug self => _22; } } } @@ -63,130 +63,119 @@ fn forward_loop(_1: &[T], _2: impl Fn(&T)) -> () { } } } - scope 9 (inlined invalid::) { // at $SRC_DIR/core/src/slice/iter.rs:LL:COL - debug addr => _8; // in scope 9 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL + scope 9 (inlined invalid::) { + debug addr => _8; scope 10 { } } - scope 11 (inlined ptr::const_ptr::::add) { // at $SRC_DIR/core/src/slice/iter.rs:LL:COL - debug self => _4; // in scope 11 at $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL - debug count => _6; // in scope 11 at $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL + scope 11 (inlined ptr::const_ptr::::add) { + debug self => _4; + debug count => _6; scope 12 { } } } } - scope 8 (inlined core::slice::::as_ptr) { // at $SRC_DIR/core/src/slice/iter.rs:LL:COL - debug self => _1; // in scope 8 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - let mut _3: *const [T]; // in scope 8 at $SRC_DIR/core/src/slice/mod.rs:LL:COL + scope 8 (inlined core::slice::::as_ptr) { + debug self => _1; + let mut _3: *const [T]; } } } - scope 22 (inlined as IntoIterator>::into_iter) { // at $DIR/slice_iter.rs:29:14: 29:26 - debug self => _13; // in scope 22 at $SRC_DIR/core/src/iter/traits/collect.rs:LL:COL + scope 22 (inlined as IntoIterator>::into_iter) { + debug self => _13; } bb0: { - StorageLive(_4); // scope 3 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - StorageLive(_3); // scope 8 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - _3 = &raw const (*_1); // scope 8 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - _4 = move _3 as *const T (PtrToPtr); // scope 8 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - StorageDead(_3); // scope 8 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - StorageLive(_7); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageLive(_5); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _5 = const _; // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - switchInt(move _5) -> [0: bb1, otherwise: bb2]; // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL + StorageLive(_4); + StorageLive(_3); + _3 = &raw const (*_1); + _4 = move _3 as *const T (PtrToPtr); + StorageDead(_3); + StorageLive(_7); + StorageLive(_5); + _5 = const _; + switchInt(move _5) -> [0: bb1, otherwise: bb2]; } bb1: { - StorageLive(_6); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _6 = Len((*_1)); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _7 = Offset(_4, _6); // scope 12 at $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL - StorageDead(_6); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - goto -> bb3; // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL + StorageLive(_6); + _6 = Len((*_1)); + _7 = Offset(_4, _6); + StorageDead(_6); + goto -> bb3; } bb2: { - StorageLive(_8); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _8 = Len((*_1)); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _7 = _8 as *const T (Transmute); // scope 10 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL - StorageDead(_8); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - goto -> bb3; // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL + StorageLive(_8); + _8 = Len((*_1)); + _7 = _8 as *const T (Transmute); + StorageDead(_8); + goto -> bb3; } bb3: { - StorageDead(_5); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageLive(_11); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageLive(_9); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _9 = _4 as *mut T (PtrToPtr); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageLive(_10); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageLive(_22); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _10 = _9 as *const T (Pointer(MutToConstPointer)); // scope 14 at $SRC_DIR/core/src/ptr/non_null.rs:LL:COL - _11 = NonNull:: { pointer: _10 }; // scope 14 at $SRC_DIR/core/src/ptr/non_null.rs:LL:COL - StorageDead(_22); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageDead(_10); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageDead(_9); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageLive(_12); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _12 = _7; // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _13 = std::slice::Iter::<'_, T> { ptr: move _11, end: move _12, _marker: const ZeroSized: PhantomData<&T> }; // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - // mir::Constant - // + span: no-location - // + literal: Const { ty: PhantomData<&T>, val: Value() } - // adt - // + user_ty: UserType(1) - StorageDead(_12); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageDead(_11); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageDead(_7); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageDead(_4); // scope 3 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - StorageLive(_14); // scope 0 at $DIR/slice_iter.rs:+1:14: +1:26 - _14 = move _13; // scope 0 at $DIR/slice_iter.rs:+1:14: +1:26 - goto -> bb4; // scope 1 at $DIR/slice_iter.rs:+1:5: +3:6 + StorageDead(_5); + StorageLive(_11); + StorageLive(_9); + _9 = _4 as *mut T (PtrToPtr); + StorageLive(_10); + StorageLive(_22); + _10 = _9 as *const T (Pointer(MutToConstPointer)); + _11 = NonNull:: { pointer: _10 }; + StorageDead(_22); + StorageDead(_10); + StorageDead(_9); + StorageLive(_12); + _12 = _7; + _13 = std::slice::Iter::<'_, T> { ptr: move _11, end: move _12, _marker: const ZeroSized: PhantomData<&T> }; + StorageDead(_12); + StorageDead(_11); + StorageDead(_7); + StorageDead(_4); + StorageLive(_14); + _14 = move _13; + goto -> bb4; } bb4: { - StorageLive(_16); // scope 1 at $DIR/slice_iter.rs:+1:14: +1:26 - _15 = &mut _14; // scope 1 at $DIR/slice_iter.rs:+1:14: +1:26 - _16 = as Iterator>::next(_15) -> [return: bb5, unwind unreachable]; // scope 1 at $DIR/slice_iter.rs:+1:14: +1:26 - // mir::Constant - // + span: $DIR/slice_iter.rs:29:14: 29:26 - // + literal: Const { ty: for<'a> fn(&'a mut std::slice::Iter<'_, T>) -> Option< as Iterator>::Item> { as Iterator>::next}, val: Value() } + StorageLive(_16); + _15 = &mut _14; + _16 = as Iterator>::next(_15) -> [return: bb5, unwind unreachable]; } bb5: { - _17 = discriminant(_16); // scope 1 at $DIR/slice_iter.rs:+1:14: +1:26 - switchInt(move _17) -> [0: bb6, 1: bb8, otherwise: bb10]; // scope 1 at $DIR/slice_iter.rs:+1:14: +1:26 + _17 = discriminant(_16); + switchInt(move _17) -> [0: bb6, 1: bb8, otherwise: bb10]; } bb6: { - StorageDead(_16); // scope 1 at $DIR/slice_iter.rs:+3:5: +3:6 - StorageDead(_14); // scope 0 at $DIR/slice_iter.rs:+3:5: +3:6 - drop(_2) -> [return: bb7, unwind unreachable]; // scope 0 at $DIR/slice_iter.rs:+4:1: +4:2 + StorageDead(_16); + StorageDead(_14); + drop(_2) -> [return: bb7, unwind unreachable]; } bb7: { - return; // scope 0 at $DIR/slice_iter.rs:+4:2: +4:2 + return; } bb8: { - _18 = ((_16 as Some).0: &T); // scope 1 at $DIR/slice_iter.rs:+1:9: +1:10 - StorageLive(_19); // scope 2 at $DIR/slice_iter.rs:+2:9: +2:10 - _19 = &_2; // scope 2 at $DIR/slice_iter.rs:+2:9: +2:10 - StorageLive(_20); // scope 2 at $DIR/slice_iter.rs:+2:9: +2:13 - _20 = (_18,); // scope 2 at $DIR/slice_iter.rs:+2:9: +2:13 - _21 = >::call(move _19, move _20) -> [return: bb9, unwind unreachable]; // scope 2 at $DIR/slice_iter.rs:+2:9: +2:13 - // mir::Constant - // + span: $DIR/slice_iter.rs:30:9: 30:10 - // + literal: Const { ty: for<'a> extern "rust-call" fn(&'a impl Fn(&T), (&T,)) -> >::Output {>::call}, val: Value() } + _18 = ((_16 as Some).0: &T); + StorageLive(_19); + _19 = &_2; + StorageLive(_20); + _20 = (_18,); + _21 = >::call(move _19, move _20) -> [return: bb9, unwind unreachable]; } bb9: { - StorageDead(_20); // scope 2 at $DIR/slice_iter.rs:+2:12: +2:13 - StorageDead(_19); // scope 2 at $DIR/slice_iter.rs:+2:12: +2:13 - StorageDead(_16); // scope 1 at $DIR/slice_iter.rs:+3:5: +3:6 - goto -> bb4; // scope 1 at $DIR/slice_iter.rs:+1:5: +3:6 + StorageDead(_20); + StorageDead(_19); + StorageDead(_16); + goto -> bb4; } bb10: { - unreachable; // scope 1 at $DIR/slice_iter.rs:+1:14: +1:26 + unreachable; } } diff --git a/tests/mir-opt/pre-codegen/slice_iter.forward_loop.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/pre-codegen/slice_iter.forward_loop.PreCodegen.after.panic-unwind.mir index 899e5f58a988b..08d829d52cce1 100644 --- a/tests/mir-opt/pre-codegen/slice_iter.forward_loop.PreCodegen.after.panic-unwind.mir +++ b/tests/mir-opt/pre-codegen/slice_iter.forward_loop.PreCodegen.after.panic-unwind.mir @@ -1,58 +1,58 @@ // MIR for `forward_loop` after PreCodegen fn forward_loop(_1: &[T], _2: impl Fn(&T)) -> () { - debug slice => _1; // in scope 0 at $DIR/slice_iter.rs:+0:28: +0:33 - debug f => _2; // in scope 0 at $DIR/slice_iter.rs:+0:44: +0:45 - let mut _0: (); // return place in scope 0 at $DIR/slice_iter.rs:+0:60: +0:60 - let mut _13: std::slice::Iter<'_, T>; // in scope 0 at $DIR/slice_iter.rs:+1:14: +1:26 - let mut _14: std::slice::Iter<'_, T>; // in scope 0 at $DIR/slice_iter.rs:+1:14: +1:26 - let mut _15: &mut std::slice::Iter<'_, T>; // in scope 0 at $DIR/slice_iter.rs:+1:14: +1:26 - let mut _16: std::option::Option<&T>; // in scope 0 at $DIR/slice_iter.rs:+1:14: +1:26 - let mut _17: isize; // in scope 0 at $DIR/slice_iter.rs:+1:5: +3:6 - let mut _19: &impl Fn(&T); // in scope 0 at $DIR/slice_iter.rs:+2:9: +2:10 - let mut _20: (&T,); // in scope 0 at $DIR/slice_iter.rs:+2:9: +2:13 - let _21: (); // in scope 0 at $DIR/slice_iter.rs:+1:14: +1:26 + debug slice => _1; + debug f => _2; + let mut _0: (); + let mut _13: std::slice::Iter<'_, T>; + let mut _14: std::slice::Iter<'_, T>; + let mut _15: &mut std::slice::Iter<'_, T>; + let mut _16: std::option::Option<&T>; + let mut _17: isize; + let mut _19: &impl Fn(&T); + let mut _20: (&T,); + let _21: (); scope 1 { - debug iter => _14; // in scope 1 at $DIR/slice_iter.rs:+1:14: +1:26 - let _18: &T; // in scope 1 at $DIR/slice_iter.rs:+1:9: +1:10 + debug iter => _14; + let _18: &T; scope 2 { - debug x => _18; // in scope 2 at $DIR/slice_iter.rs:+1:9: +1:10 + debug x => _18; } } - scope 3 (inlined core::slice::::iter) { // at $DIR/slice_iter.rs:29:20: 29:26 - debug self => _1; // in scope 3 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - scope 4 (inlined std::slice::Iter::<'_, T>::new) { // at $SRC_DIR/core/src/slice/mod.rs:LL:COL - debug slice => _1; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - let _4: *const T; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - let mut _5: bool; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - let mut _6: usize; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - let mut _8: usize; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - let mut _9: *mut T; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - let mut _11: std::ptr::NonNull; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - let mut _12: *const T; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL + scope 3 (inlined core::slice::::iter) { + debug self => _1; + scope 4 (inlined std::slice::Iter::<'_, T>::new) { + debug slice => _1; + let _4: *const T; + let mut _5: bool; + let mut _6: usize; + let mut _8: usize; + let mut _9: *mut T; + let mut _11: std::ptr::NonNull; + let mut _12: *const T; scope 5 { - debug ptr => _4; // in scope 5 at $SRC_DIR/core/src/slice/iter.rs:LL:COL + debug ptr => _4; scope 6 { - let _7: *const T; // in scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL + let _7: *const T; scope 7 { - debug end => _7; // in scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - scope 13 (inlined NonNull::::new_unchecked) { // at $SRC_DIR/core/src/slice/iter.rs:LL:COL - debug ptr => _9; // in scope 13 at $SRC_DIR/core/src/ptr/non_null.rs:LL:COL - let mut _10: *const T; // in scope 13 at $SRC_DIR/core/src/ptr/non_null.rs:LL:COL + debug end => _7; + scope 13 (inlined NonNull::::new_unchecked) { + debug ptr => _9; + let mut _10: *const T; scope 14 { - scope 15 (inlined NonNull::::new_unchecked::runtime::) { // at $SRC_DIR/core/src/intrinsics.rs:LL:COL - debug ptr => _9; // in scope 15 at $SRC_DIR/core/src/intrinsics.rs:LL:COL - scope 16 (inlined ptr::mut_ptr::::is_null) { // at $SRC_DIR/core/src/ptr/non_null.rs:LL:COL - debug self => _9; // in scope 16 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - let mut _22: *mut u8; // in scope 16 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL + scope 15 (inlined NonNull::::new_unchecked::runtime::) { + debug ptr => _9; + scope 16 (inlined ptr::mut_ptr::::is_null) { + debug self => _9; + let mut _22: *mut u8; scope 17 { - scope 18 (inlined ptr::mut_ptr::::is_null::runtime_impl) { // at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - debug ptr => _22; // in scope 18 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - scope 19 (inlined ptr::mut_ptr::::addr) { // at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - debug self => _22; // in scope 19 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL + scope 18 (inlined ptr::mut_ptr::::is_null::runtime_impl) { + debug ptr => _22; + scope 19 (inlined ptr::mut_ptr::::addr) { + debug self => _22; scope 20 { - scope 21 (inlined ptr::mut_ptr::::cast::<()>) { // at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - debug self => _22; // in scope 21 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL + scope 21 (inlined ptr::mut_ptr::::cast::<()>) { + debug self => _22; } } } @@ -63,138 +63,127 @@ fn forward_loop(_1: &[T], _2: impl Fn(&T)) -> () { } } } - scope 9 (inlined invalid::) { // at $SRC_DIR/core/src/slice/iter.rs:LL:COL - debug addr => _8; // in scope 9 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL + scope 9 (inlined invalid::) { + debug addr => _8; scope 10 { } } - scope 11 (inlined ptr::const_ptr::::add) { // at $SRC_DIR/core/src/slice/iter.rs:LL:COL - debug self => _4; // in scope 11 at $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL - debug count => _6; // in scope 11 at $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL + scope 11 (inlined ptr::const_ptr::::add) { + debug self => _4; + debug count => _6; scope 12 { } } } } - scope 8 (inlined core::slice::::as_ptr) { // at $SRC_DIR/core/src/slice/iter.rs:LL:COL - debug self => _1; // in scope 8 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - let mut _3: *const [T]; // in scope 8 at $SRC_DIR/core/src/slice/mod.rs:LL:COL + scope 8 (inlined core::slice::::as_ptr) { + debug self => _1; + let mut _3: *const [T]; } } } - scope 22 (inlined as IntoIterator>::into_iter) { // at $DIR/slice_iter.rs:29:14: 29:26 - debug self => _13; // in scope 22 at $SRC_DIR/core/src/iter/traits/collect.rs:LL:COL + scope 22 (inlined as IntoIterator>::into_iter) { + debug self => _13; } bb0: { - StorageLive(_4); // scope 3 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - StorageLive(_3); // scope 8 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - _3 = &raw const (*_1); // scope 8 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - _4 = move _3 as *const T (PtrToPtr); // scope 8 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - StorageDead(_3); // scope 8 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - StorageLive(_7); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageLive(_5); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _5 = const _; // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - switchInt(move _5) -> [0: bb1, otherwise: bb2]; // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL + StorageLive(_4); + StorageLive(_3); + _3 = &raw const (*_1); + _4 = move _3 as *const T (PtrToPtr); + StorageDead(_3); + StorageLive(_7); + StorageLive(_5); + _5 = const _; + switchInt(move _5) -> [0: bb1, otherwise: bb2]; } bb1: { - StorageLive(_6); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _6 = Len((*_1)); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _7 = Offset(_4, _6); // scope 12 at $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL - StorageDead(_6); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - goto -> bb3; // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL + StorageLive(_6); + _6 = Len((*_1)); + _7 = Offset(_4, _6); + StorageDead(_6); + goto -> bb3; } bb2: { - StorageLive(_8); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _8 = Len((*_1)); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _7 = _8 as *const T (Transmute); // scope 10 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL - StorageDead(_8); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - goto -> bb3; // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL + StorageLive(_8); + _8 = Len((*_1)); + _7 = _8 as *const T (Transmute); + StorageDead(_8); + goto -> bb3; } bb3: { - StorageDead(_5); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageLive(_11); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageLive(_9); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _9 = _4 as *mut T (PtrToPtr); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageLive(_10); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageLive(_22); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _10 = _9 as *const T (Pointer(MutToConstPointer)); // scope 14 at $SRC_DIR/core/src/ptr/non_null.rs:LL:COL - _11 = NonNull:: { pointer: _10 }; // scope 14 at $SRC_DIR/core/src/ptr/non_null.rs:LL:COL - StorageDead(_22); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageDead(_10); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageDead(_9); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageLive(_12); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _12 = _7; // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _13 = std::slice::Iter::<'_, T> { ptr: move _11, end: move _12, _marker: const ZeroSized: PhantomData<&T> }; // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - // mir::Constant - // + span: no-location - // + literal: Const { ty: PhantomData<&T>, val: Value() } - // adt - // + user_ty: UserType(1) - StorageDead(_12); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageDead(_11); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageDead(_7); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageDead(_4); // scope 3 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - StorageLive(_14); // scope 0 at $DIR/slice_iter.rs:+1:14: +1:26 - _14 = move _13; // scope 0 at $DIR/slice_iter.rs:+1:14: +1:26 - goto -> bb4; // scope 1 at $DIR/slice_iter.rs:+1:5: +3:6 + StorageDead(_5); + StorageLive(_11); + StorageLive(_9); + _9 = _4 as *mut T (PtrToPtr); + StorageLive(_10); + StorageLive(_22); + _10 = _9 as *const T (Pointer(MutToConstPointer)); + _11 = NonNull:: { pointer: _10 }; + StorageDead(_22); + StorageDead(_10); + StorageDead(_9); + StorageLive(_12); + _12 = _7; + _13 = std::slice::Iter::<'_, T> { ptr: move _11, end: move _12, _marker: const ZeroSized: PhantomData<&T> }; + StorageDead(_12); + StorageDead(_11); + StorageDead(_7); + StorageDead(_4); + StorageLive(_14); + _14 = move _13; + goto -> bb4; } bb4: { - StorageLive(_16); // scope 1 at $DIR/slice_iter.rs:+1:14: +1:26 - _15 = &mut _14; // scope 1 at $DIR/slice_iter.rs:+1:14: +1:26 - _16 = as Iterator>::next(_15) -> [return: bb5, unwind: bb11]; // scope 1 at $DIR/slice_iter.rs:+1:14: +1:26 - // mir::Constant - // + span: $DIR/slice_iter.rs:29:14: 29:26 - // + literal: Const { ty: for<'a> fn(&'a mut std::slice::Iter<'_, T>) -> Option< as Iterator>::Item> { as Iterator>::next}, val: Value() } + StorageLive(_16); + _15 = &mut _14; + _16 = as Iterator>::next(_15) -> [return: bb5, unwind: bb11]; } bb5: { - _17 = discriminant(_16); // scope 1 at $DIR/slice_iter.rs:+1:14: +1:26 - switchInt(move _17) -> [0: bb6, 1: bb8, otherwise: bb10]; // scope 1 at $DIR/slice_iter.rs:+1:14: +1:26 + _17 = discriminant(_16); + switchInt(move _17) -> [0: bb6, 1: bb8, otherwise: bb10]; } bb6: { - StorageDead(_16); // scope 1 at $DIR/slice_iter.rs:+3:5: +3:6 - StorageDead(_14); // scope 0 at $DIR/slice_iter.rs:+3:5: +3:6 - drop(_2) -> bb7; // scope 0 at $DIR/slice_iter.rs:+4:1: +4:2 + StorageDead(_16); + StorageDead(_14); + drop(_2) -> bb7; } bb7: { - return; // scope 0 at $DIR/slice_iter.rs:+4:2: +4:2 + return; } bb8: { - _18 = ((_16 as Some).0: &T); // scope 1 at $DIR/slice_iter.rs:+1:9: +1:10 - StorageLive(_19); // scope 2 at $DIR/slice_iter.rs:+2:9: +2:10 - _19 = &_2; // scope 2 at $DIR/slice_iter.rs:+2:9: +2:10 - StorageLive(_20); // scope 2 at $DIR/slice_iter.rs:+2:9: +2:13 - _20 = (_18,); // scope 2 at $DIR/slice_iter.rs:+2:9: +2:13 - _21 = >::call(move _19, move _20) -> [return: bb9, unwind: bb11]; // scope 2 at $DIR/slice_iter.rs:+2:9: +2:13 - // mir::Constant - // + span: $DIR/slice_iter.rs:30:9: 30:10 - // + literal: Const { ty: for<'a> extern "rust-call" fn(&'a impl Fn(&T), (&T,)) -> >::Output {>::call}, val: Value() } + _18 = ((_16 as Some).0: &T); + StorageLive(_19); + _19 = &_2; + StorageLive(_20); + _20 = (_18,); + _21 = >::call(move _19, move _20) -> [return: bb9, unwind: bb11]; } bb9: { - StorageDead(_20); // scope 2 at $DIR/slice_iter.rs:+2:12: +2:13 - StorageDead(_19); // scope 2 at $DIR/slice_iter.rs:+2:12: +2:13 - StorageDead(_16); // scope 1 at $DIR/slice_iter.rs:+3:5: +3:6 - goto -> bb4; // scope 1 at $DIR/slice_iter.rs:+1:5: +3:6 + StorageDead(_20); + StorageDead(_19); + StorageDead(_16); + goto -> bb4; } bb10: { - unreachable; // scope 1 at $DIR/slice_iter.rs:+1:14: +1:26 + unreachable; } bb11 (cleanup): { - drop(_2) -> [return: bb12, unwind terminate]; // scope 0 at $DIR/slice_iter.rs:+4:1: +4:2 + drop(_2) -> [return: bb12, unwind terminate]; } bb12 (cleanup): { - resume; // scope 0 at $DIR/slice_iter.rs:+0:1: +4:2 + resume; } } diff --git a/tests/mir-opt/pre-codegen/slice_iter.range_loop.PreCodegen.after.panic-abort.mir b/tests/mir-opt/pre-codegen/slice_iter.range_loop.PreCodegen.after.panic-abort.mir index 119b68bdac402..00177033bbfb2 100644 --- a/tests/mir-opt/pre-codegen/slice_iter.range_loop.PreCodegen.after.panic-abort.mir +++ b/tests/mir-opt/pre-codegen/slice_iter.range_loop.PreCodegen.after.panic-abort.mir @@ -1,153 +1,147 @@ // MIR for `range_loop` after PreCodegen fn range_loop(_1: &[T], _2: impl Fn(usize, &T)) -> () { - debug slice => _1; // in scope 0 at $DIR/slice_iter.rs:+0:26: +0:31 - debug f => _2; // in scope 0 at $DIR/slice_iter.rs:+0:42: +0:43 - let mut _0: (); // return place in scope 0 at $DIR/slice_iter.rs:+0:65: +0:65 - let mut _3: usize; // in scope 0 at $DIR/slice_iter.rs:+1:17: +1:28 - let mut _4: std::ops::Range; // in scope 0 at $DIR/slice_iter.rs:+1:14: +1:28 - let mut _5: std::ops::Range; // in scope 0 at $DIR/slice_iter.rs:+1:14: +1:28 - let mut _6: &mut std::ops::Range; // in scope 0 at $DIR/slice_iter.rs:+1:14: +1:28 - let mut _12: std::option::Option; // in scope 0 at $DIR/slice_iter.rs:+1:14: +1:28 - let mut _15: isize; // in scope 0 at $DIR/slice_iter.rs:+1:5: +4:6 - let mut _17: usize; // in scope 0 at $DIR/slice_iter.rs:+2:18: +2:26 - let mut _18: bool; // in scope 0 at $DIR/slice_iter.rs:+2:18: +2:26 - let mut _20: &impl Fn(usize, &T); // in scope 0 at $DIR/slice_iter.rs:+3:9: +3:10 - let mut _21: (usize, &T); // in scope 0 at $DIR/slice_iter.rs:+3:9: +3:16 - let _22: (); // in scope 0 at $DIR/slice_iter.rs:+1:14: +1:28 + debug slice => _1; + debug f => _2; + let mut _0: (); + let mut _3: usize; + let mut _4: std::ops::Range; + let mut _5: std::ops::Range; + let mut _6: &mut std::ops::Range; + let mut _12: std::option::Option; + let mut _15: isize; + let mut _17: usize; + let mut _18: bool; + let mut _20: &impl Fn(usize, &T); + let mut _21: (usize, &T); + let _22: (); scope 1 { - debug iter => _5; // in scope 1 at $DIR/slice_iter.rs:+1:14: +1:28 - let _16: usize; // in scope 1 at $DIR/slice_iter.rs:+1:9: +1:10 + debug iter => _5; + let _16: usize; scope 2 { - debug i => _16; // in scope 2 at $DIR/slice_iter.rs:+1:9: +1:10 - let _19: &T; // in scope 2 at $DIR/slice_iter.rs:+2:13: +2:14 + debug i => _16; + let _19: &T; scope 3 { - debug x => _19; // in scope 3 at $DIR/slice_iter.rs:+2:13: +2:14 + debug x => _19; } } - scope 5 (inlined iter::range::>::next) { // at $DIR/slice_iter.rs:50:14: 50:28 - debug self => _6; // in scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - scope 6 (inlined as iter::range::RangeIteratorImpl>::spec_next) { // at $SRC_DIR/core/src/iter/range.rs:LL:COL - debug self => _6; // in scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL - let mut _7: &usize; // in scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL - let mut _8: &usize; // in scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL - let mut _11: bool; // in scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL - let _13: usize; // in scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL - let mut _14: usize; // in scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL + scope 5 (inlined iter::range::>::next) { + debug self => _6; + scope 6 (inlined as iter::range::RangeIteratorImpl>::spec_next) { + debug self => _6; + let mut _7: &usize; + let mut _8: &usize; + let mut _11: bool; + let _13: usize; + let mut _14: usize; scope 7 { - debug old => _13; // in scope 7 at $SRC_DIR/core/src/iter/range.rs:LL:COL + debug old => _13; scope 8 { } } - scope 9 (inlined cmp::impls::::lt) { // at $SRC_DIR/core/src/iter/range.rs:LL:COL - debug self => _7; // in scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL - debug other => _8; // in scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL - let mut _9: usize; // in scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL - let mut _10: usize; // in scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL + scope 9 (inlined cmp::impls::::lt) { + debug self => _7; + debug other => _8; + let mut _9: usize; + let mut _10: usize; } } } } - scope 4 (inlined as IntoIterator>::into_iter) { // at $DIR/slice_iter.rs:50:14: 50:28 - debug self => _4; // in scope 4 at $SRC_DIR/core/src/iter/traits/collect.rs:LL:COL + scope 4 (inlined as IntoIterator>::into_iter) { + debug self => _4; } bb0: { - StorageLive(_3); // scope 0 at $DIR/slice_iter.rs:+1:17: +1:28 - _3 = Len((*_1)); // scope 0 at $DIR/slice_iter.rs:+1:17: +1:28 - _4 = std::ops::Range:: { start: const 0_usize, end: move _3 }; // scope 0 at $DIR/slice_iter.rs:+1:14: +1:28 - StorageDead(_3); // scope 0 at $DIR/slice_iter.rs:+1:27: +1:28 - StorageLive(_5); // scope 0 at $DIR/slice_iter.rs:+1:14: +1:28 - _5 = move _4; // scope 0 at $DIR/slice_iter.rs:+1:14: +1:28 - goto -> bb1; // scope 1 at $DIR/slice_iter.rs:+1:5: +4:6 + StorageLive(_3); + _3 = Len((*_1)); + _4 = std::ops::Range:: { start: const 0_usize, end: move _3 }; + StorageDead(_3); + StorageLive(_5); + _5 = move _4; + goto -> bb1; } bb1: { - StorageLive(_12); // scope 1 at $DIR/slice_iter.rs:+1:14: +1:28 - _6 = &mut _5; // scope 1 at $DIR/slice_iter.rs:+1:14: +1:28 - StorageLive(_13); // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageLive(_11); // scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageLive(_7); // scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL - _7 = &((*_6).0: usize); // scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageLive(_8); // scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL - _8 = &((*_6).1: usize); // scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageLive(_9); // scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL - _9 = (*_7); // scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageLive(_10); // scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL - _10 = (*_8); // scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL - _11 = Lt(move _9, move _10); // scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageDead(_10); // scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageDead(_9); // scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageDead(_8); // scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageDead(_7); // scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL - switchInt(move _11) -> [0: bb2, otherwise: bb3]; // scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL + StorageLive(_12); + _6 = &mut _5; + StorageLive(_13); + StorageLive(_11); + StorageLive(_7); + _7 = &((*_6).0: usize); + StorageLive(_8); + _8 = &((*_6).1: usize); + StorageLive(_9); + _9 = (*_7); + StorageLive(_10); + _10 = (*_8); + _11 = Lt(move _9, move _10); + StorageDead(_10); + StorageDead(_9); + StorageDead(_8); + StorageDead(_7); + switchInt(move _11) -> [0: bb2, otherwise: bb3]; } bb2: { - _12 = Option::::None; // scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL - goto -> bb5; // scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL + _12 = Option::::None; + goto -> bb5; } bb3: { - _13 = ((*_6).0: usize); // scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageLive(_14); // scope 7 at $SRC_DIR/core/src/iter/range.rs:LL:COL - _14 = ::forward_unchecked(_13, const 1_usize) -> [return: bb4, unwind unreachable]; // scope 8 at $SRC_DIR/core/src/iter/range.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/core/src/iter/range.rs:LL:COL - // + literal: Const { ty: unsafe fn(usize, usize) -> usize {::forward_unchecked}, val: Value() } + _13 = ((*_6).0: usize); + StorageLive(_14); + _14 = ::forward_unchecked(_13, const 1_usize) -> [return: bb4, unwind unreachable]; } bb4: { - ((*_6).0: usize) = move _14; // scope 7 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageDead(_14); // scope 7 at $SRC_DIR/core/src/iter/range.rs:LL:COL - _12 = Option::::Some(_13); // scope 7 at $SRC_DIR/core/src/iter/range.rs:LL:COL - goto -> bb5; // scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL + ((*_6).0: usize) = move _14; + StorageDead(_14); + _12 = Option::::Some(_13); + goto -> bb5; } bb5: { - StorageDead(_11); // scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageDead(_13); // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - _15 = discriminant(_12); // scope 1 at $DIR/slice_iter.rs:+1:14: +1:28 - switchInt(move _15) -> [0: bb6, 1: bb8, otherwise: bb11]; // scope 1 at $DIR/slice_iter.rs:+1:14: +1:28 + StorageDead(_11); + StorageDead(_13); + _15 = discriminant(_12); + switchInt(move _15) -> [0: bb6, 1: bb8, otherwise: bb11]; } bb6: { - StorageDead(_12); // scope 1 at $DIR/slice_iter.rs:+4:5: +4:6 - StorageDead(_5); // scope 0 at $DIR/slice_iter.rs:+4:5: +4:6 - drop(_2) -> [return: bb7, unwind unreachable]; // scope 0 at $DIR/slice_iter.rs:+5:1: +5:2 + StorageDead(_12); + StorageDead(_5); + drop(_2) -> [return: bb7, unwind unreachable]; } bb7: { - return; // scope 0 at $DIR/slice_iter.rs:+5:2: +5:2 + return; } bb8: { - _16 = ((_12 as Some).0: usize); // scope 1 at $DIR/slice_iter.rs:+1:9: +1:10 - _17 = Len((*_1)); // scope 2 at $DIR/slice_iter.rs:+2:18: +2:26 - _18 = Lt(_16, _17); // scope 2 at $DIR/slice_iter.rs:+2:18: +2:26 - assert(move _18, "index out of bounds: the length is {} but the index is {}", move _17, _16) -> [success: bb9, unwind unreachable]; // scope 2 at $DIR/slice_iter.rs:+2:18: +2:26 + _16 = ((_12 as Some).0: usize); + _17 = Len((*_1)); + _18 = Lt(_16, _17); + assert(move _18, "index out of bounds: the length is {} but the index is {}", move _17, _16) -> [success: bb9, unwind unreachable]; } bb9: { - _19 = &(*_1)[_16]; // scope 2 at $DIR/slice_iter.rs:+2:17: +2:26 - StorageLive(_20); // scope 3 at $DIR/slice_iter.rs:+3:9: +3:10 - _20 = &_2; // scope 3 at $DIR/slice_iter.rs:+3:9: +3:10 - StorageLive(_21); // scope 3 at $DIR/slice_iter.rs:+3:9: +3:16 - _21 = (_16, _19); // scope 3 at $DIR/slice_iter.rs:+3:9: +3:16 - _22 = >::call(move _20, move _21) -> [return: bb10, unwind unreachable]; // scope 3 at $DIR/slice_iter.rs:+3:9: +3:16 - // mir::Constant - // + span: $DIR/slice_iter.rs:52:9: 52:10 - // + literal: Const { ty: for<'a> extern "rust-call" fn(&'a impl Fn(usize, &T), (usize, &T)) -> >::Output {>::call}, val: Value() } + _19 = &(*_1)[_16]; + StorageLive(_20); + _20 = &_2; + StorageLive(_21); + _21 = (_16, _19); + _22 = >::call(move _20, move _21) -> [return: bb10, unwind unreachable]; } bb10: { - StorageDead(_21); // scope 3 at $DIR/slice_iter.rs:+3:15: +3:16 - StorageDead(_20); // scope 3 at $DIR/slice_iter.rs:+3:15: +3:16 - StorageDead(_12); // scope 1 at $DIR/slice_iter.rs:+4:5: +4:6 - goto -> bb1; // scope 1 at $DIR/slice_iter.rs:+1:5: +4:6 + StorageDead(_21); + StorageDead(_20); + StorageDead(_12); + goto -> bb1; } bb11: { - unreachable; // scope 1 at $DIR/slice_iter.rs:+1:14: +1:28 + unreachable; } } diff --git a/tests/mir-opt/pre-codegen/slice_iter.range_loop.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/pre-codegen/slice_iter.range_loop.PreCodegen.after.panic-unwind.mir index 2ec1ffd875c73..5ce8143d98b3d 100644 --- a/tests/mir-opt/pre-codegen/slice_iter.range_loop.PreCodegen.after.panic-unwind.mir +++ b/tests/mir-opt/pre-codegen/slice_iter.range_loop.PreCodegen.after.panic-unwind.mir @@ -1,161 +1,155 @@ // MIR for `range_loop` after PreCodegen fn range_loop(_1: &[T], _2: impl Fn(usize, &T)) -> () { - debug slice => _1; // in scope 0 at $DIR/slice_iter.rs:+0:26: +0:31 - debug f => _2; // in scope 0 at $DIR/slice_iter.rs:+0:42: +0:43 - let mut _0: (); // return place in scope 0 at $DIR/slice_iter.rs:+0:65: +0:65 - let mut _3: usize; // in scope 0 at $DIR/slice_iter.rs:+1:17: +1:28 - let mut _4: std::ops::Range; // in scope 0 at $DIR/slice_iter.rs:+1:14: +1:28 - let mut _5: std::ops::Range; // in scope 0 at $DIR/slice_iter.rs:+1:14: +1:28 - let mut _6: &mut std::ops::Range; // in scope 0 at $DIR/slice_iter.rs:+1:14: +1:28 - let mut _12: std::option::Option; // in scope 0 at $DIR/slice_iter.rs:+1:14: +1:28 - let mut _15: isize; // in scope 0 at $DIR/slice_iter.rs:+1:5: +4:6 - let mut _17: usize; // in scope 0 at $DIR/slice_iter.rs:+2:18: +2:26 - let mut _18: bool; // in scope 0 at $DIR/slice_iter.rs:+2:18: +2:26 - let mut _20: &impl Fn(usize, &T); // in scope 0 at $DIR/slice_iter.rs:+3:9: +3:10 - let mut _21: (usize, &T); // in scope 0 at $DIR/slice_iter.rs:+3:9: +3:16 - let _22: (); // in scope 0 at $DIR/slice_iter.rs:+1:14: +1:28 + debug slice => _1; + debug f => _2; + let mut _0: (); + let mut _3: usize; + let mut _4: std::ops::Range; + let mut _5: std::ops::Range; + let mut _6: &mut std::ops::Range; + let mut _12: std::option::Option; + let mut _15: isize; + let mut _17: usize; + let mut _18: bool; + let mut _20: &impl Fn(usize, &T); + let mut _21: (usize, &T); + let _22: (); scope 1 { - debug iter => _5; // in scope 1 at $DIR/slice_iter.rs:+1:14: +1:28 - let _16: usize; // in scope 1 at $DIR/slice_iter.rs:+1:9: +1:10 + debug iter => _5; + let _16: usize; scope 2 { - debug i => _16; // in scope 2 at $DIR/slice_iter.rs:+1:9: +1:10 - let _19: &T; // in scope 2 at $DIR/slice_iter.rs:+2:13: +2:14 + debug i => _16; + let _19: &T; scope 3 { - debug x => _19; // in scope 3 at $DIR/slice_iter.rs:+2:13: +2:14 + debug x => _19; } } - scope 5 (inlined iter::range::>::next) { // at $DIR/slice_iter.rs:50:14: 50:28 - debug self => _6; // in scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - scope 6 (inlined as iter::range::RangeIteratorImpl>::spec_next) { // at $SRC_DIR/core/src/iter/range.rs:LL:COL - debug self => _6; // in scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL - let mut _7: &usize; // in scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL - let mut _8: &usize; // in scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL - let mut _11: bool; // in scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL - let _13: usize; // in scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL - let mut _14: usize; // in scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL + scope 5 (inlined iter::range::>::next) { + debug self => _6; + scope 6 (inlined as iter::range::RangeIteratorImpl>::spec_next) { + debug self => _6; + let mut _7: &usize; + let mut _8: &usize; + let mut _11: bool; + let _13: usize; + let mut _14: usize; scope 7 { - debug old => _13; // in scope 7 at $SRC_DIR/core/src/iter/range.rs:LL:COL + debug old => _13; scope 8 { } } - scope 9 (inlined cmp::impls::::lt) { // at $SRC_DIR/core/src/iter/range.rs:LL:COL - debug self => _7; // in scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL - debug other => _8; // in scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL - let mut _9: usize; // in scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL - let mut _10: usize; // in scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL + scope 9 (inlined cmp::impls::::lt) { + debug self => _7; + debug other => _8; + let mut _9: usize; + let mut _10: usize; } } } } - scope 4 (inlined as IntoIterator>::into_iter) { // at $DIR/slice_iter.rs:50:14: 50:28 - debug self => _4; // in scope 4 at $SRC_DIR/core/src/iter/traits/collect.rs:LL:COL + scope 4 (inlined as IntoIterator>::into_iter) { + debug self => _4; } bb0: { - StorageLive(_3); // scope 0 at $DIR/slice_iter.rs:+1:17: +1:28 - _3 = Len((*_1)); // scope 0 at $DIR/slice_iter.rs:+1:17: +1:28 - _4 = std::ops::Range:: { start: const 0_usize, end: move _3 }; // scope 0 at $DIR/slice_iter.rs:+1:14: +1:28 - StorageDead(_3); // scope 0 at $DIR/slice_iter.rs:+1:27: +1:28 - StorageLive(_5); // scope 0 at $DIR/slice_iter.rs:+1:14: +1:28 - _5 = move _4; // scope 0 at $DIR/slice_iter.rs:+1:14: +1:28 - goto -> bb1; // scope 1 at $DIR/slice_iter.rs:+1:5: +4:6 + StorageLive(_3); + _3 = Len((*_1)); + _4 = std::ops::Range:: { start: const 0_usize, end: move _3 }; + StorageDead(_3); + StorageLive(_5); + _5 = move _4; + goto -> bb1; } bb1: { - StorageLive(_12); // scope 1 at $DIR/slice_iter.rs:+1:14: +1:28 - _6 = &mut _5; // scope 1 at $DIR/slice_iter.rs:+1:14: +1:28 - StorageLive(_13); // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageLive(_11); // scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageLive(_7); // scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL - _7 = &((*_6).0: usize); // scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageLive(_8); // scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL - _8 = &((*_6).1: usize); // scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageLive(_9); // scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL - _9 = (*_7); // scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageLive(_10); // scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL - _10 = (*_8); // scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL - _11 = Lt(move _9, move _10); // scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageDead(_10); // scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageDead(_9); // scope 9 at $SRC_DIR/core/src/cmp.rs:LL:COL - StorageDead(_8); // scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageDead(_7); // scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL - switchInt(move _11) -> [0: bb2, otherwise: bb3]; // scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL + StorageLive(_12); + _6 = &mut _5; + StorageLive(_13); + StorageLive(_11); + StorageLive(_7); + _7 = &((*_6).0: usize); + StorageLive(_8); + _8 = &((*_6).1: usize); + StorageLive(_9); + _9 = (*_7); + StorageLive(_10); + _10 = (*_8); + _11 = Lt(move _9, move _10); + StorageDead(_10); + StorageDead(_9); + StorageDead(_8); + StorageDead(_7); + switchInt(move _11) -> [0: bb2, otherwise: bb3]; } bb2: { - _12 = Option::::None; // scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL - goto -> bb5; // scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL + _12 = Option::::None; + goto -> bb5; } bb3: { - _13 = ((*_6).0: usize); // scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageLive(_14); // scope 7 at $SRC_DIR/core/src/iter/range.rs:LL:COL - _14 = ::forward_unchecked(_13, const 1_usize) -> [return: bb4, unwind: bb12]; // scope 8 at $SRC_DIR/core/src/iter/range.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/core/src/iter/range.rs:LL:COL - // + literal: Const { ty: unsafe fn(usize, usize) -> usize {::forward_unchecked}, val: Value() } + _13 = ((*_6).0: usize); + StorageLive(_14); + _14 = ::forward_unchecked(_13, const 1_usize) -> [return: bb4, unwind: bb12]; } bb4: { - ((*_6).0: usize) = move _14; // scope 7 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageDead(_14); // scope 7 at $SRC_DIR/core/src/iter/range.rs:LL:COL - _12 = Option::::Some(_13); // scope 7 at $SRC_DIR/core/src/iter/range.rs:LL:COL - goto -> bb5; // scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL + ((*_6).0: usize) = move _14; + StorageDead(_14); + _12 = Option::::Some(_13); + goto -> bb5; } bb5: { - StorageDead(_11); // scope 6 at $SRC_DIR/core/src/iter/range.rs:LL:COL - StorageDead(_13); // scope 5 at $SRC_DIR/core/src/iter/range.rs:LL:COL - _15 = discriminant(_12); // scope 1 at $DIR/slice_iter.rs:+1:14: +1:28 - switchInt(move _15) -> [0: bb6, 1: bb8, otherwise: bb11]; // scope 1 at $DIR/slice_iter.rs:+1:14: +1:28 + StorageDead(_11); + StorageDead(_13); + _15 = discriminant(_12); + switchInt(move _15) -> [0: bb6, 1: bb8, otherwise: bb11]; } bb6: { - StorageDead(_12); // scope 1 at $DIR/slice_iter.rs:+4:5: +4:6 - StorageDead(_5); // scope 0 at $DIR/slice_iter.rs:+4:5: +4:6 - drop(_2) -> bb7; // scope 0 at $DIR/slice_iter.rs:+5:1: +5:2 + StorageDead(_12); + StorageDead(_5); + drop(_2) -> bb7; } bb7: { - return; // scope 0 at $DIR/slice_iter.rs:+5:2: +5:2 + return; } bb8: { - _16 = ((_12 as Some).0: usize); // scope 1 at $DIR/slice_iter.rs:+1:9: +1:10 - _17 = Len((*_1)); // scope 2 at $DIR/slice_iter.rs:+2:18: +2:26 - _18 = Lt(_16, _17); // scope 2 at $DIR/slice_iter.rs:+2:18: +2:26 - assert(move _18, "index out of bounds: the length is {} but the index is {}", move _17, _16) -> [success: bb9, unwind: bb12]; // scope 2 at $DIR/slice_iter.rs:+2:18: +2:26 + _16 = ((_12 as Some).0: usize); + _17 = Len((*_1)); + _18 = Lt(_16, _17); + assert(move _18, "index out of bounds: the length is {} but the index is {}", move _17, _16) -> [success: bb9, unwind: bb12]; } bb9: { - _19 = &(*_1)[_16]; // scope 2 at $DIR/slice_iter.rs:+2:17: +2:26 - StorageLive(_20); // scope 3 at $DIR/slice_iter.rs:+3:9: +3:10 - _20 = &_2; // scope 3 at $DIR/slice_iter.rs:+3:9: +3:10 - StorageLive(_21); // scope 3 at $DIR/slice_iter.rs:+3:9: +3:16 - _21 = (_16, _19); // scope 3 at $DIR/slice_iter.rs:+3:9: +3:16 - _22 = >::call(move _20, move _21) -> [return: bb10, unwind: bb12]; // scope 3 at $DIR/slice_iter.rs:+3:9: +3:16 - // mir::Constant - // + span: $DIR/slice_iter.rs:52:9: 52:10 - // + literal: Const { ty: for<'a> extern "rust-call" fn(&'a impl Fn(usize, &T), (usize, &T)) -> >::Output {>::call}, val: Value() } + _19 = &(*_1)[_16]; + StorageLive(_20); + _20 = &_2; + StorageLive(_21); + _21 = (_16, _19); + _22 = >::call(move _20, move _21) -> [return: bb10, unwind: bb12]; } bb10: { - StorageDead(_21); // scope 3 at $DIR/slice_iter.rs:+3:15: +3:16 - StorageDead(_20); // scope 3 at $DIR/slice_iter.rs:+3:15: +3:16 - StorageDead(_12); // scope 1 at $DIR/slice_iter.rs:+4:5: +4:6 - goto -> bb1; // scope 1 at $DIR/slice_iter.rs:+1:5: +4:6 + StorageDead(_21); + StorageDead(_20); + StorageDead(_12); + goto -> bb1; } bb11: { - unreachable; // scope 1 at $DIR/slice_iter.rs:+1:14: +1:28 + unreachable; } bb12 (cleanup): { - drop(_2) -> [return: bb13, unwind terminate]; // scope 0 at $DIR/slice_iter.rs:+5:1: +5:2 + drop(_2) -> [return: bb13, unwind terminate]; } bb13 (cleanup): { - resume; // scope 0 at $DIR/slice_iter.rs:+0:1: +5:2 + resume; } } diff --git a/tests/mir-opt/pre-codegen/slice_iter.reverse_loop.PreCodegen.after.panic-abort.mir b/tests/mir-opt/pre-codegen/slice_iter.reverse_loop.PreCodegen.after.panic-abort.mir index bb76212c8bab4..851d331136517 100644 --- a/tests/mir-opt/pre-codegen/slice_iter.reverse_loop.PreCodegen.after.panic-abort.mir +++ b/tests/mir-opt/pre-codegen/slice_iter.reverse_loop.PreCodegen.after.panic-abort.mir @@ -1,63 +1,63 @@ // MIR for `reverse_loop` after PreCodegen fn reverse_loop(_1: &[T], _2: impl Fn(&T)) -> () { - debug slice => _1; // in scope 0 at $DIR/slice_iter.rs:+0:28: +0:33 - debug f => _2; // in scope 0 at $DIR/slice_iter.rs:+0:44: +0:45 - let mut _0: (); // return place in scope 0 at $DIR/slice_iter.rs:+0:60: +0:60 - let mut _13: std::slice::Iter<'_, T>; // in scope 0 at $DIR/slice_iter.rs:+1:14: +1:26 - let mut _14: std::iter::Rev>; // in scope 0 at $DIR/slice_iter.rs:+1:14: +1:32 - let mut _15: std::iter::Rev>; // in scope 0 at $DIR/slice_iter.rs:+1:14: +1:32 - let mut _16: &mut std::iter::Rev>; // in scope 0 at $DIR/slice_iter.rs:+1:14: +1:32 - let mut _18: std::option::Option<&T>; // in scope 0 at $DIR/slice_iter.rs:+1:14: +1:32 - let mut _19: isize; // in scope 0 at $DIR/slice_iter.rs:+1:5: +3:6 - let mut _21: &impl Fn(&T); // in scope 0 at $DIR/slice_iter.rs:+2:9: +2:10 - let mut _22: (&T,); // in scope 0 at $DIR/slice_iter.rs:+2:9: +2:13 - let _23: (); // in scope 0 at $DIR/slice_iter.rs:+1:14: +1:32 + debug slice => _1; + debug f => _2; + let mut _0: (); + let mut _13: std::slice::Iter<'_, T>; + let mut _14: std::iter::Rev>; + let mut _15: std::iter::Rev>; + let mut _16: &mut std::iter::Rev>; + let mut _18: std::option::Option<&T>; + let mut _19: isize; + let mut _21: &impl Fn(&T); + let mut _22: (&T,); + let _23: (); scope 1 { - debug iter => _15; // in scope 1 at $DIR/slice_iter.rs:+1:14: +1:32 - let _20: &T; // in scope 1 at $DIR/slice_iter.rs:+1:9: +1:10 + debug iter => _15; + let _20: &T; scope 2 { - debug x => _20; // in scope 2 at $DIR/slice_iter.rs:+1:9: +1:10 + debug x => _20; } - scope 25 (inlined > as Iterator>::next) { // at $DIR/slice_iter.rs:36:14: 36:32 - debug self => _16; // in scope 25 at $SRC_DIR/core/src/iter/adapters/rev.rs:LL:COL - let mut _17: &mut std::slice::Iter<'_, T>; // in scope 25 at $SRC_DIR/core/src/iter/adapters/rev.rs:LL:COL + scope 25 (inlined > as Iterator>::next) { + debug self => _16; + let mut _17: &mut std::slice::Iter<'_, T>; } } - scope 3 (inlined core::slice::::iter) { // at $DIR/slice_iter.rs:36:20: 36:26 - debug self => _1; // in scope 3 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - scope 4 (inlined std::slice::Iter::<'_, T>::new) { // at $SRC_DIR/core/src/slice/mod.rs:LL:COL - debug slice => _1; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - let _4: *const T; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - let mut _5: bool; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - let mut _6: usize; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - let mut _8: usize; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - let mut _9: *mut T; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - let mut _11: std::ptr::NonNull; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - let mut _12: *const T; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL + scope 3 (inlined core::slice::::iter) { + debug self => _1; + scope 4 (inlined std::slice::Iter::<'_, T>::new) { + debug slice => _1; + let _4: *const T; + let mut _5: bool; + let mut _6: usize; + let mut _8: usize; + let mut _9: *mut T; + let mut _11: std::ptr::NonNull; + let mut _12: *const T; scope 5 { - debug ptr => _4; // in scope 5 at $SRC_DIR/core/src/slice/iter.rs:LL:COL + debug ptr => _4; scope 6 { - let _7: *const T; // in scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL + let _7: *const T; scope 7 { - debug end => _7; // in scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - scope 13 (inlined NonNull::::new_unchecked) { // at $SRC_DIR/core/src/slice/iter.rs:LL:COL - debug ptr => _9; // in scope 13 at $SRC_DIR/core/src/ptr/non_null.rs:LL:COL - let mut _10: *const T; // in scope 13 at $SRC_DIR/core/src/ptr/non_null.rs:LL:COL + debug end => _7; + scope 13 (inlined NonNull::::new_unchecked) { + debug ptr => _9; + let mut _10: *const T; scope 14 { - scope 15 (inlined NonNull::::new_unchecked::runtime::) { // at $SRC_DIR/core/src/intrinsics.rs:LL:COL - debug ptr => _9; // in scope 15 at $SRC_DIR/core/src/intrinsics.rs:LL:COL - scope 16 (inlined ptr::mut_ptr::::is_null) { // at $SRC_DIR/core/src/ptr/non_null.rs:LL:COL - debug self => _9; // in scope 16 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - let mut _24: *mut u8; // in scope 16 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL + scope 15 (inlined NonNull::::new_unchecked::runtime::) { + debug ptr => _9; + scope 16 (inlined ptr::mut_ptr::::is_null) { + debug self => _9; + let mut _24: *mut u8; scope 17 { - scope 18 (inlined ptr::mut_ptr::::is_null::runtime_impl) { // at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - debug ptr => _24; // in scope 18 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - scope 19 (inlined ptr::mut_ptr::::addr) { // at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - debug self => _24; // in scope 19 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL + scope 18 (inlined ptr::mut_ptr::::is_null::runtime_impl) { + debug ptr => _24; + scope 19 (inlined ptr::mut_ptr::::addr) { + debug self => _24; scope 20 { - scope 21 (inlined ptr::mut_ptr::::cast::<()>) { // at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - debug self => _24; // in scope 21 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL + scope 21 (inlined ptr::mut_ptr::::cast::<()>) { + debug self => _24; } } } @@ -68,142 +68,131 @@ fn reverse_loop(_1: &[T], _2: impl Fn(&T)) -> () { } } } - scope 9 (inlined invalid::) { // at $SRC_DIR/core/src/slice/iter.rs:LL:COL - debug addr => _8; // in scope 9 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL + scope 9 (inlined invalid::) { + debug addr => _8; scope 10 { } } - scope 11 (inlined ptr::const_ptr::::add) { // at $SRC_DIR/core/src/slice/iter.rs:LL:COL - debug self => _4; // in scope 11 at $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL - debug count => _6; // in scope 11 at $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL + scope 11 (inlined ptr::const_ptr::::add) { + debug self => _4; + debug count => _6; scope 12 { } } } } - scope 8 (inlined core::slice::::as_ptr) { // at $SRC_DIR/core/src/slice/iter.rs:LL:COL - debug self => _1; // in scope 8 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - let mut _3: *const [T]; // in scope 8 at $SRC_DIR/core/src/slice/mod.rs:LL:COL + scope 8 (inlined core::slice::::as_ptr) { + debug self => _1; + let mut _3: *const [T]; } } } - scope 22 (inlined as Iterator>::rev) { // at $DIR/slice_iter.rs:36:27: 36:32 - debug self => _13; // in scope 22 at $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL - scope 23 (inlined Rev::>::new) { // at $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL - debug iter => _13; // in scope 23 at $SRC_DIR/core/src/iter/adapters/rev.rs:LL:COL + scope 22 (inlined as Iterator>::rev) { + debug self => _13; + scope 23 (inlined Rev::>::new) { + debug iter => _13; } } - scope 24 (inlined > as IntoIterator>::into_iter) { // at $DIR/slice_iter.rs:36:14: 36:32 - debug self => _14; // in scope 24 at $SRC_DIR/core/src/iter/traits/collect.rs:LL:COL + scope 24 (inlined > as IntoIterator>::into_iter) { + debug self => _14; } bb0: { - StorageLive(_13); // scope 0 at $DIR/slice_iter.rs:+1:14: +1:26 - StorageLive(_4); // scope 3 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - StorageLive(_3); // scope 8 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - _3 = &raw const (*_1); // scope 8 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - _4 = move _3 as *const T (PtrToPtr); // scope 8 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - StorageDead(_3); // scope 8 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - StorageLive(_7); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageLive(_5); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _5 = const _; // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - switchInt(move _5) -> [0: bb1, otherwise: bb2]; // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL + StorageLive(_13); + StorageLive(_4); + StorageLive(_3); + _3 = &raw const (*_1); + _4 = move _3 as *const T (PtrToPtr); + StorageDead(_3); + StorageLive(_7); + StorageLive(_5); + _5 = const _; + switchInt(move _5) -> [0: bb1, otherwise: bb2]; } bb1: { - StorageLive(_6); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _6 = Len((*_1)); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _7 = Offset(_4, _6); // scope 12 at $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL - StorageDead(_6); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - goto -> bb3; // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL + StorageLive(_6); + _6 = Len((*_1)); + _7 = Offset(_4, _6); + StorageDead(_6); + goto -> bb3; } bb2: { - StorageLive(_8); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _8 = Len((*_1)); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _7 = _8 as *const T (Transmute); // scope 10 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL - StorageDead(_8); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - goto -> bb3; // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL + StorageLive(_8); + _8 = Len((*_1)); + _7 = _8 as *const T (Transmute); + StorageDead(_8); + goto -> bb3; } bb3: { - StorageDead(_5); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageLive(_11); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageLive(_9); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _9 = _4 as *mut T (PtrToPtr); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageLive(_10); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageLive(_24); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _10 = _9 as *const T (Pointer(MutToConstPointer)); // scope 14 at $SRC_DIR/core/src/ptr/non_null.rs:LL:COL - _11 = NonNull:: { pointer: _10 }; // scope 14 at $SRC_DIR/core/src/ptr/non_null.rs:LL:COL - StorageDead(_24); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageDead(_10); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageDead(_9); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageLive(_12); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _12 = _7; // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _13 = std::slice::Iter::<'_, T> { ptr: move _11, end: move _12, _marker: const ZeroSized: PhantomData<&T> }; // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - // mir::Constant - // + span: no-location - // + literal: Const { ty: PhantomData<&T>, val: Value() } - // adt - // + user_ty: UserType(1) - StorageDead(_12); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageDead(_11); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageDead(_7); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageDead(_4); // scope 3 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - _14 = Rev::> { iter: move _13 }; // scope 23 at $SRC_DIR/core/src/iter/adapters/rev.rs:LL:COL - StorageDead(_13); // scope 0 at $DIR/slice_iter.rs:+1:31: +1:32 - StorageLive(_15); // scope 0 at $DIR/slice_iter.rs:+1:14: +1:32 - _15 = move _14; // scope 0 at $DIR/slice_iter.rs:+1:14: +1:32 - goto -> bb4; // scope 1 at $DIR/slice_iter.rs:+1:5: +3:6 + StorageDead(_5); + StorageLive(_11); + StorageLive(_9); + _9 = _4 as *mut T (PtrToPtr); + StorageLive(_10); + StorageLive(_24); + _10 = _9 as *const T (Pointer(MutToConstPointer)); + _11 = NonNull:: { pointer: _10 }; + StorageDead(_24); + StorageDead(_10); + StorageDead(_9); + StorageLive(_12); + _12 = _7; + _13 = std::slice::Iter::<'_, T> { ptr: move _11, end: move _12, _marker: const ZeroSized: PhantomData<&T> }; + StorageDead(_12); + StorageDead(_11); + StorageDead(_7); + StorageDead(_4); + _14 = Rev::> { iter: move _13 }; + StorageDead(_13); + StorageLive(_15); + _15 = move _14; + goto -> bb4; } bb4: { - StorageLive(_18); // scope 1 at $DIR/slice_iter.rs:+1:14: +1:32 - _16 = &mut _15; // scope 1 at $DIR/slice_iter.rs:+1:14: +1:32 - StorageLive(_17); // scope 25 at $SRC_DIR/core/src/iter/adapters/rev.rs:LL:COL - _17 = &mut ((*_16).0: std::slice::Iter<'_, T>); // scope 25 at $SRC_DIR/core/src/iter/adapters/rev.rs:LL:COL - _18 = as DoubleEndedIterator>::next_back(move _17) -> [return: bb5, unwind unreachable]; // scope 25 at $SRC_DIR/core/src/iter/adapters/rev.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/core/src/iter/adapters/rev.rs:LL:COL - // + literal: Const { ty: for<'a> fn(&'a mut std::slice::Iter<'_, T>) -> Option< as Iterator>::Item> { as DoubleEndedIterator>::next_back}, val: Value() } + StorageLive(_18); + _16 = &mut _15; + StorageLive(_17); + _17 = &mut ((*_16).0: std::slice::Iter<'_, T>); + _18 = as DoubleEndedIterator>::next_back(move _17) -> [return: bb5, unwind unreachable]; } bb5: { - StorageDead(_17); // scope 25 at $SRC_DIR/core/src/iter/adapters/rev.rs:LL:COL - _19 = discriminant(_18); // scope 1 at $DIR/slice_iter.rs:+1:14: +1:32 - switchInt(move _19) -> [0: bb6, 1: bb8, otherwise: bb10]; // scope 1 at $DIR/slice_iter.rs:+1:14: +1:32 + StorageDead(_17); + _19 = discriminant(_18); + switchInt(move _19) -> [0: bb6, 1: bb8, otherwise: bb10]; } bb6: { - StorageDead(_18); // scope 1 at $DIR/slice_iter.rs:+3:5: +3:6 - StorageDead(_15); // scope 0 at $DIR/slice_iter.rs:+3:5: +3:6 - drop(_2) -> [return: bb7, unwind unreachable]; // scope 0 at $DIR/slice_iter.rs:+4:1: +4:2 + StorageDead(_18); + StorageDead(_15); + drop(_2) -> [return: bb7, unwind unreachable]; } bb7: { - return; // scope 0 at $DIR/slice_iter.rs:+4:2: +4:2 + return; } bb8: { - _20 = ((_18 as Some).0: &T); // scope 1 at $DIR/slice_iter.rs:+1:9: +1:10 - StorageLive(_21); // scope 2 at $DIR/slice_iter.rs:+2:9: +2:10 - _21 = &_2; // scope 2 at $DIR/slice_iter.rs:+2:9: +2:10 - StorageLive(_22); // scope 2 at $DIR/slice_iter.rs:+2:9: +2:13 - _22 = (_20,); // scope 2 at $DIR/slice_iter.rs:+2:9: +2:13 - _23 = >::call(move _21, move _22) -> [return: bb9, unwind unreachable]; // scope 2 at $DIR/slice_iter.rs:+2:9: +2:13 - // mir::Constant - // + span: $DIR/slice_iter.rs:37:9: 37:10 - // + literal: Const { ty: for<'a> extern "rust-call" fn(&'a impl Fn(&T), (&T,)) -> >::Output {>::call}, val: Value() } + _20 = ((_18 as Some).0: &T); + StorageLive(_21); + _21 = &_2; + StorageLive(_22); + _22 = (_20,); + _23 = >::call(move _21, move _22) -> [return: bb9, unwind unreachable]; } bb9: { - StorageDead(_22); // scope 2 at $DIR/slice_iter.rs:+2:12: +2:13 - StorageDead(_21); // scope 2 at $DIR/slice_iter.rs:+2:12: +2:13 - StorageDead(_18); // scope 1 at $DIR/slice_iter.rs:+3:5: +3:6 - goto -> bb4; // scope 1 at $DIR/slice_iter.rs:+1:5: +3:6 + StorageDead(_22); + StorageDead(_21); + StorageDead(_18); + goto -> bb4; } bb10: { - unreachable; // scope 1 at $DIR/slice_iter.rs:+1:14: +1:32 + unreachable; } } diff --git a/tests/mir-opt/pre-codegen/slice_iter.reverse_loop.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/pre-codegen/slice_iter.reverse_loop.PreCodegen.after.panic-unwind.mir index 6058e5fba59e9..14ca6004dfe26 100644 --- a/tests/mir-opt/pre-codegen/slice_iter.reverse_loop.PreCodegen.after.panic-unwind.mir +++ b/tests/mir-opt/pre-codegen/slice_iter.reverse_loop.PreCodegen.after.panic-unwind.mir @@ -1,63 +1,63 @@ // MIR for `reverse_loop` after PreCodegen fn reverse_loop(_1: &[T], _2: impl Fn(&T)) -> () { - debug slice => _1; // in scope 0 at $DIR/slice_iter.rs:+0:28: +0:33 - debug f => _2; // in scope 0 at $DIR/slice_iter.rs:+0:44: +0:45 - let mut _0: (); // return place in scope 0 at $DIR/slice_iter.rs:+0:60: +0:60 - let mut _13: std::slice::Iter<'_, T>; // in scope 0 at $DIR/slice_iter.rs:+1:14: +1:26 - let mut _14: std::iter::Rev>; // in scope 0 at $DIR/slice_iter.rs:+1:14: +1:32 - let mut _15: std::iter::Rev>; // in scope 0 at $DIR/slice_iter.rs:+1:14: +1:32 - let mut _16: &mut std::iter::Rev>; // in scope 0 at $DIR/slice_iter.rs:+1:14: +1:32 - let mut _18: std::option::Option<&T>; // in scope 0 at $DIR/slice_iter.rs:+1:14: +1:32 - let mut _19: isize; // in scope 0 at $DIR/slice_iter.rs:+1:5: +3:6 - let mut _21: &impl Fn(&T); // in scope 0 at $DIR/slice_iter.rs:+2:9: +2:10 - let mut _22: (&T,); // in scope 0 at $DIR/slice_iter.rs:+2:9: +2:13 - let _23: (); // in scope 0 at $DIR/slice_iter.rs:+1:14: +1:32 + debug slice => _1; + debug f => _2; + let mut _0: (); + let mut _13: std::slice::Iter<'_, T>; + let mut _14: std::iter::Rev>; + let mut _15: std::iter::Rev>; + let mut _16: &mut std::iter::Rev>; + let mut _18: std::option::Option<&T>; + let mut _19: isize; + let mut _21: &impl Fn(&T); + let mut _22: (&T,); + let _23: (); scope 1 { - debug iter => _15; // in scope 1 at $DIR/slice_iter.rs:+1:14: +1:32 - let _20: &T; // in scope 1 at $DIR/slice_iter.rs:+1:9: +1:10 + debug iter => _15; + let _20: &T; scope 2 { - debug x => _20; // in scope 2 at $DIR/slice_iter.rs:+1:9: +1:10 + debug x => _20; } - scope 25 (inlined > as Iterator>::next) { // at $DIR/slice_iter.rs:36:14: 36:32 - debug self => _16; // in scope 25 at $SRC_DIR/core/src/iter/adapters/rev.rs:LL:COL - let mut _17: &mut std::slice::Iter<'_, T>; // in scope 25 at $SRC_DIR/core/src/iter/adapters/rev.rs:LL:COL + scope 25 (inlined > as Iterator>::next) { + debug self => _16; + let mut _17: &mut std::slice::Iter<'_, T>; } } - scope 3 (inlined core::slice::::iter) { // at $DIR/slice_iter.rs:36:20: 36:26 - debug self => _1; // in scope 3 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - scope 4 (inlined std::slice::Iter::<'_, T>::new) { // at $SRC_DIR/core/src/slice/mod.rs:LL:COL - debug slice => _1; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - let _4: *const T; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - let mut _5: bool; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - let mut _6: usize; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - let mut _8: usize; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - let mut _9: *mut T; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - let mut _11: std::ptr::NonNull; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - let mut _12: *const T; // in scope 4 at $SRC_DIR/core/src/slice/iter.rs:LL:COL + scope 3 (inlined core::slice::::iter) { + debug self => _1; + scope 4 (inlined std::slice::Iter::<'_, T>::new) { + debug slice => _1; + let _4: *const T; + let mut _5: bool; + let mut _6: usize; + let mut _8: usize; + let mut _9: *mut T; + let mut _11: std::ptr::NonNull; + let mut _12: *const T; scope 5 { - debug ptr => _4; // in scope 5 at $SRC_DIR/core/src/slice/iter.rs:LL:COL + debug ptr => _4; scope 6 { - let _7: *const T; // in scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL + let _7: *const T; scope 7 { - debug end => _7; // in scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - scope 13 (inlined NonNull::::new_unchecked) { // at $SRC_DIR/core/src/slice/iter.rs:LL:COL - debug ptr => _9; // in scope 13 at $SRC_DIR/core/src/ptr/non_null.rs:LL:COL - let mut _10: *const T; // in scope 13 at $SRC_DIR/core/src/ptr/non_null.rs:LL:COL + debug end => _7; + scope 13 (inlined NonNull::::new_unchecked) { + debug ptr => _9; + let mut _10: *const T; scope 14 { - scope 15 (inlined NonNull::::new_unchecked::runtime::) { // at $SRC_DIR/core/src/intrinsics.rs:LL:COL - debug ptr => _9; // in scope 15 at $SRC_DIR/core/src/intrinsics.rs:LL:COL - scope 16 (inlined ptr::mut_ptr::::is_null) { // at $SRC_DIR/core/src/ptr/non_null.rs:LL:COL - debug self => _9; // in scope 16 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - let mut _24: *mut u8; // in scope 16 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL + scope 15 (inlined NonNull::::new_unchecked::runtime::) { + debug ptr => _9; + scope 16 (inlined ptr::mut_ptr::::is_null) { + debug self => _9; + let mut _24: *mut u8; scope 17 { - scope 18 (inlined ptr::mut_ptr::::is_null::runtime_impl) { // at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - debug ptr => _24; // in scope 18 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - scope 19 (inlined ptr::mut_ptr::::addr) { // at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - debug self => _24; // in scope 19 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL + scope 18 (inlined ptr::mut_ptr::::is_null::runtime_impl) { + debug ptr => _24; + scope 19 (inlined ptr::mut_ptr::::addr) { + debug self => _24; scope 20 { - scope 21 (inlined ptr::mut_ptr::::cast::<()>) { // at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - debug self => _24; // in scope 21 at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL + scope 21 (inlined ptr::mut_ptr::::cast::<()>) { + debug self => _24; } } } @@ -68,150 +68,139 @@ fn reverse_loop(_1: &[T], _2: impl Fn(&T)) -> () { } } } - scope 9 (inlined invalid::) { // at $SRC_DIR/core/src/slice/iter.rs:LL:COL - debug addr => _8; // in scope 9 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL + scope 9 (inlined invalid::) { + debug addr => _8; scope 10 { } } - scope 11 (inlined ptr::const_ptr::::add) { // at $SRC_DIR/core/src/slice/iter.rs:LL:COL - debug self => _4; // in scope 11 at $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL - debug count => _6; // in scope 11 at $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL + scope 11 (inlined ptr::const_ptr::::add) { + debug self => _4; + debug count => _6; scope 12 { } } } } - scope 8 (inlined core::slice::::as_ptr) { // at $SRC_DIR/core/src/slice/iter.rs:LL:COL - debug self => _1; // in scope 8 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - let mut _3: *const [T]; // in scope 8 at $SRC_DIR/core/src/slice/mod.rs:LL:COL + scope 8 (inlined core::slice::::as_ptr) { + debug self => _1; + let mut _3: *const [T]; } } } - scope 22 (inlined as Iterator>::rev) { // at $DIR/slice_iter.rs:36:27: 36:32 - debug self => _13; // in scope 22 at $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL - scope 23 (inlined Rev::>::new) { // at $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL - debug iter => _13; // in scope 23 at $SRC_DIR/core/src/iter/adapters/rev.rs:LL:COL + scope 22 (inlined as Iterator>::rev) { + debug self => _13; + scope 23 (inlined Rev::>::new) { + debug iter => _13; } } - scope 24 (inlined > as IntoIterator>::into_iter) { // at $DIR/slice_iter.rs:36:14: 36:32 - debug self => _14; // in scope 24 at $SRC_DIR/core/src/iter/traits/collect.rs:LL:COL + scope 24 (inlined > as IntoIterator>::into_iter) { + debug self => _14; } bb0: { - StorageLive(_13); // scope 0 at $DIR/slice_iter.rs:+1:14: +1:26 - StorageLive(_4); // scope 3 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - StorageLive(_3); // scope 8 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - _3 = &raw const (*_1); // scope 8 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - _4 = move _3 as *const T (PtrToPtr); // scope 8 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - StorageDead(_3); // scope 8 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - StorageLive(_7); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageLive(_5); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _5 = const _; // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - switchInt(move _5) -> [0: bb1, otherwise: bb2]; // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL + StorageLive(_13); + StorageLive(_4); + StorageLive(_3); + _3 = &raw const (*_1); + _4 = move _3 as *const T (PtrToPtr); + StorageDead(_3); + StorageLive(_7); + StorageLive(_5); + _5 = const _; + switchInt(move _5) -> [0: bb1, otherwise: bb2]; } bb1: { - StorageLive(_6); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _6 = Len((*_1)); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _7 = Offset(_4, _6); // scope 12 at $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL - StorageDead(_6); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - goto -> bb3; // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL + StorageLive(_6); + _6 = Len((*_1)); + _7 = Offset(_4, _6); + StorageDead(_6); + goto -> bb3; } bb2: { - StorageLive(_8); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _8 = Len((*_1)); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _7 = _8 as *const T (Transmute); // scope 10 at $SRC_DIR/core/src/ptr/mod.rs:LL:COL - StorageDead(_8); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - goto -> bb3; // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL + StorageLive(_8); + _8 = Len((*_1)); + _7 = _8 as *const T (Transmute); + StorageDead(_8); + goto -> bb3; } bb3: { - StorageDead(_5); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageLive(_11); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageLive(_9); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _9 = _4 as *mut T (PtrToPtr); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageLive(_10); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageLive(_24); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _10 = _9 as *const T (Pointer(MutToConstPointer)); // scope 14 at $SRC_DIR/core/src/ptr/non_null.rs:LL:COL - _11 = NonNull:: { pointer: _10 }; // scope 14 at $SRC_DIR/core/src/ptr/non_null.rs:LL:COL - StorageDead(_24); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageDead(_10); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageDead(_9); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageLive(_12); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _12 = _7; // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - _13 = std::slice::Iter::<'_, T> { ptr: move _11, end: move _12, _marker: const ZeroSized: PhantomData<&T> }; // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - // mir::Constant - // + span: no-location - // + literal: Const { ty: PhantomData<&T>, val: Value() } - // adt - // + user_ty: UserType(1) - StorageDead(_12); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageDead(_11); // scope 7 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageDead(_7); // scope 6 at $SRC_DIR/core/src/slice/iter.rs:LL:COL - StorageDead(_4); // scope 3 at $SRC_DIR/core/src/slice/mod.rs:LL:COL - _14 = Rev::> { iter: move _13 }; // scope 23 at $SRC_DIR/core/src/iter/adapters/rev.rs:LL:COL - StorageDead(_13); // scope 0 at $DIR/slice_iter.rs:+1:31: +1:32 - StorageLive(_15); // scope 0 at $DIR/slice_iter.rs:+1:14: +1:32 - _15 = move _14; // scope 0 at $DIR/slice_iter.rs:+1:14: +1:32 - goto -> bb4; // scope 1 at $DIR/slice_iter.rs:+1:5: +3:6 + StorageDead(_5); + StorageLive(_11); + StorageLive(_9); + _9 = _4 as *mut T (PtrToPtr); + StorageLive(_10); + StorageLive(_24); + _10 = _9 as *const T (Pointer(MutToConstPointer)); + _11 = NonNull:: { pointer: _10 }; + StorageDead(_24); + StorageDead(_10); + StorageDead(_9); + StorageLive(_12); + _12 = _7; + _13 = std::slice::Iter::<'_, T> { ptr: move _11, end: move _12, _marker: const ZeroSized: PhantomData<&T> }; + StorageDead(_12); + StorageDead(_11); + StorageDead(_7); + StorageDead(_4); + _14 = Rev::> { iter: move _13 }; + StorageDead(_13); + StorageLive(_15); + _15 = move _14; + goto -> bb4; } bb4: { - StorageLive(_18); // scope 1 at $DIR/slice_iter.rs:+1:14: +1:32 - _16 = &mut _15; // scope 1 at $DIR/slice_iter.rs:+1:14: +1:32 - StorageLive(_17); // scope 25 at $SRC_DIR/core/src/iter/adapters/rev.rs:LL:COL - _17 = &mut ((*_16).0: std::slice::Iter<'_, T>); // scope 25 at $SRC_DIR/core/src/iter/adapters/rev.rs:LL:COL - _18 = as DoubleEndedIterator>::next_back(move _17) -> [return: bb5, unwind: bb11]; // scope 25 at $SRC_DIR/core/src/iter/adapters/rev.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/core/src/iter/adapters/rev.rs:LL:COL - // + literal: Const { ty: for<'a> fn(&'a mut std::slice::Iter<'_, T>) -> Option< as Iterator>::Item> { as DoubleEndedIterator>::next_back}, val: Value() } + StorageLive(_18); + _16 = &mut _15; + StorageLive(_17); + _17 = &mut ((*_16).0: std::slice::Iter<'_, T>); + _18 = as DoubleEndedIterator>::next_back(move _17) -> [return: bb5, unwind: bb11]; } bb5: { - StorageDead(_17); // scope 25 at $SRC_DIR/core/src/iter/adapters/rev.rs:LL:COL - _19 = discriminant(_18); // scope 1 at $DIR/slice_iter.rs:+1:14: +1:32 - switchInt(move _19) -> [0: bb6, 1: bb8, otherwise: bb10]; // scope 1 at $DIR/slice_iter.rs:+1:14: +1:32 + StorageDead(_17); + _19 = discriminant(_18); + switchInt(move _19) -> [0: bb6, 1: bb8, otherwise: bb10]; } bb6: { - StorageDead(_18); // scope 1 at $DIR/slice_iter.rs:+3:5: +3:6 - StorageDead(_15); // scope 0 at $DIR/slice_iter.rs:+3:5: +3:6 - drop(_2) -> bb7; // scope 0 at $DIR/slice_iter.rs:+4:1: +4:2 + StorageDead(_18); + StorageDead(_15); + drop(_2) -> bb7; } bb7: { - return; // scope 0 at $DIR/slice_iter.rs:+4:2: +4:2 + return; } bb8: { - _20 = ((_18 as Some).0: &T); // scope 1 at $DIR/slice_iter.rs:+1:9: +1:10 - StorageLive(_21); // scope 2 at $DIR/slice_iter.rs:+2:9: +2:10 - _21 = &_2; // scope 2 at $DIR/slice_iter.rs:+2:9: +2:10 - StorageLive(_22); // scope 2 at $DIR/slice_iter.rs:+2:9: +2:13 - _22 = (_20,); // scope 2 at $DIR/slice_iter.rs:+2:9: +2:13 - _23 = >::call(move _21, move _22) -> [return: bb9, unwind: bb11]; // scope 2 at $DIR/slice_iter.rs:+2:9: +2:13 - // mir::Constant - // + span: $DIR/slice_iter.rs:37:9: 37:10 - // + literal: Const { ty: for<'a> extern "rust-call" fn(&'a impl Fn(&T), (&T,)) -> >::Output {>::call}, val: Value() } + _20 = ((_18 as Some).0: &T); + StorageLive(_21); + _21 = &_2; + StorageLive(_22); + _22 = (_20,); + _23 = >::call(move _21, move _22) -> [return: bb9, unwind: bb11]; } bb9: { - StorageDead(_22); // scope 2 at $DIR/slice_iter.rs:+2:12: +2:13 - StorageDead(_21); // scope 2 at $DIR/slice_iter.rs:+2:12: +2:13 - StorageDead(_18); // scope 1 at $DIR/slice_iter.rs:+3:5: +3:6 - goto -> bb4; // scope 1 at $DIR/slice_iter.rs:+1:5: +3:6 + StorageDead(_22); + StorageDead(_21); + StorageDead(_18); + goto -> bb4; } bb10: { - unreachable; // scope 1 at $DIR/slice_iter.rs:+1:14: +1:32 + unreachable; } bb11 (cleanup): { - drop(_2) -> [return: bb12, unwind terminate]; // scope 0 at $DIR/slice_iter.rs:+4:1: +4:2 + drop(_2) -> [return: bb12, unwind terminate]; } bb12 (cleanup): { - resume; // scope 0 at $DIR/slice_iter.rs:+0:1: +4:2 + resume; } } diff --git a/tests/mir-opt/pre-codegen/slice_iter.slice_iter_mut_next_back.PreCodegen.after.panic-abort.mir b/tests/mir-opt/pre-codegen/slice_iter.slice_iter_mut_next_back.PreCodegen.after.panic-abort.mir index bc0257b8db23b..0471d0757c7f7 100644 --- a/tests/mir-opt/pre-codegen/slice_iter.slice_iter_mut_next_back.PreCodegen.after.panic-abort.mir +++ b/tests/mir-opt/pre-codegen/slice_iter.slice_iter_mut_next_back.PreCodegen.after.panic-abort.mir @@ -1,17 +1,14 @@ // MIR for `slice_iter_mut_next_back` after PreCodegen fn slice_iter_mut_next_back(_1: &mut std::slice::IterMut<'_, T>) -> Option<&mut T> { - debug it => _1; // in scope 0 at $DIR/slice_iter.rs:+0:40: +0:42 - let mut _0: std::option::Option<&mut T>; // return place in scope 0 at $DIR/slice_iter.rs:+0:80: +0:97 + debug it => _1; + let mut _0: std::option::Option<&mut T>; bb0: { - _0 = as DoubleEndedIterator>::next_back(_1) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/slice_iter.rs:+1:5: +1:19 - // mir::Constant - // + span: $DIR/slice_iter.rs:24:8: 24:17 - // + literal: Const { ty: for<'a> fn(&'a mut std::slice::IterMut<'_, T>) -> Option< as Iterator>::Item> { as DoubleEndedIterator>::next_back}, val: Value() } + _0 = as DoubleEndedIterator>::next_back(_1) -> [return: bb1, unwind unreachable]; } bb1: { - return; // scope 0 at $DIR/slice_iter.rs:+2:2: +2:2 + return; } } diff --git a/tests/mir-opt/pre-codegen/slice_iter.slice_iter_mut_next_back.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/pre-codegen/slice_iter.slice_iter_mut_next_back.PreCodegen.after.panic-unwind.mir index a1de522826d7c..f9253a321f9cc 100644 --- a/tests/mir-opt/pre-codegen/slice_iter.slice_iter_mut_next_back.PreCodegen.after.panic-unwind.mir +++ b/tests/mir-opt/pre-codegen/slice_iter.slice_iter_mut_next_back.PreCodegen.after.panic-unwind.mir @@ -1,17 +1,14 @@ // MIR for `slice_iter_mut_next_back` after PreCodegen fn slice_iter_mut_next_back(_1: &mut std::slice::IterMut<'_, T>) -> Option<&mut T> { - debug it => _1; // in scope 0 at $DIR/slice_iter.rs:+0:40: +0:42 - let mut _0: std::option::Option<&mut T>; // return place in scope 0 at $DIR/slice_iter.rs:+0:80: +0:97 + debug it => _1; + let mut _0: std::option::Option<&mut T>; bb0: { - _0 = as DoubleEndedIterator>::next_back(_1) -> bb1; // scope 0 at $DIR/slice_iter.rs:+1:5: +1:19 - // mir::Constant - // + span: $DIR/slice_iter.rs:24:8: 24:17 - // + literal: Const { ty: for<'a> fn(&'a mut std::slice::IterMut<'_, T>) -> Option< as Iterator>::Item> { as DoubleEndedIterator>::next_back}, val: Value() } + _0 = as DoubleEndedIterator>::next_back(_1) -> bb1; } bb1: { - return; // scope 0 at $DIR/slice_iter.rs:+2:2: +2:2 + return; } } diff --git a/tests/mir-opt/pre-codegen/slice_iter.slice_iter_next.PreCodegen.after.panic-abort.mir b/tests/mir-opt/pre-codegen/slice_iter.slice_iter_next.PreCodegen.after.panic-abort.mir index 1dfcb04c421be..8c0209ae19bd4 100644 --- a/tests/mir-opt/pre-codegen/slice_iter.slice_iter_next.PreCodegen.after.panic-abort.mir +++ b/tests/mir-opt/pre-codegen/slice_iter.slice_iter_next.PreCodegen.after.panic-abort.mir @@ -1,17 +1,14 @@ // MIR for `slice_iter_next` after PreCodegen fn slice_iter_next(_1: &mut std::slice::Iter<'_, T>) -> Option<&T> { - debug it => _1; // in scope 0 at $DIR/slice_iter.rs:+0:31: +0:33 - let mut _0: std::option::Option<&T>; // return place in scope 0 at $DIR/slice_iter.rs:+0:68: +0:81 + debug it => _1; + let mut _0: std::option::Option<&T>; bb0: { - _0 = as Iterator>::next(_1) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/slice_iter.rs:+1:5: +1:14 - // mir::Constant - // + span: $DIR/slice_iter.rs:19:8: 19:12 - // + literal: Const { ty: for<'a> fn(&'a mut std::slice::Iter<'_, T>) -> Option< as Iterator>::Item> { as Iterator>::next}, val: Value() } + _0 = as Iterator>::next(_1) -> [return: bb1, unwind unreachable]; } bb1: { - return; // scope 0 at $DIR/slice_iter.rs:+2:2: +2:2 + return; } } diff --git a/tests/mir-opt/pre-codegen/slice_iter.slice_iter_next.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/pre-codegen/slice_iter.slice_iter_next.PreCodegen.after.panic-unwind.mir index 2aef35e771e63..207fc8c752f32 100644 --- a/tests/mir-opt/pre-codegen/slice_iter.slice_iter_next.PreCodegen.after.panic-unwind.mir +++ b/tests/mir-opt/pre-codegen/slice_iter.slice_iter_next.PreCodegen.after.panic-unwind.mir @@ -1,17 +1,14 @@ // MIR for `slice_iter_next` after PreCodegen fn slice_iter_next(_1: &mut std::slice::Iter<'_, T>) -> Option<&T> { - debug it => _1; // in scope 0 at $DIR/slice_iter.rs:+0:31: +0:33 - let mut _0: std::option::Option<&T>; // return place in scope 0 at $DIR/slice_iter.rs:+0:68: +0:81 + debug it => _1; + let mut _0: std::option::Option<&T>; bb0: { - _0 = as Iterator>::next(_1) -> bb1; // scope 0 at $DIR/slice_iter.rs:+1:5: +1:14 - // mir::Constant - // + span: $DIR/slice_iter.rs:19:8: 19:12 - // + literal: Const { ty: for<'a> fn(&'a mut std::slice::Iter<'_, T>) -> Option< as Iterator>::Item> { as Iterator>::next}, val: Value() } + _0 = as Iterator>::next(_1) -> bb1; } bb1: { - return; // scope 0 at $DIR/slice_iter.rs:+2:2: +2:2 + return; } } diff --git a/tests/mir-opt/pre-codegen/spans.outer.PreCodegen.after.panic-abort.mir b/tests/mir-opt/pre-codegen/spans.outer.PreCodegen.after.panic-abort.mir new file mode 100644 index 0000000000000..b9329520bab7c --- /dev/null +++ b/tests/mir-opt/pre-codegen/spans.outer.PreCodegen.after.panic-abort.mir @@ -0,0 +1,19 @@ +// MIR for `outer` after PreCodegen + +fn outer(_1: u8) -> u8 { + debug v => _1; // in scope 0 at $DIR/spans.rs:10:14: 10:15 + let mut _0: u8; // return place in scope 0 at $DIR/spans.rs:10:24: 10:26 + let _2: &u8; // in scope 0 at $DIR/spans.rs:11:11: 11:13 + + bb0: { + _2 = &_1; // scope 0 at $DIR/spans.rs:11:11: 11:13 + _0 = inner(_2) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/spans.rs:11:5: 11:14 + // mir::Constant + // + span: $DIR/spans.rs:11:5: 11:10 + // + literal: Const { ty: for<'a> fn(&'a u8) -> u8 {inner}, val: Value() } + } + + bb1: { + return; // scope 0 at $DIR/spans.rs:12:2: 12:2 + } +} diff --git a/tests/mir-opt/pre-codegen/spans.outer.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/pre-codegen/spans.outer.PreCodegen.after.panic-unwind.mir new file mode 100644 index 0000000000000..52e85809735e5 --- /dev/null +++ b/tests/mir-opt/pre-codegen/spans.outer.PreCodegen.after.panic-unwind.mir @@ -0,0 +1,19 @@ +// MIR for `outer` after PreCodegen + +fn outer(_1: u8) -> u8 { + debug v => _1; // in scope 0 at $DIR/spans.rs:10:14: 10:15 + let mut _0: u8; // return place in scope 0 at $DIR/spans.rs:10:24: 10:26 + let _2: &u8; // in scope 0 at $DIR/spans.rs:11:11: 11:13 + + bb0: { + _2 = &_1; // scope 0 at $DIR/spans.rs:11:11: 11:13 + _0 = inner(_2) -> bb1; // scope 0 at $DIR/spans.rs:11:5: 11:14 + // mir::Constant + // + span: $DIR/spans.rs:11:5: 11:10 + // + literal: Const { ty: for<'a> fn(&'a u8) -> u8 {inner}, val: Value() } + } + + bb1: { + return; // scope 0 at $DIR/spans.rs:12:2: 12:2 + } +} diff --git a/tests/mir-opt/pre-codegen/spans.rs b/tests/mir-opt/pre-codegen/spans.rs new file mode 100644 index 0000000000000..6ae9935eeb67b --- /dev/null +++ b/tests/mir-opt/pre-codegen/spans.rs @@ -0,0 +1,16 @@ +// Test that the comments we emit in MIR opts are accurate. +// +// EMIT_MIR_FOR_EACH_PANIC_STRATEGY +// compile-flags: -Zmir-include-spans +// ignore-wasm32 + +#![crate_type = "lib"] + +// EMIT_MIR spans.outer.PreCodegen.after.mir +pub fn outer(v: u8) -> u8 { + inner(&v) +} + +pub fn inner(x: &u8) -> u8 { + *x +} diff --git a/tests/mir-opt/pre-codegen/try_identity.new.PreCodegen.after.mir b/tests/mir-opt/pre-codegen/try_identity.new.PreCodegen.after.mir index c3f8745b4220f..0bf4a2670020d 100644 --- a/tests/mir-opt/pre-codegen/try_identity.new.PreCodegen.after.mir +++ b/tests/mir-opt/pre-codegen/try_identity.new.PreCodegen.after.mir @@ -1,70 +1,70 @@ // MIR for `new` after PreCodegen fn new(_1: Result) -> Result { - debug x => _1; // in scope 0 at $DIR/try_identity.rs:+0:14: +0:15 - let mut _0: std::result::Result; // return place in scope 0 at $DIR/try_identity.rs:+0:34: +0:46 - let mut _2: isize; // in scope 0 at $DIR/try_identity.rs:+4:17: +4:22 - let _3: T; // in scope 0 at $DIR/try_identity.rs:+4:20: +4:21 - let mut _4: std::ops::ControlFlow; // in scope 0 at $DIR/try_identity.rs:+2:15: +7:10 - let _5: E; // in scope 0 at $DIR/try_identity.rs:+5:21: +5:22 - let mut _6: isize; // in scope 0 at $DIR/try_identity.rs:+8:13: +8:37 - let _7: T; // in scope 0 at $DIR/try_identity.rs:+8:35: +8:36 - let _8: E; // in scope 0 at $DIR/try_identity.rs:+9:32: +9:33 + debug x => _1; + let mut _0: std::result::Result; + let mut _2: isize; + let _3: T; + let mut _4: std::ops::ControlFlow; + let _5: E; + let mut _6: isize; + let _7: T; + let _8: E; scope 1 { - debug v => _3; // in scope 1 at $DIR/try_identity.rs:+4:20: +4:21 + debug v => _3; } scope 2 { - debug e => _5; // in scope 2 at $DIR/try_identity.rs:+5:21: +5:22 + debug e => _5; } scope 3 { - debug v => _7; // in scope 3 at $DIR/try_identity.rs:+8:35: +8:36 + debug v => _7; } scope 4 { - debug e => _8; // in scope 4 at $DIR/try_identity.rs:+9:32: +9:33 + debug e => _8; } bb0: { - StorageLive(_4); // scope 0 at $DIR/try_identity.rs:+2:15: +7:10 - _2 = discriminant(_1); // scope 0 at $DIR/try_identity.rs:+3:19: +3:20 - switchInt(move _2) -> [0: bb1, 1: bb2, otherwise: bb7]; // scope 0 at $DIR/try_identity.rs:+3:13: +3:20 + StorageLive(_4); + _2 = discriminant(_1); + switchInt(move _2) -> [0: bb1, 1: bb2, otherwise: bb7]; } bb1: { - _3 = move ((_1 as Ok).0: T); // scope 0 at $DIR/try_identity.rs:+4:20: +4:21 - _4 = ControlFlow::::Continue(move _3); // scope 1 at $DIR/try_identity.rs:+4:26: +4:50 - goto -> bb3; // scope 0 at $DIR/try_identity.rs:+4:49: +4:50 + _3 = move ((_1 as Ok).0: T); + _4 = ControlFlow::::Continue(move _3); + goto -> bb3; } bb2: { - _5 = move ((_1 as Err).0: E); // scope 0 at $DIR/try_identity.rs:+5:21: +5:22 - _4 = ControlFlow::::Break(move _5); // scope 2 at $DIR/try_identity.rs:+5:27: +5:48 - goto -> bb3; // scope 0 at $DIR/try_identity.rs:+5:47: +5:48 + _5 = move ((_1 as Err).0: E); + _4 = ControlFlow::::Break(move _5); + goto -> bb3; } bb3: { - _6 = discriminant(_4); // scope 0 at $DIR/try_identity.rs:+2:15: +7:10 - switchInt(move _6) -> [0: bb4, 1: bb5, otherwise: bb7]; // scope 0 at $DIR/try_identity.rs:+2:9: +7:10 + _6 = discriminant(_4); + switchInt(move _6) -> [0: bb4, 1: bb5, otherwise: bb7]; } bb4: { - _7 = move ((_4 as Continue).0: T); // scope 0 at $DIR/try_identity.rs:+8:35: +8:36 - _0 = Result::::Ok(move _7); // scope 0 at $DIR/try_identity.rs:+1:5: +11:6 - StorageDead(_4); // scope 0 at $DIR/try_identity.rs:+12:1: +12:2 - goto -> bb6; // scope 0 at $DIR/try_identity.rs:+12:1: +12:2 + _7 = move ((_4 as Continue).0: T); + _0 = Result::::Ok(move _7); + StorageDead(_4); + goto -> bb6; } bb5: { - _8 = move ((_4 as Break).0: E); // scope 0 at $DIR/try_identity.rs:+9:32: +9:33 - _0 = Result::::Err(move _8); // scope 4 at $DIR/try_identity.rs:+9:45: +9:51 - StorageDead(_4); // scope 0 at $DIR/try_identity.rs:+12:1: +12:2 - goto -> bb6; // scope 0 at $DIR/try_identity.rs:+12:1: +12:2 + _8 = move ((_4 as Break).0: E); + _0 = Result::::Err(move _8); + StorageDead(_4); + goto -> bb6; } bb6: { - return; // scope 0 at $DIR/try_identity.rs:+12:2: +12:2 + return; } bb7: { - unreachable; // scope 0 at $DIR/try_identity.rs:+3:19: +3:20 + unreachable; } } diff --git a/tests/mir-opt/pre-codegen/try_identity.old.PreCodegen.after.mir b/tests/mir-opt/pre-codegen/try_identity.old.PreCodegen.after.mir index 0487c6c3994a2..7ccb8b0430de1 100644 --- a/tests/mir-opt/pre-codegen/try_identity.old.PreCodegen.after.mir +++ b/tests/mir-opt/pre-codegen/try_identity.old.PreCodegen.after.mir @@ -1,40 +1,40 @@ // MIR for `old` after PreCodegen fn old(_1: Result) -> Result { - debug x => _1; // in scope 0 at $DIR/try_identity.rs:+0:14: +0:15 - let mut _0: std::result::Result; // return place in scope 0 at $DIR/try_identity.rs:+0:34: +0:46 - let mut _2: isize; // in scope 0 at $DIR/try_identity.rs:+3:13: +3:18 - let _3: T; // in scope 0 at $DIR/try_identity.rs:+3:16: +3:17 - let _4: E; // in scope 0 at $DIR/try_identity.rs:+4:17: +4:18 + debug x => _1; + let mut _0: std::result::Result; + let mut _2: isize; + let _3: T; + let _4: E; scope 1 { - debug v => _3; // in scope 1 at $DIR/try_identity.rs:+3:16: +3:17 + debug v => _3; } scope 2 { - debug e => _4; // in scope 2 at $DIR/try_identity.rs:+4:17: +4:18 + debug e => _4; } bb0: { - _2 = discriminant(_1); // scope 0 at $DIR/try_identity.rs:+2:15: +2:16 - switchInt(move _2) -> [0: bb1, 1: bb2, otherwise: bb4]; // scope 0 at $DIR/try_identity.rs:+2:9: +2:16 + _2 = discriminant(_1); + switchInt(move _2) -> [0: bb1, 1: bb2, otherwise: bb4]; } bb1: { - _3 = move ((_1 as Ok).0: T); // scope 0 at $DIR/try_identity.rs:+3:16: +3:17 - _0 = Result::::Ok(move _3); // scope 0 at $DIR/try_identity.rs:+1:5: +6:6 - goto -> bb3; // scope 0 at $DIR/try_identity.rs:+7:1: +7:2 + _3 = move ((_1 as Ok).0: T); + _0 = Result::::Ok(move _3); + goto -> bb3; } bb2: { - _4 = move ((_1 as Err).0: E); // scope 0 at $DIR/try_identity.rs:+4:17: +4:18 - _0 = Result::::Err(move _4); // scope 2 at $DIR/try_identity.rs:+4:30: +4:36 - goto -> bb3; // scope 0 at $DIR/try_identity.rs:+7:1: +7:2 + _4 = move ((_1 as Err).0: E); + _0 = Result::::Err(move _4); + goto -> bb3; } bb3: { - return; // scope 0 at $DIR/try_identity.rs:+7:2: +7:2 + return; } bb4: { - unreachable; // scope 0 at $DIR/try_identity.rs:+2:15: +2:16 + unreachable; } } diff --git a/tests/mir-opt/reference_prop.debuginfo.ReferencePropagation.diff b/tests/mir-opt/reference_prop.debuginfo.ReferencePropagation.diff index 07bd48fc84638..6732f8b4bb3f0 100644 --- a/tests/mir-opt/reference_prop.debuginfo.ReferencePropagation.diff +++ b/tests/mir-opt/reference_prop.debuginfo.ReferencePropagation.diff @@ -2,174 +2,162 @@ + // MIR for `debuginfo` after ReferencePropagation fn debuginfo() -> () { - let mut _0: (); // return place in scope 0 at $DIR/reference_prop.rs:+0:16: +0:16 - let _1: &mut u8; // in scope 0 at $DIR/reference_prop.rs:+3:9: +3:19 - let mut _2: u8; // in scope 0 at $DIR/reference_prop.rs:+3:27: +3:31 - let _4: debuginfo::T; // in scope 0 at $DIR/reference_prop.rs:+4:18: +4:22 - let _6: (); // in scope 0 at $DIR/reference_prop.rs:+9:5: +12:6 - let mut _7: std::option::Option; // in scope 0 at $DIR/reference_prop.rs:+9:11: +9:18 - let mut _8: isize; // in scope 0 at $DIR/reference_prop.rs:+10:9: +10:13 - let _10: (); // in scope 0 at $DIR/reference_prop.rs:+16:5: +17:6 - let mut _11: &[i32]; // in scope 0 at $DIR/reference_prop.rs:+16:82: +16:94 - let _12: &[i32]; // in scope 0 at $DIR/reference_prop.rs:+16:83: +16:94 - let mut _13: &[i32; 10]; // in scope 0 at $DIR/reference_prop.rs:+16:83: +16:90 - let _14: [i32; 10]; // in scope 0 at $DIR/reference_prop.rs:+16:83: +16:90 - let mut _15: std::ops::RangeFull; // in scope 0 at $DIR/reference_prop.rs:+16:91: +16:93 - let mut _16: usize; // in scope 0 at $DIR/reference_prop.rs:+16:12: +16:79 - let mut _17: usize; // in scope 0 at $DIR/reference_prop.rs:+16:12: +16:79 - let mut _18: bool; // in scope 0 at $DIR/reference_prop.rs:+16:12: +16:79 - let _23: &&mut u8; // in scope 0 at $DIR/reference_prop.rs:+19:28: +19:40 - let _24: &mut u8; // in scope 0 at $DIR/reference_prop.rs:+19:29: +19:40 - let mut _25: debuginfo::T; // in scope 0 at $DIR/reference_prop.rs:+19:34: +19:38 + let mut _0: (); + let _1: &mut u8; + let mut _2: u8; + let _4: debuginfo::T; + let _6: (); + let mut _7: std::option::Option; + let mut _8: isize; + let _10: (); + let mut _11: &[i32]; + let _12: &[i32]; + let mut _13: &[i32; 10]; + let _14: [i32; 10]; + let mut _15: std::ops::RangeFull; + let mut _16: usize; + let mut _17: usize; + let mut _18: bool; + let _23: &&mut u8; + let _24: &mut u8; + let mut _25: debuginfo::T; scope 1 { -- debug ref_mut_u8 => _1; // in scope 1 at $DIR/reference_prop.rs:+3:9: +3:19 -+ debug ref_mut_u8 => &_2; // in scope 1 at $DIR/reference_prop.rs:+3:9: +3:19 - let _3: &u8; // in scope 1 at $DIR/reference_prop.rs:+4:9: +4:14 - let mut _28: &debuginfo::T; // in scope 1 at $DIR/reference_prop.rs:+4:17: +4:24 +- debug ref_mut_u8 => _1; ++ debug ref_mut_u8 => &_2; + let _3: &u8; + let mut _28: &debuginfo::T; scope 2 { -- debug field => _3; // in scope 2 at $DIR/reference_prop.rs:+4:9: +4:14 -+ debug field => &((*_28).0: u8); // in scope 2 at $DIR/reference_prop.rs:+4:9: +4:14 - let _5: &u8; // in scope 2 at $DIR/reference_prop.rs:+7:9: +7:17 +- debug field => _3; ++ debug field => &((*_28).0: u8); + let _5: &u8; scope 3 { -- debug reborrow => _5; // in scope 3 at $DIR/reference_prop.rs:+7:9: +7:17 -+ debug reborrow => &_2; // in scope 3 at $DIR/reference_prop.rs:+7:9: +7:17 - let _9: &i32; // in scope 3 at $DIR/reference_prop.rs:+11:14: +11:31 - let _22: &&&mut u8; // in scope 3 at $DIR/reference_prop.rs:+19:9: +19:24 - let mut _27: &std::option::Option; // in scope 3 at $DIR/reference_prop.rs:+11:14: +11:31 +- debug reborrow => _5; ++ debug reborrow => &_2; + let _9: &i32; + let _22: &&&mut u8; + let mut _27: &std::option::Option; scope 4 { -- debug variant_field => _9; // in scope 4 at $DIR/reference_prop.rs:+11:14: +11:31 -+ debug variant_field => &(((*_27) as Some).0: i32); // in scope 4 at $DIR/reference_prop.rs:+11:14: +11:31 +- debug variant_field => _9; ++ debug variant_field => &(((*_27) as Some).0: i32); } scope 5 { -- debug constant_index => _19; // in scope 5 at $DIR/reference_prop.rs:+16:16: +16:34 -+ debug constant_index => &(*_11)[1 of 3]; // in scope 5 at $DIR/reference_prop.rs:+16:16: +16:34 - debug subslice => _20; // in scope 5 at $DIR/reference_prop.rs:+16:36: +16:44 - debug constant_index_from_end => _21; // in scope 5 at $DIR/reference_prop.rs:+16:51: +16:78 - let _19: &i32; // in scope 5 at $DIR/reference_prop.rs:+16:16: +16:34 - let _20: &[i32]; // in scope 5 at $DIR/reference_prop.rs:+16:36: +16:44 - let _21: &i32; // in scope 5 at $DIR/reference_prop.rs:+16:51: +16:78 - let mut _26: &[i32; 10]; // in scope 5 at $DIR/reference_prop.rs:+16:83: +16:90 +- debug constant_index => _19; ++ debug constant_index => &(*_11)[1 of 3]; + debug subslice => _20; + debug constant_index_from_end => _21; + let _19: &i32; + let _20: &[i32]; + let _21: &i32; + let mut _26: &[i32; 10]; } scope 6 { -- debug multiple_borrow => _22; // in scope 6 at $DIR/reference_prop.rs:+19:9: +19:24 -+ debug multiple_borrow => &&&(_25.0: u8); // in scope 6 at $DIR/reference_prop.rs:+19:9: +19:24 +- debug multiple_borrow => _22; ++ debug multiple_borrow => &&&(_25.0: u8); } } } } bb0: { -- StorageLive(_1); // scope 0 at $DIR/reference_prop.rs:+3:9: +3:19 - StorageLive(_2); // scope 0 at $DIR/reference_prop.rs:+3:27: +3:31 - _2 = const 5_u8; // scope 0 at $DIR/reference_prop.rs:+3:27: +3:31 -- _1 = &mut _2; // scope 0 at $DIR/reference_prop.rs:+3:22: +3:31 -- StorageLive(_3); // scope 1 at $DIR/reference_prop.rs:+4:9: +4:14 - _28 = const _; // scope 1 at $DIR/reference_prop.rs:+4:17: +4:24 - // mir::Constant - // + span: $DIR/reference_prop.rs:535:17: 535:24 - // + literal: Const { ty: &T, val: Unevaluated(debuginfo, [], Some(promoted[2])) } -- _3 = &((*_28).0: u8); // scope 1 at $DIR/reference_prop.rs:+4:17: +4:24 -- StorageLive(_5); // scope 2 at $DIR/reference_prop.rs:+7:9: +7:17 -- _5 = &(*_1); // scope 2 at $DIR/reference_prop.rs:+7:20: +7:32 -- StorageLive(_6); // scope 3 at $DIR/reference_prop.rs:+9:5: +12:6 - StorageLive(_7); // scope 3 at $DIR/reference_prop.rs:+9:11: +9:18 - _7 = Option::::Some(const 0_i32); // scope 3 at $DIR/reference_prop.rs:+9:11: +9:18 - _8 = discriminant(_7); // scope 3 at $DIR/reference_prop.rs:+9:11: +9:18 - switchInt(move _8) -> [0: bb3, 1: bb1, otherwise: bb2]; // scope 3 at $DIR/reference_prop.rs:+9:5: +9:18 +- StorageLive(_1); + StorageLive(_2); + _2 = const 5_u8; +- _1 = &mut _2; +- StorageLive(_3); + _28 = const _; +- _3 = &((*_28).0: u8); +- StorageLive(_5); +- _5 = &(*_1); +- StorageLive(_6); + StorageLive(_7); + _7 = Option::::Some(const 0_i32); + _8 = discriminant(_7); + switchInt(move _8) -> [0: bb3, 1: bb1, otherwise: bb2]; } bb1: { -- StorageLive(_9); // scope 3 at $DIR/reference_prop.rs:+11:14: +11:31 - _27 = const _; // scope 3 at $DIR/reference_prop.rs:+11:14: +11:31 - // mir::Constant - // + span: $DIR/reference_prop.rs:542:14: 542:31 - // + literal: Const { ty: &Option, val: Unevaluated(debuginfo, [], Some(promoted[1])) } -- _9 = &(((*_27) as Some).0: i32); // scope 3 at $DIR/reference_prop.rs:+11:14: +11:31 -- _6 = const (); // scope 4 at $DIR/reference_prop.rs:+11:36: +11:38 -- StorageDead(_9); // scope 3 at $DIR/reference_prop.rs:+11:37: +11:38 - goto -> bb4; // scope 3 at $DIR/reference_prop.rs:+11:37: +11:38 +- StorageLive(_9); + _27 = const _; +- _9 = &(((*_27) as Some).0: i32); +- _6 = const (); +- StorageDead(_9); + goto -> bb4; } bb2: { - unreachable; // scope 3 at $DIR/reference_prop.rs:+9:11: +9:18 + unreachable; } bb3: { -- _6 = const (); // scope 3 at $DIR/reference_prop.rs:+10:17: +10:19 - goto -> bb4; // scope 3 at $DIR/reference_prop.rs:+10:17: +10:19 +- _6 = const (); + goto -> bb4; } bb4: { - StorageDead(_7); // scope 3 at $DIR/reference_prop.rs:+12:5: +12:6 -- StorageDead(_6); // scope 3 at $DIR/reference_prop.rs:+12:5: +12:6 -- StorageLive(_10); // scope 3 at $DIR/reference_prop.rs:+16:5: +17:6 - StorageLive(_11); // scope 5 at $DIR/reference_prop.rs:+16:82: +16:94 - StorageLive(_12); // scope 5 at $DIR/reference_prop.rs:+16:83: +16:94 - StorageLive(_13); // scope 5 at $DIR/reference_prop.rs:+16:83: +16:90 - _26 = const _; // scope 5 at $DIR/reference_prop.rs:+16:83: +16:90 - // mir::Constant - // + span: $DIR/reference_prop.rs:547:83: 547:90 - // + literal: Const { ty: &[i32; 10], val: Unevaluated(debuginfo, [], Some(promoted[0])) } - _13 = &(*_26); // scope 5 at $DIR/reference_prop.rs:+16:83: +16:90 - StorageLive(_15); // scope 5 at $DIR/reference_prop.rs:+16:91: +16:93 - _15 = RangeFull; // scope 5 at $DIR/reference_prop.rs:+16:91: +16:93 - _12 = <[i32; 10] as Index>::index(move _13, move _15) -> bb5; // scope 5 at $DIR/reference_prop.rs:+16:83: +16:94 - // mir::Constant - // + span: $DIR/reference_prop.rs:547:83: 547:94 - // + literal: Const { ty: for<'a> fn(&'a [i32; 10], RangeFull) -> &'a <[i32; 10] as Index>::Output {<[i32; 10] as Index>::index}, val: Value() } + StorageDead(_7); +- StorageDead(_6); +- StorageLive(_10); + StorageLive(_11); + StorageLive(_12); + StorageLive(_13); + _26 = const _; + _13 = &(*_26); + StorageLive(_15); + _15 = RangeFull; + _12 = <[i32; 10] as Index>::index(move _13, move _15) -> bb5; } bb5: { - StorageDead(_15); // scope 5 at $DIR/reference_prop.rs:+16:93: +16:94 - StorageDead(_13); // scope 5 at $DIR/reference_prop.rs:+16:93: +16:94 - _11 = &(*_12); // scope 5 at $DIR/reference_prop.rs:+16:82: +16:94 - _16 = Len((*_11)); // scope 5 at $DIR/reference_prop.rs:+16:12: +16:79 - _17 = const 3_usize; // scope 5 at $DIR/reference_prop.rs:+16:12: +16:79 - _18 = Ge(move _16, move _17); // scope 5 at $DIR/reference_prop.rs:+16:12: +16:79 - switchInt(move _18) -> [0: bb7, otherwise: bb6]; // scope 5 at $DIR/reference_prop.rs:+16:12: +16:79 + StorageDead(_15); + StorageDead(_13); + _11 = &(*_12); + _16 = Len((*_11)); + _17 = const 3_usize; + _18 = Ge(move _16, move _17); + switchInt(move _18) -> [0: bb7, otherwise: bb6]; } bb6: { -- StorageLive(_19); // scope 5 at $DIR/reference_prop.rs:+16:16: +16:34 -- _19 = &(*_11)[1 of 3]; // scope 5 at $DIR/reference_prop.rs:+16:16: +16:34 - StorageLive(_20); // scope 5 at $DIR/reference_prop.rs:+16:36: +16:44 - _20 = &(*_11)[2:-1]; // scope 5 at $DIR/reference_prop.rs:+16:36: +16:44 - StorageLive(_21); // scope 5 at $DIR/reference_prop.rs:+16:51: +16:78 - _21 = &(*_11)[-1 of 3]; // scope 5 at $DIR/reference_prop.rs:+16:51: +16:78 -- _10 = const (); // scope 5 at $DIR/reference_prop.rs:+16:95: +17:6 - StorageDead(_21); // scope 3 at $DIR/reference_prop.rs:+17:5: +17:6 - StorageDead(_20); // scope 3 at $DIR/reference_prop.rs:+17:5: +17:6 -- StorageDead(_19); // scope 3 at $DIR/reference_prop.rs:+17:5: +17:6 - goto -> bb8; // scope 3 at $DIR/reference_prop.rs:+16:5: +17:6 +- StorageLive(_19); +- _19 = &(*_11)[1 of 3]; + StorageLive(_20); + _20 = &(*_11)[2:-1]; + StorageLive(_21); + _21 = &(*_11)[-1 of 3]; +- _10 = const (); + StorageDead(_21); + StorageDead(_20); +- StorageDead(_19); + goto -> bb8; } bb7: { -- _10 = const (); // scope 3 at $DIR/reference_prop.rs:+17:6: +17:6 - goto -> bb8; // scope 3 at $DIR/reference_prop.rs:+16:5: +17:6 +- _10 = const (); + goto -> bb8; } bb8: { - StorageDead(_12); // scope 3 at $DIR/reference_prop.rs:+17:5: +17:6 - StorageDead(_11); // scope 3 at $DIR/reference_prop.rs:+17:5: +17:6 -- StorageDead(_10); // scope 3 at $DIR/reference_prop.rs:+17:5: +17:6 -- StorageLive(_22); // scope 3 at $DIR/reference_prop.rs:+19:9: +19:24 -- StorageLive(_23); // scope 3 at $DIR/reference_prop.rs:+19:28: +19:40 -- StorageLive(_24); // scope 3 at $DIR/reference_prop.rs:+19:29: +19:40 - StorageLive(_25); // scope 3 at $DIR/reference_prop.rs:+19:34: +19:38 - _25 = T(const 6_u8); // scope 3 at $DIR/reference_prop.rs:+19:34: +19:38 -- _24 = &mut (_25.0: u8); // scope 3 at $DIR/reference_prop.rs:+19:29: +19:40 -- _23 = &_24; // scope 3 at $DIR/reference_prop.rs:+19:28: +19:40 -- _22 = &_23; // scope 3 at $DIR/reference_prop.rs:+19:27: +19:40 - _0 = const (); // scope 0 at $DIR/reference_prop.rs:+0:16: +20:2 - StorageDead(_25); // scope 3 at $DIR/reference_prop.rs:+20:1: +20:2 -- StorageDead(_24); // scope 3 at $DIR/reference_prop.rs:+20:1: +20:2 -- StorageDead(_23); // scope 3 at $DIR/reference_prop.rs:+20:1: +20:2 -- StorageDead(_22); // scope 3 at $DIR/reference_prop.rs:+20:1: +20:2 -- StorageDead(_5); // scope 2 at $DIR/reference_prop.rs:+20:1: +20:2 -- StorageDead(_3); // scope 1 at $DIR/reference_prop.rs:+20:1: +20:2 - StorageDead(_2); // scope 0 at $DIR/reference_prop.rs:+20:1: +20:2 -- StorageDead(_1); // scope 0 at $DIR/reference_prop.rs:+20:1: +20:2 - return; // scope 0 at $DIR/reference_prop.rs:+20:2: +20:2 + StorageDead(_12); + StorageDead(_11); +- StorageDead(_10); +- StorageLive(_22); +- StorageLive(_23); +- StorageLive(_24); + StorageLive(_25); + _25 = T(const 6_u8); +- _24 = &mut (_25.0: u8); +- _23 = &_24; +- _22 = &_23; + _0 = const (); + StorageDead(_25); +- StorageDead(_24); +- StorageDead(_23); +- StorageDead(_22); +- StorageDead(_5); +- StorageDead(_3); + StorageDead(_2); +- StorageDead(_1); + return; } } diff --git a/tests/mir-opt/reference_prop.dominate_storage.ReferencePropagation.diff b/tests/mir-opt/reference_prop.dominate_storage.ReferencePropagation.diff index e158f64e9c3cf..3baa565f03e49 100644 --- a/tests/mir-opt/reference_prop.dominate_storage.ReferencePropagation.diff +++ b/tests/mir-opt/reference_prop.dominate_storage.ReferencePropagation.diff @@ -2,37 +2,34 @@ + // MIR for `dominate_storage` after ReferencePropagation fn dominate_storage() -> () { - let mut _0: (); // return place in scope 0 at $DIR/reference_prop.rs:+0:23: +0:23 - let mut _1: i32; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _2: &i32; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _3: i32; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _4: bool; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _5: i32; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _6: bool; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL + let mut _0: (); + let mut _1: i32; + let mut _2: &i32; + let mut _3: i32; + let mut _4: bool; + let mut _5: i32; + let mut _6: bool; bb0: { - goto -> bb1; // scope 0 at $DIR/reference_prop.rs:+8:11: +8:20 + goto -> bb1; } bb1: { - _1 = const 5_i32; // scope 0 at $DIR/reference_prop.rs:+10:13: +10:18 - _2 = &_1; // scope 0 at $DIR/reference_prop.rs:+11:13: +11:19 - goto -> bb2; // scope 0 at $DIR/reference_prop.rs:+12:13: +12:22 + _1 = const 5_i32; + _2 = &_1; + goto -> bb2; } bb2: { - _5 = (*_2); // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - _0 = opaque::(_5) -> bb3; // scope 0 at $DIR/reference_prop.rs:+16:13: +16:38 - // mir::Constant - // + span: $DIR/reference_prop.rs:455:28: 455:34 - // + literal: Const { ty: fn(i32) {opaque::}, val: Value() } + _5 = (*_2); + _0 = opaque::(_5) -> bb3; } bb3: { - StorageDead(_1); // scope 0 at $DIR/reference_prop.rs:+19:13: +19:27 - StorageLive(_1); // scope 0 at $DIR/reference_prop.rs:+20:13: +20:27 - _6 = const true; // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - switchInt(_6) -> [0: bb3, otherwise: bb1]; // scope 0 at $DIR/reference_prop.rs:+22:13: +22:47 + StorageDead(_1); + StorageLive(_1); + _6 = const true; + switchInt(_6) -> [0: bb3, otherwise: bb1]; } } diff --git a/tests/mir-opt/reference_prop.maybe_dead.ReferencePropagation.diff b/tests/mir-opt/reference_prop.maybe_dead.ReferencePropagation.diff index 38ab16cedb7ce..9ceb5a7634dda 100644 --- a/tests/mir-opt/reference_prop.maybe_dead.ReferencePropagation.diff +++ b/tests/mir-opt/reference_prop.maybe_dead.ReferencePropagation.diff @@ -2,55 +2,46 @@ + // MIR for `maybe_dead` after ReferencePropagation fn maybe_dead(_1: bool) -> () { - let mut _0: (); // return place in scope 0 at $DIR/reference_prop.rs:+0:24: +0:24 - let mut _2: i32; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _3: i32; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _4: &i32; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _5: &mut i32; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _6: i32; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _7: i32; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _8: i32; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL + let mut _0: (); + let mut _2: i32; + let mut _3: i32; + let mut _4: &i32; + let mut _5: &mut i32; + let mut _6: i32; + let mut _7: i32; + let mut _8: i32; bb0: { - StorageLive(_2); // scope 0 at $DIR/reference_prop.rs:+7:13: +7:27 - StorageLive(_3); // scope 0 at $DIR/reference_prop.rs:+8:13: +8:27 - _2 = const 5_i32; // scope 0 at $DIR/reference_prop.rs:+9:13: +9:18 - _3 = const 5_i32; // scope 0 at $DIR/reference_prop.rs:+10:13: +10:18 - _4 = &_2; // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - _5 = &mut _3; // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - (*_5) = const 7_i32; // scope 0 at $DIR/reference_prop.rs:+14:13: +14:19 -- _6 = (*_4); // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL -+ _6 = _2; // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - switchInt(_1) -> [1: bb1, otherwise: bb2]; // scope 0 at $DIR/reference_prop.rs:+17:13: +17:46 + StorageLive(_2); + StorageLive(_3); + _2 = const 5_i32; + _3 = const 5_i32; + _4 = &_2; + _5 = &mut _3; + (*_5) = const 7_i32; +- _6 = (*_4); ++ _6 = _2; + switchInt(_1) -> [1: bb1, otherwise: bb2]; } bb1: { - StorageDead(_2); // scope 0 at $DIR/reference_prop.rs:+20:13: +20:27 - StorageDead(_3); // scope 0 at $DIR/reference_prop.rs:+21:13: +21:27 - _0 = opaque::(_6) -> bb2; // scope 0 at $DIR/reference_prop.rs:+22:13: +22:38 - // mir::Constant - // + span: $DIR/reference_prop.rs:489:28: 489:34 - // + literal: Const { ty: fn(i32) {opaque::}, val: Value() } + StorageDead(_2); + StorageDead(_3); + _0 = opaque::(_6) -> bb2; } bb2: { - _7 = (*_4); // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - _0 = opaque::(_7) -> bb3; // scope 0 at $DIR/reference_prop.rs:+27:13: +27:38 - // mir::Constant - // + span: $DIR/reference_prop.rs:494:28: 494:34 - // + literal: Const { ty: fn(i32) {opaque::}, val: Value() } + _7 = (*_4); + _0 = opaque::(_7) -> bb3; } bb3: { - _8 = (*_5); // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - _0 = opaque::(_8) -> bb4; // scope 0 at $DIR/reference_prop.rs:+33:13: +33:43 - // mir::Constant - // + span: $DIR/reference_prop.rs:500:33: 500:39 - // + literal: Const { ty: fn(i32) {opaque::}, val: Value() } + _8 = (*_5); + _0 = opaque::(_8) -> bb4; } bb4: { - return; // scope 0 at $DIR/reference_prop.rs:+36:13: +36:21 + return; } } diff --git a/tests/mir-opt/reference_prop.multiple_storage.ReferencePropagation.diff b/tests/mir-opt/reference_prop.multiple_storage.ReferencePropagation.diff index 6e45178687068..03add12654509 100644 --- a/tests/mir-opt/reference_prop.multiple_storage.ReferencePropagation.diff +++ b/tests/mir-opt/reference_prop.multiple_storage.ReferencePropagation.diff @@ -2,26 +2,23 @@ + // MIR for `multiple_storage` after ReferencePropagation fn multiple_storage() -> () { - let mut _0: (); // return place in scope 0 at $DIR/reference_prop.rs:+0:23: +0:23 - let mut _1: i32; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _2: &i32; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _3: i32; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL + let mut _0: (); + let mut _1: i32; + let mut _2: &i32; + let mut _3: i32; bb0: { - StorageLive(_1); // scope 0 at $DIR/reference_prop.rs:+6:13: +6:27 - _1 = const 5_i32; // scope 0 at $DIR/reference_prop.rs:+7:13: +7:18 - _2 = &_1; // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - StorageDead(_1); // scope 0 at $DIR/reference_prop.rs:+9:13: +9:27 - StorageLive(_1); // scope 0 at $DIR/reference_prop.rs:+10:13: +10:27 - _3 = (*_2); // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - _0 = opaque::(_3) -> bb1; // scope 0 at $DIR/reference_prop.rs:+14:13: +14:43 - // mir::Constant - // + span: $DIR/reference_prop.rs:429:33: 429:39 - // + literal: Const { ty: fn(i32) {opaque::}, val: Value() } + StorageLive(_1); + _1 = const 5_i32; + _2 = &_1; + StorageDead(_1); + StorageLive(_1); + _3 = (*_2); + _0 = opaque::(_3) -> bb1; } bb1: { - return; // scope 0 at $DIR/reference_prop.rs:+18:13: +18:21 + return; } } diff --git a/tests/mir-opt/reference_prop.mut_raw_then_mut_shr.ReferencePropagation.diff b/tests/mir-opt/reference_prop.mut_raw_then_mut_shr.ReferencePropagation.diff index d99e110359f7d..9ec8f9d78bbba 100644 --- a/tests/mir-opt/reference_prop.mut_raw_then_mut_shr.ReferencePropagation.diff +++ b/tests/mir-opt/reference_prop.mut_raw_then_mut_shr.ReferencePropagation.diff @@ -2,30 +2,30 @@ + // MIR for `mut_raw_then_mut_shr` after ReferencePropagation fn mut_raw_then_mut_shr() -> (i32, i32) { - let mut _0: (i32, i32); // return place in scope 0 at $DIR/reference_prop.rs:+0:30: +0:40 - let mut _1: i32; // in scope 0 at $DIR/reference_prop.rs:+1:9: +1:14 - let mut _4: *mut i32; // in scope 0 at $DIR/reference_prop.rs:+3:16: +3:36 - let mut _5: &mut i32; // in scope 0 at $DIR/reference_prop.rs:+3:16: +3:26 - let _8: (); // in scope 0 at $DIR/reference_prop.rs:+7:5: +7:26 - let mut _9: i32; // in scope 0 at $DIR/reference_prop.rs:+8:6: +8:7 - let mut _10: i32; // in scope 0 at $DIR/reference_prop.rs:+8:9: +8:10 + let mut _0: (i32, i32); + let mut _1: i32; + let mut _4: *mut i32; + let mut _5: &mut i32; + let _8: (); + let mut _9: i32; + let mut _10: i32; scope 1 { - debug x => _1; // in scope 1 at $DIR/reference_prop.rs:+1:9: +1:14 - let _2: &mut i32; // in scope 1 at $DIR/reference_prop.rs:+2:9: +2:13 + debug x => _1; + let _2: &mut i32; scope 2 { -- debug xref => _2; // in scope 2 at $DIR/reference_prop.rs:+2:9: +2:13 -+ debug xref => &_1; // in scope 2 at $DIR/reference_prop.rs:+2:9: +2:13 - let _3: *mut i32; // in scope 2 at $DIR/reference_prop.rs:+3:9: +3:13 +- debug xref => _2; ++ debug xref => &_1; + let _3: *mut i32; scope 3 { -- debug xraw => _3; // in scope 3 at $DIR/reference_prop.rs:+3:9: +3:13 -+ debug xraw => &_1; // in scope 3 at $DIR/reference_prop.rs:+3:9: +3:13 - let _6: &i32; // in scope 3 at $DIR/reference_prop.rs:+4:9: +4:13 +- debug xraw => _3; ++ debug xraw => &_1; + let _6: &i32; scope 4 { -- debug xshr => _6; // in scope 4 at $DIR/reference_prop.rs:+4:9: +4:13 -+ debug xshr => &_1; // in scope 4 at $DIR/reference_prop.rs:+4:9: +4:13 - let _7: i32; // in scope 4 at $DIR/reference_prop.rs:+6:9: +6:10 +- debug xshr => _6; ++ debug xshr => &_1; + let _7: i32; scope 5 { - debug a => _7; // in scope 5 at $DIR/reference_prop.rs:+6:9: +6:10 + debug a => _7; scope 6 { } } @@ -35,41 +35,41 @@ } bb0: { - StorageLive(_1); // scope 0 at $DIR/reference_prop.rs:+1:9: +1:14 - _1 = const 2_i32; // scope 0 at $DIR/reference_prop.rs:+1:17: +1:18 -- StorageLive(_2); // scope 1 at $DIR/reference_prop.rs:+2:9: +2:13 -- _2 = &mut _1; // scope 1 at $DIR/reference_prop.rs:+2:16: +2:22 -- StorageLive(_3); // scope 2 at $DIR/reference_prop.rs:+3:9: +3:13 -- StorageLive(_4); // scope 2 at $DIR/reference_prop.rs:+3:16: +3:36 -- StorageLive(_5); // scope 2 at $DIR/reference_prop.rs:+3:16: +3:26 -- _5 = &mut (*_2); // scope 2 at $DIR/reference_prop.rs:+3:16: +3:26 -- _4 = &raw mut (*_5); // scope 2 at $DIR/reference_prop.rs:+3:16: +3:26 -- _3 = _4; // scope 2 at $DIR/reference_prop.rs:+3:16: +3:36 -- StorageDead(_5); // scope 2 at $DIR/reference_prop.rs:+3:36: +3:37 -- StorageDead(_4); // scope 2 at $DIR/reference_prop.rs:+3:36: +3:37 -- StorageLive(_6); // scope 3 at $DIR/reference_prop.rs:+4:9: +4:13 -- _6 = &(*_2); // scope 3 at $DIR/reference_prop.rs:+4:16: +4:22 - StorageLive(_7); // scope 4 at $DIR/reference_prop.rs:+6:9: +6:10 -- _7 = (*_6); // scope 4 at $DIR/reference_prop.rs:+6:13: +6:18 -- StorageLive(_8); // scope 5 at $DIR/reference_prop.rs:+7:5: +7:26 -- (*_3) = const 4_i32; // scope 6 at $DIR/reference_prop.rs:+7:14: +7:23 -- _8 = const (); // scope 6 at $DIR/reference_prop.rs:+7:5: +7:26 -- StorageDead(_8); // scope 5 at $DIR/reference_prop.rs:+7:25: +7:26 -+ _7 = _1; // scope 4 at $DIR/reference_prop.rs:+6:13: +6:18 -+ _1 = const 4_i32; // scope 6 at $DIR/reference_prop.rs:+7:14: +7:23 - StorageLive(_9); // scope 5 at $DIR/reference_prop.rs:+8:6: +8:7 - _9 = _7; // scope 5 at $DIR/reference_prop.rs:+8:6: +8:7 - StorageLive(_10); // scope 5 at $DIR/reference_prop.rs:+8:9: +8:10 - _10 = _1; // scope 5 at $DIR/reference_prop.rs:+8:9: +8:10 - _0 = (move _9, move _10); // scope 5 at $DIR/reference_prop.rs:+8:5: +8:11 - StorageDead(_10); // scope 5 at $DIR/reference_prop.rs:+8:10: +8:11 - StorageDead(_9); // scope 5 at $DIR/reference_prop.rs:+8:10: +8:11 - StorageDead(_7); // scope 4 at $DIR/reference_prop.rs:+9:1: +9:2 -- StorageDead(_6); // scope 3 at $DIR/reference_prop.rs:+9:1: +9:2 -- StorageDead(_3); // scope 2 at $DIR/reference_prop.rs:+9:1: +9:2 -- StorageDead(_2); // scope 1 at $DIR/reference_prop.rs:+9:1: +9:2 - StorageDead(_1); // scope 0 at $DIR/reference_prop.rs:+9:1: +9:2 - return; // scope 0 at $DIR/reference_prop.rs:+9:2: +9:2 + StorageLive(_1); + _1 = const 2_i32; +- StorageLive(_2); +- _2 = &mut _1; +- StorageLive(_3); +- StorageLive(_4); +- StorageLive(_5); +- _5 = &mut (*_2); +- _4 = &raw mut (*_5); +- _3 = _4; +- StorageDead(_5); +- StorageDead(_4); +- StorageLive(_6); +- _6 = &(*_2); + StorageLive(_7); +- _7 = (*_6); +- StorageLive(_8); +- (*_3) = const 4_i32; +- _8 = const (); +- StorageDead(_8); ++ _7 = _1; ++ _1 = const 4_i32; + StorageLive(_9); + _9 = _7; + StorageLive(_10); + _10 = _1; + _0 = (move _9, move _10); + StorageDead(_10); + StorageDead(_9); + StorageDead(_7); +- StorageDead(_6); +- StorageDead(_3); +- StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/reference_prop.read_through_raw.ReferencePropagation.diff b/tests/mir-opt/reference_prop.read_through_raw.ReferencePropagation.diff index 75c1f8f57ccae..371b0e468b1db 100644 --- a/tests/mir-opt/reference_prop.read_through_raw.ReferencePropagation.diff +++ b/tests/mir-opt/reference_prop.read_through_raw.ReferencePropagation.diff @@ -2,22 +2,22 @@ + // MIR for `read_through_raw` after ReferencePropagation fn read_through_raw(_1: &mut usize) -> usize { - let mut _0: usize; // return place in scope 0 at $DIR/reference_prop.rs:+0:39: +0:44 - let mut _2: &mut usize; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _3: &mut usize; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _4: *mut usize; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - let mut _5: *mut usize; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL + let mut _0: usize; + let mut _2: &mut usize; + let mut _3: &mut usize; + let mut _4: *mut usize; + let mut _5: *mut usize; bb0: { -- _2 = &mut (*_1); // scope 0 at $DIR/reference_prop.rs:+10:13: +10:25 -- _3 = &mut (*_2); // scope 0 at $DIR/reference_prop.rs:+11:13: +11:26 -- _4 = &raw mut (*_2); // scope 0 at $DIR/reference_prop.rs:+12:13: +12:30 -- _5 = &raw mut (*_3); // scope 0 at $DIR/reference_prop.rs:+13:13: +13:30 -- _0 = (*_4); // scope 0 at $DIR/reference_prop.rs:+15:13: +15:22 -- _0 = (*_5); // scope 0 at $DIR/reference_prop.rs:+16:13: +16:22 -+ _0 = (*_1); // scope 0 at $DIR/reference_prop.rs:+15:13: +15:22 -+ _0 = (*_1); // scope 0 at $DIR/reference_prop.rs:+16:13: +16:22 - return; // scope 0 at $DIR/reference_prop.rs:+17:13: +17:21 +- _2 = &mut (*_1); +- _3 = &mut (*_2); +- _4 = &raw mut (*_2); +- _5 = &raw mut (*_3); +- _0 = (*_4); +- _0 = (*_5); ++ _0 = (*_1); ++ _0 = (*_1); + return; } } diff --git a/tests/mir-opt/reference_prop.reference_propagation.ReferencePropagation.diff b/tests/mir-opt/reference_prop.reference_propagation.ReferencePropagation.diff index 7b31ee695cecc..43292dd7249a3 100644 --- a/tests/mir-opt/reference_prop.reference_propagation.ReferencePropagation.diff +++ b/tests/mir-opt/reference_prop.reference_propagation.ReferencePropagation.diff @@ -2,137 +2,137 @@ + // MIR for `reference_propagation` after ReferencePropagation fn reference_propagation(_1: &T, _2: &T) -> () { - debug single => _1; // in scope 0 at $DIR/reference_prop.rs:+0:39: +0:45 - debug multiple => _2; // in scope 0 at $DIR/reference_prop.rs:+0:54: +0:66 - let mut _0: (); // return place in scope 0 at $DIR/reference_prop.rs:+0:75: +0:75 - let _3: (); // in scope 0 at $DIR/reference_prop.rs:+2:5: +7:6 - let _4: usize; // in scope 0 at $DIR/reference_prop.rs:+3:13: +3:14 - let _7: (); // in scope 0 at $DIR/reference_prop.rs:+6:9: +6:19 - let mut _8: (); // in scope 0 at $DIR/reference_prop.rs:+6:16: +6:18 - let _9: (); // in scope 0 at $DIR/reference_prop.rs:+10:5: +18:6 - let _10: usize; // in scope 0 at $DIR/reference_prop.rs:+11:13: +11:14 - let mut _13: &usize; // in scope 0 at $DIR/reference_prop.rs:+14:13: +14:16 - let _14: &usize; // in scope 0 at $DIR/reference_prop.rs:+14:13: +14:16 - let _16: (); // in scope 0 at $DIR/reference_prop.rs:+17:9: +17:19 - let mut _17: (); // in scope 0 at $DIR/reference_prop.rs:+17:16: +17:18 - let _18: (); // in scope 0 at $DIR/reference_prop.rs:+21:5: +27:6 - let _19: usize; // in scope 0 at $DIR/reference_prop.rs:+22:13: +22:14 - let _23: (); // in scope 0 at $DIR/reference_prop.rs:+26:9: +26:18 - let mut _24: &&usize; // in scope 0 at $DIR/reference_prop.rs:+26:16: +26:17 - let _25: (); // in scope 0 at $DIR/reference_prop.rs:+30:5: +36:6 - let _26: usize; // in scope 0 at $DIR/reference_prop.rs:+31:13: +31:14 - let _30: (); // in scope 0 at $DIR/reference_prop.rs:+35:9: +35:18 - let mut _31: *mut &usize; // in scope 0 at $DIR/reference_prop.rs:+35:16: +35:17 - let _32: (); // in scope 0 at $DIR/reference_prop.rs:+39:5: +44:6 - let _33: usize; // in scope 0 at $DIR/reference_prop.rs:+40:13: +40:14 - let _36: (); // in scope 0 at $DIR/reference_prop.rs:+43:9: +43:18 - let mut _37: &usize; // in scope 0 at $DIR/reference_prop.rs:+43:16: +43:17 - let _38: (); // in scope 0 at $DIR/reference_prop.rs:+47:5: +57:6 - let _39: usize; // in scope 0 at $DIR/reference_prop.rs:+48:13: +48:14 - let _45: (); // in scope 0 at $DIR/reference_prop.rs:+56:9: +56:19 - let mut _46: &usize; // in scope 0 at $DIR/reference_prop.rs:+56:16: +56:18 - let _47: (); // in scope 0 at $DIR/reference_prop.rs:+60:5: +64:6 - let _48: &T; // in scope 0 at $DIR/reference_prop.rs:+61:13: +61:14 - let _50: (); // in scope 0 at $DIR/reference_prop.rs:+63:9: +63:19 - let mut _51: (); // in scope 0 at $DIR/reference_prop.rs:+63:16: +63:18 - let _52: (); // in scope 0 at $DIR/reference_prop.rs:+67:5: +72:6 - let _53: &T; // in scope 0 at $DIR/reference_prop.rs:+68:13: +68:14 - let mut _54: &T; // in scope 0 at $DIR/reference_prop.rs:+69:20: +69:28 - let _55: &T; // in scope 0 at $DIR/reference_prop.rs:+69:20: +69:28 - let _57: (); // in scope 0 at $DIR/reference_prop.rs:+71:9: +71:19 - let mut _58: (); // in scope 0 at $DIR/reference_prop.rs:+71:16: +71:18 - let _59: (); // in scope 0 at $DIR/reference_prop.rs:+75:5: +81:6 - let _60: usize; // in scope 0 at $DIR/reference_prop.rs:+76:13: +76:14 - let _64: (); // in scope 0 at $DIR/reference_prop.rs:+80:9: +80:19 - let mut _65: (); // in scope 0 at $DIR/reference_prop.rs:+80:16: +80:18 - let _66: usize; // in scope 0 at $DIR/reference_prop.rs:+85:13: +85:14 - let _70: (); // in scope 0 at $DIR/reference_prop.rs:+89:9: +89:19 - let mut _71: (); // in scope 0 at $DIR/reference_prop.rs:+89:16: +89:18 + debug single => _1; + debug multiple => _2; + let mut _0: (); + let _3: (); + let _4: usize; + let _7: (); + let mut _8: (); + let _9: (); + let _10: usize; + let mut _13: &usize; + let _14: &usize; + let _16: (); + let mut _17: (); + let _18: (); + let _19: usize; + let _23: (); + let mut _24: &&usize; + let _25: (); + let _26: usize; + let _30: (); + let mut _31: *mut &usize; + let _32: (); + let _33: usize; + let _36: (); + let mut _37: &usize; + let _38: (); + let _39: usize; + let _45: (); + let mut _46: &usize; + let _47: (); + let _48: &T; + let _50: (); + let mut _51: (); + let _52: (); + let _53: &T; + let mut _54: &T; + let _55: &T; + let _57: (); + let mut _58: (); + let _59: (); + let _60: usize; + let _64: (); + let mut _65: (); + let _66: usize; + let _70: (); + let mut _71: (); scope 1 { - debug a => _4; // in scope 1 at $DIR/reference_prop.rs:+3:13: +3:14 - let _5: &usize; // in scope 1 at $DIR/reference_prop.rs:+4:13: +4:14 + debug a => _4; + let _5: &usize; scope 2 { -- debug b => _5; // in scope 2 at $DIR/reference_prop.rs:+4:13: +4:14 -+ debug b => &_4; // in scope 2 at $DIR/reference_prop.rs:+4:13: +4:14 - let _6: usize; // in scope 2 at $DIR/reference_prop.rs:+5:13: +5:14 +- debug b => _5; ++ debug b => &_4; + let _6: usize; scope 3 { - debug c => _6; // in scope 3 at $DIR/reference_prop.rs:+5:13: +5:14 + debug c => _6; } } } scope 4 { - debug a => _10; // in scope 4 at $DIR/reference_prop.rs:+11:13: +11:14 - let _11: usize; // in scope 4 at $DIR/reference_prop.rs:+12:13: +12:15 + debug a => _10; + let _11: usize; scope 5 { - debug a2 => _11; // in scope 5 at $DIR/reference_prop.rs:+12:13: +12:15 - let mut _12: &usize; // in scope 5 at $DIR/reference_prop.rs:+13:13: +13:18 + debug a2 => _11; + let mut _12: &usize; scope 6 { - debug b => _12; // in scope 6 at $DIR/reference_prop.rs:+13:13: +13:18 - let _15: usize; // in scope 6 at $DIR/reference_prop.rs:+16:13: +16:14 + debug b => _12; + let _15: usize; scope 7 { - debug c => _15; // in scope 7 at $DIR/reference_prop.rs:+16:13: +16:14 + debug c => _15; } } } } scope 8 { - debug a => _19; // in scope 8 at $DIR/reference_prop.rs:+22:13: +22:14 - let _20: &usize; // in scope 8 at $DIR/reference_prop.rs:+23:13: +23:14 + debug a => _19; + let _20: &usize; scope 9 { - debug b => _20; // in scope 9 at $DIR/reference_prop.rs:+23:13: +23:14 - let _21: &&usize; // in scope 9 at $DIR/reference_prop.rs:+24:13: +24:14 + debug b => _20; + let _21: &&usize; scope 10 { - debug d => _21; // in scope 10 at $DIR/reference_prop.rs:+24:13: +24:14 - let _22: usize; // in scope 10 at $DIR/reference_prop.rs:+25:13: +25:14 + debug d => _21; + let _22: usize; scope 11 { - debug c => _22; // in scope 11 at $DIR/reference_prop.rs:+25:13: +25:14 + debug c => _22; } } } } scope 12 { - debug a => _26; // in scope 12 at $DIR/reference_prop.rs:+31:13: +31:14 - let mut _27: &usize; // in scope 12 at $DIR/reference_prop.rs:+32:13: +32:18 + debug a => _26; + let mut _27: &usize; scope 13 { - debug b => _27; // in scope 13 at $DIR/reference_prop.rs:+32:13: +32:18 - let _28: *mut &usize; // in scope 13 at $DIR/reference_prop.rs:+33:13: +33:14 + debug b => _27; + let _28: *mut &usize; scope 14 { - debug d => _28; // in scope 14 at $DIR/reference_prop.rs:+33:13: +33:14 - let _29: usize; // in scope 14 at $DIR/reference_prop.rs:+34:13: +34:14 + debug d => _28; + let _29: usize; scope 15 { - debug c => _29; // in scope 15 at $DIR/reference_prop.rs:+34:13: +34:14 + debug c => _29; } } } } scope 16 { - debug a => _33; // in scope 16 at $DIR/reference_prop.rs:+40:13: +40:14 - let _34: &usize; // in scope 16 at $DIR/reference_prop.rs:+41:13: +41:14 + debug a => _33; + let _34: &usize; scope 17 { - debug b => _34; // in scope 17 at $DIR/reference_prop.rs:+41:13: +41:14 - let _35: usize; // in scope 17 at $DIR/reference_prop.rs:+42:13: +42:14 + debug b => _34; + let _35: usize; scope 18 { - debug c => _35; // in scope 18 at $DIR/reference_prop.rs:+42:13: +42:14 + debug c => _35; } } } scope 19 { - debug a => _39; // in scope 19 at $DIR/reference_prop.rs:+48:13: +48:14 - let _40: &usize; // in scope 19 at $DIR/reference_prop.rs:+49:13: +49:15 + debug a => _39; + let _40: &usize; scope 20 { - debug b1 => _40; // in scope 20 at $DIR/reference_prop.rs:+49:13: +49:15 - let _41: usize; // in scope 20 at $DIR/reference_prop.rs:+50:13: +50:14 + debug b1 => _40; + let _41: usize; scope 21 { - debug c => _41; // in scope 21 at $DIR/reference_prop.rs:+50:13: +50:14 - let _42: &usize; // in scope 21 at $DIR/reference_prop.rs:+51:13: +51:15 + debug c => _41; + let _42: &usize; scope 22 { - debug b2 => _42; // in scope 22 at $DIR/reference_prop.rs:+51:13: +51:15 - let _43: usize; // in scope 22 at $DIR/reference_prop.rs:+52:13: +52:15 + debug b2 => _42; + let _43: usize; scope 23 { - debug c2 => _43; // in scope 23 at $DIR/reference_prop.rs:+52:13: +52:15 - let _44: &usize; // in scope 23 at $DIR/reference_prop.rs:+53:13: +53:15 + debug c2 => _43; + let _44: &usize; scope 24 { - debug b3 => _44; // in scope 24 at $DIR/reference_prop.rs:+53:13: +53:15 + debug b3 => _44; } } } @@ -140,336 +140,306 @@ } } scope 25 { -- debug a => _48; // in scope 25 at $DIR/reference_prop.rs:+61:13: +61:14 -+ debug a => _1; // in scope 25 at $DIR/reference_prop.rs:+61:13: +61:14 - let _49: T; // in scope 25 at $DIR/reference_prop.rs:+62:13: +62:14 +- debug a => _48; ++ debug a => _1; + let _49: T; scope 26 { - debug b => _49; // in scope 26 at $DIR/reference_prop.rs:+62:13: +62:14 + debug b => _49; } } scope 27 { - debug a => _53; // in scope 27 at $DIR/reference_prop.rs:+68:13: +68:14 - let _56: T; // in scope 27 at $DIR/reference_prop.rs:+70:13: +70:14 + debug a => _53; + let _56: T; scope 28 { - debug b => _56; // in scope 28 at $DIR/reference_prop.rs:+70:13: +70:14 + debug b => _56; } } scope 29 { - debug a => _60; // in scope 29 at $DIR/reference_prop.rs:+76:13: +76:14 - let _61: &usize; // in scope 29 at $DIR/reference_prop.rs:+77:13: +77:14 + debug a => _60; + let _61: &usize; scope 30 { -- debug b => _61; // in scope 30 at $DIR/reference_prop.rs:+77:13: +77:14 -+ debug b => &_60; // in scope 30 at $DIR/reference_prop.rs:+77:13: +77:14 - let _62: &&usize; // in scope 30 at $DIR/reference_prop.rs:+78:13: +78:14 +- debug b => _61; ++ debug b => &_60; + let _62: &&usize; scope 31 { -- debug d => _62; // in scope 31 at $DIR/reference_prop.rs:+78:13: +78:14 -+ debug d => &&_60; // in scope 31 at $DIR/reference_prop.rs:+78:13: +78:14 - let _63: usize; // in scope 31 at $DIR/reference_prop.rs:+79:13: +79:14 +- debug d => _62; ++ debug d => &&_60; + let _63: usize; scope 32 { - debug c => _63; // in scope 32 at $DIR/reference_prop.rs:+79:13: +79:14 + debug c => _63; } } } } scope 33 { - debug a => _66; // in scope 33 at $DIR/reference_prop.rs:+85:13: +85:14 - let mut _67: &usize; // in scope 33 at $DIR/reference_prop.rs:+86:13: +86:18 + debug a => _66; + let mut _67: &usize; scope 34 { -- debug b => _67; // in scope 34 at $DIR/reference_prop.rs:+86:13: +86:18 -+ debug b => &_66; // in scope 34 at $DIR/reference_prop.rs:+86:13: +86:18 - let _68: &mut &usize; // in scope 34 at $DIR/reference_prop.rs:+87:13: +87:14 +- debug b => _67; ++ debug b => &_66; + let _68: &mut &usize; scope 35 { -- debug d => _68; // in scope 35 at $DIR/reference_prop.rs:+87:13: +87:14 -+ debug d => &&_66; // in scope 35 at $DIR/reference_prop.rs:+87:13: +87:14 - let _69: usize; // in scope 35 at $DIR/reference_prop.rs:+88:13: +88:14 +- debug d => _68; ++ debug d => &&_66; + let _69: usize; scope 36 { - debug c => _69; // in scope 36 at $DIR/reference_prop.rs:+88:13: +88:14 + debug c => _69; } } } } bb0: { -- StorageLive(_3); // scope 0 at $DIR/reference_prop.rs:+2:5: +7:6 - StorageLive(_4); // scope 0 at $DIR/reference_prop.rs:+3:13: +3:14 - _4 = const 5_usize; // scope 0 at $DIR/reference_prop.rs:+3:17: +3:24 -- StorageLive(_5); // scope 1 at $DIR/reference_prop.rs:+4:13: +4:14 -- _5 = &_4; // scope 1 at $DIR/reference_prop.rs:+4:17: +4:19 - StorageLive(_6); // scope 2 at $DIR/reference_prop.rs:+5:13: +5:14 -- _6 = (*_5); // scope 2 at $DIR/reference_prop.rs:+5:17: +5:19 -+ _6 = _4; // scope 2 at $DIR/reference_prop.rs:+5:17: +5:19 - StorageLive(_7); // scope 3 at $DIR/reference_prop.rs:+6:9: +6:19 - StorageLive(_8); // scope 3 at $DIR/reference_prop.rs:+6:16: +6:18 - _8 = (); // scope 3 at $DIR/reference_prop.rs:+6:16: +6:18 - _7 = opaque::<()>(move _8) -> bb1; // scope 3 at $DIR/reference_prop.rs:+6:9: +6:19 - // mir::Constant - // + span: $DIR/reference_prop.rs:16:9: 16:15 - // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value() } +- StorageLive(_3); + StorageLive(_4); + _4 = const 5_usize; +- StorageLive(_5); +- _5 = &_4; + StorageLive(_6); +- _6 = (*_5); ++ _6 = _4; + StorageLive(_7); + StorageLive(_8); + _8 = (); + _7 = opaque::<()>(move _8) -> bb1; } bb1: { - StorageDead(_8); // scope 3 at $DIR/reference_prop.rs:+6:18: +6:19 - StorageDead(_7); // scope 3 at $DIR/reference_prop.rs:+6:19: +6:20 -- _3 = const (); // scope 0 at $DIR/reference_prop.rs:+2:5: +7:6 - StorageDead(_6); // scope 2 at $DIR/reference_prop.rs:+7:5: +7:6 -- StorageDead(_5); // scope 1 at $DIR/reference_prop.rs:+7:5: +7:6 - StorageDead(_4); // scope 0 at $DIR/reference_prop.rs:+7:5: +7:6 -- StorageDead(_3); // scope 0 at $DIR/reference_prop.rs:+7:5: +7:6 -- StorageLive(_9); // scope 0 at $DIR/reference_prop.rs:+10:5: +18:6 - StorageLive(_10); // scope 0 at $DIR/reference_prop.rs:+11:13: +11:14 - _10 = const 5_usize; // scope 0 at $DIR/reference_prop.rs:+11:17: +11:24 - StorageLive(_11); // scope 4 at $DIR/reference_prop.rs:+12:13: +12:15 - _11 = const 7_usize; // scope 4 at $DIR/reference_prop.rs:+12:18: +12:25 - StorageLive(_12); // scope 5 at $DIR/reference_prop.rs:+13:13: +13:18 - _12 = &_10; // scope 5 at $DIR/reference_prop.rs:+13:21: +13:23 - StorageLive(_13); // scope 6 at $DIR/reference_prop.rs:+14:13: +14:16 -- StorageLive(_14); // scope 6 at $DIR/reference_prop.rs:+14:13: +14:16 -- _14 = &_11; // scope 6 at $DIR/reference_prop.rs:+14:13: +14:16 -- _13 = &(*_14); // scope 6 at $DIR/reference_prop.rs:+14:13: +14:16 -+ _13 = &_11; // scope 6 at $DIR/reference_prop.rs:+14:13: +14:16 - _12 = move _13; // scope 6 at $DIR/reference_prop.rs:+14:9: +14:16 - StorageDead(_13); // scope 6 at $DIR/reference_prop.rs:+14:15: +14:16 -- StorageDead(_14); // scope 6 at $DIR/reference_prop.rs:+14:16: +14:17 - StorageLive(_15); // scope 6 at $DIR/reference_prop.rs:+16:13: +16:14 - _15 = (*_12); // scope 6 at $DIR/reference_prop.rs:+16:17: +16:19 - StorageLive(_16); // scope 7 at $DIR/reference_prop.rs:+17:9: +17:19 - StorageLive(_17); // scope 7 at $DIR/reference_prop.rs:+17:16: +17:18 - _17 = (); // scope 7 at $DIR/reference_prop.rs:+17:16: +17:18 - _16 = opaque::<()>(move _17) -> bb2; // scope 7 at $DIR/reference_prop.rs:+17:9: +17:19 - // mir::Constant - // + span: $DIR/reference_prop.rs:27:9: 27:15 - // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value() } + StorageDead(_8); + StorageDead(_7); +- _3 = const (); + StorageDead(_6); +- StorageDead(_5); + StorageDead(_4); +- StorageDead(_3); +- StorageLive(_9); + StorageLive(_10); + _10 = const 5_usize; + StorageLive(_11); + _11 = const 7_usize; + StorageLive(_12); + _12 = &_10; + StorageLive(_13); +- StorageLive(_14); +- _14 = &_11; +- _13 = &(*_14); ++ _13 = &_11; + _12 = move _13; + StorageDead(_13); +- StorageDead(_14); + StorageLive(_15); + _15 = (*_12); + StorageLive(_16); + StorageLive(_17); + _17 = (); + _16 = opaque::<()>(move _17) -> bb2; } bb2: { - StorageDead(_17); // scope 7 at $DIR/reference_prop.rs:+17:18: +17:19 - StorageDead(_16); // scope 7 at $DIR/reference_prop.rs:+17:19: +17:20 -- _9 = const (); // scope 0 at $DIR/reference_prop.rs:+10:5: +18:6 - StorageDead(_15); // scope 6 at $DIR/reference_prop.rs:+18:5: +18:6 - StorageDead(_12); // scope 5 at $DIR/reference_prop.rs:+18:5: +18:6 - StorageDead(_11); // scope 4 at $DIR/reference_prop.rs:+18:5: +18:6 - StorageDead(_10); // scope 0 at $DIR/reference_prop.rs:+18:5: +18:6 -- StorageDead(_9); // scope 0 at $DIR/reference_prop.rs:+18:5: +18:6 -- StorageLive(_18); // scope 0 at $DIR/reference_prop.rs:+21:5: +27:6 - StorageLive(_19); // scope 0 at $DIR/reference_prop.rs:+22:13: +22:14 - _19 = const 5_usize; // scope 0 at $DIR/reference_prop.rs:+22:17: +22:24 - StorageLive(_20); // scope 8 at $DIR/reference_prop.rs:+23:13: +23:14 - _20 = &_19; // scope 8 at $DIR/reference_prop.rs:+23:17: +23:19 - StorageLive(_21); // scope 9 at $DIR/reference_prop.rs:+24:13: +24:14 - _21 = &_20; // scope 9 at $DIR/reference_prop.rs:+24:17: +24:19 - StorageLive(_22); // scope 10 at $DIR/reference_prop.rs:+25:13: +25:14 - _22 = (*_20); // scope 10 at $DIR/reference_prop.rs:+25:17: +25:19 - StorageLive(_23); // scope 11 at $DIR/reference_prop.rs:+26:9: +26:18 - StorageLive(_24); // scope 11 at $DIR/reference_prop.rs:+26:16: +26:17 - _24 = _21; // scope 11 at $DIR/reference_prop.rs:+26:16: +26:17 - _23 = opaque::<&&usize>(move _24) -> bb3; // scope 11 at $DIR/reference_prop.rs:+26:9: +26:18 - // mir::Constant - // + span: $DIR/reference_prop.rs:36:9: 36:15 - // + literal: Const { ty: fn(&&usize) {opaque::<&&usize>}, val: Value() } + StorageDead(_17); + StorageDead(_16); +- _9 = const (); + StorageDead(_15); + StorageDead(_12); + StorageDead(_11); + StorageDead(_10); +- StorageDead(_9); +- StorageLive(_18); + StorageLive(_19); + _19 = const 5_usize; + StorageLive(_20); + _20 = &_19; + StorageLive(_21); + _21 = &_20; + StorageLive(_22); + _22 = (*_20); + StorageLive(_23); + StorageLive(_24); + _24 = _21; + _23 = opaque::<&&usize>(move _24) -> bb3; } bb3: { - StorageDead(_24); // scope 11 at $DIR/reference_prop.rs:+26:17: +26:18 - StorageDead(_23); // scope 11 at $DIR/reference_prop.rs:+26:18: +26:19 -- _18 = const (); // scope 0 at $DIR/reference_prop.rs:+21:5: +27:6 - StorageDead(_22); // scope 10 at $DIR/reference_prop.rs:+27:5: +27:6 - StorageDead(_21); // scope 9 at $DIR/reference_prop.rs:+27:5: +27:6 - StorageDead(_20); // scope 8 at $DIR/reference_prop.rs:+27:5: +27:6 - StorageDead(_19); // scope 0 at $DIR/reference_prop.rs:+27:5: +27:6 -- StorageDead(_18); // scope 0 at $DIR/reference_prop.rs:+27:5: +27:6 -- StorageLive(_25); // scope 0 at $DIR/reference_prop.rs:+30:5: +36:6 - StorageLive(_26); // scope 0 at $DIR/reference_prop.rs:+31:13: +31:14 - _26 = const 5_usize; // scope 0 at $DIR/reference_prop.rs:+31:17: +31:24 - StorageLive(_27); // scope 12 at $DIR/reference_prop.rs:+32:13: +32:18 - _27 = &_26; // scope 12 at $DIR/reference_prop.rs:+32:21: +32:23 - StorageLive(_28); // scope 13 at $DIR/reference_prop.rs:+33:13: +33:14 - _28 = &raw mut _27; // scope 13 at $DIR/reference_prop.rs:+33:17: +33:27 - StorageLive(_29); // scope 14 at $DIR/reference_prop.rs:+34:13: +34:14 - _29 = (*_27); // scope 14 at $DIR/reference_prop.rs:+34:17: +34:19 - StorageLive(_30); // scope 15 at $DIR/reference_prop.rs:+35:9: +35:18 - StorageLive(_31); // scope 15 at $DIR/reference_prop.rs:+35:16: +35:17 - _31 = _28; // scope 15 at $DIR/reference_prop.rs:+35:16: +35:17 - _30 = opaque::<*mut &usize>(move _31) -> bb4; // scope 15 at $DIR/reference_prop.rs:+35:9: +35:18 - // mir::Constant - // + span: $DIR/reference_prop.rs:45:9: 45:15 - // + literal: Const { ty: fn(*mut &usize) {opaque::<*mut &usize>}, val: Value() } + StorageDead(_24); + StorageDead(_23); +- _18 = const (); + StorageDead(_22); + StorageDead(_21); + StorageDead(_20); + StorageDead(_19); +- StorageDead(_18); +- StorageLive(_25); + StorageLive(_26); + _26 = const 5_usize; + StorageLive(_27); + _27 = &_26; + StorageLive(_28); + _28 = &raw mut _27; + StorageLive(_29); + _29 = (*_27); + StorageLive(_30); + StorageLive(_31); + _31 = _28; + _30 = opaque::<*mut &usize>(move _31) -> bb4; } bb4: { - StorageDead(_31); // scope 15 at $DIR/reference_prop.rs:+35:17: +35:18 - StorageDead(_30); // scope 15 at $DIR/reference_prop.rs:+35:18: +35:19 -- _25 = const (); // scope 0 at $DIR/reference_prop.rs:+30:5: +36:6 - StorageDead(_29); // scope 14 at $DIR/reference_prop.rs:+36:5: +36:6 - StorageDead(_28); // scope 13 at $DIR/reference_prop.rs:+36:5: +36:6 - StorageDead(_27); // scope 12 at $DIR/reference_prop.rs:+36:5: +36:6 - StorageDead(_26); // scope 0 at $DIR/reference_prop.rs:+36:5: +36:6 -- StorageDead(_25); // scope 0 at $DIR/reference_prop.rs:+36:5: +36:6 -- StorageLive(_32); // scope 0 at $DIR/reference_prop.rs:+39:5: +44:6 - StorageLive(_33); // scope 0 at $DIR/reference_prop.rs:+40:13: +40:14 - _33 = const 7_usize; // scope 0 at $DIR/reference_prop.rs:+40:17: +40:24 - StorageLive(_34); // scope 16 at $DIR/reference_prop.rs:+41:13: +41:14 - _34 = &_33; // scope 16 at $DIR/reference_prop.rs:+41:17: +41:19 - StorageLive(_35); // scope 17 at $DIR/reference_prop.rs:+42:13: +42:14 -- _35 = (*_34); // scope 17 at $DIR/reference_prop.rs:+42:17: +42:19 -+ _35 = _33; // scope 17 at $DIR/reference_prop.rs:+42:17: +42:19 - StorageLive(_36); // scope 18 at $DIR/reference_prop.rs:+43:9: +43:18 - StorageLive(_37); // scope 18 at $DIR/reference_prop.rs:+43:16: +43:17 - _37 = _34; // scope 18 at $DIR/reference_prop.rs:+43:16: +43:17 - _36 = opaque::<&usize>(move _37) -> bb5; // scope 18 at $DIR/reference_prop.rs:+43:9: +43:18 - // mir::Constant - // + span: $DIR/reference_prop.rs:53:9: 53:15 - // + literal: Const { ty: fn(&usize) {opaque::<&usize>}, val: Value() } + StorageDead(_31); + StorageDead(_30); +- _25 = const (); + StorageDead(_29); + StorageDead(_28); + StorageDead(_27); + StorageDead(_26); +- StorageDead(_25); +- StorageLive(_32); + StorageLive(_33); + _33 = const 7_usize; + StorageLive(_34); + _34 = &_33; + StorageLive(_35); +- _35 = (*_34); ++ _35 = _33; + StorageLive(_36); + StorageLive(_37); + _37 = _34; + _36 = opaque::<&usize>(move _37) -> bb5; } bb5: { - StorageDead(_37); // scope 18 at $DIR/reference_prop.rs:+43:17: +43:18 - StorageDead(_36); // scope 18 at $DIR/reference_prop.rs:+43:18: +43:19 -- _32 = const (); // scope 0 at $DIR/reference_prop.rs:+39:5: +44:6 - StorageDead(_35); // scope 17 at $DIR/reference_prop.rs:+44:5: +44:6 - StorageDead(_34); // scope 16 at $DIR/reference_prop.rs:+44:5: +44:6 - StorageDead(_33); // scope 0 at $DIR/reference_prop.rs:+44:5: +44:6 -- StorageDead(_32); // scope 0 at $DIR/reference_prop.rs:+44:5: +44:6 -- StorageLive(_38); // scope 0 at $DIR/reference_prop.rs:+47:5: +57:6 - StorageLive(_39); // scope 0 at $DIR/reference_prop.rs:+48:13: +48:14 - _39 = const 7_usize; // scope 0 at $DIR/reference_prop.rs:+48:17: +48:24 - StorageLive(_40); // scope 19 at $DIR/reference_prop.rs:+49:13: +49:15 - _40 = &_39; // scope 19 at $DIR/reference_prop.rs:+49:18: +49:20 - StorageLive(_41); // scope 20 at $DIR/reference_prop.rs:+50:13: +50:14 -- _41 = (*_40); // scope 20 at $DIR/reference_prop.rs:+50:17: +50:20 -+ _41 = _39; // scope 20 at $DIR/reference_prop.rs:+50:17: +50:20 - StorageLive(_42); // scope 21 at $DIR/reference_prop.rs:+51:13: +51:15 - _42 = _40; // scope 21 at $DIR/reference_prop.rs:+51:18: +51:20 - StorageLive(_43); // scope 22 at $DIR/reference_prop.rs:+52:13: +52:15 -- _43 = (*_42); // scope 22 at $DIR/reference_prop.rs:+52:18: +52:21 -+ _43 = _39; // scope 22 at $DIR/reference_prop.rs:+52:18: +52:21 - StorageLive(_44); // scope 23 at $DIR/reference_prop.rs:+53:13: +53:15 - _44 = _42; // scope 23 at $DIR/reference_prop.rs:+53:18: +53:20 - StorageLive(_45); // scope 24 at $DIR/reference_prop.rs:+56:9: +56:19 - StorageLive(_46); // scope 24 at $DIR/reference_prop.rs:+56:16: +56:18 - _46 = _44; // scope 24 at $DIR/reference_prop.rs:+56:16: +56:18 - _45 = opaque::<&usize>(move _46) -> bb6; // scope 24 at $DIR/reference_prop.rs:+56:9: +56:19 - // mir::Constant - // + span: $DIR/reference_prop.rs:66:9: 66:15 - // + literal: Const { ty: fn(&usize) {opaque::<&usize>}, val: Value() } + StorageDead(_37); + StorageDead(_36); +- _32 = const (); + StorageDead(_35); + StorageDead(_34); + StorageDead(_33); +- StorageDead(_32); +- StorageLive(_38); + StorageLive(_39); + _39 = const 7_usize; + StorageLive(_40); + _40 = &_39; + StorageLive(_41); +- _41 = (*_40); ++ _41 = _39; + StorageLive(_42); + _42 = _40; + StorageLive(_43); +- _43 = (*_42); ++ _43 = _39; + StorageLive(_44); + _44 = _42; + StorageLive(_45); + StorageLive(_46); + _46 = _44; + _45 = opaque::<&usize>(move _46) -> bb6; } bb6: { - StorageDead(_46); // scope 24 at $DIR/reference_prop.rs:+56:18: +56:19 - StorageDead(_45); // scope 24 at $DIR/reference_prop.rs:+56:19: +56:20 -- _38 = const (); // scope 0 at $DIR/reference_prop.rs:+47:5: +57:6 - StorageDead(_44); // scope 23 at $DIR/reference_prop.rs:+57:5: +57:6 - StorageDead(_43); // scope 22 at $DIR/reference_prop.rs:+57:5: +57:6 - StorageDead(_42); // scope 21 at $DIR/reference_prop.rs:+57:5: +57:6 - StorageDead(_41); // scope 20 at $DIR/reference_prop.rs:+57:5: +57:6 - StorageDead(_40); // scope 19 at $DIR/reference_prop.rs:+57:5: +57:6 - StorageDead(_39); // scope 0 at $DIR/reference_prop.rs:+57:5: +57:6 -- StorageDead(_38); // scope 0 at $DIR/reference_prop.rs:+57:5: +57:6 -- StorageLive(_47); // scope 0 at $DIR/reference_prop.rs:+60:5: +64:6 -- StorageLive(_48); // scope 0 at $DIR/reference_prop.rs:+61:13: +61:14 -- _48 = &(*_1); // scope 0 at $DIR/reference_prop.rs:+61:17: +61:25 - StorageLive(_49); // scope 25 at $DIR/reference_prop.rs:+62:13: +62:14 -- _49 = (*_48); // scope 25 at $DIR/reference_prop.rs:+62:17: +62:19 -+ _49 = (*_1); // scope 25 at $DIR/reference_prop.rs:+62:17: +62:19 - StorageLive(_50); // scope 26 at $DIR/reference_prop.rs:+63:9: +63:19 - StorageLive(_51); // scope 26 at $DIR/reference_prop.rs:+63:16: +63:18 - _51 = (); // scope 26 at $DIR/reference_prop.rs:+63:16: +63:18 - _50 = opaque::<()>(move _51) -> bb7; // scope 26 at $DIR/reference_prop.rs:+63:9: +63:19 - // mir::Constant - // + span: $DIR/reference_prop.rs:73:9: 73:15 - // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value() } + StorageDead(_46); + StorageDead(_45); +- _38 = const (); + StorageDead(_44); + StorageDead(_43); + StorageDead(_42); + StorageDead(_41); + StorageDead(_40); + StorageDead(_39); +- StorageDead(_38); +- StorageLive(_47); +- StorageLive(_48); +- _48 = &(*_1); + StorageLive(_49); +- _49 = (*_48); ++ _49 = (*_1); + StorageLive(_50); + StorageLive(_51); + _51 = (); + _50 = opaque::<()>(move _51) -> bb7; } bb7: { - StorageDead(_51); // scope 26 at $DIR/reference_prop.rs:+63:18: +63:19 - StorageDead(_50); // scope 26 at $DIR/reference_prop.rs:+63:19: +63:20 -- _47 = const (); // scope 0 at $DIR/reference_prop.rs:+60:5: +64:6 - StorageDead(_49); // scope 25 at $DIR/reference_prop.rs:+64:5: +64:6 -- StorageDead(_48); // scope 0 at $DIR/reference_prop.rs:+64:5: +64:6 -- StorageDead(_47); // scope 0 at $DIR/reference_prop.rs:+64:5: +64:6 -- StorageLive(_52); // scope 0 at $DIR/reference_prop.rs:+67:5: +72:6 - StorageLive(_53); // scope 0 at $DIR/reference_prop.rs:+68:13: +68:14 - _53 = &(*_2); // scope 0 at $DIR/reference_prop.rs:+68:17: +68:27 - StorageLive(_54); // scope 27 at $DIR/reference_prop.rs:+69:20: +69:28 -- StorageLive(_55); // scope 27 at $DIR/reference_prop.rs:+69:20: +69:28 -- _55 = &(*_1); // scope 27 at $DIR/reference_prop.rs:+69:20: +69:28 -- _54 = &(*_55); // scope 27 at $DIR/reference_prop.rs:+69:20: +69:28 -+ _54 = &(*_1); // scope 27 at $DIR/reference_prop.rs:+69:20: +69:28 - _2 = move _54; // scope 27 at $DIR/reference_prop.rs:+69:9: +69:28 - StorageDead(_54); // scope 27 at $DIR/reference_prop.rs:+69:27: +69:28 -- StorageDead(_55); // scope 27 at $DIR/reference_prop.rs:+69:28: +69:29 - StorageLive(_56); // scope 27 at $DIR/reference_prop.rs:+70:13: +70:14 - _56 = (*_53); // scope 27 at $DIR/reference_prop.rs:+70:17: +70:19 - StorageLive(_57); // scope 28 at $DIR/reference_prop.rs:+71:9: +71:19 - StorageLive(_58); // scope 28 at $DIR/reference_prop.rs:+71:16: +71:18 - _58 = (); // scope 28 at $DIR/reference_prop.rs:+71:16: +71:18 - _57 = opaque::<()>(move _58) -> bb8; // scope 28 at $DIR/reference_prop.rs:+71:9: +71:19 - // mir::Constant - // + span: $DIR/reference_prop.rs:81:9: 81:15 - // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value() } + StorageDead(_51); + StorageDead(_50); +- _47 = const (); + StorageDead(_49); +- StorageDead(_48); +- StorageDead(_47); +- StorageLive(_52); + StorageLive(_53); + _53 = &(*_2); + StorageLive(_54); +- StorageLive(_55); +- _55 = &(*_1); +- _54 = &(*_55); ++ _54 = &(*_1); + _2 = move _54; + StorageDead(_54); +- StorageDead(_55); + StorageLive(_56); + _56 = (*_53); + StorageLive(_57); + StorageLive(_58); + _58 = (); + _57 = opaque::<()>(move _58) -> bb8; } bb8: { - StorageDead(_58); // scope 28 at $DIR/reference_prop.rs:+71:18: +71:19 - StorageDead(_57); // scope 28 at $DIR/reference_prop.rs:+71:19: +71:20 -- _52 = const (); // scope 0 at $DIR/reference_prop.rs:+67:5: +72:6 - StorageDead(_56); // scope 27 at $DIR/reference_prop.rs:+72:5: +72:6 - StorageDead(_53); // scope 0 at $DIR/reference_prop.rs:+72:5: +72:6 -- StorageDead(_52); // scope 0 at $DIR/reference_prop.rs:+72:5: +72:6 -- StorageLive(_59); // scope 0 at $DIR/reference_prop.rs:+75:5: +81:6 - StorageLive(_60); // scope 0 at $DIR/reference_prop.rs:+76:13: +76:14 - _60 = const 5_usize; // scope 0 at $DIR/reference_prop.rs:+76:17: +76:24 -- StorageLive(_61); // scope 29 at $DIR/reference_prop.rs:+77:13: +77:14 -- _61 = &_60; // scope 29 at $DIR/reference_prop.rs:+77:17: +77:19 -- StorageLive(_62); // scope 30 at $DIR/reference_prop.rs:+78:13: +78:14 -- _62 = &_61; // scope 30 at $DIR/reference_prop.rs:+78:17: +78:19 - StorageLive(_63); // scope 31 at $DIR/reference_prop.rs:+79:13: +79:14 -- _63 = (*_61); // scope 31 at $DIR/reference_prop.rs:+79:17: +79:19 -+ _63 = _60; // scope 31 at $DIR/reference_prop.rs:+79:17: +79:19 - StorageLive(_64); // scope 32 at $DIR/reference_prop.rs:+80:9: +80:19 - StorageLive(_65); // scope 32 at $DIR/reference_prop.rs:+80:16: +80:18 - _65 = (); // scope 32 at $DIR/reference_prop.rs:+80:16: +80:18 - _64 = opaque::<()>(move _65) -> bb9; // scope 32 at $DIR/reference_prop.rs:+80:9: +80:19 - // mir::Constant - // + span: $DIR/reference_prop.rs:90:9: 90:15 - // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value() } + StorageDead(_58); + StorageDead(_57); +- _52 = const (); + StorageDead(_56); + StorageDead(_53); +- StorageDead(_52); +- StorageLive(_59); + StorageLive(_60); + _60 = const 5_usize; +- StorageLive(_61); +- _61 = &_60; +- StorageLive(_62); +- _62 = &_61; + StorageLive(_63); +- _63 = (*_61); ++ _63 = _60; + StorageLive(_64); + StorageLive(_65); + _65 = (); + _64 = opaque::<()>(move _65) -> bb9; } bb9: { - StorageDead(_65); // scope 32 at $DIR/reference_prop.rs:+80:18: +80:19 - StorageDead(_64); // scope 32 at $DIR/reference_prop.rs:+80:19: +80:20 -- _59 = const (); // scope 0 at $DIR/reference_prop.rs:+75:5: +81:6 - StorageDead(_63); // scope 31 at $DIR/reference_prop.rs:+81:5: +81:6 -- StorageDead(_62); // scope 30 at $DIR/reference_prop.rs:+81:5: +81:6 -- StorageDead(_61); // scope 29 at $DIR/reference_prop.rs:+81:5: +81:6 - StorageDead(_60); // scope 0 at $DIR/reference_prop.rs:+81:5: +81:6 -- StorageDead(_59); // scope 0 at $DIR/reference_prop.rs:+81:5: +81:6 - StorageLive(_66); // scope 0 at $DIR/reference_prop.rs:+85:13: +85:14 - _66 = const 5_usize; // scope 0 at $DIR/reference_prop.rs:+85:17: +85:24 -- StorageLive(_67); // scope 33 at $DIR/reference_prop.rs:+86:13: +86:18 -- _67 = &_66; // scope 33 at $DIR/reference_prop.rs:+86:21: +86:23 -- StorageLive(_68); // scope 34 at $DIR/reference_prop.rs:+87:13: +87:14 -- _68 = &mut _67; // scope 34 at $DIR/reference_prop.rs:+87:17: +87:23 - StorageLive(_69); // scope 35 at $DIR/reference_prop.rs:+88:13: +88:14 -- _69 = (*_67); // scope 35 at $DIR/reference_prop.rs:+88:17: +88:19 -+ _69 = _66; // scope 35 at $DIR/reference_prop.rs:+88:17: +88:19 - StorageLive(_70); // scope 36 at $DIR/reference_prop.rs:+89:9: +89:19 - StorageLive(_71); // scope 36 at $DIR/reference_prop.rs:+89:16: +89:18 - _71 = (); // scope 36 at $DIR/reference_prop.rs:+89:16: +89:18 - _70 = opaque::<()>(move _71) -> bb10; // scope 36 at $DIR/reference_prop.rs:+89:9: +89:19 - // mir::Constant - // + span: $DIR/reference_prop.rs:99:9: 99:15 - // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value() } + StorageDead(_65); + StorageDead(_64); +- _59 = const (); + StorageDead(_63); +- StorageDead(_62); +- StorageDead(_61); + StorageDead(_60); +- StorageDead(_59); + StorageLive(_66); + _66 = const 5_usize; +- StorageLive(_67); +- _67 = &_66; +- StorageLive(_68); +- _68 = &mut _67; + StorageLive(_69); +- _69 = (*_67); ++ _69 = _66; + StorageLive(_70); + StorageLive(_71); + _71 = (); + _70 = opaque::<()>(move _71) -> bb10; } bb10: { - StorageDead(_71); // scope 36 at $DIR/reference_prop.rs:+89:18: +89:19 - StorageDead(_70); // scope 36 at $DIR/reference_prop.rs:+89:19: +89:20 - _0 = const (); // scope 0 at $DIR/reference_prop.rs:+84:5: +90:6 - StorageDead(_69); // scope 35 at $DIR/reference_prop.rs:+90:5: +90:6 -- StorageDead(_68); // scope 34 at $DIR/reference_prop.rs:+90:5: +90:6 -- StorageDead(_67); // scope 33 at $DIR/reference_prop.rs:+90:5: +90:6 - StorageDead(_66); // scope 0 at $DIR/reference_prop.rs:+90:5: +90:6 - return; // scope 0 at $DIR/reference_prop.rs:+91:2: +91:2 + StorageDead(_71); + StorageDead(_70); + _0 = const (); + StorageDead(_69); +- StorageDead(_68); +- StorageDead(_67); + StorageDead(_66); + return; } } diff --git a/tests/mir-opt/reference_prop.reference_propagation_const_ptr.ReferencePropagation.diff b/tests/mir-opt/reference_prop.reference_propagation_const_ptr.ReferencePropagation.diff index ddeb04e50c79d..3a317853bdb74 100644 --- a/tests/mir-opt/reference_prop.reference_propagation_const_ptr.ReferencePropagation.diff +++ b/tests/mir-opt/reference_prop.reference_propagation_const_ptr.ReferencePropagation.diff @@ -2,145 +2,145 @@ + // MIR for `reference_propagation_const_ptr` after ReferencePropagation fn reference_propagation_const_ptr(_1: *const T, _2: *const T) -> () { - debug single => _1; // in scope 0 at $DIR/reference_prop.rs:+0:45: +0:51 - debug multiple => _2; // in scope 0 at $DIR/reference_prop.rs:+0:63: +0:75 - let mut _0: (); // return place in scope 0 at $DIR/reference_prop.rs:+0:87: +0:87 - let _3: (); // in scope 0 at $DIR/reference_prop.rs:+2:5: +7:6 - let _7: (); // in scope 0 at $DIR/reference_prop.rs:+6:9: +6:19 - let mut _8: (); // in scope 0 at $DIR/reference_prop.rs:+6:16: +6:18 - let _9: (); // in scope 0 at $DIR/reference_prop.rs:+10:5: +18:6 - let mut _13: *const usize; // in scope 0 at $DIR/reference_prop.rs:+14:13: +14:26 - let _15: (); // in scope 0 at $DIR/reference_prop.rs:+17:9: +17:19 - let mut _16: (); // in scope 0 at $DIR/reference_prop.rs:+17:16: +17:18 - let _17: (); // in scope 0 at $DIR/reference_prop.rs:+21:5: +27:6 - let _22: (); // in scope 0 at $DIR/reference_prop.rs:+26:9: +26:18 - let mut _23: &*const usize; // in scope 0 at $DIR/reference_prop.rs:+26:16: +26:17 - let _24: (); // in scope 0 at $DIR/reference_prop.rs:+30:5: +36:6 - let _29: (); // in scope 0 at $DIR/reference_prop.rs:+35:9: +35:18 - let mut _30: *mut *const usize; // in scope 0 at $DIR/reference_prop.rs:+35:16: +35:17 - let _31: (); // in scope 0 at $DIR/reference_prop.rs:+39:5: +44:6 - let _35: (); // in scope 0 at $DIR/reference_prop.rs:+43:9: +43:18 - let mut _36: *const usize; // in scope 0 at $DIR/reference_prop.rs:+43:16: +43:17 - let _37: (); // in scope 0 at $DIR/reference_prop.rs:+47:5: +57:6 - let _44: (); // in scope 0 at $DIR/reference_prop.rs:+56:9: +56:19 - let mut _45: *const usize; // in scope 0 at $DIR/reference_prop.rs:+56:16: +56:18 - let _46: (); // in scope 0 at $DIR/reference_prop.rs:+60:5: +64:6 - let _49: (); // in scope 0 at $DIR/reference_prop.rs:+63:9: +63:19 - let mut _50: (); // in scope 0 at $DIR/reference_prop.rs:+63:16: +63:18 - let _51: (); // in scope 0 at $DIR/reference_prop.rs:+67:5: +72:6 - let mut _53: *const T; // in scope 0 at $DIR/reference_prop.rs:+69:20: +69:38 - let _55: (); // in scope 0 at $DIR/reference_prop.rs:+71:9: +71:19 - let mut _56: (); // in scope 0 at $DIR/reference_prop.rs:+71:16: +71:18 - let _57: (); // in scope 0 at $DIR/reference_prop.rs:+75:5: +81:6 - let _62: (); // in scope 0 at $DIR/reference_prop.rs:+80:9: +80:19 - let mut _63: (); // in scope 0 at $DIR/reference_prop.rs:+80:16: +80:18 - let _64: (); // in scope 0 at $DIR/reference_prop.rs:+84:5: +90:6 - let _69: (); // in scope 0 at $DIR/reference_prop.rs:+89:9: +89:19 - let mut _70: (); // in scope 0 at $DIR/reference_prop.rs:+89:16: +89:18 - let _75: (); // in scope 0 at $DIR/reference_prop.rs:+98:9: +98:19 - let mut _76: (); // in scope 0 at $DIR/reference_prop.rs:+98:16: +98:18 + debug single => _1; + debug multiple => _2; + let mut _0: (); + let _3: (); + let _7: (); + let mut _8: (); + let _9: (); + let mut _13: *const usize; + let _15: (); + let mut _16: (); + let _17: (); + let _22: (); + let mut _23: &*const usize; + let _24: (); + let _29: (); + let mut _30: *mut *const usize; + let _31: (); + let _35: (); + let mut _36: *const usize; + let _37: (); + let _44: (); + let mut _45: *const usize; + let _46: (); + let _49: (); + let mut _50: (); + let _51: (); + let mut _53: *const T; + let _55: (); + let mut _56: (); + let _57: (); + let _62: (); + let mut _63: (); + let _64: (); + let _69: (); + let mut _70: (); + let _75: (); + let mut _76: (); scope 1 { - let _4: usize; // in scope 1 at $DIR/reference_prop.rs:+3:13: +3:14 + let _4: usize; scope 2 { - debug a => _4; // in scope 2 at $DIR/reference_prop.rs:+3:13: +3:14 - let _5: *const usize; // in scope 2 at $DIR/reference_prop.rs:+4:13: +4:14 + debug a => _4; + let _5: *const usize; scope 3 { -- debug b => _5; // in scope 3 at $DIR/reference_prop.rs:+4:13: +4:14 -+ debug b => &_4; // in scope 3 at $DIR/reference_prop.rs:+4:13: +4:14 - let _6: usize; // in scope 3 at $DIR/reference_prop.rs:+5:13: +5:14 +- debug b => _5; ++ debug b => &_4; + let _6: usize; scope 4 { - debug c => _6; // in scope 4 at $DIR/reference_prop.rs:+5:13: +5:14 + debug c => _6; } } } } scope 5 { - let _10: usize; // in scope 5 at $DIR/reference_prop.rs:+11:13: +11:14 + let _10: usize; scope 6 { - debug a => _10; // in scope 6 at $DIR/reference_prop.rs:+11:13: +11:14 - let _11: usize; // in scope 6 at $DIR/reference_prop.rs:+12:13: +12:15 + debug a => _10; + let _11: usize; scope 7 { - debug a2 => _11; // in scope 7 at $DIR/reference_prop.rs:+12:13: +12:15 - let mut _12: *const usize; // in scope 7 at $DIR/reference_prop.rs:+13:13: +13:18 + debug a2 => _11; + let mut _12: *const usize; scope 8 { - debug b => _12; // in scope 8 at $DIR/reference_prop.rs:+13:13: +13:18 - let _14: usize; // in scope 8 at $DIR/reference_prop.rs:+16:13: +16:14 + debug b => _12; + let _14: usize; scope 9 { - debug c => _14; // in scope 9 at $DIR/reference_prop.rs:+16:13: +16:14 + debug c => _14; } } } } } scope 10 { - let _18: usize; // in scope 10 at $DIR/reference_prop.rs:+22:13: +22:14 + let _18: usize; scope 11 { - debug a => _18; // in scope 11 at $DIR/reference_prop.rs:+22:13: +22:14 - let _19: *const usize; // in scope 11 at $DIR/reference_prop.rs:+23:13: +23:14 + debug a => _18; + let _19: *const usize; scope 12 { - debug b => _19; // in scope 12 at $DIR/reference_prop.rs:+23:13: +23:14 - let _20: &*const usize; // in scope 12 at $DIR/reference_prop.rs:+24:13: +24:14 + debug b => _19; + let _20: &*const usize; scope 13 { - debug d => _20; // in scope 13 at $DIR/reference_prop.rs:+24:13: +24:14 - let _21: usize; // in scope 13 at $DIR/reference_prop.rs:+25:13: +25:14 + debug d => _20; + let _21: usize; scope 14 { - debug c => _21; // in scope 14 at $DIR/reference_prop.rs:+25:13: +25:14 + debug c => _21; } } } } } scope 15 { - let _25: usize; // in scope 15 at $DIR/reference_prop.rs:+31:13: +31:14 + let _25: usize; scope 16 { - debug a => _25; // in scope 16 at $DIR/reference_prop.rs:+31:13: +31:14 - let mut _26: *const usize; // in scope 16 at $DIR/reference_prop.rs:+32:13: +32:18 + debug a => _25; + let mut _26: *const usize; scope 17 { - debug b => _26; // in scope 17 at $DIR/reference_prop.rs:+32:13: +32:18 - let _27: *mut *const usize; // in scope 17 at $DIR/reference_prop.rs:+33:13: +33:14 + debug b => _26; + let _27: *mut *const usize; scope 18 { - debug d => _27; // in scope 18 at $DIR/reference_prop.rs:+33:13: +33:14 - let _28: usize; // in scope 18 at $DIR/reference_prop.rs:+34:13: +34:14 + debug d => _27; + let _28: usize; scope 19 { - debug c => _28; // in scope 19 at $DIR/reference_prop.rs:+34:13: +34:14 + debug c => _28; } } } } } scope 20 { - let _32: usize; // in scope 20 at $DIR/reference_prop.rs:+40:13: +40:14 + let _32: usize; scope 21 { - debug a => _32; // in scope 21 at $DIR/reference_prop.rs:+40:13: +40:14 - let _33: *const usize; // in scope 21 at $DIR/reference_prop.rs:+41:13: +41:14 + debug a => _32; + let _33: *const usize; scope 22 { - debug b => _33; // in scope 22 at $DIR/reference_prop.rs:+41:13: +41:14 - let _34: usize; // in scope 22 at $DIR/reference_prop.rs:+42:13: +42:14 + debug b => _33; + let _34: usize; scope 23 { - debug c => _34; // in scope 23 at $DIR/reference_prop.rs:+42:13: +42:14 + debug c => _34; } } } } scope 24 { - let _38: usize; // in scope 24 at $DIR/reference_prop.rs:+48:13: +48:14 + let _38: usize; scope 25 { - debug a => _38; // in scope 25 at $DIR/reference_prop.rs:+48:13: +48:14 - let _39: *const usize; // in scope 25 at $DIR/reference_prop.rs:+49:13: +49:15 + debug a => _38; + let _39: *const usize; scope 26 { - debug b1 => _39; // in scope 26 at $DIR/reference_prop.rs:+49:13: +49:15 - let _40: usize; // in scope 26 at $DIR/reference_prop.rs:+50:13: +50:14 + debug b1 => _39; + let _40: usize; scope 27 { - debug c => _40; // in scope 27 at $DIR/reference_prop.rs:+50:13: +50:14 - let _41: *const usize; // in scope 27 at $DIR/reference_prop.rs:+51:13: +51:15 + debug c => _40; + let _41: *const usize; scope 28 { - debug b2 => _41; // in scope 28 at $DIR/reference_prop.rs:+51:13: +51:15 - let _42: usize; // in scope 28 at $DIR/reference_prop.rs:+52:13: +52:15 + debug b2 => _41; + let _42: usize; scope 29 { - debug c2 => _42; // in scope 29 at $DIR/reference_prop.rs:+52:13: +52:15 - let _43: *const usize; // in scope 29 at $DIR/reference_prop.rs:+53:13: +53:15 + debug c2 => _42; + let _43: *const usize; scope 30 { - debug b3 => _43; // in scope 30 at $DIR/reference_prop.rs:+53:13: +53:15 + debug b3 => _43; } } } @@ -149,81 +149,81 @@ } } scope 31 { - let _47: *const T; // in scope 31 at $DIR/reference_prop.rs:+61:13: +61:14 + let _47: *const T; scope 32 { -- debug a => _47; // in scope 32 at $DIR/reference_prop.rs:+61:13: +61:14 -+ debug a => _1; // in scope 32 at $DIR/reference_prop.rs:+61:13: +61:14 - let _48: T; // in scope 32 at $DIR/reference_prop.rs:+62:13: +62:14 +- debug a => _47; ++ debug a => _1; + let _48: T; scope 33 { - debug b => _48; // in scope 33 at $DIR/reference_prop.rs:+62:13: +62:14 + debug b => _48; } } } scope 34 { - let _52: *const T; // in scope 34 at $DIR/reference_prop.rs:+68:13: +68:14 + let _52: *const T; scope 35 { - debug a => _52; // in scope 35 at $DIR/reference_prop.rs:+68:13: +68:14 - let _54: T; // in scope 35 at $DIR/reference_prop.rs:+70:13: +70:14 + debug a => _52; + let _54: T; scope 36 { - debug b => _54; // in scope 36 at $DIR/reference_prop.rs:+70:13: +70:14 + debug b => _54; } } } scope 37 { - let _58: usize; // in scope 37 at $DIR/reference_prop.rs:+76:13: +76:14 + let _58: usize; scope 38 { - debug a => _58; // in scope 38 at $DIR/reference_prop.rs:+76:13: +76:14 - let _59: *const usize; // in scope 38 at $DIR/reference_prop.rs:+77:13: +77:14 + debug a => _58; + let _59: *const usize; scope 39 { -- debug b => _59; // in scope 39 at $DIR/reference_prop.rs:+77:13: +77:14 -+ debug b => &_58; // in scope 39 at $DIR/reference_prop.rs:+77:13: +77:14 - let _60: *const usize; // in scope 39 at $DIR/reference_prop.rs:+78:13: +78:14 +- debug b => _59; ++ debug b => &_58; + let _60: *const usize; scope 40 { -- debug c => _60; // in scope 40 at $DIR/reference_prop.rs:+78:13: +78:14 -+ debug c => &_58; // in scope 40 at $DIR/reference_prop.rs:+78:13: +78:14 - let _61: usize; // in scope 40 at $DIR/reference_prop.rs:+79:13: +79:14 +- debug c => _60; ++ debug c => &_58; + let _61: usize; scope 41 { - debug e => _61; // in scope 41 at $DIR/reference_prop.rs:+79:13: +79:14 + debug e => _61; } } } } } scope 42 { - let _65: usize; // in scope 42 at $DIR/reference_prop.rs:+85:13: +85:14 + let _65: usize; scope 43 { - debug a => _65; // in scope 43 at $DIR/reference_prop.rs:+85:13: +85:14 - let _66: *const usize; // in scope 43 at $DIR/reference_prop.rs:+86:13: +86:14 + debug a => _65; + let _66: *const usize; scope 44 { -- debug b => _66; // in scope 44 at $DIR/reference_prop.rs:+86:13: +86:14 -+ debug b => &_65; // in scope 44 at $DIR/reference_prop.rs:+86:13: +86:14 - let _67: &*const usize; // in scope 44 at $DIR/reference_prop.rs:+87:13: +87:14 +- debug b => _66; ++ debug b => &_65; + let _67: &*const usize; scope 45 { -- debug d => _67; // in scope 45 at $DIR/reference_prop.rs:+87:13: +87:14 -+ debug d => &&_65; // in scope 45 at $DIR/reference_prop.rs:+87:13: +87:14 - let _68: usize; // in scope 45 at $DIR/reference_prop.rs:+88:13: +88:14 +- debug d => _67; ++ debug d => &&_65; + let _68: usize; scope 46 { - debug c => _68; // in scope 46 at $DIR/reference_prop.rs:+88:13: +88:14 + debug c => _68; } } } } } scope 47 { - let _71: usize; // in scope 47 at $DIR/reference_prop.rs:+94:13: +94:14 + let _71: usize; scope 48 { - debug a => _71; // in scope 48 at $DIR/reference_prop.rs:+94:13: +94:14 - let mut _72: *const usize; // in scope 48 at $DIR/reference_prop.rs:+95:13: +95:18 + debug a => _71; + let mut _72: *const usize; scope 49 { -- debug b => _72; // in scope 49 at $DIR/reference_prop.rs:+95:13: +95:18 -+ debug b => &_71; // in scope 49 at $DIR/reference_prop.rs:+95:13: +95:18 - let _73: &mut *const usize; // in scope 49 at $DIR/reference_prop.rs:+96:13: +96:14 +- debug b => _72; ++ debug b => &_71; + let _73: &mut *const usize; scope 50 { -- debug d => _73; // in scope 50 at $DIR/reference_prop.rs:+96:13: +96:14 -+ debug d => &&_71; // in scope 50 at $DIR/reference_prop.rs:+96:13: +96:14 - let _74: usize; // in scope 50 at $DIR/reference_prop.rs:+97:13: +97:14 +- debug d => _73; ++ debug d => &&_71; + let _74: usize; scope 51 { - debug c => _74; // in scope 51 at $DIR/reference_prop.rs:+97:13: +97:14 + debug c => _74; } } } @@ -231,306 +231,273 @@ } bb0: { -- StorageLive(_3); // scope 0 at $DIR/reference_prop.rs:+2:5: +7:6 - StorageLive(_4); // scope 1 at $DIR/reference_prop.rs:+3:13: +3:14 - _4 = const 5_usize; // scope 1 at $DIR/reference_prop.rs:+3:17: +3:24 -- StorageLive(_5); // scope 2 at $DIR/reference_prop.rs:+4:13: +4:14 -- _5 = &raw const _4; // scope 2 at $DIR/reference_prop.rs:+4:17: +4:29 - StorageLive(_6); // scope 3 at $DIR/reference_prop.rs:+5:13: +5:14 -- _6 = (*_5); // scope 3 at $DIR/reference_prop.rs:+5:17: +5:19 -+ _6 = _4; // scope 3 at $DIR/reference_prop.rs:+5:17: +5:19 - StorageLive(_7); // scope 4 at $DIR/reference_prop.rs:+6:9: +6:19 - StorageLive(_8); // scope 4 at $DIR/reference_prop.rs:+6:16: +6:18 - _8 = (); // scope 4 at $DIR/reference_prop.rs:+6:16: +6:18 - _7 = opaque::<()>(move _8) -> bb1; // scope 4 at $DIR/reference_prop.rs:+6:9: +6:19 - // mir::Constant - // + span: $DIR/reference_prop.rs:202:9: 202:15 - // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value() } +- StorageLive(_3); + StorageLive(_4); + _4 = const 5_usize; +- StorageLive(_5); +- _5 = &raw const _4; + StorageLive(_6); +- _6 = (*_5); ++ _6 = _4; + StorageLive(_7); + StorageLive(_8); + _8 = (); + _7 = opaque::<()>(move _8) -> bb1; } bb1: { - StorageDead(_8); // scope 4 at $DIR/reference_prop.rs:+6:18: +6:19 - StorageDead(_7); // scope 4 at $DIR/reference_prop.rs:+6:19: +6:20 -- _3 = const (); // scope 1 at $DIR/reference_prop.rs:+2:5: +7:6 - StorageDead(_6); // scope 3 at $DIR/reference_prop.rs:+7:5: +7:6 -- StorageDead(_5); // scope 2 at $DIR/reference_prop.rs:+7:5: +7:6 - StorageDead(_4); // scope 1 at $DIR/reference_prop.rs:+7:5: +7:6 -- StorageDead(_3); // scope 0 at $DIR/reference_prop.rs:+7:5: +7:6 -- StorageLive(_9); // scope 0 at $DIR/reference_prop.rs:+10:5: +18:6 - StorageLive(_10); // scope 5 at $DIR/reference_prop.rs:+11:13: +11:14 - _10 = const 5_usize; // scope 5 at $DIR/reference_prop.rs:+11:17: +11:24 - StorageLive(_11); // scope 6 at $DIR/reference_prop.rs:+12:13: +12:15 - _11 = const 7_usize; // scope 6 at $DIR/reference_prop.rs:+12:18: +12:25 - StorageLive(_12); // scope 7 at $DIR/reference_prop.rs:+13:13: +13:18 - _12 = &raw const _10; // scope 7 at $DIR/reference_prop.rs:+13:21: +13:33 - StorageLive(_13); // scope 8 at $DIR/reference_prop.rs:+14:13: +14:26 - _13 = &raw const _11; // scope 8 at $DIR/reference_prop.rs:+14:13: +14:26 - _12 = move _13; // scope 8 at $DIR/reference_prop.rs:+14:9: +14:26 - StorageDead(_13); // scope 8 at $DIR/reference_prop.rs:+14:25: +14:26 - StorageLive(_14); // scope 8 at $DIR/reference_prop.rs:+16:13: +16:14 - _14 = (*_12); // scope 8 at $DIR/reference_prop.rs:+16:17: +16:19 - StorageLive(_15); // scope 9 at $DIR/reference_prop.rs:+17:9: +17:19 - StorageLive(_16); // scope 9 at $DIR/reference_prop.rs:+17:16: +17:18 - _16 = (); // scope 9 at $DIR/reference_prop.rs:+17:16: +17:18 - _15 = opaque::<()>(move _16) -> bb2; // scope 9 at $DIR/reference_prop.rs:+17:9: +17:19 - // mir::Constant - // + span: $DIR/reference_prop.rs:213:9: 213:15 - // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value() } + StorageDead(_8); + StorageDead(_7); +- _3 = const (); + StorageDead(_6); +- StorageDead(_5); + StorageDead(_4); +- StorageDead(_3); +- StorageLive(_9); + StorageLive(_10); + _10 = const 5_usize; + StorageLive(_11); + _11 = const 7_usize; + StorageLive(_12); + _12 = &raw const _10; + StorageLive(_13); + _13 = &raw const _11; + _12 = move _13; + StorageDead(_13); + StorageLive(_14); + _14 = (*_12); + StorageLive(_15); + StorageLive(_16); + _16 = (); + _15 = opaque::<()>(move _16) -> bb2; } bb2: { - StorageDead(_16); // scope 9 at $DIR/reference_prop.rs:+17:18: +17:19 - StorageDead(_15); // scope 9 at $DIR/reference_prop.rs:+17:19: +17:20 -- _9 = const (); // scope 5 at $DIR/reference_prop.rs:+10:5: +18:6 - StorageDead(_14); // scope 8 at $DIR/reference_prop.rs:+18:5: +18:6 - StorageDead(_12); // scope 7 at $DIR/reference_prop.rs:+18:5: +18:6 - StorageDead(_11); // scope 6 at $DIR/reference_prop.rs:+18:5: +18:6 - StorageDead(_10); // scope 5 at $DIR/reference_prop.rs:+18:5: +18:6 -- StorageDead(_9); // scope 0 at $DIR/reference_prop.rs:+18:5: +18:6 -- StorageLive(_17); // scope 0 at $DIR/reference_prop.rs:+21:5: +27:6 - StorageLive(_18); // scope 10 at $DIR/reference_prop.rs:+22:13: +22:14 - _18 = const 5_usize; // scope 10 at $DIR/reference_prop.rs:+22:17: +22:24 - StorageLive(_19); // scope 11 at $DIR/reference_prop.rs:+23:13: +23:14 - _19 = &raw const _18; // scope 11 at $DIR/reference_prop.rs:+23:17: +23:29 - StorageLive(_20); // scope 12 at $DIR/reference_prop.rs:+24:13: +24:14 - _20 = &_19; // scope 12 at $DIR/reference_prop.rs:+24:17: +24:19 - StorageLive(_21); // scope 13 at $DIR/reference_prop.rs:+25:13: +25:14 - _21 = (*_19); // scope 13 at $DIR/reference_prop.rs:+25:17: +25:19 - StorageLive(_22); // scope 14 at $DIR/reference_prop.rs:+26:9: +26:18 - StorageLive(_23); // scope 14 at $DIR/reference_prop.rs:+26:16: +26:17 - _23 = _20; // scope 14 at $DIR/reference_prop.rs:+26:16: +26:17 - _22 = opaque::<&*const usize>(move _23) -> bb3; // scope 14 at $DIR/reference_prop.rs:+26:9: +26:18 - // mir::Constant - // + span: $DIR/reference_prop.rs:222:9: 222:15 - // + literal: Const { ty: fn(&*const usize) {opaque::<&*const usize>}, val: Value() } + StorageDead(_16); + StorageDead(_15); +- _9 = const (); + StorageDead(_14); + StorageDead(_12); + StorageDead(_11); + StorageDead(_10); +- StorageDead(_9); +- StorageLive(_17); + StorageLive(_18); + _18 = const 5_usize; + StorageLive(_19); + _19 = &raw const _18; + StorageLive(_20); + _20 = &_19; + StorageLive(_21); + _21 = (*_19); + StorageLive(_22); + StorageLive(_23); + _23 = _20; + _22 = opaque::<&*const usize>(move _23) -> bb3; } bb3: { - StorageDead(_23); // scope 14 at $DIR/reference_prop.rs:+26:17: +26:18 - StorageDead(_22); // scope 14 at $DIR/reference_prop.rs:+26:18: +26:19 -- _17 = const (); // scope 10 at $DIR/reference_prop.rs:+21:5: +27:6 - StorageDead(_21); // scope 13 at $DIR/reference_prop.rs:+27:5: +27:6 - StorageDead(_20); // scope 12 at $DIR/reference_prop.rs:+27:5: +27:6 - StorageDead(_19); // scope 11 at $DIR/reference_prop.rs:+27:5: +27:6 - StorageDead(_18); // scope 10 at $DIR/reference_prop.rs:+27:5: +27:6 -- StorageDead(_17); // scope 0 at $DIR/reference_prop.rs:+27:5: +27:6 -- StorageLive(_24); // scope 0 at $DIR/reference_prop.rs:+30:5: +36:6 - StorageLive(_25); // scope 15 at $DIR/reference_prop.rs:+31:13: +31:14 - _25 = const 5_usize; // scope 15 at $DIR/reference_prop.rs:+31:17: +31:24 - StorageLive(_26); // scope 16 at $DIR/reference_prop.rs:+32:13: +32:18 - _26 = &raw const _25; // scope 16 at $DIR/reference_prop.rs:+32:21: +32:33 - StorageLive(_27); // scope 17 at $DIR/reference_prop.rs:+33:13: +33:14 - _27 = &raw mut _26; // scope 17 at $DIR/reference_prop.rs:+33:17: +33:27 - StorageLive(_28); // scope 18 at $DIR/reference_prop.rs:+34:13: +34:14 - _28 = (*_26); // scope 18 at $DIR/reference_prop.rs:+34:17: +34:19 - StorageLive(_29); // scope 19 at $DIR/reference_prop.rs:+35:9: +35:18 - StorageLive(_30); // scope 19 at $DIR/reference_prop.rs:+35:16: +35:17 - _30 = _27; // scope 19 at $DIR/reference_prop.rs:+35:16: +35:17 - _29 = opaque::<*mut *const usize>(move _30) -> bb4; // scope 19 at $DIR/reference_prop.rs:+35:9: +35:18 - // mir::Constant - // + span: $DIR/reference_prop.rs:231:9: 231:15 - // + literal: Const { ty: fn(*mut *const usize) {opaque::<*mut *const usize>}, val: Value() } + StorageDead(_23); + StorageDead(_22); +- _17 = const (); + StorageDead(_21); + StorageDead(_20); + StorageDead(_19); + StorageDead(_18); +- StorageDead(_17); +- StorageLive(_24); + StorageLive(_25); + _25 = const 5_usize; + StorageLive(_26); + _26 = &raw const _25; + StorageLive(_27); + _27 = &raw mut _26; + StorageLive(_28); + _28 = (*_26); + StorageLive(_29); + StorageLive(_30); + _30 = _27; + _29 = opaque::<*mut *const usize>(move _30) -> bb4; } bb4: { - StorageDead(_30); // scope 19 at $DIR/reference_prop.rs:+35:17: +35:18 - StorageDead(_29); // scope 19 at $DIR/reference_prop.rs:+35:18: +35:19 -- _24 = const (); // scope 15 at $DIR/reference_prop.rs:+30:5: +36:6 - StorageDead(_28); // scope 18 at $DIR/reference_prop.rs:+36:5: +36:6 - StorageDead(_27); // scope 17 at $DIR/reference_prop.rs:+36:5: +36:6 - StorageDead(_26); // scope 16 at $DIR/reference_prop.rs:+36:5: +36:6 - StorageDead(_25); // scope 15 at $DIR/reference_prop.rs:+36:5: +36:6 -- StorageDead(_24); // scope 0 at $DIR/reference_prop.rs:+36:5: +36:6 -- StorageLive(_31); // scope 0 at $DIR/reference_prop.rs:+39:5: +44:6 - StorageLive(_32); // scope 20 at $DIR/reference_prop.rs:+40:13: +40:14 - _32 = const 7_usize; // scope 20 at $DIR/reference_prop.rs:+40:17: +40:24 - StorageLive(_33); // scope 21 at $DIR/reference_prop.rs:+41:13: +41:14 - _33 = &raw const _32; // scope 21 at $DIR/reference_prop.rs:+41:17: +41:29 - StorageLive(_34); // scope 22 at $DIR/reference_prop.rs:+42:13: +42:14 -- _34 = (*_33); // scope 22 at $DIR/reference_prop.rs:+42:17: +42:19 -+ _34 = _32; // scope 22 at $DIR/reference_prop.rs:+42:17: +42:19 - StorageLive(_35); // scope 23 at $DIR/reference_prop.rs:+43:9: +43:18 - StorageLive(_36); // scope 23 at $DIR/reference_prop.rs:+43:16: +43:17 - _36 = _33; // scope 23 at $DIR/reference_prop.rs:+43:16: +43:17 - _35 = opaque::<*const usize>(move _36) -> bb5; // scope 23 at $DIR/reference_prop.rs:+43:9: +43:18 - // mir::Constant - // + span: $DIR/reference_prop.rs:239:9: 239:15 - // + literal: Const { ty: fn(*const usize) {opaque::<*const usize>}, val: Value() } + StorageDead(_30); + StorageDead(_29); +- _24 = const (); + StorageDead(_28); + StorageDead(_27); + StorageDead(_26); + StorageDead(_25); +- StorageDead(_24); +- StorageLive(_31); + StorageLive(_32); + _32 = const 7_usize; + StorageLive(_33); + _33 = &raw const _32; + StorageLive(_34); +- _34 = (*_33); ++ _34 = _32; + StorageLive(_35); + StorageLive(_36); + _36 = _33; + _35 = opaque::<*const usize>(move _36) -> bb5; } bb5: { - StorageDead(_36); // scope 23 at $DIR/reference_prop.rs:+43:17: +43:18 - StorageDead(_35); // scope 23 at $DIR/reference_prop.rs:+43:18: +43:19 -- _31 = const (); // scope 20 at $DIR/reference_prop.rs:+39:5: +44:6 - StorageDead(_34); // scope 22 at $DIR/reference_prop.rs:+44:5: +44:6 - StorageDead(_33); // scope 21 at $DIR/reference_prop.rs:+44:5: +44:6 - StorageDead(_32); // scope 20 at $DIR/reference_prop.rs:+44:5: +44:6 -- StorageDead(_31); // scope 0 at $DIR/reference_prop.rs:+44:5: +44:6 -- StorageLive(_37); // scope 0 at $DIR/reference_prop.rs:+47:5: +57:6 - StorageLive(_38); // scope 24 at $DIR/reference_prop.rs:+48:13: +48:14 - _38 = const 7_usize; // scope 24 at $DIR/reference_prop.rs:+48:17: +48:24 - StorageLive(_39); // scope 25 at $DIR/reference_prop.rs:+49:13: +49:15 - _39 = &raw const _38; // scope 25 at $DIR/reference_prop.rs:+49:18: +49:30 - StorageLive(_40); // scope 26 at $DIR/reference_prop.rs:+50:13: +50:14 -- _40 = (*_39); // scope 26 at $DIR/reference_prop.rs:+50:17: +50:20 -+ _40 = _38; // scope 26 at $DIR/reference_prop.rs:+50:17: +50:20 - StorageLive(_41); // scope 27 at $DIR/reference_prop.rs:+51:13: +51:15 - _41 = _39; // scope 27 at $DIR/reference_prop.rs:+51:18: +51:20 - StorageLive(_42); // scope 28 at $DIR/reference_prop.rs:+52:13: +52:15 -- _42 = (*_41); // scope 28 at $DIR/reference_prop.rs:+52:18: +52:21 -+ _42 = _38; // scope 28 at $DIR/reference_prop.rs:+52:18: +52:21 - StorageLive(_43); // scope 29 at $DIR/reference_prop.rs:+53:13: +53:15 - _43 = _41; // scope 29 at $DIR/reference_prop.rs:+53:18: +53:20 - StorageLive(_44); // scope 30 at $DIR/reference_prop.rs:+56:9: +56:19 - StorageLive(_45); // scope 30 at $DIR/reference_prop.rs:+56:16: +56:18 - _45 = _43; // scope 30 at $DIR/reference_prop.rs:+56:16: +56:18 - _44 = opaque::<*const usize>(move _45) -> bb6; // scope 30 at $DIR/reference_prop.rs:+56:9: +56:19 - // mir::Constant - // + span: $DIR/reference_prop.rs:252:9: 252:15 - // + literal: Const { ty: fn(*const usize) {opaque::<*const usize>}, val: Value() } + StorageDead(_36); + StorageDead(_35); +- _31 = const (); + StorageDead(_34); + StorageDead(_33); + StorageDead(_32); +- StorageDead(_31); +- StorageLive(_37); + StorageLive(_38); + _38 = const 7_usize; + StorageLive(_39); + _39 = &raw const _38; + StorageLive(_40); +- _40 = (*_39); ++ _40 = _38; + StorageLive(_41); + _41 = _39; + StorageLive(_42); +- _42 = (*_41); ++ _42 = _38; + StorageLive(_43); + _43 = _41; + StorageLive(_44); + StorageLive(_45); + _45 = _43; + _44 = opaque::<*const usize>(move _45) -> bb6; } bb6: { - StorageDead(_45); // scope 30 at $DIR/reference_prop.rs:+56:18: +56:19 - StorageDead(_44); // scope 30 at $DIR/reference_prop.rs:+56:19: +56:20 -- _37 = const (); // scope 24 at $DIR/reference_prop.rs:+47:5: +57:6 - StorageDead(_43); // scope 29 at $DIR/reference_prop.rs:+57:5: +57:6 - StorageDead(_42); // scope 28 at $DIR/reference_prop.rs:+57:5: +57:6 - StorageDead(_41); // scope 27 at $DIR/reference_prop.rs:+57:5: +57:6 - StorageDead(_40); // scope 26 at $DIR/reference_prop.rs:+57:5: +57:6 - StorageDead(_39); // scope 25 at $DIR/reference_prop.rs:+57:5: +57:6 - StorageDead(_38); // scope 24 at $DIR/reference_prop.rs:+57:5: +57:6 -- StorageDead(_37); // scope 0 at $DIR/reference_prop.rs:+57:5: +57:6 -- StorageLive(_46); // scope 0 at $DIR/reference_prop.rs:+60:5: +64:6 -- StorageLive(_47); // scope 31 at $DIR/reference_prop.rs:+61:13: +61:14 -- _47 = &raw const (*_1); // scope 31 at $DIR/reference_prop.rs:+61:17: +61:35 - StorageLive(_48); // scope 32 at $DIR/reference_prop.rs:+62:13: +62:14 -- _48 = (*_47); // scope 32 at $DIR/reference_prop.rs:+62:17: +62:19 -+ _48 = (*_1); // scope 32 at $DIR/reference_prop.rs:+62:17: +62:19 - StorageLive(_49); // scope 33 at $DIR/reference_prop.rs:+63:9: +63:19 - StorageLive(_50); // scope 33 at $DIR/reference_prop.rs:+63:16: +63:18 - _50 = (); // scope 33 at $DIR/reference_prop.rs:+63:16: +63:18 - _49 = opaque::<()>(move _50) -> bb7; // scope 33 at $DIR/reference_prop.rs:+63:9: +63:19 - // mir::Constant - // + span: $DIR/reference_prop.rs:259:9: 259:15 - // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value() } + StorageDead(_45); + StorageDead(_44); +- _37 = const (); + StorageDead(_43); + StorageDead(_42); + StorageDead(_41); + StorageDead(_40); + StorageDead(_39); + StorageDead(_38); +- StorageDead(_37); +- StorageLive(_46); +- StorageLive(_47); +- _47 = &raw const (*_1); + StorageLive(_48); +- _48 = (*_47); ++ _48 = (*_1); + StorageLive(_49); + StorageLive(_50); + _50 = (); + _49 = opaque::<()>(move _50) -> bb7; } bb7: { - StorageDead(_50); // scope 33 at $DIR/reference_prop.rs:+63:18: +63:19 - StorageDead(_49); // scope 33 at $DIR/reference_prop.rs:+63:19: +63:20 -- _46 = const (); // scope 31 at $DIR/reference_prop.rs:+60:5: +64:6 - StorageDead(_48); // scope 32 at $DIR/reference_prop.rs:+64:5: +64:6 -- StorageDead(_47); // scope 31 at $DIR/reference_prop.rs:+64:5: +64:6 -- StorageDead(_46); // scope 0 at $DIR/reference_prop.rs:+64:5: +64:6 -- StorageLive(_51); // scope 0 at $DIR/reference_prop.rs:+67:5: +72:6 - StorageLive(_52); // scope 34 at $DIR/reference_prop.rs:+68:13: +68:14 - _52 = &raw const (*_2); // scope 34 at $DIR/reference_prop.rs:+68:17: +68:37 - StorageLive(_53); // scope 35 at $DIR/reference_prop.rs:+69:20: +69:38 - _53 = &raw const (*_1); // scope 35 at $DIR/reference_prop.rs:+69:20: +69:38 - _2 = move _53; // scope 35 at $DIR/reference_prop.rs:+69:9: +69:38 - StorageDead(_53); // scope 35 at $DIR/reference_prop.rs:+69:37: +69:38 - StorageLive(_54); // scope 35 at $DIR/reference_prop.rs:+70:13: +70:14 - _54 = (*_52); // scope 35 at $DIR/reference_prop.rs:+70:17: +70:19 - StorageLive(_55); // scope 36 at $DIR/reference_prop.rs:+71:9: +71:19 - StorageLive(_56); // scope 36 at $DIR/reference_prop.rs:+71:16: +71:18 - _56 = (); // scope 36 at $DIR/reference_prop.rs:+71:16: +71:18 - _55 = opaque::<()>(move _56) -> bb8; // scope 36 at $DIR/reference_prop.rs:+71:9: +71:19 - // mir::Constant - // + span: $DIR/reference_prop.rs:267:9: 267:15 - // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value() } + StorageDead(_50); + StorageDead(_49); +- _46 = const (); + StorageDead(_48); +- StorageDead(_47); +- StorageDead(_46); +- StorageLive(_51); + StorageLive(_52); + _52 = &raw const (*_2); + StorageLive(_53); + _53 = &raw const (*_1); + _2 = move _53; + StorageDead(_53); + StorageLive(_54); + _54 = (*_52); + StorageLive(_55); + StorageLive(_56); + _56 = (); + _55 = opaque::<()>(move _56) -> bb8; } bb8: { - StorageDead(_56); // scope 36 at $DIR/reference_prop.rs:+71:18: +71:19 - StorageDead(_55); // scope 36 at $DIR/reference_prop.rs:+71:19: +71:20 -- _51 = const (); // scope 34 at $DIR/reference_prop.rs:+67:5: +72:6 - StorageDead(_54); // scope 35 at $DIR/reference_prop.rs:+72:5: +72:6 - StorageDead(_52); // scope 34 at $DIR/reference_prop.rs:+72:5: +72:6 -- StorageDead(_51); // scope 0 at $DIR/reference_prop.rs:+72:5: +72:6 -- StorageLive(_57); // scope 0 at $DIR/reference_prop.rs:+75:5: +81:6 - StorageLive(_58); // scope 37 at $DIR/reference_prop.rs:+76:13: +76:14 - _58 = const 13_usize; // scope 37 at $DIR/reference_prop.rs:+76:17: +76:25 -- StorageLive(_59); // scope 38 at $DIR/reference_prop.rs:+77:13: +77:14 -- _59 = &raw const _58; // scope 38 at $DIR/reference_prop.rs:+77:17: +77:29 -- StorageLive(_60); // scope 39 at $DIR/reference_prop.rs:+78:13: +78:14 -- _60 = &raw const (*_59); // scope 39 at $DIR/reference_prop.rs:+78:17: +78:30 - StorageLive(_61); // scope 40 at $DIR/reference_prop.rs:+79:13: +79:14 -- _61 = (*_60); // scope 40 at $DIR/reference_prop.rs:+79:17: +79:19 -+ _61 = _58; // scope 40 at $DIR/reference_prop.rs:+79:17: +79:19 - StorageLive(_62); // scope 41 at $DIR/reference_prop.rs:+80:9: +80:19 - StorageLive(_63); // scope 41 at $DIR/reference_prop.rs:+80:16: +80:18 - _63 = (); // scope 41 at $DIR/reference_prop.rs:+80:16: +80:18 - _62 = opaque::<()>(move _63) -> bb9; // scope 41 at $DIR/reference_prop.rs:+80:9: +80:19 - // mir::Constant - // + span: $DIR/reference_prop.rs:276:9: 276:15 - // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value() } + StorageDead(_56); + StorageDead(_55); +- _51 = const (); + StorageDead(_54); + StorageDead(_52); +- StorageDead(_51); +- StorageLive(_57); + StorageLive(_58); + _58 = const 13_usize; +- StorageLive(_59); +- _59 = &raw const _58; +- StorageLive(_60); +- _60 = &raw const (*_59); + StorageLive(_61); +- _61 = (*_60); ++ _61 = _58; + StorageLive(_62); + StorageLive(_63); + _63 = (); + _62 = opaque::<()>(move _63) -> bb9; } bb9: { - StorageDead(_63); // scope 41 at $DIR/reference_prop.rs:+80:18: +80:19 - StorageDead(_62); // scope 41 at $DIR/reference_prop.rs:+80:19: +80:20 -- _57 = const (); // scope 37 at $DIR/reference_prop.rs:+75:5: +81:6 - StorageDead(_61); // scope 40 at $DIR/reference_prop.rs:+81:5: +81:6 -- StorageDead(_60); // scope 39 at $DIR/reference_prop.rs:+81:5: +81:6 -- StorageDead(_59); // scope 38 at $DIR/reference_prop.rs:+81:5: +81:6 - StorageDead(_58); // scope 37 at $DIR/reference_prop.rs:+81:5: +81:6 -- StorageDead(_57); // scope 0 at $DIR/reference_prop.rs:+81:5: +81:6 -- StorageLive(_64); // scope 0 at $DIR/reference_prop.rs:+84:5: +90:6 - StorageLive(_65); // scope 42 at $DIR/reference_prop.rs:+85:13: +85:14 - _65 = const 5_usize; // scope 42 at $DIR/reference_prop.rs:+85:17: +85:24 -- StorageLive(_66); // scope 43 at $DIR/reference_prop.rs:+86:13: +86:14 -- _66 = &raw const _65; // scope 43 at $DIR/reference_prop.rs:+86:17: +86:29 -- StorageLive(_67); // scope 44 at $DIR/reference_prop.rs:+87:13: +87:14 -- _67 = &_66; // scope 44 at $DIR/reference_prop.rs:+87:17: +87:19 - StorageLive(_68); // scope 45 at $DIR/reference_prop.rs:+88:13: +88:14 -- _68 = (*_66); // scope 45 at $DIR/reference_prop.rs:+88:17: +88:19 -+ _68 = _65; // scope 45 at $DIR/reference_prop.rs:+88:17: +88:19 - StorageLive(_69); // scope 46 at $DIR/reference_prop.rs:+89:9: +89:19 - StorageLive(_70); // scope 46 at $DIR/reference_prop.rs:+89:16: +89:18 - _70 = (); // scope 46 at $DIR/reference_prop.rs:+89:16: +89:18 - _69 = opaque::<()>(move _70) -> bb10; // scope 46 at $DIR/reference_prop.rs:+89:9: +89:19 - // mir::Constant - // + span: $DIR/reference_prop.rs:285:9: 285:15 - // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value() } + StorageDead(_63); + StorageDead(_62); +- _57 = const (); + StorageDead(_61); +- StorageDead(_60); +- StorageDead(_59); + StorageDead(_58); +- StorageDead(_57); +- StorageLive(_64); + StorageLive(_65); + _65 = const 5_usize; +- StorageLive(_66); +- _66 = &raw const _65; +- StorageLive(_67); +- _67 = &_66; + StorageLive(_68); +- _68 = (*_66); ++ _68 = _65; + StorageLive(_69); + StorageLive(_70); + _70 = (); + _69 = opaque::<()>(move _70) -> bb10; } bb10: { - StorageDead(_70); // scope 46 at $DIR/reference_prop.rs:+89:18: +89:19 - StorageDead(_69); // scope 46 at $DIR/reference_prop.rs:+89:19: +89:20 -- _64 = const (); // scope 42 at $DIR/reference_prop.rs:+84:5: +90:6 - StorageDead(_68); // scope 45 at $DIR/reference_prop.rs:+90:5: +90:6 -- StorageDead(_67); // scope 44 at $DIR/reference_prop.rs:+90:5: +90:6 -- StorageDead(_66); // scope 43 at $DIR/reference_prop.rs:+90:5: +90:6 - StorageDead(_65); // scope 42 at $DIR/reference_prop.rs:+90:5: +90:6 -- StorageDead(_64); // scope 0 at $DIR/reference_prop.rs:+90:5: +90:6 - StorageLive(_71); // scope 47 at $DIR/reference_prop.rs:+94:13: +94:14 - _71 = const 5_usize; // scope 47 at $DIR/reference_prop.rs:+94:17: +94:24 -- StorageLive(_72); // scope 48 at $DIR/reference_prop.rs:+95:13: +95:18 -- _72 = &raw const _71; // scope 48 at $DIR/reference_prop.rs:+95:21: +95:33 -- StorageLive(_73); // scope 49 at $DIR/reference_prop.rs:+96:13: +96:14 -- _73 = &mut _72; // scope 49 at $DIR/reference_prop.rs:+96:17: +96:23 - StorageLive(_74); // scope 50 at $DIR/reference_prop.rs:+97:13: +97:14 -- _74 = (*_72); // scope 50 at $DIR/reference_prop.rs:+97:17: +97:19 -+ _74 = _71; // scope 50 at $DIR/reference_prop.rs:+97:17: +97:19 - StorageLive(_75); // scope 51 at $DIR/reference_prop.rs:+98:9: +98:19 - StorageLive(_76); // scope 51 at $DIR/reference_prop.rs:+98:16: +98:18 - _76 = (); // scope 51 at $DIR/reference_prop.rs:+98:16: +98:18 - _75 = opaque::<()>(move _76) -> bb11; // scope 51 at $DIR/reference_prop.rs:+98:9: +98:19 - // mir::Constant - // + span: $DIR/reference_prop.rs:294:9: 294:15 - // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value() } + StorageDead(_70); + StorageDead(_69); +- _64 = const (); + StorageDead(_68); +- StorageDead(_67); +- StorageDead(_66); + StorageDead(_65); +- StorageDead(_64); + StorageLive(_71); + _71 = const 5_usize; +- StorageLive(_72); +- _72 = &raw const _71; +- StorageLive(_73); +- _73 = &mut _72; + StorageLive(_74); +- _74 = (*_72); ++ _74 = _71; + StorageLive(_75); + StorageLive(_76); + _76 = (); + _75 = opaque::<()>(move _76) -> bb11; } bb11: { - StorageDead(_76); // scope 51 at $DIR/reference_prop.rs:+98:18: +98:19 - StorageDead(_75); // scope 51 at $DIR/reference_prop.rs:+98:19: +98:20 - _0 = const (); // scope 47 at $DIR/reference_prop.rs:+93:5: +99:6 - StorageDead(_74); // scope 50 at $DIR/reference_prop.rs:+99:5: +99:6 -- StorageDead(_73); // scope 49 at $DIR/reference_prop.rs:+99:5: +99:6 -- StorageDead(_72); // scope 48 at $DIR/reference_prop.rs:+99:5: +99:6 - StorageDead(_71); // scope 47 at $DIR/reference_prop.rs:+99:5: +99:6 - return; // scope 0 at $DIR/reference_prop.rs:+100:2: +100:2 + StorageDead(_76); + StorageDead(_75); + _0 = const (); + StorageDead(_74); +- StorageDead(_73); +- StorageDead(_72); + StorageDead(_71); + return; } } diff --git a/tests/mir-opt/reference_prop.reference_propagation_mut.ReferencePropagation.diff b/tests/mir-opt/reference_prop.reference_propagation_mut.ReferencePropagation.diff index 8d059de5b8755..91c6b2b632207 100644 --- a/tests/mir-opt/reference_prop.reference_propagation_mut.ReferencePropagation.diff +++ b/tests/mir-opt/reference_prop.reference_propagation_mut.ReferencePropagation.diff @@ -2,137 +2,137 @@ + // MIR for `reference_propagation_mut` after ReferencePropagation fn reference_propagation_mut(_1: &mut T, _2: &mut T) -> () { - debug single => _1; // in scope 0 at $DIR/reference_prop.rs:+0:43: +0:49 - debug multiple => _2; // in scope 0 at $DIR/reference_prop.rs:+0:62: +0:74 - let mut _0: (); // return place in scope 0 at $DIR/reference_prop.rs:+0:87: +0:87 - let _3: (); // in scope 0 at $DIR/reference_prop.rs:+2:5: +7:6 - let mut _4: usize; // in scope 0 at $DIR/reference_prop.rs:+3:13: +3:18 - let _7: (); // in scope 0 at $DIR/reference_prop.rs:+6:9: +6:19 - let mut _8: (); // in scope 0 at $DIR/reference_prop.rs:+6:16: +6:18 - let _9: (); // in scope 0 at $DIR/reference_prop.rs:+10:5: +18:6 - let mut _10: usize; // in scope 0 at $DIR/reference_prop.rs:+11:13: +11:18 - let mut _13: &mut usize; // in scope 0 at $DIR/reference_prop.rs:+14:13: +14:20 - let mut _14: &mut usize; // in scope 0 at $DIR/reference_prop.rs:+14:13: +14:20 - let _16: (); // in scope 0 at $DIR/reference_prop.rs:+17:9: +17:19 - let mut _17: (); // in scope 0 at $DIR/reference_prop.rs:+17:16: +17:18 - let _18: (); // in scope 0 at $DIR/reference_prop.rs:+21:5: +27:6 - let mut _19: usize; // in scope 0 at $DIR/reference_prop.rs:+22:13: +22:18 - let _23: (); // in scope 0 at $DIR/reference_prop.rs:+26:9: +26:18 - let mut _24: &&mut usize; // in scope 0 at $DIR/reference_prop.rs:+26:16: +26:17 - let _25: (); // in scope 0 at $DIR/reference_prop.rs:+30:5: +36:6 - let mut _26: usize; // in scope 0 at $DIR/reference_prop.rs:+31:13: +31:18 - let _30: (); // in scope 0 at $DIR/reference_prop.rs:+35:9: +35:18 - let mut _31: *mut &mut usize; // in scope 0 at $DIR/reference_prop.rs:+35:16: +35:17 - let _32: (); // in scope 0 at $DIR/reference_prop.rs:+39:5: +44:6 - let mut _33: usize; // in scope 0 at $DIR/reference_prop.rs:+40:13: +40:18 - let _36: (); // in scope 0 at $DIR/reference_prop.rs:+43:9: +43:18 - let mut _37: &mut usize; // in scope 0 at $DIR/reference_prop.rs:+43:16: +43:17 - let _38: (); // in scope 0 at $DIR/reference_prop.rs:+47:5: +57:6 - let mut _39: usize; // in scope 0 at $DIR/reference_prop.rs:+48:13: +48:18 - let _45: (); // in scope 0 at $DIR/reference_prop.rs:+56:9: +56:19 - let mut _46: &mut usize; // in scope 0 at $DIR/reference_prop.rs:+56:16: +56:18 - let _47: (); // in scope 0 at $DIR/reference_prop.rs:+60:5: +64:6 - let _48: &mut T; // in scope 0 at $DIR/reference_prop.rs:+61:13: +61:14 - let _50: (); // in scope 0 at $DIR/reference_prop.rs:+63:9: +63:19 - let mut _51: (); // in scope 0 at $DIR/reference_prop.rs:+63:16: +63:18 - let _52: (); // in scope 0 at $DIR/reference_prop.rs:+67:5: +72:6 - let _53: &mut T; // in scope 0 at $DIR/reference_prop.rs:+68:13: +68:14 - let mut _54: &mut T; // in scope 0 at $DIR/reference_prop.rs:+69:20: +69:32 - let mut _55: &mut T; // in scope 0 at $DIR/reference_prop.rs:+69:20: +69:32 - let _57: (); // in scope 0 at $DIR/reference_prop.rs:+71:9: +71:19 - let mut _58: (); // in scope 0 at $DIR/reference_prop.rs:+71:16: +71:18 - let _59: (); // in scope 0 at $DIR/reference_prop.rs:+75:5: +81:6 - let mut _60: usize; // in scope 0 at $DIR/reference_prop.rs:+76:13: +76:18 - let _64: (); // in scope 0 at $DIR/reference_prop.rs:+80:9: +80:19 - let mut _65: (); // in scope 0 at $DIR/reference_prop.rs:+80:16: +80:18 - let mut _66: usize; // in scope 0 at $DIR/reference_prop.rs:+85:13: +85:18 - let _70: (); // in scope 0 at $DIR/reference_prop.rs:+89:9: +89:19 - let mut _71: (); // in scope 0 at $DIR/reference_prop.rs:+89:16: +89:18 + debug single => _1; + debug multiple => _2; + let mut _0: (); + let _3: (); + let mut _4: usize; + let _7: (); + let mut _8: (); + let _9: (); + let mut _10: usize; + let mut _13: &mut usize; + let mut _14: &mut usize; + let _16: (); + let mut _17: (); + let _18: (); + let mut _19: usize; + let _23: (); + let mut _24: &&mut usize; + let _25: (); + let mut _26: usize; + let _30: (); + let mut _31: *mut &mut usize; + let _32: (); + let mut _33: usize; + let _36: (); + let mut _37: &mut usize; + let _38: (); + let mut _39: usize; + let _45: (); + let mut _46: &mut usize; + let _47: (); + let _48: &mut T; + let _50: (); + let mut _51: (); + let _52: (); + let _53: &mut T; + let mut _54: &mut T; + let mut _55: &mut T; + let _57: (); + let mut _58: (); + let _59: (); + let mut _60: usize; + let _64: (); + let mut _65: (); + let mut _66: usize; + let _70: (); + let mut _71: (); scope 1 { - debug a => _4; // in scope 1 at $DIR/reference_prop.rs:+3:13: +3:18 - let _5: &mut usize; // in scope 1 at $DIR/reference_prop.rs:+4:13: +4:14 + debug a => _4; + let _5: &mut usize; scope 2 { -- debug b => _5; // in scope 2 at $DIR/reference_prop.rs:+4:13: +4:14 -+ debug b => &_4; // in scope 2 at $DIR/reference_prop.rs:+4:13: +4:14 - let _6: usize; // in scope 2 at $DIR/reference_prop.rs:+5:13: +5:14 +- debug b => _5; ++ debug b => &_4; + let _6: usize; scope 3 { - debug c => _6; // in scope 3 at $DIR/reference_prop.rs:+5:13: +5:14 + debug c => _6; } } } scope 4 { - debug a => _10; // in scope 4 at $DIR/reference_prop.rs:+11:13: +11:18 - let mut _11: usize; // in scope 4 at $DIR/reference_prop.rs:+12:13: +12:19 + debug a => _10; + let mut _11: usize; scope 5 { - debug a2 => _11; // in scope 5 at $DIR/reference_prop.rs:+12:13: +12:19 - let mut _12: &mut usize; // in scope 5 at $DIR/reference_prop.rs:+13:13: +13:18 + debug a2 => _11; + let mut _12: &mut usize; scope 6 { - debug b => _12; // in scope 6 at $DIR/reference_prop.rs:+13:13: +13:18 - let _15: usize; // in scope 6 at $DIR/reference_prop.rs:+16:13: +16:14 + debug b => _12; + let _15: usize; scope 7 { - debug c => _15; // in scope 7 at $DIR/reference_prop.rs:+16:13: +16:14 + debug c => _15; } } } } scope 8 { - debug a => _19; // in scope 8 at $DIR/reference_prop.rs:+22:13: +22:18 - let _20: &mut usize; // in scope 8 at $DIR/reference_prop.rs:+23:13: +23:14 + debug a => _19; + let _20: &mut usize; scope 9 { - debug b => _20; // in scope 9 at $DIR/reference_prop.rs:+23:13: +23:14 - let _21: &&mut usize; // in scope 9 at $DIR/reference_prop.rs:+24:13: +24:14 + debug b => _20; + let _21: &&mut usize; scope 10 { - debug d => _21; // in scope 10 at $DIR/reference_prop.rs:+24:13: +24:14 - let _22: usize; // in scope 10 at $DIR/reference_prop.rs:+25:13: +25:14 + debug d => _21; + let _22: usize; scope 11 { - debug c => _22; // in scope 11 at $DIR/reference_prop.rs:+25:13: +25:14 + debug c => _22; } } } } scope 12 { - debug a => _26; // in scope 12 at $DIR/reference_prop.rs:+31:13: +31:18 - let mut _27: &mut usize; // in scope 12 at $DIR/reference_prop.rs:+32:13: +32:18 + debug a => _26; + let mut _27: &mut usize; scope 13 { - debug b => _27; // in scope 13 at $DIR/reference_prop.rs:+32:13: +32:18 - let _28: *mut &mut usize; // in scope 13 at $DIR/reference_prop.rs:+33:13: +33:14 + debug b => _27; + let _28: *mut &mut usize; scope 14 { - debug d => _28; // in scope 14 at $DIR/reference_prop.rs:+33:13: +33:14 - let _29: usize; // in scope 14 at $DIR/reference_prop.rs:+34:13: +34:14 + debug d => _28; + let _29: usize; scope 15 { - debug c => _29; // in scope 15 at $DIR/reference_prop.rs:+34:13: +34:14 + debug c => _29; } } } } scope 16 { - debug a => _33; // in scope 16 at $DIR/reference_prop.rs:+40:13: +40:18 - let _34: &mut usize; // in scope 16 at $DIR/reference_prop.rs:+41:13: +41:14 + debug a => _33; + let _34: &mut usize; scope 17 { - debug b => _34; // in scope 17 at $DIR/reference_prop.rs:+41:13: +41:14 - let _35: usize; // in scope 17 at $DIR/reference_prop.rs:+42:13: +42:14 + debug b => _34; + let _35: usize; scope 18 { - debug c => _35; // in scope 18 at $DIR/reference_prop.rs:+42:13: +42:14 + debug c => _35; } } } scope 19 { - debug a => _39; // in scope 19 at $DIR/reference_prop.rs:+48:13: +48:18 - let _40: &mut usize; // in scope 19 at $DIR/reference_prop.rs:+49:13: +49:15 + debug a => _39; + let _40: &mut usize; scope 20 { - debug b1 => _40; // in scope 20 at $DIR/reference_prop.rs:+49:13: +49:15 - let _41: usize; // in scope 20 at $DIR/reference_prop.rs:+50:13: +50:14 + debug b1 => _40; + let _41: usize; scope 21 { - debug c => _41; // in scope 21 at $DIR/reference_prop.rs:+50:13: +50:14 - let _42: &mut usize; // in scope 21 at $DIR/reference_prop.rs:+51:13: +51:15 + debug c => _41; + let _42: &mut usize; scope 22 { - debug b2 => _42; // in scope 22 at $DIR/reference_prop.rs:+51:13: +51:15 - let _43: usize; // in scope 22 at $DIR/reference_prop.rs:+52:13: +52:15 + debug b2 => _42; + let _43: usize; scope 23 { - debug c2 => _43; // in scope 23 at $DIR/reference_prop.rs:+52:13: +52:15 - let _44: &mut usize; // in scope 23 at $DIR/reference_prop.rs:+53:13: +53:15 + debug c2 => _43; + let _44: &mut usize; scope 24 { - debug b3 => _44; // in scope 24 at $DIR/reference_prop.rs:+53:13: +53:15 + debug b3 => _44; } } } @@ -140,333 +140,303 @@ } } scope 25 { -- debug a => _48; // in scope 25 at $DIR/reference_prop.rs:+61:13: +61:14 -+ debug a => _1; // in scope 25 at $DIR/reference_prop.rs:+61:13: +61:14 - let _49: T; // in scope 25 at $DIR/reference_prop.rs:+62:13: +62:14 +- debug a => _48; ++ debug a => _1; + let _49: T; scope 26 { - debug b => _49; // in scope 26 at $DIR/reference_prop.rs:+62:13: +62:14 + debug b => _49; } } scope 27 { - debug a => _53; // in scope 27 at $DIR/reference_prop.rs:+68:13: +68:14 - let _56: T; // in scope 27 at $DIR/reference_prop.rs:+70:13: +70:14 + debug a => _53; + let _56: T; scope 28 { - debug b => _56; // in scope 28 at $DIR/reference_prop.rs:+70:13: +70:14 + debug b => _56; } } scope 29 { - debug a => _60; // in scope 29 at $DIR/reference_prop.rs:+76:13: +76:18 - let _61: &mut usize; // in scope 29 at $DIR/reference_prop.rs:+77:13: +77:14 + debug a => _60; + let _61: &mut usize; scope 30 { -- debug b => _61; // in scope 30 at $DIR/reference_prop.rs:+77:13: +77:14 -+ debug b => &_60; // in scope 30 at $DIR/reference_prop.rs:+77:13: +77:14 - let _62: &&mut usize; // in scope 30 at $DIR/reference_prop.rs:+78:13: +78:14 +- debug b => _61; ++ debug b => &_60; + let _62: &&mut usize; scope 31 { -- debug d => _62; // in scope 31 at $DIR/reference_prop.rs:+78:13: +78:14 -+ debug d => &&_60; // in scope 31 at $DIR/reference_prop.rs:+78:13: +78:14 - let _63: usize; // in scope 31 at $DIR/reference_prop.rs:+79:13: +79:14 +- debug d => _62; ++ debug d => &&_60; + let _63: usize; scope 32 { - debug c => _63; // in scope 32 at $DIR/reference_prop.rs:+79:13: +79:14 + debug c => _63; } } } } scope 33 { - debug a => _66; // in scope 33 at $DIR/reference_prop.rs:+85:13: +85:18 - let mut _67: &mut usize; // in scope 33 at $DIR/reference_prop.rs:+86:13: +86:18 + debug a => _66; + let mut _67: &mut usize; scope 34 { -- debug b => _67; // in scope 34 at $DIR/reference_prop.rs:+86:13: +86:18 -+ debug b => &_66; // in scope 34 at $DIR/reference_prop.rs:+86:13: +86:18 - let _68: &mut &mut usize; // in scope 34 at $DIR/reference_prop.rs:+87:13: +87:14 +- debug b => _67; ++ debug b => &_66; + let _68: &mut &mut usize; scope 35 { -- debug d => _68; // in scope 35 at $DIR/reference_prop.rs:+87:13: +87:14 -+ debug d => &&_66; // in scope 35 at $DIR/reference_prop.rs:+87:13: +87:14 - let _69: usize; // in scope 35 at $DIR/reference_prop.rs:+88:13: +88:14 +- debug d => _68; ++ debug d => &&_66; + let _69: usize; scope 36 { - debug c => _69; // in scope 36 at $DIR/reference_prop.rs:+88:13: +88:14 + debug c => _69; } } } } bb0: { -- StorageLive(_3); // scope 0 at $DIR/reference_prop.rs:+2:5: +7:6 - StorageLive(_4); // scope 0 at $DIR/reference_prop.rs:+3:13: +3:18 - _4 = const 5_usize; // scope 0 at $DIR/reference_prop.rs:+3:21: +3:28 -- StorageLive(_5); // scope 1 at $DIR/reference_prop.rs:+4:13: +4:14 -- _5 = &mut _4; // scope 1 at $DIR/reference_prop.rs:+4:17: +4:23 - StorageLive(_6); // scope 2 at $DIR/reference_prop.rs:+5:13: +5:14 -- _6 = (*_5); // scope 2 at $DIR/reference_prop.rs:+5:17: +5:19 -+ _6 = _4; // scope 2 at $DIR/reference_prop.rs:+5:17: +5:19 - StorageLive(_7); // scope 3 at $DIR/reference_prop.rs:+6:9: +6:19 - StorageLive(_8); // scope 3 at $DIR/reference_prop.rs:+6:16: +6:18 - _8 = (); // scope 3 at $DIR/reference_prop.rs:+6:16: +6:18 - _7 = opaque::<()>(move _8) -> bb1; // scope 3 at $DIR/reference_prop.rs:+6:9: +6:19 - // mir::Constant - // + span: $DIR/reference_prop.rs:109:9: 109:15 - // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value() } +- StorageLive(_3); + StorageLive(_4); + _4 = const 5_usize; +- StorageLive(_5); +- _5 = &mut _4; + StorageLive(_6); +- _6 = (*_5); ++ _6 = _4; + StorageLive(_7); + StorageLive(_8); + _8 = (); + _7 = opaque::<()>(move _8) -> bb1; } bb1: { - StorageDead(_8); // scope 3 at $DIR/reference_prop.rs:+6:18: +6:19 - StorageDead(_7); // scope 3 at $DIR/reference_prop.rs:+6:19: +6:20 -- _3 = const (); // scope 0 at $DIR/reference_prop.rs:+2:5: +7:6 - StorageDead(_6); // scope 2 at $DIR/reference_prop.rs:+7:5: +7:6 -- StorageDead(_5); // scope 1 at $DIR/reference_prop.rs:+7:5: +7:6 - StorageDead(_4); // scope 0 at $DIR/reference_prop.rs:+7:5: +7:6 -- StorageDead(_3); // scope 0 at $DIR/reference_prop.rs:+7:5: +7:6 -- StorageLive(_9); // scope 0 at $DIR/reference_prop.rs:+10:5: +18:6 - StorageLive(_10); // scope 0 at $DIR/reference_prop.rs:+11:13: +11:18 - _10 = const 5_usize; // scope 0 at $DIR/reference_prop.rs:+11:21: +11:28 - StorageLive(_11); // scope 4 at $DIR/reference_prop.rs:+12:13: +12:19 - _11 = const 7_usize; // scope 4 at $DIR/reference_prop.rs:+12:22: +12:29 - StorageLive(_12); // scope 5 at $DIR/reference_prop.rs:+13:13: +13:18 - _12 = &mut _10; // scope 5 at $DIR/reference_prop.rs:+13:21: +13:27 - StorageLive(_13); // scope 6 at $DIR/reference_prop.rs:+14:13: +14:20 -- StorageLive(_14); // scope 6 at $DIR/reference_prop.rs:+14:13: +14:20 -- _14 = &mut _11; // scope 6 at $DIR/reference_prop.rs:+14:13: +14:20 -- _13 = &mut (*_14); // scope 6 at $DIR/reference_prop.rs:+14:13: +14:20 -+ _13 = &mut _11; // scope 6 at $DIR/reference_prop.rs:+14:13: +14:20 - _12 = move _13; // scope 6 at $DIR/reference_prop.rs:+14:9: +14:20 - StorageDead(_13); // scope 6 at $DIR/reference_prop.rs:+14:19: +14:20 -- StorageDead(_14); // scope 6 at $DIR/reference_prop.rs:+14:20: +14:21 - StorageLive(_15); // scope 6 at $DIR/reference_prop.rs:+16:13: +16:14 - _15 = (*_12); // scope 6 at $DIR/reference_prop.rs:+16:17: +16:19 - StorageLive(_16); // scope 7 at $DIR/reference_prop.rs:+17:9: +17:19 - StorageLive(_17); // scope 7 at $DIR/reference_prop.rs:+17:16: +17:18 - _17 = (); // scope 7 at $DIR/reference_prop.rs:+17:16: +17:18 - _16 = opaque::<()>(move _17) -> bb2; // scope 7 at $DIR/reference_prop.rs:+17:9: +17:19 - // mir::Constant - // + span: $DIR/reference_prop.rs:120:9: 120:15 - // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value() } + StorageDead(_8); + StorageDead(_7); +- _3 = const (); + StorageDead(_6); +- StorageDead(_5); + StorageDead(_4); +- StorageDead(_3); +- StorageLive(_9); + StorageLive(_10); + _10 = const 5_usize; + StorageLive(_11); + _11 = const 7_usize; + StorageLive(_12); + _12 = &mut _10; + StorageLive(_13); +- StorageLive(_14); +- _14 = &mut _11; +- _13 = &mut (*_14); ++ _13 = &mut _11; + _12 = move _13; + StorageDead(_13); +- StorageDead(_14); + StorageLive(_15); + _15 = (*_12); + StorageLive(_16); + StorageLive(_17); + _17 = (); + _16 = opaque::<()>(move _17) -> bb2; } bb2: { - StorageDead(_17); // scope 7 at $DIR/reference_prop.rs:+17:18: +17:19 - StorageDead(_16); // scope 7 at $DIR/reference_prop.rs:+17:19: +17:20 -- _9 = const (); // scope 0 at $DIR/reference_prop.rs:+10:5: +18:6 - StorageDead(_15); // scope 6 at $DIR/reference_prop.rs:+18:5: +18:6 - StorageDead(_12); // scope 5 at $DIR/reference_prop.rs:+18:5: +18:6 - StorageDead(_11); // scope 4 at $DIR/reference_prop.rs:+18:5: +18:6 - StorageDead(_10); // scope 0 at $DIR/reference_prop.rs:+18:5: +18:6 -- StorageDead(_9); // scope 0 at $DIR/reference_prop.rs:+18:5: +18:6 -- StorageLive(_18); // scope 0 at $DIR/reference_prop.rs:+21:5: +27:6 - StorageLive(_19); // scope 0 at $DIR/reference_prop.rs:+22:13: +22:18 - _19 = const 5_usize; // scope 0 at $DIR/reference_prop.rs:+22:21: +22:28 - StorageLive(_20); // scope 8 at $DIR/reference_prop.rs:+23:13: +23:14 - _20 = &mut _19; // scope 8 at $DIR/reference_prop.rs:+23:17: +23:23 - StorageLive(_21); // scope 9 at $DIR/reference_prop.rs:+24:13: +24:14 - _21 = &_20; // scope 9 at $DIR/reference_prop.rs:+24:17: +24:19 - StorageLive(_22); // scope 10 at $DIR/reference_prop.rs:+25:13: +25:14 - _22 = (*_20); // scope 10 at $DIR/reference_prop.rs:+25:17: +25:19 - StorageLive(_23); // scope 11 at $DIR/reference_prop.rs:+26:9: +26:18 - StorageLive(_24); // scope 11 at $DIR/reference_prop.rs:+26:16: +26:17 - _24 = _21; // scope 11 at $DIR/reference_prop.rs:+26:16: +26:17 - _23 = opaque::<&&mut usize>(move _24) -> bb3; // scope 11 at $DIR/reference_prop.rs:+26:9: +26:18 - // mir::Constant - // + span: $DIR/reference_prop.rs:129:9: 129:15 - // + literal: Const { ty: fn(&&mut usize) {opaque::<&&mut usize>}, val: Value() } + StorageDead(_17); + StorageDead(_16); +- _9 = const (); + StorageDead(_15); + StorageDead(_12); + StorageDead(_11); + StorageDead(_10); +- StorageDead(_9); +- StorageLive(_18); + StorageLive(_19); + _19 = const 5_usize; + StorageLive(_20); + _20 = &mut _19; + StorageLive(_21); + _21 = &_20; + StorageLive(_22); + _22 = (*_20); + StorageLive(_23); + StorageLive(_24); + _24 = _21; + _23 = opaque::<&&mut usize>(move _24) -> bb3; } bb3: { - StorageDead(_24); // scope 11 at $DIR/reference_prop.rs:+26:17: +26:18 - StorageDead(_23); // scope 11 at $DIR/reference_prop.rs:+26:18: +26:19 -- _18 = const (); // scope 0 at $DIR/reference_prop.rs:+21:5: +27:6 - StorageDead(_22); // scope 10 at $DIR/reference_prop.rs:+27:5: +27:6 - StorageDead(_21); // scope 9 at $DIR/reference_prop.rs:+27:5: +27:6 - StorageDead(_20); // scope 8 at $DIR/reference_prop.rs:+27:5: +27:6 - StorageDead(_19); // scope 0 at $DIR/reference_prop.rs:+27:5: +27:6 -- StorageDead(_18); // scope 0 at $DIR/reference_prop.rs:+27:5: +27:6 -- StorageLive(_25); // scope 0 at $DIR/reference_prop.rs:+30:5: +36:6 - StorageLive(_26); // scope 0 at $DIR/reference_prop.rs:+31:13: +31:18 - _26 = const 5_usize; // scope 0 at $DIR/reference_prop.rs:+31:21: +31:28 - StorageLive(_27); // scope 12 at $DIR/reference_prop.rs:+32:13: +32:18 - _27 = &mut _26; // scope 12 at $DIR/reference_prop.rs:+32:21: +32:27 - StorageLive(_28); // scope 13 at $DIR/reference_prop.rs:+33:13: +33:14 - _28 = &raw mut _27; // scope 13 at $DIR/reference_prop.rs:+33:17: +33:27 - StorageLive(_29); // scope 14 at $DIR/reference_prop.rs:+34:13: +34:14 - _29 = (*_27); // scope 14 at $DIR/reference_prop.rs:+34:17: +34:19 - StorageLive(_30); // scope 15 at $DIR/reference_prop.rs:+35:9: +35:18 - StorageLive(_31); // scope 15 at $DIR/reference_prop.rs:+35:16: +35:17 - _31 = _28; // scope 15 at $DIR/reference_prop.rs:+35:16: +35:17 - _30 = opaque::<*mut &mut usize>(move _31) -> bb4; // scope 15 at $DIR/reference_prop.rs:+35:9: +35:18 - // mir::Constant - // + span: $DIR/reference_prop.rs:138:9: 138:15 - // + literal: Const { ty: fn(*mut &mut usize) {opaque::<*mut &mut usize>}, val: Value() } + StorageDead(_24); + StorageDead(_23); +- _18 = const (); + StorageDead(_22); + StorageDead(_21); + StorageDead(_20); + StorageDead(_19); +- StorageDead(_18); +- StorageLive(_25); + StorageLive(_26); + _26 = const 5_usize; + StorageLive(_27); + _27 = &mut _26; + StorageLive(_28); + _28 = &raw mut _27; + StorageLive(_29); + _29 = (*_27); + StorageLive(_30); + StorageLive(_31); + _31 = _28; + _30 = opaque::<*mut &mut usize>(move _31) -> bb4; } bb4: { - StorageDead(_31); // scope 15 at $DIR/reference_prop.rs:+35:17: +35:18 - StorageDead(_30); // scope 15 at $DIR/reference_prop.rs:+35:18: +35:19 -- _25 = const (); // scope 0 at $DIR/reference_prop.rs:+30:5: +36:6 - StorageDead(_29); // scope 14 at $DIR/reference_prop.rs:+36:5: +36:6 - StorageDead(_28); // scope 13 at $DIR/reference_prop.rs:+36:5: +36:6 - StorageDead(_27); // scope 12 at $DIR/reference_prop.rs:+36:5: +36:6 - StorageDead(_26); // scope 0 at $DIR/reference_prop.rs:+36:5: +36:6 -- StorageDead(_25); // scope 0 at $DIR/reference_prop.rs:+36:5: +36:6 -- StorageLive(_32); // scope 0 at $DIR/reference_prop.rs:+39:5: +44:6 - StorageLive(_33); // scope 0 at $DIR/reference_prop.rs:+40:13: +40:18 - _33 = const 7_usize; // scope 0 at $DIR/reference_prop.rs:+40:21: +40:28 - StorageLive(_34); // scope 16 at $DIR/reference_prop.rs:+41:13: +41:14 - _34 = &mut _33; // scope 16 at $DIR/reference_prop.rs:+41:17: +41:23 - StorageLive(_35); // scope 17 at $DIR/reference_prop.rs:+42:13: +42:14 - _35 = (*_34); // scope 17 at $DIR/reference_prop.rs:+42:17: +42:19 - StorageLive(_36); // scope 18 at $DIR/reference_prop.rs:+43:9: +43:18 - StorageLive(_37); // scope 18 at $DIR/reference_prop.rs:+43:16: +43:17 - _37 = move _34; // scope 18 at $DIR/reference_prop.rs:+43:16: +43:17 - _36 = opaque::<&mut usize>(move _37) -> bb5; // scope 18 at $DIR/reference_prop.rs:+43:9: +43:18 - // mir::Constant - // + span: $DIR/reference_prop.rs:146:9: 146:15 - // + literal: Const { ty: fn(&mut usize) {opaque::<&mut usize>}, val: Value() } + StorageDead(_31); + StorageDead(_30); +- _25 = const (); + StorageDead(_29); + StorageDead(_28); + StorageDead(_27); + StorageDead(_26); +- StorageDead(_25); +- StorageLive(_32); + StorageLive(_33); + _33 = const 7_usize; + StorageLive(_34); + _34 = &mut _33; + StorageLive(_35); + _35 = (*_34); + StorageLive(_36); + StorageLive(_37); + _37 = move _34; + _36 = opaque::<&mut usize>(move _37) -> bb5; } bb5: { - StorageDead(_37); // scope 18 at $DIR/reference_prop.rs:+43:17: +43:18 - StorageDead(_36); // scope 18 at $DIR/reference_prop.rs:+43:18: +43:19 -- _32 = const (); // scope 0 at $DIR/reference_prop.rs:+39:5: +44:6 - StorageDead(_35); // scope 17 at $DIR/reference_prop.rs:+44:5: +44:6 - StorageDead(_34); // scope 16 at $DIR/reference_prop.rs:+44:5: +44:6 - StorageDead(_33); // scope 0 at $DIR/reference_prop.rs:+44:5: +44:6 -- StorageDead(_32); // scope 0 at $DIR/reference_prop.rs:+44:5: +44:6 -- StorageLive(_38); // scope 0 at $DIR/reference_prop.rs:+47:5: +57:6 - StorageLive(_39); // scope 0 at $DIR/reference_prop.rs:+48:13: +48:18 - _39 = const 7_usize; // scope 0 at $DIR/reference_prop.rs:+48:21: +48:28 - StorageLive(_40); // scope 19 at $DIR/reference_prop.rs:+49:13: +49:15 - _40 = &mut _39; // scope 19 at $DIR/reference_prop.rs:+49:18: +49:24 - StorageLive(_41); // scope 20 at $DIR/reference_prop.rs:+50:13: +50:14 - _41 = (*_40); // scope 20 at $DIR/reference_prop.rs:+50:17: +50:20 - StorageLive(_42); // scope 21 at $DIR/reference_prop.rs:+51:13: +51:15 - _42 = move _40; // scope 21 at $DIR/reference_prop.rs:+51:18: +51:20 - StorageLive(_43); // scope 22 at $DIR/reference_prop.rs:+52:13: +52:15 - _43 = (*_42); // scope 22 at $DIR/reference_prop.rs:+52:18: +52:21 - StorageLive(_44); // scope 23 at $DIR/reference_prop.rs:+53:13: +53:15 - _44 = move _42; // scope 23 at $DIR/reference_prop.rs:+53:18: +53:20 - StorageLive(_45); // scope 24 at $DIR/reference_prop.rs:+56:9: +56:19 - StorageLive(_46); // scope 24 at $DIR/reference_prop.rs:+56:16: +56:18 - _46 = move _44; // scope 24 at $DIR/reference_prop.rs:+56:16: +56:18 - _45 = opaque::<&mut usize>(move _46) -> bb6; // scope 24 at $DIR/reference_prop.rs:+56:9: +56:19 - // mir::Constant - // + span: $DIR/reference_prop.rs:159:9: 159:15 - // + literal: Const { ty: fn(&mut usize) {opaque::<&mut usize>}, val: Value() } + StorageDead(_37); + StorageDead(_36); +- _32 = const (); + StorageDead(_35); + StorageDead(_34); + StorageDead(_33); +- StorageDead(_32); +- StorageLive(_38); + StorageLive(_39); + _39 = const 7_usize; + StorageLive(_40); + _40 = &mut _39; + StorageLive(_41); + _41 = (*_40); + StorageLive(_42); + _42 = move _40; + StorageLive(_43); + _43 = (*_42); + StorageLive(_44); + _44 = move _42; + StorageLive(_45); + StorageLive(_46); + _46 = move _44; + _45 = opaque::<&mut usize>(move _46) -> bb6; } bb6: { - StorageDead(_46); // scope 24 at $DIR/reference_prop.rs:+56:18: +56:19 - StorageDead(_45); // scope 24 at $DIR/reference_prop.rs:+56:19: +56:20 -- _38 = const (); // scope 0 at $DIR/reference_prop.rs:+47:5: +57:6 - StorageDead(_44); // scope 23 at $DIR/reference_prop.rs:+57:5: +57:6 - StorageDead(_43); // scope 22 at $DIR/reference_prop.rs:+57:5: +57:6 - StorageDead(_42); // scope 21 at $DIR/reference_prop.rs:+57:5: +57:6 - StorageDead(_41); // scope 20 at $DIR/reference_prop.rs:+57:5: +57:6 - StorageDead(_40); // scope 19 at $DIR/reference_prop.rs:+57:5: +57:6 - StorageDead(_39); // scope 0 at $DIR/reference_prop.rs:+57:5: +57:6 -- StorageDead(_38); // scope 0 at $DIR/reference_prop.rs:+57:5: +57:6 -- StorageLive(_47); // scope 0 at $DIR/reference_prop.rs:+60:5: +64:6 -- StorageLive(_48); // scope 0 at $DIR/reference_prop.rs:+61:13: +61:14 -- _48 = &mut (*_1); // scope 0 at $DIR/reference_prop.rs:+61:17: +61:29 - StorageLive(_49); // scope 25 at $DIR/reference_prop.rs:+62:13: +62:14 -- _49 = (*_48); // scope 25 at $DIR/reference_prop.rs:+62:17: +62:19 -+ _49 = (*_1); // scope 25 at $DIR/reference_prop.rs:+62:17: +62:19 - StorageLive(_50); // scope 26 at $DIR/reference_prop.rs:+63:9: +63:19 - StorageLive(_51); // scope 26 at $DIR/reference_prop.rs:+63:16: +63:18 - _51 = (); // scope 26 at $DIR/reference_prop.rs:+63:16: +63:18 - _50 = opaque::<()>(move _51) -> bb7; // scope 26 at $DIR/reference_prop.rs:+63:9: +63:19 - // mir::Constant - // + span: $DIR/reference_prop.rs:166:9: 166:15 - // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value() } + StorageDead(_46); + StorageDead(_45); +- _38 = const (); + StorageDead(_44); + StorageDead(_43); + StorageDead(_42); + StorageDead(_41); + StorageDead(_40); + StorageDead(_39); +- StorageDead(_38); +- StorageLive(_47); +- StorageLive(_48); +- _48 = &mut (*_1); + StorageLive(_49); +- _49 = (*_48); ++ _49 = (*_1); + StorageLive(_50); + StorageLive(_51); + _51 = (); + _50 = opaque::<()>(move _51) -> bb7; } bb7: { - StorageDead(_51); // scope 26 at $DIR/reference_prop.rs:+63:18: +63:19 - StorageDead(_50); // scope 26 at $DIR/reference_prop.rs:+63:19: +63:20 -- _47 = const (); // scope 0 at $DIR/reference_prop.rs:+60:5: +64:6 - StorageDead(_49); // scope 25 at $DIR/reference_prop.rs:+64:5: +64:6 -- StorageDead(_48); // scope 0 at $DIR/reference_prop.rs:+64:5: +64:6 -- StorageDead(_47); // scope 0 at $DIR/reference_prop.rs:+64:5: +64:6 -- StorageLive(_52); // scope 0 at $DIR/reference_prop.rs:+67:5: +72:6 - StorageLive(_53); // scope 0 at $DIR/reference_prop.rs:+68:13: +68:14 - _53 = &mut (*_2); // scope 0 at $DIR/reference_prop.rs:+68:17: +68:31 - StorageLive(_54); // scope 27 at $DIR/reference_prop.rs:+69:20: +69:32 -- StorageLive(_55); // scope 27 at $DIR/reference_prop.rs:+69:20: +69:32 -- _55 = &mut (*_1); // scope 27 at $DIR/reference_prop.rs:+69:20: +69:32 -- _54 = &mut (*_55); // scope 27 at $DIR/reference_prop.rs:+69:20: +69:32 -+ _54 = &mut (*_1); // scope 27 at $DIR/reference_prop.rs:+69:20: +69:32 - _2 = move _54; // scope 27 at $DIR/reference_prop.rs:+69:9: +69:32 - StorageDead(_54); // scope 27 at $DIR/reference_prop.rs:+69:31: +69:32 -- StorageDead(_55); // scope 27 at $DIR/reference_prop.rs:+69:32: +69:33 - StorageLive(_56); // scope 27 at $DIR/reference_prop.rs:+70:13: +70:14 - _56 = (*_53); // scope 27 at $DIR/reference_prop.rs:+70:17: +70:19 - StorageLive(_57); // scope 28 at $DIR/reference_prop.rs:+71:9: +71:19 - StorageLive(_58); // scope 28 at $DIR/reference_prop.rs:+71:16: +71:18 - _58 = (); // scope 28 at $DIR/reference_prop.rs:+71:16: +71:18 - _57 = opaque::<()>(move _58) -> bb8; // scope 28 at $DIR/reference_prop.rs:+71:9: +71:19 - // mir::Constant - // + span: $DIR/reference_prop.rs:174:9: 174:15 - // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value() } + StorageDead(_51); + StorageDead(_50); +- _47 = const (); + StorageDead(_49); +- StorageDead(_48); +- StorageDead(_47); +- StorageLive(_52); + StorageLive(_53); + _53 = &mut (*_2); + StorageLive(_54); +- StorageLive(_55); +- _55 = &mut (*_1); +- _54 = &mut (*_55); ++ _54 = &mut (*_1); + _2 = move _54; + StorageDead(_54); +- StorageDead(_55); + StorageLive(_56); + _56 = (*_53); + StorageLive(_57); + StorageLive(_58); + _58 = (); + _57 = opaque::<()>(move _58) -> bb8; } bb8: { - StorageDead(_58); // scope 28 at $DIR/reference_prop.rs:+71:18: +71:19 - StorageDead(_57); // scope 28 at $DIR/reference_prop.rs:+71:19: +71:20 -- _52 = const (); // scope 0 at $DIR/reference_prop.rs:+67:5: +72:6 - StorageDead(_56); // scope 27 at $DIR/reference_prop.rs:+72:5: +72:6 - StorageDead(_53); // scope 0 at $DIR/reference_prop.rs:+72:5: +72:6 -- StorageDead(_52); // scope 0 at $DIR/reference_prop.rs:+72:5: +72:6 -- StorageLive(_59); // scope 0 at $DIR/reference_prop.rs:+75:5: +81:6 - StorageLive(_60); // scope 0 at $DIR/reference_prop.rs:+76:13: +76:18 - _60 = const 5_usize; // scope 0 at $DIR/reference_prop.rs:+76:21: +76:28 -- StorageLive(_61); // scope 29 at $DIR/reference_prop.rs:+77:13: +77:14 -- _61 = &mut _60; // scope 29 at $DIR/reference_prop.rs:+77:17: +77:23 -- StorageLive(_62); // scope 30 at $DIR/reference_prop.rs:+78:13: +78:14 -- _62 = &_61; // scope 30 at $DIR/reference_prop.rs:+78:17: +78:19 - StorageLive(_63); // scope 31 at $DIR/reference_prop.rs:+79:13: +79:14 -- _63 = (*_61); // scope 31 at $DIR/reference_prop.rs:+79:17: +79:19 -+ _63 = _60; // scope 31 at $DIR/reference_prop.rs:+79:17: +79:19 - StorageLive(_64); // scope 32 at $DIR/reference_prop.rs:+80:9: +80:19 - StorageLive(_65); // scope 32 at $DIR/reference_prop.rs:+80:16: +80:18 - _65 = (); // scope 32 at $DIR/reference_prop.rs:+80:16: +80:18 - _64 = opaque::<()>(move _65) -> bb9; // scope 32 at $DIR/reference_prop.rs:+80:9: +80:19 - // mir::Constant - // + span: $DIR/reference_prop.rs:183:9: 183:15 - // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value() } + StorageDead(_58); + StorageDead(_57); +- _52 = const (); + StorageDead(_56); + StorageDead(_53); +- StorageDead(_52); +- StorageLive(_59); + StorageLive(_60); + _60 = const 5_usize; +- StorageLive(_61); +- _61 = &mut _60; +- StorageLive(_62); +- _62 = &_61; + StorageLive(_63); +- _63 = (*_61); ++ _63 = _60; + StorageLive(_64); + StorageLive(_65); + _65 = (); + _64 = opaque::<()>(move _65) -> bb9; } bb9: { - StorageDead(_65); // scope 32 at $DIR/reference_prop.rs:+80:18: +80:19 - StorageDead(_64); // scope 32 at $DIR/reference_prop.rs:+80:19: +80:20 -- _59 = const (); // scope 0 at $DIR/reference_prop.rs:+75:5: +81:6 - StorageDead(_63); // scope 31 at $DIR/reference_prop.rs:+81:5: +81:6 -- StorageDead(_62); // scope 30 at $DIR/reference_prop.rs:+81:5: +81:6 -- StorageDead(_61); // scope 29 at $DIR/reference_prop.rs:+81:5: +81:6 - StorageDead(_60); // scope 0 at $DIR/reference_prop.rs:+81:5: +81:6 -- StorageDead(_59); // scope 0 at $DIR/reference_prop.rs:+81:5: +81:6 - StorageLive(_66); // scope 0 at $DIR/reference_prop.rs:+85:13: +85:18 - _66 = const 5_usize; // scope 0 at $DIR/reference_prop.rs:+85:21: +85:28 -- StorageLive(_67); // scope 33 at $DIR/reference_prop.rs:+86:13: +86:18 -- _67 = &mut _66; // scope 33 at $DIR/reference_prop.rs:+86:21: +86:27 -- StorageLive(_68); // scope 34 at $DIR/reference_prop.rs:+87:13: +87:14 -- _68 = &mut _67; // scope 34 at $DIR/reference_prop.rs:+87:17: +87:23 - StorageLive(_69); // scope 35 at $DIR/reference_prop.rs:+88:13: +88:14 -- _69 = (*_67); // scope 35 at $DIR/reference_prop.rs:+88:17: +88:19 -+ _69 = _66; // scope 35 at $DIR/reference_prop.rs:+88:17: +88:19 - StorageLive(_70); // scope 36 at $DIR/reference_prop.rs:+89:9: +89:19 - StorageLive(_71); // scope 36 at $DIR/reference_prop.rs:+89:16: +89:18 - _71 = (); // scope 36 at $DIR/reference_prop.rs:+89:16: +89:18 - _70 = opaque::<()>(move _71) -> bb10; // scope 36 at $DIR/reference_prop.rs:+89:9: +89:19 - // mir::Constant - // + span: $DIR/reference_prop.rs:192:9: 192:15 - // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value() } + StorageDead(_65); + StorageDead(_64); +- _59 = const (); + StorageDead(_63); +- StorageDead(_62); +- StorageDead(_61); + StorageDead(_60); +- StorageDead(_59); + StorageLive(_66); + _66 = const 5_usize; +- StorageLive(_67); +- _67 = &mut _66; +- StorageLive(_68); +- _68 = &mut _67; + StorageLive(_69); +- _69 = (*_67); ++ _69 = _66; + StorageLive(_70); + StorageLive(_71); + _71 = (); + _70 = opaque::<()>(move _71) -> bb10; } bb10: { - StorageDead(_71); // scope 36 at $DIR/reference_prop.rs:+89:18: +89:19 - StorageDead(_70); // scope 36 at $DIR/reference_prop.rs:+89:19: +89:20 - _0 = const (); // scope 0 at $DIR/reference_prop.rs:+84:5: +90:6 - StorageDead(_69); // scope 35 at $DIR/reference_prop.rs:+90:5: +90:6 -- StorageDead(_68); // scope 34 at $DIR/reference_prop.rs:+90:5: +90:6 -- StorageDead(_67); // scope 33 at $DIR/reference_prop.rs:+90:5: +90:6 - StorageDead(_66); // scope 0 at $DIR/reference_prop.rs:+90:5: +90:6 - return; // scope 0 at $DIR/reference_prop.rs:+91:2: +91:2 + StorageDead(_71); + StorageDead(_70); + _0 = const (); + StorageDead(_69); +- StorageDead(_68); +- StorageDead(_67); + StorageDead(_66); + return; } } diff --git a/tests/mir-opt/reference_prop.reference_propagation_mut_ptr.ReferencePropagation.diff b/tests/mir-opt/reference_prop.reference_propagation_mut_ptr.ReferencePropagation.diff index c93aa52be111a..8c669644c48aa 100644 --- a/tests/mir-opt/reference_prop.reference_propagation_mut_ptr.ReferencePropagation.diff +++ b/tests/mir-opt/reference_prop.reference_propagation_mut_ptr.ReferencePropagation.diff @@ -2,142 +2,142 @@ + // MIR for `reference_propagation_mut_ptr` after ReferencePropagation fn reference_propagation_mut_ptr(_1: *mut T, _2: *mut T) -> () { - debug single => _1; // in scope 0 at $DIR/reference_prop.rs:+0:43: +0:49 - debug multiple => _2; // in scope 0 at $DIR/reference_prop.rs:+0:59: +0:71 - let mut _0: (); // return place in scope 0 at $DIR/reference_prop.rs:+0:81: +0:81 - let _3: (); // in scope 0 at $DIR/reference_prop.rs:+2:5: +7:6 - let _7: (); // in scope 0 at $DIR/reference_prop.rs:+6:9: +6:19 - let mut _8: (); // in scope 0 at $DIR/reference_prop.rs:+6:16: +6:18 - let _9: (); // in scope 0 at $DIR/reference_prop.rs:+10:5: +18:6 - let mut _13: *mut usize; // in scope 0 at $DIR/reference_prop.rs:+14:13: +14:24 - let _15: (); // in scope 0 at $DIR/reference_prop.rs:+17:9: +17:19 - let mut _16: (); // in scope 0 at $DIR/reference_prop.rs:+17:16: +17:18 - let _17: (); // in scope 0 at $DIR/reference_prop.rs:+21:5: +27:6 - let _22: (); // in scope 0 at $DIR/reference_prop.rs:+26:9: +26:18 - let mut _23: &*mut usize; // in scope 0 at $DIR/reference_prop.rs:+26:16: +26:17 - let _24: (); // in scope 0 at $DIR/reference_prop.rs:+30:5: +36:6 - let _29: (); // in scope 0 at $DIR/reference_prop.rs:+35:9: +35:18 - let mut _30: *mut *mut usize; // in scope 0 at $DIR/reference_prop.rs:+35:16: +35:17 - let _31: (); // in scope 0 at $DIR/reference_prop.rs:+39:5: +44:6 - let _35: (); // in scope 0 at $DIR/reference_prop.rs:+43:9: +43:18 - let mut _36: *mut usize; // in scope 0 at $DIR/reference_prop.rs:+43:16: +43:17 - let _37: (); // in scope 0 at $DIR/reference_prop.rs:+47:5: +57:6 - let _44: (); // in scope 0 at $DIR/reference_prop.rs:+56:9: +56:19 - let mut _45: *mut usize; // in scope 0 at $DIR/reference_prop.rs:+56:16: +56:18 - let _46: (); // in scope 0 at $DIR/reference_prop.rs:+60:5: +64:6 - let _49: (); // in scope 0 at $DIR/reference_prop.rs:+63:9: +63:19 - let mut _50: (); // in scope 0 at $DIR/reference_prop.rs:+63:16: +63:18 - let _51: (); // in scope 0 at $DIR/reference_prop.rs:+67:5: +72:6 - let mut _53: *mut T; // in scope 0 at $DIR/reference_prop.rs:+69:20: +69:36 - let _55: (); // in scope 0 at $DIR/reference_prop.rs:+71:9: +71:19 - let mut _56: (); // in scope 0 at $DIR/reference_prop.rs:+71:16: +71:18 - let _57: (); // in scope 0 at $DIR/reference_prop.rs:+75:5: +81:6 - let _62: (); // in scope 0 at $DIR/reference_prop.rs:+80:9: +80:19 - let mut _63: (); // in scope 0 at $DIR/reference_prop.rs:+80:16: +80:18 - let _68: (); // in scope 0 at $DIR/reference_prop.rs:+89:9: +89:19 - let mut _69: (); // in scope 0 at $DIR/reference_prop.rs:+89:16: +89:18 + debug single => _1; + debug multiple => _2; + let mut _0: (); + let _3: (); + let _7: (); + let mut _8: (); + let _9: (); + let mut _13: *mut usize; + let _15: (); + let mut _16: (); + let _17: (); + let _22: (); + let mut _23: &*mut usize; + let _24: (); + let _29: (); + let mut _30: *mut *mut usize; + let _31: (); + let _35: (); + let mut _36: *mut usize; + let _37: (); + let _44: (); + let mut _45: *mut usize; + let _46: (); + let _49: (); + let mut _50: (); + let _51: (); + let mut _53: *mut T; + let _55: (); + let mut _56: (); + let _57: (); + let _62: (); + let mut _63: (); + let _68: (); + let mut _69: (); scope 1 { - let mut _4: usize; // in scope 1 at $DIR/reference_prop.rs:+3:13: +3:18 + let mut _4: usize; scope 2 { - debug a => _4; // in scope 2 at $DIR/reference_prop.rs:+3:13: +3:18 - let _5: *mut usize; // in scope 2 at $DIR/reference_prop.rs:+4:13: +4:14 + debug a => _4; + let _5: *mut usize; scope 3 { -- debug b => _5; // in scope 3 at $DIR/reference_prop.rs:+4:13: +4:14 -+ debug b => &_4; // in scope 3 at $DIR/reference_prop.rs:+4:13: +4:14 - let _6: usize; // in scope 3 at $DIR/reference_prop.rs:+5:13: +5:14 +- debug b => _5; ++ debug b => &_4; + let _6: usize; scope 4 { - debug c => _6; // in scope 4 at $DIR/reference_prop.rs:+5:13: +5:14 + debug c => _6; } } } } scope 5 { - let mut _10: usize; // in scope 5 at $DIR/reference_prop.rs:+11:13: +11:18 + let mut _10: usize; scope 6 { - debug a => _10; // in scope 6 at $DIR/reference_prop.rs:+11:13: +11:18 - let mut _11: usize; // in scope 6 at $DIR/reference_prop.rs:+12:13: +12:19 + debug a => _10; + let mut _11: usize; scope 7 { - debug a2 => _11; // in scope 7 at $DIR/reference_prop.rs:+12:13: +12:19 - let mut _12: *mut usize; // in scope 7 at $DIR/reference_prop.rs:+13:13: +13:18 + debug a2 => _11; + let mut _12: *mut usize; scope 8 { - debug b => _12; // in scope 8 at $DIR/reference_prop.rs:+13:13: +13:18 - let _14: usize; // in scope 8 at $DIR/reference_prop.rs:+16:13: +16:14 + debug b => _12; + let _14: usize; scope 9 { - debug c => _14; // in scope 9 at $DIR/reference_prop.rs:+16:13: +16:14 + debug c => _14; } } } } } scope 10 { - let mut _18: usize; // in scope 10 at $DIR/reference_prop.rs:+22:13: +22:18 + let mut _18: usize; scope 11 { - debug a => _18; // in scope 11 at $DIR/reference_prop.rs:+22:13: +22:18 - let _19: *mut usize; // in scope 11 at $DIR/reference_prop.rs:+23:13: +23:14 + debug a => _18; + let _19: *mut usize; scope 12 { - debug b => _19; // in scope 12 at $DIR/reference_prop.rs:+23:13: +23:14 - let _20: &*mut usize; // in scope 12 at $DIR/reference_prop.rs:+24:13: +24:14 + debug b => _19; + let _20: &*mut usize; scope 13 { - debug d => _20; // in scope 13 at $DIR/reference_prop.rs:+24:13: +24:14 - let _21: usize; // in scope 13 at $DIR/reference_prop.rs:+25:13: +25:14 + debug d => _20; + let _21: usize; scope 14 { - debug c => _21; // in scope 14 at $DIR/reference_prop.rs:+25:13: +25:14 + debug c => _21; } } } } } scope 15 { - let mut _25: usize; // in scope 15 at $DIR/reference_prop.rs:+31:13: +31:18 + let mut _25: usize; scope 16 { - debug a => _25; // in scope 16 at $DIR/reference_prop.rs:+31:13: +31:18 - let mut _26: *mut usize; // in scope 16 at $DIR/reference_prop.rs:+32:13: +32:18 + debug a => _25; + let mut _26: *mut usize; scope 17 { - debug b => _26; // in scope 17 at $DIR/reference_prop.rs:+32:13: +32:18 - let _27: *mut *mut usize; // in scope 17 at $DIR/reference_prop.rs:+33:13: +33:14 + debug b => _26; + let _27: *mut *mut usize; scope 18 { - debug d => _27; // in scope 18 at $DIR/reference_prop.rs:+33:13: +33:14 - let _28: usize; // in scope 18 at $DIR/reference_prop.rs:+34:13: +34:14 + debug d => _27; + let _28: usize; scope 19 { - debug c => _28; // in scope 19 at $DIR/reference_prop.rs:+34:13: +34:14 + debug c => _28; } } } } } scope 20 { - let mut _32: usize; // in scope 20 at $DIR/reference_prop.rs:+40:13: +40:18 + let mut _32: usize; scope 21 { - debug a => _32; // in scope 21 at $DIR/reference_prop.rs:+40:13: +40:18 - let _33: *mut usize; // in scope 21 at $DIR/reference_prop.rs:+41:13: +41:14 + debug a => _32; + let _33: *mut usize; scope 22 { - debug b => _33; // in scope 22 at $DIR/reference_prop.rs:+41:13: +41:14 - let _34: usize; // in scope 22 at $DIR/reference_prop.rs:+42:13: +42:14 + debug b => _33; + let _34: usize; scope 23 { - debug c => _34; // in scope 23 at $DIR/reference_prop.rs:+42:13: +42:14 + debug c => _34; } } } } scope 24 { - let mut _38: usize; // in scope 24 at $DIR/reference_prop.rs:+48:13: +48:18 + let mut _38: usize; scope 25 { - debug a => _38; // in scope 25 at $DIR/reference_prop.rs:+48:13: +48:18 - let _39: *mut usize; // in scope 25 at $DIR/reference_prop.rs:+49:13: +49:15 + debug a => _38; + let _39: *mut usize; scope 26 { - debug b1 => _39; // in scope 26 at $DIR/reference_prop.rs:+49:13: +49:15 - let _40: usize; // in scope 26 at $DIR/reference_prop.rs:+50:13: +50:14 + debug b1 => _39; + let _40: usize; scope 27 { - debug c => _40; // in scope 27 at $DIR/reference_prop.rs:+50:13: +50:14 - let _41: *mut usize; // in scope 27 at $DIR/reference_prop.rs:+51:13: +51:15 + debug c => _40; + let _41: *mut usize; scope 28 { - debug b2 => _41; // in scope 28 at $DIR/reference_prop.rs:+51:13: +51:15 - let _42: usize; // in scope 28 at $DIR/reference_prop.rs:+52:13: +52:15 + debug b2 => _41; + let _42: usize; scope 29 { - debug c2 => _42; // in scope 29 at $DIR/reference_prop.rs:+52:13: +52:15 - let _43: *mut usize; // in scope 29 at $DIR/reference_prop.rs:+53:13: +53:15 + debug c2 => _42; + let _43: *mut usize; scope 30 { - debug b3 => _43; // in scope 30 at $DIR/reference_prop.rs:+53:13: +53:15 + debug b3 => _43; } } } @@ -146,61 +146,61 @@ } } scope 31 { - let _47: *mut T; // in scope 31 at $DIR/reference_prop.rs:+61:13: +61:14 + let _47: *mut T; scope 32 { -- debug a => _47; // in scope 32 at $DIR/reference_prop.rs:+61:13: +61:14 -+ debug a => _1; // in scope 32 at $DIR/reference_prop.rs:+61:13: +61:14 - let _48: T; // in scope 32 at $DIR/reference_prop.rs:+62:13: +62:14 +- debug a => _47; ++ debug a => _1; + let _48: T; scope 33 { - debug b => _48; // in scope 33 at $DIR/reference_prop.rs:+62:13: +62:14 + debug b => _48; } } } scope 34 { - let _52: *mut T; // in scope 34 at $DIR/reference_prop.rs:+68:13: +68:14 + let _52: *mut T; scope 35 { - debug a => _52; // in scope 35 at $DIR/reference_prop.rs:+68:13: +68:14 - let _54: T; // in scope 35 at $DIR/reference_prop.rs:+70:13: +70:14 + debug a => _52; + let _54: T; scope 36 { - debug b => _54; // in scope 36 at $DIR/reference_prop.rs:+70:13: +70:14 + debug b => _54; } } } scope 37 { - let mut _58: usize; // in scope 37 at $DIR/reference_prop.rs:+76:13: +76:18 + let mut _58: usize; scope 38 { - debug a => _58; // in scope 38 at $DIR/reference_prop.rs:+76:13: +76:18 - let _59: *mut usize; // in scope 38 at $DIR/reference_prop.rs:+77:13: +77:14 + debug a => _58; + let _59: *mut usize; scope 39 { -- debug b => _59; // in scope 39 at $DIR/reference_prop.rs:+77:13: +77:14 -+ debug b => &_58; // in scope 39 at $DIR/reference_prop.rs:+77:13: +77:14 - let _60: &*mut usize; // in scope 39 at $DIR/reference_prop.rs:+78:13: +78:14 +- debug b => _59; ++ debug b => &_58; + let _60: &*mut usize; scope 40 { -- debug d => _60; // in scope 40 at $DIR/reference_prop.rs:+78:13: +78:14 -+ debug d => &&_58; // in scope 40 at $DIR/reference_prop.rs:+78:13: +78:14 - let _61: usize; // in scope 40 at $DIR/reference_prop.rs:+79:13: +79:14 +- debug d => _60; ++ debug d => &&_58; + let _61: usize; scope 41 { - debug c => _61; // in scope 41 at $DIR/reference_prop.rs:+79:13: +79:14 + debug c => _61; } } } } } scope 42 { - let mut _64: usize; // in scope 42 at $DIR/reference_prop.rs:+85:13: +85:18 + let mut _64: usize; scope 43 { - debug a => _64; // in scope 43 at $DIR/reference_prop.rs:+85:13: +85:18 - let mut _65: *mut usize; // in scope 43 at $DIR/reference_prop.rs:+86:13: +86:18 + debug a => _64; + let mut _65: *mut usize; scope 44 { -- debug b => _65; // in scope 44 at $DIR/reference_prop.rs:+86:13: +86:18 -+ debug b => &_64; // in scope 44 at $DIR/reference_prop.rs:+86:13: +86:18 - let _66: &mut *mut usize; // in scope 44 at $DIR/reference_prop.rs:+87:13: +87:14 +- debug b => _65; ++ debug b => &_64; + let _66: &mut *mut usize; scope 45 { -- debug d => _66; // in scope 45 at $DIR/reference_prop.rs:+87:13: +87:14 -+ debug d => &&_64; // in scope 45 at $DIR/reference_prop.rs:+87:13: +87:14 - let _67: usize; // in scope 45 at $DIR/reference_prop.rs:+88:13: +88:14 +- debug d => _66; ++ debug d => &&_64; + let _67: usize; scope 46 { - debug c => _67; // in scope 46 at $DIR/reference_prop.rs:+88:13: +88:14 + debug c => _67; } } } @@ -208,275 +208,245 @@ } bb0: { -- StorageLive(_3); // scope 0 at $DIR/reference_prop.rs:+2:5: +7:6 - StorageLive(_4); // scope 1 at $DIR/reference_prop.rs:+3:13: +3:18 - _4 = const 5_usize; // scope 1 at $DIR/reference_prop.rs:+3:21: +3:28 -- StorageLive(_5); // scope 2 at $DIR/reference_prop.rs:+4:13: +4:14 -- _5 = &raw mut _4; // scope 2 at $DIR/reference_prop.rs:+4:17: +4:27 - StorageLive(_6); // scope 3 at $DIR/reference_prop.rs:+5:13: +5:14 -- _6 = (*_5); // scope 3 at $DIR/reference_prop.rs:+5:17: +5:19 -+ _6 = _4; // scope 3 at $DIR/reference_prop.rs:+5:17: +5:19 - StorageLive(_7); // scope 4 at $DIR/reference_prop.rs:+6:9: +6:19 - StorageLive(_8); // scope 4 at $DIR/reference_prop.rs:+6:16: +6:18 - _8 = (); // scope 4 at $DIR/reference_prop.rs:+6:16: +6:18 - _7 = opaque::<()>(move _8) -> bb1; // scope 4 at $DIR/reference_prop.rs:+6:9: +6:19 - // mir::Constant - // + span: $DIR/reference_prop.rs:304:9: 304:15 - // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value() } +- StorageLive(_3); + StorageLive(_4); + _4 = const 5_usize; +- StorageLive(_5); +- _5 = &raw mut _4; + StorageLive(_6); +- _6 = (*_5); ++ _6 = _4; + StorageLive(_7); + StorageLive(_8); + _8 = (); + _7 = opaque::<()>(move _8) -> bb1; } bb1: { - StorageDead(_8); // scope 4 at $DIR/reference_prop.rs:+6:18: +6:19 - StorageDead(_7); // scope 4 at $DIR/reference_prop.rs:+6:19: +6:20 -- _3 = const (); // scope 1 at $DIR/reference_prop.rs:+2:5: +7:6 - StorageDead(_6); // scope 3 at $DIR/reference_prop.rs:+7:5: +7:6 -- StorageDead(_5); // scope 2 at $DIR/reference_prop.rs:+7:5: +7:6 - StorageDead(_4); // scope 1 at $DIR/reference_prop.rs:+7:5: +7:6 -- StorageDead(_3); // scope 0 at $DIR/reference_prop.rs:+7:5: +7:6 -- StorageLive(_9); // scope 0 at $DIR/reference_prop.rs:+10:5: +18:6 - StorageLive(_10); // scope 5 at $DIR/reference_prop.rs:+11:13: +11:18 - _10 = const 5_usize; // scope 5 at $DIR/reference_prop.rs:+11:21: +11:28 - StorageLive(_11); // scope 6 at $DIR/reference_prop.rs:+12:13: +12:19 - _11 = const 7_usize; // scope 6 at $DIR/reference_prop.rs:+12:22: +12:29 - StorageLive(_12); // scope 7 at $DIR/reference_prop.rs:+13:13: +13:18 - _12 = &raw mut _10; // scope 7 at $DIR/reference_prop.rs:+13:21: +13:31 - StorageLive(_13); // scope 8 at $DIR/reference_prop.rs:+14:13: +14:24 - _13 = &raw mut _11; // scope 8 at $DIR/reference_prop.rs:+14:13: +14:24 - _12 = move _13; // scope 8 at $DIR/reference_prop.rs:+14:9: +14:24 - StorageDead(_13); // scope 8 at $DIR/reference_prop.rs:+14:23: +14:24 - StorageLive(_14); // scope 8 at $DIR/reference_prop.rs:+16:13: +16:14 - _14 = (*_12); // scope 8 at $DIR/reference_prop.rs:+16:17: +16:19 - StorageLive(_15); // scope 9 at $DIR/reference_prop.rs:+17:9: +17:19 - StorageLive(_16); // scope 9 at $DIR/reference_prop.rs:+17:16: +17:18 - _16 = (); // scope 9 at $DIR/reference_prop.rs:+17:16: +17:18 - _15 = opaque::<()>(move _16) -> bb2; // scope 9 at $DIR/reference_prop.rs:+17:9: +17:19 - // mir::Constant - // + span: $DIR/reference_prop.rs:315:9: 315:15 - // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value() } + StorageDead(_8); + StorageDead(_7); +- _3 = const (); + StorageDead(_6); +- StorageDead(_5); + StorageDead(_4); +- StorageDead(_3); +- StorageLive(_9); + StorageLive(_10); + _10 = const 5_usize; + StorageLive(_11); + _11 = const 7_usize; + StorageLive(_12); + _12 = &raw mut _10; + StorageLive(_13); + _13 = &raw mut _11; + _12 = move _13; + StorageDead(_13); + StorageLive(_14); + _14 = (*_12); + StorageLive(_15); + StorageLive(_16); + _16 = (); + _15 = opaque::<()>(move _16) -> bb2; } bb2: { - StorageDead(_16); // scope 9 at $DIR/reference_prop.rs:+17:18: +17:19 - StorageDead(_15); // scope 9 at $DIR/reference_prop.rs:+17:19: +17:20 -- _9 = const (); // scope 5 at $DIR/reference_prop.rs:+10:5: +18:6 - StorageDead(_14); // scope 8 at $DIR/reference_prop.rs:+18:5: +18:6 - StorageDead(_12); // scope 7 at $DIR/reference_prop.rs:+18:5: +18:6 - StorageDead(_11); // scope 6 at $DIR/reference_prop.rs:+18:5: +18:6 - StorageDead(_10); // scope 5 at $DIR/reference_prop.rs:+18:5: +18:6 -- StorageDead(_9); // scope 0 at $DIR/reference_prop.rs:+18:5: +18:6 -- StorageLive(_17); // scope 0 at $DIR/reference_prop.rs:+21:5: +27:6 - StorageLive(_18); // scope 10 at $DIR/reference_prop.rs:+22:13: +22:18 - _18 = const 5_usize; // scope 10 at $DIR/reference_prop.rs:+22:21: +22:28 - StorageLive(_19); // scope 11 at $DIR/reference_prop.rs:+23:13: +23:14 - _19 = &raw mut _18; // scope 11 at $DIR/reference_prop.rs:+23:17: +23:27 - StorageLive(_20); // scope 12 at $DIR/reference_prop.rs:+24:13: +24:14 - _20 = &_19; // scope 12 at $DIR/reference_prop.rs:+24:17: +24:19 - StorageLive(_21); // scope 13 at $DIR/reference_prop.rs:+25:13: +25:14 - _21 = (*_19); // scope 13 at $DIR/reference_prop.rs:+25:17: +25:19 - StorageLive(_22); // scope 14 at $DIR/reference_prop.rs:+26:9: +26:18 - StorageLive(_23); // scope 14 at $DIR/reference_prop.rs:+26:16: +26:17 - _23 = _20; // scope 14 at $DIR/reference_prop.rs:+26:16: +26:17 - _22 = opaque::<&*mut usize>(move _23) -> bb3; // scope 14 at $DIR/reference_prop.rs:+26:9: +26:18 - // mir::Constant - // + span: $DIR/reference_prop.rs:324:9: 324:15 - // + literal: Const { ty: fn(&*mut usize) {opaque::<&*mut usize>}, val: Value() } + StorageDead(_16); + StorageDead(_15); +- _9 = const (); + StorageDead(_14); + StorageDead(_12); + StorageDead(_11); + StorageDead(_10); +- StorageDead(_9); +- StorageLive(_17); + StorageLive(_18); + _18 = const 5_usize; + StorageLive(_19); + _19 = &raw mut _18; + StorageLive(_20); + _20 = &_19; + StorageLive(_21); + _21 = (*_19); + StorageLive(_22); + StorageLive(_23); + _23 = _20; + _22 = opaque::<&*mut usize>(move _23) -> bb3; } bb3: { - StorageDead(_23); // scope 14 at $DIR/reference_prop.rs:+26:17: +26:18 - StorageDead(_22); // scope 14 at $DIR/reference_prop.rs:+26:18: +26:19 -- _17 = const (); // scope 10 at $DIR/reference_prop.rs:+21:5: +27:6 - StorageDead(_21); // scope 13 at $DIR/reference_prop.rs:+27:5: +27:6 - StorageDead(_20); // scope 12 at $DIR/reference_prop.rs:+27:5: +27:6 - StorageDead(_19); // scope 11 at $DIR/reference_prop.rs:+27:5: +27:6 - StorageDead(_18); // scope 10 at $DIR/reference_prop.rs:+27:5: +27:6 -- StorageDead(_17); // scope 0 at $DIR/reference_prop.rs:+27:5: +27:6 -- StorageLive(_24); // scope 0 at $DIR/reference_prop.rs:+30:5: +36:6 - StorageLive(_25); // scope 15 at $DIR/reference_prop.rs:+31:13: +31:18 - _25 = const 5_usize; // scope 15 at $DIR/reference_prop.rs:+31:21: +31:28 - StorageLive(_26); // scope 16 at $DIR/reference_prop.rs:+32:13: +32:18 - _26 = &raw mut _25; // scope 16 at $DIR/reference_prop.rs:+32:21: +32:31 - StorageLive(_27); // scope 17 at $DIR/reference_prop.rs:+33:13: +33:14 - _27 = &raw mut _26; // scope 17 at $DIR/reference_prop.rs:+33:17: +33:27 - StorageLive(_28); // scope 18 at $DIR/reference_prop.rs:+34:13: +34:14 - _28 = (*_26); // scope 18 at $DIR/reference_prop.rs:+34:17: +34:19 - StorageLive(_29); // scope 19 at $DIR/reference_prop.rs:+35:9: +35:18 - StorageLive(_30); // scope 19 at $DIR/reference_prop.rs:+35:16: +35:17 - _30 = _27; // scope 19 at $DIR/reference_prop.rs:+35:16: +35:17 - _29 = opaque::<*mut *mut usize>(move _30) -> bb4; // scope 19 at $DIR/reference_prop.rs:+35:9: +35:18 - // mir::Constant - // + span: $DIR/reference_prop.rs:333:9: 333:15 - // + literal: Const { ty: fn(*mut *mut usize) {opaque::<*mut *mut usize>}, val: Value() } + StorageDead(_23); + StorageDead(_22); +- _17 = const (); + StorageDead(_21); + StorageDead(_20); + StorageDead(_19); + StorageDead(_18); +- StorageDead(_17); +- StorageLive(_24); + StorageLive(_25); + _25 = const 5_usize; + StorageLive(_26); + _26 = &raw mut _25; + StorageLive(_27); + _27 = &raw mut _26; + StorageLive(_28); + _28 = (*_26); + StorageLive(_29); + StorageLive(_30); + _30 = _27; + _29 = opaque::<*mut *mut usize>(move _30) -> bb4; } bb4: { - StorageDead(_30); // scope 19 at $DIR/reference_prop.rs:+35:17: +35:18 - StorageDead(_29); // scope 19 at $DIR/reference_prop.rs:+35:18: +35:19 -- _24 = const (); // scope 15 at $DIR/reference_prop.rs:+30:5: +36:6 - StorageDead(_28); // scope 18 at $DIR/reference_prop.rs:+36:5: +36:6 - StorageDead(_27); // scope 17 at $DIR/reference_prop.rs:+36:5: +36:6 - StorageDead(_26); // scope 16 at $DIR/reference_prop.rs:+36:5: +36:6 - StorageDead(_25); // scope 15 at $DIR/reference_prop.rs:+36:5: +36:6 -- StorageDead(_24); // scope 0 at $DIR/reference_prop.rs:+36:5: +36:6 -- StorageLive(_31); // scope 0 at $DIR/reference_prop.rs:+39:5: +44:6 - StorageLive(_32); // scope 20 at $DIR/reference_prop.rs:+40:13: +40:18 - _32 = const 7_usize; // scope 20 at $DIR/reference_prop.rs:+40:21: +40:28 - StorageLive(_33); // scope 21 at $DIR/reference_prop.rs:+41:13: +41:14 - _33 = &raw mut _32; // scope 21 at $DIR/reference_prop.rs:+41:17: +41:27 - StorageLive(_34); // scope 22 at $DIR/reference_prop.rs:+42:13: +42:14 - _34 = (*_33); // scope 22 at $DIR/reference_prop.rs:+42:17: +42:19 - StorageLive(_35); // scope 23 at $DIR/reference_prop.rs:+43:9: +43:18 - StorageLive(_36); // scope 23 at $DIR/reference_prop.rs:+43:16: +43:17 - _36 = _33; // scope 23 at $DIR/reference_prop.rs:+43:16: +43:17 - _35 = opaque::<*mut usize>(move _36) -> bb5; // scope 23 at $DIR/reference_prop.rs:+43:9: +43:18 - // mir::Constant - // + span: $DIR/reference_prop.rs:341:9: 341:15 - // + literal: Const { ty: fn(*mut usize) {opaque::<*mut usize>}, val: Value() } + StorageDead(_30); + StorageDead(_29); +- _24 = const (); + StorageDead(_28); + StorageDead(_27); + StorageDead(_26); + StorageDead(_25); +- StorageDead(_24); +- StorageLive(_31); + StorageLive(_32); + _32 = const 7_usize; + StorageLive(_33); + _33 = &raw mut _32; + StorageLive(_34); + _34 = (*_33); + StorageLive(_35); + StorageLive(_36); + _36 = _33; + _35 = opaque::<*mut usize>(move _36) -> bb5; } bb5: { - StorageDead(_36); // scope 23 at $DIR/reference_prop.rs:+43:17: +43:18 - StorageDead(_35); // scope 23 at $DIR/reference_prop.rs:+43:18: +43:19 -- _31 = const (); // scope 20 at $DIR/reference_prop.rs:+39:5: +44:6 - StorageDead(_34); // scope 22 at $DIR/reference_prop.rs:+44:5: +44:6 - StorageDead(_33); // scope 21 at $DIR/reference_prop.rs:+44:5: +44:6 - StorageDead(_32); // scope 20 at $DIR/reference_prop.rs:+44:5: +44:6 -- StorageDead(_31); // scope 0 at $DIR/reference_prop.rs:+44:5: +44:6 -- StorageLive(_37); // scope 0 at $DIR/reference_prop.rs:+47:5: +57:6 - StorageLive(_38); // scope 24 at $DIR/reference_prop.rs:+48:13: +48:18 - _38 = const 7_usize; // scope 24 at $DIR/reference_prop.rs:+48:21: +48:28 - StorageLive(_39); // scope 25 at $DIR/reference_prop.rs:+49:13: +49:15 - _39 = &raw mut _38; // scope 25 at $DIR/reference_prop.rs:+49:18: +49:28 - StorageLive(_40); // scope 26 at $DIR/reference_prop.rs:+50:13: +50:14 - _40 = (*_39); // scope 26 at $DIR/reference_prop.rs:+50:17: +50:20 - StorageLive(_41); // scope 27 at $DIR/reference_prop.rs:+51:13: +51:15 - _41 = _39; // scope 27 at $DIR/reference_prop.rs:+51:18: +51:20 - StorageLive(_42); // scope 28 at $DIR/reference_prop.rs:+52:13: +52:15 - _42 = (*_41); // scope 28 at $DIR/reference_prop.rs:+52:18: +52:21 - StorageLive(_43); // scope 29 at $DIR/reference_prop.rs:+53:13: +53:15 - _43 = _41; // scope 29 at $DIR/reference_prop.rs:+53:18: +53:20 - StorageLive(_44); // scope 30 at $DIR/reference_prop.rs:+56:9: +56:19 - StorageLive(_45); // scope 30 at $DIR/reference_prop.rs:+56:16: +56:18 - _45 = _43; // scope 30 at $DIR/reference_prop.rs:+56:16: +56:18 - _44 = opaque::<*mut usize>(move _45) -> bb6; // scope 30 at $DIR/reference_prop.rs:+56:9: +56:19 - // mir::Constant - // + span: $DIR/reference_prop.rs:354:9: 354:15 - // + literal: Const { ty: fn(*mut usize) {opaque::<*mut usize>}, val: Value() } + StorageDead(_36); + StorageDead(_35); +- _31 = const (); + StorageDead(_34); + StorageDead(_33); + StorageDead(_32); +- StorageDead(_31); +- StorageLive(_37); + StorageLive(_38); + _38 = const 7_usize; + StorageLive(_39); + _39 = &raw mut _38; + StorageLive(_40); + _40 = (*_39); + StorageLive(_41); + _41 = _39; + StorageLive(_42); + _42 = (*_41); + StorageLive(_43); + _43 = _41; + StorageLive(_44); + StorageLive(_45); + _45 = _43; + _44 = opaque::<*mut usize>(move _45) -> bb6; } bb6: { - StorageDead(_45); // scope 30 at $DIR/reference_prop.rs:+56:18: +56:19 - StorageDead(_44); // scope 30 at $DIR/reference_prop.rs:+56:19: +56:20 -- _37 = const (); // scope 24 at $DIR/reference_prop.rs:+47:5: +57:6 - StorageDead(_43); // scope 29 at $DIR/reference_prop.rs:+57:5: +57:6 - StorageDead(_42); // scope 28 at $DIR/reference_prop.rs:+57:5: +57:6 - StorageDead(_41); // scope 27 at $DIR/reference_prop.rs:+57:5: +57:6 - StorageDead(_40); // scope 26 at $DIR/reference_prop.rs:+57:5: +57:6 - StorageDead(_39); // scope 25 at $DIR/reference_prop.rs:+57:5: +57:6 - StorageDead(_38); // scope 24 at $DIR/reference_prop.rs:+57:5: +57:6 -- StorageDead(_37); // scope 0 at $DIR/reference_prop.rs:+57:5: +57:6 -- StorageLive(_46); // scope 0 at $DIR/reference_prop.rs:+60:5: +64:6 -- StorageLive(_47); // scope 31 at $DIR/reference_prop.rs:+61:13: +61:14 -- _47 = &raw mut (*_1); // scope 31 at $DIR/reference_prop.rs:+61:17: +61:33 - StorageLive(_48); // scope 32 at $DIR/reference_prop.rs:+62:13: +62:14 -- _48 = (*_47); // scope 32 at $DIR/reference_prop.rs:+62:17: +62:19 -+ _48 = (*_1); // scope 32 at $DIR/reference_prop.rs:+62:17: +62:19 - StorageLive(_49); // scope 33 at $DIR/reference_prop.rs:+63:9: +63:19 - StorageLive(_50); // scope 33 at $DIR/reference_prop.rs:+63:16: +63:18 - _50 = (); // scope 33 at $DIR/reference_prop.rs:+63:16: +63:18 - _49 = opaque::<()>(move _50) -> bb7; // scope 33 at $DIR/reference_prop.rs:+63:9: +63:19 - // mir::Constant - // + span: $DIR/reference_prop.rs:361:9: 361:15 - // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value() } + StorageDead(_45); + StorageDead(_44); +- _37 = const (); + StorageDead(_43); + StorageDead(_42); + StorageDead(_41); + StorageDead(_40); + StorageDead(_39); + StorageDead(_38); +- StorageDead(_37); +- StorageLive(_46); +- StorageLive(_47); +- _47 = &raw mut (*_1); + StorageLive(_48); +- _48 = (*_47); ++ _48 = (*_1); + StorageLive(_49); + StorageLive(_50); + _50 = (); + _49 = opaque::<()>(move _50) -> bb7; } bb7: { - StorageDead(_50); // scope 33 at $DIR/reference_prop.rs:+63:18: +63:19 - StorageDead(_49); // scope 33 at $DIR/reference_prop.rs:+63:19: +63:20 -- _46 = const (); // scope 31 at $DIR/reference_prop.rs:+60:5: +64:6 - StorageDead(_48); // scope 32 at $DIR/reference_prop.rs:+64:5: +64:6 -- StorageDead(_47); // scope 31 at $DIR/reference_prop.rs:+64:5: +64:6 -- StorageDead(_46); // scope 0 at $DIR/reference_prop.rs:+64:5: +64:6 -- StorageLive(_51); // scope 0 at $DIR/reference_prop.rs:+67:5: +72:6 - StorageLive(_52); // scope 34 at $DIR/reference_prop.rs:+68:13: +68:14 - _52 = &raw mut (*_2); // scope 34 at $DIR/reference_prop.rs:+68:17: +68:35 - StorageLive(_53); // scope 35 at $DIR/reference_prop.rs:+69:20: +69:36 - _53 = &raw mut (*_1); // scope 35 at $DIR/reference_prop.rs:+69:20: +69:36 - _2 = move _53; // scope 35 at $DIR/reference_prop.rs:+69:9: +69:36 - StorageDead(_53); // scope 35 at $DIR/reference_prop.rs:+69:35: +69:36 - StorageLive(_54); // scope 35 at $DIR/reference_prop.rs:+70:13: +70:14 - _54 = (*_52); // scope 35 at $DIR/reference_prop.rs:+70:17: +70:19 - StorageLive(_55); // scope 36 at $DIR/reference_prop.rs:+71:9: +71:19 - StorageLive(_56); // scope 36 at $DIR/reference_prop.rs:+71:16: +71:18 - _56 = (); // scope 36 at $DIR/reference_prop.rs:+71:16: +71:18 - _55 = opaque::<()>(move _56) -> bb8; // scope 36 at $DIR/reference_prop.rs:+71:9: +71:19 - // mir::Constant - // + span: $DIR/reference_prop.rs:369:9: 369:15 - // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value() } + StorageDead(_50); + StorageDead(_49); +- _46 = const (); + StorageDead(_48); +- StorageDead(_47); +- StorageDead(_46); +- StorageLive(_51); + StorageLive(_52); + _52 = &raw mut (*_2); + StorageLive(_53); + _53 = &raw mut (*_1); + _2 = move _53; + StorageDead(_53); + StorageLive(_54); + _54 = (*_52); + StorageLive(_55); + StorageLive(_56); + _56 = (); + _55 = opaque::<()>(move _56) -> bb8; } bb8: { - StorageDead(_56); // scope 36 at $DIR/reference_prop.rs:+71:18: +71:19 - StorageDead(_55); // scope 36 at $DIR/reference_prop.rs:+71:19: +71:20 -- _51 = const (); // scope 34 at $DIR/reference_prop.rs:+67:5: +72:6 - StorageDead(_54); // scope 35 at $DIR/reference_prop.rs:+72:5: +72:6 - StorageDead(_52); // scope 34 at $DIR/reference_prop.rs:+72:5: +72:6 -- StorageDead(_51); // scope 0 at $DIR/reference_prop.rs:+72:5: +72:6 -- StorageLive(_57); // scope 0 at $DIR/reference_prop.rs:+75:5: +81:6 - StorageLive(_58); // scope 37 at $DIR/reference_prop.rs:+76:13: +76:18 - _58 = const 5_usize; // scope 37 at $DIR/reference_prop.rs:+76:21: +76:28 -- StorageLive(_59); // scope 38 at $DIR/reference_prop.rs:+77:13: +77:14 -- _59 = &raw mut _58; // scope 38 at $DIR/reference_prop.rs:+77:17: +77:27 -- StorageLive(_60); // scope 39 at $DIR/reference_prop.rs:+78:13: +78:14 -- _60 = &_59; // scope 39 at $DIR/reference_prop.rs:+78:17: +78:19 - StorageLive(_61); // scope 40 at $DIR/reference_prop.rs:+79:13: +79:14 -- _61 = (*_59); // scope 40 at $DIR/reference_prop.rs:+79:17: +79:19 -+ _61 = _58; // scope 40 at $DIR/reference_prop.rs:+79:17: +79:19 - StorageLive(_62); // scope 41 at $DIR/reference_prop.rs:+80:9: +80:19 - StorageLive(_63); // scope 41 at $DIR/reference_prop.rs:+80:16: +80:18 - _63 = (); // scope 41 at $DIR/reference_prop.rs:+80:16: +80:18 - _62 = opaque::<()>(move _63) -> bb9; // scope 41 at $DIR/reference_prop.rs:+80:9: +80:19 - // mir::Constant - // + span: $DIR/reference_prop.rs:378:9: 378:15 - // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value() } + StorageDead(_56); + StorageDead(_55); +- _51 = const (); + StorageDead(_54); + StorageDead(_52); +- StorageDead(_51); +- StorageLive(_57); + StorageLive(_58); + _58 = const 5_usize; +- StorageLive(_59); +- _59 = &raw mut _58; +- StorageLive(_60); +- _60 = &_59; + StorageLive(_61); +- _61 = (*_59); ++ _61 = _58; + StorageLive(_62); + StorageLive(_63); + _63 = (); + _62 = opaque::<()>(move _63) -> bb9; } bb9: { - StorageDead(_63); // scope 41 at $DIR/reference_prop.rs:+80:18: +80:19 - StorageDead(_62); // scope 41 at $DIR/reference_prop.rs:+80:19: +80:20 -- _57 = const (); // scope 37 at $DIR/reference_prop.rs:+75:5: +81:6 - StorageDead(_61); // scope 40 at $DIR/reference_prop.rs:+81:5: +81:6 -- StorageDead(_60); // scope 39 at $DIR/reference_prop.rs:+81:5: +81:6 -- StorageDead(_59); // scope 38 at $DIR/reference_prop.rs:+81:5: +81:6 - StorageDead(_58); // scope 37 at $DIR/reference_prop.rs:+81:5: +81:6 -- StorageDead(_57); // scope 0 at $DIR/reference_prop.rs:+81:5: +81:6 - StorageLive(_64); // scope 42 at $DIR/reference_prop.rs:+85:13: +85:18 - _64 = const 5_usize; // scope 42 at $DIR/reference_prop.rs:+85:21: +85:28 -- StorageLive(_65); // scope 43 at $DIR/reference_prop.rs:+86:13: +86:18 -- _65 = &raw mut _64; // scope 43 at $DIR/reference_prop.rs:+86:21: +86:31 -- StorageLive(_66); // scope 44 at $DIR/reference_prop.rs:+87:13: +87:14 -- _66 = &mut _65; // scope 44 at $DIR/reference_prop.rs:+87:17: +87:23 - StorageLive(_67); // scope 45 at $DIR/reference_prop.rs:+88:13: +88:14 -- _67 = (*_65); // scope 45 at $DIR/reference_prop.rs:+88:17: +88:19 -+ _67 = _64; // scope 45 at $DIR/reference_prop.rs:+88:17: +88:19 - StorageLive(_68); // scope 46 at $DIR/reference_prop.rs:+89:9: +89:19 - StorageLive(_69); // scope 46 at $DIR/reference_prop.rs:+89:16: +89:18 - _69 = (); // scope 46 at $DIR/reference_prop.rs:+89:16: +89:18 - _68 = opaque::<()>(move _69) -> bb10; // scope 46 at $DIR/reference_prop.rs:+89:9: +89:19 - // mir::Constant - // + span: $DIR/reference_prop.rs:387:9: 387:15 - // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value() } + StorageDead(_63); + StorageDead(_62); +- _57 = const (); + StorageDead(_61); +- StorageDead(_60); +- StorageDead(_59); + StorageDead(_58); +- StorageDead(_57); + StorageLive(_64); + _64 = const 5_usize; +- StorageLive(_65); +- _65 = &raw mut _64; +- StorageLive(_66); +- _66 = &mut _65; + StorageLive(_67); +- _67 = (*_65); ++ _67 = _64; + StorageLive(_68); + StorageLive(_69); + _69 = (); + _68 = opaque::<()>(move _69) -> bb10; } bb10: { - StorageDead(_69); // scope 46 at $DIR/reference_prop.rs:+89:18: +89:19 - StorageDead(_68); // scope 46 at $DIR/reference_prop.rs:+89:19: +89:20 - _0 = const (); // scope 42 at $DIR/reference_prop.rs:+84:5: +90:6 - StorageDead(_67); // scope 45 at $DIR/reference_prop.rs:+90:5: +90:6 -- StorageDead(_66); // scope 44 at $DIR/reference_prop.rs:+90:5: +90:6 -- StorageDead(_65); // scope 43 at $DIR/reference_prop.rs:+90:5: +90:6 - StorageDead(_64); // scope 42 at $DIR/reference_prop.rs:+90:5: +90:6 - return; // scope 0 at $DIR/reference_prop.rs:+91:2: +91:2 + StorageDead(_69); + StorageDead(_68); + _0 = const (); + StorageDead(_67); +- StorageDead(_66); +- StorageDead(_65); + StorageDead(_64); + return; } } diff --git a/tests/mir-opt/reference_prop.unique_with_copies.ReferencePropagation.diff b/tests/mir-opt/reference_prop.unique_with_copies.ReferencePropagation.diff index b754aff47550d..b4c34c07022b0 100644 --- a/tests/mir-opt/reference_prop.unique_with_copies.ReferencePropagation.diff +++ b/tests/mir-opt/reference_prop.unique_with_copies.ReferencePropagation.diff @@ -2,66 +2,60 @@ + // MIR for `unique_with_copies` after ReferencePropagation fn unique_with_copies() -> () { - let mut _0: (); // return place in scope 0 at $DIR/reference_prop.rs:+0:25: +0:25 - let _1: *mut i32; // in scope 0 at $DIR/reference_prop.rs:+1:9: +1:10 - let mut _2: i32; // in scope 0 at $DIR/reference_prop.rs:+2:13: +2:18 - let _4: (); // in scope 0 at $DIR/reference_prop.rs:+5:18: +5:28 - let mut _5: i32; // in scope 0 at $DIR/reference_prop.rs:+5:25: +5:27 - let _6: (); // in scope 0 at $DIR/reference_prop.rs:+9:14: +9:24 - let mut _7: i32; // in scope 0 at $DIR/reference_prop.rs:+9:21: +9:23 + let mut _0: (); + let _1: *mut i32; + let mut _2: i32; + let _4: (); + let mut _5: i32; + let _6: (); + let mut _7: i32; scope 1 { -- debug y => _1; // in scope 1 at $DIR/reference_prop.rs:+1:9: +1:10 -+ debug y => _3; // in scope 1 at $DIR/reference_prop.rs:+1:9: +1:10 +- debug y => _1; ++ debug y => _3; scope 5 { } } scope 2 { - debug a => _2; // in scope 2 at $DIR/reference_prop.rs:+2:13: +2:18 - let _3: *mut i32; // in scope 2 at $DIR/reference_prop.rs:+3:13: +3:14 + debug a => _2; + let _3: *mut i32; scope 3 { - debug x => _3; // in scope 3 at $DIR/reference_prop.rs:+3:13: +3:14 + debug x => _3; scope 4 { } } } bb0: { -- StorageLive(_1); // scope 0 at $DIR/reference_prop.rs:+1:9: +1:10 - StorageLive(_2); // scope 0 at $DIR/reference_prop.rs:+2:13: +2:18 - _2 = const 0_i32; // scope 0 at $DIR/reference_prop.rs:+2:21: +2:22 -- StorageLive(_3); // scope 2 at $DIR/reference_prop.rs:+3:13: +3:14 - _3 = &raw mut _2; // scope 2 at $DIR/reference_prop.rs:+3:17: +3:27 - StorageLive(_4); // scope 3 at $DIR/reference_prop.rs:+5:9: +5:30 - StorageLive(_5); // scope 4 at $DIR/reference_prop.rs:+5:25: +5:27 - _5 = (*_3); // scope 4 at $DIR/reference_prop.rs:+5:25: +5:27 - _4 = opaque::(move _5) -> bb1; // scope 4 at $DIR/reference_prop.rs:+5:18: +5:28 - // mir::Constant - // + span: $DIR/reference_prop.rs:524:18: 524:24 - // + literal: Const { ty: fn(i32) {opaque::}, val: Value() } +- StorageLive(_1); + StorageLive(_2); + _2 = const 0_i32; +- StorageLive(_3); + _3 = &raw mut _2; + StorageLive(_4); + StorageLive(_5); + _5 = (*_3); + _4 = opaque::(move _5) -> bb1; } bb1: { - StorageDead(_5); // scope 4 at $DIR/reference_prop.rs:+5:27: +5:28 - StorageDead(_4); // scope 3 at $DIR/reference_prop.rs:+5:30: +5:31 -- _1 = _3; // scope 3 at $DIR/reference_prop.rs:+6:9: +6:10 -- StorageDead(_3); // scope 2 at $DIR/reference_prop.rs:+7:5: +7:6 - StorageDead(_2); // scope 0 at $DIR/reference_prop.rs:+7:5: +7:6 - StorageLive(_6); // scope 1 at $DIR/reference_prop.rs:+9:5: +9:26 - StorageLive(_7); // scope 5 at $DIR/reference_prop.rs:+9:21: +9:23 -- _7 = (*_1); // scope 5 at $DIR/reference_prop.rs:+9:21: +9:23 -+ _7 = (*_3); // scope 5 at $DIR/reference_prop.rs:+9:21: +9:23 - _6 = opaque::(move _7) -> bb2; // scope 5 at $DIR/reference_prop.rs:+9:14: +9:24 - // mir::Constant - // + span: $DIR/reference_prop.rs:528:14: 528:20 - // + literal: Const { ty: fn(i32) {opaque::}, val: Value() } + StorageDead(_5); + StorageDead(_4); +- _1 = _3; +- StorageDead(_3); + StorageDead(_2); + StorageLive(_6); + StorageLive(_7); +- _7 = (*_1); ++ _7 = (*_3); + _6 = opaque::(move _7) -> bb2; } bb2: { - StorageDead(_7); // scope 5 at $DIR/reference_prop.rs:+9:23: +9:24 - StorageDead(_6); // scope 1 at $DIR/reference_prop.rs:+9:26: +9:27 - _0 = const (); // scope 0 at $DIR/reference_prop.rs:+0:25: +10:2 -- StorageDead(_1); // scope 0 at $DIR/reference_prop.rs:+10:1: +10:2 - return; // scope 0 at $DIR/reference_prop.rs:+10:2: +10:2 + StorageDead(_7); + StorageDead(_6); + _0 = const (); +- StorageDead(_1); + return; } } diff --git a/tests/mir-opt/remove_fake_borrows.match_guard.CleanupPostBorrowck.panic-abort.diff b/tests/mir-opt/remove_fake_borrows.match_guard.CleanupPostBorrowck.panic-abort.diff index 0b3da98a5a192..33322c41b0185 100644 --- a/tests/mir-opt/remove_fake_borrows.match_guard.CleanupPostBorrowck.panic-abort.diff +++ b/tests/mir-opt/remove_fake_borrows.match_guard.CleanupPostBorrowck.panic-abort.diff @@ -2,73 +2,73 @@ + // MIR for `match_guard` after CleanupPostBorrowck fn match_guard(_1: Option<&&i32>, _2: bool) -> i32 { - debug x => _1; // in scope 0 at $DIR/remove_fake_borrows.rs:+0:16: +0:17 - debug c => _2; // in scope 0 at $DIR/remove_fake_borrows.rs:+0:34: +0:35 - let mut _0: i32; // return place in scope 0 at $DIR/remove_fake_borrows.rs:+0:46: +0:49 - let mut _3: isize; // in scope 0 at $DIR/remove_fake_borrows.rs:+2:9: +2:16 - let mut _4: &std::option::Option<&&i32>; // in scope 0 at $DIR/remove_fake_borrows.rs:+1:11: +1:12 - let mut _5: &&i32; // in scope 0 at $DIR/remove_fake_borrows.rs:+1:11: +1:12 - let mut _6: &&&i32; // in scope 0 at $DIR/remove_fake_borrows.rs:+1:11: +1:12 - let mut _7: &i32; // in scope 0 at $DIR/remove_fake_borrows.rs:+1:11: +1:12 - let mut _8: bool; // in scope 0 at $DIR/remove_fake_borrows.rs:+2:20: +2:21 + debug x => _1; + debug c => _2; + let mut _0: i32; + let mut _3: isize; + let mut _4: &std::option::Option<&&i32>; + let mut _5: &&i32; + let mut _6: &&&i32; + let mut _7: &i32; + let mut _8: bool; bb0: { -- FakeRead(ForMatchedPlace(None), _1); // scope 0 at $DIR/remove_fake_borrows.rs:+1:11: +1:12 -+ nop; // scope 0 at $DIR/remove_fake_borrows.rs:+1:11: +1:12 - _3 = discriminant(_1); // scope 0 at $DIR/remove_fake_borrows.rs:+1:11: +1:12 - switchInt(move _3) -> [1: bb2, otherwise: bb1]; // scope 0 at $DIR/remove_fake_borrows.rs:+1:5: +1:12 +- FakeRead(ForMatchedPlace(None), _1); ++ nop; + _3 = discriminant(_1); + switchInt(move _3) -> [1: bb2, otherwise: bb1]; } bb1: { - _0 = const 1_i32; // scope 0 at $DIR/remove_fake_borrows.rs:+3:14: +3:15 - goto -> bb7; // scope 0 at $DIR/remove_fake_borrows.rs:+3:14: +3:15 + _0 = const 1_i32; + goto -> bb7; } bb2: { - switchInt((*(*((_1 as Some).0: &&i32)))) -> [0: bb3, otherwise: bb1]; // scope 0 at $DIR/remove_fake_borrows.rs:+1:5: +1:12 + switchInt((*(*((_1 as Some).0: &&i32)))) -> [0: bb3, otherwise: bb1]; } bb3: { -- falseEdge -> [real: bb4, imaginary: bb1]; // scope 0 at $DIR/remove_fake_borrows.rs:+2:9: +2:16 -+ goto -> bb4; // scope 0 at $DIR/remove_fake_borrows.rs:+2:9: +2:16 +- falseEdge -> [real: bb4, imaginary: bb1]; ++ goto -> bb4; } bb4: { -- _4 = &shallow _1; // scope 0 at $DIR/remove_fake_borrows.rs:+1:11: +1:12 -- _5 = &shallow (*((_1 as Some).0: &&i32)); // scope 0 at $DIR/remove_fake_borrows.rs:+1:11: +1:12 -- _6 = &shallow ((_1 as Some).0: &&i32); // scope 0 at $DIR/remove_fake_borrows.rs:+1:11: +1:12 -- _7 = &shallow (*(*((_1 as Some).0: &&i32))); // scope 0 at $DIR/remove_fake_borrows.rs:+1:11: +1:12 -+ nop; // scope 0 at $DIR/remove_fake_borrows.rs:+1:11: +1:12 -+ nop; // scope 0 at $DIR/remove_fake_borrows.rs:+1:11: +1:12 -+ nop; // scope 0 at $DIR/remove_fake_borrows.rs:+1:11: +1:12 -+ nop; // scope 0 at $DIR/remove_fake_borrows.rs:+1:11: +1:12 - StorageLive(_8); // scope 0 at $DIR/remove_fake_borrows.rs:+2:20: +2:21 - _8 = _2; // scope 0 at $DIR/remove_fake_borrows.rs:+2:20: +2:21 - switchInt(move _8) -> [0: bb6, otherwise: bb5]; // scope 0 at $DIR/remove_fake_borrows.rs:+2:20: +2:21 +- _4 = &shallow _1; +- _5 = &shallow (*((_1 as Some).0: &&i32)); +- _6 = &shallow ((_1 as Some).0: &&i32); +- _7 = &shallow (*(*((_1 as Some).0: &&i32))); ++ nop; ++ nop; ++ nop; ++ nop; + StorageLive(_8); + _8 = _2; + switchInt(move _8) -> [0: bb6, otherwise: bb5]; } bb5: { - StorageDead(_8); // scope 0 at $DIR/remove_fake_borrows.rs:+2:20: +2:21 -- FakeRead(ForMatchGuard, _4); // scope 0 at $DIR/remove_fake_borrows.rs:+2:20: +2:21 -- FakeRead(ForMatchGuard, _5); // scope 0 at $DIR/remove_fake_borrows.rs:+2:20: +2:21 -- FakeRead(ForMatchGuard, _6); // scope 0 at $DIR/remove_fake_borrows.rs:+2:20: +2:21 -- FakeRead(ForMatchGuard, _7); // scope 0 at $DIR/remove_fake_borrows.rs:+2:20: +2:21 -+ nop; // scope 0 at $DIR/remove_fake_borrows.rs:+2:20: +2:21 -+ nop; // scope 0 at $DIR/remove_fake_borrows.rs:+2:20: +2:21 -+ nop; // scope 0 at $DIR/remove_fake_borrows.rs:+2:20: +2:21 -+ nop; // scope 0 at $DIR/remove_fake_borrows.rs:+2:20: +2:21 - _0 = const 0_i32; // scope 0 at $DIR/remove_fake_borrows.rs:+2:25: +2:26 - goto -> bb7; // scope 0 at $DIR/remove_fake_borrows.rs:+2:25: +2:26 + StorageDead(_8); +- FakeRead(ForMatchGuard, _4); +- FakeRead(ForMatchGuard, _5); +- FakeRead(ForMatchGuard, _6); +- FakeRead(ForMatchGuard, _7); ++ nop; ++ nop; ++ nop; ++ nop; + _0 = const 0_i32; + goto -> bb7; } bb6: { - StorageDead(_8); // scope 0 at $DIR/remove_fake_borrows.rs:+2:20: +2:21 -- falseEdge -> [real: bb1, imaginary: bb1]; // scope 0 at $DIR/remove_fake_borrows.rs:+2:20: +2:21 -+ goto -> bb1; // scope 0 at $DIR/remove_fake_borrows.rs:+2:20: +2:21 + StorageDead(_8); +- falseEdge -> [real: bb1, imaginary: bb1]; ++ goto -> bb1; } bb7: { - return; // scope 0 at $DIR/remove_fake_borrows.rs:+5:2: +5:2 + return; } } diff --git a/tests/mir-opt/remove_fake_borrows.match_guard.CleanupPostBorrowck.panic-unwind.diff b/tests/mir-opt/remove_fake_borrows.match_guard.CleanupPostBorrowck.panic-unwind.diff index 0b3da98a5a192..33322c41b0185 100644 --- a/tests/mir-opt/remove_fake_borrows.match_guard.CleanupPostBorrowck.panic-unwind.diff +++ b/tests/mir-opt/remove_fake_borrows.match_guard.CleanupPostBorrowck.panic-unwind.diff @@ -2,73 +2,73 @@ + // MIR for `match_guard` after CleanupPostBorrowck fn match_guard(_1: Option<&&i32>, _2: bool) -> i32 { - debug x => _1; // in scope 0 at $DIR/remove_fake_borrows.rs:+0:16: +0:17 - debug c => _2; // in scope 0 at $DIR/remove_fake_borrows.rs:+0:34: +0:35 - let mut _0: i32; // return place in scope 0 at $DIR/remove_fake_borrows.rs:+0:46: +0:49 - let mut _3: isize; // in scope 0 at $DIR/remove_fake_borrows.rs:+2:9: +2:16 - let mut _4: &std::option::Option<&&i32>; // in scope 0 at $DIR/remove_fake_borrows.rs:+1:11: +1:12 - let mut _5: &&i32; // in scope 0 at $DIR/remove_fake_borrows.rs:+1:11: +1:12 - let mut _6: &&&i32; // in scope 0 at $DIR/remove_fake_borrows.rs:+1:11: +1:12 - let mut _7: &i32; // in scope 0 at $DIR/remove_fake_borrows.rs:+1:11: +1:12 - let mut _8: bool; // in scope 0 at $DIR/remove_fake_borrows.rs:+2:20: +2:21 + debug x => _1; + debug c => _2; + let mut _0: i32; + let mut _3: isize; + let mut _4: &std::option::Option<&&i32>; + let mut _5: &&i32; + let mut _6: &&&i32; + let mut _7: &i32; + let mut _8: bool; bb0: { -- FakeRead(ForMatchedPlace(None), _1); // scope 0 at $DIR/remove_fake_borrows.rs:+1:11: +1:12 -+ nop; // scope 0 at $DIR/remove_fake_borrows.rs:+1:11: +1:12 - _3 = discriminant(_1); // scope 0 at $DIR/remove_fake_borrows.rs:+1:11: +1:12 - switchInt(move _3) -> [1: bb2, otherwise: bb1]; // scope 0 at $DIR/remove_fake_borrows.rs:+1:5: +1:12 +- FakeRead(ForMatchedPlace(None), _1); ++ nop; + _3 = discriminant(_1); + switchInt(move _3) -> [1: bb2, otherwise: bb1]; } bb1: { - _0 = const 1_i32; // scope 0 at $DIR/remove_fake_borrows.rs:+3:14: +3:15 - goto -> bb7; // scope 0 at $DIR/remove_fake_borrows.rs:+3:14: +3:15 + _0 = const 1_i32; + goto -> bb7; } bb2: { - switchInt((*(*((_1 as Some).0: &&i32)))) -> [0: bb3, otherwise: bb1]; // scope 0 at $DIR/remove_fake_borrows.rs:+1:5: +1:12 + switchInt((*(*((_1 as Some).0: &&i32)))) -> [0: bb3, otherwise: bb1]; } bb3: { -- falseEdge -> [real: bb4, imaginary: bb1]; // scope 0 at $DIR/remove_fake_borrows.rs:+2:9: +2:16 -+ goto -> bb4; // scope 0 at $DIR/remove_fake_borrows.rs:+2:9: +2:16 +- falseEdge -> [real: bb4, imaginary: bb1]; ++ goto -> bb4; } bb4: { -- _4 = &shallow _1; // scope 0 at $DIR/remove_fake_borrows.rs:+1:11: +1:12 -- _5 = &shallow (*((_1 as Some).0: &&i32)); // scope 0 at $DIR/remove_fake_borrows.rs:+1:11: +1:12 -- _6 = &shallow ((_1 as Some).0: &&i32); // scope 0 at $DIR/remove_fake_borrows.rs:+1:11: +1:12 -- _7 = &shallow (*(*((_1 as Some).0: &&i32))); // scope 0 at $DIR/remove_fake_borrows.rs:+1:11: +1:12 -+ nop; // scope 0 at $DIR/remove_fake_borrows.rs:+1:11: +1:12 -+ nop; // scope 0 at $DIR/remove_fake_borrows.rs:+1:11: +1:12 -+ nop; // scope 0 at $DIR/remove_fake_borrows.rs:+1:11: +1:12 -+ nop; // scope 0 at $DIR/remove_fake_borrows.rs:+1:11: +1:12 - StorageLive(_8); // scope 0 at $DIR/remove_fake_borrows.rs:+2:20: +2:21 - _8 = _2; // scope 0 at $DIR/remove_fake_borrows.rs:+2:20: +2:21 - switchInt(move _8) -> [0: bb6, otherwise: bb5]; // scope 0 at $DIR/remove_fake_borrows.rs:+2:20: +2:21 +- _4 = &shallow _1; +- _5 = &shallow (*((_1 as Some).0: &&i32)); +- _6 = &shallow ((_1 as Some).0: &&i32); +- _7 = &shallow (*(*((_1 as Some).0: &&i32))); ++ nop; ++ nop; ++ nop; ++ nop; + StorageLive(_8); + _8 = _2; + switchInt(move _8) -> [0: bb6, otherwise: bb5]; } bb5: { - StorageDead(_8); // scope 0 at $DIR/remove_fake_borrows.rs:+2:20: +2:21 -- FakeRead(ForMatchGuard, _4); // scope 0 at $DIR/remove_fake_borrows.rs:+2:20: +2:21 -- FakeRead(ForMatchGuard, _5); // scope 0 at $DIR/remove_fake_borrows.rs:+2:20: +2:21 -- FakeRead(ForMatchGuard, _6); // scope 0 at $DIR/remove_fake_borrows.rs:+2:20: +2:21 -- FakeRead(ForMatchGuard, _7); // scope 0 at $DIR/remove_fake_borrows.rs:+2:20: +2:21 -+ nop; // scope 0 at $DIR/remove_fake_borrows.rs:+2:20: +2:21 -+ nop; // scope 0 at $DIR/remove_fake_borrows.rs:+2:20: +2:21 -+ nop; // scope 0 at $DIR/remove_fake_borrows.rs:+2:20: +2:21 -+ nop; // scope 0 at $DIR/remove_fake_borrows.rs:+2:20: +2:21 - _0 = const 0_i32; // scope 0 at $DIR/remove_fake_borrows.rs:+2:25: +2:26 - goto -> bb7; // scope 0 at $DIR/remove_fake_borrows.rs:+2:25: +2:26 + StorageDead(_8); +- FakeRead(ForMatchGuard, _4); +- FakeRead(ForMatchGuard, _5); +- FakeRead(ForMatchGuard, _6); +- FakeRead(ForMatchGuard, _7); ++ nop; ++ nop; ++ nop; ++ nop; + _0 = const 0_i32; + goto -> bb7; } bb6: { - StorageDead(_8); // scope 0 at $DIR/remove_fake_borrows.rs:+2:20: +2:21 -- falseEdge -> [real: bb1, imaginary: bb1]; // scope 0 at $DIR/remove_fake_borrows.rs:+2:20: +2:21 -+ goto -> bb1; // scope 0 at $DIR/remove_fake_borrows.rs:+2:20: +2:21 + StorageDead(_8); +- falseEdge -> [real: bb1, imaginary: bb1]; ++ goto -> bb1; } bb7: { - return; // scope 0 at $DIR/remove_fake_borrows.rs:+5:2: +5:2 + return; } } diff --git a/tests/mir-opt/remove_never_const.no_codegen.PreCodegen.after.mir b/tests/mir-opt/remove_never_const.no_codegen.PreCodegen.after.mir index 8eb0e9c8f483f..695bf23368573 100644 --- a/tests/mir-opt/remove_never_const.no_codegen.PreCodegen.after.mir +++ b/tests/mir-opt/remove_never_const.no_codegen.PreCodegen.after.mir @@ -1,11 +1,11 @@ // MIR for `no_codegen` after PreCodegen fn no_codegen() -> () { - let mut _0: (); // return place in scope 0 at $DIR/remove_never_const.rs:+0:20: +0:20 + let mut _0: (); scope 1 { } bb0: { - unreachable; // scope 0 at $DIR/remove_never_const.rs:+1:13: +1:33 + unreachable; } } diff --git a/tests/mir-opt/remove_storage_markers.main.RemoveStorageMarkers.panic-abort.diff b/tests/mir-opt/remove_storage_markers.main.RemoveStorageMarkers.panic-abort.diff index 895c62bb5d082..8804e671527e8 100644 --- a/tests/mir-opt/remove_storage_markers.main.RemoveStorageMarkers.panic-abort.diff +++ b/tests/mir-opt/remove_storage_markers.main.RemoveStorageMarkers.panic-abort.diff @@ -2,97 +2,91 @@ + // MIR for `main` after RemoveStorageMarkers fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/remove_storage_markers.rs:+0:11: +0:11 - let mut _1: i32; // in scope 0 at $DIR/remove_storage_markers.rs:+1:9: +1:16 - let mut _2: std::ops::Range; // in scope 0 at $DIR/remove_storage_markers.rs:+2:14: +2:19 - let mut _3: std::ops::Range; // in scope 0 at $DIR/remove_storage_markers.rs:+2:14: +2:19 - let mut _5: (); // in scope 0 at $DIR/remove_storage_markers.rs:+0:1: +5:2 - let _6: (); // in scope 0 at $DIR/remove_storage_markers.rs:+2:14: +2:19 - let mut _7: std::option::Option; // in scope 0 at $DIR/remove_storage_markers.rs:+2:14: +2:19 - let mut _8: &mut std::ops::Range; // in scope 0 at $DIR/remove_storage_markers.rs:+2:14: +2:19 - let mut _9: &mut std::ops::Range; // in scope 0 at $DIR/remove_storage_markers.rs:+2:14: +2:19 - let mut _10: isize; // in scope 0 at $DIR/remove_storage_markers.rs:+2:5: +4:6 - let mut _11: !; // in scope 0 at $DIR/remove_storage_markers.rs:+2:5: +4:6 - let mut _13: i32; // in scope 0 at $DIR/remove_storage_markers.rs:+3:16: +3:17 + let mut _0: (); + let mut _1: i32; + let mut _2: std::ops::Range; + let mut _3: std::ops::Range; + let mut _5: (); + let _6: (); + let mut _7: std::option::Option; + let mut _8: &mut std::ops::Range; + let mut _9: &mut std::ops::Range; + let mut _10: isize; + let mut _11: !; + let mut _13: i32; scope 1 { - debug sum => _1; // in scope 1 at $DIR/remove_storage_markers.rs:+1:9: +1:16 - let mut _4: std::ops::Range; // in scope 1 at $DIR/remove_storage_markers.rs:+2:14: +2:19 + debug sum => _1; + let mut _4: std::ops::Range; scope 2 { - debug iter => _4; // in scope 2 at $DIR/remove_storage_markers.rs:+2:14: +2:19 - let _12: i32; // in scope 2 at $DIR/remove_storage_markers.rs:+2:9: +2:10 + debug iter => _4; + let _12: i32; scope 3 { - debug i => _12; // in scope 3 at $DIR/remove_storage_markers.rs:+2:9: +2:10 + debug i => _12; } } } bb0: { -- StorageLive(_1); // scope 0 at $DIR/remove_storage_markers.rs:+1:9: +1:16 - _1 = const 0_i32; // scope 0 at $DIR/remove_storage_markers.rs:+1:19: +1:20 -- StorageLive(_2); // scope 1 at $DIR/remove_storage_markers.rs:+2:14: +2:19 -- StorageLive(_3); // scope 1 at $DIR/remove_storage_markers.rs:+2:14: +2:19 - _3 = std::ops::Range:: { start: const 0_i32, end: const 10_i32 }; // scope 1 at $DIR/remove_storage_markers.rs:+2:14: +2:19 - _2 = as IntoIterator>::into_iter(move _3) -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/remove_storage_markers.rs:+2:14: +2:19 - // mir::Constant - // + span: $DIR/remove_storage_markers.rs:11:14: 11:19 - // + literal: Const { ty: fn(std::ops::Range) -> as IntoIterator>::IntoIter { as IntoIterator>::into_iter}, val: Value() } +- StorageLive(_1); + _1 = const 0_i32; +- StorageLive(_2); +- StorageLive(_3); + _3 = std::ops::Range:: { start: const 0_i32, end: const 10_i32 }; + _2 = as IntoIterator>::into_iter(move _3) -> [return: bb1, unwind unreachable]; } bb1: { -- StorageDead(_3); // scope 1 at $DIR/remove_storage_markers.rs:+2:18: +2:19 -- StorageLive(_4); // scope 1 at $DIR/remove_storage_markers.rs:+2:14: +2:19 - _4 = move _2; // scope 1 at $DIR/remove_storage_markers.rs:+2:14: +2:19 - goto -> bb2; // scope 2 at $DIR/remove_storage_markers.rs:+2:5: +4:6 +- StorageDead(_3); +- StorageLive(_4); + _4 = move _2; + goto -> bb2; } bb2: { -- StorageLive(_6); // scope 2 at $DIR/remove_storage_markers.rs:+2:14: +2:19 -- StorageLive(_7); // scope 2 at $DIR/remove_storage_markers.rs:+2:14: +2:19 -- StorageLive(_8); // scope 2 at $DIR/remove_storage_markers.rs:+2:14: +2:19 -- StorageLive(_9); // scope 2 at $DIR/remove_storage_markers.rs:+2:14: +2:19 - _9 = &mut _4; // scope 2 at $DIR/remove_storage_markers.rs:+2:14: +2:19 - _8 = &mut (*_9); // scope 2 at $DIR/remove_storage_markers.rs:+2:14: +2:19 - _7 = as Iterator>::next(move _8) -> [return: bb3, unwind unreachable]; // scope 2 at $DIR/remove_storage_markers.rs:+2:14: +2:19 - // mir::Constant - // + span: $DIR/remove_storage_markers.rs:11:14: 11:19 - // + literal: Const { ty: for<'a> fn(&'a mut std::ops::Range) -> Option< as Iterator>::Item> { as Iterator>::next}, val: Value() } +- StorageLive(_6); +- StorageLive(_7); +- StorageLive(_8); +- StorageLive(_9); + _9 = &mut _4; + _8 = &mut (*_9); + _7 = as Iterator>::next(move _8) -> [return: bb3, unwind unreachable]; } bb3: { -- StorageDead(_8); // scope 2 at $DIR/remove_storage_markers.rs:+2:18: +2:19 - _10 = discriminant(_7); // scope 2 at $DIR/remove_storage_markers.rs:+2:14: +2:19 - switchInt(move _10) -> [0: bb6, 1: bb4, otherwise: bb5]; // scope 2 at $DIR/remove_storage_markers.rs:+2:14: +2:19 +- StorageDead(_8); + _10 = discriminant(_7); + switchInt(move _10) -> [0: bb6, 1: bb4, otherwise: bb5]; } bb4: { -- StorageLive(_12); // scope 2 at $DIR/remove_storage_markers.rs:+2:9: +2:10 - _12 = ((_7 as Some).0: i32); // scope 2 at $DIR/remove_storage_markers.rs:+2:9: +2:10 -- StorageLive(_13); // scope 3 at $DIR/remove_storage_markers.rs:+3:16: +3:17 - _13 = _12; // scope 3 at $DIR/remove_storage_markers.rs:+3:16: +3:17 - _1 = Add(_1, move _13); // scope 3 at $DIR/remove_storage_markers.rs:+3:9: +3:17 -- StorageDead(_13); // scope 3 at $DIR/remove_storage_markers.rs:+3:16: +3:17 - _6 = const (); // scope 3 at $DIR/remove_storage_markers.rs:+2:20: +4:6 -- StorageDead(_12); // scope 2 at $DIR/remove_storage_markers.rs:+4:5: +4:6 -- StorageDead(_9); // scope 2 at $DIR/remove_storage_markers.rs:+4:5: +4:6 -- StorageDead(_7); // scope 2 at $DIR/remove_storage_markers.rs:+4:5: +4:6 -- StorageDead(_6); // scope 2 at $DIR/remove_storage_markers.rs:+4:5: +4:6 - _5 = const (); // scope 2 at $DIR/remove_storage_markers.rs:+2:5: +4:6 - goto -> bb2; // scope 2 at $DIR/remove_storage_markers.rs:+2:5: +4:6 +- StorageLive(_12); + _12 = ((_7 as Some).0: i32); +- StorageLive(_13); + _13 = _12; + _1 = Add(_1, move _13); +- StorageDead(_13); + _6 = const (); +- StorageDead(_12); +- StorageDead(_9); +- StorageDead(_7); +- StorageDead(_6); + _5 = const (); + goto -> bb2; } bb5: { - unreachable; // scope 2 at $DIR/remove_storage_markers.rs:+2:14: +2:19 + unreachable; } bb6: { - _0 = const (); // scope 2 at $DIR/remove_storage_markers.rs:+2:5: +4:6 -- StorageDead(_9); // scope 2 at $DIR/remove_storage_markers.rs:+4:5: +4:6 -- StorageDead(_7); // scope 2 at $DIR/remove_storage_markers.rs:+4:5: +4:6 -- StorageDead(_6); // scope 2 at $DIR/remove_storage_markers.rs:+4:5: +4:6 -- StorageDead(_4); // scope 1 at $DIR/remove_storage_markers.rs:+4:5: +4:6 -- StorageDead(_2); // scope 1 at $DIR/remove_storage_markers.rs:+4:5: +4:6 -- StorageDead(_1); // scope 0 at $DIR/remove_storage_markers.rs:+5:1: +5:2 - return; // scope 0 at $DIR/remove_storage_markers.rs:+5:2: +5:2 + _0 = const (); +- StorageDead(_9); +- StorageDead(_7); +- StorageDead(_6); +- StorageDead(_4); +- StorageDead(_2); +- StorageDead(_1); + return; } } diff --git a/tests/mir-opt/remove_storage_markers.main.RemoveStorageMarkers.panic-unwind.diff b/tests/mir-opt/remove_storage_markers.main.RemoveStorageMarkers.panic-unwind.diff index 0e8309532c2fa..d7f867e31dde7 100644 --- a/tests/mir-opt/remove_storage_markers.main.RemoveStorageMarkers.panic-unwind.diff +++ b/tests/mir-opt/remove_storage_markers.main.RemoveStorageMarkers.panic-unwind.diff @@ -2,97 +2,91 @@ + // MIR for `main` after RemoveStorageMarkers fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/remove_storage_markers.rs:+0:11: +0:11 - let mut _1: i32; // in scope 0 at $DIR/remove_storage_markers.rs:+1:9: +1:16 - let mut _2: std::ops::Range; // in scope 0 at $DIR/remove_storage_markers.rs:+2:14: +2:19 - let mut _3: std::ops::Range; // in scope 0 at $DIR/remove_storage_markers.rs:+2:14: +2:19 - let mut _5: (); // in scope 0 at $DIR/remove_storage_markers.rs:+0:1: +5:2 - let _6: (); // in scope 0 at $DIR/remove_storage_markers.rs:+2:14: +2:19 - let mut _7: std::option::Option; // in scope 0 at $DIR/remove_storage_markers.rs:+2:14: +2:19 - let mut _8: &mut std::ops::Range; // in scope 0 at $DIR/remove_storage_markers.rs:+2:14: +2:19 - let mut _9: &mut std::ops::Range; // in scope 0 at $DIR/remove_storage_markers.rs:+2:14: +2:19 - let mut _10: isize; // in scope 0 at $DIR/remove_storage_markers.rs:+2:5: +4:6 - let mut _11: !; // in scope 0 at $DIR/remove_storage_markers.rs:+2:5: +4:6 - let mut _13: i32; // in scope 0 at $DIR/remove_storage_markers.rs:+3:16: +3:17 + let mut _0: (); + let mut _1: i32; + let mut _2: std::ops::Range; + let mut _3: std::ops::Range; + let mut _5: (); + let _6: (); + let mut _7: std::option::Option; + let mut _8: &mut std::ops::Range; + let mut _9: &mut std::ops::Range; + let mut _10: isize; + let mut _11: !; + let mut _13: i32; scope 1 { - debug sum => _1; // in scope 1 at $DIR/remove_storage_markers.rs:+1:9: +1:16 - let mut _4: std::ops::Range; // in scope 1 at $DIR/remove_storage_markers.rs:+2:14: +2:19 + debug sum => _1; + let mut _4: std::ops::Range; scope 2 { - debug iter => _4; // in scope 2 at $DIR/remove_storage_markers.rs:+2:14: +2:19 - let _12: i32; // in scope 2 at $DIR/remove_storage_markers.rs:+2:9: +2:10 + debug iter => _4; + let _12: i32; scope 3 { - debug i => _12; // in scope 3 at $DIR/remove_storage_markers.rs:+2:9: +2:10 + debug i => _12; } } } bb0: { -- StorageLive(_1); // scope 0 at $DIR/remove_storage_markers.rs:+1:9: +1:16 - _1 = const 0_i32; // scope 0 at $DIR/remove_storage_markers.rs:+1:19: +1:20 -- StorageLive(_2); // scope 1 at $DIR/remove_storage_markers.rs:+2:14: +2:19 -- StorageLive(_3); // scope 1 at $DIR/remove_storage_markers.rs:+2:14: +2:19 - _3 = std::ops::Range:: { start: const 0_i32, end: const 10_i32 }; // scope 1 at $DIR/remove_storage_markers.rs:+2:14: +2:19 - _2 = as IntoIterator>::into_iter(move _3) -> bb1; // scope 1 at $DIR/remove_storage_markers.rs:+2:14: +2:19 - // mir::Constant - // + span: $DIR/remove_storage_markers.rs:11:14: 11:19 - // + literal: Const { ty: fn(std::ops::Range) -> as IntoIterator>::IntoIter { as IntoIterator>::into_iter}, val: Value() } +- StorageLive(_1); + _1 = const 0_i32; +- StorageLive(_2); +- StorageLive(_3); + _3 = std::ops::Range:: { start: const 0_i32, end: const 10_i32 }; + _2 = as IntoIterator>::into_iter(move _3) -> bb1; } bb1: { -- StorageDead(_3); // scope 1 at $DIR/remove_storage_markers.rs:+2:18: +2:19 -- StorageLive(_4); // scope 1 at $DIR/remove_storage_markers.rs:+2:14: +2:19 - _4 = move _2; // scope 1 at $DIR/remove_storage_markers.rs:+2:14: +2:19 - goto -> bb2; // scope 2 at $DIR/remove_storage_markers.rs:+2:5: +4:6 +- StorageDead(_3); +- StorageLive(_4); + _4 = move _2; + goto -> bb2; } bb2: { -- StorageLive(_6); // scope 2 at $DIR/remove_storage_markers.rs:+2:14: +2:19 -- StorageLive(_7); // scope 2 at $DIR/remove_storage_markers.rs:+2:14: +2:19 -- StorageLive(_8); // scope 2 at $DIR/remove_storage_markers.rs:+2:14: +2:19 -- StorageLive(_9); // scope 2 at $DIR/remove_storage_markers.rs:+2:14: +2:19 - _9 = &mut _4; // scope 2 at $DIR/remove_storage_markers.rs:+2:14: +2:19 - _8 = &mut (*_9); // scope 2 at $DIR/remove_storage_markers.rs:+2:14: +2:19 - _7 = as Iterator>::next(move _8) -> bb3; // scope 2 at $DIR/remove_storage_markers.rs:+2:14: +2:19 - // mir::Constant - // + span: $DIR/remove_storage_markers.rs:11:14: 11:19 - // + literal: Const { ty: for<'a> fn(&'a mut std::ops::Range) -> Option< as Iterator>::Item> { as Iterator>::next}, val: Value() } +- StorageLive(_6); +- StorageLive(_7); +- StorageLive(_8); +- StorageLive(_9); + _9 = &mut _4; + _8 = &mut (*_9); + _7 = as Iterator>::next(move _8) -> bb3; } bb3: { -- StorageDead(_8); // scope 2 at $DIR/remove_storage_markers.rs:+2:18: +2:19 - _10 = discriminant(_7); // scope 2 at $DIR/remove_storage_markers.rs:+2:14: +2:19 - switchInt(move _10) -> [0: bb6, 1: bb4, otherwise: bb5]; // scope 2 at $DIR/remove_storage_markers.rs:+2:14: +2:19 +- StorageDead(_8); + _10 = discriminant(_7); + switchInt(move _10) -> [0: bb6, 1: bb4, otherwise: bb5]; } bb4: { -- StorageLive(_12); // scope 2 at $DIR/remove_storage_markers.rs:+2:9: +2:10 - _12 = ((_7 as Some).0: i32); // scope 2 at $DIR/remove_storage_markers.rs:+2:9: +2:10 -- StorageLive(_13); // scope 3 at $DIR/remove_storage_markers.rs:+3:16: +3:17 - _13 = _12; // scope 3 at $DIR/remove_storage_markers.rs:+3:16: +3:17 - _1 = Add(_1, move _13); // scope 3 at $DIR/remove_storage_markers.rs:+3:9: +3:17 -- StorageDead(_13); // scope 3 at $DIR/remove_storage_markers.rs:+3:16: +3:17 - _6 = const (); // scope 3 at $DIR/remove_storage_markers.rs:+2:20: +4:6 -- StorageDead(_12); // scope 2 at $DIR/remove_storage_markers.rs:+4:5: +4:6 -- StorageDead(_9); // scope 2 at $DIR/remove_storage_markers.rs:+4:5: +4:6 -- StorageDead(_7); // scope 2 at $DIR/remove_storage_markers.rs:+4:5: +4:6 -- StorageDead(_6); // scope 2 at $DIR/remove_storage_markers.rs:+4:5: +4:6 - _5 = const (); // scope 2 at $DIR/remove_storage_markers.rs:+2:5: +4:6 - goto -> bb2; // scope 2 at $DIR/remove_storage_markers.rs:+2:5: +4:6 +- StorageLive(_12); + _12 = ((_7 as Some).0: i32); +- StorageLive(_13); + _13 = _12; + _1 = Add(_1, move _13); +- StorageDead(_13); + _6 = const (); +- StorageDead(_12); +- StorageDead(_9); +- StorageDead(_7); +- StorageDead(_6); + _5 = const (); + goto -> bb2; } bb5: { - unreachable; // scope 2 at $DIR/remove_storage_markers.rs:+2:14: +2:19 + unreachable; } bb6: { - _0 = const (); // scope 2 at $DIR/remove_storage_markers.rs:+2:5: +4:6 -- StorageDead(_9); // scope 2 at $DIR/remove_storage_markers.rs:+4:5: +4:6 -- StorageDead(_7); // scope 2 at $DIR/remove_storage_markers.rs:+4:5: +4:6 -- StorageDead(_6); // scope 2 at $DIR/remove_storage_markers.rs:+4:5: +4:6 -- StorageDead(_4); // scope 1 at $DIR/remove_storage_markers.rs:+4:5: +4:6 -- StorageDead(_2); // scope 1 at $DIR/remove_storage_markers.rs:+4:5: +4:6 -- StorageDead(_1); // scope 0 at $DIR/remove_storage_markers.rs:+5:1: +5:2 - return; // scope 0 at $DIR/remove_storage_markers.rs:+5:2: +5:2 + _0 = const (); +- StorageDead(_9); +- StorageDead(_7); +- StorageDead(_6); +- StorageDead(_4); +- StorageDead(_2); +- StorageDead(_1); + return; } } diff --git a/tests/mir-opt/remove_unneeded_drops.cannot_opt_generic.RemoveUnneededDrops.panic-abort.diff b/tests/mir-opt/remove_unneeded_drops.cannot_opt_generic.RemoveUnneededDrops.panic-abort.diff index 3c8f40d13e4ad..22a1a882b41c8 100644 --- a/tests/mir-opt/remove_unneeded_drops.cannot_opt_generic.RemoveUnneededDrops.panic-abort.diff +++ b/tests/mir-opt/remove_unneeded_drops.cannot_opt_generic.RemoveUnneededDrops.panic-abort.diff @@ -2,26 +2,26 @@ + // MIR for `cannot_opt_generic` after RemoveUnneededDrops fn cannot_opt_generic(_1: T) -> () { - debug x => _1; // in scope 0 at $DIR/remove_unneeded_drops.rs:+0:26: +0:27 - let mut _0: (); // return place in scope 0 at $DIR/remove_unneeded_drops.rs:+0:32: +0:32 - let _2: (); // in scope 0 at $DIR/remove_unneeded_drops.rs:+1:5: +1:12 - let mut _3: T; // in scope 0 at $DIR/remove_unneeded_drops.rs:+1:10: +1:11 - scope 1 (inlined std::mem::drop::) { // at $DIR/remove_unneeded_drops.rs:21:5: 21:12 - debug _x => _3; // in scope 1 at $SRC_DIR/core/src/mem/mod.rs:LL:COL + debug x => _1; + let mut _0: (); + let _2: (); + let mut _3: T; + scope 1 (inlined std::mem::drop::) { + debug _x => _3; } bb0: { - nop; // scope 0 at $DIR/remove_unneeded_drops.rs:+1:5: +1:12 - StorageLive(_3); // scope 0 at $DIR/remove_unneeded_drops.rs:+1:10: +1:11 - _3 = move _1; // scope 0 at $DIR/remove_unneeded_drops.rs:+1:10: +1:11 - drop(_3) -> [return: bb1, unwind unreachable]; // scope 1 at $SRC_DIR/core/src/mem/mod.rs:LL:COL + nop; + StorageLive(_3); + _3 = move _1; + drop(_3) -> [return: bb1, unwind unreachable]; } bb1: { - StorageDead(_3); // scope 0 at $DIR/remove_unneeded_drops.rs:+1:11: +1:12 - nop; // scope 0 at $DIR/remove_unneeded_drops.rs:+1:12: +1:13 - nop; // scope 0 at $DIR/remove_unneeded_drops.rs:+0:32: +2:2 - return; // scope 0 at $DIR/remove_unneeded_drops.rs:+2:2: +2:2 + StorageDead(_3); + nop; + nop; + return; } } diff --git a/tests/mir-opt/remove_unneeded_drops.cannot_opt_generic.RemoveUnneededDrops.panic-unwind.diff b/tests/mir-opt/remove_unneeded_drops.cannot_opt_generic.RemoveUnneededDrops.panic-unwind.diff index 7713649c5b96b..56070e6102f11 100644 --- a/tests/mir-opt/remove_unneeded_drops.cannot_opt_generic.RemoveUnneededDrops.panic-unwind.diff +++ b/tests/mir-opt/remove_unneeded_drops.cannot_opt_generic.RemoveUnneededDrops.panic-unwind.diff @@ -2,30 +2,30 @@ + // MIR for `cannot_opt_generic` after RemoveUnneededDrops fn cannot_opt_generic(_1: T) -> () { - debug x => _1; // in scope 0 at $DIR/remove_unneeded_drops.rs:+0:26: +0:27 - let mut _0: (); // return place in scope 0 at $DIR/remove_unneeded_drops.rs:+0:32: +0:32 - let _2: (); // in scope 0 at $DIR/remove_unneeded_drops.rs:+1:5: +1:12 - let mut _3: T; // in scope 0 at $DIR/remove_unneeded_drops.rs:+1:10: +1:11 - scope 1 (inlined std::mem::drop::) { // at $DIR/remove_unneeded_drops.rs:21:5: 21:12 - debug _x => _3; // in scope 1 at $SRC_DIR/core/src/mem/mod.rs:LL:COL + debug x => _1; + let mut _0: (); + let _2: (); + let mut _3: T; + scope 1 (inlined std::mem::drop::) { + debug _x => _3; } bb0: { - nop; // scope 0 at $DIR/remove_unneeded_drops.rs:+1:5: +1:12 - StorageLive(_3); // scope 0 at $DIR/remove_unneeded_drops.rs:+1:10: +1:11 - _3 = move _1; // scope 0 at $DIR/remove_unneeded_drops.rs:+1:10: +1:11 - drop(_3) -> [return: bb2, unwind: bb1]; // scope 1 at $SRC_DIR/core/src/mem/mod.rs:LL:COL + nop; + StorageLive(_3); + _3 = move _1; + drop(_3) -> [return: bb2, unwind: bb1]; } bb1 (cleanup): { - resume; // scope 0 at $DIR/remove_unneeded_drops.rs:+0:1: +2:2 + resume; } bb2: { - StorageDead(_3); // scope 0 at $DIR/remove_unneeded_drops.rs:+1:11: +1:12 - nop; // scope 0 at $DIR/remove_unneeded_drops.rs:+1:12: +1:13 - nop; // scope 0 at $DIR/remove_unneeded_drops.rs:+0:32: +2:2 - return; // scope 0 at $DIR/remove_unneeded_drops.rs:+2:2: +2:2 + StorageDead(_3); + nop; + nop; + return; } } diff --git a/tests/mir-opt/remove_unneeded_drops.dont_opt.RemoveUnneededDrops.panic-abort.diff b/tests/mir-opt/remove_unneeded_drops.dont_opt.RemoveUnneededDrops.panic-abort.diff index 1a7e1a7fa67ea..105bedd0ac823 100644 --- a/tests/mir-opt/remove_unneeded_drops.dont_opt.RemoveUnneededDrops.panic-abort.diff +++ b/tests/mir-opt/remove_unneeded_drops.dont_opt.RemoveUnneededDrops.panic-abort.diff @@ -2,26 +2,26 @@ + // MIR for `dont_opt` after RemoveUnneededDrops fn dont_opt(_1: Vec) -> () { - debug x => _1; // in scope 0 at $DIR/remove_unneeded_drops.rs:+0:13: +0:14 - let mut _0: (); // return place in scope 0 at $DIR/remove_unneeded_drops.rs:+0:27: +0:27 - let _2: (); // in scope 0 at $DIR/remove_unneeded_drops.rs:+1:5: +1:12 - let mut _3: std::vec::Vec; // in scope 0 at $DIR/remove_unneeded_drops.rs:+1:10: +1:11 - scope 1 (inlined std::mem::drop::>) { // at $DIR/remove_unneeded_drops.rs:9:5: 9:12 - debug _x => _3; // in scope 1 at $SRC_DIR/core/src/mem/mod.rs:LL:COL + debug x => _1; + let mut _0: (); + let _2: (); + let mut _3: std::vec::Vec; + scope 1 (inlined std::mem::drop::>) { + debug _x => _3; } bb0: { - nop; // scope 0 at $DIR/remove_unneeded_drops.rs:+1:5: +1:12 - StorageLive(_3); // scope 0 at $DIR/remove_unneeded_drops.rs:+1:10: +1:11 - _3 = move _1; // scope 0 at $DIR/remove_unneeded_drops.rs:+1:10: +1:11 - drop(_3) -> [return: bb1, unwind unreachable]; // scope 1 at $SRC_DIR/core/src/mem/mod.rs:LL:COL + nop; + StorageLive(_3); + _3 = move _1; + drop(_3) -> [return: bb1, unwind unreachable]; } bb1: { - StorageDead(_3); // scope 0 at $DIR/remove_unneeded_drops.rs:+1:11: +1:12 - nop; // scope 0 at $DIR/remove_unneeded_drops.rs:+1:12: +1:13 - nop; // scope 0 at $DIR/remove_unneeded_drops.rs:+0:27: +2:2 - return; // scope 0 at $DIR/remove_unneeded_drops.rs:+2:2: +2:2 + StorageDead(_3); + nop; + nop; + return; } } diff --git a/tests/mir-opt/remove_unneeded_drops.dont_opt.RemoveUnneededDrops.panic-unwind.diff b/tests/mir-opt/remove_unneeded_drops.dont_opt.RemoveUnneededDrops.panic-unwind.diff index 533db4051ef1f..c9790dc071d63 100644 --- a/tests/mir-opt/remove_unneeded_drops.dont_opt.RemoveUnneededDrops.panic-unwind.diff +++ b/tests/mir-opt/remove_unneeded_drops.dont_opt.RemoveUnneededDrops.panic-unwind.diff @@ -2,30 +2,30 @@ + // MIR for `dont_opt` after RemoveUnneededDrops fn dont_opt(_1: Vec) -> () { - debug x => _1; // in scope 0 at $DIR/remove_unneeded_drops.rs:+0:13: +0:14 - let mut _0: (); // return place in scope 0 at $DIR/remove_unneeded_drops.rs:+0:27: +0:27 - let _2: (); // in scope 0 at $DIR/remove_unneeded_drops.rs:+1:5: +1:12 - let mut _3: std::vec::Vec; // in scope 0 at $DIR/remove_unneeded_drops.rs:+1:10: +1:11 - scope 1 (inlined std::mem::drop::>) { // at $DIR/remove_unneeded_drops.rs:9:5: 9:12 - debug _x => _3; // in scope 1 at $SRC_DIR/core/src/mem/mod.rs:LL:COL + debug x => _1; + let mut _0: (); + let _2: (); + let mut _3: std::vec::Vec; + scope 1 (inlined std::mem::drop::>) { + debug _x => _3; } bb0: { - nop; // scope 0 at $DIR/remove_unneeded_drops.rs:+1:5: +1:12 - StorageLive(_3); // scope 0 at $DIR/remove_unneeded_drops.rs:+1:10: +1:11 - _3 = move _1; // scope 0 at $DIR/remove_unneeded_drops.rs:+1:10: +1:11 - drop(_3) -> [return: bb2, unwind: bb1]; // scope 1 at $SRC_DIR/core/src/mem/mod.rs:LL:COL + nop; + StorageLive(_3); + _3 = move _1; + drop(_3) -> [return: bb2, unwind: bb1]; } bb1 (cleanup): { - resume; // scope 0 at $DIR/remove_unneeded_drops.rs:+0:1: +2:2 + resume; } bb2: { - StorageDead(_3); // scope 0 at $DIR/remove_unneeded_drops.rs:+1:11: +1:12 - nop; // scope 0 at $DIR/remove_unneeded_drops.rs:+1:12: +1:13 - nop; // scope 0 at $DIR/remove_unneeded_drops.rs:+0:27: +2:2 - return; // scope 0 at $DIR/remove_unneeded_drops.rs:+2:2: +2:2 + StorageDead(_3); + nop; + nop; + return; } } diff --git a/tests/mir-opt/remove_unneeded_drops.opt.RemoveUnneededDrops.panic-abort.diff b/tests/mir-opt/remove_unneeded_drops.opt.RemoveUnneededDrops.panic-abort.diff index 4a1517b5b93bf..a48ac82ea7da6 100644 --- a/tests/mir-opt/remove_unneeded_drops.opt.RemoveUnneededDrops.panic-abort.diff +++ b/tests/mir-opt/remove_unneeded_drops.opt.RemoveUnneededDrops.panic-abort.diff @@ -2,26 +2,26 @@ + // MIR for `opt` after RemoveUnneededDrops fn opt(_1: bool) -> () { - debug x => _1; // in scope 0 at $DIR/remove_unneeded_drops.rs:+0:8: +0:9 - let mut _0: (); // return place in scope 0 at $DIR/remove_unneeded_drops.rs:+0:17: +0:17 - let _2: (); // in scope 0 at $DIR/remove_unneeded_drops.rs:+1:5: +1:12 - let mut _3: bool; // in scope 0 at $DIR/remove_unneeded_drops.rs:+1:10: +1:11 - scope 1 (inlined std::mem::drop::) { // at $DIR/remove_unneeded_drops.rs:4:5: 4:12 - debug _x => _3; // in scope 1 at $SRC_DIR/core/src/mem/mod.rs:LL:COL + debug x => _1; + let mut _0: (); + let _2: (); + let mut _3: bool; + scope 1 (inlined std::mem::drop::) { + debug _x => _3; } bb0: { -- nop; // scope 0 at $DIR/remove_unneeded_drops.rs:+1:5: +1:12 - StorageLive(_3); // scope 0 at $DIR/remove_unneeded_drops.rs:+1:10: +1:11 - _3 = _1; // scope 0 at $DIR/remove_unneeded_drops.rs:+1:10: +1:11 -- drop(_3) -> [return: bb1, unwind unreachable]; // scope 1 at $SRC_DIR/core/src/mem/mod.rs:LL:COL +- nop; + StorageLive(_3); + _3 = _1; +- drop(_3) -> [return: bb1, unwind unreachable]; - } - - bb1: { - StorageDead(_3); // scope 0 at $DIR/remove_unneeded_drops.rs:+1:11: +1:12 -- nop; // scope 0 at $DIR/remove_unneeded_drops.rs:+1:12: +1:13 -- nop; // scope 0 at $DIR/remove_unneeded_drops.rs:+0:17: +2:2 - return; // scope 0 at $DIR/remove_unneeded_drops.rs:+2:2: +2:2 + StorageDead(_3); +- nop; +- nop; + return; } } diff --git a/tests/mir-opt/remove_unneeded_drops.opt.RemoveUnneededDrops.panic-unwind.diff b/tests/mir-opt/remove_unneeded_drops.opt.RemoveUnneededDrops.panic-unwind.diff index 04a2d54e9a19b..8cb773e48076f 100644 --- a/tests/mir-opt/remove_unneeded_drops.opt.RemoveUnneededDrops.panic-unwind.diff +++ b/tests/mir-opt/remove_unneeded_drops.opt.RemoveUnneededDrops.panic-unwind.diff @@ -2,26 +2,26 @@ + // MIR for `opt` after RemoveUnneededDrops fn opt(_1: bool) -> () { - debug x => _1; // in scope 0 at $DIR/remove_unneeded_drops.rs:+0:8: +0:9 - let mut _0: (); // return place in scope 0 at $DIR/remove_unneeded_drops.rs:+0:17: +0:17 - let _2: (); // in scope 0 at $DIR/remove_unneeded_drops.rs:+1:5: +1:12 - let mut _3: bool; // in scope 0 at $DIR/remove_unneeded_drops.rs:+1:10: +1:11 - scope 1 (inlined std::mem::drop::) { // at $DIR/remove_unneeded_drops.rs:4:5: 4:12 - debug _x => _3; // in scope 1 at $SRC_DIR/core/src/mem/mod.rs:LL:COL + debug x => _1; + let mut _0: (); + let _2: (); + let mut _3: bool; + scope 1 (inlined std::mem::drop::) { + debug _x => _3; } bb0: { -- nop; // scope 0 at $DIR/remove_unneeded_drops.rs:+1:5: +1:12 - StorageLive(_3); // scope 0 at $DIR/remove_unneeded_drops.rs:+1:10: +1:11 - _3 = _1; // scope 0 at $DIR/remove_unneeded_drops.rs:+1:10: +1:11 -- drop(_3) -> bb1; // scope 1 at $SRC_DIR/core/src/mem/mod.rs:LL:COL +- nop; + StorageLive(_3); + _3 = _1; +- drop(_3) -> bb1; - } - - bb1: { - StorageDead(_3); // scope 0 at $DIR/remove_unneeded_drops.rs:+1:11: +1:12 -- nop; // scope 0 at $DIR/remove_unneeded_drops.rs:+1:12: +1:13 -- nop; // scope 0 at $DIR/remove_unneeded_drops.rs:+0:17: +2:2 - return; // scope 0 at $DIR/remove_unneeded_drops.rs:+2:2: +2:2 + StorageDead(_3); +- nop; +- nop; + return; } } diff --git a/tests/mir-opt/remove_unneeded_drops.opt_generic_copy.RemoveUnneededDrops.panic-abort.diff b/tests/mir-opt/remove_unneeded_drops.opt_generic_copy.RemoveUnneededDrops.panic-abort.diff index a7325d92e68f0..049b32f284d8b 100644 --- a/tests/mir-opt/remove_unneeded_drops.opt_generic_copy.RemoveUnneededDrops.panic-abort.diff +++ b/tests/mir-opt/remove_unneeded_drops.opt_generic_copy.RemoveUnneededDrops.panic-abort.diff @@ -2,26 +2,26 @@ + // MIR for `opt_generic_copy` after RemoveUnneededDrops fn opt_generic_copy(_1: T) -> () { - debug x => _1; // in scope 0 at $DIR/remove_unneeded_drops.rs:+0:30: +0:31 - let mut _0: (); // return place in scope 0 at $DIR/remove_unneeded_drops.rs:+0:36: +0:36 - let _2: (); // in scope 0 at $DIR/remove_unneeded_drops.rs:+1:5: +1:12 - let mut _3: T; // in scope 0 at $DIR/remove_unneeded_drops.rs:+1:10: +1:11 - scope 1 (inlined std::mem::drop::) { // at $DIR/remove_unneeded_drops.rs:14:5: 14:12 - debug _x => _3; // in scope 1 at $SRC_DIR/core/src/mem/mod.rs:LL:COL + debug x => _1; + let mut _0: (); + let _2: (); + let mut _3: T; + scope 1 (inlined std::mem::drop::) { + debug _x => _3; } bb0: { -- nop; // scope 0 at $DIR/remove_unneeded_drops.rs:+1:5: +1:12 - StorageLive(_3); // scope 0 at $DIR/remove_unneeded_drops.rs:+1:10: +1:11 - _3 = _1; // scope 0 at $DIR/remove_unneeded_drops.rs:+1:10: +1:11 -- drop(_3) -> [return: bb1, unwind unreachable]; // scope 1 at $SRC_DIR/core/src/mem/mod.rs:LL:COL +- nop; + StorageLive(_3); + _3 = _1; +- drop(_3) -> [return: bb1, unwind unreachable]; - } - - bb1: { - StorageDead(_3); // scope 0 at $DIR/remove_unneeded_drops.rs:+1:11: +1:12 -- nop; // scope 0 at $DIR/remove_unneeded_drops.rs:+1:12: +1:13 -- nop; // scope 0 at $DIR/remove_unneeded_drops.rs:+0:36: +2:2 - return; // scope 0 at $DIR/remove_unneeded_drops.rs:+2:2: +2:2 + StorageDead(_3); +- nop; +- nop; + return; } } diff --git a/tests/mir-opt/remove_unneeded_drops.opt_generic_copy.RemoveUnneededDrops.panic-unwind.diff b/tests/mir-opt/remove_unneeded_drops.opt_generic_copy.RemoveUnneededDrops.panic-unwind.diff index 782d0c6c5f267..d189e5879820a 100644 --- a/tests/mir-opt/remove_unneeded_drops.opt_generic_copy.RemoveUnneededDrops.panic-unwind.diff +++ b/tests/mir-opt/remove_unneeded_drops.opt_generic_copy.RemoveUnneededDrops.panic-unwind.diff @@ -2,26 +2,26 @@ + // MIR for `opt_generic_copy` after RemoveUnneededDrops fn opt_generic_copy(_1: T) -> () { - debug x => _1; // in scope 0 at $DIR/remove_unneeded_drops.rs:+0:30: +0:31 - let mut _0: (); // return place in scope 0 at $DIR/remove_unneeded_drops.rs:+0:36: +0:36 - let _2: (); // in scope 0 at $DIR/remove_unneeded_drops.rs:+1:5: +1:12 - let mut _3: T; // in scope 0 at $DIR/remove_unneeded_drops.rs:+1:10: +1:11 - scope 1 (inlined std::mem::drop::) { // at $DIR/remove_unneeded_drops.rs:14:5: 14:12 - debug _x => _3; // in scope 1 at $SRC_DIR/core/src/mem/mod.rs:LL:COL + debug x => _1; + let mut _0: (); + let _2: (); + let mut _3: T; + scope 1 (inlined std::mem::drop::) { + debug _x => _3; } bb0: { -- nop; // scope 0 at $DIR/remove_unneeded_drops.rs:+1:5: +1:12 - StorageLive(_3); // scope 0 at $DIR/remove_unneeded_drops.rs:+1:10: +1:11 - _3 = _1; // scope 0 at $DIR/remove_unneeded_drops.rs:+1:10: +1:11 -- drop(_3) -> bb1; // scope 1 at $SRC_DIR/core/src/mem/mod.rs:LL:COL +- nop; + StorageLive(_3); + _3 = _1; +- drop(_3) -> bb1; - } - - bb1: { - StorageDead(_3); // scope 0 at $DIR/remove_unneeded_drops.rs:+1:11: +1:12 -- nop; // scope 0 at $DIR/remove_unneeded_drops.rs:+1:12: +1:13 -- nop; // scope 0 at $DIR/remove_unneeded_drops.rs:+0:36: +2:2 - return; // scope 0 at $DIR/remove_unneeded_drops.rs:+2:2: +2:2 + StorageDead(_3); +- nop; +- nop; + return; } } diff --git a/tests/mir-opt/remove_zsts.get_union.PreCodegen.after.mir b/tests/mir-opt/remove_zsts.get_union.PreCodegen.after.mir index 7ac9ef3d49013..5886a5bfeeade 100644 --- a/tests/mir-opt/remove_zsts.get_union.PreCodegen.after.mir +++ b/tests/mir-opt/remove_zsts.get_union.PreCodegen.after.mir @@ -1,10 +1,10 @@ // MIR for `get_union` after PreCodegen fn get_union() -> Foo { - let mut _0: Foo; // return place in scope 0 at $DIR/remove_zsts.rs:+0:19: +0:22 + let mut _0: Foo; bb0: { - _0 = Foo { x: const () }; // scope 0 at $DIR/remove_zsts.rs:+1:5: +1:18 - return; // scope 0 at $DIR/remove_zsts.rs:+2:2: +2:2 + _0 = Foo { x: const () }; + return; } } diff --git a/tests/mir-opt/remove_zsts.get_union.RemoveZsts.diff b/tests/mir-opt/remove_zsts.get_union.RemoveZsts.diff index edd86ef0aa97a..748c18ba7da97 100644 --- a/tests/mir-opt/remove_zsts.get_union.RemoveZsts.diff +++ b/tests/mir-opt/remove_zsts.get_union.RemoveZsts.diff @@ -2,19 +2,19 @@ + // MIR for `get_union` after RemoveZsts fn get_union() -> Foo { - let mut _0: Foo; // return place in scope 0 at $DIR/remove_zsts.rs:+0:19: +0:22 - let mut _1: (); // in scope 0 at $DIR/remove_zsts.rs:+1:14: +1:16 + let mut _0: Foo; + let mut _1: (); bb0: { -- StorageLive(_1); // scope 0 at $DIR/remove_zsts.rs:+1:14: +1:16 -- _1 = (); // scope 0 at $DIR/remove_zsts.rs:+1:14: +1:16 -- _0 = Foo { x: move _1 }; // scope 0 at $DIR/remove_zsts.rs:+1:5: +1:18 -- StorageDead(_1); // scope 0 at $DIR/remove_zsts.rs:+1:17: +1:18 -+ nop; // scope 0 at $DIR/remove_zsts.rs:+1:14: +1:16 -+ nop; // scope 0 at $DIR/remove_zsts.rs:+1:14: +1:16 -+ _0 = Foo { x: const () }; // scope 0 at $DIR/remove_zsts.rs:+1:5: +1:18 -+ nop; // scope 0 at $DIR/remove_zsts.rs:+1:17: +1:18 - return; // scope 0 at $DIR/remove_zsts.rs:+2:2: +2:2 +- StorageLive(_1); +- _1 = (); +- _0 = Foo { x: move _1 }; +- StorageDead(_1); ++ nop; ++ nop; ++ _0 = Foo { x: const () }; ++ nop; + return; } } diff --git a/tests/mir-opt/retag.array_casts.SimplifyCfg-elaborate-drops.after.panic-abort.mir b/tests/mir-opt/retag.array_casts.SimplifyCfg-elaborate-drops.after.panic-abort.mir index ff0f12fd63df5..3c48e798ef73a 100644 --- a/tests/mir-opt/retag.array_casts.SimplifyCfg-elaborate-drops.after.panic-abort.mir +++ b/tests/mir-opt/retag.array_casts.SimplifyCfg-elaborate-drops.after.panic-abort.mir @@ -1,59 +1,59 @@ // MIR for `array_casts` after SimplifyCfg-elaborate-drops fn array_casts() -> () { - let mut _0: (); // return place in scope 0 at $DIR/retag.rs:+0:18: +0:18 - let mut _1: [usize; 2]; // in scope 0 at $DIR/retag.rs:+1:9: +1:14 - let mut _3: *mut [usize; 2]; // in scope 0 at $DIR/retag.rs:+2:13: +2:19 - let mut _4: &mut [usize; 2]; // in scope 0 at $DIR/retag.rs:+2:13: +2:19 - let _5: (); // in scope 0 at $DIR/retag.rs:+3:5: +3:30 - let mut _6: *mut usize; // in scope 0 at $DIR/retag.rs:+3:15: +3:23 - let mut _7: *mut usize; // in scope 0 at $DIR/retag.rs:+3:15: +3:16 - let mut _10: *const [usize; 2]; // in scope 0 at $DIR/retag.rs:+6:13: +6:15 - let _11: &[usize; 2]; // in scope 0 at $DIR/retag.rs:+6:13: +6:15 - let _12: (); // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _13: (&usize, &usize); // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _14: &usize; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let _15: usize; // in scope 0 at $DIR/retag.rs:+7:16: +7:36 - let mut _16: *const usize; // in scope 0 at $DIR/retag.rs:+7:26: +7:34 - let mut _17: *const usize; // in scope 0 at $DIR/retag.rs:+7:26: +7:27 - let mut _18: &usize; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let _19: usize; // in scope 0 at $DIR/retag.rs:+7:38: +7:39 - let mut _22: bool; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _23: bool; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _24: usize; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _25: usize; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _26: !; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let _28: !; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _29: core::panicking::AssertKind; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _30: &usize; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let _31: &usize; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _32: &usize; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let _33: &usize; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _34: std::option::Option>; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL + let mut _0: (); + let mut _1: [usize; 2]; + let mut _3: *mut [usize; 2]; + let mut _4: &mut [usize; 2]; + let _5: (); + let mut _6: *mut usize; + let mut _7: *mut usize; + let mut _10: *const [usize; 2]; + let _11: &[usize; 2]; + let _12: (); + let mut _13: (&usize, &usize); + let mut _14: &usize; + let _15: usize; + let mut _16: *const usize; + let mut _17: *const usize; + let mut _18: &usize; + let _19: usize; + let mut _22: bool; + let mut _23: bool; + let mut _24: usize; + let mut _25: usize; + let mut _26: !; + let _28: !; + let mut _29: core::panicking::AssertKind; + let mut _30: &usize; + let _31: &usize; + let mut _32: &usize; + let _33: &usize; + let mut _34: std::option::Option>; scope 1 { - debug x => _1; // in scope 1 at $DIR/retag.rs:+1:9: +1:14 - let _2: *mut usize; // in scope 1 at $DIR/retag.rs:+2:9: +2:10 + debug x => _1; + let _2: *mut usize; scope 2 { - debug p => _2; // in scope 2 at $DIR/retag.rs:+2:9: +2:10 - let _8: [usize; 2]; // in scope 2 at $DIR/retag.rs:+5:9: +5:10 + debug p => _2; + let _8: [usize; 2]; scope 3 { } scope 4 { - debug x => _8; // in scope 4 at $DIR/retag.rs:+5:9: +5:10 - let _9: *const usize; // in scope 4 at $DIR/retag.rs:+6:9: +6:10 + debug x => _8; + let _9: *const usize; scope 5 { - debug p => _9; // in scope 5 at $DIR/retag.rs:+6:9: +6:10 - let _20: &usize; // in scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let _21: &usize; // in scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _35: &usize; // in scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL + debug p => _9; + let _20: &usize; + let _21: &usize; + let mut _35: &usize; scope 6 { } scope 7 { - debug left_val => _20; // in scope 7 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - debug right_val => _21; // in scope 7 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let _27: core::panicking::AssertKind; // in scope 7 at $SRC_DIR/core/src/macros/mod.rs:LL:COL + debug left_val => _20; + debug right_val => _21; + let _27: core::panicking::AssertKind; scope 8 { - debug kind => _27; // in scope 8 at $SRC_DIR/core/src/macros/mod.rs:LL:COL + debug kind => _27; } } } @@ -62,127 +62,115 @@ fn array_casts() -> () { } bb0: { - StorageLive(_1); // scope 0 at $DIR/retag.rs:+1:9: +1:14 - _1 = [const 0_usize, const 0_usize]; // scope 0 at $DIR/retag.rs:+1:29: +1:35 - StorageLive(_2); // scope 1 at $DIR/retag.rs:+2:9: +2:10 - StorageLive(_3); // scope 1 at $DIR/retag.rs:+2:13: +2:19 - StorageLive(_4); // scope 1 at $DIR/retag.rs:+2:13: +2:19 - _4 = &mut _1; // scope 1 at $DIR/retag.rs:+2:13: +2:19 - _3 = &raw mut (*_4); // scope 1 at $DIR/retag.rs:+2:13: +2:19 - _2 = move _3 as *mut usize (Pointer(ArrayToPointer)); // scope 1 at $DIR/retag.rs:+2:13: +2:33 - StorageDead(_3); // scope 1 at $DIR/retag.rs:+2:32: +2:33 - StorageDead(_4); // scope 1 at $DIR/retag.rs:+2:33: +2:34 - StorageLive(_5); // scope 2 at $DIR/retag.rs:+3:5: +3:30 - StorageLive(_6); // scope 3 at $DIR/retag.rs:+3:15: +3:23 - StorageLive(_7); // scope 3 at $DIR/retag.rs:+3:15: +3:16 - _7 = _2; // scope 3 at $DIR/retag.rs:+3:15: +3:16 - _6 = ptr::mut_ptr::::add(move _7, const 1_usize) -> [return: bb1, unwind unreachable]; // scope 3 at $DIR/retag.rs:+3:15: +3:23 - // mir::Constant - // + span: $DIR/retag.rs:61:17: 61:20 - // + literal: Const { ty: unsafe fn(*mut usize, usize) -> *mut usize {ptr::mut_ptr::::add}, val: Value() } + StorageLive(_1); + _1 = [const 0_usize, const 0_usize]; + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + _4 = &mut _1; + _3 = &raw mut (*_4); + _2 = move _3 as *mut usize (Pointer(ArrayToPointer)); + StorageDead(_3); + StorageDead(_4); + StorageLive(_5); + StorageLive(_6); + StorageLive(_7); + _7 = _2; + _6 = ptr::mut_ptr::::add(move _7, const 1_usize) -> [return: bb1, unwind unreachable]; } bb1: { - StorageDead(_7); // scope 3 at $DIR/retag.rs:+3:22: +3:23 - (*_6) = const 1_usize; // scope 3 at $DIR/retag.rs:+3:14: +3:27 - StorageDead(_6); // scope 3 at $DIR/retag.rs:+3:27: +3:28 - _5 = const (); // scope 3 at $DIR/retag.rs:+3:5: +3:30 - StorageDead(_5); // scope 2 at $DIR/retag.rs:+3:29: +3:30 - StorageLive(_8); // scope 2 at $DIR/retag.rs:+5:9: +5:10 - _8 = [const 0_usize, const 1_usize]; // scope 2 at $DIR/retag.rs:+5:25: +5:31 - StorageLive(_9); // scope 4 at $DIR/retag.rs:+6:9: +6:10 - StorageLive(_10); // scope 4 at $DIR/retag.rs:+6:13: +6:15 - StorageLive(_11); // scope 4 at $DIR/retag.rs:+6:13: +6:15 - _11 = &_8; // scope 4 at $DIR/retag.rs:+6:13: +6:15 - _10 = &raw const (*_11); // scope 4 at $DIR/retag.rs:+6:13: +6:15 - _9 = move _10 as *const usize (Pointer(ArrayToPointer)); // scope 4 at $DIR/retag.rs:+6:13: +6:31 - StorageDead(_10); // scope 4 at $DIR/retag.rs:+6:30: +6:31 - StorageDead(_11); // scope 4 at $DIR/retag.rs:+6:31: +6:32 - StorageLive(_12); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_13); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_14); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_15); // scope 5 at $DIR/retag.rs:+7:16: +7:36 - StorageLive(_16); // scope 6 at $DIR/retag.rs:+7:26: +7:34 - StorageLive(_17); // scope 6 at $DIR/retag.rs:+7:26: +7:27 - _17 = _9; // scope 6 at $DIR/retag.rs:+7:26: +7:27 - _16 = ptr::const_ptr::::add(move _17, const 1_usize) -> [return: bb2, unwind unreachable]; // scope 6 at $DIR/retag.rs:+7:26: +7:34 - // mir::Constant - // + span: $DIR/retag.rs:65:28: 65:31 - // + literal: Const { ty: unsafe fn(*const usize, usize) -> *const usize {ptr::const_ptr::::add}, val: Value() } + StorageDead(_7); + (*_6) = const 1_usize; + StorageDead(_6); + _5 = const (); + StorageDead(_5); + StorageLive(_8); + _8 = [const 0_usize, const 1_usize]; + StorageLive(_9); + StorageLive(_10); + StorageLive(_11); + _11 = &_8; + _10 = &raw const (*_11); + _9 = move _10 as *const usize (Pointer(ArrayToPointer)); + StorageDead(_10); + StorageDead(_11); + StorageLive(_12); + StorageLive(_13); + StorageLive(_14); + StorageLive(_15); + StorageLive(_16); + StorageLive(_17); + _17 = _9; + _16 = ptr::const_ptr::::add(move _17, const 1_usize) -> [return: bb2, unwind unreachable]; } bb2: { - StorageDead(_17); // scope 6 at $DIR/retag.rs:+7:33: +7:34 - _15 = (*_16); // scope 6 at $DIR/retag.rs:+7:25: +7:34 - _14 = &_15; // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_18); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _35 = const _; // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/core/src/macros/mod.rs:LL:COL - // + literal: Const { ty: &usize, val: Unevaluated(array_casts, [], Some(promoted[0])) } - Retag(_35); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _18 = &(*_35); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _13 = (move _14, move _18); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - Retag(_13); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_18); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_14); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_20); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _20 = (_13.0: &usize); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - Retag(_20); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_21); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _21 = (_13.1: &usize); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - Retag(_21); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_22); // scope 7 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_23); // scope 7 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_24); // scope 7 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _24 = (*_20); // scope 7 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_25); // scope 7 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _25 = (*_21); // scope 7 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _23 = Eq(move _24, move _25); // scope 7 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_25); // scope 7 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_24); // scope 7 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _22 = Not(move _23); // scope 7 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_23); // scope 7 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - switchInt(move _22) -> [0: bb4, otherwise: bb3]; // scope 7 at $SRC_DIR/core/src/macros/mod.rs:LL:COL + StorageDead(_17); + _15 = (*_16); + _14 = &_15; + StorageLive(_18); + _35 = const _; + Retag(_35); + _18 = &(*_35); + _13 = (move _14, move _18); + Retag(_13); + StorageDead(_18); + StorageDead(_14); + StorageLive(_20); + _20 = (_13.0: &usize); + Retag(_20); + StorageLive(_21); + _21 = (_13.1: &usize); + Retag(_21); + StorageLive(_22); + StorageLive(_23); + StorageLive(_24); + _24 = (*_20); + StorageLive(_25); + _25 = (*_21); + _23 = Eq(move _24, move _25); + StorageDead(_25); + StorageDead(_24); + _22 = Not(move _23); + StorageDead(_23); + switchInt(move _22) -> [0: bb4, otherwise: bb3]; } bb3: { - StorageLive(_27); // scope 7 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _27 = core::panicking::AssertKind::Eq; // scope 7 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_28); // scope 8 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_29); // scope 8 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _29 = move _27; // scope 8 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_30); // scope 8 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_31); // scope 8 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _31 = &(*_20); // scope 8 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _30 = &(*_31); // scope 8 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_32); // scope 8 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_33); // scope 8 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _33 = &(*_21); // scope 8 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _32 = &(*_33); // scope 8 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_34); // scope 8 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _34 = Option::>::None; // scope 8 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - Retag(_34); // scope 8 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _28 = core::panicking::assert_failed::(move _29, move _30, move _32, move _34) -> unwind unreachable; // scope 8 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/core/src/macros/mod.rs:LL:COL - // + literal: Const { ty: for<'a, 'b, 'c> fn(core::panicking::AssertKind, &'a usize, &'b usize, Option>) -> ! {core::panicking::assert_failed::}, val: Value() } + StorageLive(_27); + _27 = core::panicking::AssertKind::Eq; + StorageLive(_28); + StorageLive(_29); + _29 = move _27; + StorageLive(_30); + StorageLive(_31); + _31 = &(*_20); + _30 = &(*_31); + StorageLive(_32); + StorageLive(_33); + _33 = &(*_21); + _32 = &(*_33); + StorageLive(_34); + _34 = Option::>::None; + Retag(_34); + _28 = core::panicking::assert_failed::(move _29, move _30, move _32, move _34) -> unwind unreachable; } bb4: { - _12 = const (); // scope 7 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_22); // scope 7 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_21); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_20); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_16); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_15); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_13); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_12); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _0 = const (); // scope 0 at $DIR/retag.rs:+0:18: +8:2 - StorageDead(_9); // scope 4 at $DIR/retag.rs:+8:1: +8:2 - StorageDead(_8); // scope 2 at $DIR/retag.rs:+8:1: +8:2 - StorageDead(_2); // scope 1 at $DIR/retag.rs:+8:1: +8:2 - StorageDead(_1); // scope 0 at $DIR/retag.rs:+8:1: +8:2 - return; // scope 0 at $DIR/retag.rs:+8:2: +8:2 + _12 = const (); + StorageDead(_22); + StorageDead(_21); + StorageDead(_20); + StorageDead(_16); + StorageDead(_15); + StorageDead(_13); + StorageDead(_12); + _0 = const (); + StorageDead(_9); + StorageDead(_8); + StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/retag.array_casts.SimplifyCfg-elaborate-drops.after.panic-unwind.mir b/tests/mir-opt/retag.array_casts.SimplifyCfg-elaborate-drops.after.panic-unwind.mir index 3b479710b4f2d..18eb21d6542e0 100644 --- a/tests/mir-opt/retag.array_casts.SimplifyCfg-elaborate-drops.after.panic-unwind.mir +++ b/tests/mir-opt/retag.array_casts.SimplifyCfg-elaborate-drops.after.panic-unwind.mir @@ -1,59 +1,59 @@ // MIR for `array_casts` after SimplifyCfg-elaborate-drops fn array_casts() -> () { - let mut _0: (); // return place in scope 0 at $DIR/retag.rs:+0:18: +0:18 - let mut _1: [usize; 2]; // in scope 0 at $DIR/retag.rs:+1:9: +1:14 - let mut _3: *mut [usize; 2]; // in scope 0 at $DIR/retag.rs:+2:13: +2:19 - let mut _4: &mut [usize; 2]; // in scope 0 at $DIR/retag.rs:+2:13: +2:19 - let _5: (); // in scope 0 at $DIR/retag.rs:+3:5: +3:30 - let mut _6: *mut usize; // in scope 0 at $DIR/retag.rs:+3:15: +3:23 - let mut _7: *mut usize; // in scope 0 at $DIR/retag.rs:+3:15: +3:16 - let mut _10: *const [usize; 2]; // in scope 0 at $DIR/retag.rs:+6:13: +6:15 - let _11: &[usize; 2]; // in scope 0 at $DIR/retag.rs:+6:13: +6:15 - let _12: (); // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _13: (&usize, &usize); // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _14: &usize; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let _15: usize; // in scope 0 at $DIR/retag.rs:+7:16: +7:36 - let mut _16: *const usize; // in scope 0 at $DIR/retag.rs:+7:26: +7:34 - let mut _17: *const usize; // in scope 0 at $DIR/retag.rs:+7:26: +7:27 - let mut _18: &usize; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let _19: usize; // in scope 0 at $DIR/retag.rs:+7:38: +7:39 - let mut _22: bool; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _23: bool; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _24: usize; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _25: usize; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _26: !; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let _28: !; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _29: core::panicking::AssertKind; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _30: &usize; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let _31: &usize; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _32: &usize; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let _33: &usize; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _34: std::option::Option>; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL + let mut _0: (); + let mut _1: [usize; 2]; + let mut _3: *mut [usize; 2]; + let mut _4: &mut [usize; 2]; + let _5: (); + let mut _6: *mut usize; + let mut _7: *mut usize; + let mut _10: *const [usize; 2]; + let _11: &[usize; 2]; + let _12: (); + let mut _13: (&usize, &usize); + let mut _14: &usize; + let _15: usize; + let mut _16: *const usize; + let mut _17: *const usize; + let mut _18: &usize; + let _19: usize; + let mut _22: bool; + let mut _23: bool; + let mut _24: usize; + let mut _25: usize; + let mut _26: !; + let _28: !; + let mut _29: core::panicking::AssertKind; + let mut _30: &usize; + let _31: &usize; + let mut _32: &usize; + let _33: &usize; + let mut _34: std::option::Option>; scope 1 { - debug x => _1; // in scope 1 at $DIR/retag.rs:+1:9: +1:14 - let _2: *mut usize; // in scope 1 at $DIR/retag.rs:+2:9: +2:10 + debug x => _1; + let _2: *mut usize; scope 2 { - debug p => _2; // in scope 2 at $DIR/retag.rs:+2:9: +2:10 - let _8: [usize; 2]; // in scope 2 at $DIR/retag.rs:+5:9: +5:10 + debug p => _2; + let _8: [usize; 2]; scope 3 { } scope 4 { - debug x => _8; // in scope 4 at $DIR/retag.rs:+5:9: +5:10 - let _9: *const usize; // in scope 4 at $DIR/retag.rs:+6:9: +6:10 + debug x => _8; + let _9: *const usize; scope 5 { - debug p => _9; // in scope 5 at $DIR/retag.rs:+6:9: +6:10 - let _20: &usize; // in scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let _21: &usize; // in scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let mut _35: &usize; // in scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL + debug p => _9; + let _20: &usize; + let _21: &usize; + let mut _35: &usize; scope 6 { } scope 7 { - debug left_val => _20; // in scope 7 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - debug right_val => _21; // in scope 7 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - let _27: core::panicking::AssertKind; // in scope 7 at $SRC_DIR/core/src/macros/mod.rs:LL:COL + debug left_val => _20; + debug right_val => _21; + let _27: core::panicking::AssertKind; scope 8 { - debug kind => _27; // in scope 8 at $SRC_DIR/core/src/macros/mod.rs:LL:COL + debug kind => _27; } } } @@ -62,127 +62,115 @@ fn array_casts() -> () { } bb0: { - StorageLive(_1); // scope 0 at $DIR/retag.rs:+1:9: +1:14 - _1 = [const 0_usize, const 0_usize]; // scope 0 at $DIR/retag.rs:+1:29: +1:35 - StorageLive(_2); // scope 1 at $DIR/retag.rs:+2:9: +2:10 - StorageLive(_3); // scope 1 at $DIR/retag.rs:+2:13: +2:19 - StorageLive(_4); // scope 1 at $DIR/retag.rs:+2:13: +2:19 - _4 = &mut _1; // scope 1 at $DIR/retag.rs:+2:13: +2:19 - _3 = &raw mut (*_4); // scope 1 at $DIR/retag.rs:+2:13: +2:19 - _2 = move _3 as *mut usize (Pointer(ArrayToPointer)); // scope 1 at $DIR/retag.rs:+2:13: +2:33 - StorageDead(_3); // scope 1 at $DIR/retag.rs:+2:32: +2:33 - StorageDead(_4); // scope 1 at $DIR/retag.rs:+2:33: +2:34 - StorageLive(_5); // scope 2 at $DIR/retag.rs:+3:5: +3:30 - StorageLive(_6); // scope 3 at $DIR/retag.rs:+3:15: +3:23 - StorageLive(_7); // scope 3 at $DIR/retag.rs:+3:15: +3:16 - _7 = _2; // scope 3 at $DIR/retag.rs:+3:15: +3:16 - _6 = ptr::mut_ptr::::add(move _7, const 1_usize) -> bb1; // scope 3 at $DIR/retag.rs:+3:15: +3:23 - // mir::Constant - // + span: $DIR/retag.rs:61:17: 61:20 - // + literal: Const { ty: unsafe fn(*mut usize, usize) -> *mut usize {ptr::mut_ptr::::add}, val: Value() } + StorageLive(_1); + _1 = [const 0_usize, const 0_usize]; + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + _4 = &mut _1; + _3 = &raw mut (*_4); + _2 = move _3 as *mut usize (Pointer(ArrayToPointer)); + StorageDead(_3); + StorageDead(_4); + StorageLive(_5); + StorageLive(_6); + StorageLive(_7); + _7 = _2; + _6 = ptr::mut_ptr::::add(move _7, const 1_usize) -> bb1; } bb1: { - StorageDead(_7); // scope 3 at $DIR/retag.rs:+3:22: +3:23 - (*_6) = const 1_usize; // scope 3 at $DIR/retag.rs:+3:14: +3:27 - StorageDead(_6); // scope 3 at $DIR/retag.rs:+3:27: +3:28 - _5 = const (); // scope 3 at $DIR/retag.rs:+3:5: +3:30 - StorageDead(_5); // scope 2 at $DIR/retag.rs:+3:29: +3:30 - StorageLive(_8); // scope 2 at $DIR/retag.rs:+5:9: +5:10 - _8 = [const 0_usize, const 1_usize]; // scope 2 at $DIR/retag.rs:+5:25: +5:31 - StorageLive(_9); // scope 4 at $DIR/retag.rs:+6:9: +6:10 - StorageLive(_10); // scope 4 at $DIR/retag.rs:+6:13: +6:15 - StorageLive(_11); // scope 4 at $DIR/retag.rs:+6:13: +6:15 - _11 = &_8; // scope 4 at $DIR/retag.rs:+6:13: +6:15 - _10 = &raw const (*_11); // scope 4 at $DIR/retag.rs:+6:13: +6:15 - _9 = move _10 as *const usize (Pointer(ArrayToPointer)); // scope 4 at $DIR/retag.rs:+6:13: +6:31 - StorageDead(_10); // scope 4 at $DIR/retag.rs:+6:30: +6:31 - StorageDead(_11); // scope 4 at $DIR/retag.rs:+6:31: +6:32 - StorageLive(_12); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_13); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_14); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_15); // scope 5 at $DIR/retag.rs:+7:16: +7:36 - StorageLive(_16); // scope 6 at $DIR/retag.rs:+7:26: +7:34 - StorageLive(_17); // scope 6 at $DIR/retag.rs:+7:26: +7:27 - _17 = _9; // scope 6 at $DIR/retag.rs:+7:26: +7:27 - _16 = ptr::const_ptr::::add(move _17, const 1_usize) -> bb2; // scope 6 at $DIR/retag.rs:+7:26: +7:34 - // mir::Constant - // + span: $DIR/retag.rs:65:28: 65:31 - // + literal: Const { ty: unsafe fn(*const usize, usize) -> *const usize {ptr::const_ptr::::add}, val: Value() } + StorageDead(_7); + (*_6) = const 1_usize; + StorageDead(_6); + _5 = const (); + StorageDead(_5); + StorageLive(_8); + _8 = [const 0_usize, const 1_usize]; + StorageLive(_9); + StorageLive(_10); + StorageLive(_11); + _11 = &_8; + _10 = &raw const (*_11); + _9 = move _10 as *const usize (Pointer(ArrayToPointer)); + StorageDead(_10); + StorageDead(_11); + StorageLive(_12); + StorageLive(_13); + StorageLive(_14); + StorageLive(_15); + StorageLive(_16); + StorageLive(_17); + _17 = _9; + _16 = ptr::const_ptr::::add(move _17, const 1_usize) -> bb2; } bb2: { - StorageDead(_17); // scope 6 at $DIR/retag.rs:+7:33: +7:34 - _15 = (*_16); // scope 6 at $DIR/retag.rs:+7:25: +7:34 - _14 = &_15; // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_18); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _35 = const _; // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/core/src/macros/mod.rs:LL:COL - // + literal: Const { ty: &usize, val: Unevaluated(array_casts, [], Some(promoted[0])) } - Retag(_35); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _18 = &(*_35); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _13 = (move _14, move _18); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - Retag(_13); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_18); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_14); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_20); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _20 = (_13.0: &usize); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - Retag(_20); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_21); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _21 = (_13.1: &usize); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - Retag(_21); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_22); // scope 7 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_23); // scope 7 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_24); // scope 7 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _24 = (*_20); // scope 7 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_25); // scope 7 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _25 = (*_21); // scope 7 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _23 = Eq(move _24, move _25); // scope 7 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_25); // scope 7 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_24); // scope 7 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _22 = Not(move _23); // scope 7 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_23); // scope 7 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - switchInt(move _22) -> [0: bb4, otherwise: bb3]; // scope 7 at $SRC_DIR/core/src/macros/mod.rs:LL:COL + StorageDead(_17); + _15 = (*_16); + _14 = &_15; + StorageLive(_18); + _35 = const _; + Retag(_35); + _18 = &(*_35); + _13 = (move _14, move _18); + Retag(_13); + StorageDead(_18); + StorageDead(_14); + StorageLive(_20); + _20 = (_13.0: &usize); + Retag(_20); + StorageLive(_21); + _21 = (_13.1: &usize); + Retag(_21); + StorageLive(_22); + StorageLive(_23); + StorageLive(_24); + _24 = (*_20); + StorageLive(_25); + _25 = (*_21); + _23 = Eq(move _24, move _25); + StorageDead(_25); + StorageDead(_24); + _22 = Not(move _23); + StorageDead(_23); + switchInt(move _22) -> [0: bb4, otherwise: bb3]; } bb3: { - StorageLive(_27); // scope 7 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _27 = core::panicking::AssertKind::Eq; // scope 7 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_28); // scope 8 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_29); // scope 8 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _29 = move _27; // scope 8 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_30); // scope 8 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_31); // scope 8 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _31 = &(*_20); // scope 8 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _30 = &(*_31); // scope 8 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_32); // scope 8 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_33); // scope 8 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _33 = &(*_21); // scope 8 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _32 = &(*_33); // scope 8 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageLive(_34); // scope 8 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _34 = Option::>::None; // scope 8 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - Retag(_34); // scope 8 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _28 = core::panicking::assert_failed::(move _29, move _30, move _32, move _34); // scope 8 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/core/src/macros/mod.rs:LL:COL - // + literal: Const { ty: for<'a, 'b, 'c> fn(core::panicking::AssertKind, &'a usize, &'b usize, Option>) -> ! {core::panicking::assert_failed::}, val: Value() } + StorageLive(_27); + _27 = core::panicking::AssertKind::Eq; + StorageLive(_28); + StorageLive(_29); + _29 = move _27; + StorageLive(_30); + StorageLive(_31); + _31 = &(*_20); + _30 = &(*_31); + StorageLive(_32); + StorageLive(_33); + _33 = &(*_21); + _32 = &(*_33); + StorageLive(_34); + _34 = Option::>::None; + Retag(_34); + _28 = core::panicking::assert_failed::(move _29, move _30, move _32, move _34); } bb4: { - _12 = const (); // scope 7 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_22); // scope 7 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_21); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_20); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_16); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_15); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_13); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - StorageDead(_12); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL - _0 = const (); // scope 0 at $DIR/retag.rs:+0:18: +8:2 - StorageDead(_9); // scope 4 at $DIR/retag.rs:+8:1: +8:2 - StorageDead(_8); // scope 2 at $DIR/retag.rs:+8:1: +8:2 - StorageDead(_2); // scope 1 at $DIR/retag.rs:+8:1: +8:2 - StorageDead(_1); // scope 0 at $DIR/retag.rs:+8:1: +8:2 - return; // scope 0 at $DIR/retag.rs:+8:2: +8:2 + _12 = const (); + StorageDead(_22); + StorageDead(_21); + StorageDead(_20); + StorageDead(_16); + StorageDead(_15); + StorageDead(_13); + StorageDead(_12); + _0 = const (); + StorageDead(_9); + StorageDead(_8); + StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/retag.core.ptr-drop_in_place.Test.SimplifyCfg-make_shim.after.panic-abort.mir b/tests/mir-opt/retag.core.ptr-drop_in_place.Test.SimplifyCfg-make_shim.after.panic-abort.mir index 7de6c67980a19..146f4240f308a 100644 --- a/tests/mir-opt/retag.core.ptr-drop_in_place.Test.SimplifyCfg-make_shim.after.panic-abort.mir +++ b/tests/mir-opt/retag.core.ptr-drop_in_place.Test.SimplifyCfg-make_shim.after.panic-abort.mir @@ -1,26 +1,23 @@ // MIR for `std::ptr::drop_in_place` after SimplifyCfg-make_shim fn std::ptr::drop_in_place(_1: *mut Test) -> () { - let mut _0: (); // return place in scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 - let mut _2: &mut Test; // in scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 - let mut _3: &mut Test; // in scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 - let mut _4: (); // in scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 + let mut _0: (); + let mut _2: &mut Test; + let mut _3: &mut Test; + let mut _4: (); bb0: { - _2 = &mut (*_1); // scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 - Retag([fn entry] _2); // scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 - _3 = &mut (*_2); // scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 - _4 = ::drop(move _3) -> [return: bb2, unwind: bb1]; // scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 - // mir::Constant - // + span: $SRC_DIR/core/src/ptr/mod.rs:LL:COL - // + literal: Const { ty: for<'a> fn(&'a mut Test) {::drop}, val: Value() } + _2 = &mut (*_1); + Retag([fn entry] _2); + _3 = &mut (*_2); + _4 = ::drop(move _3) -> [return: bb2, unwind: bb1]; } bb1 (cleanup): { - resume; // scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 + resume; } bb2: { - return; // scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 + return; } } diff --git a/tests/mir-opt/retag.core.ptr-drop_in_place.Test.SimplifyCfg-make_shim.after.panic-unwind.mir b/tests/mir-opt/retag.core.ptr-drop_in_place.Test.SimplifyCfg-make_shim.after.panic-unwind.mir index f495f147be3df..96d2abf98b4fd 100644 --- a/tests/mir-opt/retag.core.ptr-drop_in_place.Test.SimplifyCfg-make_shim.after.panic-unwind.mir +++ b/tests/mir-opt/retag.core.ptr-drop_in_place.Test.SimplifyCfg-make_shim.after.panic-unwind.mir @@ -1,22 +1,19 @@ // MIR for `std::ptr::drop_in_place` after SimplifyCfg-make_shim fn std::ptr::drop_in_place(_1: *mut Test) -> () { - let mut _0: (); // return place in scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 - let mut _2: &mut Test; // in scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 - let mut _3: &mut Test; // in scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 - let mut _4: (); // in scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 + let mut _0: (); + let mut _2: &mut Test; + let mut _3: &mut Test; + let mut _4: (); bb0: { - _2 = &mut (*_1); // scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 - Retag([fn entry] _2); // scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 - _3 = &mut (*_2); // scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 - _4 = ::drop(move _3) -> bb1; // scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 - // mir::Constant - // + span: $SRC_DIR/core/src/ptr/mod.rs:LL:COL - // + literal: Const { ty: for<'a> fn(&'a mut Test) {::drop}, val: Value() } + _2 = &mut (*_1); + Retag([fn entry] _2); + _3 = &mut (*_2); + _4 = ::drop(move _3) -> bb1; } bb1: { - return; // scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 + return; } } diff --git a/tests/mir-opt/retag.main-{closure#0}.SimplifyCfg-elaborate-drops.after.panic-abort.mir b/tests/mir-opt/retag.main-{closure#0}.SimplifyCfg-elaborate-drops.after.panic-abort.mir index 9e5c119a2b24e..4a3d197849b24 100644 --- a/tests/mir-opt/retag.main-{closure#0}.SimplifyCfg-elaborate-drops.after.panic-abort.mir +++ b/tests/mir-opt/retag.main-{closure#0}.SimplifyCfg-elaborate-drops.after.panic-abort.mir @@ -1,21 +1,21 @@ // MIR for `main::{closure#0}` after SimplifyCfg-elaborate-drops fn main::{closure#0}(_1: &[closure@main::{closure#0}], _2: &i32) -> &i32 { - debug x => _2; // in scope 0 at $DIR/retag.rs:+0:32: +0:33 - let mut _0: &i32; // return place in scope 0 at $DIR/retag.rs:+0:44: +0:48 - let _3: &i32; // in scope 0 at $DIR/retag.rs:+1:13: +1:15 + debug x => _2; + let mut _0: &i32; + let _3: &i32; scope 1 { - debug _y => _3; // in scope 1 at $DIR/retag.rs:+1:13: +1:15 + debug _y => _3; } bb0: { - Retag([fn entry] _1); // scope 0 at $DIR/retag.rs:+0:31: +3:6 - Retag([fn entry] _2); // scope 0 at $DIR/retag.rs:+0:32: +0:33 - StorageLive(_3); // scope 0 at $DIR/retag.rs:+1:13: +1:15 - _3 = _2; // scope 0 at $DIR/retag.rs:+1:18: +1:19 - Retag(_3); // scope 0 at $DIR/retag.rs:+1:18: +1:19 - _0 = &(*_2); // scope 1 at $DIR/retag.rs:+2:9: +2:10 - StorageDead(_3); // scope 0 at $DIR/retag.rs:+3:5: +3:6 - return; // scope 0 at $DIR/retag.rs:+3:6: +3:6 + Retag([fn entry] _1); + Retag([fn entry] _2); + StorageLive(_3); + _3 = _2; + Retag(_3); + _0 = &(*_2); + StorageDead(_3); + return; } } diff --git a/tests/mir-opt/retag.main-{closure#0}.SimplifyCfg-elaborate-drops.after.panic-unwind.mir b/tests/mir-opt/retag.main-{closure#0}.SimplifyCfg-elaborate-drops.after.panic-unwind.mir index 9e5c119a2b24e..4a3d197849b24 100644 --- a/tests/mir-opt/retag.main-{closure#0}.SimplifyCfg-elaborate-drops.after.panic-unwind.mir +++ b/tests/mir-opt/retag.main-{closure#0}.SimplifyCfg-elaborate-drops.after.panic-unwind.mir @@ -1,21 +1,21 @@ // MIR for `main::{closure#0}` after SimplifyCfg-elaborate-drops fn main::{closure#0}(_1: &[closure@main::{closure#0}], _2: &i32) -> &i32 { - debug x => _2; // in scope 0 at $DIR/retag.rs:+0:32: +0:33 - let mut _0: &i32; // return place in scope 0 at $DIR/retag.rs:+0:44: +0:48 - let _3: &i32; // in scope 0 at $DIR/retag.rs:+1:13: +1:15 + debug x => _2; + let mut _0: &i32; + let _3: &i32; scope 1 { - debug _y => _3; // in scope 1 at $DIR/retag.rs:+1:13: +1:15 + debug _y => _3; } bb0: { - Retag([fn entry] _1); // scope 0 at $DIR/retag.rs:+0:31: +3:6 - Retag([fn entry] _2); // scope 0 at $DIR/retag.rs:+0:32: +0:33 - StorageLive(_3); // scope 0 at $DIR/retag.rs:+1:13: +1:15 - _3 = _2; // scope 0 at $DIR/retag.rs:+1:18: +1:19 - Retag(_3); // scope 0 at $DIR/retag.rs:+1:18: +1:19 - _0 = &(*_2); // scope 1 at $DIR/retag.rs:+2:9: +2:10 - StorageDead(_3); // scope 0 at $DIR/retag.rs:+3:5: +3:6 - return; // scope 0 at $DIR/retag.rs:+3:6: +3:6 + Retag([fn entry] _1); + Retag([fn entry] _2); + StorageLive(_3); + _3 = _2; + Retag(_3); + _0 = &(*_2); + StorageDead(_3); + return; } } diff --git a/tests/mir-opt/retag.main.SimplifyCfg-elaborate-drops.after.panic-abort.mir b/tests/mir-opt/retag.main.SimplifyCfg-elaborate-drops.after.panic-abort.mir index 32d70a33bb68e..606a8ec44ecbe 100644 --- a/tests/mir-opt/retag.main.SimplifyCfg-elaborate-drops.after.panic-abort.mir +++ b/tests/mir-opt/retag.main.SimplifyCfg-elaborate-drops.after.panic-abort.mir @@ -1,187 +1,168 @@ // MIR for `main` after SimplifyCfg-elaborate-drops fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/retag.rs:+0:11: +0:11 - let mut _1: i32; // in scope 0 at $DIR/retag.rs:+1:9: +1:14 - let _2: (); // in scope 0 at $DIR/retag.rs:+2:5: +8:6 - let mut _4: &Test; // in scope 0 at $DIR/retag.rs:+3:17: +3:36 - let _5: Test; // in scope 0 at $DIR/retag.rs:+3:17: +3:24 - let mut _6: &mut i32; // in scope 0 at $DIR/retag.rs:+3:29: +3:35 - let mut _7: &mut i32; // in scope 0 at $DIR/retag.rs:+3:29: +3:35 - let mut _9: &mut i32; // in scope 0 at $DIR/retag.rs:+4:19: +4:20 - let mut _12: *mut i32; // in scope 0 at $DIR/retag.rs:+7:18: +7:29 - let mut _14: [closure@main::{closure#0}]; // in scope 0 at $DIR/retag.rs:+11:31: +14:6 - let mut _16: for<'a> fn(&'a i32) -> &'a i32; // in scope 0 at $DIR/retag.rs:+15:14: +15:15 - let mut _17: &i32; // in scope 0 at $DIR/retag.rs:+15:16: +15:18 - let _18: &i32; // in scope 0 at $DIR/retag.rs:+15:16: +15:18 - let _19: &i32; // in scope 0 at $DIR/retag.rs:+18:5: +18:24 - let mut _20: &Test; // in scope 0 at $DIR/retag.rs:+18:5: +18:24 - let _21: Test; // in scope 0 at $DIR/retag.rs:+18:5: +18:12 - let mut _22: &i32; // in scope 0 at $DIR/retag.rs:+18:21: +18:23 - let _23: &i32; // in scope 0 at $DIR/retag.rs:+18:21: +18:23 - let _24: i32; // in scope 0 at $DIR/retag.rs:+18:22: +18:23 - let mut _26: *const i32; // in scope 0 at $DIR/retag.rs:+21:14: +21:28 - let _27: (); // in scope 0 at $DIR/retag.rs:+23:5: +23:18 + let mut _0: (); + let mut _1: i32; + let _2: (); + let mut _4: &Test; + let _5: Test; + let mut _6: &mut i32; + let mut _7: &mut i32; + let mut _9: &mut i32; + let mut _12: *mut i32; + let mut _14: [closure@main::{closure#0}]; + let mut _16: for<'a> fn(&'a i32) -> &'a i32; + let mut _17: &i32; + let _18: &i32; + let _19: &i32; + let mut _20: &Test; + let _21: Test; + let mut _22: &i32; + let _23: &i32; + let _24: i32; + let mut _26: *const i32; + let _27: (); scope 1 { - debug x => _1; // in scope 1 at $DIR/retag.rs:+1:9: +1:14 - let _3: &mut i32; // in scope 1 at $DIR/retag.rs:+3:13: +3:14 - let _13: for<'a> fn(&'a i32) -> &'a i32; // in scope 1 at $DIR/retag.rs:+11:9: +11:10 + debug x => _1; + let _3: &mut i32; + let _13: for<'a> fn(&'a i32) -> &'a i32; scope 2 { - debug v => _3; // in scope 2 at $DIR/retag.rs:+3:13: +3:14 - let _8: &mut i32; // in scope 2 at $DIR/retag.rs:+4:13: +4:14 + debug v => _3; + let _8: &mut i32; scope 3 { - debug w => _8; // in scope 3 at $DIR/retag.rs:+4:13: +4:14 - let _10: &mut i32; // in scope 3 at $DIR/retag.rs:+5:13: +5:14 + debug w => _8; + let _10: &mut i32; scope 4 { - debug w => _10; // in scope 4 at $DIR/retag.rs:+5:13: +5:14 - let _11: *mut i32; // in scope 4 at $DIR/retag.rs:+7:13: +7:15 + debug w => _10; + let _11: *mut i32; scope 5 { - debug _w => _11; // in scope 5 at $DIR/retag.rs:+7:13: +7:15 + debug _w => _11; } } } } scope 6 { - debug c => _13; // in scope 6 at $DIR/retag.rs:+11:9: +11:10 - let _15: &i32; // in scope 6 at $DIR/retag.rs:+15:9: +15:11 + debug c => _13; + let _15: &i32; scope 7 { - debug _w => _15; // in scope 7 at $DIR/retag.rs:+15:9: +15:11 - let _25: *const i32; // in scope 7 at $DIR/retag.rs:+21:9: +21:11 - let mut _28: &i32; // in scope 7 at $DIR/retag.rs:+18:21: +18:23 + debug _w => _15; + let _25: *const i32; + let mut _28: &i32; scope 8 { - debug _w => _25; // in scope 8 at $DIR/retag.rs:+21:9: +21:11 + debug _w => _25; } } } } bb0: { - StorageLive(_1); // scope 0 at $DIR/retag.rs:+1:9: +1:14 - _1 = const 0_i32; // scope 0 at $DIR/retag.rs:+1:17: +1:18 - StorageLive(_2); // scope 1 at $DIR/retag.rs:+2:5: +8:6 - StorageLive(_3); // scope 1 at $DIR/retag.rs:+3:13: +3:14 - StorageLive(_4); // scope 1 at $DIR/retag.rs:+3:17: +3:36 - StorageLive(_5); // scope 1 at $DIR/retag.rs:+3:17: +3:24 - _5 = Test(const 0_i32); // scope 1 at $DIR/retag.rs:+3:17: +3:24 - _4 = &_5; // scope 1 at $DIR/retag.rs:+3:17: +3:36 - StorageLive(_6); // scope 1 at $DIR/retag.rs:+3:29: +3:35 - StorageLive(_7); // scope 1 at $DIR/retag.rs:+3:29: +3:35 - _7 = &mut _1; // scope 1 at $DIR/retag.rs:+3:29: +3:35 - _6 = &mut (*_7); // scope 1 at $DIR/retag.rs:+3:29: +3:35 - _3 = Test::foo(move _4, move _6) -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/retag.rs:+3:17: +3:36 - // mir::Constant - // + span: $DIR/retag.rs:33:25: 33:28 - // + literal: Const { ty: for<'a, 'x> fn(&'a Test, &'x mut i32) -> &'x mut i32 {Test::foo}, val: Value() } + StorageLive(_1); + _1 = const 0_i32; + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + StorageLive(_5); + _5 = Test(const 0_i32); + _4 = &_5; + StorageLive(_6); + StorageLive(_7); + _7 = &mut _1; + _6 = &mut (*_7); + _3 = Test::foo(move _4, move _6) -> [return: bb1, unwind unreachable]; } bb1: { - Retag(_3); // scope 1 at $DIR/retag.rs:+3:17: +3:36 - StorageDead(_6); // scope 1 at $DIR/retag.rs:+3:35: +3:36 - StorageDead(_4); // scope 1 at $DIR/retag.rs:+3:35: +3:36 - StorageDead(_7); // scope 1 at $DIR/retag.rs:+3:36: +3:37 - drop(_5) -> [return: bb2, unwind unreachable]; // scope 1 at $DIR/retag.rs:+3:36: +3:37 + Retag(_3); + StorageDead(_6); + StorageDead(_4); + StorageDead(_7); + drop(_5) -> [return: bb2, unwind unreachable]; } bb2: { - StorageDead(_5); // scope 1 at $DIR/retag.rs:+3:36: +3:37 - StorageLive(_8); // scope 2 at $DIR/retag.rs:+4:13: +4:14 - StorageLive(_9); // scope 2 at $DIR/retag.rs:+4:19: +4:20 - _9 = move _3; // scope 2 at $DIR/retag.rs:+4:19: +4:20 - Retag(_9); // scope 2 at $DIR/retag.rs:+4:19: +4:20 - _8 = &mut (*_9); // scope 2 at $DIR/retag.rs:+4:19: +4:20 - StorageDead(_9); // scope 2 at $DIR/retag.rs:+4:22: +4:23 - StorageLive(_10); // scope 3 at $DIR/retag.rs:+5:13: +5:14 - _10 = move _8; // scope 3 at $DIR/retag.rs:+5:17: +5:18 - Retag(_10); // scope 3 at $DIR/retag.rs:+5:17: +5:18 - StorageLive(_11); // scope 4 at $DIR/retag.rs:+7:13: +7:15 - StorageLive(_12); // scope 4 at $DIR/retag.rs:+7:18: +7:29 - _12 = &raw mut (*_10); // scope 4 at $DIR/retag.rs:+7:18: +7:19 - _11 = _12; // scope 4 at $DIR/retag.rs:+7:18: +7:29 - StorageDead(_12); // scope 4 at $DIR/retag.rs:+7:29: +7:30 - _2 = const (); // scope 1 at $DIR/retag.rs:+2:5: +8:6 - StorageDead(_11); // scope 4 at $DIR/retag.rs:+8:5: +8:6 - StorageDead(_10); // scope 3 at $DIR/retag.rs:+8:5: +8:6 - StorageDead(_8); // scope 2 at $DIR/retag.rs:+8:5: +8:6 - StorageDead(_3); // scope 1 at $DIR/retag.rs:+8:5: +8:6 - StorageDead(_2); // scope 1 at $DIR/retag.rs:+8:5: +8:6 - StorageLive(_13); // scope 1 at $DIR/retag.rs:+11:9: +11:10 - StorageLive(_14); // scope 1 at $DIR/retag.rs:+11:31: +14:6 - _14 = [closure@main::{closure#0}]; // scope 1 at $DIR/retag.rs:+11:31: +14:6 - // closure - // + def_id: DefId(0:14 ~ retag[7654]::main::{closure#0}) - // + substs: [ - // i8, - // for<'a> extern "rust-call" fn((&'a i32,)) -> &'a i32, - // (), - // ] - Retag(_14); // scope 1 at $DIR/retag.rs:+11:31: +14:6 - _13 = move _14 as for<'a> fn(&'a i32) -> &'a i32 (Pointer(ClosureFnPointer(Normal))); // scope 1 at $DIR/retag.rs:+11:31: +14:6 - StorageDead(_14); // scope 1 at $DIR/retag.rs:+11:47: +11:48 - StorageLive(_15); // scope 6 at $DIR/retag.rs:+15:9: +15:11 - StorageLive(_16); // scope 6 at $DIR/retag.rs:+15:14: +15:15 - _16 = _13; // scope 6 at $DIR/retag.rs:+15:14: +15:15 - StorageLive(_17); // scope 6 at $DIR/retag.rs:+15:16: +15:18 - StorageLive(_18); // scope 6 at $DIR/retag.rs:+15:16: +15:18 - _18 = &_1; // scope 6 at $DIR/retag.rs:+15:16: +15:18 - _17 = &(*_18); // scope 6 at $DIR/retag.rs:+15:16: +15:18 - _15 = move _16(move _17) -> [return: bb3, unwind unreachable]; // scope 6 at $DIR/retag.rs:+15:14: +15:19 + StorageDead(_5); + StorageLive(_8); + StorageLive(_9); + _9 = move _3; + Retag(_9); + _8 = &mut (*_9); + StorageDead(_9); + StorageLive(_10); + _10 = move _8; + Retag(_10); + StorageLive(_11); + StorageLive(_12); + _12 = &raw mut (*_10); + _11 = _12; + StorageDead(_12); + _2 = const (); + StorageDead(_11); + StorageDead(_10); + StorageDead(_8); + StorageDead(_3); + StorageDead(_2); + StorageLive(_13); + StorageLive(_14); + _14 = [closure@main::{closure#0}]; + Retag(_14); + _13 = move _14 as for<'a> fn(&'a i32) -> &'a i32 (Pointer(ClosureFnPointer(Normal))); + StorageDead(_14); + StorageLive(_15); + StorageLive(_16); + _16 = _13; + StorageLive(_17); + StorageLive(_18); + _18 = &_1; + _17 = &(*_18); + _15 = move _16(move _17) -> [return: bb3, unwind unreachable]; } bb3: { - Retag(_15); // scope 6 at $DIR/retag.rs:+15:14: +15:19 - StorageDead(_17); // scope 6 at $DIR/retag.rs:+15:18: +15:19 - StorageDead(_16); // scope 6 at $DIR/retag.rs:+15:18: +15:19 - StorageDead(_18); // scope 6 at $DIR/retag.rs:+15:19: +15:20 - StorageLive(_19); // scope 7 at $DIR/retag.rs:+18:5: +18:24 - StorageLive(_20); // scope 7 at $DIR/retag.rs:+18:5: +18:24 - StorageLive(_21); // scope 7 at $DIR/retag.rs:+18:5: +18:12 - _21 = Test(const 0_i32); // scope 7 at $DIR/retag.rs:+18:5: +18:12 - _20 = &_21; // scope 7 at $DIR/retag.rs:+18:5: +18:24 - StorageLive(_22); // scope 7 at $DIR/retag.rs:+18:21: +18:23 - StorageLive(_23); // scope 7 at $DIR/retag.rs:+18:21: +18:23 - _28 = const _; // scope 7 at $DIR/retag.rs:+18:21: +18:23 - // mir::Constant - // + span: $DIR/retag.rs:48:21: 48:23 - // + literal: Const { ty: &i32, val: Unevaluated(main, [], Some(promoted[0])) } - Retag(_28); // scope 7 at $DIR/retag.rs:+18:21: +18:23 - _23 = &(*_28); // scope 7 at $DIR/retag.rs:+18:21: +18:23 - _22 = &(*_23); // scope 7 at $DIR/retag.rs:+18:21: +18:23 - _19 = Test::foo_shr(move _20, move _22) -> [return: bb4, unwind unreachable]; // scope 7 at $DIR/retag.rs:+18:5: +18:24 - // mir::Constant - // + span: $DIR/retag.rs:48:13: 48:20 - // + literal: Const { ty: for<'a, 'x> fn(&'a Test, &'x i32) -> &'x i32 {Test::foo_shr}, val: Value() } + Retag(_15); + StorageDead(_17); + StorageDead(_16); + StorageDead(_18); + StorageLive(_19); + StorageLive(_20); + StorageLive(_21); + _21 = Test(const 0_i32); + _20 = &_21; + StorageLive(_22); + StorageLive(_23); + _28 = const _; + Retag(_28); + _23 = &(*_28); + _22 = &(*_23); + _19 = Test::foo_shr(move _20, move _22) -> [return: bb4, unwind unreachable]; } bb4: { - Retag(_19); // scope 7 at $DIR/retag.rs:+18:5: +18:24 - StorageDead(_22); // scope 7 at $DIR/retag.rs:+18:23: +18:24 - StorageDead(_20); // scope 7 at $DIR/retag.rs:+18:23: +18:24 - StorageDead(_23); // scope 7 at $DIR/retag.rs:+18:24: +18:25 - drop(_21) -> [return: bb5, unwind unreachable]; // scope 7 at $DIR/retag.rs:+18:24: +18:25 + Retag(_19); + StorageDead(_22); + StorageDead(_20); + StorageDead(_23); + drop(_21) -> [return: bb5, unwind unreachable]; } bb5: { - StorageDead(_21); // scope 7 at $DIR/retag.rs:+18:24: +18:25 - StorageDead(_19); // scope 7 at $DIR/retag.rs:+18:24: +18:25 - StorageLive(_25); // scope 7 at $DIR/retag.rs:+21:9: +21:11 - StorageLive(_26); // scope 7 at $DIR/retag.rs:+21:14: +21:28 - _26 = &raw const (*_15); // scope 7 at $DIR/retag.rs:+21:14: +21:16 - _25 = _26; // scope 7 at $DIR/retag.rs:+21:14: +21:28 - StorageDead(_26); // scope 7 at $DIR/retag.rs:+21:28: +21:29 - StorageLive(_27); // scope 8 at $DIR/retag.rs:+23:5: +23:18 - _27 = array_casts() -> [return: bb6, unwind unreachable]; // scope 8 at $DIR/retag.rs:+23:5: +23:18 - // mir::Constant - // + span: $DIR/retag.rs:53:5: 53:16 - // + literal: Const { ty: fn() {array_casts}, val: Value() } + StorageDead(_21); + StorageDead(_19); + StorageLive(_25); + StorageLive(_26); + _26 = &raw const (*_15); + _25 = _26; + StorageDead(_26); + StorageLive(_27); + _27 = array_casts() -> [return: bb6, unwind unreachable]; } bb6: { - StorageDead(_27); // scope 8 at $DIR/retag.rs:+23:18: +23:19 - _0 = const (); // scope 0 at $DIR/retag.rs:+0:11: +24:2 - StorageDead(_25); // scope 7 at $DIR/retag.rs:+24:1: +24:2 - StorageDead(_15); // scope 6 at $DIR/retag.rs:+24:1: +24:2 - StorageDead(_13); // scope 1 at $DIR/retag.rs:+24:1: +24:2 - StorageDead(_1); // scope 0 at $DIR/retag.rs:+24:1: +24:2 - return; // scope 0 at $DIR/retag.rs:+24:2: +24:2 + StorageDead(_27); + _0 = const (); + StorageDead(_25); + StorageDead(_15); + StorageDead(_13); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/retag.main.SimplifyCfg-elaborate-drops.after.panic-unwind.mir b/tests/mir-opt/retag.main.SimplifyCfg-elaborate-drops.after.panic-unwind.mir index 4eef028e1ccb9..483485f2942e6 100644 --- a/tests/mir-opt/retag.main.SimplifyCfg-elaborate-drops.after.panic-unwind.mir +++ b/tests/mir-opt/retag.main.SimplifyCfg-elaborate-drops.after.panic-unwind.mir @@ -1,199 +1,180 @@ // MIR for `main` after SimplifyCfg-elaborate-drops fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/retag.rs:+0:11: +0:11 - let mut _1: i32; // in scope 0 at $DIR/retag.rs:+1:9: +1:14 - let _2: (); // in scope 0 at $DIR/retag.rs:+2:5: +8:6 - let mut _4: &Test; // in scope 0 at $DIR/retag.rs:+3:17: +3:36 - let _5: Test; // in scope 0 at $DIR/retag.rs:+3:17: +3:24 - let mut _6: &mut i32; // in scope 0 at $DIR/retag.rs:+3:29: +3:35 - let mut _7: &mut i32; // in scope 0 at $DIR/retag.rs:+3:29: +3:35 - let mut _9: &mut i32; // in scope 0 at $DIR/retag.rs:+4:19: +4:20 - let mut _12: *mut i32; // in scope 0 at $DIR/retag.rs:+7:18: +7:29 - let mut _14: [closure@main::{closure#0}]; // in scope 0 at $DIR/retag.rs:+11:31: +14:6 - let mut _16: for<'a> fn(&'a i32) -> &'a i32; // in scope 0 at $DIR/retag.rs:+15:14: +15:15 - let mut _17: &i32; // in scope 0 at $DIR/retag.rs:+15:16: +15:18 - let _18: &i32; // in scope 0 at $DIR/retag.rs:+15:16: +15:18 - let _19: &i32; // in scope 0 at $DIR/retag.rs:+18:5: +18:24 - let mut _20: &Test; // in scope 0 at $DIR/retag.rs:+18:5: +18:24 - let _21: Test; // in scope 0 at $DIR/retag.rs:+18:5: +18:12 - let mut _22: &i32; // in scope 0 at $DIR/retag.rs:+18:21: +18:23 - let _23: &i32; // in scope 0 at $DIR/retag.rs:+18:21: +18:23 - let _24: i32; // in scope 0 at $DIR/retag.rs:+18:22: +18:23 - let mut _26: *const i32; // in scope 0 at $DIR/retag.rs:+21:14: +21:28 - let _27: (); // in scope 0 at $DIR/retag.rs:+23:5: +23:18 + let mut _0: (); + let mut _1: i32; + let _2: (); + let mut _4: &Test; + let _5: Test; + let mut _6: &mut i32; + let mut _7: &mut i32; + let mut _9: &mut i32; + let mut _12: *mut i32; + let mut _14: [closure@main::{closure#0}]; + let mut _16: for<'a> fn(&'a i32) -> &'a i32; + let mut _17: &i32; + let _18: &i32; + let _19: &i32; + let mut _20: &Test; + let _21: Test; + let mut _22: &i32; + let _23: &i32; + let _24: i32; + let mut _26: *const i32; + let _27: (); scope 1 { - debug x => _1; // in scope 1 at $DIR/retag.rs:+1:9: +1:14 - let _3: &mut i32; // in scope 1 at $DIR/retag.rs:+3:13: +3:14 - let _13: for<'a> fn(&'a i32) -> &'a i32; // in scope 1 at $DIR/retag.rs:+11:9: +11:10 + debug x => _1; + let _3: &mut i32; + let _13: for<'a> fn(&'a i32) -> &'a i32; scope 2 { - debug v => _3; // in scope 2 at $DIR/retag.rs:+3:13: +3:14 - let _8: &mut i32; // in scope 2 at $DIR/retag.rs:+4:13: +4:14 + debug v => _3; + let _8: &mut i32; scope 3 { - debug w => _8; // in scope 3 at $DIR/retag.rs:+4:13: +4:14 - let _10: &mut i32; // in scope 3 at $DIR/retag.rs:+5:13: +5:14 + debug w => _8; + let _10: &mut i32; scope 4 { - debug w => _10; // in scope 4 at $DIR/retag.rs:+5:13: +5:14 - let _11: *mut i32; // in scope 4 at $DIR/retag.rs:+7:13: +7:15 + debug w => _10; + let _11: *mut i32; scope 5 { - debug _w => _11; // in scope 5 at $DIR/retag.rs:+7:13: +7:15 + debug _w => _11; } } } } scope 6 { - debug c => _13; // in scope 6 at $DIR/retag.rs:+11:9: +11:10 - let _15: &i32; // in scope 6 at $DIR/retag.rs:+15:9: +15:11 + debug c => _13; + let _15: &i32; scope 7 { - debug _w => _15; // in scope 7 at $DIR/retag.rs:+15:9: +15:11 - let _25: *const i32; // in scope 7 at $DIR/retag.rs:+21:9: +21:11 - let mut _28: &i32; // in scope 7 at $DIR/retag.rs:+18:21: +18:23 + debug _w => _15; + let _25: *const i32; + let mut _28: &i32; scope 8 { - debug _w => _25; // in scope 8 at $DIR/retag.rs:+21:9: +21:11 + debug _w => _25; } } } } bb0: { - StorageLive(_1); // scope 0 at $DIR/retag.rs:+1:9: +1:14 - _1 = const 0_i32; // scope 0 at $DIR/retag.rs:+1:17: +1:18 - StorageLive(_2); // scope 1 at $DIR/retag.rs:+2:5: +8:6 - StorageLive(_3); // scope 1 at $DIR/retag.rs:+3:13: +3:14 - StorageLive(_4); // scope 1 at $DIR/retag.rs:+3:17: +3:36 - StorageLive(_5); // scope 1 at $DIR/retag.rs:+3:17: +3:24 - _5 = Test(const 0_i32); // scope 1 at $DIR/retag.rs:+3:17: +3:24 - _4 = &_5; // scope 1 at $DIR/retag.rs:+3:17: +3:36 - StorageLive(_6); // scope 1 at $DIR/retag.rs:+3:29: +3:35 - StorageLive(_7); // scope 1 at $DIR/retag.rs:+3:29: +3:35 - _7 = &mut _1; // scope 1 at $DIR/retag.rs:+3:29: +3:35 - _6 = &mut (*_7); // scope 1 at $DIR/retag.rs:+3:29: +3:35 - _3 = Test::foo(move _4, move _6) -> [return: bb1, unwind: bb8]; // scope 1 at $DIR/retag.rs:+3:17: +3:36 - // mir::Constant - // + span: $DIR/retag.rs:33:25: 33:28 - // + literal: Const { ty: for<'a, 'x> fn(&'a Test, &'x mut i32) -> &'x mut i32 {Test::foo}, val: Value() } + StorageLive(_1); + _1 = const 0_i32; + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + StorageLive(_5); + _5 = Test(const 0_i32); + _4 = &_5; + StorageLive(_6); + StorageLive(_7); + _7 = &mut _1; + _6 = &mut (*_7); + _3 = Test::foo(move _4, move _6) -> [return: bb1, unwind: bb8]; } bb1: { - Retag(_3); // scope 1 at $DIR/retag.rs:+3:17: +3:36 - StorageDead(_6); // scope 1 at $DIR/retag.rs:+3:35: +3:36 - StorageDead(_4); // scope 1 at $DIR/retag.rs:+3:35: +3:36 - StorageDead(_7); // scope 1 at $DIR/retag.rs:+3:36: +3:37 - drop(_5) -> [return: bb2, unwind: bb9]; // scope 1 at $DIR/retag.rs:+3:36: +3:37 + Retag(_3); + StorageDead(_6); + StorageDead(_4); + StorageDead(_7); + drop(_5) -> [return: bb2, unwind: bb9]; } bb2: { - StorageDead(_5); // scope 1 at $DIR/retag.rs:+3:36: +3:37 - StorageLive(_8); // scope 2 at $DIR/retag.rs:+4:13: +4:14 - StorageLive(_9); // scope 2 at $DIR/retag.rs:+4:19: +4:20 - _9 = move _3; // scope 2 at $DIR/retag.rs:+4:19: +4:20 - Retag(_9); // scope 2 at $DIR/retag.rs:+4:19: +4:20 - _8 = &mut (*_9); // scope 2 at $DIR/retag.rs:+4:19: +4:20 - StorageDead(_9); // scope 2 at $DIR/retag.rs:+4:22: +4:23 - StorageLive(_10); // scope 3 at $DIR/retag.rs:+5:13: +5:14 - _10 = move _8; // scope 3 at $DIR/retag.rs:+5:17: +5:18 - Retag(_10); // scope 3 at $DIR/retag.rs:+5:17: +5:18 - StorageLive(_11); // scope 4 at $DIR/retag.rs:+7:13: +7:15 - StorageLive(_12); // scope 4 at $DIR/retag.rs:+7:18: +7:29 - _12 = &raw mut (*_10); // scope 4 at $DIR/retag.rs:+7:18: +7:19 - _11 = _12; // scope 4 at $DIR/retag.rs:+7:18: +7:29 - StorageDead(_12); // scope 4 at $DIR/retag.rs:+7:29: +7:30 - _2 = const (); // scope 1 at $DIR/retag.rs:+2:5: +8:6 - StorageDead(_11); // scope 4 at $DIR/retag.rs:+8:5: +8:6 - StorageDead(_10); // scope 3 at $DIR/retag.rs:+8:5: +8:6 - StorageDead(_8); // scope 2 at $DIR/retag.rs:+8:5: +8:6 - StorageDead(_3); // scope 1 at $DIR/retag.rs:+8:5: +8:6 - StorageDead(_2); // scope 1 at $DIR/retag.rs:+8:5: +8:6 - StorageLive(_13); // scope 1 at $DIR/retag.rs:+11:9: +11:10 - StorageLive(_14); // scope 1 at $DIR/retag.rs:+11:31: +14:6 - _14 = [closure@main::{closure#0}]; // scope 1 at $DIR/retag.rs:+11:31: +14:6 - // closure - // + def_id: DefId(0:14 ~ retag[7654]::main::{closure#0}) - // + substs: [ - // i8, - // for<'a> extern "rust-call" fn((&'a i32,)) -> &'a i32, - // (), - // ] - Retag(_14); // scope 1 at $DIR/retag.rs:+11:31: +14:6 - _13 = move _14 as for<'a> fn(&'a i32) -> &'a i32 (Pointer(ClosureFnPointer(Normal))); // scope 1 at $DIR/retag.rs:+11:31: +14:6 - StorageDead(_14); // scope 1 at $DIR/retag.rs:+11:47: +11:48 - StorageLive(_15); // scope 6 at $DIR/retag.rs:+15:9: +15:11 - StorageLive(_16); // scope 6 at $DIR/retag.rs:+15:14: +15:15 - _16 = _13; // scope 6 at $DIR/retag.rs:+15:14: +15:15 - StorageLive(_17); // scope 6 at $DIR/retag.rs:+15:16: +15:18 - StorageLive(_18); // scope 6 at $DIR/retag.rs:+15:16: +15:18 - _18 = &_1; // scope 6 at $DIR/retag.rs:+15:16: +15:18 - _17 = &(*_18); // scope 6 at $DIR/retag.rs:+15:16: +15:18 - _15 = move _16(move _17) -> bb3; // scope 6 at $DIR/retag.rs:+15:14: +15:19 + StorageDead(_5); + StorageLive(_8); + StorageLive(_9); + _9 = move _3; + Retag(_9); + _8 = &mut (*_9); + StorageDead(_9); + StorageLive(_10); + _10 = move _8; + Retag(_10); + StorageLive(_11); + StorageLive(_12); + _12 = &raw mut (*_10); + _11 = _12; + StorageDead(_12); + _2 = const (); + StorageDead(_11); + StorageDead(_10); + StorageDead(_8); + StorageDead(_3); + StorageDead(_2); + StorageLive(_13); + StorageLive(_14); + _14 = [closure@main::{closure#0}]; + Retag(_14); + _13 = move _14 as for<'a> fn(&'a i32) -> &'a i32 (Pointer(ClosureFnPointer(Normal))); + StorageDead(_14); + StorageLive(_15); + StorageLive(_16); + _16 = _13; + StorageLive(_17); + StorageLive(_18); + _18 = &_1; + _17 = &(*_18); + _15 = move _16(move _17) -> bb3; } bb3: { - Retag(_15); // scope 6 at $DIR/retag.rs:+15:14: +15:19 - StorageDead(_17); // scope 6 at $DIR/retag.rs:+15:18: +15:19 - StorageDead(_16); // scope 6 at $DIR/retag.rs:+15:18: +15:19 - StorageDead(_18); // scope 6 at $DIR/retag.rs:+15:19: +15:20 - StorageLive(_19); // scope 7 at $DIR/retag.rs:+18:5: +18:24 - StorageLive(_20); // scope 7 at $DIR/retag.rs:+18:5: +18:24 - StorageLive(_21); // scope 7 at $DIR/retag.rs:+18:5: +18:12 - _21 = Test(const 0_i32); // scope 7 at $DIR/retag.rs:+18:5: +18:12 - _20 = &_21; // scope 7 at $DIR/retag.rs:+18:5: +18:24 - StorageLive(_22); // scope 7 at $DIR/retag.rs:+18:21: +18:23 - StorageLive(_23); // scope 7 at $DIR/retag.rs:+18:21: +18:23 - _28 = const _; // scope 7 at $DIR/retag.rs:+18:21: +18:23 - // mir::Constant - // + span: $DIR/retag.rs:48:21: 48:23 - // + literal: Const { ty: &i32, val: Unevaluated(main, [], Some(promoted[0])) } - Retag(_28); // scope 7 at $DIR/retag.rs:+18:21: +18:23 - _23 = &(*_28); // scope 7 at $DIR/retag.rs:+18:21: +18:23 - _22 = &(*_23); // scope 7 at $DIR/retag.rs:+18:21: +18:23 - _19 = Test::foo_shr(move _20, move _22) -> [return: bb4, unwind: bb7]; // scope 7 at $DIR/retag.rs:+18:5: +18:24 - // mir::Constant - // + span: $DIR/retag.rs:48:13: 48:20 - // + literal: Const { ty: for<'a, 'x> fn(&'a Test, &'x i32) -> &'x i32 {Test::foo_shr}, val: Value() } + Retag(_15); + StorageDead(_17); + StorageDead(_16); + StorageDead(_18); + StorageLive(_19); + StorageLive(_20); + StorageLive(_21); + _21 = Test(const 0_i32); + _20 = &_21; + StorageLive(_22); + StorageLive(_23); + _28 = const _; + Retag(_28); + _23 = &(*_28); + _22 = &(*_23); + _19 = Test::foo_shr(move _20, move _22) -> [return: bb4, unwind: bb7]; } bb4: { - Retag(_19); // scope 7 at $DIR/retag.rs:+18:5: +18:24 - StorageDead(_22); // scope 7 at $DIR/retag.rs:+18:23: +18:24 - StorageDead(_20); // scope 7 at $DIR/retag.rs:+18:23: +18:24 - StorageDead(_23); // scope 7 at $DIR/retag.rs:+18:24: +18:25 - drop(_21) -> [return: bb5, unwind: bb9]; // scope 7 at $DIR/retag.rs:+18:24: +18:25 + Retag(_19); + StorageDead(_22); + StorageDead(_20); + StorageDead(_23); + drop(_21) -> [return: bb5, unwind: bb9]; } bb5: { - StorageDead(_21); // scope 7 at $DIR/retag.rs:+18:24: +18:25 - StorageDead(_19); // scope 7 at $DIR/retag.rs:+18:24: +18:25 - StorageLive(_25); // scope 7 at $DIR/retag.rs:+21:9: +21:11 - StorageLive(_26); // scope 7 at $DIR/retag.rs:+21:14: +21:28 - _26 = &raw const (*_15); // scope 7 at $DIR/retag.rs:+21:14: +21:16 - _25 = _26; // scope 7 at $DIR/retag.rs:+21:14: +21:28 - StorageDead(_26); // scope 7 at $DIR/retag.rs:+21:28: +21:29 - StorageLive(_27); // scope 8 at $DIR/retag.rs:+23:5: +23:18 - _27 = array_casts() -> bb6; // scope 8 at $DIR/retag.rs:+23:5: +23:18 - // mir::Constant - // + span: $DIR/retag.rs:53:5: 53:16 - // + literal: Const { ty: fn() {array_casts}, val: Value() } + StorageDead(_21); + StorageDead(_19); + StorageLive(_25); + StorageLive(_26); + _26 = &raw const (*_15); + _25 = _26; + StorageDead(_26); + StorageLive(_27); + _27 = array_casts() -> bb6; } bb6: { - StorageDead(_27); // scope 8 at $DIR/retag.rs:+23:18: +23:19 - _0 = const (); // scope 0 at $DIR/retag.rs:+0:11: +24:2 - StorageDead(_25); // scope 7 at $DIR/retag.rs:+24:1: +24:2 - StorageDead(_15); // scope 6 at $DIR/retag.rs:+24:1: +24:2 - StorageDead(_13); // scope 1 at $DIR/retag.rs:+24:1: +24:2 - StorageDead(_1); // scope 0 at $DIR/retag.rs:+24:1: +24:2 - return; // scope 0 at $DIR/retag.rs:+24:2: +24:2 + StorageDead(_27); + _0 = const (); + StorageDead(_25); + StorageDead(_15); + StorageDead(_13); + StorageDead(_1); + return; } bb7 (cleanup): { - drop(_21) -> [return: bb9, unwind terminate]; // scope 7 at $DIR/retag.rs:+18:24: +18:25 + drop(_21) -> [return: bb9, unwind terminate]; } bb8 (cleanup): { - drop(_5) -> [return: bb9, unwind terminate]; // scope 1 at $DIR/retag.rs:+3:36: +3:37 + drop(_5) -> [return: bb9, unwind terminate]; } bb9 (cleanup): { - resume; // scope 0 at $DIR/retag.rs:+0:1: +24:2 + resume; } } diff --git a/tests/mir-opt/retag.{impl#0}-foo.SimplifyCfg-elaborate-drops.after.panic-abort.mir b/tests/mir-opt/retag.{impl#0}-foo.SimplifyCfg-elaborate-drops.after.panic-abort.mir index 4b50205fa8081..d724774407495 100644 --- a/tests/mir-opt/retag.{impl#0}-foo.SimplifyCfg-elaborate-drops.after.panic-abort.mir +++ b/tests/mir-opt/retag.{impl#0}-foo.SimplifyCfg-elaborate-drops.after.panic-abort.mir @@ -1,18 +1,18 @@ // MIR for `::foo` after SimplifyCfg-elaborate-drops fn ::foo(_1: &Test, _2: &mut i32) -> &mut i32 { - debug self => _1; // in scope 0 at $DIR/retag.rs:+0:16: +0:21 - debug x => _2; // in scope 0 at $DIR/retag.rs:+0:23: +0:24 - let mut _0: &mut i32; // return place in scope 0 at $DIR/retag.rs:+0:42: +0:53 - let mut _3: &mut i32; // in scope 0 at $DIR/retag.rs:+1:9: +1:10 + debug self => _1; + debug x => _2; + let mut _0: &mut i32; + let mut _3: &mut i32; bb0: { - Retag([fn entry] _1); // scope 0 at $DIR/retag.rs:+0:16: +0:21 - Retag([fn entry] _2); // scope 0 at $DIR/retag.rs:+0:23: +0:24 - StorageLive(_3); // scope 0 at $DIR/retag.rs:+1:9: +1:10 - _3 = &mut (*_2); // scope 0 at $DIR/retag.rs:+1:9: +1:10 - _0 = &mut (*_3); // scope 0 at $DIR/retag.rs:+1:9: +1:10 - StorageDead(_3); // scope 0 at $DIR/retag.rs:+2:5: +2:6 - return; // scope 0 at $DIR/retag.rs:+2:6: +2:6 + Retag([fn entry] _1); + Retag([fn entry] _2); + StorageLive(_3); + _3 = &mut (*_2); + _0 = &mut (*_3); + StorageDead(_3); + return; } } diff --git a/tests/mir-opt/retag.{impl#0}-foo.SimplifyCfg-elaborate-drops.after.panic-unwind.mir b/tests/mir-opt/retag.{impl#0}-foo.SimplifyCfg-elaborate-drops.after.panic-unwind.mir index 4b50205fa8081..d724774407495 100644 --- a/tests/mir-opt/retag.{impl#0}-foo.SimplifyCfg-elaborate-drops.after.panic-unwind.mir +++ b/tests/mir-opt/retag.{impl#0}-foo.SimplifyCfg-elaborate-drops.after.panic-unwind.mir @@ -1,18 +1,18 @@ // MIR for `::foo` after SimplifyCfg-elaborate-drops fn ::foo(_1: &Test, _2: &mut i32) -> &mut i32 { - debug self => _1; // in scope 0 at $DIR/retag.rs:+0:16: +0:21 - debug x => _2; // in scope 0 at $DIR/retag.rs:+0:23: +0:24 - let mut _0: &mut i32; // return place in scope 0 at $DIR/retag.rs:+0:42: +0:53 - let mut _3: &mut i32; // in scope 0 at $DIR/retag.rs:+1:9: +1:10 + debug self => _1; + debug x => _2; + let mut _0: &mut i32; + let mut _3: &mut i32; bb0: { - Retag([fn entry] _1); // scope 0 at $DIR/retag.rs:+0:16: +0:21 - Retag([fn entry] _2); // scope 0 at $DIR/retag.rs:+0:23: +0:24 - StorageLive(_3); // scope 0 at $DIR/retag.rs:+1:9: +1:10 - _3 = &mut (*_2); // scope 0 at $DIR/retag.rs:+1:9: +1:10 - _0 = &mut (*_3); // scope 0 at $DIR/retag.rs:+1:9: +1:10 - StorageDead(_3); // scope 0 at $DIR/retag.rs:+2:5: +2:6 - return; // scope 0 at $DIR/retag.rs:+2:6: +2:6 + Retag([fn entry] _1); + Retag([fn entry] _2); + StorageLive(_3); + _3 = &mut (*_2); + _0 = &mut (*_3); + StorageDead(_3); + return; } } diff --git a/tests/mir-opt/retag.{impl#0}-foo_shr.SimplifyCfg-elaborate-drops.after.panic-abort.mir b/tests/mir-opt/retag.{impl#0}-foo_shr.SimplifyCfg-elaborate-drops.after.panic-abort.mir index f32a84e4c791b..de3eb0d52cf72 100644 --- a/tests/mir-opt/retag.{impl#0}-foo_shr.SimplifyCfg-elaborate-drops.after.panic-abort.mir +++ b/tests/mir-opt/retag.{impl#0}-foo_shr.SimplifyCfg-elaborate-drops.after.panic-abort.mir @@ -1,15 +1,15 @@ // MIR for `::foo_shr` after SimplifyCfg-elaborate-drops fn ::foo_shr(_1: &Test, _2: &i32) -> &i32 { - debug self => _1; // in scope 0 at $DIR/retag.rs:+0:20: +0:25 - debug x => _2; // in scope 0 at $DIR/retag.rs:+0:27: +0:28 - let mut _0: &i32; // return place in scope 0 at $DIR/retag.rs:+0:42: +0:49 + debug self => _1; + debug x => _2; + let mut _0: &i32; bb0: { - Retag([fn entry] _1); // scope 0 at $DIR/retag.rs:+0:20: +0:25 - Retag([fn entry] _2); // scope 0 at $DIR/retag.rs:+0:27: +0:28 - _0 = _2; // scope 0 at $DIR/retag.rs:+1:9: +1:10 - Retag(_0); // scope 0 at $DIR/retag.rs:+1:9: +1:10 - return; // scope 0 at $DIR/retag.rs:+2:6: +2:6 + Retag([fn entry] _1); + Retag([fn entry] _2); + _0 = _2; + Retag(_0); + return; } } diff --git a/tests/mir-opt/retag.{impl#0}-foo_shr.SimplifyCfg-elaborate-drops.after.panic-unwind.mir b/tests/mir-opt/retag.{impl#0}-foo_shr.SimplifyCfg-elaborate-drops.after.panic-unwind.mir index f32a84e4c791b..de3eb0d52cf72 100644 --- a/tests/mir-opt/retag.{impl#0}-foo_shr.SimplifyCfg-elaborate-drops.after.panic-unwind.mir +++ b/tests/mir-opt/retag.{impl#0}-foo_shr.SimplifyCfg-elaborate-drops.after.panic-unwind.mir @@ -1,15 +1,15 @@ // MIR for `::foo_shr` after SimplifyCfg-elaborate-drops fn ::foo_shr(_1: &Test, _2: &i32) -> &i32 { - debug self => _1; // in scope 0 at $DIR/retag.rs:+0:20: +0:25 - debug x => _2; // in scope 0 at $DIR/retag.rs:+0:27: +0:28 - let mut _0: &i32; // return place in scope 0 at $DIR/retag.rs:+0:42: +0:49 + debug self => _1; + debug x => _2; + let mut _0: &i32; bb0: { - Retag([fn entry] _1); // scope 0 at $DIR/retag.rs:+0:20: +0:25 - Retag([fn entry] _2); // scope 0 at $DIR/retag.rs:+0:27: +0:28 - _0 = _2; // scope 0 at $DIR/retag.rs:+1:9: +1:10 - Retag(_0); // scope 0 at $DIR/retag.rs:+1:9: +1:10 - return; // scope 0 at $DIR/retag.rs:+2:6: +2:6 + Retag([fn entry] _1); + Retag([fn entry] _2); + _0 = _2; + Retag(_0); + return; } } diff --git a/tests/mir-opt/separate_const_switch.identity.SeparateConstSwitch.diff b/tests/mir-opt/separate_const_switch.identity.SeparateConstSwitch.diff index 7f0e50a23f972..ca1528b6ab1a4 100644 --- a/tests/mir-opt/separate_const_switch.identity.SeparateConstSwitch.diff +++ b/tests/mir-opt/separate_const_switch.identity.SeparateConstSwitch.diff @@ -2,101 +2,101 @@ + // MIR for `identity` after SeparateConstSwitch fn identity(_1: Result) -> Result { - debug x => _1; // in scope 0 at $DIR/separate_const_switch.rs:+0:13: +0:14 - let mut _0: std::result::Result; // return place in scope 0 at $DIR/separate_const_switch.rs:+0:37: +0:53 - let mut _2: i32; // in scope 0 at $DIR/separate_const_switch.rs:+1:8: +1:10 - let mut _3: std::ops::ControlFlow, i32>; // in scope 0 at $DIR/separate_const_switch.rs:+1:8: +1:10 - let mut _4: std::result::Result; // in scope 0 at $DIR/separate_const_switch.rs:+1:8: +1:9 - let mut _5: isize; // in scope 0 at $DIR/separate_const_switch.rs:+1:9: +1:10 - let _6: std::result::Result; // in scope 0 at $DIR/separate_const_switch.rs:+1:9: +1:10 - let mut _7: std::result::Result; // in scope 0 at $DIR/separate_const_switch.rs:+1:9: +1:10 - let _8: i32; // in scope 0 at $DIR/separate_const_switch.rs:+1:8: +1:10 + debug x => _1; + let mut _0: std::result::Result; + let mut _2: i32; + let mut _3: std::ops::ControlFlow, i32>; + let mut _4: std::result::Result; + let mut _5: isize; + let _6: std::result::Result; + let mut _7: std::result::Result; + let _8: i32; scope 1 { - debug residual => _6; // in scope 1 at $DIR/separate_const_switch.rs:+1:9: +1:10 + debug residual => _6; scope 2 { - scope 8 (inlined #[track_caller] as FromResidual>>::from_residual) { // at $DIR/separate_const_switch.rs:25:8: 25:10 - debug residual => _6; // in scope 8 at $SRC_DIR/core/src/result.rs:LL:COL - let _13: i32; // in scope 8 at $SRC_DIR/core/src/result.rs:LL:COL - let mut _14: i32; // in scope 8 at $SRC_DIR/core/src/result.rs:LL:COL + scope 8 (inlined #[track_caller] as FromResidual>>::from_residual) { + debug residual => _6; + let _13: i32; + let mut _14: i32; scope 9 { - debug e => _13; // in scope 9 at $SRC_DIR/core/src/result.rs:LL:COL - scope 10 (inlined >::from) { // at $SRC_DIR/core/src/result.rs:LL:COL - debug t => _13; // in scope 10 at $SRC_DIR/core/src/convert/mod.rs:LL:COL + debug e => _13; + scope 10 (inlined >::from) { + debug t => _13; } } } } } scope 3 { - debug val => _8; // in scope 3 at $DIR/separate_const_switch.rs:+1:8: +1:10 + debug val => _8; scope 4 { } } - scope 5 (inlined as Try>::branch) { // at $DIR/separate_const_switch.rs:25:8: 25:10 - debug self => _1; // in scope 5 at $SRC_DIR/core/src/result.rs:LL:COL - let mut _9: isize; // in scope 5 at $SRC_DIR/core/src/result.rs:LL:COL - let _10: i32; // in scope 5 at $SRC_DIR/core/src/result.rs:LL:COL - let _11: i32; // in scope 5 at $SRC_DIR/core/src/result.rs:LL:COL - let mut _12: std::result::Result; // in scope 5 at $SRC_DIR/core/src/result.rs:LL:COL + scope 5 (inlined as Try>::branch) { + debug self => _1; + let mut _9: isize; + let _10: i32; + let _11: i32; + let mut _12: std::result::Result; scope 6 { - debug v => _10; // in scope 6 at $SRC_DIR/core/src/result.rs:LL:COL + debug v => _10; } scope 7 { - debug e => _11; // in scope 7 at $SRC_DIR/core/src/result.rs:LL:COL + debug e => _11; } } bb0: { - StorageLive(_3); // scope 0 at $DIR/separate_const_switch.rs:+1:8: +1:10 - StorageLive(_10); // scope 0 at $DIR/separate_const_switch.rs:+1:8: +1:10 - StorageLive(_11); // scope 0 at $DIR/separate_const_switch.rs:+1:8: +1:10 - _9 = discriminant(_1); // scope 5 at $SRC_DIR/core/src/result.rs:LL:COL - switchInt(move _9) -> [0: bb7, 1: bb5, otherwise: bb6]; // scope 5 at $SRC_DIR/core/src/result.rs:LL:COL + StorageLive(_3); + StorageLive(_10); + StorageLive(_11); + _9 = discriminant(_1); + switchInt(move _9) -> [0: bb7, 1: bb5, otherwise: bb6]; } bb1: { - StorageDead(_11); // scope 0 at $DIR/separate_const_switch.rs:+1:8: +1:10 - StorageDead(_10); // scope 0 at $DIR/separate_const_switch.rs:+1:8: +1:10 - _5 = discriminant(_3); // scope 0 at $DIR/separate_const_switch.rs:+1:8: +1:10 - switchInt(move _5) -> [0: bb2, 1: bb4, otherwise: bb3]; // scope 0 at $DIR/separate_const_switch.rs:+1:8: +1:10 + StorageDead(_11); + StorageDead(_10); + _5 = discriminant(_3); + switchInt(move _5) -> [0: bb2, 1: bb4, otherwise: bb3]; } bb2: { - _8 = ((_3 as Continue).0: i32); // scope 0 at $DIR/separate_const_switch.rs:+1:8: +1:10 - _0 = Result::::Ok(_8); // scope 0 at $DIR/separate_const_switch.rs:+1:5: +1:11 - StorageDead(_3); // scope 0 at $DIR/separate_const_switch.rs:+2:1: +2:2 - return; // scope 0 at $DIR/separate_const_switch.rs:+2:2: +2:2 + _8 = ((_3 as Continue).0: i32); + _0 = Result::::Ok(_8); + StorageDead(_3); + return; } bb3: { - unreachable; // scope 0 at $DIR/separate_const_switch.rs:+1:8: +1:10 + unreachable; } bb4: { - _6 = ((_3 as Break).0: std::result::Result); // scope 0 at $DIR/separate_const_switch.rs:+1:9: +1:10 - _13 = ((_6 as Err).0: i32); // scope 8 at $SRC_DIR/core/src/result.rs:LL:COL - _0 = Result::::Err(move _13); // scope 9 at $SRC_DIR/core/src/result.rs:LL:COL - StorageDead(_3); // scope 0 at $DIR/separate_const_switch.rs:+2:1: +2:2 - return; // scope 0 at $DIR/separate_const_switch.rs:+2:2: +2:2 + _6 = ((_3 as Break).0: std::result::Result); + _13 = ((_6 as Err).0: i32); + _0 = Result::::Err(move _13); + StorageDead(_3); + return; } bb5: { - _11 = ((_1 as Err).0: i32); // scope 5 at $SRC_DIR/core/src/result.rs:LL:COL - StorageLive(_12); // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL - _12 = Result::::Err(move _11); // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL - _3 = ControlFlow::, i32>::Break(move _12); // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL - StorageDead(_12); // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL - goto -> bb1; // scope 5 at $SRC_DIR/core/src/result.rs:LL:COL + _11 = ((_1 as Err).0: i32); + StorageLive(_12); + _12 = Result::::Err(move _11); + _3 = ControlFlow::, i32>::Break(move _12); + StorageDead(_12); + goto -> bb1; } bb6: { - unreachable; // scope 5 at $SRC_DIR/core/src/result.rs:LL:COL + unreachable; } bb7: { - _10 = ((_1 as Ok).0: i32); // scope 5 at $SRC_DIR/core/src/result.rs:LL:COL - _3 = ControlFlow::, i32>::Continue(move _10); // scope 6 at $SRC_DIR/core/src/result.rs:LL:COL - goto -> bb1; // scope 5 at $SRC_DIR/core/src/result.rs:LL:COL + _10 = ((_1 as Ok).0: i32); + _3 = ControlFlow::, i32>::Continue(move _10); + goto -> bb1; } } diff --git a/tests/mir-opt/separate_const_switch.too_complex.SeparateConstSwitch.diff b/tests/mir-opt/separate_const_switch.too_complex.SeparateConstSwitch.diff index f86a96dec4155..e2bf33f7fbcc0 100644 --- a/tests/mir-opt/separate_const_switch.too_complex.SeparateConstSwitch.diff +++ b/tests/mir-opt/separate_const_switch.too_complex.SeparateConstSwitch.diff @@ -2,75 +2,75 @@ + // MIR for `too_complex` after SeparateConstSwitch fn too_complex(_1: Result) -> Option { - debug x => _1; // in scope 0 at $DIR/separate_const_switch.rs:+0:16: +0:17 - let mut _0: std::option::Option; // return place in scope 0 at $DIR/separate_const_switch.rs:+0:42: +0:53 - let mut _2: std::ops::ControlFlow; // in scope 0 at $DIR/separate_const_switch.rs:+5:11: +10:6 - let mut _3: isize; // in scope 0 at $DIR/separate_const_switch.rs:+7:13: +7:18 - let _4: i32; // in scope 0 at $DIR/separate_const_switch.rs:+7:16: +7:17 - let mut _5: i32; // in scope 0 at $DIR/separate_const_switch.rs:+7:44: +7:45 - let _6: usize; // in scope 0 at $DIR/separate_const_switch.rs:+8:17: +8:18 - let mut _7: usize; // in scope 0 at $DIR/separate_const_switch.rs:+8:42: +8:43 - let mut _8: isize; // in scope 0 at $DIR/separate_const_switch.rs:+11:9: +11:33 - let _9: i32; // in scope 0 at $DIR/separate_const_switch.rs:+11:31: +11:32 - let mut _10: i32; // in scope 0 at $DIR/separate_const_switch.rs:+11:42: +11:43 - let _11: usize; // in scope 0 at $DIR/separate_const_switch.rs:+12:28: +12:29 + debug x => _1; + let mut _0: std::option::Option; + let mut _2: std::ops::ControlFlow; + let mut _3: isize; + let _4: i32; + let mut _5: i32; + let _6: usize; + let mut _7: usize; + let mut _8: isize; + let _9: i32; + let mut _10: i32; + let _11: usize; scope 1 { - debug v => _4; // in scope 1 at $DIR/separate_const_switch.rs:+7:16: +7:17 + debug v => _4; } scope 2 { - debug r => _6; // in scope 2 at $DIR/separate_const_switch.rs:+8:17: +8:18 + debug r => _6; } scope 3 { - debug v => _9; // in scope 3 at $DIR/separate_const_switch.rs:+11:31: +11:32 + debug v => _9; } scope 4 { - debug r => _11; // in scope 4 at $DIR/separate_const_switch.rs:+12:28: +12:29 + debug r => _11; } bb0: { - StorageLive(_2); // scope 0 at $DIR/separate_const_switch.rs:+5:11: +10:6 - _3 = discriminant(_1); // scope 0 at $DIR/separate_const_switch.rs:+6:15: +6:16 - switchInt(move _3) -> [0: bb3, 1: bb1, otherwise: bb2]; // scope 0 at $DIR/separate_const_switch.rs:+6:9: +6:16 + StorageLive(_2); + _3 = discriminant(_1); + switchInt(move _3) -> [0: bb3, 1: bb1, otherwise: bb2]; } bb1: { - _6 = ((_1 as Err).0: usize); // scope 0 at $DIR/separate_const_switch.rs:+8:17: +8:18 - _2 = ControlFlow::::Break(_6); // scope 2 at $DIR/separate_const_switch.rs:+8:23: +8:44 - goto -> bb4; // scope 0 at $DIR/separate_const_switch.rs:+8:43: +8:44 + _6 = ((_1 as Err).0: usize); + _2 = ControlFlow::::Break(_6); + goto -> bb4; } bb2: { - unreachable; // scope 0 at $DIR/separate_const_switch.rs:+6:15: +6:16 + unreachable; } bb3: { - _4 = ((_1 as Ok).0: i32); // scope 0 at $DIR/separate_const_switch.rs:+7:16: +7:17 - _2 = ControlFlow::::Continue(_4); // scope 1 at $DIR/separate_const_switch.rs:+7:22: +7:46 - goto -> bb4; // scope 0 at $DIR/separate_const_switch.rs:+7:45: +7:46 + _4 = ((_1 as Ok).0: i32); + _2 = ControlFlow::::Continue(_4); + goto -> bb4; } bb4: { - _8 = discriminant(_2); // scope 0 at $DIR/separate_const_switch.rs:+5:11: +10:6 - switchInt(move _8) -> [0: bb6, 1: bb5, otherwise: bb2]; // scope 0 at $DIR/separate_const_switch.rs:+5:5: +10:6 + _8 = discriminant(_2); + switchInt(move _8) -> [0: bb6, 1: bb5, otherwise: bb2]; } bb5: { - StorageLive(_11); // scope 0 at $DIR/separate_const_switch.rs:+12:28: +12:29 - _11 = ((_2 as Break).0: usize); // scope 0 at $DIR/separate_const_switch.rs:+12:28: +12:29 - _0 = Option::::None; // scope 4 at $DIR/separate_const_switch.rs:+12:34: +12:38 - StorageDead(_11); // scope 0 at $DIR/separate_const_switch.rs:+12:37: +12:38 - goto -> bb7; // scope 0 at $DIR/separate_const_switch.rs:+12:37: +12:38 + StorageLive(_11); + _11 = ((_2 as Break).0: usize); + _0 = Option::::None; + StorageDead(_11); + goto -> bb7; } bb6: { - _9 = ((_2 as Continue).0: i32); // scope 0 at $DIR/separate_const_switch.rs:+11:31: +11:32 - _0 = Option::::Some(_9); // scope 3 at $DIR/separate_const_switch.rs:+11:37: +11:44 - goto -> bb7; // scope 0 at $DIR/separate_const_switch.rs:+11:43: +11:44 + _9 = ((_2 as Continue).0: i32); + _0 = Option::::Some(_9); + goto -> bb7; } bb7: { - StorageDead(_2); // scope 0 at $DIR/separate_const_switch.rs:+14:1: +14:2 - return; // scope 0 at $DIR/separate_const_switch.rs:+14:2: +14:2 + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/simplify_cfg.main.SimplifyCfg-early-opt.diff b/tests/mir-opt/simplify_cfg.main.SimplifyCfg-early-opt.diff index 8eb1aa1f3b3d0..f20ab869b7bcc 100644 --- a/tests/mir-opt/simplify_cfg.main.SimplifyCfg-early-opt.diff +++ b/tests/mir-opt/simplify_cfg.main.SimplifyCfg-early-opt.diff @@ -2,51 +2,47 @@ + // MIR for `main` after SimplifyCfg-early-opt fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/simplify_cfg.rs:+0:11: +0:11 - let mut _1: (); // in scope 0 at $DIR/simplify_cfg.rs:+0:1: +6:2 - let mut _2: bool; // in scope 0 at $DIR/simplify_cfg.rs:+2:12: +2:17 - let mut _3: !; // in scope 0 at $DIR/simplify_cfg.rs:+2:18: +4:10 + let mut _0: (); + let mut _1: (); + let mut _2: bool; + let mut _3: !; bb0: { - goto -> bb1; // scope 0 at $DIR/simplify_cfg.rs:+1:5: +5:6 + goto -> bb1; } bb1: { -- goto -> bb2; // scope 0 at $DIR/simplify_cfg.rs:+1:5: +5:6 -- } -- -- bb2: { - StorageLive(_2); // scope 0 at $DIR/simplify_cfg.rs:+2:12: +2:17 -- _2 = bar() -> [return: bb3, unwind: bb6]; // scope 0 at $DIR/simplify_cfg.rs:+2:12: +2:17 -+ _2 = bar() -> [return: bb2, unwind: bb5]; // scope 0 at $DIR/simplify_cfg.rs:+2:12: +2:17 - // mir::Constant - // + span: $DIR/simplify_cfg.rs:9:12: 9:15 - // + literal: Const { ty: fn() -> bool {bar}, val: Value() } +- goto -> bb2; ++ StorageLive(_2); ++ _2 = bar() -> [return: bb2, unwind: bb5]; } -- bb3: { -- switchInt(move _2) -> [0: bb5, otherwise: bb4]; // scope 0 at $DIR/simplify_cfg.rs:+2:12: +2:17 -+ bb2: { -+ switchInt(move _2) -> [0: bb4, otherwise: bb3]; // scope 0 at $DIR/simplify_cfg.rs:+2:12: +2:17 + bb2: { +- StorageLive(_2); +- _2 = bar() -> [return: bb3, unwind: bb6]; ++ switchInt(move _2) -> [0: bb4, otherwise: bb3]; } + bb3: { +- switchInt(move _2) -> [0: bb5, otherwise: bb4]; +- } +- - bb4: { -+ bb3: { - _0 = const (); // scope 0 at $DIR/simplify_cfg.rs:+3:13: +3:18 - StorageDead(_2); // scope 0 at $DIR/simplify_cfg.rs:+4:9: +4:10 - return; // scope 0 at $DIR/simplify_cfg.rs:+6:2: +6:2 + _0 = const (); + StorageDead(_2); + return; } - bb5: { + bb4: { - _1 = const (); // scope 0 at $DIR/simplify_cfg.rs:+4:10: +4:10 - StorageDead(_2); // scope 0 at $DIR/simplify_cfg.rs:+4:9: +4:10 - goto -> bb1; // scope 0 at $DIR/simplify_cfg.rs:+1:5: +5:6 + _1 = const (); + StorageDead(_2); + goto -> bb1; } - bb6 (cleanup): { + bb5 (cleanup): { - resume; // scope 0 at $DIR/simplify_cfg.rs:+0:1: +6:2 + resume; } } diff --git a/tests/mir-opt/simplify_cfg.main.SimplifyCfg-initial.diff b/tests/mir-opt/simplify_cfg.main.SimplifyCfg-initial.diff index c61107d25e004..d106313f0ff38 100644 --- a/tests/mir-opt/simplify_cfg.main.SimplifyCfg-initial.diff +++ b/tests/mir-opt/simplify_cfg.main.SimplifyCfg-initial.diff @@ -2,70 +2,67 @@ + // MIR for `main` after SimplifyCfg-initial fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/simplify_cfg.rs:+0:11: +0:11 - let mut _1: (); // in scope 0 at $DIR/simplify_cfg.rs:+0:1: +6:2 - let mut _2: bool; // in scope 0 at $DIR/simplify_cfg.rs:+2:12: +2:17 - let mut _3: !; // in scope 0 at $DIR/simplify_cfg.rs:+2:18: +4:10 + let mut _0: (); + let mut _1: (); + let mut _2: bool; + let mut _3: !; bb0: { - goto -> bb1; // scope 0 at $DIR/simplify_cfg.rs:+1:5: +5:6 + goto -> bb1; } bb1: { -- falseUnwind -> [real: bb2, unwind: bb11]; // scope 0 at $DIR/simplify_cfg.rs:+1:5: +5:6 -+ falseUnwind -> [real: bb2, unwind: bb6]; // scope 0 at $DIR/simplify_cfg.rs:+1:5: +5:6 +- falseUnwind -> [real: bb2, unwind: bb11]; ++ falseUnwind -> [real: bb2, unwind: bb6]; } bb2: { - StorageLive(_2); // scope 0 at $DIR/simplify_cfg.rs:+2:12: +2:17 -- _2 = bar() -> [return: bb3, unwind: bb11]; // scope 0 at $DIR/simplify_cfg.rs:+2:12: +2:17 -+ _2 = bar() -> [return: bb3, unwind: bb6]; // scope 0 at $DIR/simplify_cfg.rs:+2:12: +2:17 - // mir::Constant - // + span: $DIR/simplify_cfg.rs:9:12: 9:15 - // + literal: Const { ty: fn() -> bool {bar}, val: Value() } + StorageLive(_2); +- _2 = bar() -> [return: bb3, unwind: bb11]; ++ _2 = bar() -> [return: bb3, unwind: bb6]; } bb3: { - switchInt(move _2) -> [0: bb5, otherwise: bb4]; // scope 0 at $DIR/simplify_cfg.rs:+2:12: +2:17 + switchInt(move _2) -> [0: bb5, otherwise: bb4]; } bb4: { - _0 = const (); // scope 0 at $DIR/simplify_cfg.rs:+3:13: +3:18 -- goto -> bb10; // scope 0 at $DIR/simplify_cfg.rs:+3:13: +3:18 -+ StorageDead(_2); // scope 0 at $DIR/simplify_cfg.rs:+4:9: +4:10 -+ return; // scope 0 at $DIR/simplify_cfg.rs:+6:2: +6:2 + _0 = const (); +- goto -> bb10; ++ StorageDead(_2); ++ return; } bb5: { -- goto -> bb8; // scope 0 at $DIR/simplify_cfg.rs:+2:12: +2:17 +- goto -> bb8; - } - - bb6: { -- unreachable; // scope 0 at $DIR/simplify_cfg.rs:+2:18: +4:10 +- unreachable; - } - - bb7: { -- goto -> bb9; // scope 0 at $DIR/simplify_cfg.rs:+2:9: +4:10 +- goto -> bb9; - } - - bb8: { - _1 = const (); // scope 0 at $DIR/simplify_cfg.rs:+4:10: +4:10 -- goto -> bb9; // scope 0 at $DIR/simplify_cfg.rs:+2:9: +4:10 + _1 = const (); +- goto -> bb9; - } - - bb9: { - StorageDead(_2); // scope 0 at $DIR/simplify_cfg.rs:+4:9: +4:10 - goto -> bb1; // scope 0 at $DIR/simplify_cfg.rs:+1:5: +5:6 + StorageDead(_2); + goto -> bb1; } - bb10: { -- StorageDead(_2); // scope 0 at $DIR/simplify_cfg.rs:+4:9: +4:10 -- return; // scope 0 at $DIR/simplify_cfg.rs:+6:2: +6:2 +- StorageDead(_2); +- return; - } - - bb11 (cleanup): { + bb6 (cleanup): { - resume; // scope 0 at $DIR/simplify_cfg.rs:+0:1: +6:2 + resume; } } diff --git a/tests/mir-opt/simplify_duplicate_unreachable_blocks.assert_nonzero_nonmax.SimplifyCfg-after-uninhabited-enum-branching.diff b/tests/mir-opt/simplify_duplicate_unreachable_blocks.assert_nonzero_nonmax.SimplifyCfg-after-uninhabited-enum-branching.diff index f7f50206af252..35c0a4d45dfb5 100644 --- a/tests/mir-opt/simplify_duplicate_unreachable_blocks.assert_nonzero_nonmax.SimplifyCfg-after-uninhabited-enum-branching.diff +++ b/tests/mir-opt/simplify_duplicate_unreachable_blocks.assert_nonzero_nonmax.SimplifyCfg-after-uninhabited-enum-branching.diff @@ -2,24 +2,24 @@ + // MIR for `assert_nonzero_nonmax` after SimplifyCfg-after-uninhabited-enum-branching fn assert_nonzero_nonmax(_1: u8) -> u8 { - let mut _0: u8; // return place in scope 0 at $DIR/simplify_duplicate_unreachable_blocks.rs:+0:47: +0:49 + let mut _0: u8; bb0: { -- switchInt(_1) -> [0: bb1, 255: bb2, otherwise: bb3]; // scope 0 at $DIR/simplify_duplicate_unreachable_blocks.rs:+3:13: +7:14 -+ switchInt(_1) -> [0: bb1, 255: bb1, otherwise: bb2]; // scope 0 at $DIR/simplify_duplicate_unreachable_blocks.rs:+3:13: +7:14 +- switchInt(_1) -> [0: bb1, 255: bb2, otherwise: bb3]; ++ switchInt(_1) -> [0: bb1, 255: bb1, otherwise: bb2]; } bb1: { - unreachable; // scope 0 at $DIR/simplify_duplicate_unreachable_blocks.rs:+10:13: +10:26 + unreachable; } bb2: { -- unreachable; // scope 0 at $DIR/simplify_duplicate_unreachable_blocks.rs:+13:13: +13:26 +- unreachable; - } - - bb3: { - _0 = _1; // scope 0 at $DIR/simplify_duplicate_unreachable_blocks.rs:+16:13: +16:20 - return; // scope 0 at $DIR/simplify_duplicate_unreachable_blocks.rs:+17:13: +17:21 + _0 = _1; + return; } } diff --git a/tests/mir-opt/simplify_if.main.SimplifyConstCondition-after-const-prop.panic-abort.diff b/tests/mir-opt/simplify_if.main.SimplifyConstCondition-after-const-prop.panic-abort.diff index 2159f9dd6cc46..d395715836064 100644 --- a/tests/mir-opt/simplify_if.main.SimplifyConstCondition-after-const-prop.panic-abort.diff +++ b/tests/mir-opt/simplify_if.main.SimplifyConstCondition-after-const-prop.panic-abort.diff @@ -2,35 +2,32 @@ + // MIR for `main` after SimplifyConstCondition-after-const-prop fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/simplify_if.rs:+0:11: +0:11 - let mut _1: bool; // in scope 0 at $DIR/simplify_if.rs:+1:8: +1:13 - let _2: (); // in scope 0 at $DIR/simplify_if.rs:+2:9: +2:15 + let mut _0: (); + let mut _1: bool; + let _2: (); bb0: { - StorageLive(_1); // scope 0 at $DIR/simplify_if.rs:+1:8: +1:13 - _1 = const false; // scope 0 at $DIR/simplify_if.rs:+1:8: +1:13 -- switchInt(const false) -> [0: bb3, otherwise: bb1]; // scope 0 at $DIR/simplify_if.rs:+1:8: +1:13 -+ goto -> bb3; // scope 0 at $DIR/simplify_if.rs:+1:8: +1:13 + StorageLive(_1); + _1 = const false; +- switchInt(const false) -> [0: bb3, otherwise: bb1]; ++ goto -> bb3; } bb1: { - _2 = noop() -> [return: bb2, unwind unreachable]; // scope 0 at $DIR/simplify_if.rs:+2:9: +2:15 - // mir::Constant - // + span: $DIR/simplify_if.rs:8:9: 8:13 - // + literal: Const { ty: fn() {noop}, val: Value() } + _2 = noop() -> [return: bb2, unwind unreachable]; } bb2: { - goto -> bb4; // scope 0 at $DIR/simplify_if.rs:+1:5: +3:6 + goto -> bb4; } bb3: { - goto -> bb4; // scope 0 at $DIR/simplify_if.rs:+1:5: +3:6 + goto -> bb4; } bb4: { - StorageDead(_1); // scope 0 at $DIR/simplify_if.rs:+3:5: +3:6 - return; // scope 0 at $DIR/simplify_if.rs:+4:2: +4:2 + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/simplify_if.main.SimplifyConstCondition-after-const-prop.panic-unwind.diff b/tests/mir-opt/simplify_if.main.SimplifyConstCondition-after-const-prop.panic-unwind.diff index b473d0fdecd09..2a841f72ba39d 100644 --- a/tests/mir-opt/simplify_if.main.SimplifyConstCondition-after-const-prop.panic-unwind.diff +++ b/tests/mir-opt/simplify_if.main.SimplifyConstCondition-after-const-prop.panic-unwind.diff @@ -2,35 +2,32 @@ + // MIR for `main` after SimplifyConstCondition-after-const-prop fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/simplify_if.rs:+0:11: +0:11 - let mut _1: bool; // in scope 0 at $DIR/simplify_if.rs:+1:8: +1:13 - let _2: (); // in scope 0 at $DIR/simplify_if.rs:+2:9: +2:15 + let mut _0: (); + let mut _1: bool; + let _2: (); bb0: { - StorageLive(_1); // scope 0 at $DIR/simplify_if.rs:+1:8: +1:13 - _1 = const false; // scope 0 at $DIR/simplify_if.rs:+1:8: +1:13 -- switchInt(const false) -> [0: bb3, otherwise: bb1]; // scope 0 at $DIR/simplify_if.rs:+1:8: +1:13 -+ goto -> bb3; // scope 0 at $DIR/simplify_if.rs:+1:8: +1:13 + StorageLive(_1); + _1 = const false; +- switchInt(const false) -> [0: bb3, otherwise: bb1]; ++ goto -> bb3; } bb1: { - _2 = noop() -> bb2; // scope 0 at $DIR/simplify_if.rs:+2:9: +2:15 - // mir::Constant - // + span: $DIR/simplify_if.rs:8:9: 8:13 - // + literal: Const { ty: fn() {noop}, val: Value() } + _2 = noop() -> bb2; } bb2: { - goto -> bb4; // scope 0 at $DIR/simplify_if.rs:+1:5: +3:6 + goto -> bb4; } bb3: { - goto -> bb4; // scope 0 at $DIR/simplify_if.rs:+1:5: +3:6 + goto -> bb4; } bb4: { - StorageDead(_1); // scope 0 at $DIR/simplify_if.rs:+3:5: +3:6 - return; // scope 0 at $DIR/simplify_if.rs:+4:2: +4:2 + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/simplify_locals.c.SimplifyLocals-before-const-prop.diff b/tests/mir-opt/simplify_locals.c.SimplifyLocals-before-const-prop.diff index 1be27e96397de..7546b3878d681 100644 --- a/tests/mir-opt/simplify_locals.c.SimplifyLocals-before-const-prop.diff +++ b/tests/mir-opt/simplify_locals.c.SimplifyLocals-before-const-prop.diff @@ -2,32 +2,32 @@ + // MIR for `c` after SimplifyLocals-before-const-prop fn c() -> () { - let mut _0: (); // return place in scope 0 at $DIR/simplify_locals.rs:+0:8: +0:8 - let _1: [u8; 10]; // in scope 0 at $DIR/simplify_locals.rs:+1:9: +1:14 -- let mut _2: &[u8]; // in scope 0 at $DIR/simplify_locals.rs:+3:20: +3:26 -- let mut _3: &[u8; 10]; // in scope 0 at $DIR/simplify_locals.rs:+3:20: +3:26 -- let _4: &[u8; 10]; // in scope 0 at $DIR/simplify_locals.rs:+3:20: +3:26 + let mut _0: (); + let _1: [u8; 10]; +- let mut _2: &[u8]; +- let mut _3: &[u8; 10]; +- let _4: &[u8; 10]; scope 1 { - debug bytes => _1; // in scope 1 at $DIR/simplify_locals.rs:+1:9: +1:14 + debug bytes => _1; scope 2 { } } bb0: { - StorageLive(_1); // scope 0 at $DIR/simplify_locals.rs:+1:9: +1:14 - _1 = [const 0_u8; 10]; // scope 0 at $DIR/simplify_locals.rs:+1:17: +1:26 -- StorageLive(_2); // scope 1 at $DIR/simplify_locals.rs:+3:20: +3:26 -- StorageLive(_3); // scope 1 at $DIR/simplify_locals.rs:+3:20: +3:26 -- StorageLive(_4); // scope 1 at $DIR/simplify_locals.rs:+3:20: +3:26 -- _4 = &_1; // scope 1 at $DIR/simplify_locals.rs:+3:20: +3:26 -- _3 = &(*_4); // scope 1 at $DIR/simplify_locals.rs:+3:20: +3:26 -- _2 = move _3 as &[u8] (Pointer(Unsize)); // scope 1 at $DIR/simplify_locals.rs:+3:20: +3:26 -- StorageDead(_3); // scope 1 at $DIR/simplify_locals.rs:+3:25: +3:26 -- StorageDead(_4); // scope 1 at $DIR/simplify_locals.rs:+3:26: +3:27 -- StorageDead(_2); // scope 1 at $DIR/simplify_locals.rs:+3:26: +3:27 - _0 = const (); // scope 0 at $DIR/simplify_locals.rs:+0:8: +4:2 - StorageDead(_1); // scope 0 at $DIR/simplify_locals.rs:+4:1: +4:2 - return; // scope 0 at $DIR/simplify_locals.rs:+4:2: +4:2 + StorageLive(_1); + _1 = [const 0_u8; 10]; +- StorageLive(_2); +- StorageLive(_3); +- StorageLive(_4); +- _4 = &_1; +- _3 = &(*_4); +- _2 = move _3 as &[u8] (Pointer(Unsize)); +- StorageDead(_3); +- StorageDead(_4); +- StorageDead(_2); + _0 = const (); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/simplify_locals.d1.SimplifyLocals-before-const-prop.diff b/tests/mir-opt/simplify_locals.d1.SimplifyLocals-before-const-prop.diff index 946595e322e18..d66caeb044134 100644 --- a/tests/mir-opt/simplify_locals.d1.SimplifyLocals-before-const-prop.diff +++ b/tests/mir-opt/simplify_locals.d1.SimplifyLocals-before-const-prop.diff @@ -2,17 +2,17 @@ + // MIR for `d1` after SimplifyLocals-before-const-prop fn d1() -> () { - let mut _0: (); // return place in scope 0 at $DIR/simplify_locals.rs:+0:9: +0:9 -- let mut _1: E; // in scope 0 at $DIR/simplify_locals.rs:+2:13: +2:17 + let mut _0: (); +- let mut _1: E; scope 1 { } bb0: { -- StorageLive(_1); // scope 0 at $DIR/simplify_locals.rs:+2:13: +2:17 -- _1 = E::A; // scope 0 at $DIR/simplify_locals.rs:+2:13: +2:17 -- StorageDead(_1); // scope 0 at $DIR/simplify_locals.rs:+2:17: +2:18 - _0 = const (); // scope 0 at $DIR/simplify_locals.rs:+0:9: +3:2 - return; // scope 0 at $DIR/simplify_locals.rs:+3:2: +3:2 +- StorageLive(_1); +- _1 = E::A; +- StorageDead(_1); + _0 = const (); + return; } } diff --git a/tests/mir-opt/simplify_locals.d2.SimplifyLocals-before-const-prop.diff b/tests/mir-opt/simplify_locals.d2.SimplifyLocals-before-const-prop.diff index 6a5dc56e211ce..374c5895ebff4 100644 --- a/tests/mir-opt/simplify_locals.d2.SimplifyLocals-before-const-prop.diff +++ b/tests/mir-opt/simplify_locals.d2.SimplifyLocals-before-const-prop.diff @@ -2,24 +2,24 @@ + // MIR for `d2` after SimplifyLocals-before-const-prop fn d2() -> () { - let mut _0: (); // return place in scope 0 at $DIR/simplify_locals.rs:+0:9: +0:9 -- let mut _1: E; // in scope 0 at $DIR/simplify_locals.rs:+2:22: +2:26 -- let mut _2: (i32, E); // in scope 0 at $DIR/simplify_locals.rs:+2:5: +2:17 -- let mut _3: E; // in scope 0 at $DIR/simplify_locals.rs:+2:11: +2:15 + let mut _0: (); +- let mut _1: E; +- let mut _2: (i32, E); +- let mut _3: E; bb0: { -- StorageLive(_1); // scope 0 at $DIR/simplify_locals.rs:+2:22: +2:26 -- _1 = E::B; // scope 0 at $DIR/simplify_locals.rs:+2:22: +2:26 -- StorageLive(_2); // scope 0 at $DIR/simplify_locals.rs:+2:5: +2:17 -- StorageLive(_3); // scope 0 at $DIR/simplify_locals.rs:+2:11: +2:15 -- _3 = E::A; // scope 0 at $DIR/simplify_locals.rs:+2:11: +2:15 -- _2 = (const 10_i32, move _3); // scope 0 at $DIR/simplify_locals.rs:+2:6: +2:16 -- StorageDead(_3); // scope 0 at $DIR/simplify_locals.rs:+2:15: +2:16 -- (_2.1: E) = move _1; // scope 0 at $DIR/simplify_locals.rs:+2:5: +2:26 -- StorageDead(_1); // scope 0 at $DIR/simplify_locals.rs:+2:25: +2:26 -- StorageDead(_2); // scope 0 at $DIR/simplify_locals.rs:+2:26: +2:27 - _0 = const (); // scope 0 at $DIR/simplify_locals.rs:+0:9: +3:2 - return; // scope 0 at $DIR/simplify_locals.rs:+3:2: +3:2 +- StorageLive(_1); +- _1 = E::B; +- StorageLive(_2); +- StorageLive(_3); +- _3 = E::A; +- _2 = (const 10_i32, move _3); +- StorageDead(_3); +- (_2.1: E) = move _1; +- StorageDead(_1); +- StorageDead(_2); + _0 = const (); + return; } } diff --git a/tests/mir-opt/simplify_locals.expose_addr.SimplifyLocals-before-const-prop.diff b/tests/mir-opt/simplify_locals.expose_addr.SimplifyLocals-before-const-prop.diff index 9ca1dbbd071b0..9ebee3df62c66 100644 --- a/tests/mir-opt/simplify_locals.expose_addr.SimplifyLocals-before-const-prop.diff +++ b/tests/mir-opt/simplify_locals.expose_addr.SimplifyLocals-before-const-prop.diff @@ -2,20 +2,20 @@ + // MIR for `expose_addr` after SimplifyLocals-before-const-prop fn expose_addr(_1: *const usize) -> () { - debug p => _1; // in scope 0 at $DIR/simplify_locals.rs:+0:16: +0:17 - let mut _0: (); // return place in scope 0 at $DIR/simplify_locals.rs:+0:33: +0:33 - let _2: usize; // in scope 0 at $DIR/simplify_locals.rs:+2:5: +2:15 - let mut _3: *const usize; // in scope 0 at $DIR/simplify_locals.rs:+2:5: +2:6 + debug p => _1; + let mut _0: (); + let _2: usize; + let mut _3: *const usize; bb0: { - StorageLive(_2); // scope 0 at $DIR/simplify_locals.rs:+2:5: +2:15 - StorageLive(_3); // scope 0 at $DIR/simplify_locals.rs:+2:5: +2:6 - _3 = _1; // scope 0 at $DIR/simplify_locals.rs:+2:5: +2:6 - _2 = move _3 as usize (PointerExposeAddress); // scope 0 at $DIR/simplify_locals.rs:+2:5: +2:15 - StorageDead(_3); // scope 0 at $DIR/simplify_locals.rs:+2:14: +2:15 - StorageDead(_2); // scope 0 at $DIR/simplify_locals.rs:+2:15: +2:16 - _0 = const (); // scope 0 at $DIR/simplify_locals.rs:+0:33: +3:2 - return; // scope 0 at $DIR/simplify_locals.rs:+3:2: +3:2 + StorageLive(_2); + StorageLive(_3); + _3 = _1; + _2 = move _3 as usize (PointerExposeAddress); + StorageDead(_3); + StorageDead(_2); + _0 = const (); + return; } } diff --git a/tests/mir-opt/simplify_locals.r.SimplifyLocals-before-const-prop.diff b/tests/mir-opt/simplify_locals.r.SimplifyLocals-before-const-prop.diff index 19dacb427f577..c9f7785a4994c 100644 --- a/tests/mir-opt/simplify_locals.r.SimplifyLocals-before-const-prop.diff +++ b/tests/mir-opt/simplify_locals.r.SimplifyLocals-before-const-prop.diff @@ -2,12 +2,12 @@ + // MIR for `r` after SimplifyLocals-before-const-prop fn r() -> () { - let mut _0: (); // return place in scope 0 at $DIR/simplify_locals.rs:+0:8: +0:8 - let mut _1: i32; // in scope 0 at $DIR/simplify_locals.rs:+1:9: +1:14 -- let mut _2: &i32; // in scope 0 at $DIR/simplify_locals.rs:+3:13: +3:15 -- let mut _3: &mut i32; // in scope 0 at $DIR/simplify_locals.rs:+4:13: +4:19 + let mut _0: (); + let mut _1: i32; +- let mut _2: &i32; +- let mut _3: &mut i32; scope 1 { - debug a => _1; // in scope 1 at $DIR/simplify_locals.rs:+1:9: +1:14 + debug a => _1; scope 2 { scope 3 { } @@ -15,17 +15,17 @@ } bb0: { - StorageLive(_1); // scope 0 at $DIR/simplify_locals.rs:+1:9: +1:14 - _1 = const 1_i32; // scope 0 at $DIR/simplify_locals.rs:+1:17: +1:18 -- StorageLive(_2); // scope 1 at $DIR/simplify_locals.rs:+3:13: +3:15 -- _2 = &_1; // scope 1 at $DIR/simplify_locals.rs:+3:13: +3:15 -- StorageDead(_2); // scope 1 at $DIR/simplify_locals.rs:+3:15: +3:16 -- StorageLive(_3); // scope 2 at $DIR/simplify_locals.rs:+4:13: +4:19 -- _3 = &mut _1; // scope 2 at $DIR/simplify_locals.rs:+4:13: +4:19 -- StorageDead(_3); // scope 2 at $DIR/simplify_locals.rs:+4:19: +4:20 - _0 = const (); // scope 0 at $DIR/simplify_locals.rs:+0:8: +5:2 - StorageDead(_1); // scope 0 at $DIR/simplify_locals.rs:+5:1: +5:2 - return; // scope 0 at $DIR/simplify_locals.rs:+5:2: +5:2 + StorageLive(_1); + _1 = const 1_i32; +- StorageLive(_2); +- _2 = &_1; +- StorageDead(_2); +- StorageLive(_3); +- _3 = &mut _1; +- StorageDead(_3); + _0 = const (); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/simplify_locals.t1.SimplifyLocals-before-const-prop.diff b/tests/mir-opt/simplify_locals.t1.SimplifyLocals-before-const-prop.diff index 1b2e1158e45cc..a903e8d789e58 100644 --- a/tests/mir-opt/simplify_locals.t1.SimplifyLocals-before-const-prop.diff +++ b/tests/mir-opt/simplify_locals.t1.SimplifyLocals-before-const-prop.diff @@ -2,21 +2,21 @@ + // MIR for `t1` after SimplifyLocals-before-const-prop fn t1() -> () { - let mut _0: (); // return place in scope 0 at $DIR/simplify_locals.rs:+0:9: +0:9 -- let _1: u32; // in scope 0 at $DIR/simplify_locals.rs:+2:14: +2:15 -- let mut _2: *mut u32; // in scope 0 at $DIR/simplify_locals.rs:+2:14: +2:15 + let mut _0: (); +- let _1: u32; +- let mut _2: *mut u32; scope 1 { } bb0: { -- StorageLive(_1); // scope 0 at $DIR/simplify_locals.rs:+2:5: +2:17 -- StorageLive(_2); // scope 1 at $DIR/simplify_locals.rs:+2:14: +2:15 -- _2 = &/*tls*/ mut X; // scope 1 at $DIR/simplify_locals.rs:+2:14: +2:15 -- _1 = (*_2); // scope 1 at $DIR/simplify_locals.rs:+2:14: +2:15 -- StorageDead(_2); // scope 0 at $DIR/simplify_locals.rs:+2:17: +2:18 -- StorageDead(_1); // scope 0 at $DIR/simplify_locals.rs:+2:17: +2:18 - _0 = const (); // scope 0 at $DIR/simplify_locals.rs:+0:9: +3:2 - return; // scope 0 at $DIR/simplify_locals.rs:+3:2: +3:2 +- StorageLive(_1); +- StorageLive(_2); +- _2 = &/*tls*/ mut X; +- _1 = (*_2); +- StorageDead(_2); +- StorageDead(_1); + _0 = const (); + return; } } diff --git a/tests/mir-opt/simplify_locals.t2.SimplifyLocals-before-const-prop.diff b/tests/mir-opt/simplify_locals.t2.SimplifyLocals-before-const-prop.diff index cf019357be776..e72e71a13a2a8 100644 --- a/tests/mir-opt/simplify_locals.t2.SimplifyLocals-before-const-prop.diff +++ b/tests/mir-opt/simplify_locals.t2.SimplifyLocals-before-const-prop.diff @@ -2,21 +2,21 @@ + // MIR for `t2` after SimplifyLocals-before-const-prop fn t2() -> () { - let mut _0: (); // return place in scope 0 at $DIR/simplify_locals.rs:+0:9: +0:9 -- let _1: &mut u32; // in scope 0 at $DIR/simplify_locals.rs:+2:14: +2:20 -- let mut _2: *mut u32; // in scope 0 at $DIR/simplify_locals.rs:+2:19: +2:20 + let mut _0: (); +- let _1: &mut u32; +- let mut _2: *mut u32; scope 1 { } bb0: { -- StorageLive(_1); // scope 0 at $DIR/simplify_locals.rs:+2:5: +2:22 -- StorageLive(_2); // scope 1 at $DIR/simplify_locals.rs:+2:19: +2:20 -- _2 = &/*tls*/ mut X; // scope 1 at $DIR/simplify_locals.rs:+2:19: +2:20 -- _1 = &mut (*_2); // scope 1 at $DIR/simplify_locals.rs:+2:14: +2:20 -- StorageDead(_2); // scope 0 at $DIR/simplify_locals.rs:+2:22: +2:23 -- StorageDead(_1); // scope 0 at $DIR/simplify_locals.rs:+2:22: +2:23 - _0 = const (); // scope 0 at $DIR/simplify_locals.rs:+0:9: +3:2 - return; // scope 0 at $DIR/simplify_locals.rs:+3:2: +3:2 +- StorageLive(_1); +- StorageLive(_2); +- _2 = &/*tls*/ mut X; +- _1 = &mut (*_2); +- StorageDead(_2); +- StorageDead(_1); + _0 = const (); + return; } } diff --git a/tests/mir-opt/simplify_locals.t3.SimplifyLocals-before-const-prop.diff b/tests/mir-opt/simplify_locals.t3.SimplifyLocals-before-const-prop.diff index 90ee215808c7a..37c367c82caba 100644 --- a/tests/mir-opt/simplify_locals.t3.SimplifyLocals-before-const-prop.diff +++ b/tests/mir-opt/simplify_locals.t3.SimplifyLocals-before-const-prop.diff @@ -2,25 +2,25 @@ + // MIR for `t3` after SimplifyLocals-before-const-prop fn t3() -> () { - let mut _0: (); // return place in scope 0 at $DIR/simplify_locals.rs:+0:9: +0:9 -- let _1: u32; // in scope 0 at $DIR/simplify_locals.rs:+2:14: +2:21 -- let mut _2: &mut u32; // in scope 0 at $DIR/simplify_locals.rs:+2:15: +2:21 -- let mut _3: *mut u32; // in scope 0 at $DIR/simplify_locals.rs:+2:20: +2:21 + let mut _0: (); +- let _1: u32; +- let mut _2: &mut u32; +- let mut _3: *mut u32; scope 1 { } bb0: { -- StorageLive(_1); // scope 0 at $DIR/simplify_locals.rs:+2:5: +2:23 -- StorageLive(_2); // scope 1 at $DIR/simplify_locals.rs:+2:15: +2:21 -- StorageLive(_3); // scope 1 at $DIR/simplify_locals.rs:+2:20: +2:21 -- _3 = &/*tls*/ mut X; // scope 1 at $DIR/simplify_locals.rs:+2:20: +2:21 -- _2 = &mut (*_3); // scope 1 at $DIR/simplify_locals.rs:+2:15: +2:21 -- _1 = (*_2); // scope 1 at $DIR/simplify_locals.rs:+2:14: +2:21 -- StorageDead(_3); // scope 0 at $DIR/simplify_locals.rs:+2:23: +2:24 -- StorageDead(_2); // scope 0 at $DIR/simplify_locals.rs:+2:23: +2:24 -- StorageDead(_1); // scope 0 at $DIR/simplify_locals.rs:+2:23: +2:24 - _0 = const (); // scope 0 at $DIR/simplify_locals.rs:+0:9: +3:2 - return; // scope 0 at $DIR/simplify_locals.rs:+3:2: +3:2 +- StorageLive(_1); +- StorageLive(_2); +- StorageLive(_3); +- _3 = &/*tls*/ mut X; +- _2 = &mut (*_3); +- _1 = (*_2); +- StorageDead(_3); +- StorageDead(_2); +- StorageDead(_1); + _0 = const (); + return; } } diff --git a/tests/mir-opt/simplify_locals.t4.SimplifyLocals-before-const-prop.diff b/tests/mir-opt/simplify_locals.t4.SimplifyLocals-before-const-prop.diff index 9add9a6c5e061..006e3c4232d7e 100644 --- a/tests/mir-opt/simplify_locals.t4.SimplifyLocals-before-const-prop.diff +++ b/tests/mir-opt/simplify_locals.t4.SimplifyLocals-before-const-prop.diff @@ -2,21 +2,21 @@ + // MIR for `t4` after SimplifyLocals-before-const-prop fn t4() -> u32 { - let mut _0: u32; // return place in scope 0 at $DIR/simplify_locals.rs:+0:12: +0:15 - let mut _1: u32; // in scope 0 at $DIR/simplify_locals.rs:+2:14: +2:15 - let mut _2: *mut u32; // in scope 0 at $DIR/simplify_locals.rs:+2:14: +2:15 + let mut _0: u32; + let mut _1: u32; + let mut _2: *mut u32; scope 1 { } bb0: { - StorageLive(_1); // scope 1 at $DIR/simplify_locals.rs:+2:14: +2:15 - StorageLive(_2); // scope 1 at $DIR/simplify_locals.rs:+2:14: +2:15 - _2 = &/*tls*/ mut X; // scope 1 at $DIR/simplify_locals.rs:+2:14: +2:15 - _1 = (*_2); // scope 1 at $DIR/simplify_locals.rs:+2:14: +2:15 - _0 = Add(move _1, const 1_u32); // scope 1 at $DIR/simplify_locals.rs:+2:14: +2:19 - StorageDead(_1); // scope 1 at $DIR/simplify_locals.rs:+2:18: +2:19 - StorageDead(_2); // scope 0 at $DIR/simplify_locals.rs:+3:1: +3:2 - return; // scope 0 at $DIR/simplify_locals.rs:+3:2: +3:2 + StorageLive(_1); + StorageLive(_2); + _2 = &/*tls*/ mut X; + _1 = (*_2); + _0 = Add(move _1, const 1_u32); + StorageDead(_1); + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/simplify_locals_fixedpoint.foo.SimplifyLocals-final.panic-abort.diff b/tests/mir-opt/simplify_locals_fixedpoint.foo.SimplifyLocals-final.panic-abort.diff index e45b3b9c4bb6c..1566d7197acd8 100644 --- a/tests/mir-opt/simplify_locals_fixedpoint.foo.SimplifyLocals-final.panic-abort.diff +++ b/tests/mir-opt/simplify_locals_fixedpoint.foo.SimplifyLocals-final.panic-abort.diff @@ -2,49 +2,49 @@ + // MIR for `foo` after SimplifyLocals-final fn foo() -> () { - let mut _0: (); // return place in scope 0 at $DIR/simplify_locals_fixedpoint.rs:+0:13: +0:13 - let mut _1: (std::option::Option, std::option::Option); // in scope 0 at $DIR/simplify_locals_fixedpoint.rs:+1:30: +1:69 - let mut _2: std::option::Option; // in scope 0 at $DIR/simplify_locals_fixedpoint.rs:+1:31: +1:49 - let mut _3: std::option::Option; // in scope 0 at $DIR/simplify_locals_fixedpoint.rs:+1:51: +1:68 - let mut _4: isize; // in scope 0 at $DIR/simplify_locals_fixedpoint.rs:+1:22: +1:26 - let mut _5: isize; // in scope 0 at $DIR/simplify_locals_fixedpoint.rs:+1:13: +1:20 + let mut _0: (); + let mut _1: (std::option::Option, std::option::Option); + let mut _2: std::option::Option; + let mut _3: std::option::Option; + let mut _4: isize; + let mut _5: isize; scope 1 { - debug a => _6; // in scope 1 at $DIR/simplify_locals_fixedpoint.rs:+1:18: +1:19 - let _6: u8; // in scope 1 at $DIR/simplify_locals_fixedpoint.rs:+1:18: +1:19 + debug a => _6; + let _6: u8; } bb0: { - StorageLive(_1); // scope 1 at $DIR/simplify_locals_fixedpoint.rs:+1:30: +1:69 - StorageLive(_2); // scope 1 at $DIR/simplify_locals_fixedpoint.rs:+1:31: +1:49 - _2 = Option::::None; // scope 1 at $DIR/simplify_locals_fixedpoint.rs:+1:31: +1:49 - StorageLive(_3); // scope 1 at $DIR/simplify_locals_fixedpoint.rs:+1:51: +1:68 - _3 = Option::::None; // scope 1 at $DIR/simplify_locals_fixedpoint.rs:+1:51: +1:68 - _1 = (move _2, move _3); // scope 1 at $DIR/simplify_locals_fixedpoint.rs:+1:30: +1:69 - StorageDead(_3); // scope 1 at $DIR/simplify_locals_fixedpoint.rs:+1:68: +1:69 - StorageDead(_2); // scope 1 at $DIR/simplify_locals_fixedpoint.rs:+1:68: +1:69 - _5 = discriminant((_1.0: std::option::Option)); // scope 1 at $DIR/simplify_locals_fixedpoint.rs:+1:12: +1:27 - switchInt(move _5) -> [1: bb1, otherwise: bb3]; // scope 1 at $DIR/simplify_locals_fixedpoint.rs:+1:12: +1:27 + StorageLive(_1); + StorageLive(_2); + _2 = Option::::None; + StorageLive(_3); + _3 = Option::::None; + _1 = (move _2, move _3); + StorageDead(_3); + StorageDead(_2); + _5 = discriminant((_1.0: std::option::Option)); + switchInt(move _5) -> [1: bb1, otherwise: bb3]; } bb1: { - _4 = discriminant((_1.1: std::option::Option)); // scope 1 at $DIR/simplify_locals_fixedpoint.rs:+1:12: +1:27 - switchInt(move _4) -> [0: bb2, otherwise: bb3]; // scope 1 at $DIR/simplify_locals_fixedpoint.rs:+1:12: +1:27 + _4 = discriminant((_1.1: std::option::Option)); + switchInt(move _4) -> [0: bb2, otherwise: bb3]; } bb2: { - StorageLive(_6); // scope 1 at $DIR/simplify_locals_fixedpoint.rs:+1:18: +1:19 - _6 = (((_1.0: std::option::Option) as Some).0: u8); // scope 1 at $DIR/simplify_locals_fixedpoint.rs:+1:18: +1:19 - StorageDead(_6); // scope 0 at $DIR/simplify_locals_fixedpoint.rs:+5:5: +5:6 - goto -> bb3; // scope 0 at $DIR/simplify_locals_fixedpoint.rs:+1:5: +5:6 + StorageLive(_6); + _6 = (((_1.0: std::option::Option) as Some).0: u8); + StorageDead(_6); + goto -> bb3; } bb3: { - drop(_1) -> [return: bb4, unwind unreachable]; // scope 0 at $DIR/simplify_locals_fixedpoint.rs:+6:1: +6:2 + drop(_1) -> [return: bb4, unwind unreachable]; } bb4: { - StorageDead(_1); // scope 0 at $DIR/simplify_locals_fixedpoint.rs:+6:1: +6:2 - return; // scope 0 at $DIR/simplify_locals_fixedpoint.rs:+6:2: +6:2 + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/simplify_locals_fixedpoint.foo.SimplifyLocals-final.panic-unwind.diff b/tests/mir-opt/simplify_locals_fixedpoint.foo.SimplifyLocals-final.panic-unwind.diff index 0b9ca29ceddc9..ef3a923fd6969 100644 --- a/tests/mir-opt/simplify_locals_fixedpoint.foo.SimplifyLocals-final.panic-unwind.diff +++ b/tests/mir-opt/simplify_locals_fixedpoint.foo.SimplifyLocals-final.panic-unwind.diff @@ -2,49 +2,49 @@ + // MIR for `foo` after SimplifyLocals-final fn foo() -> () { - let mut _0: (); // return place in scope 0 at $DIR/simplify_locals_fixedpoint.rs:+0:13: +0:13 - let mut _1: (std::option::Option, std::option::Option); // in scope 0 at $DIR/simplify_locals_fixedpoint.rs:+1:30: +1:69 - let mut _2: std::option::Option; // in scope 0 at $DIR/simplify_locals_fixedpoint.rs:+1:31: +1:49 - let mut _3: std::option::Option; // in scope 0 at $DIR/simplify_locals_fixedpoint.rs:+1:51: +1:68 - let mut _4: isize; // in scope 0 at $DIR/simplify_locals_fixedpoint.rs:+1:22: +1:26 - let mut _5: isize; // in scope 0 at $DIR/simplify_locals_fixedpoint.rs:+1:13: +1:20 + let mut _0: (); + let mut _1: (std::option::Option, std::option::Option); + let mut _2: std::option::Option; + let mut _3: std::option::Option; + let mut _4: isize; + let mut _5: isize; scope 1 { - debug a => _6; // in scope 1 at $DIR/simplify_locals_fixedpoint.rs:+1:18: +1:19 - let _6: u8; // in scope 1 at $DIR/simplify_locals_fixedpoint.rs:+1:18: +1:19 + debug a => _6; + let _6: u8; } bb0: { - StorageLive(_1); // scope 1 at $DIR/simplify_locals_fixedpoint.rs:+1:30: +1:69 - StorageLive(_2); // scope 1 at $DIR/simplify_locals_fixedpoint.rs:+1:31: +1:49 - _2 = Option::::None; // scope 1 at $DIR/simplify_locals_fixedpoint.rs:+1:31: +1:49 - StorageLive(_3); // scope 1 at $DIR/simplify_locals_fixedpoint.rs:+1:51: +1:68 - _3 = Option::::None; // scope 1 at $DIR/simplify_locals_fixedpoint.rs:+1:51: +1:68 - _1 = (move _2, move _3); // scope 1 at $DIR/simplify_locals_fixedpoint.rs:+1:30: +1:69 - StorageDead(_3); // scope 1 at $DIR/simplify_locals_fixedpoint.rs:+1:68: +1:69 - StorageDead(_2); // scope 1 at $DIR/simplify_locals_fixedpoint.rs:+1:68: +1:69 - _5 = discriminant((_1.0: std::option::Option)); // scope 1 at $DIR/simplify_locals_fixedpoint.rs:+1:12: +1:27 - switchInt(move _5) -> [1: bb1, otherwise: bb3]; // scope 1 at $DIR/simplify_locals_fixedpoint.rs:+1:12: +1:27 + StorageLive(_1); + StorageLive(_2); + _2 = Option::::None; + StorageLive(_3); + _3 = Option::::None; + _1 = (move _2, move _3); + StorageDead(_3); + StorageDead(_2); + _5 = discriminant((_1.0: std::option::Option)); + switchInt(move _5) -> [1: bb1, otherwise: bb3]; } bb1: { - _4 = discriminant((_1.1: std::option::Option)); // scope 1 at $DIR/simplify_locals_fixedpoint.rs:+1:12: +1:27 - switchInt(move _4) -> [0: bb2, otherwise: bb3]; // scope 1 at $DIR/simplify_locals_fixedpoint.rs:+1:12: +1:27 + _4 = discriminant((_1.1: std::option::Option)); + switchInt(move _4) -> [0: bb2, otherwise: bb3]; } bb2: { - StorageLive(_6); // scope 1 at $DIR/simplify_locals_fixedpoint.rs:+1:18: +1:19 - _6 = (((_1.0: std::option::Option) as Some).0: u8); // scope 1 at $DIR/simplify_locals_fixedpoint.rs:+1:18: +1:19 - StorageDead(_6); // scope 0 at $DIR/simplify_locals_fixedpoint.rs:+5:5: +5:6 - goto -> bb3; // scope 0 at $DIR/simplify_locals_fixedpoint.rs:+1:5: +5:6 + StorageLive(_6); + _6 = (((_1.0: std::option::Option) as Some).0: u8); + StorageDead(_6); + goto -> bb3; } bb3: { - drop(_1) -> bb4; // scope 0 at $DIR/simplify_locals_fixedpoint.rs:+6:1: +6:2 + drop(_1) -> bb4; } bb4: { - StorageDead(_1); // scope 0 at $DIR/simplify_locals_fixedpoint.rs:+6:1: +6:2 - return; // scope 0 at $DIR/simplify_locals_fixedpoint.rs:+6:2: +6:2 + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/simplify_locals_removes_unused_consts.main.SimplifyLocals-before-const-prop.panic-abort.diff b/tests/mir-opt/simplify_locals_removes_unused_consts.main.SimplifyLocals-before-const-prop.panic-abort.diff index 232f63aba11a3..54d254ee37463 100644 --- a/tests/mir-opt/simplify_locals_removes_unused_consts.main.SimplifyLocals-before-const-prop.panic-abort.diff +++ b/tests/mir-opt/simplify_locals_removes_unused_consts.main.SimplifyLocals-before-const-prop.panic-abort.diff @@ -2,100 +2,85 @@ + // MIR for `main` after SimplifyLocals-before-const-prop fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+0:11: +0:11 -- let mut _1: ((), ()); // in scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+1:20: +1:28 -- let mut _2: (); // in scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+1:21: +1:23 -- let mut _3: (); // in scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+1:25: +1:27 -- let _4: (); // in scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+2:5: +2:22 -- let mut _5: ((), ()); // in scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+2:13: +2:21 -- let mut _6: (); // in scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+2:14: +2:16 -- let mut _7: (); // in scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+2:18: +2:20 -- let _8: (); // in scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+4:5: +4:35 -- let mut _9: u8; // in scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+4:12: +4:34 -- let mut _10: u8; // in scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+4:12: +4:30 -- let mut _11: Temp; // in scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+4:12: +4:28 -+ let _1: (); // in scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+2:5: +2:22 -+ let mut _2: ((), ()); // in scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+2:13: +2:21 -+ let mut _3: (); // in scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+2:14: +2:16 -+ let mut _4: (); // in scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+2:18: +2:20 -+ let _5: (); // in scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+4:5: +4:35 -+ let mut _6: u8; // in scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+4:12: +4:34 -+ let mut _7: u8; // in scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+4:12: +4:30 -+ let mut _8: Temp; // in scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+4:12: +4:28 + let mut _0: (); +- let mut _1: ((), ()); +- let mut _2: (); ++ let _1: (); ++ let mut _2: ((), ()); + let mut _3: (); +- let _4: (); +- let mut _5: ((), ()); +- let mut _6: (); +- let mut _7: (); +- let _8: (); +- let mut _9: u8; +- let mut _10: u8; +- let mut _11: Temp; ++ let mut _4: (); ++ let _5: (); ++ let mut _6: u8; ++ let mut _7: u8; ++ let mut _8: Temp; scope 1 { } bb0: { -- StorageLive(_1); // scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+1:20: +1:28 -- StorageLive(_2); // scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+1:21: +1:23 -- _2 = (); // scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+1:21: +1:23 -- StorageLive(_3); // scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+1:25: +1:27 -- _3 = (); // scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+1:25: +1:27 -- _1 = (move _2, move _3); // scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+1:20: +1:28 -- StorageDead(_3); // scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+1:27: +1:28 -- StorageDead(_2); // scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+1:27: +1:28 -- StorageDead(_1); // scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+1:28: +1:29 -- StorageLive(_4); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:5: +2:22 -- StorageLive(_5); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:13: +2:21 -- StorageLive(_6); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:14: +2:16 -- _6 = (); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:14: +2:16 -- StorageLive(_7); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:18: +2:20 -- _7 = (); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:18: +2:20 -- _5 = (move _6, move _7); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:13: +2:21 -- StorageDead(_7); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:20: +2:21 -- StorageDead(_6); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:20: +2:21 -- _4 = use_zst(move _5) -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:5: +2:22 -+ StorageLive(_1); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:5: +2:22 -+ StorageLive(_2); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:13: +2:21 -+ StorageLive(_3); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:14: +2:16 -+ _3 = (); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:14: +2:16 -+ StorageLive(_4); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:18: +2:20 -+ _4 = (); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:18: +2:20 -+ _2 = (move _3, move _4); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:13: +2:21 -+ StorageDead(_4); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:20: +2:21 -+ StorageDead(_3); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:20: +2:21 -+ _1 = use_zst(move _2) -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:5: +2:22 - // mir::Constant - // + span: $DIR/simplify_locals_removes_unused_consts.rs:16:5: 16:12 - // + literal: Const { ty: fn(((), ())) {use_zst}, val: Value() } - } - - bb1: { -- StorageDead(_5); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:21: +2:22 -- StorageDead(_4); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:22: +2:23 -- StorageLive(_8); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:5: +4:35 -- StorageLive(_9); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:12: +4:34 -- StorageLive(_10); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:12: +4:30 -- StorageLive(_11); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:12: +4:28 -- _11 = Temp { x: const 40_u8 }; // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:12: +4:28 -- _10 = (_11.0: u8); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:12: +4:30 -- _9 = Add(move _10, const 2_u8); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:12: +4:34 -- StorageDead(_10); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:33: +4:34 -- _8 = use_u8(move _9) -> [return: bb2, unwind unreachable]; // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:5: +4:35 -+ StorageDead(_2); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:21: +2:22 -+ StorageDead(_1); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:22: +2:23 -+ StorageLive(_5); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:5: +4:35 -+ StorageLive(_6); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:12: +4:34 -+ StorageLive(_7); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:12: +4:30 -+ StorageLive(_8); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:12: +4:28 -+ _8 = Temp { x: const 40_u8 }; // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:12: +4:28 -+ _7 = (_8.0: u8); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:12: +4:30 -+ _6 = Add(move _7, const 2_u8); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:12: +4:34 -+ StorageDead(_7); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:33: +4:34 -+ _5 = use_u8(move _6) -> [return: bb2, unwind unreachable]; // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:5: +4:35 - // mir::Constant - // + span: $DIR/simplify_locals_removes_unused_consts.rs:18:5: 18:11 - // + literal: Const { ty: fn(u8) {use_u8}, val: Value() } + StorageLive(_1); + StorageLive(_2); +- _2 = (); + StorageLive(_3); + _3 = (); +- _1 = (move _2, move _3); ++ StorageLive(_4); ++ _4 = (); ++ _2 = (move _3, move _4); ++ StorageDead(_4); + StorageDead(_3); ++ _1 = use_zst(move _2) -> [return: bb1, unwind unreachable]; ++ } ++ ++ bb1: { + StorageDead(_2); + StorageDead(_1); +- StorageLive(_4); + StorageLive(_5); + StorageLive(_6); +- _6 = (); + StorageLive(_7); +- _7 = (); +- _5 = (move _6, move _7); ++ StorageLive(_8); ++ _8 = Temp { x: const 40_u8 }; ++ _7 = (_8.0: u8); ++ _6 = Add(move _7, const 2_u8); + StorageDead(_7); +- StorageDead(_6); +- _4 = use_zst(move _5) -> [return: bb1, unwind unreachable]; ++ _5 = use_u8(move _6) -> [return: bb2, unwind unreachable]; } +- bb1: { +- StorageDead(_5); +- StorageDead(_4); +- StorageLive(_8); +- StorageLive(_9); +- StorageLive(_10); +- StorageLive(_11); +- _11 = Temp { x: const 40_u8 }; +- _10 = (_11.0: u8); +- _9 = Add(move _10, const 2_u8); +- StorageDead(_10); +- _8 = use_u8(move _9) -> [return: bb2, unwind unreachable]; +- } +- bb2: { -- StorageDead(_9); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:34: +4:35 -- StorageDead(_11); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:35: +4:36 -+ StorageDead(_6); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:34: +4:35 - StorageDead(_8); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:35: +4:36 -+ StorageDead(_5); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:35: +4:36 - _0 = const (); // scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+0:11: +5:2 - return; // scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+5:2: +5:2 +- StorageDead(_9); +- StorageDead(_11); ++ StorageDead(_6); + StorageDead(_8); ++ StorageDead(_5); + _0 = const (); + return; } } diff --git a/tests/mir-opt/simplify_locals_removes_unused_consts.main.SimplifyLocals-before-const-prop.panic-unwind.diff b/tests/mir-opt/simplify_locals_removes_unused_consts.main.SimplifyLocals-before-const-prop.panic-unwind.diff index ae2c774f29dc6..dca5160202146 100644 --- a/tests/mir-opt/simplify_locals_removes_unused_consts.main.SimplifyLocals-before-const-prop.panic-unwind.diff +++ b/tests/mir-opt/simplify_locals_removes_unused_consts.main.SimplifyLocals-before-const-prop.panic-unwind.diff @@ -2,100 +2,85 @@ + // MIR for `main` after SimplifyLocals-before-const-prop fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+0:11: +0:11 -- let mut _1: ((), ()); // in scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+1:20: +1:28 -- let mut _2: (); // in scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+1:21: +1:23 -- let mut _3: (); // in scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+1:25: +1:27 -- let _4: (); // in scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+2:5: +2:22 -- let mut _5: ((), ()); // in scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+2:13: +2:21 -- let mut _6: (); // in scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+2:14: +2:16 -- let mut _7: (); // in scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+2:18: +2:20 -- let _8: (); // in scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+4:5: +4:35 -- let mut _9: u8; // in scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+4:12: +4:34 -- let mut _10: u8; // in scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+4:12: +4:30 -- let mut _11: Temp; // in scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+4:12: +4:28 -+ let _1: (); // in scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+2:5: +2:22 -+ let mut _2: ((), ()); // in scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+2:13: +2:21 -+ let mut _3: (); // in scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+2:14: +2:16 -+ let mut _4: (); // in scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+2:18: +2:20 -+ let _5: (); // in scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+4:5: +4:35 -+ let mut _6: u8; // in scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+4:12: +4:34 -+ let mut _7: u8; // in scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+4:12: +4:30 -+ let mut _8: Temp; // in scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+4:12: +4:28 + let mut _0: (); +- let mut _1: ((), ()); +- let mut _2: (); ++ let _1: (); ++ let mut _2: ((), ()); + let mut _3: (); +- let _4: (); +- let mut _5: ((), ()); +- let mut _6: (); +- let mut _7: (); +- let _8: (); +- let mut _9: u8; +- let mut _10: u8; +- let mut _11: Temp; ++ let mut _4: (); ++ let _5: (); ++ let mut _6: u8; ++ let mut _7: u8; ++ let mut _8: Temp; scope 1 { } bb0: { -- StorageLive(_1); // scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+1:20: +1:28 -- StorageLive(_2); // scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+1:21: +1:23 -- _2 = (); // scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+1:21: +1:23 -- StorageLive(_3); // scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+1:25: +1:27 -- _3 = (); // scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+1:25: +1:27 -- _1 = (move _2, move _3); // scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+1:20: +1:28 -- StorageDead(_3); // scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+1:27: +1:28 -- StorageDead(_2); // scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+1:27: +1:28 -- StorageDead(_1); // scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+1:28: +1:29 -- StorageLive(_4); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:5: +2:22 -- StorageLive(_5); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:13: +2:21 -- StorageLive(_6); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:14: +2:16 -- _6 = (); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:14: +2:16 -- StorageLive(_7); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:18: +2:20 -- _7 = (); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:18: +2:20 -- _5 = (move _6, move _7); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:13: +2:21 -- StorageDead(_7); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:20: +2:21 -- StorageDead(_6); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:20: +2:21 -- _4 = use_zst(move _5) -> bb1; // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:5: +2:22 -+ StorageLive(_1); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:5: +2:22 -+ StorageLive(_2); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:13: +2:21 -+ StorageLive(_3); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:14: +2:16 -+ _3 = (); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:14: +2:16 -+ StorageLive(_4); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:18: +2:20 -+ _4 = (); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:18: +2:20 -+ _2 = (move _3, move _4); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:13: +2:21 -+ StorageDead(_4); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:20: +2:21 -+ StorageDead(_3); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:20: +2:21 -+ _1 = use_zst(move _2) -> bb1; // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:5: +2:22 - // mir::Constant - // + span: $DIR/simplify_locals_removes_unused_consts.rs:16:5: 16:12 - // + literal: Const { ty: fn(((), ())) {use_zst}, val: Value() } - } - - bb1: { -- StorageDead(_5); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:21: +2:22 -- StorageDead(_4); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:22: +2:23 -- StorageLive(_8); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:5: +4:35 -- StorageLive(_9); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:12: +4:34 -- StorageLive(_10); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:12: +4:30 -- StorageLive(_11); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:12: +4:28 -- _11 = Temp { x: const 40_u8 }; // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:12: +4:28 -- _10 = (_11.0: u8); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:12: +4:30 -- _9 = Add(move _10, const 2_u8); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:12: +4:34 -- StorageDead(_10); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:33: +4:34 -- _8 = use_u8(move _9) -> bb2; // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:5: +4:35 -+ StorageDead(_2); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:21: +2:22 -+ StorageDead(_1); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+2:22: +2:23 -+ StorageLive(_5); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:5: +4:35 -+ StorageLive(_6); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:12: +4:34 -+ StorageLive(_7); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:12: +4:30 -+ StorageLive(_8); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:12: +4:28 -+ _8 = Temp { x: const 40_u8 }; // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:12: +4:28 -+ _7 = (_8.0: u8); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:12: +4:30 -+ _6 = Add(move _7, const 2_u8); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:12: +4:34 -+ StorageDead(_7); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:33: +4:34 -+ _5 = use_u8(move _6) -> bb2; // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:5: +4:35 - // mir::Constant - // + span: $DIR/simplify_locals_removes_unused_consts.rs:18:5: 18:11 - // + literal: Const { ty: fn(u8) {use_u8}, val: Value() } + StorageLive(_1); + StorageLive(_2); +- _2 = (); + StorageLive(_3); + _3 = (); +- _1 = (move _2, move _3); ++ StorageLive(_4); ++ _4 = (); ++ _2 = (move _3, move _4); ++ StorageDead(_4); + StorageDead(_3); ++ _1 = use_zst(move _2) -> bb1; ++ } ++ ++ bb1: { + StorageDead(_2); + StorageDead(_1); +- StorageLive(_4); + StorageLive(_5); + StorageLive(_6); +- _6 = (); + StorageLive(_7); +- _7 = (); +- _5 = (move _6, move _7); ++ StorageLive(_8); ++ _8 = Temp { x: const 40_u8 }; ++ _7 = (_8.0: u8); ++ _6 = Add(move _7, const 2_u8); + StorageDead(_7); +- StorageDead(_6); +- _4 = use_zst(move _5) -> bb1; ++ _5 = use_u8(move _6) -> bb2; } +- bb1: { +- StorageDead(_5); +- StorageDead(_4); +- StorageLive(_8); +- StorageLive(_9); +- StorageLive(_10); +- StorageLive(_11); +- _11 = Temp { x: const 40_u8 }; +- _10 = (_11.0: u8); +- _9 = Add(move _10, const 2_u8); +- StorageDead(_10); +- _8 = use_u8(move _9) -> bb2; +- } +- bb2: { -- StorageDead(_9); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:34: +4:35 -- StorageDead(_11); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:35: +4:36 -+ StorageDead(_6); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:34: +4:35 - StorageDead(_8); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:35: +4:36 -+ StorageDead(_5); // scope 1 at $DIR/simplify_locals_removes_unused_consts.rs:+4:35: +4:36 - _0 = const (); // scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+0:11: +5:2 - return; // scope 0 at $DIR/simplify_locals_removes_unused_consts.rs:+5:2: +5:2 +- StorageDead(_9); +- StorageDead(_11); ++ StorageDead(_6); + StorageDead(_8); ++ StorageDead(_5); + _0 = const (); + return; } } diff --git a/tests/mir-opt/simplify_locals_removes_unused_discriminant_reads.map.SimplifyLocals-before-const-prop.diff b/tests/mir-opt/simplify_locals_removes_unused_discriminant_reads.map.SimplifyLocals-before-const-prop.diff index 3f9af31d888e3..9ff32b26b77ed 100644 --- a/tests/mir-opt/simplify_locals_removes_unused_discriminant_reads.map.SimplifyLocals-before-const-prop.diff +++ b/tests/mir-opt/simplify_locals_removes_unused_discriminant_reads.map.SimplifyLocals-before-const-prop.diff @@ -2,48 +2,48 @@ + // MIR for `map` after SimplifyLocals-before-const-prop fn map(_1: Option>) -> Option> { - debug x => _1; // in scope 0 at $DIR/simplify_locals_removes_unused_discriminant_reads.rs:+0:8: +0:9 - let mut _0: std::option::Option>; // return place in scope 0 at $DIR/simplify_locals_removes_unused_discriminant_reads.rs:+0:31: +0:46 - let mut _2: isize; // in scope 0 at $DIR/simplify_locals_removes_unused_discriminant_reads.rs:+2:9: +2:13 - let _3: std::boxed::Box<()>; // in scope 0 at $DIR/simplify_locals_removes_unused_discriminant_reads.rs:+3:14: +3:15 - let mut _4: std::boxed::Box<()>; // in scope 0 at $DIR/simplify_locals_removes_unused_discriminant_reads.rs:+3:25: +3:26 -- let mut _5: bool; // in scope 0 at $DIR/simplify_locals_removes_unused_discriminant_reads.rs:+5:1: +5:2 -- let mut _6: isize; // in scope 0 at $DIR/simplify_locals_removes_unused_discriminant_reads.rs:+5:1: +5:2 -- let mut _7: isize; // in scope 0 at $DIR/simplify_locals_removes_unused_discriminant_reads.rs:+5:1: +5:2 + debug x => _1; + let mut _0: std::option::Option>; + let mut _2: isize; + let _3: std::boxed::Box<()>; + let mut _4: std::boxed::Box<()>; +- let mut _5: bool; +- let mut _6: isize; +- let mut _7: isize; scope 1 { - debug x => _3; // in scope 1 at $DIR/simplify_locals_removes_unused_discriminant_reads.rs:+3:14: +3:15 + debug x => _3; } bb0: { -- _5 = const false; // scope 0 at $DIR/simplify_locals_removes_unused_discriminant_reads.rs:+1:11: +1:12 -- _5 = const true; // scope 0 at $DIR/simplify_locals_removes_unused_discriminant_reads.rs:+1:11: +1:12 - _2 = discriminant(_1); // scope 0 at $DIR/simplify_locals_removes_unused_discriminant_reads.rs:+1:11: +1:12 - switchInt(move _2) -> [0: bb3, 1: bb1, otherwise: bb2]; // scope 0 at $DIR/simplify_locals_removes_unused_discriminant_reads.rs:+1:5: +1:12 +- _5 = const false; +- _5 = const true; + _2 = discriminant(_1); + switchInt(move _2) -> [0: bb3, 1: bb1, otherwise: bb2]; } bb1: { - StorageLive(_3); // scope 0 at $DIR/simplify_locals_removes_unused_discriminant_reads.rs:+3:14: +3:15 - _3 = move ((_1 as Some).0: std::boxed::Box<()>); // scope 0 at $DIR/simplify_locals_removes_unused_discriminant_reads.rs:+3:14: +3:15 - StorageLive(_4); // scope 1 at $DIR/simplify_locals_removes_unused_discriminant_reads.rs:+3:25: +3:26 - _4 = move _3; // scope 1 at $DIR/simplify_locals_removes_unused_discriminant_reads.rs:+3:25: +3:26 - _0 = Option::>::Some(move _4); // scope 1 at $DIR/simplify_locals_removes_unused_discriminant_reads.rs:+3:20: +3:27 - StorageDead(_4); // scope 1 at $DIR/simplify_locals_removes_unused_discriminant_reads.rs:+3:26: +3:27 - StorageDead(_3); // scope 0 at $DIR/simplify_locals_removes_unused_discriminant_reads.rs:+3:26: +3:27 - goto -> bb4; // scope 0 at $DIR/simplify_locals_removes_unused_discriminant_reads.rs:+3:26: +3:27 + StorageLive(_3); + _3 = move ((_1 as Some).0: std::boxed::Box<()>); + StorageLive(_4); + _4 = move _3; + _0 = Option::>::Some(move _4); + StorageDead(_4); + StorageDead(_3); + goto -> bb4; } bb2: { - unreachable; // scope 0 at $DIR/simplify_locals_removes_unused_discriminant_reads.rs:+1:11: +1:12 + unreachable; } bb3: { - _0 = Option::>::None; // scope 0 at $DIR/simplify_locals_removes_unused_discriminant_reads.rs:+2:17: +2:21 - goto -> bb4; // scope 0 at $DIR/simplify_locals_removes_unused_discriminant_reads.rs:+2:17: +2:21 + _0 = Option::>::None; + goto -> bb4; } bb4: { -- _6 = discriminant(_1); // scope 0 at $DIR/simplify_locals_removes_unused_discriminant_reads.rs:+5:1: +5:2 - return; // scope 0 at $DIR/simplify_locals_removes_unused_discriminant_reads.rs:+5:2: +5:2 +- _6 = discriminant(_1); + return; } } diff --git a/tests/mir-opt/simplify_match.main.ConstProp.panic-abort.diff b/tests/mir-opt/simplify_match.main.ConstProp.panic-abort.diff index f25b8fe64ff0d..6025abb73825c 100644 --- a/tests/mir-opt/simplify_match.main.ConstProp.panic-abort.diff +++ b/tests/mir-opt/simplify_match.main.ConstProp.panic-abort.diff @@ -2,32 +2,29 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/simplify_match.rs:+0:11: +0:11 - let mut _1: bool; // in scope 0 at $DIR/simplify_match.rs:+1:11: +1:31 - let _2: bool; // in scope 0 at $DIR/simplify_match.rs:+1:17: +1:18 + let mut _0: (); + let mut _1: bool; + let _2: bool; scope 1 { - debug x => _2; // in scope 1 at $DIR/simplify_match.rs:+1:17: +1:18 + debug x => _2; } bb0: { - _2 = const false; // scope 0 at $DIR/simplify_match.rs:+1:21: +1:26 -- switchInt(_2) -> [0: bb1, otherwise: bb2]; // scope 0 at $DIR/simplify_match.rs:+1:5: +1:31 -+ switchInt(const false) -> [0: bb1, otherwise: bb2]; // scope 0 at $DIR/simplify_match.rs:+1:5: +1:31 + _2 = const false; +- switchInt(_2) -> [0: bb1, otherwise: bb2]; ++ switchInt(const false) -> [0: bb1, otherwise: bb2]; } bb1: { - goto -> bb3; // scope 0 at $DIR/simplify_match.rs:+3:18: +3:20 + goto -> bb3; } bb2: { - _0 = noop() -> [return: bb3, unwind unreachable]; // scope 0 at $DIR/simplify_match.rs:+2:17: +2:23 - // mir::Constant - // + span: $DIR/simplify_match.rs:8:17: 8:21 - // + literal: Const { ty: fn() {noop}, val: Value() } + _0 = noop() -> [return: bb3, unwind unreachable]; } bb3: { - return; // scope 0 at $DIR/simplify_match.rs:+5:2: +5:2 + return; } } diff --git a/tests/mir-opt/simplify_match.main.ConstProp.panic-unwind.diff b/tests/mir-opt/simplify_match.main.ConstProp.panic-unwind.diff index d2b9ac3cc0b96..dc2f75ec9b28e 100644 --- a/tests/mir-opt/simplify_match.main.ConstProp.panic-unwind.diff +++ b/tests/mir-opt/simplify_match.main.ConstProp.panic-unwind.diff @@ -2,32 +2,29 @@ + // MIR for `main` after ConstProp fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/simplify_match.rs:+0:11: +0:11 - let mut _1: bool; // in scope 0 at $DIR/simplify_match.rs:+1:11: +1:31 - let _2: bool; // in scope 0 at $DIR/simplify_match.rs:+1:17: +1:18 + let mut _0: (); + let mut _1: bool; + let _2: bool; scope 1 { - debug x => _2; // in scope 1 at $DIR/simplify_match.rs:+1:17: +1:18 + debug x => _2; } bb0: { - _2 = const false; // scope 0 at $DIR/simplify_match.rs:+1:21: +1:26 -- switchInt(_2) -> [0: bb1, otherwise: bb2]; // scope 0 at $DIR/simplify_match.rs:+1:5: +1:31 -+ switchInt(const false) -> [0: bb1, otherwise: bb2]; // scope 0 at $DIR/simplify_match.rs:+1:5: +1:31 + _2 = const false; +- switchInt(_2) -> [0: bb1, otherwise: bb2]; ++ switchInt(const false) -> [0: bb1, otherwise: bb2]; } bb1: { - goto -> bb3; // scope 0 at $DIR/simplify_match.rs:+3:18: +3:20 + goto -> bb3; } bb2: { - _0 = noop() -> bb3; // scope 0 at $DIR/simplify_match.rs:+2:17: +2:23 - // mir::Constant - // + span: $DIR/simplify_match.rs:8:17: 8:21 - // + literal: Const { ty: fn() {noop}, val: Value() } + _0 = noop() -> bb3; } bb3: { - return; // scope 0 at $DIR/simplify_match.rs:+5:2: +5:2 + return; } } diff --git a/tests/mir-opt/slice_drop_shim.core.ptr-drop_in_place.[String].AddMovesForPackedDrops.before.mir b/tests/mir-opt/slice_drop_shim.core.ptr-drop_in_place.[String].AddMovesForPackedDrops.before.mir index 11115c96e23e8..9bf69acd3563a 100644 --- a/tests/mir-opt/slice_drop_shim.core.ptr-drop_in_place.[String].AddMovesForPackedDrops.before.mir +++ b/tests/mir-opt/slice_drop_shim.core.ptr-drop_in_place.[String].AddMovesForPackedDrops.before.mir @@ -1,55 +1,55 @@ // MIR for `std::ptr::drop_in_place` before AddMovesForPackedDrops fn std::ptr::drop_in_place(_1: *mut [String]) -> () { - let mut _0: (); // return place in scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 - let mut _2: usize; // in scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 - let mut _3: usize; // in scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 - let mut _4: *mut std::string::String; // in scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 - let mut _5: bool; // in scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 - let mut _6: *mut std::string::String; // in scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 - let mut _7: bool; // in scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 + let mut _0: (); + let mut _2: usize; + let mut _3: usize; + let mut _4: *mut std::string::String; + let mut _5: bool; + let mut _6: *mut std::string::String; + let mut _7: bool; bb0: { - goto -> bb8; // scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 + goto -> bb8; } bb1: { - return; // scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 + return; } bb2 (cleanup): { - resume; // scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 + resume; } bb3 (cleanup): { - _4 = &raw mut (*_1)[_3]; // scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 - _3 = Add(move _3, const 1_usize); // scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 - drop((*_4)) -> [return: bb4, unwind terminate]; // scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 + _4 = &raw mut (*_1)[_3]; + _3 = Add(move _3, const 1_usize); + drop((*_4)) -> [return: bb4, unwind terminate]; } bb4 (cleanup): { - _5 = Eq(_3, _2); // scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 - switchInt(move _5) -> [0: bb3, otherwise: bb2]; // scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 + _5 = Eq(_3, _2); + switchInt(move _5) -> [0: bb3, otherwise: bb2]; } bb5: { - _6 = &raw mut (*_1)[_3]; // scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 - _3 = Add(move _3, const 1_usize); // scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 - drop((*_6)) -> [return: bb6, unwind: bb4]; // scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 + _6 = &raw mut (*_1)[_3]; + _3 = Add(move _3, const 1_usize); + drop((*_6)) -> [return: bb6, unwind: bb4]; } bb6: { - _7 = Eq(_3, _2); // scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 - switchInt(move _7) -> [0: bb5, otherwise: bb1]; // scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 + _7 = Eq(_3, _2); + switchInt(move _7) -> [0: bb5, otherwise: bb1]; } bb7: { - _2 = Len((*_1)); // scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 - _3 = const 0_usize; // scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 - goto -> bb6; // scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 + _2 = Len((*_1)); + _3 = const 0_usize; + goto -> bb6; } bb8: { - goto -> bb7; // scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 + goto -> bb7; } } diff --git a/tests/mir-opt/sroa/lifetimes.foo.ScalarReplacementOfAggregates.diff b/tests/mir-opt/sroa/lifetimes.foo.ScalarReplacementOfAggregates.diff index 9bda5f575c99f..84247c0e8d513 100644 --- a/tests/mir-opt/sroa/lifetimes.foo.ScalarReplacementOfAggregates.diff +++ b/tests/mir-opt/sroa/lifetimes.foo.ScalarReplacementOfAggregates.diff @@ -2,213 +2,191 @@ + // MIR for `foo` after ScalarReplacementOfAggregates fn foo() -> () { - let mut _0: (); // return place in scope 0 at $DIR/lifetimes.rs:+0:18: +0:18 - let _1: Foo; // in scope 0 at $DIR/lifetimes.rs:+1:9: +1:12 - let mut _2: std::result::Result, ::Err>; // in scope 0 at $DIR/lifetimes.rs:+2:12: +2:31 - let mut _3: std::boxed::Box; // in scope 0 at $DIR/lifetimes.rs:+2:15: +2:30 - let mut _4: std::boxed::Box; // in scope 0 at $DIR/lifetimes.rs:+2:15: +2:30 - let mut _7: isize; // in scope 0 at $DIR/lifetimes.rs:+9:12: +9:17 - let _9: (); // in scope 0 at $SRC_DIR/std/src/macros.rs:LL:COL - let _10: (); // in scope 0 at $SRC_DIR/std/src/macros.rs:LL:COL - let mut _11: std::fmt::Arguments<'_>; // in scope 0 at $SRC_DIR/std/src/macros.rs:LL:COL - let mut _12: &[&str]; // in scope 0 at $DIR/lifetimes.rs:+10:19: +10:28 - let mut _13: &[&str; 3]; // in scope 0 at $DIR/lifetimes.rs:+10:19: +10:28 - let _14: &[&str; 3]; // in scope 0 at $DIR/lifetimes.rs:+10:19: +10:28 - let _15: [&str; 3]; // in scope 0 at $DIR/lifetimes.rs:+10:19: +10:28 - let mut _16: &[core::fmt::rt::Argument<'_>]; // in scope 0 at $SRC_DIR/std/src/macros.rs:LL:COL - let mut _17: &[core::fmt::rt::Argument<'_>; 2]; // in scope 0 at $SRC_DIR/std/src/macros.rs:LL:COL - let _18: &[core::fmt::rt::Argument<'_>; 2]; // in scope 0 at $SRC_DIR/std/src/macros.rs:LL:COL - let _19: [core::fmt::rt::Argument<'_>; 2]; // in scope 0 at $SRC_DIR/std/src/macros.rs:LL:COL - let mut _20: core::fmt::rt::Argument<'_>; // in scope 0 at $DIR/lifetimes.rs:+10:20: +10:23 - let mut _21: &std::boxed::Box; // in scope 0 at $DIR/lifetimes.rs:+10:20: +10:23 - let _22: &std::boxed::Box; // in scope 0 at $DIR/lifetimes.rs:+10:20: +10:23 - let mut _23: core::fmt::rt::Argument<'_>; // in scope 0 at $DIR/lifetimes.rs:+10:24: +10:27 - let mut _24: &u32; // in scope 0 at $DIR/lifetimes.rs:+10:24: +10:27 - let _25: &u32; // in scope 0 at $DIR/lifetimes.rs:+10:24: +10:27 - let mut _27: bool; // in scope 0 at $DIR/lifetimes.rs:+12:1: +12:2 - let mut _28: isize; // in scope 0 at $DIR/lifetimes.rs:+12:1: +12:2 - let mut _29: isize; // in scope 0 at $DIR/lifetimes.rs:+12:1: +12:2 - let mut _30: isize; // in scope 0 at $DIR/lifetimes.rs:+12:1: +12:2 -+ let _31: std::result::Result, ::Err>; // in scope 0 at $DIR/lifetimes.rs:+1:9: +1:12 -+ let _32: u32; // in scope 0 at $DIR/lifetimes.rs:+1:9: +1:12 + let mut _0: (); + let _1: Foo; + let mut _2: std::result::Result, ::Err>; + let mut _3: std::boxed::Box; + let mut _4: std::boxed::Box; + let mut _7: isize; + let _9: (); + let _10: (); + let mut _11: std::fmt::Arguments<'_>; + let mut _12: &[&str]; + let mut _13: &[&str; 3]; + let _14: &[&str; 3]; + let _15: [&str; 3]; + let mut _16: &[core::fmt::rt::Argument<'_>]; + let mut _17: &[core::fmt::rt::Argument<'_>; 2]; + let _18: &[core::fmt::rt::Argument<'_>; 2]; + let _19: [core::fmt::rt::Argument<'_>; 2]; + let mut _20: core::fmt::rt::Argument<'_>; + let mut _21: &std::boxed::Box; + let _22: &std::boxed::Box; + let mut _23: core::fmt::rt::Argument<'_>; + let mut _24: &u32; + let _25: &u32; + let mut _27: bool; + let mut _28: isize; + let mut _29: isize; + let mut _30: isize; ++ let _31: std::result::Result, ::Err>; ++ let _32: u32; scope 1 { -- debug foo => _1; // in scope 1 at $DIR/lifetimes.rs:+1:9: +1:12 -+ debug foo => Foo{ .0 => _31, .1 => _32, }; // in scope 1 at $DIR/lifetimes.rs:+1:9: +1:12 - let _5: std::result::Result, ::Err>; // in scope 1 at $DIR/lifetimes.rs:+6:9: +6:10 +- debug foo => _1; ++ debug foo => Foo{ .0 => _31, .1 => _32, }; + let _5: std::result::Result, ::Err>; scope 2 { - debug x => _5; // in scope 2 at $DIR/lifetimes.rs:+6:9: +6:10 - let _6: u32; // in scope 2 at $DIR/lifetimes.rs:+7:9: +7:10 + debug x => _5; + let _6: u32; scope 3 { - debug y => _6; // in scope 3 at $DIR/lifetimes.rs:+7:9: +7:10 + debug y => _6; scope 4 { - debug x => _8; // in scope 4 at $DIR/lifetimes.rs:+9:15: +9:16 - let _8: std::boxed::Box; // in scope 4 at $DIR/lifetimes.rs:+9:15: +9:16 - let mut _26: &[&str; 3]; // in scope 4 at $DIR/lifetimes.rs:+10:19: +10:28 + debug x => _8; + let _8: std::boxed::Box; + let mut _26: &[&str; 3]; } } } } bb0: { - _27 = const false; // scope 0 at $DIR/lifetimes.rs:+1:9: +1:12 -- StorageLive(_1); // scope 0 at $DIR/lifetimes.rs:+1:9: +1:12 -+ StorageLive(_31); // scope 0 at $DIR/lifetimes.rs:+1:9: +1:12 -+ StorageLive(_32); // scope 0 at $DIR/lifetimes.rs:+1:9: +1:12 -+ nop; // scope 0 at $DIR/lifetimes.rs:+1:9: +1:12 - StorageLive(_2); // scope 0 at $DIR/lifetimes.rs:+2:12: +2:31 - StorageLive(_3); // scope 0 at $DIR/lifetimes.rs:+2:15: +2:30 - StorageLive(_4); // scope 0 at $DIR/lifetimes.rs:+2:15: +2:30 - _4 = Box::::new(const 5_u32) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/lifetimes.rs:+2:15: +2:30 - // mir::Constant - // + span: $DIR/lifetimes.rs:19:15: 19:23 - // + user_ty: UserType(1) - // + literal: Const { ty: fn(u32) -> Box {Box::::new}, val: Value() } + _27 = const false; +- StorageLive(_1); ++ StorageLive(_31); ++ StorageLive(_32); ++ nop; + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + _4 = Box::::new(const 5_u32) -> [return: bb1, unwind unreachable]; } bb1: { - _3 = move _4 as std::boxed::Box (Pointer(Unsize)); // scope 0 at $DIR/lifetimes.rs:+2:15: +2:30 - StorageDead(_4); // scope 0 at $DIR/lifetimes.rs:+2:29: +2:30 - _2 = Result::, ::Err>::Ok(move _3); // scope 0 at $DIR/lifetimes.rs:+2:12: +2:31 - StorageDead(_3); // scope 0 at $DIR/lifetimes.rs:+2:30: +2:31 -- _1 = Foo:: { x: move _2, y: const 7_u32 }; // scope 0 at $DIR/lifetimes.rs:+1:23: +4:6 -+ _31 = move _2; // scope 0 at $DIR/lifetimes.rs:+1:23: +4:6 -+ _32 = const 7_u32; // scope 0 at $DIR/lifetimes.rs:+1:23: +4:6 -+ nop; // scope 0 at $DIR/lifetimes.rs:+1:23: +4:6 - StorageDead(_2); // scope 0 at $DIR/lifetimes.rs:+4:5: +4:6 - StorageLive(_5); // scope 1 at $DIR/lifetimes.rs:+6:9: +6:10 - _27 = const true; // scope 1 at $DIR/lifetimes.rs:+6:13: +6:18 -- _5 = move (_1.0: std::result::Result, ::Err>); // scope 1 at $DIR/lifetimes.rs:+6:13: +6:18 -+ _5 = move _31; // scope 1 at $DIR/lifetimes.rs:+6:13: +6:18 - StorageLive(_6); // scope 2 at $DIR/lifetimes.rs:+7:9: +7:10 -- _6 = (_1.1: u32); // scope 2 at $DIR/lifetimes.rs:+7:13: +7:18 -+ _6 = _32; // scope 2 at $DIR/lifetimes.rs:+7:13: +7:18 - _7 = discriminant(_5); // scope 4 at $DIR/lifetimes.rs:+9:12: +9:17 - switchInt(move _7) -> [0: bb2, otherwise: bb7]; // scope 4 at $DIR/lifetimes.rs:+9:12: +9:17 + _3 = move _4 as std::boxed::Box (Pointer(Unsize)); + StorageDead(_4); + _2 = Result::, ::Err>::Ok(move _3); + StorageDead(_3); +- _1 = Foo:: { x: move _2, y: const 7_u32 }; ++ _31 = move _2; ++ _32 = const 7_u32; ++ nop; + StorageDead(_2); + StorageLive(_5); + _27 = const true; +- _5 = move (_1.0: std::result::Result, ::Err>); ++ _5 = move _31; + StorageLive(_6); +- _6 = (_1.1: u32); ++ _6 = _32; + _7 = discriminant(_5); + switchInt(move _7) -> [0: bb2, otherwise: bb7]; } bb2: { - StorageLive(_8); // scope 4 at $DIR/lifetimes.rs:+9:15: +9:16 - _27 = const false; // scope 4 at $DIR/lifetimes.rs:+9:15: +9:16 - _8 = move ((_5 as Ok).0: std::boxed::Box); // scope 4 at $DIR/lifetimes.rs:+9:15: +9:16 - StorageLive(_9); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL - StorageLive(_10); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL - StorageLive(_11); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL - StorageLive(_12); // scope 4 at $DIR/lifetimes.rs:+10:19: +10:28 - StorageLive(_13); // scope 4 at $DIR/lifetimes.rs:+10:19: +10:28 - StorageLive(_14); // scope 4 at $DIR/lifetimes.rs:+10:19: +10:28 - _26 = const _; // scope 4 at $DIR/lifetimes.rs:+10:19: +10:28 - // mir::Constant - // + span: $DIR/lifetimes.rs:27:19: 27:28 - // + literal: Const { ty: &[&str; 3], val: Unevaluated(foo, [T], Some(promoted[0])) } - _14 = &(*_26); // scope 4 at $DIR/lifetimes.rs:+10:19: +10:28 - _13 = &(*_14); // scope 4 at $DIR/lifetimes.rs:+10:19: +10:28 - _12 = move _13 as &[&str] (Pointer(Unsize)); // scope 4 at $DIR/lifetimes.rs:+10:19: +10:28 - StorageDead(_13); // scope 4 at $DIR/lifetimes.rs:+10:27: +10:28 - StorageLive(_16); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL - StorageLive(_17); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL - StorageLive(_18); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL - StorageLive(_19); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL - StorageLive(_20); // scope 4 at $DIR/lifetimes.rs:+10:20: +10:23 - StorageLive(_21); // scope 4 at $DIR/lifetimes.rs:+10:20: +10:23 - StorageLive(_22); // scope 4 at $DIR/lifetimes.rs:+10:20: +10:23 - _22 = &_8; // scope 4 at $DIR/lifetimes.rs:+10:20: +10:23 - _21 = &(*_22); // scope 4 at $DIR/lifetimes.rs:+10:20: +10:23 - _20 = core::fmt::rt::Argument::<'_>::new_display::>(move _21) -> [return: bb3, unwind unreachable]; // scope 4 at $DIR/lifetimes.rs:+10:20: +10:23 - // mir::Constant - // + span: $DIR/lifetimes.rs:27:20: 27:23 - // + user_ty: UserType(4) - // + literal: Const { ty: for<'b> fn(&'b Box) -> core::fmt::rt::Argument<'b> {core::fmt::rt::Argument::<'_>::new_display::>}, val: Value() } + StorageLive(_8); + _27 = const false; + _8 = move ((_5 as Ok).0: std::boxed::Box); + StorageLive(_9); + StorageLive(_10); + StorageLive(_11); + StorageLive(_12); + StorageLive(_13); + StorageLive(_14); + _26 = const _; + _14 = &(*_26); + _13 = &(*_14); + _12 = move _13 as &[&str] (Pointer(Unsize)); + StorageDead(_13); + StorageLive(_16); + StorageLive(_17); + StorageLive(_18); + StorageLive(_19); + StorageLive(_20); + StorageLive(_21); + StorageLive(_22); + _22 = &_8; + _21 = &(*_22); + _20 = core::fmt::rt::Argument::<'_>::new_display::>(move _21) -> [return: bb3, unwind unreachable]; } bb3: { - StorageDead(_21); // scope 4 at $DIR/lifetimes.rs:+10:22: +10:23 - StorageLive(_23); // scope 4 at $DIR/lifetimes.rs:+10:24: +10:27 - StorageLive(_24); // scope 4 at $DIR/lifetimes.rs:+10:24: +10:27 - StorageLive(_25); // scope 4 at $DIR/lifetimes.rs:+10:24: +10:27 - _25 = &_6; // scope 4 at $DIR/lifetimes.rs:+10:24: +10:27 - _24 = &(*_25); // scope 4 at $DIR/lifetimes.rs:+10:24: +10:27 - _23 = core::fmt::rt::Argument::<'_>::new_display::(move _24) -> [return: bb4, unwind unreachable]; // scope 4 at $DIR/lifetimes.rs:+10:24: +10:27 - // mir::Constant - // + span: $DIR/lifetimes.rs:27:24: 27:27 - // + user_ty: UserType(5) - // + literal: Const { ty: for<'b> fn(&'b u32) -> core::fmt::rt::Argument<'b> {core::fmt::rt::Argument::<'_>::new_display::}, val: Value() } + StorageDead(_21); + StorageLive(_23); + StorageLive(_24); + StorageLive(_25); + _25 = &_6; + _24 = &(*_25); + _23 = core::fmt::rt::Argument::<'_>::new_display::(move _24) -> [return: bb4, unwind unreachable]; } bb4: { - StorageDead(_24); // scope 4 at $DIR/lifetimes.rs:+10:26: +10:27 - _19 = [move _20, move _23]; // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL - StorageDead(_23); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL - StorageDead(_20); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL - _18 = &_19; // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL - _17 = &(*_18); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL - _16 = move _17 as &[core::fmt::rt::Argument<'_>] (Pointer(Unsize)); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL - StorageDead(_17); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL - _11 = Arguments::<'_>::new_v1(move _12, move _16) -> [return: bb5, unwind unreachable]; // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/std/src/macros.rs:LL:COL - // + user_ty: UserType(3) - // + literal: Const { ty: fn(&[&'static str], &[core::fmt::rt::Argument<'_>]) -> Arguments<'_> {Arguments::<'_>::new_v1}, val: Value() } + StorageDead(_24); + _19 = [move _20, move _23]; + StorageDead(_23); + StorageDead(_20); + _18 = &_19; + _17 = &(*_18); + _16 = move _17 as &[core::fmt::rt::Argument<'_>] (Pointer(Unsize)); + StorageDead(_17); + _11 = Arguments::<'_>::new_v1(move _12, move _16) -> [return: bb5, unwind unreachable]; } bb5: { - StorageDead(_16); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL - StorageDead(_12); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL - _10 = _eprint(move _11) -> [return: bb6, unwind unreachable]; // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL - // mir::Constant - // + span: $SRC_DIR/std/src/macros.rs:LL:COL - // + literal: Const { ty: for<'a> fn(Arguments<'a>) {_eprint}, val: Value() } + StorageDead(_16); + StorageDead(_12); + _10 = _eprint(move _11) -> [return: bb6, unwind unreachable]; } bb6: { - StorageDead(_11); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL - StorageDead(_25); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL - StorageDead(_22); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL - StorageDead(_19); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL - StorageDead(_18); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL - StorageDead(_14); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL - StorageDead(_10); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL - _9 = const (); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL - StorageDead(_9); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL - _0 = const (); // scope 4 at $DIR/lifetimes.rs:+9:22: +11:6 - drop(_8) -> [return: bb8, unwind unreachable]; // scope 3 at $DIR/lifetimes.rs:+11:5: +11:6 + StorageDead(_11); + StorageDead(_25); + StorageDead(_22); + StorageDead(_19); + StorageDead(_18); + StorageDead(_14); + StorageDead(_10); + _9 = const (); + StorageDead(_9); + _0 = const (); + drop(_8) -> [return: bb8, unwind unreachable]; } bb7: { - _0 = const (); // scope 3 at $DIR/lifetimes.rs:+11:6: +11:6 - goto -> bb9; // scope 3 at $DIR/lifetimes.rs:+9:5: +11:6 + _0 = const (); + goto -> bb9; } bb8: { - StorageDead(_8); // scope 3 at $DIR/lifetimes.rs:+11:5: +11:6 - goto -> bb9; // scope 3 at $DIR/lifetimes.rs:+9:5: +11:6 + StorageDead(_8); + goto -> bb9; } bb9: { - StorageDead(_6); // scope 2 at $DIR/lifetimes.rs:+12:1: +12:2 - _28 = discriminant(_5); // scope 1 at $DIR/lifetimes.rs:+12:1: +12:2 - switchInt(move _28) -> [0: bb11, otherwise: bb13]; // scope 1 at $DIR/lifetimes.rs:+12:1: +12:2 + StorageDead(_6); + _28 = discriminant(_5); + switchInt(move _28) -> [0: bb11, otherwise: bb13]; } bb10: { - _27 = const false; // scope 1 at $DIR/lifetimes.rs:+12:1: +12:2 - StorageDead(_5); // scope 1 at $DIR/lifetimes.rs:+12:1: +12:2 -- StorageDead(_1); // scope 0 at $DIR/lifetimes.rs:+12:1: +12:2 -+ StorageDead(_31); // scope 0 at $DIR/lifetimes.rs:+12:1: +12:2 -+ StorageDead(_32); // scope 0 at $DIR/lifetimes.rs:+12:1: +12:2 -+ nop; // scope 0 at $DIR/lifetimes.rs:+12:1: +12:2 - return; // scope 0 at $DIR/lifetimes.rs:+12:2: +12:2 + _27 = const false; + StorageDead(_5); +- StorageDead(_1); ++ StorageDead(_31); ++ StorageDead(_32); ++ nop; + return; } bb11: { - switchInt(_27) -> [0: bb10, otherwise: bb12]; // scope 1 at $DIR/lifetimes.rs:+12:1: +12:2 + switchInt(_27) -> [0: bb10, otherwise: bb12]; } bb12: { - drop(((_5 as Ok).0: std::boxed::Box)) -> [return: bb10, unwind unreachable]; // scope 1 at $DIR/lifetimes.rs:+12:1: +12:2 + drop(((_5 as Ok).0: std::boxed::Box)) -> [return: bb10, unwind unreachable]; } bb13: { - drop(_5) -> [return: bb10, unwind unreachable]; // scope 1 at $DIR/lifetimes.rs:+12:1: +12:2 + drop(_5) -> [return: bb10, unwind unreachable]; } } diff --git a/tests/mir-opt/sroa/structs.constant.ScalarReplacementOfAggregates.diff b/tests/mir-opt/sroa/structs.constant.ScalarReplacementOfAggregates.diff index 647681f0e7a76..7ee0431692c1d 100644 --- a/tests/mir-opt/sroa/structs.constant.ScalarReplacementOfAggregates.diff +++ b/tests/mir-opt/sroa/structs.constant.ScalarReplacementOfAggregates.diff @@ -2,45 +2,45 @@ + // MIR for `constant` after ScalarReplacementOfAggregates fn constant() -> () { - let mut _0: (); // return place in scope 0 at $DIR/structs.rs:+0:15: +0:15 - let _1: (usize, u8); // in scope 0 at $DIR/structs.rs:+2:9: +2:10 -+ let _4: usize; // in scope 0 at $DIR/structs.rs:+2:9: +2:10 -+ let _5: u8; // in scope 0 at $DIR/structs.rs:+2:9: +2:10 + let mut _0: (); + let _1: (usize, u8); ++ let _4: usize; ++ let _5: u8; scope 1 { -- debug y => _1; // in scope 1 at $DIR/structs.rs:+2:9: +2:10 -+ debug y => (usize, u8){ .0 => _4, .1 => _5, }; // in scope 1 at $DIR/structs.rs:+2:9: +2:10 - let _2: usize; // in scope 1 at $DIR/structs.rs:+3:9: +3:10 +- debug y => _1; ++ debug y => (usize, u8){ .0 => _4, .1 => _5, }; + let _2: usize; scope 2 { - debug t => _2; // in scope 2 at $DIR/structs.rs:+3:9: +3:10 - let _3: u8; // in scope 2 at $DIR/structs.rs:+4:9: +4:10 + debug t => _2; + let _3: u8; scope 3 { - debug u => _3; // in scope 3 at $DIR/structs.rs:+4:9: +4:10 + debug u => _3; } } } bb0: { -- StorageLive(_1); // scope 0 at $DIR/structs.rs:+2:9: +2:10 -+ StorageLive(_4); // scope 0 at $DIR/structs.rs:+2:9: +2:10 -+ StorageLive(_5); // scope 0 at $DIR/structs.rs:+2:9: +2:10 -+ nop; // scope 0 at $DIR/structs.rs:+2:9: +2:10 - _1 = const _; // scope 0 at $DIR/structs.rs:+2:13: +2:14 -+ _4 = move (_1.0: usize); // scope 1 at $DIR/structs.rs:+3:9: +3:10 -+ _5 = move (_1.1: u8); // scope 1 at $DIR/structs.rs:+3:9: +3:10 - StorageLive(_2); // scope 1 at $DIR/structs.rs:+3:9: +3:10 -- _2 = (_1.0: usize); // scope 1 at $DIR/structs.rs:+3:13: +3:16 -+ _2 = _4; // scope 1 at $DIR/structs.rs:+3:13: +3:16 - StorageLive(_3); // scope 2 at $DIR/structs.rs:+4:9: +4:10 -- _3 = (_1.1: u8); // scope 2 at $DIR/structs.rs:+4:13: +4:16 -+ _3 = _5; // scope 2 at $DIR/structs.rs:+4:13: +4:16 - _0 = const (); // scope 0 at $DIR/structs.rs:+0:15: +5:2 - StorageDead(_3); // scope 2 at $DIR/structs.rs:+5:1: +5:2 - StorageDead(_2); // scope 1 at $DIR/structs.rs:+5:1: +5:2 -- StorageDead(_1); // scope 0 at $DIR/structs.rs:+5:1: +5:2 -+ StorageDead(_4); // scope 0 at $DIR/structs.rs:+5:1: +5:2 -+ StorageDead(_5); // scope 0 at $DIR/structs.rs:+5:1: +5:2 -+ nop; // scope 0 at $DIR/structs.rs:+5:1: +5:2 - return; // scope 0 at $DIR/structs.rs:+5:2: +5:2 +- StorageLive(_1); ++ StorageLive(_4); ++ StorageLive(_5); ++ nop; + _1 = const _; ++ _4 = move (_1.0: usize); ++ _5 = move (_1.1: u8); + StorageLive(_2); +- _2 = (_1.0: usize); ++ _2 = _4; + StorageLive(_3); +- _3 = (_1.1: u8); ++ _3 = _5; + _0 = const (); + StorageDead(_3); + StorageDead(_2); +- StorageDead(_1); ++ StorageDead(_4); ++ StorageDead(_5); ++ nop; + return; } } diff --git a/tests/mir-opt/sroa/structs.copies.ScalarReplacementOfAggregates.diff b/tests/mir-opt/sroa/structs.copies.ScalarReplacementOfAggregates.diff index b0b0da8861f8d..0a1de891aee42 100644 --- a/tests/mir-opt/sroa/structs.copies.ScalarReplacementOfAggregates.diff +++ b/tests/mir-opt/sroa/structs.copies.ScalarReplacementOfAggregates.diff @@ -2,33 +2,33 @@ + // MIR for `copies` after ScalarReplacementOfAggregates fn copies(_1: Foo) -> () { - debug x => _1; // in scope 0 at $DIR/structs.rs:+0:11: +0:12 - let mut _0: (); // return place in scope 0 at $DIR/structs.rs:+0:19: +0:19 - let _2: Foo; // in scope 0 at $DIR/structs.rs:+1:9: +1:10 -+ let _11: u8; // in scope 0 at $DIR/structs.rs:+1:9: +1:10 -+ let _12: (); // in scope 0 at $DIR/structs.rs:+1:9: +1:10 -+ let _13: &str; // in scope 0 at $DIR/structs.rs:+1:9: +1:10 -+ let _14: std::option::Option; // in scope 0 at $DIR/structs.rs:+1:9: +1:10 + debug x => _1; + let mut _0: (); + let _2: Foo; ++ let _11: u8; ++ let _12: (); ++ let _13: &str; ++ let _14: std::option::Option; scope 1 { -- debug y => _2; // in scope 1 at $DIR/structs.rs:+1:9: +1:10 -+ debug y => Foo{ .0 => _11, .1 => _12, .2 => _13, .3 => _14, }; // in scope 1 at $DIR/structs.rs:+1:9: +1:10 - let _3: u8; // in scope 1 at $DIR/structs.rs:+2:9: +2:10 +- debug y => _2; ++ debug y => Foo{ .0 => _11, .1 => _12, .2 => _13, .3 => _14, }; + let _3: u8; scope 2 { - debug t => _3; // in scope 2 at $DIR/structs.rs:+2:9: +2:10 - let _4: &str; // in scope 2 at $DIR/structs.rs:+3:9: +3:10 + debug t => _3; + let _4: &str; scope 3 { - debug u => _4; // in scope 3 at $DIR/structs.rs:+3:9: +3:10 - let _5: Foo; // in scope 3 at $DIR/structs.rs:+4:9: +4:10 -+ let _7: u8; // in scope 3 at $DIR/structs.rs:+4:9: +4:10 -+ let _8: (); // in scope 3 at $DIR/structs.rs:+4:9: +4:10 -+ let _9: &str; // in scope 3 at $DIR/structs.rs:+4:9: +4:10 -+ let _10: std::option::Option; // in scope 3 at $DIR/structs.rs:+4:9: +4:10 + debug u => _4; + let _5: Foo; ++ let _7: u8; ++ let _8: (); ++ let _9: &str; ++ let _10: std::option::Option; scope 4 { -- debug z => _5; // in scope 4 at $DIR/structs.rs:+4:9: +4:10 -+ debug z => Foo{ .0 => _7, .1 => _8, .2 => _9, .3 => _10, }; // in scope 4 at $DIR/structs.rs:+4:9: +4:10 - let _6: (); // in scope 4 at $DIR/structs.rs:+5:9: +5:10 +- debug z => _5; ++ debug z => Foo{ .0 => _7, .1 => _8, .2 => _9, .3 => _10, }; + let _6: (); scope 5 { - debug a => _6; // in scope 5 at $DIR/structs.rs:+5:9: +5:10 + debug a => _6; } } } @@ -36,56 +36,56 @@ } bb0: { -- StorageLive(_2); // scope 0 at $DIR/structs.rs:+1:9: +1:10 -- _2 = _1; // scope 0 at $DIR/structs.rs:+1:13: +1:14 -+ StorageLive(_11); // scope 0 at $DIR/structs.rs:+1:9: +1:10 -+ StorageLive(_12); // scope 0 at $DIR/structs.rs:+1:9: +1:10 -+ StorageLive(_13); // scope 0 at $DIR/structs.rs:+1:9: +1:10 -+ StorageLive(_14); // scope 0 at $DIR/structs.rs:+1:9: +1:10 -+ nop; // scope 0 at $DIR/structs.rs:+1:9: +1:10 -+ _11 = (_1.0: u8); // scope 0 at $DIR/structs.rs:+1:13: +1:14 -+ _12 = (_1.1: ()); // scope 0 at $DIR/structs.rs:+1:13: +1:14 -+ _13 = (_1.2: &str); // scope 0 at $DIR/structs.rs:+1:13: +1:14 -+ _14 = (_1.3: std::option::Option); // scope 0 at $DIR/structs.rs:+1:13: +1:14 -+ nop; // scope 0 at $DIR/structs.rs:+1:13: +1:14 - StorageLive(_3); // scope 1 at $DIR/structs.rs:+2:9: +2:10 -- _3 = (_2.0: u8); // scope 1 at $DIR/structs.rs:+2:13: +2:16 -+ _3 = _11; // scope 1 at $DIR/structs.rs:+2:13: +2:16 - StorageLive(_4); // scope 2 at $DIR/structs.rs:+3:9: +3:10 -- _4 = (_2.2: &str); // scope 2 at $DIR/structs.rs:+3:13: +3:16 -- StorageLive(_5); // scope 3 at $DIR/structs.rs:+4:9: +4:10 -- _5 = _2; // scope 3 at $DIR/structs.rs:+4:13: +4:14 -+ _4 = _13; // scope 2 at $DIR/structs.rs:+3:13: +3:16 -+ StorageLive(_7); // scope 3 at $DIR/structs.rs:+4:9: +4:10 -+ StorageLive(_8); // scope 3 at $DIR/structs.rs:+4:9: +4:10 -+ StorageLive(_9); // scope 3 at $DIR/structs.rs:+4:9: +4:10 -+ StorageLive(_10); // scope 3 at $DIR/structs.rs:+4:9: +4:10 -+ nop; // scope 3 at $DIR/structs.rs:+4:9: +4:10 -+ _7 = _11; // scope 3 at $DIR/structs.rs:+4:13: +4:14 -+ _8 = _12; // scope 3 at $DIR/structs.rs:+4:13: +4:14 -+ _9 = _13; // scope 3 at $DIR/structs.rs:+4:13: +4:14 -+ _10 = _14; // scope 3 at $DIR/structs.rs:+4:13: +4:14 -+ nop; // scope 3 at $DIR/structs.rs:+4:13: +4:14 - StorageLive(_6); // scope 4 at $DIR/structs.rs:+5:9: +5:10 -- _6 = (_5.1: ()); // scope 4 at $DIR/structs.rs:+5:13: +5:16 -+ _6 = _8; // scope 4 at $DIR/structs.rs:+5:13: +5:16 - _0 = const (); // scope 0 at $DIR/structs.rs:+0:19: +6:2 - StorageDead(_6); // scope 4 at $DIR/structs.rs:+6:1: +6:2 -- StorageDead(_5); // scope 3 at $DIR/structs.rs:+6:1: +6:2 -+ StorageDead(_7); // scope 3 at $DIR/structs.rs:+6:1: +6:2 -+ StorageDead(_8); // scope 3 at $DIR/structs.rs:+6:1: +6:2 -+ StorageDead(_9); // scope 3 at $DIR/structs.rs:+6:1: +6:2 -+ StorageDead(_10); // scope 3 at $DIR/structs.rs:+6:1: +6:2 -+ nop; // scope 3 at $DIR/structs.rs:+6:1: +6:2 - StorageDead(_4); // scope 2 at $DIR/structs.rs:+6:1: +6:2 - StorageDead(_3); // scope 1 at $DIR/structs.rs:+6:1: +6:2 -- StorageDead(_2); // scope 0 at $DIR/structs.rs:+6:1: +6:2 -+ StorageDead(_11); // scope 0 at $DIR/structs.rs:+6:1: +6:2 -+ StorageDead(_12); // scope 0 at $DIR/structs.rs:+6:1: +6:2 -+ StorageDead(_13); // scope 0 at $DIR/structs.rs:+6:1: +6:2 -+ StorageDead(_14); // scope 0 at $DIR/structs.rs:+6:1: +6:2 -+ nop; // scope 0 at $DIR/structs.rs:+6:1: +6:2 - return; // scope 0 at $DIR/structs.rs:+6:2: +6:2 +- StorageLive(_2); +- _2 = _1; ++ StorageLive(_11); ++ StorageLive(_12); ++ StorageLive(_13); ++ StorageLive(_14); ++ nop; ++ _11 = (_1.0: u8); ++ _12 = (_1.1: ()); ++ _13 = (_1.2: &str); ++ _14 = (_1.3: std::option::Option); ++ nop; + StorageLive(_3); +- _3 = (_2.0: u8); ++ _3 = _11; + StorageLive(_4); +- _4 = (_2.2: &str); +- StorageLive(_5); +- _5 = _2; ++ _4 = _13; ++ StorageLive(_7); ++ StorageLive(_8); ++ StorageLive(_9); ++ StorageLive(_10); ++ nop; ++ _7 = _11; ++ _8 = _12; ++ _9 = _13; ++ _10 = _14; ++ nop; + StorageLive(_6); +- _6 = (_5.1: ()); ++ _6 = _8; + _0 = const (); + StorageDead(_6); +- StorageDead(_5); ++ StorageDead(_7); ++ StorageDead(_8); ++ StorageDead(_9); ++ StorageDead(_10); ++ nop; + StorageDead(_4); + StorageDead(_3); +- StorageDead(_2); ++ StorageDead(_11); ++ StorageDead(_12); ++ StorageDead(_13); ++ StorageDead(_14); ++ nop; + return; } } diff --git a/tests/mir-opt/sroa/structs.dropping.ScalarReplacementOfAggregates.diff b/tests/mir-opt/sroa/structs.dropping.ScalarReplacementOfAggregates.diff index d378c260a0040..bc38a219ef3c5 100644 --- a/tests/mir-opt/sroa/structs.dropping.ScalarReplacementOfAggregates.diff +++ b/tests/mir-opt/sroa/structs.dropping.ScalarReplacementOfAggregates.diff @@ -2,43 +2,43 @@ + // MIR for `dropping` after ScalarReplacementOfAggregates fn dropping() -> () { - let mut _0: (); // return place in scope 0 at $DIR/structs.rs:+0:19: +0:19 - let _1: Tag; // in scope 0 at $DIR/structs.rs:+1:5: +1:32 - let mut _2: S; // in scope 0 at $DIR/structs.rs:+1:5: +1:30 - let mut _3: Tag; // in scope 0 at $DIR/structs.rs:+1:7: +1:13 - let mut _4: Tag; // in scope 0 at $DIR/structs.rs:+1:15: +1:21 - let mut _5: Tag; // in scope 0 at $DIR/structs.rs:+1:23: +1:29 + let mut _0: (); + let _1: Tag; + let mut _2: S; + let mut _3: Tag; + let mut _4: Tag; + let mut _5: Tag; bb0: { - StorageLive(_1); // scope 0 at $DIR/structs.rs:+1:5: +1:32 - StorageLive(_2); // scope 0 at $DIR/structs.rs:+1:5: +1:30 - StorageLive(_3); // scope 0 at $DIR/structs.rs:+1:7: +1:13 - _3 = Tag(const 0_usize); // scope 0 at $DIR/structs.rs:+1:7: +1:13 - StorageLive(_4); // scope 0 at $DIR/structs.rs:+1:15: +1:21 - _4 = Tag(const 1_usize); // scope 0 at $DIR/structs.rs:+1:15: +1:21 - StorageLive(_5); // scope 0 at $DIR/structs.rs:+1:23: +1:29 - _5 = Tag(const 2_usize); // scope 0 at $DIR/structs.rs:+1:23: +1:29 - _2 = S(move _3, move _4, move _5); // scope 0 at $DIR/structs.rs:+1:5: +1:30 - StorageDead(_5); // scope 0 at $DIR/structs.rs:+1:29: +1:30 - StorageDead(_4); // scope 0 at $DIR/structs.rs:+1:29: +1:30 - StorageDead(_3); // scope 0 at $DIR/structs.rs:+1:29: +1:30 - _1 = move (_2.1: Tag); // scope 0 at $DIR/structs.rs:+1:5: +1:32 - drop(_1) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/structs.rs:+1:32: +1:33 + StorageLive(_1); + StorageLive(_2); + StorageLive(_3); + _3 = Tag(const 0_usize); + StorageLive(_4); + _4 = Tag(const 1_usize); + StorageLive(_5); + _5 = Tag(const 2_usize); + _2 = S(move _3, move _4, move _5); + StorageDead(_5); + StorageDead(_4); + StorageDead(_3); + _1 = move (_2.1: Tag); + drop(_1) -> [return: bb1, unwind unreachable]; } bb1: { - drop((_2.0: Tag)) -> [return: bb3, unwind unreachable]; // scope 0 at $DIR/structs.rs:+1:32: +1:33 + drop((_2.0: Tag)) -> [return: bb3, unwind unreachable]; } bb2: { - StorageDead(_2); // scope 0 at $DIR/structs.rs:+1:32: +1:33 - StorageDead(_1); // scope 0 at $DIR/structs.rs:+1:32: +1:33 - _0 = const (); // scope 0 at $DIR/structs.rs:+0:19: +2:2 - return; // scope 0 at $DIR/structs.rs:+2:2: +2:2 + StorageDead(_2); + StorageDead(_1); + _0 = const (); + return; } bb3: { - drop((_2.2: Tag)) -> [return: bb2, unwind unreachable]; // scope 0 at $DIR/structs.rs:+1:32: +1:33 + drop((_2.2: Tag)) -> [return: bb2, unwind unreachable]; } } diff --git a/tests/mir-opt/sroa/structs.enums.ScalarReplacementOfAggregates.diff b/tests/mir-opt/sroa/structs.enums.ScalarReplacementOfAggregates.diff index ff1e30c2d8f3c..b5e39e632476c 100644 --- a/tests/mir-opt/sroa/structs.enums.ScalarReplacementOfAggregates.diff +++ b/tests/mir-opt/sroa/structs.enums.ScalarReplacementOfAggregates.diff @@ -2,42 +2,42 @@ + // MIR for `enums` after ScalarReplacementOfAggregates fn enums(_1: usize) -> usize { - debug a => _1; // in scope 0 at $DIR/structs.rs:+0:14: +0:15 - let mut _0: usize; // return place in scope 0 at $DIR/structs.rs:+0:27: +0:32 - let mut _2: std::option::Option; // in scope 0 at $DIR/structs.rs:+1:22: +1:29 - let mut _3: usize; // in scope 0 at $DIR/structs.rs:+1:27: +1:28 - let mut _4: isize; // in scope 0 at $DIR/structs.rs:+1:12: +1:19 + debug a => _1; + let mut _0: usize; + let mut _2: std::option::Option; + let mut _3: usize; + let mut _4: isize; scope 1 { - debug a => _5; // in scope 1 at $DIR/structs.rs:+1:17: +1:18 - let _5: usize; // in scope 1 at $DIR/structs.rs:+1:17: +1:18 + debug a => _5; + let _5: usize; } bb0: { - StorageLive(_2); // scope 1 at $DIR/structs.rs:+1:22: +1:29 - StorageLive(_3); // scope 1 at $DIR/structs.rs:+1:27: +1:28 - _3 = _1; // scope 1 at $DIR/structs.rs:+1:27: +1:28 - _2 = Option::::Some(move _3); // scope 1 at $DIR/structs.rs:+1:22: +1:29 - StorageDead(_3); // scope 1 at $DIR/structs.rs:+1:28: +1:29 - _4 = discriminant(_2); // scope 1 at $DIR/structs.rs:+1:12: +1:19 - switchInt(move _4) -> [1: bb1, otherwise: bb2]; // scope 1 at $DIR/structs.rs:+1:12: +1:19 + StorageLive(_2); + StorageLive(_3); + _3 = _1; + _2 = Option::::Some(move _3); + StorageDead(_3); + _4 = discriminant(_2); + switchInt(move _4) -> [1: bb1, otherwise: bb2]; } bb1: { - StorageLive(_5); // scope 1 at $DIR/structs.rs:+1:17: +1:18 - _5 = ((_2 as Some).0: usize); // scope 1 at $DIR/structs.rs:+1:17: +1:18 - _0 = _5; // scope 1 at $DIR/structs.rs:+1:32: +1:33 - StorageDead(_5); // scope 0 at $DIR/structs.rs:+1:34: +1:35 - goto -> bb3; // scope 0 at $DIR/structs.rs:+1:5: +1:46 + StorageLive(_5); + _5 = ((_2 as Some).0: usize); + _0 = _5; + StorageDead(_5); + goto -> bb3; } bb2: { - _0 = const 0_usize; // scope 0 at $DIR/structs.rs:+1:43: +1:44 - goto -> bb3; // scope 0 at $DIR/structs.rs:+1:5: +1:46 + _0 = const 0_usize; + goto -> bb3; } bb3: { - StorageDead(_2); // scope 0 at $DIR/structs.rs:+2:1: +2:2 - return; // scope 0 at $DIR/structs.rs:+2:2: +2:2 + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/sroa/structs.escaping.ScalarReplacementOfAggregates.diff b/tests/mir-opt/sroa/structs.escaping.ScalarReplacementOfAggregates.diff index 3074fcbdf5315..6443c64862cc8 100644 --- a/tests/mir-opt/sroa/structs.escaping.ScalarReplacementOfAggregates.diff +++ b/tests/mir-opt/sroa/structs.escaping.ScalarReplacementOfAggregates.diff @@ -2,43 +2,37 @@ + // MIR for `escaping` after ScalarReplacementOfAggregates fn escaping() -> () { - let mut _0: (); // return place in scope 0 at $DIR/structs.rs:+0:19: +0:19 - let _1: (); // in scope 0 at $DIR/structs.rs:+1:5: +1:42 - let mut _2: *const u32; // in scope 0 at $DIR/structs.rs:+1:7: +1:41 - let _3: &u32; // in scope 0 at $DIR/structs.rs:+1:7: +1:41 - let _4: Escaping; // in scope 0 at $DIR/structs.rs:+1:8: +1:39 - let mut _5: u32; // in scope 0 at $DIR/structs.rs:+1:34: +1:37 + let mut _0: (); + let _1: (); + let mut _2: *const u32; + let _3: &u32; + let _4: Escaping; + let mut _5: u32; bb0: { - StorageLive(_1); // scope 0 at $DIR/structs.rs:+1:5: +1:42 - StorageLive(_2); // scope 0 at $DIR/structs.rs:+1:7: +1:41 - StorageLive(_3); // scope 0 at $DIR/structs.rs:+1:7: +1:41 - StorageLive(_4); // scope 0 at $DIR/structs.rs:+1:8: +1:39 - StorageLive(_5); // scope 0 at $DIR/structs.rs:+1:34: +1:37 - _5 = g() -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/structs.rs:+1:34: +1:37 - // mir::Constant - // + span: $DIR/structs.rs:78:34: 78:35 - // + literal: Const { ty: fn() -> u32 {g}, val: Value() } + StorageLive(_1); + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + StorageLive(_5); + _5 = g() -> [return: bb1, unwind unreachable]; } bb1: { - _4 = Escaping { a: const 1_u32, b: const 2_u32, c: move _5 }; // scope 0 at $DIR/structs.rs:+1:8: +1:39 - StorageDead(_5); // scope 0 at $DIR/structs.rs:+1:38: +1:39 - _3 = &(_4.0: u32); // scope 0 at $DIR/structs.rs:+1:7: +1:41 - _2 = &raw const (*_3); // scope 0 at $DIR/structs.rs:+1:7: +1:41 - _1 = f(move _2) -> [return: bb2, unwind unreachable]; // scope 0 at $DIR/structs.rs:+1:5: +1:42 - // mir::Constant - // + span: $DIR/structs.rs:78:5: 78:6 - // + literal: Const { ty: fn(*const u32) {f}, val: Value() } + _4 = Escaping { a: const 1_u32, b: const 2_u32, c: move _5 }; + StorageDead(_5); + _3 = &(_4.0: u32); + _2 = &raw const (*_3); + _1 = f(move _2) -> [return: bb2, unwind unreachable]; } bb2: { - StorageDead(_2); // scope 0 at $DIR/structs.rs:+1:41: +1:42 - StorageDead(_4); // scope 0 at $DIR/structs.rs:+1:42: +1:43 - StorageDead(_3); // scope 0 at $DIR/structs.rs:+1:42: +1:43 - StorageDead(_1); // scope 0 at $DIR/structs.rs:+1:42: +1:43 - _0 = const (); // scope 0 at $DIR/structs.rs:+0:19: +2:2 - return; // scope 0 at $DIR/structs.rs:+2:2: +2:2 + StorageDead(_2); + StorageDead(_4); + StorageDead(_3); + StorageDead(_1); + _0 = const (); + return; } } diff --git a/tests/mir-opt/sroa/structs.flat.ScalarReplacementOfAggregates.diff b/tests/mir-opt/sroa/structs.flat.ScalarReplacementOfAggregates.diff index 1aa11d17b6725..a84048365a4ba 100644 --- a/tests/mir-opt/sroa/structs.flat.ScalarReplacementOfAggregates.diff +++ b/tests/mir-opt/sroa/structs.flat.ScalarReplacementOfAggregates.diff @@ -2,23 +2,23 @@ + // MIR for `flat` after ScalarReplacementOfAggregates fn flat() -> () { - let mut _0: (); // return place in scope 0 at $DIR/structs.rs:+0:15: +0:15 - let _1: u8; // in scope 0 at $DIR/structs.rs:+1:15: +1:16 - let _2: (); // in scope 0 at $DIR/structs.rs:+1:18: +1:19 - let _3: &str; // in scope 0 at $DIR/structs.rs:+1:21: +1:22 - let _4: std::option::Option; // in scope 0 at $DIR/structs.rs:+1:24: +1:25 - let mut _5: Foo; // in scope 0 at $DIR/structs.rs:+1:30: +1:70 - let mut _6: (); // in scope 0 at $DIR/structs.rs:+1:45: +1:47 - let mut _7: std::option::Option; // in scope 0 at $DIR/structs.rs:+1:60: +1:68 -+ let mut _8: u8; // in scope 0 at $DIR/structs.rs:+1:30: +1:70 -+ let mut _9: (); // in scope 0 at $DIR/structs.rs:+1:30: +1:70 -+ let mut _10: &str; // in scope 0 at $DIR/structs.rs:+1:30: +1:70 -+ let mut _11: std::option::Option; // in scope 0 at $DIR/structs.rs:+1:30: +1:70 + let mut _0: (); + let _1: u8; + let _2: (); + let _3: &str; + let _4: std::option::Option; + let mut _5: Foo; + let mut _6: (); + let mut _7: std::option::Option; ++ let mut _8: u8; ++ let mut _9: (); ++ let mut _10: &str; ++ let mut _11: std::option::Option; scope 1 { - debug a => _1; // in scope 1 at $DIR/structs.rs:+1:15: +1:16 - debug b => _2; // in scope 1 at $DIR/structs.rs:+1:18: +1:19 - debug c => _3; // in scope 1 at $DIR/structs.rs:+1:21: +1:22 - debug d => _4; // in scope 1 at $DIR/structs.rs:+1:24: +1:25 + debug a => _1; + debug b => _2; + debug c => _3; + debug d => _4; scope 2 { scope 3 { scope 4 { @@ -30,51 +30,48 @@ } bb0: { -- StorageLive(_5); // scope 0 at $DIR/structs.rs:+1:30: +1:70 -+ StorageLive(_8); // scope 0 at $DIR/structs.rs:+1:30: +1:70 -+ StorageLive(_9); // scope 0 at $DIR/structs.rs:+1:30: +1:70 -+ StorageLive(_10); // scope 0 at $DIR/structs.rs:+1:30: +1:70 -+ StorageLive(_11); // scope 0 at $DIR/structs.rs:+1:30: +1:70 -+ nop; // scope 0 at $DIR/structs.rs:+1:30: +1:70 - StorageLive(_6); // scope 0 at $DIR/structs.rs:+1:45: +1:47 - _6 = (); // scope 0 at $DIR/structs.rs:+1:45: +1:47 - StorageLive(_7); // scope 0 at $DIR/structs.rs:+1:60: +1:68 - _7 = Option::::Some(const -4_isize); // scope 0 at $DIR/structs.rs:+1:60: +1:68 -- _5 = Foo { a: const 5_u8, b: move _6, c: const "a", d: move _7 }; // scope 0 at $DIR/structs.rs:+1:30: +1:70 -+ _8 = const 5_u8; // scope 0 at $DIR/structs.rs:+1:30: +1:70 -+ _9 = move _6; // scope 0 at $DIR/structs.rs:+1:30: +1:70 -+ _10 = const "a"; // scope 0 at $DIR/structs.rs:+1:30: +1:70 - // mir::Constant - // + span: $DIR/structs.rs:53:52: 53:55 - // + literal: Const { ty: &str, val: Value(Slice(..)) } -+ _11 = move _7; // scope 0 at $DIR/structs.rs:+1:30: +1:70 -+ nop; // scope 0 at $DIR/structs.rs:+1:30: +1:70 - StorageDead(_7); // scope 0 at $DIR/structs.rs:+1:69: +1:70 - StorageDead(_6); // scope 0 at $DIR/structs.rs:+1:69: +1:70 - StorageLive(_1); // scope 0 at $DIR/structs.rs:+1:15: +1:16 -- _1 = (_5.0: u8); // scope 0 at $DIR/structs.rs:+1:15: +1:16 -+ _1 = _8; // scope 0 at $DIR/structs.rs:+1:15: +1:16 - StorageLive(_2); // scope 0 at $DIR/structs.rs:+1:18: +1:19 -- _2 = (_5.1: ()); // scope 0 at $DIR/structs.rs:+1:18: +1:19 -+ _2 = _9; // scope 0 at $DIR/structs.rs:+1:18: +1:19 - StorageLive(_3); // scope 0 at $DIR/structs.rs:+1:21: +1:22 -- _3 = (_5.2: &str); // scope 0 at $DIR/structs.rs:+1:21: +1:22 -+ _3 = _10; // scope 0 at $DIR/structs.rs:+1:21: +1:22 - StorageLive(_4); // scope 0 at $DIR/structs.rs:+1:24: +1:25 -- _4 = (_5.3: std::option::Option); // scope 0 at $DIR/structs.rs:+1:24: +1:25 -- StorageDead(_5); // scope 0 at $DIR/structs.rs:+1:70: +1:71 -+ _4 = _11; // scope 0 at $DIR/structs.rs:+1:24: +1:25 -+ StorageDead(_8); // scope 0 at $DIR/structs.rs:+1:70: +1:71 -+ StorageDead(_9); // scope 0 at $DIR/structs.rs:+1:70: +1:71 -+ StorageDead(_10); // scope 0 at $DIR/structs.rs:+1:70: +1:71 -+ StorageDead(_11); // scope 0 at $DIR/structs.rs:+1:70: +1:71 -+ nop; // scope 0 at $DIR/structs.rs:+1:70: +1:71 - _0 = const (); // scope 0 at $DIR/structs.rs:+0:15: +6:2 - StorageDead(_4); // scope 0 at $DIR/structs.rs:+6:1: +6:2 - StorageDead(_3); // scope 0 at $DIR/structs.rs:+6:1: +6:2 - StorageDead(_2); // scope 0 at $DIR/structs.rs:+6:1: +6:2 - StorageDead(_1); // scope 0 at $DIR/structs.rs:+6:1: +6:2 - return; // scope 0 at $DIR/structs.rs:+6:2: +6:2 +- StorageLive(_5); ++ StorageLive(_8); ++ StorageLive(_9); ++ StorageLive(_10); ++ StorageLive(_11); ++ nop; + StorageLive(_6); + _6 = (); + StorageLive(_7); + _7 = Option::::Some(const -4_isize); +- _5 = Foo { a: const 5_u8, b: move _6, c: const "a", d: move _7 }; ++ _8 = const 5_u8; ++ _9 = move _6; ++ _10 = const "a"; ++ _11 = move _7; ++ nop; + StorageDead(_7); + StorageDead(_6); + StorageLive(_1); +- _1 = (_5.0: u8); ++ _1 = _8; + StorageLive(_2); +- _2 = (_5.1: ()); ++ _2 = _9; + StorageLive(_3); +- _3 = (_5.2: &str); ++ _3 = _10; + StorageLive(_4); +- _4 = (_5.3: std::option::Option); +- StorageDead(_5); ++ _4 = _11; ++ StorageDead(_8); ++ StorageDead(_9); ++ StorageDead(_10); ++ StorageDead(_11); ++ nop; + _0 = const (); + StorageDead(_4); + StorageDead(_3); + StorageDead(_2); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/sroa/structs.ref_copies.ScalarReplacementOfAggregates.diff b/tests/mir-opt/sroa/structs.ref_copies.ScalarReplacementOfAggregates.diff index 7b09ac182630f..d7c57c293c4a9 100644 --- a/tests/mir-opt/sroa/structs.ref_copies.ScalarReplacementOfAggregates.diff +++ b/tests/mir-opt/sroa/structs.ref_copies.ScalarReplacementOfAggregates.diff @@ -2,55 +2,55 @@ + // MIR for `ref_copies` after ScalarReplacementOfAggregates fn ref_copies(_1: &Foo) -> () { - debug x => _1; // in scope 0 at $DIR/structs.rs:+0:15: +0:16 - let mut _0: (); // return place in scope 0 at $DIR/structs.rs:+0:24: +0:24 - let _2: Foo; // in scope 0 at $DIR/structs.rs:+1:9: +1:10 -+ let _5: u8; // in scope 0 at $DIR/structs.rs:+1:9: +1:10 -+ let _6: (); // in scope 0 at $DIR/structs.rs:+1:9: +1:10 -+ let _7: &str; // in scope 0 at $DIR/structs.rs:+1:9: +1:10 -+ let _8: std::option::Option; // in scope 0 at $DIR/structs.rs:+1:9: +1:10 + debug x => _1; + let mut _0: (); + let _2: Foo; ++ let _5: u8; ++ let _6: (); ++ let _7: &str; ++ let _8: std::option::Option; scope 1 { -- debug y => _2; // in scope 1 at $DIR/structs.rs:+1:9: +1:10 -+ debug y => Foo{ .0 => _5, .1 => _6, .2 => _7, .3 => _8, }; // in scope 1 at $DIR/structs.rs:+1:9: +1:10 - let _3: u8; // in scope 1 at $DIR/structs.rs:+2:9: +2:10 +- debug y => _2; ++ debug y => Foo{ .0 => _5, .1 => _6, .2 => _7, .3 => _8, }; + let _3: u8; scope 2 { - debug t => _3; // in scope 2 at $DIR/structs.rs:+2:9: +2:10 - let _4: &str; // in scope 2 at $DIR/structs.rs:+3:9: +3:10 + debug t => _3; + let _4: &str; scope 3 { - debug u => _4; // in scope 3 at $DIR/structs.rs:+3:9: +3:10 + debug u => _4; } } } bb0: { -- StorageLive(_2); // scope 0 at $DIR/structs.rs:+1:9: +1:10 -- _2 = (*_1); // scope 0 at $DIR/structs.rs:+1:13: +1:15 -+ StorageLive(_5); // scope 0 at $DIR/structs.rs:+1:9: +1:10 -+ StorageLive(_6); // scope 0 at $DIR/structs.rs:+1:9: +1:10 -+ StorageLive(_7); // scope 0 at $DIR/structs.rs:+1:9: +1:10 -+ StorageLive(_8); // scope 0 at $DIR/structs.rs:+1:9: +1:10 -+ nop; // scope 0 at $DIR/structs.rs:+1:9: +1:10 -+ _5 = ((*_1).0: u8); // scope 0 at $DIR/structs.rs:+1:13: +1:15 -+ _6 = ((*_1).1: ()); // scope 0 at $DIR/structs.rs:+1:13: +1:15 -+ _7 = ((*_1).2: &str); // scope 0 at $DIR/structs.rs:+1:13: +1:15 -+ _8 = ((*_1).3: std::option::Option); // scope 0 at $DIR/structs.rs:+1:13: +1:15 -+ nop; // scope 0 at $DIR/structs.rs:+1:13: +1:15 - StorageLive(_3); // scope 1 at $DIR/structs.rs:+2:9: +2:10 -- _3 = (_2.0: u8); // scope 1 at $DIR/structs.rs:+2:13: +2:16 -+ _3 = _5; // scope 1 at $DIR/structs.rs:+2:13: +2:16 - StorageLive(_4); // scope 2 at $DIR/structs.rs:+3:9: +3:10 -- _4 = (_2.2: &str); // scope 2 at $DIR/structs.rs:+3:13: +3:16 -+ _4 = _7; // scope 2 at $DIR/structs.rs:+3:13: +3:16 - _0 = const (); // scope 0 at $DIR/structs.rs:+0:24: +4:2 - StorageDead(_4); // scope 2 at $DIR/structs.rs:+4:1: +4:2 - StorageDead(_3); // scope 1 at $DIR/structs.rs:+4:1: +4:2 -- StorageDead(_2); // scope 0 at $DIR/structs.rs:+4:1: +4:2 -+ StorageDead(_5); // scope 0 at $DIR/structs.rs:+4:1: +4:2 -+ StorageDead(_6); // scope 0 at $DIR/structs.rs:+4:1: +4:2 -+ StorageDead(_7); // scope 0 at $DIR/structs.rs:+4:1: +4:2 -+ StorageDead(_8); // scope 0 at $DIR/structs.rs:+4:1: +4:2 -+ nop; // scope 0 at $DIR/structs.rs:+4:1: +4:2 - return; // scope 0 at $DIR/structs.rs:+4:2: +4:2 +- StorageLive(_2); +- _2 = (*_1); ++ StorageLive(_5); ++ StorageLive(_6); ++ StorageLive(_7); ++ StorageLive(_8); ++ nop; ++ _5 = ((*_1).0: u8); ++ _6 = ((*_1).1: ()); ++ _7 = ((*_1).2: &str); ++ _8 = ((*_1).3: std::option::Option); ++ nop; + StorageLive(_3); +- _3 = (_2.0: u8); ++ _3 = _5; + StorageLive(_4); +- _4 = (_2.2: &str); ++ _4 = _7; + _0 = const (); + StorageDead(_4); + StorageDead(_3); +- StorageDead(_2); ++ StorageDead(_5); ++ StorageDead(_6); ++ StorageDead(_7); ++ StorageDead(_8); ++ nop; + return; } } diff --git a/tests/mir-opt/sroa/structs.structs.ScalarReplacementOfAggregates.diff b/tests/mir-opt/sroa/structs.structs.ScalarReplacementOfAggregates.diff index c94e4b137bc40..bf5c3e3bd0302 100644 --- a/tests/mir-opt/sroa/structs.structs.ScalarReplacementOfAggregates.diff +++ b/tests/mir-opt/sroa/structs.structs.ScalarReplacementOfAggregates.diff @@ -2,32 +2,32 @@ + // MIR for `structs` after ScalarReplacementOfAggregates fn structs(_1: f32) -> f32 { - debug a => _1; // in scope 0 at $DIR/structs.rs:+0:16: +0:17 - let mut _0: f32; // return place in scope 0 at $DIR/structs.rs:+0:27: +0:30 - let mut _2: structs::U; // in scope 0 at $DIR/structs.rs:+6:5: +6:21 - let mut _3: f32; // in scope 0 at $DIR/structs.rs:+6:18: +6:19 -+ let mut _4: usize; // in scope 0 at $DIR/structs.rs:+6:5: +6:21 -+ let mut _5: f32; // in scope 0 at $DIR/structs.rs:+6:5: +6:21 + debug a => _1; + let mut _0: f32; + let mut _2: structs::U; + let mut _3: f32; ++ let mut _4: usize; ++ let mut _5: f32; bb0: { -- StorageLive(_2); // scope 0 at $DIR/structs.rs:+6:5: +6:21 -+ StorageLive(_4); // scope 0 at $DIR/structs.rs:+6:5: +6:21 -+ StorageLive(_5); // scope 0 at $DIR/structs.rs:+6:5: +6:21 -+ nop; // scope 0 at $DIR/structs.rs:+6:5: +6:21 - StorageLive(_3); // scope 0 at $DIR/structs.rs:+6:18: +6:19 - _3 = _1; // scope 0 at $DIR/structs.rs:+6:18: +6:19 -- _2 = U { _foo: const 0_usize, a: move _3 }; // scope 0 at $DIR/structs.rs:+6:5: +6:21 -+ _4 = const 0_usize; // scope 0 at $DIR/structs.rs:+6:5: +6:21 -+ _5 = move _3; // scope 0 at $DIR/structs.rs:+6:5: +6:21 -+ nop; // scope 0 at $DIR/structs.rs:+6:5: +6:21 - StorageDead(_3); // scope 0 at $DIR/structs.rs:+6:20: +6:21 -- _0 = (_2.1: f32); // scope 0 at $DIR/structs.rs:+6:5: +6:23 -- StorageDead(_2); // scope 0 at $DIR/structs.rs:+7:1: +7:2 -+ _0 = _5; // scope 0 at $DIR/structs.rs:+6:5: +6:23 -+ StorageDead(_4); // scope 0 at $DIR/structs.rs:+7:1: +7:2 -+ StorageDead(_5); // scope 0 at $DIR/structs.rs:+7:1: +7:2 -+ nop; // scope 0 at $DIR/structs.rs:+7:1: +7:2 - return; // scope 0 at $DIR/structs.rs:+7:2: +7:2 +- StorageLive(_2); ++ StorageLive(_4); ++ StorageLive(_5); ++ nop; + StorageLive(_3); + _3 = _1; +- _2 = U { _foo: const 0_usize, a: move _3 }; ++ _4 = const 0_usize; ++ _5 = move _3; ++ nop; + StorageDead(_3); +- _0 = (_2.1: f32); +- StorageDead(_2); ++ _0 = _5; ++ StorageDead(_4); ++ StorageDead(_5); ++ nop; + return; } } diff --git a/tests/mir-opt/sroa/structs.unions.ScalarReplacementOfAggregates.diff b/tests/mir-opt/sroa/structs.unions.ScalarReplacementOfAggregates.diff index 5aa054589e4d3..6c99d3efd29e0 100644 --- a/tests/mir-opt/sroa/structs.unions.ScalarReplacementOfAggregates.diff +++ b/tests/mir-opt/sroa/structs.unions.ScalarReplacementOfAggregates.diff @@ -2,22 +2,22 @@ + // MIR for `unions` after ScalarReplacementOfAggregates fn unions(_1: f32) -> u32 { - debug a => _1; // in scope 0 at $DIR/structs.rs:+0:15: +0:16 - let mut _0: u32; // return place in scope 0 at $DIR/structs.rs:+0:26: +0:29 - let mut _2: unions::Repr; // in scope 0 at $DIR/structs.rs:+5:14: +5:27 - let mut _3: f32; // in scope 0 at $DIR/structs.rs:+5:24: +5:25 + debug a => _1; + let mut _0: u32; + let mut _2: unions::Repr; + let mut _3: f32; scope 1 { } bb0: { - StorageLive(_2); // scope 1 at $DIR/structs.rs:+5:14: +5:27 - StorageLive(_3); // scope 1 at $DIR/structs.rs:+5:24: +5:25 - _3 = _1; // scope 1 at $DIR/structs.rs:+5:24: +5:25 - _2 = Repr { f: move _3 }; // scope 1 at $DIR/structs.rs:+5:14: +5:27 - StorageDead(_3); // scope 1 at $DIR/structs.rs:+5:26: +5:27 - _0 = (_2.1: u32); // scope 1 at $DIR/structs.rs:+5:14: +5:29 - StorageDead(_2); // scope 0 at $DIR/structs.rs:+6:1: +6:2 - return; // scope 0 at $DIR/structs.rs:+6:2: +6:2 + StorageLive(_2); + StorageLive(_3); + _3 = _1; + _2 = Repr { f: move _3 }; + StorageDead(_3); + _0 = (_2.1: u32); + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/storage_ranges.main.nll.0.mir b/tests/mir-opt/storage_ranges.main.nll.0.mir index 5bb1a7bf0c937..13732daa7ad7e 100644 --- a/tests/mir-opt/storage_ranges.main.nll.0.mir +++ b/tests/mir-opt/storage_ranges.main.nll.0.mir @@ -18,46 +18,46 @@ | '?2: '?3 due to Assignment at Single(bb0[10]) ($DIR/storage_ranges.rs:6:17: 6:25 (#0) | fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/storage_ranges.rs:+0:11: +0:11 - let _1: i32; // in scope 0 at $DIR/storage_ranges.rs:+1:9: +1:10 - let _2: (); // in scope 0 at $DIR/storage_ranges.rs:+2:5: +4:6 - let _4: std::option::Option; // in scope 0 at $DIR/storage_ranges.rs:+3:18: +3:25 - let mut _5: i32; // in scope 0 at $DIR/storage_ranges.rs:+3:23: +3:24 + let mut _0: (); + let _1: i32; + let _2: (); + let _4: std::option::Option; + let mut _5: i32; scope 1 { - debug a => _1; // in scope 1 at $DIR/storage_ranges.rs:+1:9: +1:10 - let _3: &std::option::Option; // in scope 1 at $DIR/storage_ranges.rs:+3:13: +3:14 - let _6: i32; // in scope 1 at $DIR/storage_ranges.rs:+5:9: +5:10 + debug a => _1; + let _3: &std::option::Option; + let _6: i32; scope 2 { - debug b => _3; // in scope 2 at $DIR/storage_ranges.rs:+3:13: +3:14 + debug b => _3; } scope 3 { - debug c => _6; // in scope 3 at $DIR/storage_ranges.rs:+5:9: +5:10 + debug c => _6; } } bb0: { - StorageLive(_1); // scope 0 at $DIR/storage_ranges.rs:+1:9: +1:10 - _1 = const 0_i32; // scope 0 at $DIR/storage_ranges.rs:+1:13: +1:14 - FakeRead(ForLet(None), _1); // scope 0 at $DIR/storage_ranges.rs:+1:9: +1:10 - StorageLive(_2); // scope 1 at $DIR/storage_ranges.rs:+2:5: +4:6 - StorageLive(_3); // scope 1 at $DIR/storage_ranges.rs:+3:13: +3:14 - StorageLive(_4); // scope 1 at $DIR/storage_ranges.rs:+3:18: +3:25 - StorageLive(_5); // scope 1 at $DIR/storage_ranges.rs:+3:23: +3:24 - _5 = _1; // scope 1 at $DIR/storage_ranges.rs:+3:23: +3:24 - _4 = Option::::Some(move _5); // scope 1 at $DIR/storage_ranges.rs:+3:18: +3:25 - StorageDead(_5); // scope 1 at $DIR/storage_ranges.rs:+3:24: +3:25 - _3 = &_4; // scope 1 at $DIR/storage_ranges.rs:+3:17: +3:25 - FakeRead(ForLet(None), _3); // scope 1 at $DIR/storage_ranges.rs:+3:13: +3:14 - _2 = const (); // scope 1 at $DIR/storage_ranges.rs:+2:5: +4:6 - StorageDead(_4); // scope 1 at $DIR/storage_ranges.rs:+4:5: +4:6 - StorageDead(_3); // scope 1 at $DIR/storage_ranges.rs:+4:5: +4:6 - StorageDead(_2); // scope 1 at $DIR/storage_ranges.rs:+4:5: +4:6 - StorageLive(_6); // scope 1 at $DIR/storage_ranges.rs:+5:9: +5:10 - _6 = const 1_i32; // scope 1 at $DIR/storage_ranges.rs:+5:13: +5:14 - FakeRead(ForLet(None), _6); // scope 1 at $DIR/storage_ranges.rs:+5:9: +5:10 - _0 = const (); // scope 0 at $DIR/storage_ranges.rs:+0:11: +6:2 - StorageDead(_6); // scope 1 at $DIR/storage_ranges.rs:+6:1: +6:2 - StorageDead(_1); // scope 0 at $DIR/storage_ranges.rs:+6:1: +6:2 - return; // scope 0 at $DIR/storage_ranges.rs:+6:2: +6:2 + StorageLive(_1); + _1 = const 0_i32; + FakeRead(ForLet(None), _1); + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + StorageLive(_5); + _5 = _1; + _4 = Option::::Some(move _5); + StorageDead(_5); + _3 = &_4; + FakeRead(ForLet(None), _3); + _2 = const (); + StorageDead(_4); + StorageDead(_3); + StorageDead(_2); + StorageLive(_6); + _6 = const 1_i32; + FakeRead(ForLet(None), _6); + _0 = const (); + StorageDead(_6); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/switch_to_self.test.MatchBranchSimplification.diff b/tests/mir-opt/switch_to_self.test.MatchBranchSimplification.diff index b0a4f9f018848..c0b599e060b28 100644 --- a/tests/mir-opt/switch_to_self.test.MatchBranchSimplification.diff +++ b/tests/mir-opt/switch_to_self.test.MatchBranchSimplification.diff @@ -2,18 +2,18 @@ + // MIR for `test` after MatchBranchSimplification fn test(_1: bool) -> () { - let mut _0: (); // return place in scope 0 at $DIR/switch_to_self.rs:+0:22: +0:22 + let mut _0: (); bb0: { - goto -> bb1; // scope 0 at $DIR/switch_to_self.rs:+3:13: +3:22 + goto -> bb1; } bb1: { - switchInt(_1) -> [0: bb1, otherwise: bb2]; // scope 0 at $DIR/switch_to_self.rs:+6:13: +6:47 + switchInt(_1) -> [0: bb1, otherwise: bb2]; } bb2: { - switchInt(_1) -> [0: bb1, otherwise: bb2]; // scope 0 at $DIR/switch_to_self.rs:+9:13: +9:47 + switchInt(_1) -> [0: bb1, otherwise: bb2]; } } diff --git a/tests/mir-opt/tls_access.main.PreCodegen.after.mir b/tests/mir-opt/tls_access.main.PreCodegen.after.mir index 03618ae28149c..43c7051f0273a 100644 --- a/tests/mir-opt/tls_access.main.PreCodegen.after.mir +++ b/tests/mir-opt/tls_access.main.PreCodegen.after.mir @@ -1,28 +1,28 @@ // MIR for `main` after PreCodegen fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/tls_access.rs:+0:11: +0:11 - let _1: *mut u8; // in scope 0 at $DIR/tls_access.rs:+2:18: +2:21 - let mut _3: *mut u8; // in scope 0 at $DIR/tls_access.rs:+3:9: +3:12 + let mut _0: (); + let _1: *mut u8; + let mut _3: *mut u8; scope 1 { - let _2: &u8; // in scope 1 at $DIR/tls_access.rs:+2:13: +2:14 + let _2: &u8; scope 2 { - debug a => _2; // in scope 2 at $DIR/tls_access.rs:+2:13: +2:14 + debug a => _2; } } bb0: { - StorageLive(_2); // scope 1 at $DIR/tls_access.rs:+2:13: +2:14 - StorageLive(_1); // scope 1 at $DIR/tls_access.rs:+2:18: +2:21 - _1 = &/*tls*/ mut FOO; // scope 1 at $DIR/tls_access.rs:+2:18: +2:21 - _2 = &(*_1); // scope 1 at $DIR/tls_access.rs:+2:17: +2:21 - StorageLive(_3); // scope 2 at $DIR/tls_access.rs:+3:9: +3:12 - _3 = &/*tls*/ mut FOO; // scope 2 at $DIR/tls_access.rs:+3:9: +3:12 - (*_3) = const 42_u8; // scope 2 at $DIR/tls_access.rs:+3:9: +3:17 - StorageDead(_3); // scope 2 at $DIR/tls_access.rs:+3:17: +3:18 - _0 = const (); // scope 1 at $DIR/tls_access.rs:+1:5: +4:6 - StorageDead(_1); // scope 1 at $DIR/tls_access.rs:+4:5: +4:6 - StorageDead(_2); // scope 1 at $DIR/tls_access.rs:+4:5: +4:6 - return; // scope 0 at $DIR/tls_access.rs:+5:2: +5:2 + StorageLive(_2); + StorageLive(_1); + _1 = &/*tls*/ mut FOO; + _2 = &(*_1); + StorageLive(_3); + _3 = &/*tls*/ mut FOO; + (*_3) = const 42_u8; + StorageDead(_3); + _0 = const (); + StorageDead(_1); + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/uninhabited_enum.process_never.SimplifyLocals-final.after.mir b/tests/mir-opt/uninhabited_enum.process_never.SimplifyLocals-final.after.mir index b4fb330f3df24..89f7016fee436 100644 --- a/tests/mir-opt/uninhabited_enum.process_never.SimplifyLocals-final.after.mir +++ b/tests/mir-opt/uninhabited_enum.process_never.SimplifyLocals-final.after.mir @@ -1,16 +1,16 @@ // MIR for `process_never` after SimplifyLocals-final fn process_never(_1: *const !) -> () { - debug input => _1; // in scope 0 at $DIR/uninhabited_enum.rs:+0:22: +0:27 - let mut _0: (); // return place in scope 0 at $DIR/uninhabited_enum.rs:+0:39: +0:39 - let _2: &!; // in scope 0 at $DIR/uninhabited_enum.rs:+1:8: +1:14 + debug input => _1; + let mut _0: (); + let _2: &!; scope 1 { - debug _input => _2; // in scope 1 at $DIR/uninhabited_enum.rs:+1:8: +1:14 + debug _input => _2; } scope 2 { } bb0: { - unreachable; // scope 0 at $DIR/uninhabited_enum.rs:+0:39: +2:2 + unreachable; } } diff --git a/tests/mir-opt/uninhabited_enum.process_void.SimplifyLocals-final.after.mir b/tests/mir-opt/uninhabited_enum.process_void.SimplifyLocals-final.after.mir index 4b2a16b50b465..51905f982b8f9 100644 --- a/tests/mir-opt/uninhabited_enum.process_void.SimplifyLocals-final.after.mir +++ b/tests/mir-opt/uninhabited_enum.process_void.SimplifyLocals-final.after.mir @@ -1,15 +1,15 @@ // MIR for `process_void` after SimplifyLocals-final fn process_void(_1: *const Void) -> () { - debug input => _1; // in scope 0 at $DIR/uninhabited_enum.rs:+0:21: +0:26 - let mut _0: (); // return place in scope 0 at $DIR/uninhabited_enum.rs:+0:41: +0:41 + debug input => _1; + let mut _0: (); scope 1 { - debug _input => _1; // in scope 1 at $DIR/uninhabited_enum.rs:+1:8: +1:14 + debug _input => _1; } scope 2 { } bb0: { - return; // scope 0 at $DIR/uninhabited_enum.rs:+4:2: +4:2 + return; } } diff --git a/tests/mir-opt/uninhabited_enum_branching.main.SimplifyCfg-after-uninhabited-enum-branching.after.mir b/tests/mir-opt/uninhabited_enum_branching.main.SimplifyCfg-after-uninhabited-enum-branching.after.mir index a0b556640755b..474f43104bb43 100644 --- a/tests/mir-opt/uninhabited_enum_branching.main.SimplifyCfg-after-uninhabited-enum-branching.after.mir +++ b/tests/mir-opt/uninhabited_enum_branching.main.SimplifyCfg-after-uninhabited-enum-branching.after.mir @@ -1,69 +1,60 @@ // MIR for `main` after SimplifyCfg-after-uninhabited-enum-branching fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/uninhabited_enum_branching.rs:+0:11: +0:11 - let _1: &str; // in scope 0 at $DIR/uninhabited_enum_branching.rs:+1:5: +5:6 - let mut _2: Test1; // in scope 0 at $DIR/uninhabited_enum_branching.rs:+1:11: +1:19 - let mut _3: isize; // in scope 0 at $DIR/uninhabited_enum_branching.rs:+2:9: +2:20 - let _4: &str; // in scope 0 at $DIR/uninhabited_enum_branching.rs:+3:24: +3:34 - let _5: &str; // in scope 0 at $DIR/uninhabited_enum_branching.rs:+4:21: +4:24 - let _6: &str; // in scope 0 at $DIR/uninhabited_enum_branching.rs:+7:5: +10:6 - let mut _7: Test2; // in scope 0 at $DIR/uninhabited_enum_branching.rs:+7:11: +7:19 - let mut _8: isize; // in scope 0 at $DIR/uninhabited_enum_branching.rs:+8:9: +8:17 - let _9: &str; // in scope 0 at $DIR/uninhabited_enum_branching.rs:+9:21: +9:24 + let mut _0: (); + let _1: &str; + let mut _2: Test1; + let mut _3: isize; + let _4: &str; + let _5: &str; + let _6: &str; + let mut _7: Test2; + let mut _8: isize; + let _9: &str; bb0: { - StorageLive(_1); // scope 0 at $DIR/uninhabited_enum_branching.rs:+1:5: +5:6 - StorageLive(_2); // scope 0 at $DIR/uninhabited_enum_branching.rs:+1:11: +1:19 - _2 = Test1::C; // scope 0 at $DIR/uninhabited_enum_branching.rs:+1:11: +1:19 - _3 = discriminant(_2); // scope 0 at $DIR/uninhabited_enum_branching.rs:+1:11: +1:19 - switchInt(move _3) -> [2: bb1, otherwise: bb2]; // scope 0 at $DIR/uninhabited_enum_branching.rs:+1:5: +1:19 + StorageLive(_1); + StorageLive(_2); + _2 = Test1::C; + _3 = discriminant(_2); + switchInt(move _3) -> [2: bb1, otherwise: bb2]; } bb1: { - StorageLive(_5); // scope 0 at $DIR/uninhabited_enum_branching.rs:+4:21: +4:24 - _5 = const "C"; // scope 0 at $DIR/uninhabited_enum_branching.rs:+4:21: +4:24 - // mir::Constant - // + span: $DIR/uninhabited_enum_branching.rs:23:21: 23:24 - // + literal: Const { ty: &str, val: Value(Slice(..)) } - _1 = &(*_5); // scope 0 at $DIR/uninhabited_enum_branching.rs:+4:21: +4:24 - StorageDead(_5); // scope 0 at $DIR/uninhabited_enum_branching.rs:+4:23: +4:24 - StorageDead(_2); // scope 0 at $DIR/uninhabited_enum_branching.rs:+5:6: +5:7 - StorageDead(_1); // scope 0 at $DIR/uninhabited_enum_branching.rs:+5:6: +5:7 - StorageLive(_6); // scope 0 at $DIR/uninhabited_enum_branching.rs:+7:5: +10:6 - StorageLive(_7); // scope 0 at $DIR/uninhabited_enum_branching.rs:+7:11: +7:19 - _7 = Test2::D; // scope 0 at $DIR/uninhabited_enum_branching.rs:+7:11: +7:19 - _8 = discriminant(_7); // scope 0 at $DIR/uninhabited_enum_branching.rs:+7:11: +7:19 - switchInt(move _8) -> [4: bb4, 5: bb3, otherwise: bb2]; // scope 0 at $DIR/uninhabited_enum_branching.rs:+7:5: +7:19 + StorageLive(_5); + _5 = const "C"; + _1 = &(*_5); + StorageDead(_5); + StorageDead(_2); + StorageDead(_1); + StorageLive(_6); + StorageLive(_7); + _7 = Test2::D; + _8 = discriminant(_7); + switchInt(move _8) -> [4: bb4, 5: bb3, otherwise: bb2]; } bb2: { - unreachable; // scope 0 at $DIR/uninhabited_enum_branching.rs:+1:11: +1:19 + unreachable; } bb3: { - StorageLive(_9); // scope 0 at $DIR/uninhabited_enum_branching.rs:+9:21: +9:24 - _9 = const "E"; // scope 0 at $DIR/uninhabited_enum_branching.rs:+9:21: +9:24 - // mir::Constant - // + span: $DIR/uninhabited_enum_branching.rs:28:21: 28:24 - // + literal: Const { ty: &str, val: Value(Slice(..)) } - _6 = &(*_9); // scope 0 at $DIR/uninhabited_enum_branching.rs:+9:21: +9:24 - StorageDead(_9); // scope 0 at $DIR/uninhabited_enum_branching.rs:+9:23: +9:24 - goto -> bb5; // scope 0 at $DIR/uninhabited_enum_branching.rs:+9:23: +9:24 + StorageLive(_9); + _9 = const "E"; + _6 = &(*_9); + StorageDead(_9); + goto -> bb5; } bb4: { - _6 = const "D"; // scope 0 at $DIR/uninhabited_enum_branching.rs:+8:21: +8:24 - // mir::Constant - // + span: $DIR/uninhabited_enum_branching.rs:27:21: 27:24 - // + literal: Const { ty: &str, val: Value(Slice(..)) } - goto -> bb5; // scope 0 at $DIR/uninhabited_enum_branching.rs:+8:21: +8:24 + _6 = const "D"; + goto -> bb5; } bb5: { - StorageDead(_7); // scope 0 at $DIR/uninhabited_enum_branching.rs:+10:6: +10:7 - StorageDead(_6); // scope 0 at $DIR/uninhabited_enum_branching.rs:+10:6: +10:7 - _0 = const (); // scope 0 at $DIR/uninhabited_enum_branching.rs:+0:11: +11:2 - return; // scope 0 at $DIR/uninhabited_enum_branching.rs:+11:2: +11:2 + StorageDead(_7); + StorageDead(_6); + _0 = const (); + return; } } diff --git a/tests/mir-opt/uninhabited_enum_branching.main.UninhabitedEnumBranching.diff b/tests/mir-opt/uninhabited_enum_branching.main.UninhabitedEnumBranching.diff index 58d6e42812f90..9db95abec34c8 100644 --- a/tests/mir-opt/uninhabited_enum_branching.main.UninhabitedEnumBranching.diff +++ b/tests/mir-opt/uninhabited_enum_branching.main.UninhabitedEnumBranching.diff @@ -2,94 +2,79 @@ + // MIR for `main` after UninhabitedEnumBranching fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/uninhabited_enum_branching.rs:+0:11: +0:11 - let _1: &str; // in scope 0 at $DIR/uninhabited_enum_branching.rs:+1:5: +5:6 - let mut _2: Test1; // in scope 0 at $DIR/uninhabited_enum_branching.rs:+1:11: +1:19 - let mut _3: isize; // in scope 0 at $DIR/uninhabited_enum_branching.rs:+2:9: +2:20 - let _4: &str; // in scope 0 at $DIR/uninhabited_enum_branching.rs:+3:24: +3:34 - let _5: &str; // in scope 0 at $DIR/uninhabited_enum_branching.rs:+4:21: +4:24 - let _6: &str; // in scope 0 at $DIR/uninhabited_enum_branching.rs:+7:5: +10:6 - let mut _7: Test2; // in scope 0 at $DIR/uninhabited_enum_branching.rs:+7:11: +7:19 - let mut _8: isize; // in scope 0 at $DIR/uninhabited_enum_branching.rs:+8:9: +8:17 - let _9: &str; // in scope 0 at $DIR/uninhabited_enum_branching.rs:+9:21: +9:24 + let mut _0: (); + let _1: &str; + let mut _2: Test1; + let mut _3: isize; + let _4: &str; + let _5: &str; + let _6: &str; + let mut _7: Test2; + let mut _8: isize; + let _9: &str; bb0: { - StorageLive(_1); // scope 0 at $DIR/uninhabited_enum_branching.rs:+1:5: +5:6 - StorageLive(_2); // scope 0 at $DIR/uninhabited_enum_branching.rs:+1:11: +1:19 - _2 = Test1::C; // scope 0 at $DIR/uninhabited_enum_branching.rs:+1:11: +1:19 - _3 = discriminant(_2); // scope 0 at $DIR/uninhabited_enum_branching.rs:+1:11: +1:19 -- switchInt(move _3) -> [0: bb3, 1: bb4, 2: bb1, otherwise: bb2]; // scope 0 at $DIR/uninhabited_enum_branching.rs:+1:5: +1:19 -+ switchInt(move _3) -> [2: bb1, otherwise: bb2]; // scope 0 at $DIR/uninhabited_enum_branching.rs:+1:5: +1:19 + StorageLive(_1); + StorageLive(_2); + _2 = Test1::C; + _3 = discriminant(_2); +- switchInt(move _3) -> [0: bb3, 1: bb4, 2: bb1, otherwise: bb2]; ++ switchInt(move _3) -> [2: bb1, otherwise: bb2]; } bb1: { - StorageLive(_5); // scope 0 at $DIR/uninhabited_enum_branching.rs:+4:21: +4:24 - _5 = const "C"; // scope 0 at $DIR/uninhabited_enum_branching.rs:+4:21: +4:24 - // mir::Constant - // + span: $DIR/uninhabited_enum_branching.rs:23:21: 23:24 - // + literal: Const { ty: &str, val: Value(Slice(..)) } - _1 = &(*_5); // scope 0 at $DIR/uninhabited_enum_branching.rs:+4:21: +4:24 - StorageDead(_5); // scope 0 at $DIR/uninhabited_enum_branching.rs:+4:23: +4:24 - goto -> bb5; // scope 0 at $DIR/uninhabited_enum_branching.rs:+4:23: +4:24 + StorageLive(_5); + _5 = const "C"; + _1 = &(*_5); + StorageDead(_5); + goto -> bb5; } bb2: { - unreachable; // scope 0 at $DIR/uninhabited_enum_branching.rs:+1:11: +1:19 + unreachable; } bb3: { - _1 = const "A(Empty)"; // scope 0 at $DIR/uninhabited_enum_branching.rs:+2:24: +2:34 - // mir::Constant - // + span: $DIR/uninhabited_enum_branching.rs:21:24: 21:34 - // + literal: Const { ty: &str, val: Value(Slice(..)) } - goto -> bb5; // scope 0 at $DIR/uninhabited_enum_branching.rs:+2:24: +2:34 + _1 = const "A(Empty)"; + goto -> bb5; } bb4: { - StorageLive(_4); // scope 0 at $DIR/uninhabited_enum_branching.rs:+3:24: +3:34 - _4 = const "B(Empty)"; // scope 0 at $DIR/uninhabited_enum_branching.rs:+3:24: +3:34 - // mir::Constant - // + span: $DIR/uninhabited_enum_branching.rs:22:24: 22:34 - // + literal: Const { ty: &str, val: Value(Slice(..)) } - _1 = &(*_4); // scope 0 at $DIR/uninhabited_enum_branching.rs:+3:24: +3:34 - StorageDead(_4); // scope 0 at $DIR/uninhabited_enum_branching.rs:+3:33: +3:34 - goto -> bb5; // scope 0 at $DIR/uninhabited_enum_branching.rs:+3:33: +3:34 + StorageLive(_4); + _4 = const "B(Empty)"; + _1 = &(*_4); + StorageDead(_4); + goto -> bb5; } bb5: { - StorageDead(_2); // scope 0 at $DIR/uninhabited_enum_branching.rs:+5:6: +5:7 - StorageDead(_1); // scope 0 at $DIR/uninhabited_enum_branching.rs:+5:6: +5:7 - StorageLive(_6); // scope 0 at $DIR/uninhabited_enum_branching.rs:+7:5: +10:6 - StorageLive(_7); // scope 0 at $DIR/uninhabited_enum_branching.rs:+7:11: +7:19 - _7 = Test2::D; // scope 0 at $DIR/uninhabited_enum_branching.rs:+7:11: +7:19 - _8 = discriminant(_7); // scope 0 at $DIR/uninhabited_enum_branching.rs:+7:11: +7:19 - switchInt(move _8) -> [4: bb7, 5: bb6, otherwise: bb2]; // scope 0 at $DIR/uninhabited_enum_branching.rs:+7:5: +7:19 + StorageDead(_2); + StorageDead(_1); + StorageLive(_6); + StorageLive(_7); + _7 = Test2::D; + _8 = discriminant(_7); + switchInt(move _8) -> [4: bb7, 5: bb6, otherwise: bb2]; } bb6: { - StorageLive(_9); // scope 0 at $DIR/uninhabited_enum_branching.rs:+9:21: +9:24 - _9 = const "E"; // scope 0 at $DIR/uninhabited_enum_branching.rs:+9:21: +9:24 - // mir::Constant - // + span: $DIR/uninhabited_enum_branching.rs:28:21: 28:24 - // + literal: Const { ty: &str, val: Value(Slice(..)) } - _6 = &(*_9); // scope 0 at $DIR/uninhabited_enum_branching.rs:+9:21: +9:24 - StorageDead(_9); // scope 0 at $DIR/uninhabited_enum_branching.rs:+9:23: +9:24 - goto -> bb8; // scope 0 at $DIR/uninhabited_enum_branching.rs:+9:23: +9:24 + StorageLive(_9); + _9 = const "E"; + _6 = &(*_9); + StorageDead(_9); + goto -> bb8; } bb7: { - _6 = const "D"; // scope 0 at $DIR/uninhabited_enum_branching.rs:+8:21: +8:24 - // mir::Constant - // + span: $DIR/uninhabited_enum_branching.rs:27:21: 27:24 - // + literal: Const { ty: &str, val: Value(Slice(..)) } - goto -> bb8; // scope 0 at $DIR/uninhabited_enum_branching.rs:+8:21: +8:24 + _6 = const "D"; + goto -> bb8; } bb8: { - StorageDead(_7); // scope 0 at $DIR/uninhabited_enum_branching.rs:+10:6: +10:7 - StorageDead(_6); // scope 0 at $DIR/uninhabited_enum_branching.rs:+10:6: +10:7 - _0 = const (); // scope 0 at $DIR/uninhabited_enum_branching.rs:+0:11: +11:2 - return; // scope 0 at $DIR/uninhabited_enum_branching.rs:+11:2: +11:2 + StorageDead(_7); + StorageDead(_6); + _0 = const (); + return; } } diff --git a/tests/mir-opt/uninhabited_enum_branching2.main.SimplifyCfg-after-uninhabited-enum-branching.after.mir b/tests/mir-opt/uninhabited_enum_branching2.main.SimplifyCfg-after-uninhabited-enum-branching.after.mir index 0368b5f18c9a9..9c0c5d18917ae 100644 --- a/tests/mir-opt/uninhabited_enum_branching2.main.SimplifyCfg-after-uninhabited-enum-branching.after.mir +++ b/tests/mir-opt/uninhabited_enum_branching2.main.SimplifyCfg-after-uninhabited-enum-branching.after.mir @@ -1,97 +1,85 @@ // MIR for `main` after SimplifyCfg-after-uninhabited-enum-branching fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/uninhabited_enum_branching2.rs:+0:11: +0:11 - let _1: Plop; // in scope 0 at $DIR/uninhabited_enum_branching2.rs:+1:9: +1:13 - let mut _2: Test1; // in scope 0 at $DIR/uninhabited_enum_branching2.rs:+1:38: +1:46 - let _3: &str; // in scope 0 at $DIR/uninhabited_enum_branching2.rs:+3:5: +8:6 - let mut _4: &Test1; // in scope 0 at $DIR/uninhabited_enum_branching2.rs:+3:11: +3:22 - let mut _5: isize; // in scope 0 at $DIR/uninhabited_enum_branching2.rs:+4:9: +4:20 - let _6: &str; // in scope 0 at $DIR/uninhabited_enum_branching2.rs:+5:24: +5:34 - let _7: &str; // in scope 0 at $DIR/uninhabited_enum_branching2.rs:+6:21: +6:24 - let _8: &str; // in scope 0 at $DIR/uninhabited_enum_branching2.rs:+7:21: +7:24 - let _9: &str; // in scope 0 at $DIR/uninhabited_enum_branching2.rs:+10:5: +15:6 - let mut _10: isize; // in scope 0 at $DIR/uninhabited_enum_branching2.rs:+11:9: +11:20 - let _11: &str; // in scope 0 at $DIR/uninhabited_enum_branching2.rs:+12:24: +12:34 - let _12: &str; // in scope 0 at $DIR/uninhabited_enum_branching2.rs:+13:21: +13:24 - let _13: &str; // in scope 0 at $DIR/uninhabited_enum_branching2.rs:+14:21: +14:24 + let mut _0: (); + let _1: Plop; + let mut _2: Test1; + let _3: &str; + let mut _4: &Test1; + let mut _5: isize; + let _6: &str; + let _7: &str; + let _8: &str; + let _9: &str; + let mut _10: isize; + let _11: &str; + let _12: &str; + let _13: &str; scope 1 { - debug plop => _1; // in scope 1 at $DIR/uninhabited_enum_branching2.rs:+1:9: +1:13 + debug plop => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/uninhabited_enum_branching2.rs:+1:9: +1:13 - StorageLive(_2); // scope 0 at $DIR/uninhabited_enum_branching2.rs:+1:38: +1:46 - _2 = Test1::C; // scope 0 at $DIR/uninhabited_enum_branching2.rs:+1:38: +1:46 - _1 = Plop { xx: const 51_u32, test1: move _2 }; // scope 0 at $DIR/uninhabited_enum_branching2.rs:+1:16: +1:48 - StorageDead(_2); // scope 0 at $DIR/uninhabited_enum_branching2.rs:+1:47: +1:48 - StorageLive(_3); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+3:5: +8:6 - StorageLive(_4); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+3:11: +3:22 - _4 = &(_1.1: Test1); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+3:11: +3:22 - _5 = discriminant((*_4)); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+3:11: +3:22 - switchInt(move _5) -> [2: bb3, 3: bb1, otherwise: bb2]; // scope 1 at $DIR/uninhabited_enum_branching2.rs:+3:5: +3:22 + StorageLive(_1); + StorageLive(_2); + _2 = Test1::C; + _1 = Plop { xx: const 51_u32, test1: move _2 }; + StorageDead(_2); + StorageLive(_3); + StorageLive(_4); + _4 = &(_1.1: Test1); + _5 = discriminant((*_4)); + switchInt(move _5) -> [2: bb3, 3: bb1, otherwise: bb2]; } bb1: { - StorageLive(_8); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+7:21: +7:24 - _8 = const "D"; // scope 1 at $DIR/uninhabited_enum_branching2.rs:+7:21: +7:24 - // mir::Constant - // + span: $DIR/uninhabited_enum_branching2.rs:25:21: 25:24 - // + literal: Const { ty: &str, val: Value(Slice(..)) } - _3 = &(*_8); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+7:21: +7:24 - StorageDead(_8); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+7:23: +7:24 - goto -> bb4; // scope 1 at $DIR/uninhabited_enum_branching2.rs:+7:23: +7:24 + StorageLive(_8); + _8 = const "D"; + _3 = &(*_8); + StorageDead(_8); + goto -> bb4; } bb2: { - unreachable; // scope 1 at $DIR/uninhabited_enum_branching2.rs:+3:11: +3:22 + unreachable; } bb3: { - StorageLive(_7); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+6:21: +6:24 - _7 = const "C"; // scope 1 at $DIR/uninhabited_enum_branching2.rs:+6:21: +6:24 - // mir::Constant - // + span: $DIR/uninhabited_enum_branching2.rs:24:21: 24:24 - // + literal: Const { ty: &str, val: Value(Slice(..)) } - _3 = &(*_7); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+6:21: +6:24 - StorageDead(_7); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+6:23: +6:24 - goto -> bb4; // scope 1 at $DIR/uninhabited_enum_branching2.rs:+6:23: +6:24 + StorageLive(_7); + _7 = const "C"; + _3 = &(*_7); + StorageDead(_7); + goto -> bb4; } bb4: { - StorageDead(_4); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+8:6: +8:7 - StorageDead(_3); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+8:6: +8:7 - StorageLive(_9); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+10:5: +15:6 - _10 = discriminant((_1.1: Test1)); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+10:11: +10:21 - switchInt(move _10) -> [2: bb6, 3: bb5, otherwise: bb2]; // scope 1 at $DIR/uninhabited_enum_branching2.rs:+10:5: +10:21 + StorageDead(_4); + StorageDead(_3); + StorageLive(_9); + _10 = discriminant((_1.1: Test1)); + switchInt(move _10) -> [2: bb6, 3: bb5, otherwise: bb2]; } bb5: { - StorageLive(_13); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+14:21: +14:24 - _13 = const "D"; // scope 1 at $DIR/uninhabited_enum_branching2.rs:+14:21: +14:24 - // mir::Constant - // + span: $DIR/uninhabited_enum_branching2.rs:32:21: 32:24 - // + literal: Const { ty: &str, val: Value(Slice(..)) } - _9 = &(*_13); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+14:21: +14:24 - StorageDead(_13); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+14:23: +14:24 - goto -> bb7; // scope 1 at $DIR/uninhabited_enum_branching2.rs:+14:23: +14:24 + StorageLive(_13); + _13 = const "D"; + _9 = &(*_13); + StorageDead(_13); + goto -> bb7; } bb6: { - StorageLive(_12); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+13:21: +13:24 - _12 = const "C"; // scope 1 at $DIR/uninhabited_enum_branching2.rs:+13:21: +13:24 - // mir::Constant - // + span: $DIR/uninhabited_enum_branching2.rs:31:21: 31:24 - // + literal: Const { ty: &str, val: Value(Slice(..)) } - _9 = &(*_12); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+13:21: +13:24 - StorageDead(_12); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+13:23: +13:24 - goto -> bb7; // scope 1 at $DIR/uninhabited_enum_branching2.rs:+13:23: +13:24 + StorageLive(_12); + _12 = const "C"; + _9 = &(*_12); + StorageDead(_12); + goto -> bb7; } bb7: { - StorageDead(_9); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+15:6: +15:7 - _0 = const (); // scope 0 at $DIR/uninhabited_enum_branching2.rs:+0:11: +16:2 - StorageDead(_1); // scope 0 at $DIR/uninhabited_enum_branching2.rs:+16:1: +16:2 - return; // scope 0 at $DIR/uninhabited_enum_branching2.rs:+16:2: +16:2 + StorageDead(_9); + _0 = const (); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/uninhabited_enum_branching2.main.UninhabitedEnumBranching.diff b/tests/mir-opt/uninhabited_enum_branching2.main.UninhabitedEnumBranching.diff index 73353941fae70..12ce6505af948 100644 --- a/tests/mir-opt/uninhabited_enum_branching2.main.UninhabitedEnumBranching.diff +++ b/tests/mir-opt/uninhabited_enum_branching2.main.UninhabitedEnumBranching.diff @@ -2,138 +2,114 @@ + // MIR for `main` after UninhabitedEnumBranching fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/uninhabited_enum_branching2.rs:+0:11: +0:11 - let _1: Plop; // in scope 0 at $DIR/uninhabited_enum_branching2.rs:+1:9: +1:13 - let mut _2: Test1; // in scope 0 at $DIR/uninhabited_enum_branching2.rs:+1:38: +1:46 - let _3: &str; // in scope 0 at $DIR/uninhabited_enum_branching2.rs:+3:5: +8:6 - let mut _4: &Test1; // in scope 0 at $DIR/uninhabited_enum_branching2.rs:+3:11: +3:22 - let mut _5: isize; // in scope 0 at $DIR/uninhabited_enum_branching2.rs:+4:9: +4:20 - let _6: &str; // in scope 0 at $DIR/uninhabited_enum_branching2.rs:+5:24: +5:34 - let _7: &str; // in scope 0 at $DIR/uninhabited_enum_branching2.rs:+6:21: +6:24 - let _8: &str; // in scope 0 at $DIR/uninhabited_enum_branching2.rs:+7:21: +7:24 - let _9: &str; // in scope 0 at $DIR/uninhabited_enum_branching2.rs:+10:5: +15:6 - let mut _10: isize; // in scope 0 at $DIR/uninhabited_enum_branching2.rs:+11:9: +11:20 - let _11: &str; // in scope 0 at $DIR/uninhabited_enum_branching2.rs:+12:24: +12:34 - let _12: &str; // in scope 0 at $DIR/uninhabited_enum_branching2.rs:+13:21: +13:24 - let _13: &str; // in scope 0 at $DIR/uninhabited_enum_branching2.rs:+14:21: +14:24 + let mut _0: (); + let _1: Plop; + let mut _2: Test1; + let _3: &str; + let mut _4: &Test1; + let mut _5: isize; + let _6: &str; + let _7: &str; + let _8: &str; + let _9: &str; + let mut _10: isize; + let _11: &str; + let _12: &str; + let _13: &str; scope 1 { - debug plop => _1; // in scope 1 at $DIR/uninhabited_enum_branching2.rs:+1:9: +1:13 + debug plop => _1; } bb0: { - StorageLive(_1); // scope 0 at $DIR/uninhabited_enum_branching2.rs:+1:9: +1:13 - StorageLive(_2); // scope 0 at $DIR/uninhabited_enum_branching2.rs:+1:38: +1:46 - _2 = Test1::C; // scope 0 at $DIR/uninhabited_enum_branching2.rs:+1:38: +1:46 - _1 = Plop { xx: const 51_u32, test1: move _2 }; // scope 0 at $DIR/uninhabited_enum_branching2.rs:+1:16: +1:48 - StorageDead(_2); // scope 0 at $DIR/uninhabited_enum_branching2.rs:+1:47: +1:48 - StorageLive(_3); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+3:5: +8:6 - StorageLive(_4); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+3:11: +3:22 - _4 = &(_1.1: Test1); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+3:11: +3:22 - _5 = discriminant((*_4)); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+3:11: +3:22 -- switchInt(move _5) -> [0: bb3, 1: bb4, 2: bb5, 3: bb1, otherwise: bb2]; // scope 1 at $DIR/uninhabited_enum_branching2.rs:+3:5: +3:22 -+ switchInt(move _5) -> [2: bb5, 3: bb1, otherwise: bb2]; // scope 1 at $DIR/uninhabited_enum_branching2.rs:+3:5: +3:22 + StorageLive(_1); + StorageLive(_2); + _2 = Test1::C; + _1 = Plop { xx: const 51_u32, test1: move _2 }; + StorageDead(_2); + StorageLive(_3); + StorageLive(_4); + _4 = &(_1.1: Test1); + _5 = discriminant((*_4)); +- switchInt(move _5) -> [0: bb3, 1: bb4, 2: bb5, 3: bb1, otherwise: bb2]; ++ switchInt(move _5) -> [2: bb5, 3: bb1, otherwise: bb2]; } bb1: { - StorageLive(_8); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+7:21: +7:24 - _8 = const "D"; // scope 1 at $DIR/uninhabited_enum_branching2.rs:+7:21: +7:24 - // mir::Constant - // + span: $DIR/uninhabited_enum_branching2.rs:25:21: 25:24 - // + literal: Const { ty: &str, val: Value(Slice(..)) } - _3 = &(*_8); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+7:21: +7:24 - StorageDead(_8); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+7:23: +7:24 - goto -> bb6; // scope 1 at $DIR/uninhabited_enum_branching2.rs:+7:23: +7:24 + StorageLive(_8); + _8 = const "D"; + _3 = &(*_8); + StorageDead(_8); + goto -> bb6; } bb2: { - unreachable; // scope 1 at $DIR/uninhabited_enum_branching2.rs:+3:11: +3:22 + unreachable; } bb3: { - _3 = const "A(Empty)"; // scope 1 at $DIR/uninhabited_enum_branching2.rs:+4:24: +4:34 - // mir::Constant - // + span: $DIR/uninhabited_enum_branching2.rs:22:24: 22:34 - // + literal: Const { ty: &str, val: Value(Slice(..)) } - goto -> bb6; // scope 1 at $DIR/uninhabited_enum_branching2.rs:+4:24: +4:34 + _3 = const "A(Empty)"; + goto -> bb6; } bb4: { - StorageLive(_6); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+5:24: +5:34 - _6 = const "B(Empty)"; // scope 1 at $DIR/uninhabited_enum_branching2.rs:+5:24: +5:34 - // mir::Constant - // + span: $DIR/uninhabited_enum_branching2.rs:23:24: 23:34 - // + literal: Const { ty: &str, val: Value(Slice(..)) } - _3 = &(*_6); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+5:24: +5:34 - StorageDead(_6); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+5:33: +5:34 - goto -> bb6; // scope 1 at $DIR/uninhabited_enum_branching2.rs:+5:33: +5:34 + StorageLive(_6); + _6 = const "B(Empty)"; + _3 = &(*_6); + StorageDead(_6); + goto -> bb6; } bb5: { - StorageLive(_7); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+6:21: +6:24 - _7 = const "C"; // scope 1 at $DIR/uninhabited_enum_branching2.rs:+6:21: +6:24 - // mir::Constant - // + span: $DIR/uninhabited_enum_branching2.rs:24:21: 24:24 - // + literal: Const { ty: &str, val: Value(Slice(..)) } - _3 = &(*_7); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+6:21: +6:24 - StorageDead(_7); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+6:23: +6:24 - goto -> bb6; // scope 1 at $DIR/uninhabited_enum_branching2.rs:+6:23: +6:24 + StorageLive(_7); + _7 = const "C"; + _3 = &(*_7); + StorageDead(_7); + goto -> bb6; } bb6: { - StorageDead(_4); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+8:6: +8:7 - StorageDead(_3); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+8:6: +8:7 - StorageLive(_9); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+10:5: +15:6 - _10 = discriminant((_1.1: Test1)); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+10:11: +10:21 -- switchInt(move _10) -> [0: bb8, 1: bb9, 2: bb10, 3: bb7, otherwise: bb2]; // scope 1 at $DIR/uninhabited_enum_branching2.rs:+10:5: +10:21 -+ switchInt(move _10) -> [2: bb10, 3: bb7, otherwise: bb2]; // scope 1 at $DIR/uninhabited_enum_branching2.rs:+10:5: +10:21 + StorageDead(_4); + StorageDead(_3); + StorageLive(_9); + _10 = discriminant((_1.1: Test1)); +- switchInt(move _10) -> [0: bb8, 1: bb9, 2: bb10, 3: bb7, otherwise: bb2]; ++ switchInt(move _10) -> [2: bb10, 3: bb7, otherwise: bb2]; } bb7: { - StorageLive(_13); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+14:21: +14:24 - _13 = const "D"; // scope 1 at $DIR/uninhabited_enum_branching2.rs:+14:21: +14:24 - // mir::Constant - // + span: $DIR/uninhabited_enum_branching2.rs:32:21: 32:24 - // + literal: Const { ty: &str, val: Value(Slice(..)) } - _9 = &(*_13); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+14:21: +14:24 - StorageDead(_13); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+14:23: +14:24 - goto -> bb11; // scope 1 at $DIR/uninhabited_enum_branching2.rs:+14:23: +14:24 + StorageLive(_13); + _13 = const "D"; + _9 = &(*_13); + StorageDead(_13); + goto -> bb11; } bb8: { - _9 = const "A(Empty)"; // scope 1 at $DIR/uninhabited_enum_branching2.rs:+11:24: +11:34 - // mir::Constant - // + span: $DIR/uninhabited_enum_branching2.rs:29:24: 29:34 - // + literal: Const { ty: &str, val: Value(Slice(..)) } - goto -> bb11; // scope 1 at $DIR/uninhabited_enum_branching2.rs:+11:24: +11:34 + _9 = const "A(Empty)"; + goto -> bb11; } bb9: { - StorageLive(_11); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+12:24: +12:34 - _11 = const "B(Empty)"; // scope 1 at $DIR/uninhabited_enum_branching2.rs:+12:24: +12:34 - // mir::Constant - // + span: $DIR/uninhabited_enum_branching2.rs:30:24: 30:34 - // + literal: Const { ty: &str, val: Value(Slice(..)) } - _9 = &(*_11); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+12:24: +12:34 - StorageDead(_11); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+12:33: +12:34 - goto -> bb11; // scope 1 at $DIR/uninhabited_enum_branching2.rs:+12:33: +12:34 + StorageLive(_11); + _11 = const "B(Empty)"; + _9 = &(*_11); + StorageDead(_11); + goto -> bb11; } bb10: { - StorageLive(_12); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+13:21: +13:24 - _12 = const "C"; // scope 1 at $DIR/uninhabited_enum_branching2.rs:+13:21: +13:24 - // mir::Constant - // + span: $DIR/uninhabited_enum_branching2.rs:31:21: 31:24 - // + literal: Const { ty: &str, val: Value(Slice(..)) } - _9 = &(*_12); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+13:21: +13:24 - StorageDead(_12); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+13:23: +13:24 - goto -> bb11; // scope 1 at $DIR/uninhabited_enum_branching2.rs:+13:23: +13:24 + StorageLive(_12); + _12 = const "C"; + _9 = &(*_12); + StorageDead(_12); + goto -> bb11; } bb11: { - StorageDead(_9); // scope 1 at $DIR/uninhabited_enum_branching2.rs:+15:6: +15:7 - _0 = const (); // scope 0 at $DIR/uninhabited_enum_branching2.rs:+0:11: +16:2 - StorageDead(_1); // scope 0 at $DIR/uninhabited_enum_branching2.rs:+16:1: +16:2 - return; // scope 0 at $DIR/uninhabited_enum_branching2.rs:+16:2: +16:2 + StorageDead(_9); + _0 = const (); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/uninhabited_fallthrough_elimination.eliminate_fallthrough.UninhabitedEnumBranching.diff b/tests/mir-opt/uninhabited_fallthrough_elimination.eliminate_fallthrough.UninhabitedEnumBranching.diff index 58e085dd04197..daff4f9c85b03 100644 --- a/tests/mir-opt/uninhabited_fallthrough_elimination.eliminate_fallthrough.UninhabitedEnumBranching.diff +++ b/tests/mir-opt/uninhabited_fallthrough_elimination.eliminate_fallthrough.UninhabitedEnumBranching.diff @@ -2,37 +2,37 @@ + // MIR for `eliminate_fallthrough` after UninhabitedEnumBranching fn eliminate_fallthrough(_1: S) -> u32 { - debug s => _1; // in scope 0 at $DIR/uninhabited_fallthrough_elimination.rs:+0:26: +0:27 - let mut _0: u32; // return place in scope 0 at $DIR/uninhabited_fallthrough_elimination.rs:+0:35: +0:38 - let mut _2: isize; // in scope 0 at $DIR/uninhabited_fallthrough_elimination.rs:+2:9: +2:10 + debug s => _1; + let mut _0: u32; + let mut _2: isize; bb0: { - _2 = discriminant(_1); // scope 0 at $DIR/uninhabited_fallthrough_elimination.rs:+1:11: +1:12 -- switchInt(move _2) -> [1: bb3, 2: bb2, otherwise: bb1]; // scope 0 at $DIR/uninhabited_fallthrough_elimination.rs:+1:5: +1:12 -+ switchInt(move _2) -> [1: bb3, 2: bb2, otherwise: bb5]; // scope 0 at $DIR/uninhabited_fallthrough_elimination.rs:+1:5: +1:12 + _2 = discriminant(_1); +- switchInt(move _2) -> [1: bb3, 2: bb2, otherwise: bb1]; ++ switchInt(move _2) -> [1: bb3, 2: bb2, otherwise: bb5]; } bb1: { - _0 = const 3_u32; // scope 0 at $DIR/uninhabited_fallthrough_elimination.rs:+4:14: +4:15 - goto -> bb4; // scope 0 at $DIR/uninhabited_fallthrough_elimination.rs:+4:14: +4:15 + _0 = const 3_u32; + goto -> bb4; } bb2: { - _0 = const 1_u32; // scope 0 at $DIR/uninhabited_fallthrough_elimination.rs:+2:14: +2:15 - goto -> bb4; // scope 0 at $DIR/uninhabited_fallthrough_elimination.rs:+2:14: +2:15 + _0 = const 1_u32; + goto -> bb4; } bb3: { - _0 = const 2_u32; // scope 0 at $DIR/uninhabited_fallthrough_elimination.rs:+3:14: +3:15 - goto -> bb4; // scope 0 at $DIR/uninhabited_fallthrough_elimination.rs:+3:14: +3:15 + _0 = const 2_u32; + goto -> bb4; } bb4: { - return; // scope 0 at $DIR/uninhabited_fallthrough_elimination.rs:+6:2: +6:2 + return; + } + + bb5: { -+ unreachable; // scope 0 at $DIR/uninhabited_fallthrough_elimination.rs:+4:14: +4:15 ++ unreachable; } } diff --git a/tests/mir-opt/uninhabited_fallthrough_elimination.keep_fallthrough.UninhabitedEnumBranching.diff b/tests/mir-opt/uninhabited_fallthrough_elimination.keep_fallthrough.UninhabitedEnumBranching.diff index e765851eb78b7..498e1e20f8a79 100644 --- a/tests/mir-opt/uninhabited_fallthrough_elimination.keep_fallthrough.UninhabitedEnumBranching.diff +++ b/tests/mir-opt/uninhabited_fallthrough_elimination.keep_fallthrough.UninhabitedEnumBranching.diff @@ -2,33 +2,33 @@ + // MIR for `keep_fallthrough` after UninhabitedEnumBranching fn keep_fallthrough(_1: S) -> u32 { - debug s => _1; // in scope 0 at $DIR/uninhabited_fallthrough_elimination.rs:+0:21: +0:22 - let mut _0: u32; // return place in scope 0 at $DIR/uninhabited_fallthrough_elimination.rs:+0:30: +0:33 - let mut _2: isize; // in scope 0 at $DIR/uninhabited_fallthrough_elimination.rs:+2:9: +2:13 + debug s => _1; + let mut _0: u32; + let mut _2: isize; bb0: { - _2 = discriminant(_1); // scope 0 at $DIR/uninhabited_fallthrough_elimination.rs:+1:11: +1:12 -- switchInt(move _2) -> [0: bb2, 1: bb3, otherwise: bb1]; // scope 0 at $DIR/uninhabited_fallthrough_elimination.rs:+1:5: +1:12 -+ switchInt(move _2) -> [1: bb3, otherwise: bb1]; // scope 0 at $DIR/uninhabited_fallthrough_elimination.rs:+1:5: +1:12 + _2 = discriminant(_1); +- switchInt(move _2) -> [0: bb2, 1: bb3, otherwise: bb1]; ++ switchInt(move _2) -> [1: bb3, otherwise: bb1]; } bb1: { - _0 = const 3_u32; // scope 0 at $DIR/uninhabited_fallthrough_elimination.rs:+4:14: +4:15 - goto -> bb4; // scope 0 at $DIR/uninhabited_fallthrough_elimination.rs:+4:14: +4:15 + _0 = const 3_u32; + goto -> bb4; } bb2: { - _0 = const 1_u32; // scope 0 at $DIR/uninhabited_fallthrough_elimination.rs:+2:17: +2:18 - goto -> bb4; // scope 0 at $DIR/uninhabited_fallthrough_elimination.rs:+2:17: +2:18 + _0 = const 1_u32; + goto -> bb4; } bb3: { - _0 = const 2_u32; // scope 0 at $DIR/uninhabited_fallthrough_elimination.rs:+3:14: +3:15 - goto -> bb4; // scope 0 at $DIR/uninhabited_fallthrough_elimination.rs:+3:14: +3:15 + _0 = const 2_u32; + goto -> bb4; } bb4: { - return; // scope 0 at $DIR/uninhabited_fallthrough_elimination.rs:+6:2: +6:2 + return; } } diff --git a/tests/mir-opt/unreachable.main.UnreachablePropagation.panic-abort.diff b/tests/mir-opt/unreachable.main.UnreachablePropagation.panic-abort.diff index a53facea506d5..eb5a0c39b0b2f 100644 --- a/tests/mir-opt/unreachable.main.UnreachablePropagation.panic-abort.diff +++ b/tests/mir-opt/unreachable.main.UnreachablePropagation.panic-abort.diff @@ -2,69 +2,66 @@ + // MIR for `main` after UnreachablePropagation fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/unreachable.rs:+0:11: +0:11 - let mut _1: std::option::Option; // in scope 0 at $DIR/unreachable.rs:+1:23: +1:30 - let mut _2: isize; // in scope 0 at $DIR/unreachable.rs:+1:12: +1:20 - let _5: (); // in scope 0 at $DIR/unreachable.rs:+4:9: +8:10 - let mut _6: bool; // in scope 0 at $DIR/unreachable.rs:+4:12: +4:16 - let mut _7: !; // in scope 0 at $DIR/unreachable.rs:+10:9: +10:21 + let mut _0: (); + let mut _1: std::option::Option; + let mut _2: isize; + let _5: (); + let mut _6: bool; + let mut _7: !; scope 1 { - debug _x => _3; // in scope 1 at $DIR/unreachable.rs:+1:17: +1:19 - let _3: Empty; // in scope 1 at $DIR/unreachable.rs:+1:17: +1:19 - let mut _4: i32; // in scope 1 at $DIR/unreachable.rs:+2:13: +2:19 + debug _x => _3; + let _3: Empty; + let mut _4: i32; scope 2 { - debug _y => _4; // in scope 2 at $DIR/unreachable.rs:+2:13: +2:19 + debug _y => _4; } } bb0: { - StorageLive(_1); // scope 1 at $DIR/unreachable.rs:+1:23: +1:30 - _1 = empty() -> [return: bb1, unwind unreachable]; // scope 1 at $DIR/unreachable.rs:+1:23: +1:30 - // mir::Constant - // + span: $DIR/unreachable.rs:10:23: 10:28 - // + literal: Const { ty: fn() -> Option {empty}, val: Value() } + StorageLive(_1); + _1 = empty() -> [return: bb1, unwind unreachable]; } bb1: { - _2 = discriminant(_1); // scope 1 at $DIR/unreachable.rs:+1:12: +1:20 -- switchInt(move _2) -> [1: bb2, otherwise: bb6]; // scope 1 at $DIR/unreachable.rs:+1:12: +1:20 -+ switchInt(move _2) -> [1: bb2, otherwise: bb3]; // scope 1 at $DIR/unreachable.rs:+1:12: +1:20 + _2 = discriminant(_1); +- switchInt(move _2) -> [1: bb2, otherwise: bb6]; ++ switchInt(move _2) -> [1: bb2, otherwise: bb3]; } bb2: { -- StorageLive(_3); // scope 1 at $DIR/unreachable.rs:+1:17: +1:19 -- _3 = move ((_1 as Some).0: Empty); // scope 1 at $DIR/unreachable.rs:+1:17: +1:19 -- StorageLive(_4); // scope 1 at $DIR/unreachable.rs:+2:13: +2:19 -- StorageLive(_5); // scope 2 at $DIR/unreachable.rs:+4:9: +8:10 -- StorageLive(_6); // scope 2 at $DIR/unreachable.rs:+4:12: +4:16 -- _6 = const true; // scope 2 at $DIR/unreachable.rs:+4:12: +4:16 -- switchInt(move _6) -> [0: bb4, otherwise: bb3]; // scope 2 at $DIR/unreachable.rs:+4:12: +4:16 -+ unreachable; // scope 2 at $DIR/unreachable.rs:+4:12: +4:16 - } - - bb3: { -- _4 = const 21_i32; // scope 2 at $DIR/unreachable.rs:+5:13: +5:20 -- _5 = const (); // scope 2 at $DIR/unreachable.rs:+4:17: +6:10 -- goto -> bb5; // scope 2 at $DIR/unreachable.rs:+4:9: +8:10 +- StorageLive(_3); +- _3 = move ((_1 as Some).0: Empty); +- StorageLive(_4); +- StorageLive(_5); +- StorageLive(_6); +- _6 = const true; +- switchInt(move _6) -> [0: bb4, otherwise: bb3]; - } - -- bb4: { -- _4 = const 42_i32; // scope 2 at $DIR/unreachable.rs:+7:13: +7:20 -- _5 = const (); // scope 2 at $DIR/unreachable.rs:+6:16: +8:10 -- goto -> bb5; // scope 2 at $DIR/unreachable.rs:+4:9: +8:10 +- bb3: { +- _4 = const 21_i32; +- _5 = const (); +- goto -> bb5; - } - -- bb5: { -- StorageDead(_6); // scope 2 at $DIR/unreachable.rs:+8:9: +8:10 -- StorageDead(_5); // scope 2 at $DIR/unreachable.rs:+8:9: +8:10 -- StorageLive(_7); // scope 2 at $DIR/unreachable.rs:+10:9: +10:21 -- unreachable; // scope 2 at $DIR/unreachable.rs:+10:15: +10:17 +- bb4: { +- _4 = const 42_i32; +- _5 = const (); +- goto -> bb5; - } - +- bb5: { +- StorageDead(_6); +- StorageDead(_5); +- StorageLive(_7); + unreachable; + } + - bb6: { - _0 = const (); // scope 0 at $DIR/unreachable.rs:+11:6: +11:6 - StorageDead(_1); // scope 0 at $DIR/unreachable.rs:+12:1: +12:2 - return; // scope 0 at $DIR/unreachable.rs:+12:2: +12:2 ++ bb3: { + _0 = const (); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/unreachable.main.UnreachablePropagation.panic-unwind.diff b/tests/mir-opt/unreachable.main.UnreachablePropagation.panic-unwind.diff index 323b61346c004..19ea846bf2ce2 100644 --- a/tests/mir-opt/unreachable.main.UnreachablePropagation.panic-unwind.diff +++ b/tests/mir-opt/unreachable.main.UnreachablePropagation.panic-unwind.diff @@ -2,69 +2,66 @@ + // MIR for `main` after UnreachablePropagation fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/unreachable.rs:+0:11: +0:11 - let mut _1: std::option::Option; // in scope 0 at $DIR/unreachable.rs:+1:23: +1:30 - let mut _2: isize; // in scope 0 at $DIR/unreachable.rs:+1:12: +1:20 - let _5: (); // in scope 0 at $DIR/unreachable.rs:+4:9: +8:10 - let mut _6: bool; // in scope 0 at $DIR/unreachable.rs:+4:12: +4:16 - let mut _7: !; // in scope 0 at $DIR/unreachable.rs:+10:9: +10:21 + let mut _0: (); + let mut _1: std::option::Option; + let mut _2: isize; + let _5: (); + let mut _6: bool; + let mut _7: !; scope 1 { - debug _x => _3; // in scope 1 at $DIR/unreachable.rs:+1:17: +1:19 - let _3: Empty; // in scope 1 at $DIR/unreachable.rs:+1:17: +1:19 - let mut _4: i32; // in scope 1 at $DIR/unreachable.rs:+2:13: +2:19 + debug _x => _3; + let _3: Empty; + let mut _4: i32; scope 2 { - debug _y => _4; // in scope 2 at $DIR/unreachable.rs:+2:13: +2:19 + debug _y => _4; } } bb0: { - StorageLive(_1); // scope 1 at $DIR/unreachable.rs:+1:23: +1:30 - _1 = empty() -> bb1; // scope 1 at $DIR/unreachable.rs:+1:23: +1:30 - // mir::Constant - // + span: $DIR/unreachable.rs:10:23: 10:28 - // + literal: Const { ty: fn() -> Option {empty}, val: Value() } + StorageLive(_1); + _1 = empty() -> bb1; } bb1: { - _2 = discriminant(_1); // scope 1 at $DIR/unreachable.rs:+1:12: +1:20 -- switchInt(move _2) -> [1: bb2, otherwise: bb6]; // scope 1 at $DIR/unreachable.rs:+1:12: +1:20 -+ switchInt(move _2) -> [1: bb2, otherwise: bb3]; // scope 1 at $DIR/unreachable.rs:+1:12: +1:20 + _2 = discriminant(_1); +- switchInt(move _2) -> [1: bb2, otherwise: bb6]; ++ switchInt(move _2) -> [1: bb2, otherwise: bb3]; } bb2: { -- StorageLive(_3); // scope 1 at $DIR/unreachable.rs:+1:17: +1:19 -- _3 = move ((_1 as Some).0: Empty); // scope 1 at $DIR/unreachable.rs:+1:17: +1:19 -- StorageLive(_4); // scope 1 at $DIR/unreachable.rs:+2:13: +2:19 -- StorageLive(_5); // scope 2 at $DIR/unreachable.rs:+4:9: +8:10 -- StorageLive(_6); // scope 2 at $DIR/unreachable.rs:+4:12: +4:16 -- _6 = const true; // scope 2 at $DIR/unreachable.rs:+4:12: +4:16 -- switchInt(move _6) -> [0: bb4, otherwise: bb3]; // scope 2 at $DIR/unreachable.rs:+4:12: +4:16 -+ unreachable; // scope 2 at $DIR/unreachable.rs:+4:12: +4:16 - } - - bb3: { -- _4 = const 21_i32; // scope 2 at $DIR/unreachable.rs:+5:13: +5:20 -- _5 = const (); // scope 2 at $DIR/unreachable.rs:+4:17: +6:10 -- goto -> bb5; // scope 2 at $DIR/unreachable.rs:+4:9: +8:10 +- StorageLive(_3); +- _3 = move ((_1 as Some).0: Empty); +- StorageLive(_4); +- StorageLive(_5); +- StorageLive(_6); +- _6 = const true; +- switchInt(move _6) -> [0: bb4, otherwise: bb3]; - } - -- bb4: { -- _4 = const 42_i32; // scope 2 at $DIR/unreachable.rs:+7:13: +7:20 -- _5 = const (); // scope 2 at $DIR/unreachable.rs:+6:16: +8:10 -- goto -> bb5; // scope 2 at $DIR/unreachable.rs:+4:9: +8:10 +- bb3: { +- _4 = const 21_i32; +- _5 = const (); +- goto -> bb5; - } - -- bb5: { -- StorageDead(_6); // scope 2 at $DIR/unreachable.rs:+8:9: +8:10 -- StorageDead(_5); // scope 2 at $DIR/unreachable.rs:+8:9: +8:10 -- StorageLive(_7); // scope 2 at $DIR/unreachable.rs:+10:9: +10:21 -- unreachable; // scope 2 at $DIR/unreachable.rs:+10:15: +10:17 +- bb4: { +- _4 = const 42_i32; +- _5 = const (); +- goto -> bb5; - } - +- bb5: { +- StorageDead(_6); +- StorageDead(_5); +- StorageLive(_7); + unreachable; + } + - bb6: { - _0 = const (); // scope 0 at $DIR/unreachable.rs:+11:6: +11:6 - StorageDead(_1); // scope 0 at $DIR/unreachable.rs:+12:1: +12:2 - return; // scope 0 at $DIR/unreachable.rs:+12:2: +12:2 ++ bb3: { + _0 = const (); + StorageDead(_1); + return; } } diff --git a/tests/mir-opt/unreachable_diverging.main.UnreachablePropagation.panic-abort.diff b/tests/mir-opt/unreachable_diverging.main.UnreachablePropagation.panic-abort.diff index b0ca8ab933fcc..713757ce6e080 100644 --- a/tests/mir-opt/unreachable_diverging.main.UnreachablePropagation.panic-abort.diff +++ b/tests/mir-opt/unreachable_diverging.main.UnreachablePropagation.panic-abort.diff @@ -2,70 +2,64 @@ + // MIR for `main` after UnreachablePropagation fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/unreachable_diverging.rs:+0:11: +0:11 - let _1: bool; // in scope 0 at $DIR/unreachable_diverging.rs:+1:9: +1:10 - let mut _2: std::option::Option; // in scope 0 at $DIR/unreachable_diverging.rs:+2:25: +2:32 - let mut _3: isize; // in scope 0 at $DIR/unreachable_diverging.rs:+2:12: +2:22 - let _5: (); // in scope 0 at $DIR/unreachable_diverging.rs:+3:9: +5:10 - let mut _6: bool; // in scope 0 at $DIR/unreachable_diverging.rs:+3:12: +3:13 - let mut _7: !; // in scope 0 at $DIR/unreachable_diverging.rs:+6:9: +6:22 + let mut _0: (); + let _1: bool; + let mut _2: std::option::Option; + let mut _3: isize; + let _5: (); + let mut _6: bool; + let mut _7: !; scope 1 { - debug x => _1; // in scope 1 at $DIR/unreachable_diverging.rs:+1:9: +1:10 + debug x => _1; scope 2 { - debug bomb => _4; // in scope 2 at $DIR/unreachable_diverging.rs:+2:17: +2:21 - let _4: Empty; // in scope 2 at $DIR/unreachable_diverging.rs:+2:17: +2:21 + debug bomb => _4; + let _4: Empty; } } bb0: { - StorageLive(_1); // scope 0 at $DIR/unreachable_diverging.rs:+1:9: +1:10 - _1 = const true; // scope 0 at $DIR/unreachable_diverging.rs:+1:13: +1:17 - StorageLive(_2); // scope 2 at $DIR/unreachable_diverging.rs:+2:25: +2:32 - _2 = empty() -> [return: bb1, unwind unreachable]; // scope 2 at $DIR/unreachable_diverging.rs:+2:25: +2:32 - // mir::Constant - // + span: $DIR/unreachable_diverging.rs:15:25: 15:30 - // + literal: Const { ty: fn() -> Option {empty}, val: Value() } + StorageLive(_1); + _1 = const true; + StorageLive(_2); + _2 = empty() -> [return: bb1, unwind unreachable]; } bb1: { - _3 = discriminant(_2); // scope 2 at $DIR/unreachable_diverging.rs:+2:12: +2:22 - switchInt(move _3) -> [1: bb2, otherwise: bb6]; // scope 2 at $DIR/unreachable_diverging.rs:+2:12: +2:22 + _3 = discriminant(_2); + switchInt(move _3) -> [1: bb2, otherwise: bb6]; } bb2: { - StorageLive(_4); // scope 2 at $DIR/unreachable_diverging.rs:+2:17: +2:21 - _4 = move ((_2 as Some).0: Empty); // scope 2 at $DIR/unreachable_diverging.rs:+2:17: +2:21 - StorageLive(_5); // scope 2 at $DIR/unreachable_diverging.rs:+3:9: +5:10 - StorageLive(_6); // scope 2 at $DIR/unreachable_diverging.rs:+3:12: +3:13 - _6 = _1; // scope 2 at $DIR/unreachable_diverging.rs:+3:12: +3:13 - switchInt(move _6) -> [0: bb4, otherwise: bb3]; // scope 2 at $DIR/unreachable_diverging.rs:+3:12: +3:13 + StorageLive(_4); + _4 = move ((_2 as Some).0: Empty); + StorageLive(_5); + StorageLive(_6); + _6 = _1; + switchInt(move _6) -> [0: bb4, otherwise: bb3]; } bb3: { - _5 = loop_forever() -> [return: bb5, unwind unreachable]; // scope 2 at $DIR/unreachable_diverging.rs:+4:13: +4:27 - // mir::Constant - // + span: $DIR/unreachable_diverging.rs:17:13: 17:25 - // + literal: Const { ty: fn() {loop_forever}, val: Value() } + _5 = loop_forever() -> [return: bb5, unwind unreachable]; } bb4: { -- _5 = const (); // scope 2 at $DIR/unreachable_diverging.rs:+5:10: +5:10 -- goto -> bb5; // scope 2 at $DIR/unreachable_diverging.rs:+3:9: +5:10 -+ unreachable; // scope 2 at $DIR/unreachable_diverging.rs:+3:9: +5:10 +- _5 = const (); +- goto -> bb5; ++ unreachable; } bb5: { -- StorageDead(_6); // scope 2 at $DIR/unreachable_diverging.rs:+5:9: +5:10 -- StorageDead(_5); // scope 2 at $DIR/unreachable_diverging.rs:+5:9: +5:10 -- StorageLive(_7); // scope 2 at $DIR/unreachable_diverging.rs:+6:9: +6:22 - unreachable; // scope 2 at $DIR/unreachable_diverging.rs:+6:15: +6:19 +- StorageDead(_6); +- StorageDead(_5); +- StorageLive(_7); + unreachable; } bb6: { - _0 = const (); // scope 1 at $DIR/unreachable_diverging.rs:+7:6: +7:6 - StorageDead(_1); // scope 0 at $DIR/unreachable_diverging.rs:+8:1: +8:2 - StorageDead(_2); // scope 0 at $DIR/unreachable_diverging.rs:+8:1: +8:2 - return; // scope 0 at $DIR/unreachable_diverging.rs:+8:2: +8:2 + _0 = const (); + StorageDead(_1); + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/unreachable_diverging.main.UnreachablePropagation.panic-unwind.diff b/tests/mir-opt/unreachable_diverging.main.UnreachablePropagation.panic-unwind.diff index 94bc633613b7f..9d54a2f234b1d 100644 --- a/tests/mir-opt/unreachable_diverging.main.UnreachablePropagation.panic-unwind.diff +++ b/tests/mir-opt/unreachable_diverging.main.UnreachablePropagation.panic-unwind.diff @@ -2,70 +2,64 @@ + // MIR for `main` after UnreachablePropagation fn main() -> () { - let mut _0: (); // return place in scope 0 at $DIR/unreachable_diverging.rs:+0:11: +0:11 - let _1: bool; // in scope 0 at $DIR/unreachable_diverging.rs:+1:9: +1:10 - let mut _2: std::option::Option; // in scope 0 at $DIR/unreachable_diverging.rs:+2:25: +2:32 - let mut _3: isize; // in scope 0 at $DIR/unreachable_diverging.rs:+2:12: +2:22 - let _5: (); // in scope 0 at $DIR/unreachable_diverging.rs:+3:9: +5:10 - let mut _6: bool; // in scope 0 at $DIR/unreachable_diverging.rs:+3:12: +3:13 - let mut _7: !; // in scope 0 at $DIR/unreachable_diverging.rs:+6:9: +6:22 + let mut _0: (); + let _1: bool; + let mut _2: std::option::Option; + let mut _3: isize; + let _5: (); + let mut _6: bool; + let mut _7: !; scope 1 { - debug x => _1; // in scope 1 at $DIR/unreachable_diverging.rs:+1:9: +1:10 + debug x => _1; scope 2 { - debug bomb => _4; // in scope 2 at $DIR/unreachable_diverging.rs:+2:17: +2:21 - let _4: Empty; // in scope 2 at $DIR/unreachable_diverging.rs:+2:17: +2:21 + debug bomb => _4; + let _4: Empty; } } bb0: { - StorageLive(_1); // scope 0 at $DIR/unreachable_diverging.rs:+1:9: +1:10 - _1 = const true; // scope 0 at $DIR/unreachable_diverging.rs:+1:13: +1:17 - StorageLive(_2); // scope 2 at $DIR/unreachable_diverging.rs:+2:25: +2:32 - _2 = empty() -> bb1; // scope 2 at $DIR/unreachable_diverging.rs:+2:25: +2:32 - // mir::Constant - // + span: $DIR/unreachable_diverging.rs:15:25: 15:30 - // + literal: Const { ty: fn() -> Option {empty}, val: Value() } + StorageLive(_1); + _1 = const true; + StorageLive(_2); + _2 = empty() -> bb1; } bb1: { - _3 = discriminant(_2); // scope 2 at $DIR/unreachable_diverging.rs:+2:12: +2:22 - switchInt(move _3) -> [1: bb2, otherwise: bb6]; // scope 2 at $DIR/unreachable_diverging.rs:+2:12: +2:22 + _3 = discriminant(_2); + switchInt(move _3) -> [1: bb2, otherwise: bb6]; } bb2: { - StorageLive(_4); // scope 2 at $DIR/unreachable_diverging.rs:+2:17: +2:21 - _4 = move ((_2 as Some).0: Empty); // scope 2 at $DIR/unreachable_diverging.rs:+2:17: +2:21 - StorageLive(_5); // scope 2 at $DIR/unreachable_diverging.rs:+3:9: +5:10 - StorageLive(_6); // scope 2 at $DIR/unreachable_diverging.rs:+3:12: +3:13 - _6 = _1; // scope 2 at $DIR/unreachable_diverging.rs:+3:12: +3:13 - switchInt(move _6) -> [0: bb4, otherwise: bb3]; // scope 2 at $DIR/unreachable_diverging.rs:+3:12: +3:13 + StorageLive(_4); + _4 = move ((_2 as Some).0: Empty); + StorageLive(_5); + StorageLive(_6); + _6 = _1; + switchInt(move _6) -> [0: bb4, otherwise: bb3]; } bb3: { - _5 = loop_forever() -> bb5; // scope 2 at $DIR/unreachable_diverging.rs:+4:13: +4:27 - // mir::Constant - // + span: $DIR/unreachable_diverging.rs:17:13: 17:25 - // + literal: Const { ty: fn() {loop_forever}, val: Value() } + _5 = loop_forever() -> bb5; } bb4: { -- _5 = const (); // scope 2 at $DIR/unreachable_diverging.rs:+5:10: +5:10 -- goto -> bb5; // scope 2 at $DIR/unreachable_diverging.rs:+3:9: +5:10 -+ unreachable; // scope 2 at $DIR/unreachable_diverging.rs:+3:9: +5:10 +- _5 = const (); +- goto -> bb5; ++ unreachable; } bb5: { -- StorageDead(_6); // scope 2 at $DIR/unreachable_diverging.rs:+5:9: +5:10 -- StorageDead(_5); // scope 2 at $DIR/unreachable_diverging.rs:+5:9: +5:10 -- StorageLive(_7); // scope 2 at $DIR/unreachable_diverging.rs:+6:9: +6:22 - unreachable; // scope 2 at $DIR/unreachable_diverging.rs:+6:15: +6:19 +- StorageDead(_6); +- StorageDead(_5); +- StorageLive(_7); + unreachable; } bb6: { - _0 = const (); // scope 1 at $DIR/unreachable_diverging.rs:+7:6: +7:6 - StorageDead(_1); // scope 0 at $DIR/unreachable_diverging.rs:+8:1: +8:2 - StorageDead(_2); // scope 0 at $DIR/unreachable_diverging.rs:+8:1: +8:2 - return; // scope 0 at $DIR/unreachable_diverging.rs:+8:2: +8:2 + _0 = const (); + StorageDead(_1); + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/unusual_item_types.E-V-{constant#0}.built.after.mir b/tests/mir-opt/unusual_item_types.E-V-{constant#0}.built.after.mir index 5257491f0d494..993e668b085a0 100644 --- a/tests/mir-opt/unusual_item_types.E-V-{constant#0}.built.after.mir +++ b/tests/mir-opt/unusual_item_types.E-V-{constant#0}.built.after.mir @@ -1,10 +1,10 @@ // MIR for `E::V::{constant#0}` after built E::V::{constant#0}: isize = { - let mut _0: isize; // return place in scope 0 at $DIR/unusual_item_types.rs:+0:9: +0:10 + let mut _0: isize; bb0: { - _0 = const 5_isize; // scope 0 at $DIR/unusual_item_types.rs:+0:9: +0:10 - return; // scope 0 at $DIR/unusual_item_types.rs:+0:9: +0:10 + _0 = const 5_isize; + return; } } diff --git a/tests/mir-opt/unusual_item_types.Test-X-{constructor#0}.built.after.mir b/tests/mir-opt/unusual_item_types.Test-X-{constructor#0}.built.after.mir index 8b271135cc3f6..1e497b412024c 100644 --- a/tests/mir-opt/unusual_item_types.Test-X-{constructor#0}.built.after.mir +++ b/tests/mir-opt/unusual_item_types.Test-X-{constructor#0}.built.after.mir @@ -1,10 +1,10 @@ // MIR for `Test::X` after built fn Test::X(_1: usize) -> Test { - let mut _0: Test; // return place in scope 0 at $DIR/unusual_item_types.rs:+0:5: +0:6 + let mut _0: Test; bb0: { - _0 = Test::X(move _1); // scope 0 at $DIR/unusual_item_types.rs:+0:5: +0:6 - return; // scope 0 at $DIR/unusual_item_types.rs:+0:5: +0:6 + _0 = Test::X(move _1); + return; } } diff --git a/tests/mir-opt/unusual_item_types.core.ptr-drop_in_place.Vec_i32_.AddMovesForPackedDrops.before.mir b/tests/mir-opt/unusual_item_types.core.ptr-drop_in_place.Vec_i32_.AddMovesForPackedDrops.before.mir index c27a93e91f89b..ee90a540720a0 100644 --- a/tests/mir-opt/unusual_item_types.core.ptr-drop_in_place.Vec_i32_.AddMovesForPackedDrops.before.mir +++ b/tests/mir-opt/unusual_item_types.core.ptr-drop_in_place.Vec_i32_.AddMovesForPackedDrops.before.mir @@ -1,39 +1,36 @@ // MIR for `std::ptr::drop_in_place` before AddMovesForPackedDrops fn std::ptr::drop_in_place(_1: *mut Vec) -> () { - let mut _0: (); // return place in scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 - let mut _2: &mut std::vec::Vec; // in scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 - let mut _3: (); // in scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 + let mut _0: (); + let mut _2: &mut std::vec::Vec; + let mut _3: (); bb0: { - goto -> bb6; // scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 + goto -> bb6; } bb1: { - return; // scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 + return; } bb2 (cleanup): { - resume; // scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 + resume; } bb3: { - goto -> bb1; // scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 + goto -> bb1; } bb4 (cleanup): { - drop(((*_1).0: alloc::raw_vec::RawVec)) -> [return: bb2, unwind terminate]; // scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 + drop(((*_1).0: alloc::raw_vec::RawVec)) -> [return: bb2, unwind terminate]; } bb5: { - drop(((*_1).0: alloc::raw_vec::RawVec)) -> [return: bb3, unwind: bb2]; // scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 + drop(((*_1).0: alloc::raw_vec::RawVec)) -> [return: bb3, unwind: bb2]; } bb6: { - _2 = &mut (*_1); // scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 - _3 = as Drop>::drop(move _2) -> [return: bb5, unwind: bb4]; // scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 - // mir::Constant - // + span: $SRC_DIR/core/src/ptr/mod.rs:LL:COL - // + literal: Const { ty: for<'a> fn(&'a mut Vec) { as Drop>::drop}, val: Value() } + _2 = &mut (*_1); + _3 = as Drop>::drop(move _2) -> [return: bb5, unwind: bb4]; } } diff --git a/tests/mir-opt/unusual_item_types.{impl#0}-ASSOCIATED_CONSTANT.built.after.mir b/tests/mir-opt/unusual_item_types.{impl#0}-ASSOCIATED_CONSTANT.built.after.mir index 90444b481221f..e2edbfcd4fa31 100644 --- a/tests/mir-opt/unusual_item_types.{impl#0}-ASSOCIATED_CONSTANT.built.after.mir +++ b/tests/mir-opt/unusual_item_types.{impl#0}-ASSOCIATED_CONSTANT.built.after.mir @@ -1,10 +1,10 @@ // MIR for `::ASSOCIATED_CONSTANT` after built const ::ASSOCIATED_CONSTANT: i32 = { - let mut _0: i32; // return place in scope 0 at $DIR/unusual_item_types.rs:+0:32: +0:35 + let mut _0: i32; bb0: { - _0 = const 2_i32; // scope 0 at $DIR/unusual_item_types.rs:+0:38: +0:39 - return; // scope 0 at $DIR/unusual_item_types.rs:+0:5: +0:40 + _0 = const 2_i32; + return; } } diff --git a/tests/mir-opt/while_storage.while_loop.PreCodegen.after.panic-abort.mir b/tests/mir-opt/while_storage.while_loop.PreCodegen.after.panic-abort.mir index c12f35918818f..c04fdeb637d88 100644 --- a/tests/mir-opt/while_storage.while_loop.PreCodegen.after.panic-abort.mir +++ b/tests/mir-opt/while_storage.while_loop.PreCodegen.after.panic-abort.mir @@ -1,52 +1,46 @@ // MIR for `while_loop` after PreCodegen fn while_loop(_1: bool) -> () { - debug c => _1; // in scope 0 at $DIR/while_storage.rs:+0:15: +0:16 - let mut _0: (); // return place in scope 0 at $DIR/while_storage.rs:+0:24: +0:24 - let mut _2: bool; // in scope 0 at $DIR/while_storage.rs:+1:11: +1:22 - let mut _3: bool; // in scope 0 at $DIR/while_storage.rs:+2:12: +2:23 + debug c => _1; + let mut _0: (); + let mut _2: bool; + let mut _3: bool; bb0: { - goto -> bb1; // scope 0 at $DIR/while_storage.rs:+1:5: +5:6 + goto -> bb1; } bb1: { - StorageLive(_2); // scope 0 at $DIR/while_storage.rs:+1:11: +1:22 - _2 = get_bool(_1) -> [return: bb2, unwind unreachable]; // scope 0 at $DIR/while_storage.rs:+1:11: +1:22 - // mir::Constant - // + span: $DIR/while_storage.rs:11:11: 11:19 - // + literal: Const { ty: fn(bool) -> bool {get_bool}, val: Value() } + StorageLive(_2); + _2 = get_bool(_1) -> [return: bb2, unwind unreachable]; } bb2: { - switchInt(move _2) -> [0: bb7, otherwise: bb3]; // scope 0 at $DIR/while_storage.rs:+1:11: +1:22 + switchInt(move _2) -> [0: bb7, otherwise: bb3]; } bb3: { - StorageLive(_3); // scope 0 at $DIR/while_storage.rs:+2:12: +2:23 - _3 = get_bool(_1) -> [return: bb4, unwind unreachable]; // scope 0 at $DIR/while_storage.rs:+2:12: +2:23 - // mir::Constant - // + span: $DIR/while_storage.rs:12:12: 12:20 - // + literal: Const { ty: fn(bool) -> bool {get_bool}, val: Value() } + StorageLive(_3); + _3 = get_bool(_1) -> [return: bb4, unwind unreachable]; } bb4: { - switchInt(move _3) -> [0: bb5, otherwise: bb6]; // scope 0 at $DIR/while_storage.rs:+2:12: +2:23 + switchInt(move _3) -> [0: bb5, otherwise: bb6]; } bb5: { - StorageDead(_3); // scope 0 at $DIR/while_storage.rs:+4:9: +4:10 - StorageDead(_2); // scope 0 at $DIR/while_storage.rs:+5:5: +5:6 - goto -> bb1; // scope 0 at $DIR/while_storage.rs:+1:5: +5:6 + StorageDead(_3); + StorageDead(_2); + goto -> bb1; } bb6: { - StorageDead(_3); // scope 0 at $DIR/while_storage.rs:+4:9: +4:10 - goto -> bb7; // scope 0 at no-location + StorageDead(_3); + goto -> bb7; } bb7: { - StorageDead(_2); // scope 0 at $DIR/while_storage.rs:+5:5: +5:6 - return; // scope 0 at $DIR/while_storage.rs:+6:2: +6:2 + StorageDead(_2); + return; } } diff --git a/tests/mir-opt/while_storage.while_loop.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/while_storage.while_loop.PreCodegen.after.panic-unwind.mir index 8922eda07acfc..ec4782e5f3c7b 100644 --- a/tests/mir-opt/while_storage.while_loop.PreCodegen.after.panic-unwind.mir +++ b/tests/mir-opt/while_storage.while_loop.PreCodegen.after.panic-unwind.mir @@ -1,52 +1,46 @@ // MIR for `while_loop` after PreCodegen fn while_loop(_1: bool) -> () { - debug c => _1; // in scope 0 at $DIR/while_storage.rs:+0:15: +0:16 - let mut _0: (); // return place in scope 0 at $DIR/while_storage.rs:+0:24: +0:24 - let mut _2: bool; // in scope 0 at $DIR/while_storage.rs:+1:11: +1:22 - let mut _3: bool; // in scope 0 at $DIR/while_storage.rs:+2:12: +2:23 + debug c => _1; + let mut _0: (); + let mut _2: bool; + let mut _3: bool; bb0: { - goto -> bb1; // scope 0 at $DIR/while_storage.rs:+1:5: +5:6 + goto -> bb1; } bb1: { - StorageLive(_2); // scope 0 at $DIR/while_storage.rs:+1:11: +1:22 - _2 = get_bool(_1) -> bb2; // scope 0 at $DIR/while_storage.rs:+1:11: +1:22 - // mir::Constant - // + span: $DIR/while_storage.rs:11:11: 11:19 - // + literal: Const { ty: fn(bool) -> bool {get_bool}, val: Value() } + StorageLive(_2); + _2 = get_bool(_1) -> bb2; } bb2: { - switchInt(move _2) -> [0: bb7, otherwise: bb3]; // scope 0 at $DIR/while_storage.rs:+1:11: +1:22 + switchInt(move _2) -> [0: bb7, otherwise: bb3]; } bb3: { - StorageLive(_3); // scope 0 at $DIR/while_storage.rs:+2:12: +2:23 - _3 = get_bool(_1) -> bb4; // scope 0 at $DIR/while_storage.rs:+2:12: +2:23 - // mir::Constant - // + span: $DIR/while_storage.rs:12:12: 12:20 - // + literal: Const { ty: fn(bool) -> bool {get_bool}, val: Value() } + StorageLive(_3); + _3 = get_bool(_1) -> bb4; } bb4: { - switchInt(move _3) -> [0: bb5, otherwise: bb6]; // scope 0 at $DIR/while_storage.rs:+2:12: +2:23 + switchInt(move _3) -> [0: bb5, otherwise: bb6]; } bb5: { - StorageDead(_3); // scope 0 at $DIR/while_storage.rs:+4:9: +4:10 - StorageDead(_2); // scope 0 at $DIR/while_storage.rs:+5:5: +5:6 - goto -> bb1; // scope 0 at $DIR/while_storage.rs:+1:5: +5:6 + StorageDead(_3); + StorageDead(_2); + goto -> bb1; } bb6: { - StorageDead(_3); // scope 0 at $DIR/while_storage.rs:+4:9: +4:10 - goto -> bb7; // scope 0 at no-location + StorageDead(_3); + goto -> bb7; } bb7: { - StorageDead(_2); // scope 0 at $DIR/while_storage.rs:+5:5: +5:6 - return; // scope 0 at $DIR/while_storage.rs:+6:2: +6:2 + StorageDead(_2); + return; } } diff --git a/tests/run-make/const_fn_mir/dump.mir b/tests/run-make/const_fn_mir/dump.mir index 9cc70d3b0e6ba..25ac0c7e852a9 100644 --- a/tests/run-make/const_fn_mir/dump.mir +++ b/tests/run-make/const_fn_mir/dump.mir @@ -1,48 +1,45 @@ // WARNING: This output format is intended for human consumers only // and is subject to change without notice. Knock yourself out. fn foo() -> i32 { - let mut _0: i32; // return place in scope 0 at main.rs:4:19: 4:22 - let mut _1: (i32, bool); // in scope 0 at main.rs:5:5: 5:10 + let mut _0: i32; + let mut _1: (i32, bool); bb0: { - _1 = CheckedAdd(const 5_i32, const 6_i32); // scope 0 at main.rs:5:5: 5:10 - assert(!move (_1.1: bool), "attempt to compute `{} + {}`, which would overflow", const 5_i32, const 6_i32) -> bb1; // scope 0 at main.rs:5:5: 5:10 + _1 = CheckedAdd(const 5_i32, const 6_i32); + assert(!move (_1.1: bool), "attempt to compute `{} + {}`, which would overflow", const 5_i32, const 6_i32) -> bb1; } bb1: { - _0 = move (_1.0: i32); // scope 0 at main.rs:5:5: 5:10 - return; // scope 0 at main.rs:6:2: 6:2 + _0 = move (_1.0: i32); + return; } } // MIR FOR CTFE fn foo() -> i32 { - let mut _0: i32; // return place in scope 0 at main.rs:4:19: 4:22 - let mut _1: (i32, bool); // in scope 0 at main.rs:5:5: 5:10 + let mut _0: i32; + let mut _1: (i32, bool); bb0: { - _1 = CheckedAdd(const 5_i32, const 6_i32); // scope 0 at main.rs:5:5: 5:10 - assert(!move (_1.1: bool), "attempt to compute `{} + {}`, which would overflow", const 5_i32, const 6_i32) -> bb1; // scope 0 at main.rs:5:5: 5:10 + _1 = CheckedAdd(const 5_i32, const 6_i32); + assert(!move (_1.1: bool), "attempt to compute `{} + {}`, which would overflow", const 5_i32, const 6_i32) -> bb1; } bb1: { - _0 = move (_1.0: i32); // scope 0 at main.rs:5:5: 5:10 - return; // scope 0 at main.rs:6:2: 6:2 + _0 = move (_1.0: i32); + return; } } fn main() -> () { - let mut _0: (); // return place in scope 0 at main.rs:8:11: 8:11 - let _1: i32; // in scope 0 at main.rs:9:5: 9:10 + let mut _0: (); + let _1: i32; bb0: { - _1 = foo() -> bb1; // scope 0 at main.rs:9:5: 9:10 - // mir::Constant - // + span: main.rs:9:5: 9:8 - // + literal: Const { ty: fn() -> i32 {foo}, val: Value() } + _1 = foo() -> bb1; } bb1: { - return; // scope 0 at main.rs:10:2: 10:2 + return; } }