Skip to content

Commit 7c0f451

Browse files
committed
Add a MIR test for align_of_val on a slice
1 parent 733dab5 commit 7c0f451

File tree

2 files changed

+33
-0
lines changed

2 files changed

+33
-0
lines changed
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
- // MIR for `of_val_slice` before InstSimplify-after-simplifycfg
2+
+ // MIR for `of_val_slice` after InstSimplify-after-simplifycfg
3+
4+
fn of_val_slice(_1: &[T]) -> usize {
5+
debug slice => _1;
6+
let mut _0: usize;
7+
let mut _2: *const [T];
8+
9+
bb0: {
10+
StorageLive(_2);
11+
_2 = &raw const (*_1);
12+
_0 = std::intrinsics::align_of_val::<[T]>(move _2) -> [return: bb1, unwind unreachable];
13+
}
14+
15+
bb1: {
16+
StorageDead(_2);
17+
return;
18+
}
19+
}
20+
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
//@ test-mir-pass: InstSimplify-after-simplifycfg
2+
//@ needs-unwind
3+
4+
#![crate_type = "lib"]
5+
#![feature(core_intrinsics)]
6+
7+
// EMIT_MIR align_of_slice.of_val_slice.InstSimplify-after-simplifycfg.diff
8+
pub fn of_val_slice<T>(slice: &[T]) -> usize {
9+
// CHECK-LABEL: fn of_val_slice(_1: &[T])
10+
// CHECK: _2 = &raw const (*_1);
11+
// CHECK: _0 = std::intrinsics::align_of_val::<[T]>(move _2)
12+
unsafe { core::intrinsics::align_of_val(slice) }
13+
}

0 commit comments

Comments
 (0)