Skip to content

Rollup of 20 pull requests - #158798

Closed
JonathanBrouwer wants to merge 48 commits into
rust-lang:mainfrom
JonathanBrouwer:rollup-DS89hW9
Closed

Rollup of 20 pull requests#158798
JonathanBrouwer wants to merge 48 commits into
rust-lang:mainfrom
JonathanBrouwer:rollup-DS89hW9

Conversation

@JonathanBrouwer

Copy link
Copy Markdown
Member

Successful merges:

r? @ghost

Create a similar rollup

RalfJungand others added 30 commits May 3, 2026 10:05
The compiler is removing the `x86-softfloat` [1], thus temporarily add
a patch.
As usual, the patch will eventually make it to the Linux kernel so that
both sides are good.
Cc: Ralf Jung <post@ralfj.de>
Cc: Alice Ryhl <aliceryhl@google.com>
Link: rust-lang#157151 [1]
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
The auto-trait branch of the orphan check inspected the unexpanded self
type, so an impl whose self type was a free (lazy) type alias was
rejected even when the alias resolved to an otherwise valid nominal
type, e.g. `unsafe impl Sync for Alias {}` with `type Alias = Local;`.
Expand free alias types before classifying the self type, mirroring the
locality check above. Expansion still reveals genuinely problematic self
types (trait objects, opaque types, type parameters), so those keep
being rejected.
…s a standalone command
- error if RUSTC isn't set, which means it'll fall back to the
user-installed default (wrong)
- be more specific in `--bless` suggestions that they should use `x test
tidy`, not tidy directly.
for non-interactive cases, such as CI, this makes it easier to tell what
went wrong without having to interactively debug the problem.
Before this commit, `BlameConstraint` is a bit hard to understand at
first, because of its `ObligationCause` field. In practice,
`BlameConstraint` is just a slimmed down version of an
`OutlivesConstraint` from `Vec<OutlivesConstraint>`.
The artificial `ObligationCause` is only needed in one place. Rather
than having that exception polute the lower level analysis, bubble it up
as much as we can. That way, it becomes clearer what `BlameConstraint`
actually is.
For reference, `ObligationCause` was introdued by 93ab12e, but the
codebase looked quite different back then.
Porting the notes from the stable branch.
…back
Co-authored-by: Vin <betadelphini.py@gmail.com>
All call sites use a static `DropKind` value, and we already have a
dedicated named method for lints. Switch to only use dedicated methods for
consistency.
This enforces the invariant that `size_hint` should always return `(lower_bound(), upper_bound())`.
Leaving the trait in a better state than it previously was.
Co-Authored-By: Clar Fon <15850505+clarfonthey@users.noreply.github.com>
and just always show diffs by default.
not sure why you'd want to hide them.
…-Simulacrum
Add release notes for 1.96.1
Porting the notes from the stable branch.
…=Mark-Simulacrum
Implement `IntoIterator` for `[&[mut]] Box<[T; N], A>`
Revival of rust-lang#124108
@rust-borsrust-borsBot added the rollup A PR which is a rollup label Jul 5, 2026
@rustbotrustbot added A-CI Area: Our Github Actions CI A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. A-testsuite Area: The testsuite used to check the correctness of rustc A-tidy Area: The tidy tool S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-infra Relevant to the infrastructure 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. T-release Relevant to the release subteam, which will review and decide on the PR/issue. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. T-rustdoc-frontend Relevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output. labels Jul 5, 2026
@JonathanBrouwer

Copy link
Copy Markdown
MemberAuthor

@bors r+ rollup=never p=5

@rust-bors

rust-borsBot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

📌 Commit 136d18f has been approved by JonathanBrouwer

It is now in the queue for this repository.

@rust-borsrust-borsBot 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 Jul 5, 2026
@rust-bors

This comment has been minimized.

rust-borsBot pushed a commit that referenced this pull request Jul 5, 2026
…uwer
Rollup of 20 pull requests
Successful merges:
- #158692 (Add release notes for 1.96.1)
- #134021 (Implement `IntoIterator` for `[&[mut]] Box<[T; N], A>`)
- #155932 (MIR Call terminator: evaluate destination place before arguments)
- #155989 (Update `transmute_copy` to ub_checks and `?Sized`)
- #156777 (Add -Zautodiff_post_passes flag to limit which llvm passes to run after enzyme to make autodiff tests more robust)
- #157151 (JSON target specs: remove 'x86-softfloat' compatibility alias)
- #157835 (expand free alias types in the auto-trait orphan check)
- #157857 (Stabilize `#[my_macro] mod foo;` (part of `proc_macro_hygiene`))
- #158377 (add `-Zforce-intrinsic-fallback` flag)
- #158434 (delegation: refactor AST -> HIR lowering)
- #158552 (make some tidy errors around python easier to understand)
- #158624 (borrowck: Introduce BlameConstraint::to_obligation_cause_from_path())
- #158704 (Optimize `ArrayChunks::try_rfold` with `DoubleEndedIterator::next_chunk_back`)
- #158711 (library: Comment on libtest's dicey internal soundness)
- #158751 (rustdoc: Fix crash when trying to inline foreign item which cannot have attributes)
- #158539 (Move `SizeHint` and `IoHandle` to `core::io`)
- #158659 (refactor the normalization in `coerce_shared_info`)
- #158689 (resolver: don't use `Finalize` when resolving visibilities during AST expansion)
- #158698 (Update TypeVisitable implementation)
- #158706 (Tweaks to MIR building scope API)
@rust-log-analyzer

Copy link
Copy Markdown
Collaborator

The job dist-i586-gnu-i586-i686-musl failed! Check out the build log: (web)(plain enhanced)(plain)

Click to see the possible cause of the failure (guessed by this bot)

---- [codegen] tests/codegen-llvm/force-intrinsic-fallback.rs#FALLBACK stdout ----
------FileCheck stdout------------------------------
------FileCheck stderr------------------------------
/checkout/tests/codegen-llvm/force-intrinsic-fallback.rs:20:15: error: FALLBACK: expected string not found in input
// FALLBACK: call noundef float @{{.*}}minimumf32
^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/force-intrinsic-fallback.FALLBACK/force-intrinsic-fallback.ll:159:28: note: scanning from here
define i32 @call_minimumf32(float noundef %x, float noundef %y) unnamed_addr #2 {
^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/force-intrinsic-fallback.FALLBACK/force-intrinsic-fallback.ll:163:3: note: possible intended match here
; call core::intrinsics::minimumf32
^
Input file: /checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/force-intrinsic-fallback.FALLBACK/force-intrinsic-fallback.ll
Check file: /checkout/tests/codegen-llvm/force-intrinsic-fallback.rs
-dump-input=help explains the following input dump.
Input was:
<<<<<<
.
.
.
59: br i1 %_4, label %bb3, label %bb4 60: 61: bb1: ; preds = %start 62: store float %x, ptr %_0, align 4 63: br label %bb15 64: 65: bb4: ; preds = %bb2 66: %_5 = fcmp oeq float %x, %y 67: br i1 %_5, label %bb5, label %bb12 68: 69: bb3: ; preds = %bb2 70: store float %y, ptr %_0, align 4 71: br label %bb14 72: 73: bb12: ; preds = %bb4 74: %0 = fadd float %x, %y 75: store float %0, ptr %_0, align 4 76: br label %bb13 77: 78: bb5: ; preds = %bb4 79: %_8 = bitcast float %x to i32 80: %_7 = and i32 %_8, -2147483648 81: %1 = icmp eq i32 %_7, 0 82: br i1 %1, label %bb9, label %bb6 83: 84: bb13: ; preds = %bb11, %bb12 85: br label %bb14 86: 87: bb9: ; preds = %bb5 88: br label %bb10 89: 90: bb6: ; preds = %bb5 91: %_11 = bitcast float %y to i32 92: %_10 = and i32 %_11, -2147483648 93: %_9 = icmp ne i32 %_10, 0 94: %_6 = xor i1 %_9, true 95: br i1 %_6, label %bb7, label %bb8 96: 97: bb10: ; preds = %bb8, %bb9 98: store float %y, ptr %_0, align 4 99: br label %bb11 100: 101: bb8: ; preds = %bb6 102: br label %bb10 103: 104: bb7: ; preds = %bb6 105: store float %x, ptr %_0, align 4 106: br label %bb11 107: 108: bb11: ; preds = %bb7, %bb10 109: br label %bb13 110: 111: bb14: ; preds = %bb3, %bb13 112: br label %bb15 113: 114: bb15: ; preds = %bb1, %bb14 115: %2 = load i32, ptr %_0, align 4 116: ret i32 %2 117: } 118: 119: ; <u32 as core::intrinsics::fallback::DisjointBitOr>::disjoint_bitor 120: ; Function Attrs: inlinehint uwtable 121: define internal noundef i32 @_RNvXsd_NtNtCsabvo9uahmPy_4core10intrinsics8fallbackmNtB5_13DisjointBitOr14disjoint_bitor(i32 noundef %self, i32 noundef %other) unnamed_addr #1 { 122: start: 123: %_4 = and i32 %self, %other 124: %_3 = icmp eq i32 %_4, 0 125: call void @llvm.assume(i1 %_3) 126: %_0 = or i32 %self, %other 127: ret i32 %_0 128: } 129: 130: ; <u32 as core::intrinsics::fallback::FunnelShift>::unchecked_funnel_shl 131: ; Function Attrs: inlinehint uwtable 132: define internal noundef i32 @_RNvXsp_NtNtCsabvo9uahmPy_4core10intrinsics8fallbackmNtB5_11FunnelShift20unchecked_funnel_shl(i32 noundef %self, i32 noundef %rhs, i32 noundef %shift) unnamed_addr #1 { 133: start: 134: %_0 = alloca [4 x i8], align 4 135: %_4 = icmp ult i32 %shift, 32 136: call void @llvm.assume(i1 %_4) 137: %0 = icmp eq i32 %shift, 0 138: br i1 %0, label %bb1, label %bb2 139: 140: bb1: ; preds = %start 141: store i32 %self, ptr %_0, align 4 142: br label %bb4 143: 144: bb2: ; preds = %start 145: %_5 = shl i32 %self, %shift 146: %_7 = sub i32 32, %shift 147: %_6 = lshr i32 %rhs, %_7 148: ; call core::intrinsics::disjoint_bitor::<u32> 149: %1 = call noundef i32 @_RINvNtCsabvo9uahmPy_4core10intrinsics14disjoint_bitormECsixyy7Ww9L6I_24force_intrinsic_fallback(i32 noundef %_5, i32 noundef %_6, ptr noalias nofree noundef readonly align 4 captures(address, read_provenance) dereferenceable(16) @alloc_67df731ed7e09ed88fea7833be2bee2a) #8 150: store i32 %1, ptr %_0, align 4 151: br label %bb4 152: 153: bb4: ; preds = %bb2, %bb1 154: %2 = load i32, ptr %_0, align 4, !noundef !3 155: ret i32 %2 156: } 157: 158: ; Function Attrs: uwtable 159: define i32 @call_minimumf32(float noundef %x, float noundef %y) unnamed_addr #2 { check:20'0 X~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ error: no match found
160: start: check:20'0 ~~~~~~~
161: %0 = alloca [4 x i8], align 4 check:20'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
162: %_0 = alloca [4 x i8], align 4 check:20'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
163: ; call core::intrinsics::minimumf32 check:20'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:20'1 ? possible intended match
164: %1 = call i32 @_RNvNtCsabvo9uahmPy_4core10intrinsics10minimumf32(float noundef %x, float noundef %y) #8 check:20'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
165: call void @llvm.lifetime.start.p0(ptr %0) check:20'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
166: store i32 %1, ptr %0, align 4 check:20'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
167: call void @llvm.memcpy.p0.p0.i32(ptr align 4 %_0, ptr align 4 %0, i32 4, i1 false) check:20'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
168: call void @llvm.lifetime.end.p0(ptr %0) check:20'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
169: %2 = load i32, ptr %_0, align 4 check:20'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
170: ret i32 %2 check:20'0 ~~~~~~~~~~~~
171: } check:20'0 ~~
172: check:20'0 ~
173: ; Function Attrs: uwtable check:20'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~
174: define noundef i32 @call_funnel_shl(i32 noundef %a, i32 noundef %b, i32 noundef %shift) unnamed_addr #2 { check:20'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
175: start: 176: ; call core::intrinsics::unchecked_funnel_shl::<u32> 177: %_0 = call noundef i32 @_RINvNtCsabvo9uahmPy_4core10intrinsics20unchecked_funnel_shlmECsixyy7Ww9L6I_24force_intrinsic_fallback(i32 noundef %a, i32 noundef %b, i32 noundef %shift, ptr noalias nofree noundef readonly align 4 captures(address, read_provenance) dereferenceable(16) @alloc_012bc7b6dac85d5f885a1c87f4f0298c) #8 178: ret i32 %_0 179: } 180: 181: ; Function Attrs: nounwind uwtable 182: declare noundef range(i32 0, 10) i32 @rust_eh_personality(i32 noundef, i32 noundef, i64 noundef, ptr noundef, ptr noundef) unnamed_addr #0 183: 184: ; core::panicking::panic_cannot_unwind 185: ; Function Attrs: cold minsize noinline noreturn nounwind optsize uwtable 186: declare void @_RNvNtCsabvo9uahmPy_4core9panicking19panic_cannot_unwind() unnamed_addr #3 187: 188: ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) 189: declare void @llvm.assume(i1 noundef) #4 190: 191: ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) 192: declare void @llvm.lifetime.start.p0(ptr captures(none)) #5 193: 194: ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) 195: declare void @llvm.memcpy.p0.p0.i32(ptr noalias writeonly captures(none), ptr noalias readonly captures(none), i32, i1 immarg) #6 196: 197: ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) 198: declare void @llvm.lifetime.end.p0(ptr captures(none)) #5 199: 200: attributes #0 = { nounwind uwtable "probe-stack"="inline-asm" "target-cpu"="pentium" } 201: attributes #1 = { inlinehint uwtable "probe-stack"="inline-asm" "target-cpu"="pentium" } 202: attributes #2 = { uwtable "probe-stack"="inline-asm" "target-cpu"="pentium" } 203: attributes #3 = { cold minsize noinline noreturn nounwind optsize uwtable "probe-stack"="inline-asm" "target-cpu"="pentium" } 204: attributes #4 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } 205: attributes #5 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } 206: attributes #6 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } 207: attributes #7 = { cold noreturn nounwind } 208: attributes #8 = { nounwind } 209: 210: !llvm.module.flags = !{!0, !1} 211: !llvm.ident = !{!2} 212: 213: !0 = !{i32 8, !"PIC Level", i32 2} 214: !1 = !{i32 7, !"uwtable", i32 2} 215: !2 = !{!"rustc version 1.98.0-nightly (b7c8670ac 2026-07-05)"} 216: !3 = !{} >>>>>>
------------------------------------------
error in revision `FALLBACK`: verification with 'FileCheck' failed
status: exit status: 1
command: "/checkout/obj/build/x86_64-unknown-linux-gnu/llvm/build/bin/FileCheck" "--input-file" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/force-intrinsic-fallback.FALLBACK/force-intrinsic-fallback.ll" "/checkout/tests/codegen-llvm/force-intrinsic-fallback.rs" "--check-prefix=CHECK" "--check-prefix" "FALLBACK" "--allow-unused-prefixes" "--dump-input-context" "100"
stdout: none
--- stderr -------------------------------
/checkout/tests/codegen-llvm/force-intrinsic-fallback.rs:20:15: error: FALLBACK: expected string not found in input
// FALLBACK: call noundef float @{{.*}}minimumf32
^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/force-intrinsic-fallback.FALLBACK/force-intrinsic-fallback.ll:159:28: note: scanning from here
define i32 @call_minimumf32(float noundef %x, float noundef %y) unnamed_addr #2 {
^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/force-intrinsic-fallback.FALLBACK/force-intrinsic-fallback.ll:163:3: note: possible intended match here
; call core::intrinsics::minimumf32
^
Input file: /checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/force-intrinsic-fallback.FALLBACK/force-intrinsic-fallback.ll
Check file: /checkout/tests/codegen-llvm/force-intrinsic-fallback.rs
-dump-input=help explains the following input dump.
Input was:
<<<<<<
.
.
.
59: br i1 %_4, label %bb3, label %bb4 60: 61: bb1: ; preds = %start 62: store float %x, ptr %_0, align 4 63: br label %bb15 64: 65: bb4: ; preds = %bb2 66: %_5 = fcmp oeq float %x, %y 67: br i1 %_5, label %bb5, label %bb12 68: 69: bb3: ; preds = %bb2 70: store float %y, ptr %_0, align 4 71: br label %bb14 72: 73: bb12: ; preds = %bb4 74: %0 = fadd float %x, %y 75: store float %0, ptr %_0, align 4 76: br label %bb13 77: 78: bb5: ; preds = %bb4 79: %_8 = bitcast float %x to i32 80: %_7 = and i32 %_8, -2147483648 81: %1 = icmp eq i32 %_7, 0 82: br i1 %1, label %bb9, label %bb6 83: 84: bb13: ; preds = %bb11, %bb12 85: br label %bb14 86: 87: bb9: ; preds = %bb5 88: br label %bb10 89: 90: bb6: ; preds = %bb5 91: %_11 = bitcast float %y to i32 92: %_10 = and i32 %_11, -2147483648 93: %_9 = icmp ne i32 %_10, 0 94: %_6 = xor i1 %_9, true 95: br i1 %_6, label %bb7, label %bb8 96: 97: bb10: ; preds = %bb8, %bb9 98: store float %y, ptr %_0, align 4 99: br label %bb11 100: 101: bb8: ; preds = %bb6 102: br label %bb10 103: 104: bb7: ; preds = %bb6 105: store float %x, ptr %_0, align 4 106: br label %bb11 107: 108: bb11: ; preds = %bb7, %bb10 109: br label %bb13 110: 111: bb14: ; preds = %bb3, %bb13 112: br label %bb15 113: 114: bb15: ; preds = %bb1, %bb14 115: %2 = load i32, ptr %_0, align 4 116: ret i32 %2 117: } 118: 119: ; <u32 as core::intrinsics::fallback::DisjointBitOr>::disjoint_bitor 120: ; Function Attrs: inlinehint uwtable 121: define internal noundef i32 @_RNvXsd_NtNtCsabvo9uahmPy_4core10intrinsics8fallbackmNtB5_13DisjointBitOr14disjoint_bitor(i32 noundef %self, i32 noundef %other) unnamed_addr #1 { 122: start: 123: %_4 = and i32 %self, %other 124: %_3 = icmp eq i32 %_4, 0 125: call void @llvm.assume(i1 %_3) 126: %_0 = or i32 %self, %other 127: ret i32 %_0 128: } 129: 130: ; <u32 as core::intrinsics::fallback::FunnelShift>::unchecked_funnel_shl 131: ; Function Attrs: inlinehint uwtable 132: define internal noundef i32 @_RNvXsp_NtNtCsabvo9uahmPy_4core10intrinsics8fallbackmNtB5_11FunnelShift20unchecked_funnel_shl(i32 noundef %self, i32 noundef %rhs, i32 noundef %shift) unnamed_addr #1 { 133: start: 134: %_0 = alloca [4 x i8], align 4 135: %_4 = icmp ult i32 %shift, 32 136: call void @llvm.assume(i1 %_4) 137: %0 = icmp eq i32 %shift, 0 138: br i1 %0, label %bb1, label %bb2 139: 140: bb1: ; preds = %start 141: store i32 %self, ptr %_0, align 4 142: br label %bb4 143: 144: bb2: ; preds = %start 145: %_5 = shl i32 %self, %shift 146: %_7 = sub i32 32, %shift 147: %_6 = lshr i32 %rhs, %_7 148: ; call core::intrinsics::disjoint_bitor::<u32> 149: %1 = call noundef i32 @_RINvNtCsabvo9uahmPy_4core10intrinsics14disjoint_bitormECsixyy7Ww9L6I_24force_intrinsic_fallback(i32 noundef %_5, i32 noundef %_6, ptr noalias nofree noundef readonly align 4 captures(address, read_provenance) dereferenceable(16) @alloc_67df731ed7e09ed88fea7833be2bee2a) #8 150: store i32 %1, ptr %_0, align 4 151: br label %bb4 152: 153: bb4: ; preds = %bb2, %bb1 154: %2 = load i32, ptr %_0, align 4, !noundef !3 155: ret i32 %2 156: } 157: 158: ; Function Attrs: uwtable 159: define i32 @call_minimumf32(float noundef %x, float noundef %y) unnamed_addr #2 { check:20'0 X~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ error: no match found
160: start: check:20'0 ~~~~~~~
161: %0 = alloca [4 x i8], align 4 check:20'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
162: %_0 = alloca [4 x i8], align 4 check:20'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
163: ; call core::intrinsics::minimumf32 check:20'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:20'1 ? possible intended match
164: %1 = call i32 @_RNvNtCsabvo9uahmPy_4core10intrinsics10minimumf32(float noundef %x, float noundef %y) #8 check:20'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
165: call void @llvm.lifetime.start.p0(ptr %0) check:20'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
166: store i32 %1, ptr %0, align 4 check:20'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
167: call void @llvm.memcpy.p0.p0.i32(ptr align 4 %_0, ptr align 4 %0, i32 4, i1 false) check:20'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
168: call void @llvm.lifetime.end.p0(ptr %0) check:20'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
169: %2 = load i32, ptr %_0, align 4 check:20'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
170: ret i32 %2 check:20'0 ~~~~~~~~~~~~
171: } check:20'0 ~~
172: check:20'0 ~
173: ; Function Attrs: uwtable check:20'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~
174: define noundef i32 @call_funnel_shl(i32 noundef %a, i32 noundef %b, i32 noundef %shift) unnamed_addr #2 { check:20'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
175: start: 176: ; call core::intrinsics::unchecked_funnel_shl::<u32> 177: %_0 = call noundef i32 @_RINvNtCsabvo9uahmPy_4core10intrinsics20unchecked_funnel_shlmECsixyy7Ww9L6I_24force_intrinsic_fallback(i32 noundef %a, i32 noundef %b, i32 noundef %shift, ptr noalias nofree noundef readonly align 4 captures(address, read_provenance) dereferenceable(16) @alloc_012bc7b6dac85d5f885a1c87f4f0298c) #8 178: ret i32 %_0 179: } 180: 181: ; Function Attrs: nounwind uwtable 182: declare noundef range(i32 0, 10) i32 @rust_eh_personality(i32 noundef, i32 noundef, i64 noundef, ptr noundef, ptr noundef) unnamed_addr #0 183: 184: ; core::panicking::panic_cannot_unwind 185: ; Function Attrs: cold minsize noinline noreturn nounwind optsize uwtable 186: declare void @_RNvNtCsabvo9uahmPy_4core9panicking19panic_cannot_unwind() unnamed_addr #3 187: 188: ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) 189: declare void @llvm.assume(i1 noundef) #4 190: 191: ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) 192: declare void @llvm.lifetime.start.p0(ptr captures(none)) #5 193: 194: ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) 195: declare void @llvm.memcpy.p0.p0.i32(ptr noalias writeonly captures(none), ptr noalias readonly captures(none), i32, i1 immarg) #6 196: 197: ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) 198: declare void @llvm.lifetime.end.p0(ptr captures(none)) #5 199: 200: attributes #0 = { nounwind uwtable "probe-stack"="inline-asm" "target-cpu"="pentium" } 201: attributes #1 = { inlinehint uwtable "probe-stack"="inline-asm" "target-cpu"="pentium" } 202: attributes #2 = { uwtable "probe-stack"="inline-asm" "target-cpu"="pentium" } 203: attributes #3 = { cold minsize noinline noreturn nounwind optsize uwtable "probe-stack"="inline-asm" "target-cpu"="pentium" } 204: attributes #4 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } 205: attributes #5 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } 206: attributes #6 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } 207: attributes #7 = { cold noreturn nounwind } 208: attributes #8 = { nounwind } 209: 210: !llvm.module.flags = !{!0, !1} 211: !llvm.ident = !{!2} 212: 213: !0 = !{i32 8, !"PIC Level", i32 2} 214: !1 = !{i32 7, !"uwtable", i32 2} 215: !2 = !{!"rustc version 1.98.0-nightly (b7c8670ac 2026-07-05)"} 216: !3 = !{} >>>>>>
------------------------------------------
---- [codegen] tests/codegen-llvm/force-intrinsic-fallback.rs#FALLBACK stdout end ----

@rust-borsrust-borsBot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Jul 5, 2026
@rust-bors

rust-borsBot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

💔 Test for b7c8670 failed: CI. Failed job:

@rust-borsrust-borsBot added the S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. label Jul 5, 2026
@rust-bors

rust-borsBot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

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

@rust-borsrust-borsBot removed the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Jul 5, 2026
@rustbotrustbot removed the S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. label Jul 5, 2026
@JonathanBrouwer
JonathanBrouwer deleted the rollup-DS89hW9 branch August 21, 2026 08:09
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-CIArea: Our Github Actions CIA-LLVMArea: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues.A-testsuiteArea: The testsuite used to check the correctness of rustcA-tidyArea: The tidy toolrollupA PR which is a rollupT-bootstrapRelevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap)T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.T-infraRelevant to the infrastructure team, which will review and decide on the PR/issue.T-libsRelevant to the library team, which will review and decide on the PR/issue.T-releaseRelevant to the release subteam, which will review and decide on the PR/issue.T-rustdocRelevant to the rustdoc team, which will review and decide on the PR/issue.T-rustdoc-frontendRelevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

20 participants

@JonathanBrouwer@rust-log-analyzer@rustbot@RalfJung@ojeda@Dnreikronos@TimNN@WaffleLapkin@folkertdev@bushrat011899@jyn514@Enselic@scottmcm@ehuss@sgasho@aerooneqq@asder8215@cjgillot@workingjubilee@adwinwhite