Skip to content

Rollup of 9 pull requests#154438

Closed
JonathanBrouwer wants to merge 27 commits intorust-lang:mainfrom
JonathanBrouwer:rollup-1QVO5qY
Closed

Rollup of 9 pull requests#154438
JonathanBrouwer wants to merge 27 commits intorust-lang:mainfrom
JonathanBrouwer:rollup-1QVO5qY

Conversation

@JonathanBrouwer
Copy link
Contributor

Successful merges:

r? @ghost

Create a similar rollup

TKanX and others added 27 commits March 7, 2026 01:33
…assume

Co-authored-by: Scott McMurray <scottmcm@users.noreply.github.com>
Clang and gcc use this option to control linking behavior too. Some
targets need to be linked against a special crt which enables
profiling at runtime.

This makes using gprof a little easier with Rust binaries. Otherwise,
rustc must be passed `-Clink-args=-pg` to ensure the correct startup
code is linked.
mingw exposes the `_mcount` symbol for profiling.
libgmon needs to be linked. This also requires readding a few
other system libraries to satisfy its dependencies.
The warning has no error code, so in a `-D warnings` environment, it's
impossible to ignore if it consistently breaks your build.  Change it
to a note so it is still visible, but doesn't break the build
Remove the confusing word "error".  The diagnostic is already prefixed
with a level when it is displayed, so this is redundant and possibly
confusing ("warning: error ...").

Add some help text summarizing the impact of what happened: the next
build won't be able to reuse work from the current run.
…e fail

Use a proc macro to observe the incremental session directory and do
something platform specific so that renaming the '-working' session
directory during finalize_session_directory will fail.  On Unix,
change the permissions on the parent directory to be read-only.  On
Windows, open and leak a file inside the `-working` directory.
```
error[E0061]: this method takes 0 arguments but 1 argument was supplied
  --> $DIR/shadowed-intrinsic-method.rs:18:7
   |
LL |     a.borrow(());
   |       ^^^^^^ -- unexpected argument of type `()`
   |
note: the `borrow` call is resolved to the method in `std::borrow::Borrow`, shadowing the method of the same name on the inherent impl for `A`
  --> $DIR/shadowed-intrinsic-method.rs:18:7
   |
LL | use std::borrow::Borrow;
   |     ------------------- `std::borrow::Borrow` imported here
...
LL |     a.borrow(());
   |       ^^^^^^ refers to `std::borrow::Borrow::borrow`
note: method defined here
  --> $SRC_DIR/core/src/borrow.rs:LL:COL
help: you might have meant to call the other method; you can use the fully-qualified path to call it explicitly
   |
LL -     a.borrow(());
LL +     A::borrow(&mut a, ());
   |
help: remove the extra argument
   |
LL -     a.borrow(());
LL +     a.borrow();
   |
```
Handle correct gramar in the face of a single other option, or many.
* Create GPU target notification group
* Update triagebot.toml

Co-authored-by: 许杰友 Jieyou Xu (Joe) <39484203+jieyouxu@users.noreply.github.com>
…ze-nuw-assume, r=scottmcm

perf(codegen): Eliminate `size_of_val == 0` for DSTs with Non-zero-sized Prefix via NUW and Assume

*[View all comments](https://triagebot.infra.rust-lang.org/gh-comments/rust-lang/rust/pull/152843)*

### Summary:

#### Problem:

`size_of_val(p) == 0` fails to optimize away for DST types that have a statically-known non-zero-sized prefix:

```rust
pub struct Foo<T: ?Sized>(pub [u32; 3], pub T);

pub fn demo(p: &Foo<dyn std::fmt::Debug>) -> bool {
    std::mem::size_of_val(p) == 0  // always false, but LLVM can't prove it
}
```

`Foo` has a 12-byte prefix, so its total size is always ≥ 12. Yet the comparison persists as a runtime computation in LLVM IR. This matters because `Box<dyn T>` drop emits this exact check to guard the deallocation call — for types with a guaranteed non-zero prefix, the branch should vanish but doesn't.

The slice tail variant `Foo<[i32]>` already optimized correctly; `Foo<dyn Trait>` and `Foo<[u8]>` did not.

#### Root Cause:

In `size_and_align_of_dst` (the ADT/Tuple branch), the size computation is:

```
full_size = (offset + unsized_size + (align-1)) & -align
```

LLVM cannot prove `full_size > 0` because:

1. `offset + unsized_size` used plain `add` — no overflow flags, so LLVM cannot conclude the result is ≥ `offset`.
2. `(x + addend) & -align` — LLVM has no fold to prove that alignment rounding never reduces the value below `x`.

#### Solution:

Two changes:

1. **`add nuw nsw` on `offset + unsized_size`** — the sum is bounded by the rounded size ≤ `isize::MAX`, so neither signed nor unsigned overflow is possible. Tells LLVM: `unrounded_size ≥ offset`.

2. **`assume(full_size ≥ unrounded_size)`** — `round_up(x, a) ≥ x` is a mathematical identity for power-of-two `a`. Tells LLVM: `full_size ≥ unrounded_size ≥ offset`. If `offset > 0`, the chain proves `full_size > 0`.

#### LLVM IR Comparison:

`Foo<dyn Debug>` — before ([godbolt](https://rust.godbolt.org/z/r1d5n6Phe)):

```llvm
define noundef zeroext i1 @demo(ptr %p.0, ptr %p.1) {
start:
  %0 = getelementptr inbounds nuw i8, ptr %p.1, i64 8
  %1 = load i64, ptr %0, align 8, !range !3, !invariant.load !4
  %2 = getelementptr inbounds nuw i8, ptr %p.1, i64 16
  %3 = load i64, ptr %2, align 8, !range !5, !invariant.load !4
  %4 = tail call i64 @llvm.umax.i64(i64 %3, i64 4)
  %5 = add nuw i64 %1, 11
  %6 = add i64 %5, %4
  %7 = sub i64 0, %4
  %8 = and i64 %6, %7
  %_0 = icmp eq i64 %8, 0
  ret i1 %_0
}
```

`Foo<dyn Debug>` — after:

```llvm
define noundef zeroext i1 @demo(ptr %p.0, ptr %p.1) {
start:
  ret i1 false
}
```

`Foo<[u8]>` — before:

```llvm
define noundef zeroext i1 @demo_lessalignedslice(ptr %p.0, i64 %p.1) {
start:
  %0 = add i64 %p.1, 15
  %_0 = icmp ult i64 %0, 4
  ret i1 %_0
}
```

`Foo<[u8]>` — after:

```llvm
define noundef zeroext i1 @demo_lessalignedslice(ptr %p.0, i64 %p.1) {
start:
  ret i1 false
}
```

### Changes:

- `compiler/rustc_codegen_ssa/src/size_of_val.rs`: `add` → `unchecked_suadd` (NUW+NSW) on `offset + unsized_size`; add `assume(full_size ≥ unrounded_size)`.
- `tests/codegen-llvm/dst-size-of-val-not-zst.rs`: new codegen test verifying `size_of_val == 0` folds to `ret i1 false` for `Foo<dyn Debug>`, `Foo<[u8]>`, and `Foo<[i32]>`.

Fixes rust-lang#152788.
…usize, r=scottmcm

`Alignment`: move from `ptr` to `mem` and rename `as_nonzero` to `as_nonzero_usize`

- tracking issue: rust-lang#102070
- split off from rust-lang#153261
Pass -pg to linker when using -Zinstrument-mcount

This selects a slightly different crt on gnu targets which enables the profiler within glibc.

This makes using gprof a little easier with Rust binaries. Otherwise, rustc must be passed `-Clink-args=-pg` to ensure the correct startup code is linked.
…rray-ice, r=chenyukang

Remove divergence check from check_expr_array

Fixes rust-lang#153695.

`check_expr_array` currently assumes it should only be entered with` self.diverges == Diverges::Maybe`, but that assumption does not appear to hold in all valid cases. A never-pattern parameter can seed a function or closure body with inherited `Diverges::Always`, and exprs in that body are still typecked.
move many tests out of `ui/unsafe`

`ui/unsafe` is a pretty big and generic directory. This PR moves some tests from it to `ui/union` and some others to a new `rustc_layout_scalar_valid_range` directory.
r? @Kivooeo
…ath, r=davidtwco

Suggest fully qualified path on method name collision

Provide suggestion for using a fully qualified path when method names collide between traits and inherent impl.

```
error[E0061]: this method takes 0 arguments but 1 argument was supplied
  --> $DIR/shadowed-intrinsic-method.rs:20:7
   |
LL |     a.borrow(());
   |       ^^^^^^ -- unexpected argument of type `()`
   |
note: the `borrow` call is resolved to the method in `std::borrow::Borrow`, shadowing the method of the same name on the inherent impl for `A`
  --> $DIR/shadowed-intrinsic-method.rs:20:7
   |
LL | use std::borrow::Borrow;
   |     ------------------- `std::borrow::Borrow` imported here
...
LL |     a.borrow(());
   |       ^^^^^^ refers to `std::borrow::Borrow::borrow`
note: method defined here
  --> $SRC_DIR/core/src/borrow.rs:LL:COL
help: you might have meant to call the other method; you can use the fully-qualified path to call it explicitly
   |
LL -     a.borrow(());
LL +     A::borrow(&mut a, ());
   |
help: remove the extra argument
   |
LL -     a.borrow(());
LL +     a.borrow();
   |
```

Fix rust-lang#54103.
simd_add/sub/mul/neg: document overflow behavior

`simd_neg` had an odd comment about overflow not being UB, without saying what the behavior is instead. Replace that by just saying this uses wrapping arithmetic, and add the same for add/sub/mul. div/rem are already documented to cause UB on div-by-zero and min-div-by-minus-one, and shl/shr cause UB on too large shift amounts.
…r=wesleywiser

Change "error finalizing incremental compilation" text and emit it as a note, not a warning

As mentioned in rust-lang#151181 (comment) and rust-lang#151181 (comment) the current message could be improved:

1. Right now it displays as "warning: error ..." which is confusing (is it an error or a warning)
2. It doesn't give the user a clear indication of what the consequences are
3. The _current_ build is successful. The _next_ build might be slower

The new message is now

```text
note: did not finalize incremental compilation session directory ...
  |
  = help: the next build will not be able to reuse work from this compilation
```

I started a zulip thread [#t-compiler/incremental > Ergonomics of "error finalizing incremental session"](https://rust-lang.zulipchat.com/#narrow/channel/241847-t-compiler.2Fincremental/topic/Ergonomics.20of.20.22error.20finalizing.20incremental.20session.22/with/580191447)
…roup, r=jieyouxu

Create GPU target notification group

Creating the notification group for the newly created GPU target (see [mcp#960](https://rust-lang.zulipchat.com/#narrow/channel/233931-t-compiler.2Fmajor-changes/topic/Create.20a.20GPU.20notification.20group.20compiler-team.23960/near/568629680))

I'm following these [steps](rust-lang#133334).

(feel free to suggest a better wording)

r? @jieyouxu
@rust-bors rust-bors bot added the rollup A PR which is a rollup label Mar 26, 2026
@rustbot rustbot added A-meta Area: Issues & PRs about the rust-lang/rust repository itself A-run-make Area: port run-make Makefiles to rmake.rs labels Mar 26, 2026
@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue. labels Mar 26, 2026
@JonathanBrouwer
Copy link
Contributor Author

@bors r+ rollup=never p=5

@rust-bors
Copy link
Contributor

rust-bors bot commented Mar 26, 2026

📌 Commit 0a50bb0 has been approved by JonathanBrouwer

It is now in the queue for this repository.

@rust-bors rust-bors bot added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Mar 26, 2026
@JonathanBrouwer
Copy link
Contributor Author

Trying commonly failed jobs
@bors try jobs=test-various,x86_64-gnu-aux,x86_64-gnu-llvm-21-3,x86_64-msvc-1,aarch64-apple,x86_64-mingw-1

@rust-bors

This comment has been minimized.

rust-bors bot pushed a commit that referenced this pull request Mar 26, 2026
Rollup of 9 pull requests


try-job: test-various
try-job: x86_64-gnu-aux
try-job: x86_64-gnu-llvm-21-3
try-job: x86_64-msvc-1
try-job: aarch64-apple
try-job: x86_64-mingw-1
@rust-log-analyzer
Copy link
Collaborator

The job x86_64-gnu-llvm-21-3 failed! Check out the build log: (web) (plain enhanced) (plain)

Click to see the possible cause of the failure (guessed by this bot)
------FileCheck stderr------------------------------
/checkout/tests/codegen-llvm/dst-vtable-align-nonzero.rs:41:18: error: CURRENT-NOT: excluded string found in input
 // CURRENT-NOT: icmp
                 ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/dst-vtable-align-nonzero.CURRENT/dst-vtable-align-nonzero.ll:16:7: note: found here
 %7 = icmp ugt i64 %6, %1
      ^~~~
/checkout/tests/codegen-llvm/dst-vtable-align-nonzero.rs:66:12: error: CHECK: expected string not found in input
 // CHECK: {{%[0-9]+}} = load [[USIZE]], {{.+}} !range [[RANGE_META]]
           ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/dst-vtable-align-nonzero.CURRENT/dst-vtable-align-nonzero.ll:48:73: note: scanning from here
define noundef range(i64 1, 536870913) i64 @align_load_from_align_of_val(ptr noundef nonnull readnone captures(none) %x.0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(32) %x.1) unnamed_addr #1 {
                                                                        ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/dst-vtable-align-nonzero.CURRENT/dst-vtable-align-nonzero.ll:48:73: note: with "USIZE" equal to "i64"
define noundef range(i64 1, 536870913) i64 @align_load_from_align_of_val(ptr noundef nonnull readnone captures(none) %x.0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(32) %x.1) unnamed_addr #1 {
                                                                        ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/dst-vtable-align-nonzero.CURRENT/dst-vtable-align-nonzero.ll:48:73: note: with "RANGE_META" equal to "!3"
define noundef range(i64 1, 536870913) i64 @align_load_from_align_of_val(ptr noundef nonnull readnone captures(none) %x.0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(32) %x.1) unnamed_addr #1 {
                                                                        ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/dst-vtable-align-nonzero.CURRENT/dst-vtable-align-nonzero.ll:51:14: note: possible intended match here
 %1 = load i64, ptr %0, align 8, !range !5, !invariant.load !4
             ^
/checkout/tests/codegen-llvm/dst-vtable-align-nonzero.rs:74:12: error: CHECK: expected string not found in input
 // CHECK: {{%[0-9]+}} = load [[USIZE]], {{.+}} !range [[RANGE_META]]
           ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/dst-vtable-align-nonzero.CURRENT/dst-vtable-align-nonzero.ll:56:83: note: scanning from here
define noundef range(i64 1, 536870913) i64 @align_load_from_vtable_align_intrinsic(ptr noundef nonnull readnone captures(none) %x.0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(32) %x.1) unnamed_addr #1 {
                                                                                  ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/dst-vtable-align-nonzero.CURRENT/dst-vtable-align-nonzero.ll:56:83: note: with "USIZE" equal to "i64"
define noundef range(i64 1, 536870913) i64 @align_load_from_vtable_align_intrinsic(ptr noundef nonnull readnone captures(none) %x.0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(32) %x.1) unnamed_addr #1 {
                                                                                  ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/dst-vtable-align-nonzero.CURRENT/dst-vtable-align-nonzero.ll:56:83: note: with "RANGE_META" equal to "!3"
define noundef range(i64 1, 536870913) i64 @align_load_from_vtable_align_intrinsic(ptr noundef nonnull readnone captures(none) %x.0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(32) %x.1) unnamed_addr #1 {
                                                                                  ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/dst-vtable-align-nonzero.CURRENT/dst-vtable-align-nonzero.ll:59:14: note: possible intended match here
 %1 = load i64, ptr %0, align 8, !range !5, !invariant.load !4
             ^

Input file: /checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/dst-vtable-align-nonzero.CURRENT/dst-vtable-align-nonzero.ll
Check file: /checkout/tests/codegen-llvm/dst-vtable-align-nonzero.rs

-dump-input=help explains the following input dump.

Input was:
<<<<<<
            1: ; ModuleID = 'dst_vtable_align_nonzero.1d02fe928c826549-cgu.0' 
            2: source_filename = "dst_vtable_align_nonzero.1d02fe928c826549-cgu.0" 
            3: target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" 
            4: target triple = "x86_64-unknown-linux-gnu" 
            5:  
            6: ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read, inaccessiblemem: write) uwtable 
            7: define { ptr, ptr } @eliminates_runtime_check_when_align_1(ptr noundef nonnull %x.0, ptr noalias noundef readonly align 8 captures(address, read_provenance) dereferenceable(32) %x.1) unnamed_addr #0 { 
            8: start: 
            9:  %0 = getelementptr inbounds nuw i8, ptr %x.1, i64 8 
           10:  %1 = load i64, ptr %0, align 8, !range !3, !invariant.load !4 
           11:  %2 = getelementptr inbounds nuw i8, ptr %x.1, i64 16 
           12:  %3 = load i64, ptr %2, align 8, !range !5, !invariant.load !4 
           13:  %4 = add nuw i64 %3, %1 
           14:  %5 = sub nsw i64 0, %3 
           15:  %6 = and i64 %4, %5 
           16:  %7 = icmp ugt i64 %6, %1 
not:41               !~~~                 error: no match expected
           17:  tail call void @llvm.assume(i1 %7) 
           18:  %_0.0 = getelementptr inbounds nuw i8, ptr %x.0, i64 %3 
           19:  %8 = insertvalue { ptr, ptr } poison, ptr %_0.0, 0 
           20:  %9 = insertvalue { ptr, ptr } %8, ptr %x.1, 1 
           21:  ret { ptr, ptr } %9 
           22: } 
           23:  
           24: ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read, inaccessiblemem: write) uwtable 
           25: define { ptr, ptr } @does_not_eliminate_runtime_check_when_align_2(ptr noundef nonnull align 2 %x.0, ptr noalias noundef readonly align 8 captures(address, read_provenance) dereferenceable(32) %x.1) unnamed_addr #0 { 
           26: start: 
           27:  %0 = getelementptr inbounds nuw i8, ptr %x.1, i64 8 
           28:  %1 = load i64, ptr %0, align 8, !range !3, !invariant.load !4 
           29:  %2 = getelementptr inbounds nuw i8, ptr %x.1, i64 16 
           30:  %3 = load i64, ptr %2, align 8, !range !5, !invariant.load !4 
           31:  %4 = tail call i64 @llvm.umax.i64(i64 %3, i64 2) 
           32:  %5 = add nuw nsw i64 %1, 2 
           33:  %6 = add nsw i64 %4, -1 
           34:  %7 = add nuw i64 %6, %5 
           35:  %8 = sub nsw i64 0, %4 
           36:  %9 = and i64 %7, %8 
           37:  %10 = icmp uge i64 %9, %5 
           38:  tail call void @llvm.assume(i1 %10) 
           39:  %11 = and i64 %6, -2 
           40:  %12 = getelementptr inbounds nuw i8, ptr %x.0, i64 %11 
           41:  %_0.0 = getelementptr inbounds nuw i8, ptr %12, i64 2 
           42:  %13 = insertvalue { ptr, ptr } poison, ptr %_0.0, 0 
           43:  %14 = insertvalue { ptr, ptr } %13, ptr %x.1, 1 
           44:  ret { ptr, ptr } %14 
           45: } 
           46:  
           47: ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable 
           48: define noundef range(i64 1, 536870913) i64 @align_load_from_align_of_val(ptr noundef nonnull readnone captures(none) %x.0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(32) %x.1) unnamed_addr #1 { 
check:66'0                                                                             X~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ error: no match found
check:66'1                                                                                                                                                                                                                                 with "USIZE" equal to "i64"
check:66'2                                                                                                                                                                                                                                 with "RANGE_META" equal to "!3"
           49: start: 
check:66'0     ~~~~~~~
           50:  %0 = getelementptr inbounds nuw i8, ptr %x.1, i64 16 
check:66'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           51:  %1 = load i64, ptr %0, align 8, !range !5, !invariant.load !4 
check:66'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:66'3                  ?                                                  possible intended match
           52:  ret i64 %1 
check:66'0     ~~~~~~~~~~~~
           53: } 
check:66'0     ~~
           54:  
check:66'0     ~
           55: ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable 
check:66'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           56: define noundef range(i64 1, 536870913) i64 @align_load_from_vtable_align_intrinsic(ptr noundef nonnull readnone captures(none) %x.0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(32) %x.1) unnamed_addr #1 { 
check:66'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:74'0                                                                                       X~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ error: no match found
check:74'1                                                                                                                                                                                                                                           with "USIZE" equal to "i64"
check:74'2                                                                                                                                                                                                                                           with "RANGE_META" equal to "!3"
           57: start: 
check:74'0     ~~~~~~~
           58:  %0 = getelementptr inbounds nuw i8, ptr %x.1, i64 16 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           59:  %1 = load i64, ptr %0, align 8, !range !5, !invariant.load !4 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:74'3                  ?                                                  possible intended match
           60:  ret i64 %1 
check:74'0     ~~~~~~~~~~~~
           61: } 
check:74'0     ~~
           62:  
check:74'0     ~
           63: ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           64: declare void @llvm.assume(i1 noundef) #2 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           65:  
check:74'0     ~
           66: ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           67: declare i64 @llvm.umax.i64(i64, i64) #3 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           68:  
check:74'0     ~
           69: attributes #0 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read, inaccessiblemem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           70: attributes #1 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           71: attributes #2 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           72: attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           73:  
check:74'0     ~
           74: !llvm.module.flags = !{!0, !1} 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           75: !llvm.ident = !{!2} 
check:74'0     ~~~~~~~~~~~~~~~~~~~~
           76:  
check:74'0     ~
           77: !0 = !{i32 8, !"PIC Level", i32 2} 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           78: !1 = !{i32 2, !"RtLibUseGOT", i32 1} 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           79: !2 = !{!"rustc version 1.96.0-nightly (4411a486a 2026-03-26)"} 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           80: !3 = !{i64 0, i64 -9223372036854775808} 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           81: !4 = !{} 
check:74'0     ~~~~~~~~~
           82: !5 = !{i64 1, i64 536870913} 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>>>>>

------------------------------------------

error in revision `CURRENT`: verification with 'FileCheck' failed
status: exit status: 1
command: "/usr/lib/llvm-21/bin/FileCheck" "--input-file" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/dst-vtable-align-nonzero.CURRENT/dst-vtable-align-nonzero.ll" "/checkout/tests/codegen-llvm/dst-vtable-align-nonzero.rs" "--check-prefix=CHECK" "--check-prefix" "CURRENT" "--allow-unused-prefixes" "--dump-input-context" "100"
stdout: none
--- stderr -------------------------------
/checkout/tests/codegen-llvm/dst-vtable-align-nonzero.rs:41:18: error: CURRENT-NOT: excluded string found in input
 // CURRENT-NOT: icmp
                 ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/dst-vtable-align-nonzero.CURRENT/dst-vtable-align-nonzero.ll:16:7: note: found here
 %7 = icmp ugt i64 %6, %1
      ^~~~
/checkout/tests/codegen-llvm/dst-vtable-align-nonzero.rs:66:12: error: CHECK: expected string not found in input
 // CHECK: {{%[0-9]+}} = load [[USIZE]], {{.+}} !range [[RANGE_META]]
           ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/dst-vtable-align-nonzero.CURRENT/dst-vtable-align-nonzero.ll:48:73: note: scanning from here
define noundef range(i64 1, 536870913) i64 @align_load_from_align_of_val(ptr noundef nonnull readnone captures(none) %x.0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(32) %x.1) unnamed_addr #1 {
                                                                        ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/dst-vtable-align-nonzero.CURRENT/dst-vtable-align-nonzero.ll:48:73: note: with "USIZE" equal to "i64"
define noundef range(i64 1, 536870913) i64 @align_load_from_align_of_val(ptr noundef nonnull readnone captures(none) %x.0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(32) %x.1) unnamed_addr #1 {
                                                                        ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/dst-vtable-align-nonzero.CURRENT/dst-vtable-align-nonzero.ll:48:73: note: with "RANGE_META" equal to "!3"
define noundef range(i64 1, 536870913) i64 @align_load_from_align_of_val(ptr noundef nonnull readnone captures(none) %x.0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(32) %x.1) unnamed_addr #1 {
                                                                        ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/dst-vtable-align-nonzero.CURRENT/dst-vtable-align-nonzero.ll:51:14: note: possible intended match here
 %1 = load i64, ptr %0, align 8, !range !5, !invariant.load !4
             ^
/checkout/tests/codegen-llvm/dst-vtable-align-nonzero.rs:74:12: error: CHECK: expected string not found in input
 // CHECK: {{%[0-9]+}} = load [[USIZE]], {{.+}} !range [[RANGE_META]]
           ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/dst-vtable-align-nonzero.CURRENT/dst-vtable-align-nonzero.ll:56:83: note: scanning from here
define noundef range(i64 1, 536870913) i64 @align_load_from_vtable_align_intrinsic(ptr noundef nonnull readnone captures(none) %x.0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(32) %x.1) unnamed_addr #1 {
                                                                                  ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/dst-vtable-align-nonzero.CURRENT/dst-vtable-align-nonzero.ll:56:83: note: with "USIZE" equal to "i64"
define noundef range(i64 1, 536870913) i64 @align_load_from_vtable_align_intrinsic(ptr noundef nonnull readnone captures(none) %x.0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(32) %x.1) unnamed_addr #1 {
                                                                                  ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/dst-vtable-align-nonzero.CURRENT/dst-vtable-align-nonzero.ll:56:83: note: with "RANGE_META" equal to "!3"
define noundef range(i64 1, 536870913) i64 @align_load_from_vtable_align_intrinsic(ptr noundef nonnull readnone captures(none) %x.0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(32) %x.1) unnamed_addr #1 {
                                                                                  ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/dst-vtable-align-nonzero.CURRENT/dst-vtable-align-nonzero.ll:59:14: note: possible intended match here
 %1 = load i64, ptr %0, align 8, !range !5, !invariant.load !4
             ^

Input file: /checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/dst-vtable-align-nonzero.CURRENT/dst-vtable-align-nonzero.ll
Check file: /checkout/tests/codegen-llvm/dst-vtable-align-nonzero.rs

-dump-input=help explains the following input dump.

Input was:
<<<<<<
            1: ; ModuleID = 'dst_vtable_align_nonzero.1d02fe928c826549-cgu.0' 
            2: source_filename = "dst_vtable_align_nonzero.1d02fe928c826549-cgu.0" 
            3: target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" 
            4: target triple = "x86_64-unknown-linux-gnu" 
            5:  
            6: ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read, inaccessiblemem: write) uwtable 
            7: define { ptr, ptr } @eliminates_runtime_check_when_align_1(ptr noundef nonnull %x.0, ptr noalias noundef readonly align 8 captures(address, read_provenance) dereferenceable(32) %x.1) unnamed_addr #0 { 
            8: start: 
            9:  %0 = getelementptr inbounds nuw i8, ptr %x.1, i64 8 
           10:  %1 = load i64, ptr %0, align 8, !range !3, !invariant.load !4 
           11:  %2 = getelementptr inbounds nuw i8, ptr %x.1, i64 16 
           12:  %3 = load i64, ptr %2, align 8, !range !5, !invariant.load !4 
           13:  %4 = add nuw i64 %3, %1 
           14:  %5 = sub nsw i64 0, %3 
           15:  %6 = and i64 %4, %5 
           16:  %7 = icmp ugt i64 %6, %1 
not:41               !~~~                 error: no match expected
           17:  tail call void @llvm.assume(i1 %7) 
           18:  %_0.0 = getelementptr inbounds nuw i8, ptr %x.0, i64 %3 
           19:  %8 = insertvalue { ptr, ptr } poison, ptr %_0.0, 0 
           20:  %9 = insertvalue { ptr, ptr } %8, ptr %x.1, 1 
           21:  ret { ptr, ptr } %9 
           22: } 
           23:  
           24: ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read, inaccessiblemem: write) uwtable 
           25: define { ptr, ptr } @does_not_eliminate_runtime_check_when_align_2(ptr noundef nonnull align 2 %x.0, ptr noalias noundef readonly align 8 captures(address, read_provenance) dereferenceable(32) %x.1) unnamed_addr #0 { 
           26: start: 
           27:  %0 = getelementptr inbounds nuw i8, ptr %x.1, i64 8 
           28:  %1 = load i64, ptr %0, align 8, !range !3, !invariant.load !4 
           29:  %2 = getelementptr inbounds nuw i8, ptr %x.1, i64 16 
           30:  %3 = load i64, ptr %2, align 8, !range !5, !invariant.load !4 
           31:  %4 = tail call i64 @llvm.umax.i64(i64 %3, i64 2) 
           32:  %5 = add nuw nsw i64 %1, 2 
           33:  %6 = add nsw i64 %4, -1 
           34:  %7 = add nuw i64 %6, %5 
           35:  %8 = sub nsw i64 0, %4 
           36:  %9 = and i64 %7, %8 
           37:  %10 = icmp uge i64 %9, %5 
           38:  tail call void @llvm.assume(i1 %10) 
           39:  %11 = and i64 %6, -2 
           40:  %12 = getelementptr inbounds nuw i8, ptr %x.0, i64 %11 
           41:  %_0.0 = getelementptr inbounds nuw i8, ptr %12, i64 2 
           42:  %13 = insertvalue { ptr, ptr } poison, ptr %_0.0, 0 
           43:  %14 = insertvalue { ptr, ptr } %13, ptr %x.1, 1 
           44:  ret { ptr, ptr } %14 
           45: } 
           46:  
           47: ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable 
           48: define noundef range(i64 1, 536870913) i64 @align_load_from_align_of_val(ptr noundef nonnull readnone captures(none) %x.0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(32) %x.1) unnamed_addr #1 { 
check:66'0                                                                             X~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ error: no match found
check:66'1                                                                                                                                                                                                                                 with "USIZE" equal to "i64"
check:66'2                                                                                                                                                                                                                                 with "RANGE_META" equal to "!3"
           49: start: 
check:66'0     ~~~~~~~
           50:  %0 = getelementptr inbounds nuw i8, ptr %x.1, i64 16 
check:66'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           51:  %1 = load i64, ptr %0, align 8, !range !5, !invariant.load !4 
check:66'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:66'3                  ?                                                  possible intended match
           52:  ret i64 %1 
check:66'0     ~~~~~~~~~~~~
           53: } 
check:66'0     ~~
           54:  
check:66'0     ~
           55: ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable 
check:66'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           56: define noundef range(i64 1, 536870913) i64 @align_load_from_vtable_align_intrinsic(ptr noundef nonnull readnone captures(none) %x.0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(32) %x.1) unnamed_addr #1 { 
check:66'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:74'0                                                                                       X~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ error: no match found
check:74'1                                                                                                                                                                                                                                           with "USIZE" equal to "i64"
check:74'2                                                                                                                                                                                                                                           with "RANGE_META" equal to "!3"
           57: start: 
check:74'0     ~~~~~~~
           58:  %0 = getelementptr inbounds nuw i8, ptr %x.1, i64 16 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           59:  %1 = load i64, ptr %0, align 8, !range !5, !invariant.load !4 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:74'3                  ?                                                  possible intended match
           60:  ret i64 %1 
check:74'0     ~~~~~~~~~~~~
           61: } 
check:74'0     ~~
           62:  
check:74'0     ~
           63: ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           64: declare void @llvm.assume(i1 noundef) #2 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           65:  
check:74'0     ~
           66: ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           67: declare i64 @llvm.umax.i64(i64, i64) #3 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           68:  
check:74'0     ~
           69: attributes #0 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read, inaccessiblemem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           70: attributes #1 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           71: attributes #2 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           72: attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           73:  
check:74'0     ~
           74: !llvm.module.flags = !{!0, !1} 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           75: !llvm.ident = !{!2} 
check:74'0     ~~~~~~~~~~~~~~~~~~~~
           76:  
check:74'0     ~
           77: !0 = !{i32 8, !"PIC Level", i32 2} 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           78: !1 = !{i32 2, !"RtLibUseGOT", i32 1} 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           79: !2 = !{!"rustc version 1.96.0-nightly (4411a486a 2026-03-26)"} 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           80: !3 = !{i64 0, i64 -9223372036854775808} 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           81: !4 = !{} 
check:74'0     ~~~~~~~~~
           82: !5 = !{i64 1, i64 536870913} 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>>>>>
------------------------------------------

---- [codegen] tests/codegen-llvm/dst-vtable-align-nonzero.rs#CURRENT stdout end ----

@rust-log-analyzer
Copy link
Collaborator

The job aarch64-gnu-llvm-21-1 failed! Check out the build log: (web) (plain enhanced) (plain)

Click to see the possible cause of the failure (guessed by this bot)
##[endgroup]
Executing "/scripts/stage_2_test_set1.sh"
+ /scripts/stage_2_test_set1.sh
+ '[' 1 == 1 ']'
+ echo 'PR_CI_JOB set; skipping tidy'
+ SKIP_TIDY='--skip tidy'
+ ../x.py --stage 2 test --skip tidy --skip compiler --skip src
PR_CI_JOB set; skipping tidy
##[group]Building bootstrap
    Finished `dev` profile [unoptimized] target(s) in 0.04s
##[endgroup]
---
------FileCheck stderr------------------------------
/checkout/tests/codegen-llvm/dst-vtable-align-nonzero.rs:41:18: error: CURRENT-NOT: excluded string found in input
 // CURRENT-NOT: icmp
                 ^
/checkout/obj/build/aarch64-unknown-linux-gnu/test/codegen-llvm/dst-vtable-align-nonzero.CURRENT/dst-vtable-align-nonzero.ll:16:7: note: found here
 %7 = icmp ugt i64 %6, %1
      ^~~~
/checkout/tests/codegen-llvm/dst-vtable-align-nonzero.rs:66:12: error: CHECK: expected string not found in input
 // CHECK: {{%[0-9]+}} = load [[USIZE]], {{.+}} !range [[RANGE_META]]
           ^
/checkout/obj/build/aarch64-unknown-linux-gnu/test/codegen-llvm/dst-vtable-align-nonzero.CURRENT/dst-vtable-align-nonzero.ll:48:73: note: scanning from here
define noundef range(i64 1, 536870913) i64 @align_load_from_align_of_val(ptr noundef nonnull readnone captures(none) %x.0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(32) %x.1) unnamed_addr #1 {
                                                                        ^
/checkout/obj/build/aarch64-unknown-linux-gnu/test/codegen-llvm/dst-vtable-align-nonzero.CURRENT/dst-vtable-align-nonzero.ll:48:73: note: with "USIZE" equal to "i64"
define noundef range(i64 1, 536870913) i64 @align_load_from_align_of_val(ptr noundef nonnull readnone captures(none) %x.0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(32) %x.1) unnamed_addr #1 {
                                                                        ^
/checkout/obj/build/aarch64-unknown-linux-gnu/test/codegen-llvm/dst-vtable-align-nonzero.CURRENT/dst-vtable-align-nonzero.ll:48:73: note: with "RANGE_META" equal to "!2"
define noundef range(i64 1, 536870913) i64 @align_load_from_align_of_val(ptr noundef nonnull readnone captures(none) %x.0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(32) %x.1) unnamed_addr #1 {
                                                                        ^
/checkout/obj/build/aarch64-unknown-linux-gnu/test/codegen-llvm/dst-vtable-align-nonzero.CURRENT/dst-vtable-align-nonzero.ll:51:14: note: possible intended match here
 %1 = load i64, ptr %0, align 8, !range !4, !invariant.load !3
             ^
/checkout/tests/codegen-llvm/dst-vtable-align-nonzero.rs:74:12: error: CHECK: expected string not found in input
 // CHECK: {{%[0-9]+}} = load [[USIZE]], {{.+}} !range [[RANGE_META]]
           ^
/checkout/obj/build/aarch64-unknown-linux-gnu/test/codegen-llvm/dst-vtable-align-nonzero.CURRENT/dst-vtable-align-nonzero.ll:56:83: note: scanning from here
define noundef range(i64 1, 536870913) i64 @align_load_from_vtable_align_intrinsic(ptr noundef nonnull readnone captures(none) %x.0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(32) %x.1) unnamed_addr #1 {
                                                                                  ^
/checkout/obj/build/aarch64-unknown-linux-gnu/test/codegen-llvm/dst-vtable-align-nonzero.CURRENT/dst-vtable-align-nonzero.ll:56:83: note: with "USIZE" equal to "i64"
define noundef range(i64 1, 536870913) i64 @align_load_from_vtable_align_intrinsic(ptr noundef nonnull readnone captures(none) %x.0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(32) %x.1) unnamed_addr #1 {
                                                                                  ^
/checkout/obj/build/aarch64-unknown-linux-gnu/test/codegen-llvm/dst-vtable-align-nonzero.CURRENT/dst-vtable-align-nonzero.ll:56:83: note: with "RANGE_META" equal to "!2"
define noundef range(i64 1, 536870913) i64 @align_load_from_vtable_align_intrinsic(ptr noundef nonnull readnone captures(none) %x.0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(32) %x.1) unnamed_addr #1 {
                                                                                  ^
/checkout/obj/build/aarch64-unknown-linux-gnu/test/codegen-llvm/dst-vtable-align-nonzero.CURRENT/dst-vtable-align-nonzero.ll:59:14: note: possible intended match here
 %1 = load i64, ptr %0, align 8, !range !4, !invariant.load !3
             ^

Input file: /checkout/obj/build/aarch64-unknown-linux-gnu/test/codegen-llvm/dst-vtable-align-nonzero.CURRENT/dst-vtable-align-nonzero.ll
Check file: /checkout/tests/codegen-llvm/dst-vtable-align-nonzero.rs

-dump-input=help explains the following input dump.

Input was:
<<<<<<
            1: ; ModuleID = 'dst_vtable_align_nonzero.1d02fe928c826549-cgu.0' 
            2: source_filename = "dst_vtable_align_nonzero.1d02fe928c826549-cgu.0" 
            3: target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32" 
            4: target triple = "aarch64-unknown-linux-gnu" 
            5:  
            6: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read, inaccessiblemem: write) uwtable 
            7: define { ptr, ptr } @eliminates_runtime_check_when_align_1(ptr noundef nonnull %x.0, ptr noalias noundef readonly align 8 captures(address, read_provenance) dereferenceable(32) %x.1) unnamed_addr #0 { 
            8: start: 
            9:  %0 = getelementptr inbounds nuw i8, ptr %x.1, i64 8 
           10:  %1 = load i64, ptr %0, align 8, !range !2, !invariant.load !3 
           11:  %2 = getelementptr inbounds nuw i8, ptr %x.1, i64 16 
           12:  %3 = load i64, ptr %2, align 8, !range !4, !invariant.load !3 
           13:  %4 = add nuw i64 %3, %1 
           14:  %5 = sub nsw i64 0, %3 
           15:  %6 = and i64 %4, %5 
           16:  %7 = icmp ugt i64 %6, %1 
not:41               !~~~                 error: no match expected
           17:  tail call void @llvm.assume(i1 %7) 
           18:  %_0.0 = getelementptr inbounds nuw i8, ptr %x.0, i64 %3 
           19:  %8 = insertvalue { ptr, ptr } poison, ptr %_0.0, 0 
           20:  %9 = insertvalue { ptr, ptr } %8, ptr %x.1, 1 
           21:  ret { ptr, ptr } %9 
           22: } 
           23:  
           24: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read, inaccessiblemem: write) uwtable 
           25: define { ptr, ptr } @does_not_eliminate_runtime_check_when_align_2(ptr noundef nonnull align 2 %x.0, ptr noalias noundef readonly align 8 captures(address, read_provenance) dereferenceable(32) %x.1) unnamed_addr #0 { 
           26: start: 
           27:  %0 = getelementptr inbounds nuw i8, ptr %x.1, i64 8 
           28:  %1 = load i64, ptr %0, align 8, !range !2, !invariant.load !3 
           29:  %2 = getelementptr inbounds nuw i8, ptr %x.1, i64 16 
           30:  %3 = load i64, ptr %2, align 8, !range !4, !invariant.load !3 
           31:  %4 = tail call i64 @llvm.umax.i64(i64 %3, i64 2) 
           32:  %5 = add nuw nsw i64 %1, 2 
           33:  %6 = add nsw i64 %4, -1 
           34:  %7 = add nuw i64 %6, %5 
           35:  %8 = sub nsw i64 0, %4 
           36:  %9 = and i64 %7, %8 
           37:  %10 = icmp uge i64 %9, %5 
           38:  tail call void @llvm.assume(i1 %10) 
           39:  %11 = and i64 %6, -2 
           40:  %12 = getelementptr inbounds nuw i8, ptr %x.0, i64 %11 
           41:  %_0.0 = getelementptr inbounds nuw i8, ptr %12, i64 2 
           42:  %13 = insertvalue { ptr, ptr } poison, ptr %_0.0, 0 
           43:  %14 = insertvalue { ptr, ptr } %13, ptr %x.1, 1 
           44:  ret { ptr, ptr } %14 
           45: } 
           46:  
           47: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable 
           48: define noundef range(i64 1, 536870913) i64 @align_load_from_align_of_val(ptr noundef nonnull readnone captures(none) %x.0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(32) %x.1) unnamed_addr #1 { 
check:66'0                                                                             X~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ error: no match found
check:66'1                                                                                                                                                                                                                                 with "USIZE" equal to "i64"
check:66'2                                                                                                                                                                                                                                 with "RANGE_META" equal to "!2"
           49: start: 
check:66'0     ~~~~~~~
           50:  %0 = getelementptr inbounds nuw i8, ptr %x.1, i64 16 
check:66'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           51:  %1 = load i64, ptr %0, align 8, !range !4, !invariant.load !3 
check:66'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:66'3                  ?                                                  possible intended match
           52:  ret i64 %1 
check:66'0     ~~~~~~~~~~~~
           53: } 
check:66'0     ~~
           54:  
check:66'0     ~
           55: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable 
check:66'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           56: define noundef range(i64 1, 536870913) i64 @align_load_from_vtable_align_intrinsic(ptr noundef nonnull readnone captures(none) %x.0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(32) %x.1) unnamed_addr #1 { 
check:66'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:74'0                                                                                       X~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ error: no match found
check:74'1                                                                                                                                                                                                                                           with "USIZE" equal to "i64"
check:74'2                                                                                                                                                                                                                                           with "RANGE_META" equal to "!2"
           57: start: 
check:74'0     ~~~~~~~
           58:  %0 = getelementptr inbounds nuw i8, ptr %x.1, i64 16 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           59:  %1 = load i64, ptr %0, align 8, !range !4, !invariant.load !3 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:74'3                  ?                                                  possible intended match
           60:  ret i64 %1 
check:74'0     ~~~~~~~~~~~~
           61: } 
check:74'0     ~~
           62:  
check:74'0     ~
           63: ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           64: declare void @llvm.assume(i1 noundef) #2 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           65:  
check:74'0     ~
           66: ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           67: declare i64 @llvm.umax.i64(i64, i64) #3 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           68:  
check:74'0     ~
           69: attributes #0 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read, inaccessiblemem: write) uwtable "frame-pointer"="non-leaf" "probe-stack"="inline-asm" "target-cpu"="generic" "target-features"="+v8a,+outline-atomics" } 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           70: attributes #1 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable "frame-pointer"="non-leaf" "probe-stack"="inline-asm" "target-cpu"="generic" "target-features"="+v8a,+outline-atomics" } 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           71: attributes #2 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           72: attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           73:  
check:74'0     ~
           74: !llvm.module.flags = !{!0} 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
           75: !llvm.ident = !{!1} 
check:74'0     ~~~~~~~~~~~~~~~~~~~~
           76:  
check:74'0     ~
           77: !0 = !{i32 8, !"PIC Level", i32 2} 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           78: !1 = !{!"rustc version 1.96.0-nightly (b5b7c8efc 2026-03-26)"} 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           79: !2 = !{i64 0, i64 -9223372036854775808} 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           80: !3 = !{} 
check:74'0     ~~~~~~~~~
           81: !4 = !{i64 1, i64 536870913} 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>>>>>

------------------------------------------

error in revision `CURRENT`: verification with 'FileCheck' failed
status: exit status: 1
command: "/usr/lib/llvm-21/bin/FileCheck" "--input-file" "/checkout/obj/build/aarch64-unknown-linux-gnu/test/codegen-llvm/dst-vtable-align-nonzero.CURRENT/dst-vtable-align-nonzero.ll" "/checkout/tests/codegen-llvm/dst-vtable-align-nonzero.rs" "--check-prefix=CHECK" "--check-prefix" "CURRENT" "--allow-unused-prefixes" "--dump-input-context" "100"
stdout: none
--- stderr -------------------------------
/checkout/tests/codegen-llvm/dst-vtable-align-nonzero.rs:41:18: error: CURRENT-NOT: excluded string found in input
 // CURRENT-NOT: icmp
                 ^
/checkout/obj/build/aarch64-unknown-linux-gnu/test/codegen-llvm/dst-vtable-align-nonzero.CURRENT/dst-vtable-align-nonzero.ll:16:7: note: found here
 %7 = icmp ugt i64 %6, %1
      ^~~~
/checkout/tests/codegen-llvm/dst-vtable-align-nonzero.rs:66:12: error: CHECK: expected string not found in input
 // CHECK: {{%[0-9]+}} = load [[USIZE]], {{.+}} !range [[RANGE_META]]
           ^
/checkout/obj/build/aarch64-unknown-linux-gnu/test/codegen-llvm/dst-vtable-align-nonzero.CURRENT/dst-vtable-align-nonzero.ll:48:73: note: scanning from here
define noundef range(i64 1, 536870913) i64 @align_load_from_align_of_val(ptr noundef nonnull readnone captures(none) %x.0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(32) %x.1) unnamed_addr #1 {
                                                                        ^
/checkout/obj/build/aarch64-unknown-linux-gnu/test/codegen-llvm/dst-vtable-align-nonzero.CURRENT/dst-vtable-align-nonzero.ll:48:73: note: with "USIZE" equal to "i64"
define noundef range(i64 1, 536870913) i64 @align_load_from_align_of_val(ptr noundef nonnull readnone captures(none) %x.0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(32) %x.1) unnamed_addr #1 {
                                                                        ^
/checkout/obj/build/aarch64-unknown-linux-gnu/test/codegen-llvm/dst-vtable-align-nonzero.CURRENT/dst-vtable-align-nonzero.ll:48:73: note: with "RANGE_META" equal to "!2"
define noundef range(i64 1, 536870913) i64 @align_load_from_align_of_val(ptr noundef nonnull readnone captures(none) %x.0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(32) %x.1) unnamed_addr #1 {
                                                                        ^
/checkout/obj/build/aarch64-unknown-linux-gnu/test/codegen-llvm/dst-vtable-align-nonzero.CURRENT/dst-vtable-align-nonzero.ll:51:14: note: possible intended match here
 %1 = load i64, ptr %0, align 8, !range !4, !invariant.load !3
             ^
/checkout/tests/codegen-llvm/dst-vtable-align-nonzero.rs:74:12: error: CHECK: expected string not found in input
 // CHECK: {{%[0-9]+}} = load [[USIZE]], {{.+}} !range [[RANGE_META]]
           ^
/checkout/obj/build/aarch64-unknown-linux-gnu/test/codegen-llvm/dst-vtable-align-nonzero.CURRENT/dst-vtable-align-nonzero.ll:56:83: note: scanning from here
define noundef range(i64 1, 536870913) i64 @align_load_from_vtable_align_intrinsic(ptr noundef nonnull readnone captures(none) %x.0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(32) %x.1) unnamed_addr #1 {
                                                                                  ^
/checkout/obj/build/aarch64-unknown-linux-gnu/test/codegen-llvm/dst-vtable-align-nonzero.CURRENT/dst-vtable-align-nonzero.ll:56:83: note: with "USIZE" equal to "i64"
define noundef range(i64 1, 536870913) i64 @align_load_from_vtable_align_intrinsic(ptr noundef nonnull readnone captures(none) %x.0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(32) %x.1) unnamed_addr #1 {
                                                                                  ^
/checkout/obj/build/aarch64-unknown-linux-gnu/test/codegen-llvm/dst-vtable-align-nonzero.CURRENT/dst-vtable-align-nonzero.ll:56:83: note: with "RANGE_META" equal to "!2"
define noundef range(i64 1, 536870913) i64 @align_load_from_vtable_align_intrinsic(ptr noundef nonnull readnone captures(none) %x.0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(32) %x.1) unnamed_addr #1 {
                                                                                  ^
/checkout/obj/build/aarch64-unknown-linux-gnu/test/codegen-llvm/dst-vtable-align-nonzero.CURRENT/dst-vtable-align-nonzero.ll:59:14: note: possible intended match here
 %1 = load i64, ptr %0, align 8, !range !4, !invariant.load !3
             ^

Input file: /checkout/obj/build/aarch64-unknown-linux-gnu/test/codegen-llvm/dst-vtable-align-nonzero.CURRENT/dst-vtable-align-nonzero.ll
Check file: /checkout/tests/codegen-llvm/dst-vtable-align-nonzero.rs

-dump-input=help explains the following input dump.

Input was:
<<<<<<
            1: ; ModuleID = 'dst_vtable_align_nonzero.1d02fe928c826549-cgu.0' 
            2: source_filename = "dst_vtable_align_nonzero.1d02fe928c826549-cgu.0" 
            3: target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32" 
            4: target triple = "aarch64-unknown-linux-gnu" 
            5:  
            6: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read, inaccessiblemem: write) uwtable 
            7: define { ptr, ptr } @eliminates_runtime_check_when_align_1(ptr noundef nonnull %x.0, ptr noalias noundef readonly align 8 captures(address, read_provenance) dereferenceable(32) %x.1) unnamed_addr #0 { 
            8: start: 
            9:  %0 = getelementptr inbounds nuw i8, ptr %x.1, i64 8 
           10:  %1 = load i64, ptr %0, align 8, !range !2, !invariant.load !3 
           11:  %2 = getelementptr inbounds nuw i8, ptr %x.1, i64 16 
           12:  %3 = load i64, ptr %2, align 8, !range !4, !invariant.load !3 
           13:  %4 = add nuw i64 %3, %1 
           14:  %5 = sub nsw i64 0, %3 
           15:  %6 = and i64 %4, %5 
           16:  %7 = icmp ugt i64 %6, %1 
not:41               !~~~                 error: no match expected
           17:  tail call void @llvm.assume(i1 %7) 
           18:  %_0.0 = getelementptr inbounds nuw i8, ptr %x.0, i64 %3 
           19:  %8 = insertvalue { ptr, ptr } poison, ptr %_0.0, 0 
           20:  %9 = insertvalue { ptr, ptr } %8, ptr %x.1, 1 
           21:  ret { ptr, ptr } %9 
           22: } 
           23:  
           24: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read, inaccessiblemem: write) uwtable 
           25: define { ptr, ptr } @does_not_eliminate_runtime_check_when_align_2(ptr noundef nonnull align 2 %x.0, ptr noalias noundef readonly align 8 captures(address, read_provenance) dereferenceable(32) %x.1) unnamed_addr #0 { 
           26: start: 
           27:  %0 = getelementptr inbounds nuw i8, ptr %x.1, i64 8 
           28:  %1 = load i64, ptr %0, align 8, !range !2, !invariant.load !3 
           29:  %2 = getelementptr inbounds nuw i8, ptr %x.1, i64 16 
           30:  %3 = load i64, ptr %2, align 8, !range !4, !invariant.load !3 
           31:  %4 = tail call i64 @llvm.umax.i64(i64 %3, i64 2) 
           32:  %5 = add nuw nsw i64 %1, 2 
           33:  %6 = add nsw i64 %4, -1 
           34:  %7 = add nuw i64 %6, %5 
           35:  %8 = sub nsw i64 0, %4 
           36:  %9 = and i64 %7, %8 
           37:  %10 = icmp uge i64 %9, %5 
           38:  tail call void @llvm.assume(i1 %10) 
           39:  %11 = and i64 %6, -2 
           40:  %12 = getelementptr inbounds nuw i8, ptr %x.0, i64 %11 
           41:  %_0.0 = getelementptr inbounds nuw i8, ptr %12, i64 2 
           42:  %13 = insertvalue { ptr, ptr } poison, ptr %_0.0, 0 
           43:  %14 = insertvalue { ptr, ptr } %13, ptr %x.1, 1 
           44:  ret { ptr, ptr } %14 
           45: } 
           46:  
           47: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable 
           48: define noundef range(i64 1, 536870913) i64 @align_load_from_align_of_val(ptr noundef nonnull readnone captures(none) %x.0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(32) %x.1) unnamed_addr #1 { 
check:66'0                                                                             X~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ error: no match found
check:66'1                                                                                                                                                                                                                                 with "USIZE" equal to "i64"
check:66'2                                                                                                                                                                                                                                 with "RANGE_META" equal to "!2"
           49: start: 
check:66'0     ~~~~~~~
           50:  %0 = getelementptr inbounds nuw i8, ptr %x.1, i64 16 
check:66'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           51:  %1 = load i64, ptr %0, align 8, !range !4, !invariant.load !3 
check:66'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:66'3                  ?                                                  possible intended match
           52:  ret i64 %1 
check:66'0     ~~~~~~~~~~~~
           53: } 
check:66'0     ~~
           54:  
check:66'0     ~
           55: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable 
check:66'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           56: define noundef range(i64 1, 536870913) i64 @align_load_from_vtable_align_intrinsic(ptr noundef nonnull readnone captures(none) %x.0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(32) %x.1) unnamed_addr #1 { 
check:66'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:74'0                                                                                       X~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ error: no match found
check:74'1                                                                                                                                                                                                                                           with "USIZE" equal to "i64"
check:74'2                                                                                                                                                                                                                                           with "RANGE_META" equal to "!2"
           57: start: 
check:74'0     ~~~~~~~
           58:  %0 = getelementptr inbounds nuw i8, ptr %x.1, i64 16 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           59:  %1 = load i64, ptr %0, align 8, !range !4, !invariant.load !3 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:74'3                  ?                                                  possible intended match
           60:  ret i64 %1 
check:74'0     ~~~~~~~~~~~~
           61: } 
check:74'0     ~~
           62:  
check:74'0     ~
           63: ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           64: declare void @llvm.assume(i1 noundef) #2 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           65:  
check:74'0     ~
           66: ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           67: declare i64 @llvm.umax.i64(i64, i64) #3 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           68:  
check:74'0     ~
           69: attributes #0 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read, inaccessiblemem: write) uwtable "frame-pointer"="non-leaf" "probe-stack"="inline-asm" "target-cpu"="generic" "target-features"="+v8a,+outline-atomics" } 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           70: attributes #1 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable "frame-pointer"="non-leaf" "probe-stack"="inline-asm" "target-cpu"="generic" "target-features"="+v8a,+outline-atomics" } 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           71: attributes #2 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           72: attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           73:  
check:74'0     ~
           74: !llvm.module.flags = !{!0} 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
           75: !llvm.ident = !{!1} 
check:74'0     ~~~~~~~~~~~~~~~~~~~~
           76:  
check:74'0     ~
           77: !0 = !{i32 8, !"PIC Level", i32 2} 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           78: !1 = !{!"rustc version 1.96.0-nightly (b5b7c8efc 2026-03-26)"} 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           79: !2 = !{i64 0, i64 -9223372036854775808} 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           80: !3 = !{} 
check:74'0     ~~~~~~~~~
           81: !4 = !{i64 1, i64 536870913} 
check:74'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>>>>>
------------------------------------------

---- [codegen] tests/codegen-llvm/dst-vtable-align-nonzero.rs#CURRENT stdout end ----

@rust-bors rust-bors bot added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Mar 26, 2026
@rust-bors
Copy link
Contributor

rust-bors bot commented Mar 26, 2026

PR #152843, which is a member of this rollup, was unapproved.

This rollup was thus unapproved.

@rustbot rustbot removed the S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. label Mar 26, 2026
@rust-bors rust-bors bot added the S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. label Mar 26, 2026
@rust-bors
Copy link
Contributor

rust-bors bot commented Mar 26, 2026

💔 Test for 4411a48 failed: CI. Failed jobs:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-meta Area: Issues & PRs about the rust-lang/rust repository itself A-run-make Area: port run-make Makefiles to rmake.rs rollup A PR which is a rollup S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.