Skip to content

Commit d1a15cd

Browse files
committed
Regression test.
1 parent b8d8dc3 commit d1a15cd

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed

src/test/mir-opt/issue-43457.rs

+55
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
// compile-flags: -Z identify_regions -Z span_free_formats
12+
// ignore-tidy-linelength
13+
14+
// Regression test for #43457: an `EndRegion` was missing from output
15+
// because compiler was using a faulty means for region map lookup.
16+
17+
use std::cell::RefCell;
18+
19+
fn rc_refcell_test(r: RefCell<i32>) {
20+
r.borrow_mut();
21+
}
22+
23+
fn main() { }
24+
25+
// END RUST SOURCE
26+
// START rustc.node5.SimplifyCfg-qualify-consts.after.mir
27+
//
28+
// fn rc_refcell_test(_1: std::cell::RefCell<i32>) -> () {
29+
// let mut _0: ();
30+
// scope 1 {
31+
// let _2: std::cell::RefCell<i32>;
32+
// }
33+
// let mut _3: std::cell::RefMut<'17dce, i32>;
34+
// let mut _4: &'17dce std::cell::RefCell<i32>;
35+
//
36+
// bb0: {
37+
// StorageLive(_2);
38+
// _2 = _1;
39+
// StorageLive(_4);
40+
// _4 = &'17dce _2;
41+
// _3 = const <std::cell::RefCell<T>>::borrow_mut(_4) -> bb1;
42+
// }
43+
//
44+
// bb1: {
45+
// drop(_3) -> bb2;
46+
// }
47+
//
48+
// bb2: {
49+
// StorageDead(_4);
50+
// EndRegion('17dce);
51+
// _0 = ();
52+
// StorageDead(_2);
53+
// return;
54+
// }
55+
// }

0 commit comments

Comments
 (0)