Skip to content

Conversation

@JonathanBrouwer
Copy link
Contributor

Successful merges:

r? @ghost

Create a similar rollup

TaKO8Ki and others added 30 commits January 2, 2026 16:01
There's no sensible recovery scheme here, giving up the recovery is the
right thing to do.
Previously, these failed to resolve, despite them working for struct
fields or enum variants that were behind aliases.

However, there is now an inconsistency where enum variant fields behind
an alias resolve to the entry on the alias's page, while enum variants
and struct fields resolve to the page of the backing ADT.
The old name and API were confusing. In my opinion, looking up the type
at the call site is clearer.
All the other parts of this function return the Res for the containing
page, but for some reason, this returns the associated item itself. It
doesn't seem to affect the behavior of rustdoc because e.g. the href
functions use the parent if the DefId is for an assoc item. But it's
clearer and simpler to be consistent.
Otherwise eiis defined by std will produce large amounts of `missing
stability attribute` errors.
target_arch for powerpc64le- targets is "powerpc64".
Recent changes made WASI targets use the Unix threading implementation, but
WASI does not support threading. When the Unix code tries to call
pthread_create, it fails with EAGAIN, causing libraries like rayon to
panic when trying to initialize their global thread pool.

This fix adds an early return in Thread::new() that checks for WASI and
returns UNSUPPORTED_PLATFORM. This approach:
- Continues using most of the unix.rs code path (less invasive)
- Only requires a small cfg check at the start of Thread::new()
- Can be easily removed once wasi-sdk is updated with the proper fix

The real fix is being tracked in `WebAssembly/wasi-libc#716` which will
change the error code returned by pthread_create to properly indicate
unsupported operations. Once that propagates to wasi-sdk, this workaround
can be removed.

Fixes the regression where rayon-based code (e.g., lopdf in PDF handling)
panicked on WASI after nightly-2025-12-10.

Before fix:
  pthread_create returns EAGAIN (error code 6)
  ThreadPoolBuildError { kind: IOError(Os { code: 6,
  kind: WouldBlock, message: "Resource temporarily unavailable" }) }

After fix:
  Thread::new returns Err(io::Error::UNSUPPORTED_PLATFORM)
  Libraries can gracefully handle the lack of threading support
The opposite ordering was a consistent source of confusion during debuggingю
`report_conflict` actually used an incorrect order due to similar confusion.
Also avoid losing some glob ambiguities when re-fetching globs
Add a context-consistency check before emitting redundant generic-argument suggestions

Fixes rust-lang#149559

Add a context-consistency check before emitting redundant generic-argument suggestions. If the redundant argument spans come from mixed hygiene contexts (e.g., macro definition + macro callsite), we skip the suggestion to avoid malformed `shrink_to_hi().to(...)` spans and potential ICEs.
…Gomez

rustdoc: Fix intra-doc link bugs involving type aliases and associated items

This PR:
- Add support for linking to fields of variants behind a type alias.
- Correctly resolve links to fields and variants behind a type alias to the alias's version of the docs.
- Refactor some intra-doc links code to make it simpler.
- Add tests for the status quo of linking to associated items behind aliases.

Future steps:
- Nail down the rules of when inherent and trait impls are inlined into an alias's docs, and when impls on the alias appear for the aliased type.
- Adjust the resolutions of intra-doc links, through aliases, to associated items based on these rules.

r? @GuillaumeGomez
Don't try to recover keyword as non-keyword identifier

Fixes rust-lang#149692.

On beta after rust-lang#146978, we ICE on

```rs
macro_rules! m {
    ($id:item()) => {}
}

m!(Self());
```

where `Self` in the macro invocation is a keyword not a "normal" identifier, while attempting to recover an missing keyword before an identifier. Except, `Self` *is* a keyword, so trying to parse that as a non-reserved identifier expectedly fails.

I suspect rust-lang#146978 merely unmasked a possible code path to hit this case; this logic has been so for a good while. Previously, on stable, the error message looks something like

```rs
error: expected identifier, found keyword `Self`
 --> src/lib.rs:5:4
  |
5 | m!(Self());
  |    ^^^^ expected identifier, found keyword

error: missing `fn` or `struct` for function or struct definition
 --> src/lib.rs:5:4
  |
2 |     ($id:item()) => {}
  |      -------- while parsing argument for this `item` macro fragment
...
5 | m!(Self());
  |    ^^^^
  |
help: if you meant to call a macro, try
  |
5 | m!(Self!());
  |        +
```

I considered restoring this diagnostic, but I'm not super convinced it's worth the complexity (and to me, it's not super clear what the user actually intended here).
… r=lcnr

cleanup: remove borrowck handling for inline const patterns

rust-lang#120390 added borrow-checking for inline const patterns; a type annotation was added to inline const patterns in the THIR to remember the `DefId` and args of the constants so they could be checked and constraints could be propagated to their parents. As of rust-lang#138499 though, inline const patterns can't be borrow-checked due to a query cycle, and as of rust-lang#149667, the type/`DefId`/args annotations on inline const patterns have been removed, so the borrowck code for them seems unused; this PR removes it.

In a hypothetical future where borrowck doesn't depend on exhaustiveness checking so `inline_const_pat` can be reinstated, I imagine we also won't be evaluating inline const patterns before borrowck. As such, we might be able to reuse the existing code for normal unevaluated inline const operands in [`TypeChecker::visit_operand`](https://github.com/rust-lang/rust/blob/32fe406b5e71afbb0d8b95280e50e67d1549224c/compiler/rustc_borrowck/src/type_check/mod.rs#L1720-L1749) (or at least we shouldn't need to encode inline const patterns' `DefId` and args in user type annotations if they appear directly in the MIR).

r? lcnr
resolve: Relax some asserts in glob overwriting and add tests

Fixes rust-lang#150927.
Fixes rust-lang#150928.
Fixes rust-lang#150929.
Fixes rust-lang#150976.
Fixes rust-lang#150977.
Fixes rust-lang#151008.
Fixes rust-lang#151037.
Fixes rust-lang/rust-clippy#16398.
r? @yaahc
@rustbot rustbot 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 S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jan 14, 2026
@JonathanBrouwer
Copy link
Contributor Author

@bors r+ rollup=never p=5

@rustbot rustbot added 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-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 Jan 14, 2026
@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 Jan 14, 2026
@rust-bors
Copy link
Contributor

rust-bors bot commented Jan 14, 2026

📌 Commit c57dafe has been approved by JonathanBrouwer

It is now in the queue for this repository.

@rust-bors

This comment has been minimized.

rust-bors bot pushed a commit that referenced this pull request Jan 14, 2026
…uwer

Rollup of 12 pull requests

Successful merges:

 - #150585 (Add a context-consistency check before emitting redundant generic-argument suggestions)
 - #150586 (rustdoc: Fix intra-doc link bugs involving type aliases and associated items)
 - #150590 (Don't try to recover keyword as non-keyword identifier )
 - #150817 (cleanup: remove borrowck handling for inline const patterns)
 - #150939 (resolve: Relax some asserts in glob overwriting and add tests)
 - #150966 (rustc_target: Remove unused Arch::PowerPC64LE)
 - #150971 (Disallow eii in statement position)
 - #151016 (fix: WASI threading regression by disabling pthread usage)
 - #151046 (compiler: Make Externally Implementable Item (eii) macros "semiopaque")
 - #151103 (mir_build: Simplify length-determination and indexing for array/slice patterns)
 - #151117 (Avoid serde dependency in build_helper when not necessary)
 - #151127 (Delete `MetaItemOrLitParser::Err`)

r? @ghost
@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)
test [ui] tests/ui/imports/ambiguous-6.rs ... ok
test [ui] tests/ui/imports/ambiguous-4.rs ... ok
test [ui] tests/ui/imports/ambiguous-7.rs ... ok
test [ui] tests/ui/imports/ambiguous-9.rs ... ok
test [ui] tests/ui/imports/ambiguous-panic-glob-vs-multiouter.rs ... ok
test [ui] tests/ui/imports/ambiguous-panic-globvsglob.rs ... ok
test [ui] tests/ui/imports/ambiguous-panic-no-implicit-prelude.rs ... ok
test [ui] tests/ui/imports/ambiguous-8.rs ... ok
test [ui] tests/ui/imports/ambiguous-panic-non-prelude-core-glob.rs ... ok
test [ui] tests/ui/imports/ambiguous-glob-vs-expanded-extern.rs ... ok
test [ui] tests/ui/imports/ambiguous-panic-non-prelude-std-glob.rs ... ok
---

---- [codegen] tests/codegen-llvm/lib-optimizations/append-elements.rs stdout ----
------FileCheck stdout------------------------------

------FileCheck stderr------------------------------
/checkout/tests/codegen-llvm/lib-optimizations/append-elements.rs:25:12: error: CHECK: expected string not found in input
 // CHECK: call void @llvm.memcpy.{{.*}}%dst.i{{.*}}%src.0
           ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/lib-optimizations/append-elements/append-elements.ll:181:43: note: scanning from here
define void @string_append_with_temp_alloc(ptr noalias noundef align 8 captures(none) dereferenceable(24) %dst, ptr noalias noundef nonnull readonly align 1 captures(none) %src.0, i64 noundef %src.1) unnamed_addr #1 personality ptr @rust_eh_personality {
                                          ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/lib-optimizations/append-elements/append-elements.ll:229:4: note: possible intended match here
 tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %2, ptr nonnull align 1 %src.0, i64 %src.1, i1 false)
   ^

Input file: /checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/lib-optimizations/append-elements/append-elements.ll
Check file: /checkout/tests/codegen-llvm/lib-optimizations/append-elements.rs

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

Input was:
<<<<<<
            .
            .
            .
           81:  
           82: bb7: ; preds = %bb16 
           83:  %1 = icmp eq i64 %cap, 0 
           84:  br i1 %1, label %bb11, label %bb4.i.i 
           85:  
           86: bb4.i.i: ; preds = %bb7 
           87: ; call __rustc::__rust_no_alloc_shim_is_unstable_v2 
           88:  tail call void @_RNvCs1AbbHR3G1IX_7___rustc35___rust_no_alloc_shim_is_unstable_v2() #15 
           89: ; call __rustc::__rust_alloc 
           90:  %2 = tail call noundef ptr @_RNvCs1AbbHR3G1IX_7___rustc12___rust_alloc(i64 noundef %cap, i64 noundef range(i64 1, -9223372036854775807) 1) #15 
           91:  br label %bb9 
           92:  
           93: bb18: ; preds = %bb16 
           94:  %3 = icmp ne ptr %self.0.val, null 
           95:  tail call void @llvm.assume(i1 %3) 
           96:  %cond.not.i.i = icmp ult i64 %cap, %self.8.val 
           97:  br i1 %cond.not.i.i, label %bb2.i.i14, label %_RNvXs_NtCsXjWOnQ0f8M_5alloc5allocNtB4_6GlobalNtNtCsbx4wJKtPAiX_4core5alloc9Allocator4grow.exit, !prof !6 
           98:  
           99: bb2.i.i14: ; preds = %bb18 
          100: ; call core::panicking::panic_fmt 
          101:  tail call void @_RNvNtCsbx4wJKtPAiX_4core9panicking9panic_fmt(ptr noundef nonnull @alloc_7e80d81941cf5c819e3db4cff23967f9, ptr noundef nonnull inttoptr (i64 145 to ptr), ptr noalias noundef readonly align 8 captures(address, read_provenance) dereferenceable(24) @alloc_53cc1ac85c5164ae7afdeab4c3e8b656) #13 
          102:  unreachable 
          103:  
          104: _RNvXs_NtCsXjWOnQ0f8M_5alloc5allocNtB4_6GlobalNtNtCsbx4wJKtPAiX_4core5alloc9Allocator4grow.exit: ; preds = %bb18 
          105: ; call __rustc::__rust_realloc 
          106:  %raw_ptr.i.i = tail call noundef ptr @_RNvCs1AbbHR3G1IX_7___rustc14___rust_realloc(ptr noundef nonnull %self.0.val, i64 noundef %self.8.val, i64 noundef range(i64 1, -9223372036854775807) 1, i64 noundef %cap) #15 
          107:  br label %bb9 
          108:  
          109: bb9: ; preds = %bb4.i.i, %_RNvXs_NtCsXjWOnQ0f8M_5alloc5allocNtB4_6GlobalNtNtCsbx4wJKtPAiX_4core5alloc9Allocator4grow.exit 
          110:  %raw_ptr.i.i.pn = phi ptr [ %raw_ptr.i.i, %_RNvXs_NtCsXjWOnQ0f8M_5alloc5allocNtB4_6GlobalNtNtCsbx4wJKtPAiX_4core5alloc9Allocator4grow.exit ], [ %2, %bb4.i.i ] 
          111:  %4 = icmp eq ptr %raw_ptr.i.i.pn, null 
          112:  br i1 %4, label %bb10, label %bb11 
          113:  
          114: bb10: ; preds = %bb9 
          115:  %5 = getelementptr inbounds nuw i8, ptr %_0, i64 8 
          116:  store i64 1, ptr %5, align 8 
          117:  br label %bb13 
          118:  
          119: bb11: ; preds = %bb7, %bb9 
          120:  %raw_ptr.i.i.pn8 = phi ptr [ %raw_ptr.i.i.pn, %bb9 ], [ inttoptr (i64 1 to ptr), %bb7 ] 
          121:  %6 = getelementptr inbounds nuw i8, ptr %_0, i64 8 
          122:  store ptr %raw_ptr.i.i.pn8, ptr %6, align 8 
          123:  br label %bb13 
          124:  
          125: bb13: ; preds = %start, %bb11, %bb10 
          126:  %.sink9 = phi i64 [ 16, %bb11 ], [ 16, %bb10 ], [ 8, %start ] 
          127:  %cap.sink = phi i64 [ %cap, %bb11 ], [ %cap, %bb10 ], [ 0, %start ] 
          128:  %storemerge9 = phi i64 [ 0, %bb11 ], [ 1, %bb10 ], [ 1, %start ] 
          129:  %7 = getelementptr inbounds nuw i8, ptr %_0, i64 %.sink9 
          130:  store i64 %cap.sink, ptr %7, align 8 
          131:  store i64 %storemerge9, ptr %_0, align 8 
          132:  ret void 
          133: } 
          134:  
          135: ; Function Attrs: nonlazybind uwtable 
          136: define void @vec_append_with_temp_alloc(ptr noalias noundef align 8 captures(none) dereferenceable(24) %dst, ptr noalias noundef nonnull readonly align 1 captures(none) %src.0, i64 noundef range(i64 0, -9223372036854775808) %src.1) unnamed_addr #1 personality ptr @rust_eh_personality { 
          137: start: 
          138:  %0 = icmp eq i64 %src.1, 0 
          139:  br i1 %0, label %bb10.thread, label %_RNvXs_NtCsXjWOnQ0f8M_5alloc5allocNtB4_6GlobalNtNtCsbx4wJKtPAiX_4core5alloc9Allocator8allocate.exit.i 
          140:  
          141: bb10.thread: ; preds = %start 
          142:  %1 = getelementptr inbounds nuw i8, ptr %dst, i64 16 
          143:  %len.i.i20 = load i64, ptr %1, align 8, !alias.scope !12, !noundef !8 
          144:  %_11.i34 = icmp sgt i64 %len.i.i20, -1 
          145:  tail call void @llvm.assume(i1 %_11.i34) 
          146:  br label %_RINvNtCsbx4wJKtPAiX_4core3ptr13drop_in_placeINtNtCsXjWOnQ0f8M_5alloc3vec3VechEECslAzzQRh6qCt_15append_elements.exit7 
          147:  
          148: _RNvXs_NtCsXjWOnQ0f8M_5alloc5allocNtB4_6GlobalNtNtCsbx4wJKtPAiX_4core5alloc9Allocator8allocate.exit.i: ; preds = %start 
          149: ; call __rustc::__rust_no_alloc_shim_is_unstable_v2 
          150:  tail call void @_RNvCs1AbbHR3G1IX_7___rustc35___rust_no_alloc_shim_is_unstable_v2() #15, !noalias !17 
          151:  %2 = getelementptr inbounds nuw i8, ptr %dst, i64 16 
          152:  %len.i.i = load i64, ptr %2, align 8, !alias.scope !20, !noundef !8 
          153:  %3 = getelementptr inbounds nuw i8, ptr %dst, i64 8 
          154:  %self2.i.i = load i64, ptr %3, align 8, !range !7, !alias.scope !20, !noundef !8 
          155:  %_9.i.i = sub i64 %self2.i.i, %len.i.i 
          156:  %_7.i.i = icmp ugt i64 %src.1, %_9.i.i 
          157:  br i1 %_7.i.i, label %_RNvMs_NtCsXjWOnQ0f8M_5alloc3vecINtB4_3VechE7reserveCslAzzQRh6qCt_15append_elements.exit.thread.i, label %_RNvXs_NtCsXjWOnQ0f8M_5alloc5allocNtB4_6GlobalNtNtCsbx4wJKtPAiX_4core5alloc9Allocator10deallocate.exit.i.i.i4.i6, !prof !22 
          158:  
          159: _RNvMs_NtCsXjWOnQ0f8M_5alloc3vecINtB4_3VechE7reserveCslAzzQRh6qCt_15append_elements.exit.thread.i: ; preds = %_RNvXs_NtCsXjWOnQ0f8M_5alloc5allocNtB4_6GlobalNtNtCsbx4wJKtPAiX_4core5alloc9Allocator8allocate.exit.i 
          160: ; call <alloc::raw_vec::RawVecInner<_>>::reserve::do_reserve_and_handle::<alloc::alloc::Global> 
          161:  tail call fastcc void @_RINvNvMs2_NtCsXjWOnQ0f8M_5alloc7raw_vecINtB8_11RawVecInnerpE7reserve21do_reserve_and_handleNtNtBa_5alloc6GlobalECslAzzQRh6qCt_15append_elements(ptr noalias noundef nonnull align 8 dereferenceable(24) %dst, i64 noundef %len.i.i, i64 noundef %src.1) 
          162:  %len1.i = load i64, ptr %2, align 8, !alias.scope !23, !noundef !8 
          163:  br label %_RNvXs_NtCsXjWOnQ0f8M_5alloc5allocNtB4_6GlobalNtNtCsbx4wJKtPAiX_4core5alloc9Allocator10deallocate.exit.i.i.i4.i6 
          164:  
          165: _RNvXs_NtCsXjWOnQ0f8M_5alloc5allocNtB4_6GlobalNtNtCsbx4wJKtPAiX_4core5alloc9Allocator10deallocate.exit.i.i.i4.i6: ; preds = %_RNvXs_NtCsXjWOnQ0f8M_5alloc5allocNtB4_6GlobalNtNtCsbx4wJKtPAiX_4core5alloc9Allocator8allocate.exit.i, %_RNvMs_NtCsXjWOnQ0f8M_5alloc3vecINtB4_3VechE7reserveCslAzzQRh6qCt_15append_elements.exit.thread.i 
          166:  %len.i.i.sink = phi i64 [ %len1.i, %_RNvMs_NtCsXjWOnQ0f8M_5alloc3vecINtB4_3VechE7reserveCslAzzQRh6qCt_15append_elements.exit.thread.i ], [ %len.i.i, %_RNvXs_NtCsXjWOnQ0f8M_5alloc5allocNtB4_6GlobalNtNtCsbx4wJKtPAiX_4core5alloc9Allocator8allocate.exit.i ] 
          167:  %_11.i = icmp sgt i64 %len.i.i.sink, -1 
          168:  tail call void @llvm.assume(i1 %_11.i) 
          169:  %_12.i = load ptr, ptr %dst, align 8, !alias.scope !23, !nonnull !8, !noundef !8 
          170:  %dst.i = getelementptr inbounds nuw i8, ptr %_12.i, i64 %len.i.i.sink 
          171:  tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %dst.i, ptr nonnull align 1 %src.0, i64 %src.1, i1 false) 
          172:  %_10.0.i = add nuw i64 %len.i.i.sink, %src.1 
          173:  store i64 %_10.0.i, ptr %2, align 8, !alias.scope !23 
          174:  br label %_RINvNtCsbx4wJKtPAiX_4core3ptr13drop_in_placeINtNtCsXjWOnQ0f8M_5alloc3vec3VechEECslAzzQRh6qCt_15append_elements.exit7 
          175:  
          176: _RINvNtCsbx4wJKtPAiX_4core3ptr13drop_in_placeINtNtCsXjWOnQ0f8M_5alloc3vec3VechEECslAzzQRh6qCt_15append_elements.exit7: ; preds = %bb10.thread, %_RNvXs_NtCsXjWOnQ0f8M_5alloc5allocNtB4_6GlobalNtNtCsbx4wJKtPAiX_4core5alloc9Allocator10deallocate.exit.i.i.i4.i6 
          177:  ret void 
          178: } 
          179:  
          180: ; Function Attrs: nonlazybind uwtable 
          181: define void @string_append_with_temp_alloc(ptr noalias noundef align 8 captures(none) dereferenceable(24) %dst, ptr noalias noundef nonnull readonly align 1 captures(none) %src.0, i64 noundef %src.1) unnamed_addr #1 personality ptr @rust_eh_personality { 
check:25'0                                               X~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ error: no match found
          182: start: 
check:25'0     ~~~~~~~
          183:  %_16.sroa.4 = alloca i64, align 8 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          184:  %_16.sroa.10 = alloca i64, align 8 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          185:  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %_16.sroa.4) 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          186:  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %_16.sroa.10) 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          187:  tail call void @llvm.experimental.noalias.scope.decl(metadata !24) 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          188:  %_25.i.i = icmp slt i64 %src.1, 0 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          189:  br i1 %_25.i.i, label %bb8, label %bb17.i, !prof !11 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          190:  
check:25'0     ~
          191: bb17.i: ; preds = %start 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~
          192:  %0 = icmp eq i64 %src.1, 0 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          193:  br i1 %0, label %bb10.thread, label %_RNvXs_NtCsXjWOnQ0f8M_5alloc5allocNtB4_6GlobalNtNtCsbx4wJKtPAiX_4core5alloc9Allocator8allocate.exit.i 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          194:  
check:25'0     ~
          195: bb10.thread: ; preds = %bb17.i 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          196:  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %_16.sroa.4) 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          197:  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %_16.sroa.10) 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          198:  %1 = getelementptr inbounds nuw i8, ptr %dst, i64 16 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          199:  %len.i.i.i.i23 = load i64, ptr %1, align 8, !alias.scope !27, !noalias !36, !noundef !8 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          200:  %_11.i.i.i37 = icmp sgt i64 %len.i.i.i.i23, -1 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          201:  tail call void @llvm.assume(i1 %_11.i.i.i37) 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          202:  br label %_RINvNtCsbx4wJKtPAiX_4core3ptr13drop_in_placeNtNtCsXjWOnQ0f8M_5alloc6string6StringECslAzzQRh6qCt_15append_elements.exit5 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          203:  
check:25'0     ~
          204: _RNvXs_NtCsXjWOnQ0f8M_5alloc5allocNtB4_6GlobalNtNtCsbx4wJKtPAiX_4core5alloc9Allocator8allocate.exit.i: ; preds = %bb17.i 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          205: ; call __rustc::__rust_no_alloc_shim_is_unstable_v2 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          206:  tail call void @_RNvCs1AbbHR3G1IX_7___rustc35___rust_no_alloc_shim_is_unstable_v2() #15, !noalias !24 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          207: ; call __rustc::__rust_alloc 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          208:  %2 = tail call noundef ptr @_RNvCs1AbbHR3G1IX_7___rustc12___rust_alloc(i64 noundef %src.1, i64 noundef range(i64 1, -9223372036854775807) 1) #15, !noalias !24 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          209:  %3 = icmp eq ptr %2, null 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
          210:  br i1 %3, label %bb9.i, label %bb5 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          211:  
check:25'0     ~
          212: bb9.i: ; preds = %_RNvXs_NtCsXjWOnQ0f8M_5alloc5allocNtB4_6GlobalNtNtCsbx4wJKtPAiX_4core5alloc9Allocator8allocate.exit.i 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          213:  store i64 1, ptr %_16.sroa.4, align 8, !alias.scope !24 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          214:  br label %bb8 
check:25'0     ~~~~~~~~~~~~~~~
          215:  
check:25'0     ~
          216: bb8: ; preds = %bb9.i, %start 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          217:  %.sink7.i.sroa.phi.ph = phi ptr [ %_16.sroa.4, %start ], [ %_16.sroa.10, %bb9.i ] 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          218:  %capacity.sink.i.ph = phi i64 [ 0, %start ], [ %src.1, %bb9.i ] 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          219:  store i64 %capacity.sink.i.ph, ptr %.sink7.i.sroa.phi.ph, align 8, !alias.scope !24 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          220:  %_16.sroa.4.0._16.sroa.4.0._16.sroa.4.0._16.sroa.4.8._20.0 = load i64, ptr %_16.sroa.4, align 8, !range !10, !noundef !8 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          221:  %_16.sroa.10.0._16.sroa.10.0._16.sroa.10.0._16.sroa.10.16._20.1 = load i64, ptr %_16.sroa.10, align 8 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          222: ; call alloc::raw_vec::handle_error 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          223:  tail call void @_RNvNtCsXjWOnQ0f8M_5alloc7raw_vec12handle_error(i64 noundef %_16.sroa.4.0._16.sroa.4.0._16.sroa.4.0._16.sroa.4.8._20.0, i64 %_16.sroa.10.0._16.sroa.10.0._16.sroa.10.0._16.sroa.10.16._20.1) #14 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          224:  unreachable 
check:25'0     ~~~~~~~~~~~~~
          225:  
check:25'0     ~
          226: bb5: ; preds = %_RNvXs_NtCsXjWOnQ0f8M_5alloc5allocNtB4_6GlobalNtNtCsbx4wJKtPAiX_4core5alloc9Allocator8allocate.exit.i 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          227:  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %_16.sroa.4) 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          228:  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %_16.sroa.10) 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          229:  tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %2, ptr nonnull align 1 %src.0, i64 %src.1, i1 false) 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:25'1        ?                                                                                                              possible intended match
          230:  tail call void @llvm.experimental.noalias.scope.decl(metadata !38) 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          231:  tail call void @llvm.experimental.noalias.scope.decl(metadata !40) 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          232:  tail call void @llvm.experimental.noalias.scope.decl(metadata !42) 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          233:  %4 = getelementptr inbounds nuw i8, ptr %dst, i64 16 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          234:  %len.i.i.i.i = load i64, ptr %4, align 8, !alias.scope !44, !noalias !45, !noundef !8 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          235:  %5 = getelementptr inbounds nuw i8, ptr %dst, i64 8 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          236:  %self2.i.i.i.i = load i64, ptr %5, align 8, !range !7, !alias.scope !44, !noalias !45, !noundef !8 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          237:  %_9.i.i.i.i = sub i64 %self2.i.i.i.i, %len.i.i.i.i 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          238:  %_7.i.i.i.i = icmp ugt i64 %src.1, %_9.i.i.i.i 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          239:  br i1 %_7.i.i.i.i, label %_RNvMs_NtCsXjWOnQ0f8M_5alloc3vecINtB4_3VechE7reserveCslAzzQRh6qCt_15append_elements.exit.thread.i.i.i, label %_RNvXs_NtCsXjWOnQ0f8M_5alloc5allocNtB4_6GlobalNtNtCsbx4wJKtPAiX_4core5alloc9Allocator10deallocate.exit.i.i.i4.i.i4, !prof !47 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          240:  
check:25'0     ~
          241: _RNvMs_NtCsXjWOnQ0f8M_5alloc3vecINtB4_3VechE7reserveCslAzzQRh6qCt_15append_elements.exit.thread.i.i.i: ; preds = %bb5 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          242: ; invoke <alloc::raw_vec::RawVecInner<_>>::reserve::do_reserve_and_handle::<alloc::alloc::Global> 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          243:  invoke fastcc void @_RINvNvMs2_NtCsXjWOnQ0f8M_5alloc7raw_vecINtB8_11RawVecInnerpE7reserve21do_reserve_and_handleNtNtBa_5alloc6GlobalECslAzzQRh6qCt_15append_elements(ptr noalias noundef nonnull align 8 dereferenceable(24) %dst, i64 noundef %len.i.i.i.i, i64 noundef range(i64 0, -9223372036854775808) %src.1) 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          244:  to label %.noexc unwind label %cleanup 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          245:  
check:25'0     ~
          246: .noexc: ; preds = %_RNvMs_NtCsXjWOnQ0f8M_5alloc3vecINtB4_3VechE7reserveCslAzzQRh6qCt_15append_elements.exit.thread.i.i.i 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          247:  %len1.i.i.i = load i64, ptr %4, align 8, !alias.scope !48, !noalias !45, !noundef !8 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          248:  br label %_RNvXs_NtCsXjWOnQ0f8M_5alloc5allocNtB4_6GlobalNtNtCsbx4wJKtPAiX_4core5alloc9Allocator10deallocate.exit.i.i.i4.i.i4 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          249:  
check:25'0     ~
          250: cleanup: ; preds = %_RNvMs_NtCsXjWOnQ0f8M_5alloc3vecINtB4_3VechE7reserveCslAzzQRh6qCt_15append_elements.exit.thread.i.i.i 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          251:  %6 = landingpad { ptr, i32 } 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          252:  cleanup 
check:25'0     ~~~~~~~~~
          253: ; call __rustc::__rust_dealloc 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          254:  tail call void @_RNvCs1AbbHR3G1IX_7___rustc14___rust_dealloc(ptr noundef nonnull %2, i64 noundef %src.1, i64 noundef range(i64 1, -9223372036854775807) 1) #15 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          255:  resume { ptr, i32 } %6 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~
          256:  
check:25'0     ~
          257: _RNvXs_NtCsXjWOnQ0f8M_5alloc5allocNtB4_6GlobalNtNtCsbx4wJKtPAiX_4core5alloc9Allocator10deallocate.exit.i.i.i4.i.i4: ; preds = %bb5, %.noexc 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          258:  %len.i.i.i.i.sink = phi i64 [ %len1.i.i.i, %.noexc ], [ %len.i.i.i.i, %bb5 ] 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          259:  %_11.i.i.i = icmp sgt i64 %len.i.i.i.i.sink, -1 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          260:  tail call void @llvm.assume(i1 %_11.i.i.i) 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          261:  %_12.i.i.i = load ptr, ptr %dst, align 8, !alias.scope !48, !noalias !45, !nonnull !8, !noundef !8 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          262:  %dst.i.i.i = getelementptr inbounds nuw i8, ptr %_12.i.i.i, i64 %len.i.i.i.i.sink 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          263:  tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %dst.i.i.i, ptr nonnull readonly align 1 %2, i64 range(i64 0, -9223372036854775808) %src.1, i1 false), !noalias !48 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          264:  %_10.0.i.i.i = add nuw i64 %len.i.i.i.i.sink, %src.1 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          265:  store i64 %_10.0.i.i.i, ptr %4, align 8, !alias.scope !48, !noalias !45 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          266: ; call __rustc::__rust_dealloc 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          267:  tail call void @_RNvCs1AbbHR3G1IX_7___rustc14___rust_dealloc(ptr noundef nonnull %2, i64 noundef %src.1, i64 noundef range(i64 1, -9223372036854775807) 1) #15 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          268:  br label %_RINvNtCsbx4wJKtPAiX_4core3ptr13drop_in_placeNtNtCsXjWOnQ0f8M_5alloc6string6StringECslAzzQRh6qCt_15append_elements.exit5 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          269:  
check:25'0     ~
          270: _RINvNtCsbx4wJKtPAiX_4core3ptr13drop_in_placeNtNtCsXjWOnQ0f8M_5alloc6string6StringECslAzzQRh6qCt_15append_elements.exit5: ; preds = %bb10.thread, %_RNvXs_NtCsXjWOnQ0f8M_5alloc5allocNtB4_6GlobalNtNtCsbx4wJKtPAiX_4core5alloc9Allocator10deallocate.exit.i.i.i4.i.i4 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          271:  ret void 
check:25'0     ~~~~~~~~~~
          272: } 
check:25'0     ~~
          273:  
check:25'0     ~
          274: ; Function Attrs: nounwind nonlazybind uwtable 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          275: declare noundef range(i32 0, 10) i32 @rust_eh_personality(i32 noundef, i32 noundef, i64 noundef, ptr noundef, ptr noundef) unnamed_addr #2 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          276:  
check:25'0     ~
          277: ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          278: declare void @llvm.lifetime.start.p0(i64 immarg, ptr captures(none)) #3 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          279:  
check:25'0     ~
          280: ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          281: declare void @llvm.lifetime.end.p0(i64 immarg, ptr captures(none)) #3 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          282:  
check:25'0     ~
          283: ; alloc::raw_vec::handle_error 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          284: ; Function Attrs: cold minsize noreturn nonlazybind optsize uwtable 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          285: declare void @_RNvNtCsXjWOnQ0f8M_5alloc7raw_vec12handle_error(i64 noundef range(i64 0, -9223372036854775807), i64) unnamed_addr #4 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          286:  
check:25'0     ~
          287: ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          288: declare void @llvm.assume(i1 noundef) #5 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          289:  
check:25'0     ~
          290: ; core::panicking::panic_fmt 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          291: ; Function Attrs: cold noinline noreturn nonlazybind uwtable 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          292: declare void @_RNvNtCsbx4wJKtPAiX_4core9panicking9panic_fmt(ptr noundef nonnull, ptr noundef nonnull, ptr noalias noundef readonly align 8 captures(address, read_provenance) dereferenceable(24)) unnamed_addr #6 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          293:  
check:25'0     ~
          294: ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          295: declare void @llvm.memcpy.p0.p0.i64(ptr noalias writeonly captures(none), ptr noalias readonly captures(none), i64, i1 immarg) #7 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          296:  
check:25'0     ~
          297: ; __rustc::__rust_dealloc 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~
          298: ; Function Attrs: nounwind nonlazybind allockind("free") uwtable 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          299: declare void @_RNvCs1AbbHR3G1IX_7___rustc14___rust_dealloc(ptr allocptr noundef captures(address), i64 noundef, i64 noundef) unnamed_addr #8 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          300:  
check:25'0     ~
          301: ; __rustc::__rust_realloc 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~
          302: ; Function Attrs: nounwind nonlazybind allockind("realloc,aligned") allocsize(3) uwtable 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          303: declare noalias noundef ptr @_RNvCs1AbbHR3G1IX_7___rustc14___rust_realloc(ptr allocptr noundef, i64 noundef, i64 allocalign noundef, i64 noundef) unnamed_addr #9 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          304:  
check:25'0     ~
          305: ; __rustc::__rust_no_alloc_shim_is_unstable_v2 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          306: ; Function Attrs: nounwind nonlazybind uwtable 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          307: declare void @_RNvCs1AbbHR3G1IX_7___rustc35___rust_no_alloc_shim_is_unstable_v2() unnamed_addr #2 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          308:  
check:25'0     ~
          309: ; __rustc::__rust_alloc 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~
          310: ; Function Attrs: nounwind nonlazybind allockind("alloc,uninitialized,aligned") allocsize(0) uwtable 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          311: declare noalias noundef ptr @_RNvCs1AbbHR3G1IX_7___rustc12___rust_alloc(i64 noundef, i64 allocalign noundef) unnamed_addr #10 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          312:  
check:25'0     ~
          313: ; core::panicking::panic 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~
          314: ; Function Attrs: cold noinline noreturn nonlazybind uwtable 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          315: declare void @_RNvNtCsbx4wJKtPAiX_4core9panicking5panic(ptr noalias noundef nonnull readonly align 1 captures(address, read_provenance), i64 noundef, ptr noalias noundef readonly align 8 captures(address, read_provenance) dereferenceable(24)) unnamed_addr #6 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          316:  
check:25'0     ~
          317: ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          318: declare void @llvm.experimental.noalias.scope.decl(metadata) #11 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          319:  
check:25'0     ~
          320: ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          321: declare i64 @llvm.umax.i64(i64, i64) #12 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          322:  
check:25'0     ~
          323: attributes #0 = { cold nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          324: attributes #1 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          325: attributes #2 = { nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          326: attributes #3 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          327: attributes #4 = { cold minsize noreturn nonlazybind optsize uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          328: attributes #5 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          329: attributes #6 = { cold noinline noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } 
check:25'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            .
            .
            .
>>>>>>

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

error: 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/lib-optimizations/append-elements/append-elements.ll" "/checkout/tests/codegen-llvm/lib-optimizations/append-elements.rs" "--check-prefix=CHECK" "--allow-unused-prefixes" "--dump-input-context" "100"
stdout: none
--- stderr -------------------------------
/checkout/tests/codegen-llvm/lib-optimizations/append-elements.rs:25:12: error: CHECK: expected string not found in input
 // CHECK: call void @llvm.memcpy.{{.*}}%dst.i{{.*}}%src.0
           ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/lib-optimizations/append-elements/append-elements.ll:181:43: note: scanning from here
define void @string_append_with_temp_alloc(ptr noalias noundef align 8 captures(none) dereferenceable(24) %dst, ptr noalias noundef nonnull readonly align 1 captures(none) %src.0, i64 noundef %src.1) unnamed_addr #1 personality ptr @rust_eh_personality {
                                          ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/lib-optimizations/append-elements/append-elements.ll:229:4: note: possible intended match here
 tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %2, ptr nonnull align 1 %src.0, i64 %src.1, i1 false)
   ^

Input file: /checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/lib-optimizations/append-elements/append-elements.ll
Check file: /checkout/tests/codegen-llvm/lib-optimizations/append-elements.rs

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

Input was:
<<<<<<
            .
            .
            .
           81:  
           82: bb7: ; preds = %bb16 
           83:  %1 = icmp eq i64 %cap, 0 
           84:  br i1 %1, label %bb11, label %bb4.i.i 
           85:  
           86: bb4.i.i: ; preds = %bb7 
           87: ; call __rustc::__rust_no_alloc_shim_is_unstable_v2 
           88:  tail call void @_RNvCs1AbbHR3G1IX_7___rustc35___rust_no_alloc_shim_is_unstable_v2() #15 
           89: ; call __rustc::__rust_alloc 
           90:  %2 = tail call noundef ptr @_RNvCs1AbbHR3G1IX_7___rustc12___rust_alloc(i64 noundef %cap, i64 noundef range(i64 1, -9223372036854775807) 1) #15 
           91:  br label %bb9 
           92:  
           93: bb18: ; preds = %bb16 
           94:  %3 = icmp ne ptr %self.0.val, null 
           95:  tail call void @llvm.assume(i1 %3) 
           96:  %cond.not.i.i = icmp ult i64 %cap, %self.8.val 
           97:  br i1 %cond.not.i.i, label %bb2.i.i14, label %_RNvXs_NtCsXjWOnQ0f8M_5alloc5allocNtB4_6GlobalNtNtCsbx4wJKtPAiX_4core5alloc9Allocator4grow.exit, !prof !6 
           98:  
           99: bb2.i.i14: ; preds = %bb18 
          100: ; call core::panicking::panic_fmt 
          101:  tail call void @_RNvNtCsbx4wJKtPAiX_4core9panicking9panic_fmt(ptr noundef nonnull @alloc_7e80d81941cf5c819e3db4cff23967f9, ptr noundef nonnull inttoptr (i64 145 to ptr), ptr noalias noundef readonly align 8 captures(address, read_provenance) dereferenceable(24) @alloc_53cc1ac85c5164ae7afdeab4c3e8b656) #13 
          102:  unreachable 
          103:  
          104: _RNvXs_NtCsXjWOnQ0f8M_5alloc5allocNtB4_6GlobalNtNtCsbx4wJKtPAiX_4core5alloc9Allocator4grow.exit: ; preds = %bb18 
          105: ; call __rustc::__rust_realloc 
          106:  %raw_ptr.i.i = tail call noundef ptr @_RNvCs1AbbHR3G1IX_7___rustc14___rust_realloc(ptr noundef nonnull %self.0.val, i64 noundef %self.8.val, i64 noundef range(i64 1, -9223372036854775807) 1, i64 noundef %cap) #15 
          107:  br label %bb9 
          108:  
          109: bb9: ; preds = %bb4.i.i, %_RNvXs_NtCsXjWOnQ0f8M_5alloc5allocNtB4_6GlobalNtNtCsbx4wJKtPAiX_4core5alloc9Allocator4grow.exit 
          110:  %raw_ptr.i.i.pn = phi ptr [ %raw_ptr.i.i, %_RNvXs_NtCsXjWOnQ0f8M_5alloc5allocNtB4_6GlobalNtNtCsbx4wJKtPAiX_4core5alloc9Allocator4grow.exit ], [ %2, %bb4.i.i ] 
          111:  %4 = icmp eq ptr %raw_ptr.i.i.pn, null 
          112:  br i1 %4, label %bb10, label %bb11 
          113:  
          114: bb10: ; preds = %bb9 
          115:  %5 = getelementptr inbounds nuw i8, ptr %_0, i64 8 
          116:  store i64 1, ptr %5, align 8 
          117:  br label %bb13 
          118:  
          119: bb11: ; preds = %bb7, %bb9 
          120:  %raw_ptr.i.i.pn8 = phi ptr [ %raw_ptr.i.i.pn, %bb9 ], [ inttoptr (i64 1 to ptr), %bb7 ] 
          121:  %6 = getelementptr inbounds nuw i8, ptr %_0, i64 8 
          122:  store ptr %raw_ptr.i.i.pn8, ptr %6, align 8 
          123:  br label %bb13 
          124:  

@rust-bors rust-bors bot 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 Jan 14, 2026
@rust-bors
Copy link
Contributor

rust-bors bot commented Jan 14, 2026

💔 Test for dd481ba failed: CI. Failed jobs:

@JonathanBrouwer
Copy link
Contributor Author

Not sure, probably #151103
Started a try job there

@rustbot rustbot removed the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Jan 14, 2026
rust-bors bot pushed a commit that referenced this pull request Jan 15, 2026
Revert "avoid phi node for pointers flowing into Vec appends #130998"

This reverts PR #130998 because the added test seems to be flaky / non-deterministic, and has been failing in unrelated PRs during merge CI:

- #151129 (comment)
- #150772 (comment)
- #150925 (comment)

See also [#t-infra > Tree ops](https://rust-lang.zulipchat.com/#narrow/channel/242791-t-infra/topic/Tree.20ops/with/568111767).

> [!NOTE]
>
> This is a "fallback" PR in case the FileCheck failure isn't obvious (i.e. fix-forward). This PR reverts #130998 wholesale in case the failure is genuine and indicative of a bug in the actual implementation change.
Zalathar added a commit to Zalathar/rust that referenced this pull request Jan 15, 2026
Revert "avoid phi node for pointers flowing into Vec appends rust-lang#130998"

This reverts PR rust-lang#130998 because the added test seems to be flaky / non-deterministic, and has been failing in unrelated PRs during merge CI:

- rust-lang#151129 (comment)
- rust-lang#150772 (comment)
- rust-lang#150925 (comment)
- rust-lang#151145 (comment)

See also [#t-infra > Tree ops](https://rust-lang.zulipchat.com/#narrow/channel/242791-t-infra/topic/Tree.20ops/with/568111767).

> [!NOTE]
>
> This is a "fallback" PR in case the FileCheck failure isn't obvious (i.e. fix-forward). This PR reverts rust-lang#130998 wholesale in case the failure is genuine and indicative of a bug in the actual implementation change.
rust-timer added a commit that referenced this pull request Jan 15, 2026
Rollup merge of #151150 - revert-vec-append, r=Zalathar

Revert "avoid phi node for pointers flowing into Vec appends #130998"

This reverts PR #130998 because the added test seems to be flaky / non-deterministic, and has been failing in unrelated PRs during merge CI:

- #151129 (comment)
- #150772 (comment)
- #150925 (comment)
- #151145 (comment)

See also [#t-infra > Tree ops](https://rust-lang.zulipchat.com/#narrow/channel/242791-t-infra/topic/Tree.20ops/with/568111767).

> [!NOTE]
>
> This is a "fallback" PR in case the FileCheck failure isn't obvious (i.e. fix-forward). This PR reverts #130998 wholesale in case the failure is genuine and indicative of a bug in the actual implementation change.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-attributes Area: Attributes (`#[…]`, `#![…]`) 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 rollup A PR which is a rollup 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-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.

Projects

None yet

Development

Successfully merging this pull request may close these issues.