Rollup merge of #152404 - durin42:llvm-23-instcombine-shrink-constant, r=Mark-Simulacrum

tests: adapt align-offset.rs for InstCombine improvements in LLVM 23

Upstream [has improved InstCombine](8d2078332c) so that it can shrink added constants using known zeroes, which caused a little bit of change in this test. As far as I can tell either output is fine, so we just accept both.

@rustbot label: +llvm-main
This commit is contained in:
Jonathan Brouwer 2026-02-14 22:11:54 +01:00 committed by GitHub
commit e6ca590153
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 7 additions and 7 deletions

View file

@ -4,7 +4,7 @@
#![crate_type = "rlib"] #![crate_type = "rlib"]
// CHECK-LABEL: align_offset_byte_ptr // CHECK-LABEL: align_offset_byte_ptr
// CHECK: leaq 31 // CHECK: leaq {{31|28}}
// CHECK: andq $-32 // CHECK: andq $-32
// CHECK: subq // CHECK: subq
#[no_mangle] #[no_mangle]
@ -13,7 +13,7 @@ pub fn align_offset_byte_ptr(ptr: *const u8) -> usize {
} }
// CHECK-LABEL: align_offset_byte_slice // CHECK-LABEL: align_offset_byte_slice
// CHECK: leaq 31 // CHECK: leaq {{31|28}}
// CHECK: andq $-32 // CHECK: andq $-32
// CHECK: subq // CHECK: subq
#[no_mangle] #[no_mangle]
@ -22,7 +22,7 @@ pub fn align_offset_byte_slice(slice: &[u8]) -> usize {
} }
// CHECK-LABEL: align_offset_word_ptr // CHECK-LABEL: align_offset_word_ptr
// CHECK: leaq 31 // CHECK: leaq {{31|28}}
// CHECK: andq $-32 // CHECK: andq $-32
// CHECK: subq // CHECK: subq
// CHECK: shrq // CHECK: shrq
@ -35,7 +35,7 @@ pub fn align_offset_word_ptr(ptr: *const u32) -> usize {
} }
// CHECK-LABEL: align_offset_word_slice // CHECK-LABEL: align_offset_word_slice
// CHECK: leaq 31 // CHECK: leaq {{31|28}}
// CHECK: andq $-32 // CHECK: andq $-32
// CHECK: subq // CHECK: subq
// CHECK: shrq // CHECK: shrq

View file

@ -24,7 +24,7 @@ pub fn align_to4(x: &[u8]) -> bool {
#[no_mangle] #[no_mangle]
pub fn align_offset_byte_ptr(ptr: *const u8) -> usize { pub fn align_offset_byte_ptr(ptr: *const u8) -> usize {
// CHECK: %[[ADDR:.+]] = ptrtoint ptr %ptr to [[USIZE:i[0-9]+]] // CHECK: %[[ADDR:.+]] = ptrtoint ptr %ptr to [[USIZE:i[0-9]+]]
// CHECK: %[[UP:.+]] = add [[USIZE]] %[[ADDR]], 31 // CHECK: %[[UP:.+]] = add [[USIZE]] %[[ADDR]], {{31|28}}
// CHECK: %[[ALIGNED:.+]] = and [[USIZE]] %[[UP]], -32 // CHECK: %[[ALIGNED:.+]] = and [[USIZE]] %[[UP]], -32
// CHECK: %[[OFFSET:.+]] = sub [[USIZE]] %[[ALIGNED]], %[[ADDR]] // CHECK: %[[OFFSET:.+]] = sub [[USIZE]] %[[ALIGNED]], %[[ADDR]]
@ -41,7 +41,7 @@ pub fn align_offset_byte_ptr(ptr: *const u8) -> usize {
#[no_mangle] #[no_mangle]
pub fn align_offset_word_slice(slice: &[Align4]) -> usize { pub fn align_offset_word_slice(slice: &[Align4]) -> usize {
// CHECK: %[[ADDR:.+]] = ptrtoint ptr %slice.0 to [[USIZE]] // CHECK: %[[ADDR:.+]] = ptrtoint ptr %slice.0 to [[USIZE]]
// CHECK: %[[UP:.+]] = add [[USIZE]] %[[ADDR]], 31 // CHECK: %[[UP:.+]] = add [[USIZE]] %[[ADDR]], {{31|28}}
// CHECK: %[[ALIGNED:.+]] = and [[USIZE]] %[[UP]], -32 // CHECK: %[[ALIGNED:.+]] = and [[USIZE]] %[[UP]], -32
// CHECK: %[[BOFFSET:.+]] = sub [[USIZE]] %[[ALIGNED]], %[[ADDR]] // CHECK: %[[BOFFSET:.+]] = sub [[USIZE]] %[[ALIGNED]], %[[ADDR]]
// CHECK: %[[OFFSET:.+]] = lshr exact [[USIZE]] %[[BOFFSET]], 2 // CHECK: %[[OFFSET:.+]] = lshr exact [[USIZE]] %[[BOFFSET]], 2
@ -57,7 +57,7 @@ pub fn align_offset_word_slice(slice: &[Align4]) -> usize {
#[no_mangle] #[no_mangle]
pub fn align_offset_word_ptr(ptr: *const Align4) -> usize { pub fn align_offset_word_ptr(ptr: *const Align4) -> usize {
// CHECK: %[[ADDR:.+]] = ptrtoint ptr %ptr to [[USIZE]] // CHECK: %[[ADDR:.+]] = ptrtoint ptr %ptr to [[USIZE]]
// CHECK: %[[UP:.+]] = add [[USIZE]] %[[ADDR]], 31 // CHECK: %[[UP:.+]] = add [[USIZE]] %[[ADDR]], {{31|28}}
// CHECK: %[[ALIGNED:.+]] = and [[USIZE]] %[[UP]], -32 // CHECK: %[[ALIGNED:.+]] = and [[USIZE]] %[[UP]], -32
// CHECK: %[[BOFFSET:.+]] = sub [[USIZE]] %[[ALIGNED]], %[[ADDR]] // CHECK: %[[BOFFSET:.+]] = sub [[USIZE]] %[[ALIGNED]], %[[ADDR]]