diff options
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/mir-opt/const_prop/ref_deref.rs | 21 | ||||
| -rw-r--r-- | src/test/mir-opt/const_prop/reify_fn_ptr.rs | 25 | ||||
| -rw-r--r-- | src/test/mir-opt/const_prop/slice_len.rs | 40 | ||||
| -rw-r--r-- | src/test/ui/consts/const-eval/promoted_errors.stderr | 12 |
4 files changed, 80 insertions, 18 deletions
diff --git a/src/test/mir-opt/const_prop/ref_deref.rs b/src/test/mir-opt/const_prop/ref_deref.rs new file mode 100644 index 00000000000..2d04822c0e7 --- /dev/null +++ b/src/test/mir-opt/const_prop/ref_deref.rs @@ -0,0 +1,21 @@ +fn main() { + *(&4); +} + +// END RUST SOURCE +// START rustc.main.ConstProp.before.mir +// bb0: { +// ... +// _2 = &(promoted[0]: i32); +// _1 = (*_2); +// ... +//} +// END rustc.main.ConstProp.before.mir +// START rustc.main.ConstProp.after.mir +// bb0: { +// ... +// _2 = const Scalar(AllocId(0).0x0) : &i32; +// _1 = const 4i32; +// ... +// } +// END rustc.main.ConstProp.after.mir diff --git a/src/test/mir-opt/const_prop/reify_fn_ptr.rs b/src/test/mir-opt/const_prop/reify_fn_ptr.rs new file mode 100644 index 00000000000..809eb19ade8 --- /dev/null +++ b/src/test/mir-opt/const_prop/reify_fn_ptr.rs @@ -0,0 +1,25 @@ +fn main() { + let _ = main as usize as *const fn(); +} + +// END RUST SOURCE +// START rustc.main.ConstProp.before.mir +// bb0: { +// ... +// _3 = const main as fn() (Pointer(ReifyFnPointer)); +// _2 = move _3 as usize (Misc); +// ... +// _1 = move _2 as *const fn() (Misc); +// ... +// } +// END rustc.main.ConstProp.before.mir +// START rustc.main.ConstProp.after.mir +// bb0: { +// ... +// _3 = const Scalar(AllocId(1).0x0) : fn(); +// _2 = move _3 as usize (Misc); +// ... +// _1 = const Scalar(AllocId(1).0x0) : *const fn(); +// ... +// } +// END rustc.main.ConstProp.after.mir diff --git a/src/test/mir-opt/const_prop/slice_len.rs b/src/test/mir-opt/const_prop/slice_len.rs index 3435ca07f4c..5babeb195a8 100644 --- a/src/test/mir-opt/const_prop/slice_len.rs +++ b/src/test/mir-opt/const_prop/slice_len.rs @@ -1,22 +1,22 @@ -fn test() -> &'static [u32] { - &[1, 2] -} - fn main() { - let x = test()[0]; + (&[1u32, 2, 3] as &[u32])[1]; } // END RUST SOURCE // START rustc.main.ConstProp.before.mir -// bb1: { +// bb0: { // ... -// _3 = const 0usize; -// _4 = Len((*_2)); -// _5 = Lt(_3, _4); -// assert(move _5, "index out of bounds: the len is move _4 but the index is _3") -> bb2; +// _4 = &(promoted[0]: [u32; 3]); +// _3 = _4; +// _2 = move _3 as &[u32] (Pointer(Unsize)); +// ... +// _6 = const 1usize; +// _7 = Len((*_2)); +// _8 = Lt(_6, _7); +// assert(move _8, "index out of bounds: the len is move _7 but the index is _6") -> bb1; // } -// bb2: { -// _1 = (*_2)[_3]; +// bb1: { +// _1 = (*_2)[_6]; // ... // return; // } @@ -24,13 +24,17 @@ fn main() { // START rustc.main.ConstProp.after.mir // bb0: { // ... -// _3 = const 0usize; -// _4 = Len((*_2)); -// _5 = Lt(_3, _4); -// assert(move _5, "index out of bounds: the len is move _4 but the index is _3") -> bb2; +// _4 = const Scalar(AllocId(0).0x0) : &[u32; 3]; +// _3 = const Scalar(AllocId(0).0x0) : &[u32; 3]; +// _2 = move _3 as &[u32] (Pointer(Unsize)); +// ... +// _6 = const 1usize; +// _7 = const 3usize; +// _8 = const true; +// assert(const true, "index out of bounds: the len is move _7 but the index is _6") -> bb1; // } -// bb2: { -// _1 = (*_2)[_3]; +// bb1: { +// _1 = (*_2)[_6]; // ... // return; // } diff --git a/src/test/ui/consts/const-eval/promoted_errors.stderr b/src/test/ui/consts/const-eval/promoted_errors.stderr index c9d5ede61ad..c9f3a7659f9 100644 --- a/src/test/ui/consts/const-eval/promoted_errors.stderr +++ b/src/test/ui/consts/const-eval/promoted_errors.stderr @@ -16,6 +16,12 @@ warning: attempt to divide by zero LL | println!("{}", 1/(1-1)); | ^^^^^^^ +warning: this expression will panic at runtime + --> $DIR/promoted_errors.rs:9:20 + | +LL | println!("{}", 1/(1-1)); + | ^^^^^^^ attempt to divide by zero + warning: attempt to divide by zero --> $DIR/promoted_errors.rs:11:14 | @@ -34,6 +40,12 @@ warning: attempt to divide by zero LL | println!("{}", 1/(false as u32)); | ^^^^^^^^^^^^^^^^ +warning: this expression will panic at runtime + --> $DIR/promoted_errors.rs:14:20 + | +LL | println!("{}", 1/(false as u32)); + | ^^^^^^^^^^^^^^^^ attempt to divide by zero + warning: attempt to divide by zero --> $DIR/promoted_errors.rs:16:14 | |
