]> git.lizzy.rs Git - rust.git/blob - tests/mir-opt/intrinsic_asserts.rs
Auto merge of #102842 - rol1510:issue-85566-fix, r=notriddle
[rust.git] / tests / mir-opt / intrinsic_asserts.rs
1 #![crate_type = "lib"]
2 #![feature(core_intrinsics)]
3
4 // All these assertions pass, so all the intrinsic calls should be deleted.
5 // EMIT_MIR intrinsic_asserts.removable.InstCombine.diff
6 pub fn removable() {
7     core::intrinsics::assert_inhabited::<()>();
8     core::intrinsics::assert_zero_valid::<u8>();
9     core::intrinsics::assert_mem_uninitialized_valid::<u8>();
10 }
11
12 enum Never {}
13
14 // These assertions all diverge, so their target blocks should become None.
15 // EMIT_MIR intrinsic_asserts.panics.InstCombine.diff
16 pub fn panics() {
17     core::intrinsics::assert_inhabited::<Never>();
18     core::intrinsics::assert_zero_valid::<&u8>();
19     core::intrinsics::assert_mem_uninitialized_valid::<&u8>();
20 }
21
22 // Whether or not these asserts pass isn't known, so they shouldn't be modified.
23 // EMIT_MIR intrinsic_asserts.generic.InstCombine.diff
24 pub fn generic<T>() {
25     core::intrinsics::assert_inhabited::<T>();
26     core::intrinsics::assert_zero_valid::<T>();
27     core::intrinsics::assert_mem_uninitialized_valid::<T>();
28 }