mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-12 23:13:15 +00:00
Rollup merge of #133921 - TimNN:nuw-infer, r=nikic
Adapt codegen tests for NUW inference
These were broken by 462cb3cd6c
Let me know if you think we should have a FIXME / tracking issue to update the tests after the LLVM 20 upgrade to make these required.
`@rustbot` label: +llvm-main
r? `@nikic`
This commit is contained in:
commit
beb9b240f1
@ -57,7 +57,7 @@ pub unsafe fn test_catch_unwind(
|
||||
// CHECK: [[IS_RUST_EXN_I8:%.*]] = zext i1 [[IS_RUST_EXN]] to i8
|
||||
|
||||
// CHECK: store ptr [[EXCEPTION]], ptr [[ALLOCA]]
|
||||
// CHECK: [[IS_RUST_SLOT:%.*]] = getelementptr inbounds i8, ptr [[ALLOCA]], [[PTR_SIZE]]
|
||||
// CHECK: [[IS_RUST_SLOT:%.*]] = getelementptr inbounds{{( nuw)?}} i8, ptr [[ALLOCA]], [[PTR_SIZE]]
|
||||
// CHECK: store i8 [[IS_RUST_EXN_I8]], ptr [[IS_RUST_SLOT]]
|
||||
|
||||
// CHECK: call void %catch_fn(ptr %data, ptr nonnull [[ALLOCA]])
|
||||
|
@ -12,7 +12,7 @@ pub fn branchy(input: u64) -> u64 {
|
||||
// CHECK-LABEL: @branchy(
|
||||
// CHECK-NEXT: start:
|
||||
// CHECK-NEXT: [[_2:%.*]] = and i64 [[INPUT:%.*]], 3
|
||||
// CHECK-NEXT: [[SWITCH_GEP:%.*]] = getelementptr inbounds [4 x i64], ptr @switch.table.branchy, i64 0, i64 [[_2]]
|
||||
// CHECK-NEXT: [[SWITCH_GEP:%.*]] = getelementptr inbounds{{( nuw)?}} [4 x i64], ptr @switch.table.branchy, i64 0, i64 [[_2]]
|
||||
// CHECK-NEXT: [[SWITCH_LOAD:%.*]] = load i64, ptr [[SWITCH_GEP]]
|
||||
// CHECK-NEXT: ret i64 [[SWITCH_LOAD]]
|
||||
match input % 4 {
|
||||
|
@ -17,19 +17,19 @@
|
||||
// CHECK-LABEL: define{{.*}}void @convert(
|
||||
// CHECK-NOT: shufflevector
|
||||
// OPT2: store i16
|
||||
// OPT2-NEXT: getelementptr inbounds i8, {{.+}} 2
|
||||
// OPT2-NEXT: getelementptr inbounds{{( nuw)?}} i8, {{.+}} 2
|
||||
// OPT2-NEXT: store i16
|
||||
// OPT2-NEXT: getelementptr inbounds i8, {{.+}} 4
|
||||
// OPT2-NEXT: getelementptr inbounds{{( nuw)?}} i8, {{.+}} 4
|
||||
// OPT2-NEXT: store i16
|
||||
// OPT2-NEXT: getelementptr inbounds i8, {{.+}} 6
|
||||
// OPT2-NEXT: getelementptr inbounds{{( nuw)?}} i8, {{.+}} 6
|
||||
// OPT2-NEXT: store i16
|
||||
// OPT2-NEXT: getelementptr inbounds i8, {{.+}} 8
|
||||
// OPT2-NEXT: getelementptr inbounds{{( nuw)?}} i8, {{.+}} 8
|
||||
// OPT2-NEXT: store i16
|
||||
// OPT2-NEXT: getelementptr inbounds i8, {{.+}} 10
|
||||
// OPT2-NEXT: getelementptr inbounds{{( nuw)?}} i8, {{.+}} 10
|
||||
// OPT2-NEXT: store i16
|
||||
// OPT2-NEXT: getelementptr inbounds i8, {{.+}} 12
|
||||
// OPT2-NEXT: getelementptr inbounds{{( nuw)?}} i8, {{.+}} 12
|
||||
// OPT2-NEXT: store i16
|
||||
// OPT2-NEXT: getelementptr inbounds i8, {{.+}} 14
|
||||
// OPT2-NEXT: getelementptr inbounds{{( nuw)?}} i8, {{.+}} 14
|
||||
// OPT2-NEXT: store i16
|
||||
// OPT3LINX64: load <8 x i16>
|
||||
// OPT3LINX64-NEXT: call <8 x i16> @llvm.bswap
|
||||
|
@ -14,7 +14,7 @@
|
||||
// CHECK-LABEL: @slice_iter_next(
|
||||
#[no_mangle]
|
||||
pub fn slice_iter_next<'a>(it: &mut std::slice::Iter<'a, u32>) -> Option<&'a u32> {
|
||||
// CHECK: %[[ENDP:.+]] = getelementptr inbounds i8, ptr %it, {{i32 4|i64 8}}
|
||||
// CHECK: %[[ENDP:.+]] = getelementptr inbounds{{( nuw)?}} i8, ptr %it, {{i32 4|i64 8}}
|
||||
// CHECK: %[[END:.+]] = load ptr, ptr %[[ENDP]]
|
||||
// CHECK-SAME: !nonnull
|
||||
// CHECK-SAME: !noundef
|
||||
@ -31,7 +31,7 @@ pub fn slice_iter_next<'a>(it: &mut std::slice::Iter<'a, u32>) -> Option<&'a u32
|
||||
// CHECK-LABEL: @slice_iter_next_back(
|
||||
#[no_mangle]
|
||||
pub fn slice_iter_next_back<'a>(it: &mut std::slice::Iter<'a, u32>) -> Option<&'a u32> {
|
||||
// CHECK: %[[ENDP:.+]] = getelementptr inbounds i8, ptr %it, {{i32 4|i64 8}}
|
||||
// CHECK: %[[ENDP:.+]] = getelementptr inbounds{{( nuw)?}} i8, ptr %it, {{i32 4|i64 8}}
|
||||
// CHECK: %[[END:.+]] = load ptr, ptr %[[ENDP]]
|
||||
// CHECK-SAME: !nonnull
|
||||
// CHECK-SAME: !noundef
|
||||
@ -55,7 +55,7 @@ pub fn slice_iter_next_back<'a>(it: &mut std::slice::Iter<'a, u32>) -> Option<&'
|
||||
#[no_mangle]
|
||||
pub fn slice_iter_new(slice: &[u32]) -> std::slice::Iter<'_, u32> {
|
||||
// CHECK-NOT: slice
|
||||
// CHECK: %[[END:.+]] = getelementptr inbounds i32{{.+}} %slice.0{{.+}} %slice.1
|
||||
// CHECK: %[[END:.+]] = getelementptr inbounds{{( nuw)?}} i32{{.+}} %slice.0{{.+}} %slice.1
|
||||
// CHECK-NOT: slice
|
||||
// CHECK: insertvalue {{.+}} ptr %slice.0, 0
|
||||
// CHECK-NOT: slice
|
||||
@ -70,7 +70,7 @@ pub fn slice_iter_new(slice: &[u32]) -> std::slice::Iter<'_, u32> {
|
||||
#[no_mangle]
|
||||
pub fn slice_iter_mut_new(slice: &mut [u32]) -> std::slice::IterMut<'_, u32> {
|
||||
// CHECK-NOT: slice
|
||||
// CHECK: %[[END:.+]] = getelementptr inbounds i32{{.+}} %slice.0{{.+}} %slice.1
|
||||
// CHECK: %[[END:.+]] = getelementptr inbounds{{( nuw)?}} i32{{.+}} %slice.0{{.+}} %slice.1
|
||||
// CHECK-NOT: slice
|
||||
// CHECK: insertvalue {{.+}} ptr %slice.0, 0
|
||||
// CHECK-NOT: slice
|
||||
@ -83,7 +83,7 @@ pub fn slice_iter_mut_new(slice: &mut [u32]) -> std::slice::IterMut<'_, u32> {
|
||||
// CHECK-LABEL: @slice_iter_is_empty
|
||||
#[no_mangle]
|
||||
pub fn slice_iter_is_empty(it: &std::slice::Iter<'_, u32>) -> bool {
|
||||
// CHECK: %[[ENDP:.+]] = getelementptr inbounds i8, ptr %it, {{i32 4|i64 8}}
|
||||
// CHECK: %[[ENDP:.+]] = getelementptr inbounds{{( nuw)?}} i8, ptr %it, {{i32 4|i64 8}}
|
||||
// CHECK: %[[END:.+]] = load ptr, ptr %[[ENDP]]
|
||||
// CHECK-SAME: !nonnull
|
||||
// CHECK-SAME: !noundef
|
||||
@ -99,7 +99,7 @@ pub fn slice_iter_is_empty(it: &std::slice::Iter<'_, u32>) -> bool {
|
||||
// CHECK-LABEL: @slice_iter_len
|
||||
#[no_mangle]
|
||||
pub fn slice_iter_len(it: &std::slice::Iter<'_, u32>) -> usize {
|
||||
// CHECK: %[[ENDP:.+]] = getelementptr inbounds i8, ptr %it, {{i32 4|i64 8}}
|
||||
// CHECK: %[[ENDP:.+]] = getelementptr inbounds{{( nuw)?}} i8, ptr %it, {{i32 4|i64 8}}
|
||||
// CHECK: %[[END:.+]] = load ptr, ptr %[[ENDP]]
|
||||
// CHECK-SAME: !nonnull
|
||||
// CHECK-SAME: !noundef
|
||||
|
Loading…
Reference in New Issue
Block a user