Skip to content

Commit ac4d096

Browse files
committed
FileCheck const_prop_miscompile.
1 parent e65ec7d commit ac4d096

4 files changed

+41
-24
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
// unit-test: ConstProp
2+
// Check that we do not propagate past an indirect mutation.
3+
#![feature(raw_ref_op)]
4+
5+
// EMIT_MIR indirect_mutation.foo.ConstProp.diff
6+
fn foo() {
7+
// CHECK-LABEL: fn foo(
8+
// CHECK: debug u => _1;
9+
// CHECK: debug y => _3;
10+
// CHECK: _1 = (const 1_i32,);
11+
// CHECK: _2 = &mut (_1.0: i32);
12+
// CHECK: (*_2) = const 5_i32;
13+
// CHECK: _4 = (_1.0: i32);
14+
// CHECK: _3 = Eq(move _4, const 5_i32);
15+
16+
let mut u = (1,);
17+
*&mut u.0 = 5;
18+
let y = { u.0 } == 5;
19+
}
20+
21+
// EMIT_MIR indirect_mutation.bar.ConstProp.diff
22+
fn bar() {
23+
// CHECK-LABEL: fn bar(
24+
// CHECK: debug v => _1;
25+
// CHECK: debug y => _4;
26+
// CHECK: _3 = &raw mut (_1.0: i32);
27+
// CHECK: (*_3) = const 5_i32;
28+
// CHECK: _5 = (_1.0: i32);
29+
// CHECK: _4 = Eq(move _5, const 5_i32);
30+
31+
let mut v = (1,);
32+
unsafe {
33+
*&raw mut v.0 = 5;
34+
}
35+
let y = { v.0 } == 5;
36+
}
37+
38+
fn main() {
39+
foo();
40+
bar();
41+
}

tests/mir-opt/const_prop_miscompile.rs

-24
This file was deleted.

0 commit comments

Comments
 (0)