Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MIR-only rlibs #119017

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from
Draft

MIR-only rlibs #119017

wants to merge 1 commit into from

Conversation

saethlin
Copy link
Member

@saethlin saethlin commented Dec 16, 2023

Status update: The strategy I implemented in this PR is to make builds of non-rlib crates monomorphize everything they need. I was quite thorough about this and had to add a handful of hacks to make it happen.

But I now believe that was a mistake, because of how it breaks proc-macro crates. I think those crates can only work if they are able to cooperate with the compiler correctly to share types across the proc-macro bridge. Currently this is achieved by linking both against the libstd dylib, which contains monomorphizations of the allocator shims and probably a handful of other things. So in order to make this work, I at least need to figure out how to make the compiler expose all the monomorphizations of the standard library, and make the proc-macro crates link against those instead of monomorphizing their own.


Originally I was just trying to imitate MIR-only rlibs with -Zcross-crate-inline-threshold=yes, but I think I have enough skill to actually implement the behavior. We shall see.

At time of writing, set RUSTFLAGS=-Zmir-only-libs and if each session that Cargo kicks off only compiles an rlib or an executable, every rlib should contain only MIR and the build should work. Any other configuration probably explodes unceremoniously.

r? @ghost

@saethlin saethlin added the S-experimental Status: Ongoing experiment that does not require reviewing and won't be merged in its current state. label Dec 16, 2023
@rustbot rustbot added 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) labels Dec 16, 2023
@saethlin
Copy link
Member Author

@bors try @rust-timer queue

@rust-timer

This comment has been minimized.

@rustbot rustbot added the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Dec 16, 2023
@bors
Copy link
Contributor

bors commented Dec 16, 2023

⌛ Trying commit d9e0f19 with merge f4568e9...

bors added a commit to rust-lang-ci/rust that referenced this pull request Dec 16, 2023
[perf experiment] (crudely) implement MIR-only rlibs

I realized that `-Zcross-crate-inline-threshold=always` is now basically MIR-only rlibs. So if nothing else, this is an easy way to study the perf implications of such a design.

Pondering this because it would be neat to codegen MIR for the standard library differently based on build flags passed by an end user.

r? `@ghost`
@rust-log-analyzer

This comment has been minimized.

@bors
Copy link
Contributor

bors commented Dec 16, 2023

☀️ Try build successful - checks-actions
Build commit: f4568e9 (f4568e9b4c437be978fa03a4b3ebc07f5800c83d)

@rust-timer

This comment has been minimized.

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (f4568e9): comparison URL.

Overall result: ❌✅ regressions and improvements - ACTION NEEDED

Benchmarking this pull request likely means that it is perf-sensitive, so we're automatically marking it as not fit for rolling up. While you can manually mark this PR as fit for rollup, we strongly recommend not doing so since this PR may lead to changes in compiler perf.

Next Steps: If you can justify the regressions found in this try perf run, please indicate this with @rustbot label: +perf-regression-triaged along with sufficient written justification. If you cannot justify the regressions please fix the regressions and do another perf run. If the next run shows neutral or positive results, the label will be automatically removed.

@bors rollup=never
@rustbot label: -S-waiting-on-perf +perf-regression

Instruction count

This is a highly reliable metric that was used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
156.8% [0.3%, 3121.3%] 166
Regressions ❌
(secondary)
1167.6% [0.1%, 21506.7%] 116
Improvements ✅
(primary)
-0.8% [-6.6%, -0.2%] 47
Improvements ✅
(secondary)
-1.8% [-11.6%, -0.1%] 79
All ❌✅ (primary) 122.0% [-6.6%, 3121.3%] 213

Max RSS (memory usage)

Results

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
32.5% [0.4%, 448.7%] 179
Regressions ❌
(secondary)
27.0% [0.7%, 183.5%] 151
Improvements ✅
(primary)
-2.8% [-5.1%, -0.5%] 2
Improvements ✅
(secondary)
-8.9% [-9.2%, -8.6%] 3
All ❌✅ (primary) 32.1% [-5.1%, 448.7%] 181

Cycles

Results

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
185.0% [0.7%, 2991.0%] 151
Regressions ❌
(secondary)
1094.9% [1.3%, 18459.6%] 114
Improvements ✅
(primary)
-1.6% [-1.6%, -1.6%] 1
Improvements ✅
(secondary)
-3.5% [-5.0%, -2.1%] 5
All ❌✅ (primary) 183.8% [-1.6%, 2991.0%] 152

Binary size

Results

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
73.5% [0.0%, 423.5%] 134
Regressions ❌
(secondary)
440.4% [0.1%, 4194.7%] 52
Improvements ✅
(primary)
-18.0% [-49.7%, -0.8%] 17
Improvements ✅
(secondary)
-32.3% [-50.4%, -0.4%] 73
All ❌✅ (primary) 63.2% [-49.7%, 423.5%] 151

Bootstrap: 672.461s -> 1381.575s (105.45%)
Artifact size: 312.46 MiB -> 339.60 MiB (8.69%)

@rustbot rustbot added perf-regression Performance regression. and removed S-waiting-on-perf Status: Waiting on a perf run to be completed. labels Dec 16, 2023
@saethlin saethlin force-pushed the mir-only-rlibs branch 2 times, most recently from 741a7a7 to 9fc5b9f Compare January 10, 2024 04:56
@saethlin saethlin changed the title [perf experiment] (crudely) implement MIR-only rlibs MIR-only rlibs Jan 10, 2024
@rustbot
Copy link
Collaborator

rustbot commented Jan 10, 2024

Failed to set assignee to ghost: invalid assignee

Note: Only org members with at least the repository "read" role, users with write permissions, or people who have commented on the PR may be assigned.

@saethlin saethlin removed the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Jan 10, 2024
@bors
Copy link
Contributor

bors commented Jan 11, 2024

☔ The latest upstream changes (presumably #119843) made this pull request unmergeable. Please resolve the merge conflicts.

@bors bors added the S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. label Jan 11, 2024
@oli-obk
Copy link
Contributor

oli-obk commented Feb 13, 2024

The MCP has been accepted

@saethlin
Copy link
Member Author

👍

This PR is still not really mergeable because it breaks proc macros. I think because I'm monomorphizing the allocator shims wrong.

@rust-log-analyzer

This comment has been minimized.

@bors
Copy link
Contributor

bors commented Mar 12, 2024

☔ The latest upstream changes (presumably #121644) made this pull request unmergeable. Please resolve the merge conflicts.

@rust-log-analyzer

This comment has been minimized.

@bors
Copy link
Contributor

bors commented Mar 19, 2024

☔ The latest upstream changes (presumably #122037) made this pull request unmergeable. Please resolve the merge conflicts.

@rust-log-analyzer

This comment has been minimized.

@bors
Copy link
Contributor

bors commented Mar 21, 2024

☔ The latest upstream changes (presumably #122568) made this pull request unmergeable. Please resolve the merge conflicts.

@rust-log-analyzer

This comment has been minimized.

@bors
Copy link
Contributor

bors commented Apr 30, 2024

☔ The latest upstream changes (presumably #124558) made this pull request unmergeable. Please resolve the merge conflicts.

@Dylan-DPC Dylan-DPC removed the S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. label Aug 2, 2024
@joshtriplett
Copy link
Member

How feasible would it be to opt into a MIR-only rlib for a particular dependency? That might sidestep some of the difficulties associated with using it everywhere, while allowing large crates with very few items used to opt into it to reduce how much gets compiled.

@saethlin
Copy link
Member Author

while allowing large crates with very few items used to opt into it to reduce how much gets compiled.

If you want to try using this to cut down build times, you can investigate whether it would help by setting -Zcross-crate-inline-threshold=always for just that crate. I suspect that doing so will regress build times.

But thanks for pinging this PR! I'll try to rebase it up soon just to keep it alive.

@joshtriplett
Copy link
Member

@saethlin

I tested this on one of my projects:

Baseline:

Finished release profile [optimized] target(s) in 10m 31s

With the three biggest crates in the dependency tree (which I use a tiny fraction of the items of) using -Zcross-crate-inline-threshold=always:

Finished release profile [optimized] target(s) in 6m 31s

@saethlin
Copy link
Member Author

saethlin commented Oct 17, 2024

Note that CI may pass, because in line with:

That might sidestep some of the difficulties associated with using it everywhere

I removed the line that was making the compiler bootstrap with -Zmir-only-rlibs set. So the option is now untested in CI, I think.

@rust-log-analyzer

This comment has been minimized.

@rust-log-analyzer

This comment has been minimized.

@joshtriplett
Copy link
Member

joshtriplett commented Oct 18, 2024

Update (same project, flags applied to the same set of 3 large crates with most items unused):

Build Time
Baseline 10m 30s
-Zcross-crate-inline-threshold=always 6m 12s
-Zcross-crate-inline-threshold=always -Zmir-opt-level=0 5m 34s
-Zcross-crate-inline-threshold=always -Zmir-opt-level=1 5m 48s
-Zcross-crate-inline-threshold=always -Zinline-mir=no 5m 51s

@bors
Copy link
Contributor

bors commented Nov 10, 2024

☔ The latest upstream changes (presumably #132173) made this pull request unmergeable. Please resolve the merge conflicts.

@bors bors added the S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. label Nov 10, 2024
@saethlin saethlin force-pushed the mir-only-rlibs branch 2 times, most recently from ae0521d to 2749d74 Compare November 10, 2024 16:50
@rust-log-analyzer

This comment has been minimized.

@bors
Copy link
Contributor

bors commented Nov 12, 2024

☔ The latest upstream changes (presumably #132843) made this pull request unmergeable. Please resolve the merge conflicts.

@rust-log-analyzer

This comment has been minimized.

@rust-log-analyzer
Copy link
Collaborator

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

Click to see the possible cause of the failure (guessed by this bot)
#16 exporting to docker image format
#16 sending tarball 28.7s done
#16 DONE 32.0s
##[endgroup]
Setting extra environment values for docker:  --env ENABLE_GCC_CODEGEN=1 --env GCC_EXEC_PREFIX=/usr/lib/gcc/
[CI_JOB_NAME=x86_64-gnu-llvm-18]
debug: `DISABLE_CI_RUSTC_IF_INCOMPATIBLE` configured.
---
sccache: Starting the server...
##[group]Configure the build
configure: processing command line
configure: 
configure: build.configure-args := ['--build=x86_64-unknown-linux-gnu', '--llvm-root=/usr/lib/llvm-18', '--enable-llvm-link-shared', '--set', 'rust.randomize-layout=true', '--set', 'rust.thin-lto-import-instr-limit=10', '--enable-verbose-configure', '--enable-sccache', '--disable-manage-submodules', '--enable-locked-deps', '--enable-cargo-native-static', '--set', 'rust.codegen-units-std=1', '--set', 'dist.compression-profile=balanced', '--dist-compression-formats=xz', '--set', 'rust.lld=false', '--disable-dist-src', '--release-channel=nightly', '--enable-debug-assertions', '--enable-overflow-checks', '--enable-llvm-assertions', '--set', 'rust.verify-llvm-ir', '--set', 'rust.codegen-backends=llvm,cranelift,gcc', '--set', 'llvm.static-libstdcpp', '--enable-new-symbol-mangling']
configure: target.x86_64-unknown-linux-gnu.llvm-config := /usr/lib/llvm-18/bin/llvm-config
configure: llvm.link-shared     := True
configure: rust.randomize-layout := True
configure: rust.thin-lto-import-instr-limit := 10
---
failures:

---- [codegen] tests/codegen/external-no-mangle-fns.rs stdout ----

error: verification with 'FileCheck' failed
status: exit status: 1
command: "/usr/lib/llvm-18/bin/FileCheck" "--input-file" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/external-no-mangle-fns/external-no-mangle-fns.ll" "/checkout/tests/codegen/external-no-mangle-fns.rs" "--check-prefix=CHECK" "--check-prefix" "NONMSVC" "--allow-unused-prefixes" "--dump-input-context" "100"
--- stderr -------------------------------
/checkout/tests/codegen/external-no-mangle-fns.rs:38:16: error: CHECK-NEXT: expected string not found in input
// CHECK-NEXT: define internal
               ^
               ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/external-no-mangle-fns/external-no-mangle-fns.ll:45:18: note: scanning from here
; Function Attrs: noinline nonlazybind uwtable
                 ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/external-no-mangle-fns/external-no-mangle-fns.ll:46:1: note: possible intended match here
define hidden void @_ZN22external_no_mangle_fns1x17h83229e54e0776142E() unnamed_addr #1 {

Input file: /checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/external-no-mangle-fns/external-no-mangle-fns.ll
Check file: /checkout/tests/codegen/external-no-mangle-fns.rs


-dump-input=help explains the following input dump.
Input was:
<<<<<<
<<<<<<
           1: ; ModuleID = 'external_no_mangle_fns.2a3d260290b69b14-cgu.0' 
           2: source_filename = "external_no_mangle_fns.2a3d260290b69b14-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: @alloc_004acfa89553cbafbb2b2f00006c54c3 = private unnamed_addr constant <{ [4 x i8] }> <{ [4 x i8] c"*\00\00\00" }>, align 4 
           7:  
           8: ; Function Attrs: nonlazybind uwtable 
           9: define void @a() unnamed_addr #0 { 
          11:  ret void 
          12: } 
          13:  
          13:  
          14: ; Function Attrs: nonlazybind uwtable 
          15: define void @b() unnamed_addr #0 { 
          17:  ret void 
          18: } 
          19:  
          19:  
          20: ; Function Attrs: nonlazybind uwtable 
          21: define void @c() unnamed_addr #0 { 
          23:  ret void 
          24: } 
          25:  
          25:  
          26: ; Function Attrs: nonlazybind uwtable 
          27: define void @d() unnamed_addr #0 { 
          29:  ret void 
          30: } 
          31:  
          31:  
          32: ; Function Attrs: nonlazybind uwtable 
          33: define void @e() unnamed_addr #0 { 
          35:  ret void 
          36: } 
          37:  
          37:  
          38: ; Function Attrs: nonlazybind uwtable 
          39: define void @f() unnamed_addr #0 { 
          41:  ret void 
          42: } 
          43:  
          44: ; external_no_mangle_fns::x 
          44: ; external_no_mangle_fns::x 
          45: ; Function Attrs: noinline nonlazybind uwtable 
next:38'0                      X~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ error: no match found
          46: define hidden void @_ZN22external_no_mangle_fns1x17h83229e54e0776142E() unnamed_addr #1 { 
next:38'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
next:38'1     ?                                                                                          possible intended match
next:38'0     ~~~~~~~
          48:  %0 = alloca [4 x i8], align 4 
next:38'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
next:38'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          49:  call void @llvm.lifetime.start.p0(i64 4, ptr %0) 
next:38'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          50:  %1 = load volatile i32, ptr @alloc_004acfa89553cbafbb2b2f00006c54c3, align 4 
next:38'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          51:  store i32 %1, ptr %0, align 4 
next:38'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          52:  %_1 = load i32, ptr %0, align 4, !noundef !3 
next:38'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          53:  call void @llvm.lifetime.end.p0(i64 4, ptr %0) 
next:38'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          54:  ret void 
next:38'0     ~~~~~~~~~~
          55: } 
next:38'0     ~~
next:38'0     ~
next:38'0     ~
          57: ; Function Attrs: nonlazybind uwtable 
next:38'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          58: define void @g() unnamed_addr #0 { 
next:38'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
next:38'0     ~~~~~~~
          60: ; call external_no_mangle_fns::x 
next:38'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
next:38'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          61:  call void @_ZN22external_no_mangle_fns1x17h83229e54e0776142E() 
next:38'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          62:  ret void 
next:38'0     ~~~~~~~~~~
          63: } 
next:38'0     ~~
next:38'0     ~
next:38'0     ~
          65: ; Function Attrs: nonlazybind uwtable 
next:38'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          66: define void @h() unnamed_addr #0 { 
next:38'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
next:38'0     ~~~~~~~
          68:  ret void 
next:38'0     ~~~~~~~~~~
          69: } 
          69: } 
next:38'0     ~~
          70:  
next:38'0     ~
          71: ; Function Attrs: inlinehint nonlazybind uwtable 
next:38'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          72: define void @i() unnamed_addr #2 { 
next:38'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
next:38'0     ~~~~~~~
          74:  ret void 
next:38'0     ~~~~~~~~~~
          75: } 
          75: } 
next:38'0     ~~
          76:  
next:38'0     ~
          77: ; Function Attrs: inlinehint nonlazybind uwtable 
next:38'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          78: define void @j() unnamed_addr #2 { 
next:38'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
next:38'0     ~~~~~~~
          80:  ret void 
next:38'0     ~~~~~~~~~~
          81: } 
          81: } 
next:38'0     ~~
          82:  
next:38'0     ~
          83: ; Function Attrs: alwaysinline nonlazybind uwtable 
next:38'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          84: define void @k() unnamed_addr #3 { 
next:38'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
next:38'0     ~~~~~~~
          86:  ret void 
next:38'0     ~~~~~~~~~~
          87: } 
          87: } 
next:38'0     ~~
          88:  
next:38'0     ~
          89: ; Function Attrs: alwaysinline nonlazybind uwtable 
next:38'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          90: define void @l() unnamed_addr #3 { 
next:38'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
next:38'0     ~~~~~~~
          92:  ret void 
next:38'0     ~~~~~~~~~~
          93: } 
          93: } 
next:38'0     ~~
          94:  
next:38'0     ~
          95: ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) 
next:38'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          96: declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #4 
next:38'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
next:38'0     ~
next:38'0     ~
          98: ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) 
next:38'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          99: declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #4 
next:38'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
next:38'0     ~
next:38'0     ~
         101: attributes #0 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } 
next:38'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         102: attributes #1 = { noinline nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } 
next:38'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         103: attributes #2 = { inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } 
next:38'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         104: attributes #3 = { alwaysinline nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } 
next:38'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         105: attributes #4 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } 
next:38'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
next:38'0     ~
next:38'0     ~
         107: !llvm.module.flags = !{!0, !1} 
next:38'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         108: !llvm.ident = !{!2} 
next:38'0     ~~~~~~~~~~~~~~~~~~~~
next:38'0     ~
next:38'0     ~
         110: !0 = !{i32 8, !"PIC Level", i32 2} 
next:38'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         111: !1 = !{i32 2, !"RtLibUseGOT", i32 1} 
next:38'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         112: !2 = !{!"rustc version 1.85.0-nightly (18234b911 2024-12-08)"} 
next:38'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         113: !3 = !{} 
next:38'0     ~~~~~~~~~
------------------------------------------


---- [codegen] tests/codegen/instrument-coverage/testprog.rs#LINUX stdout ----
---- [codegen] tests/codegen/instrument-coverage/testprog.rs#LINUX stdout ----

error in revision `LINUX`: verification with 'FileCheck' failed
status: exit status: 1
command: "/usr/lib/llvm-18/bin/FileCheck" "--input-file" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/instrument-coverage/testprog.LINUX/testprog.ll" "/checkout/tests/codegen/instrument-coverage/testprog.rs" "--check-prefix=CHECK" "--check-prefix" "LINUX" "--check-prefix" "NONMSVC" "--allow-unused-prefixes" "--dump-input-context" "100" "-DINSTR_PROF_DATA=__llvm_prf_data" "-DINSTR_PROF_NAME=__llvm_prf_names" "-DINSTR_PROF_CNTS=__llvm_prf_cnts" "-DINSTR_PROF_COVMAP=__llvm_covmap" "-DINSTR_PROF_COVFUN=__llvm_covfun" "-DCOMDAT_IF_SUPPORTED=, comdat"
--- stderr -------------------------------
/checkout/tests/codegen/instrument-coverage/testprog.rs:106:11: error: CHECK: expected string not found in input
/checkout/tests/codegen/instrument-coverage/testprog.rs:106:11: error: CHECK: expected string not found in input
// CHECK: define internal { {{.*}} } @_R{{[a-zA-Z0-9_]+}}testprog14will_be_called() unnamed_addr #{{[0-9]+}} {
          ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/instrument-coverage/testprog.LINUX/testprog.ll:102:478: note: scanning from here
@llvm.used = appending global [13 x ptr] [ptr @__llvm_coverage_mapping, ptr @__covrec_1D9B895249AD0C75u, ptr @__covrec_36725C27D3039CB5u, ptr @__covrec_1CE7CA97E6F1AF41u, ptr @__covrec_A2CB80454FA0AB25u, ptr @__covrec_9DA069E8A9CA2C9u, ptr @__covrec_5690D14D8325DB4Au, ptr @__covrec_138797266E6ABDC1u, ptr @__covrec_53F9FD11B26D788Au, ptr @__covrec_CEC584AB7289F43u, ptr @__covrec_C6C88DA2C8EF10E1u, ptr @__covrec_AAF7C95823D55CB4u, ptr @__llvm_prf_nm], section "llvm.metadata"

Input file: /checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/instrument-coverage/testprog.LINUX/testprog.ll
Check file: /checkout/tests/codegen/instrument-coverage/testprog.rs


-dump-input=help explains the following input dump.
Input was:
<<<<<<
<<<<<<
           1: ; ModuleID = 'testprog.1d4720e3d224b3e6-cgu.0' 
           2: source_filename = "testprog.1d4720e3d224b3e6-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: %"core::fmt::rt::Argument<'_>" = type { %"core::fmt::rt::ArgumentType<'_>" } 
           7: %"core::fmt::rt::ArgumentType<'_>" = type { ptr, [1 x i64] } 
           8:  
           9: $__covrec_1D9B895249AD0C75u = comdat any 
          10:  
          11: $__covrec_36725C27D3039CB5u = comdat any 
          12:  
          13: $__covrec_1CE7CA97E6F1AF41u = comdat any 
          14:  
          15: $__covrec_A2CB80454FA0AB25u = comdat any 
          16:  
          17: $__covrec_9DA069E8A9CA2C9u = comdat any 
          18:  
          19: $__covrec_5690D14D8325DB4Au = comdat any 
          20:  
          21: $__covrec_138797266E6ABDC1u = comdat any 
          22:  
          23: $__covrec_53F9FD11B26D788Au = comdat any 
          24:  
          25: $__covrec_CEC584AB7289F43u = comdat any 
          26:  
          27: $__covrec_C6C88DA2C8EF10E1u = comdat any 
          28:  
          29: $__covrec_AAF7C95823D55CB4u = comdat any 
          30:  
          31: $__profc__RNvCs2vQph7PjJMo_8testprog14will_be_called = comdat nodeduplicate 
          32:  
          33: $__profc__RNvCs2vQph7PjJMo_8testprog18will_not_be_called = comdat nodeduplicate 
          34:  
          35: $__profc__RINvCs2vQph7PjJMo_8testprog5printRReEB2_ = comdat nodeduplicate 
          36:  
          37: $__profc__RINvCs2vQph7PjJMo_8testprog5printRbEB2_ = comdat nodeduplicate 
          38:  
          39: $__profc__RINvCs2vQph7PjJMo_8testprog9wrap_withNCNvB2_4main0ReEB2_ = comdat nodeduplicate 
          40:  
          41: $__profc__RINvCs2vQph7PjJMo_8testprog9wrap_withNCNvB2_4mains0_0bEB2_ = comdat nodeduplicate 
          42:  
          43: $__profc__RINvCs2vQph7PjJMo_8testprog9wrap_withNCNvB2_4mains_0ReEB2_ = comdat nodeduplicate 
          44:  
          45: $__profc__RNvCs2vQph7PjJMo_8testprog4main = comdat nodeduplicate 
          46:  
          47: $__profc__RNCNvCs2vQph7PjJMo_8testprog4main0B3_ = comdat nodeduplicate 
          48:  
          49: $__profc__RNCNvCs2vQph7PjJMo_8testprog4mains_0B3_ = comdat nodeduplicate 
          50:  
          51: $__profc__RNCNvCs2vQph7PjJMo_8testprog4mains0_0B3_ = comdat nodeduplicate 
          52:  
          53: $__llvm_profile_filename = comdat any 
          54:  
          55: @0 = private unnamed_addr constant <{ [8 x i8], [8 x i8] }> <{ [8 x i8] zeroinitializer, [8 x i8] undef }>, align 8 
          56: @vtable.0 = private unnamed_addr constant <{ [24 x i8], ptr, ptr, ptr }> <{ [24 x i8] c"\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00", ptr @_RNSNvYNCINvNtCs8rMuRaksE4y_3std2rt10lang_startuE0INtNtNtCs6o8oohoFcRE_4core3ops8function6FnOnceuE9call_once6vtableCs2vQph7PjJMo_8testprog, ptr @_RNCINvNtCs8rMuRaksE4y_3std2rt10lang_startuE0Cs2vQph7PjJMo_8testprog, ptr @_RNCINvNtCs8rMuRaksE4y_3std2rt10lang_startuE0Cs2vQph7PjJMo_8testprog }>, align 8 
          57: @alloc_ca73ddfe2605aeea60911726d8b3dd82 = private unnamed_addr constant <{ [6 x i8] }> <{ [6 x i8] c"called" }>, align 1 
          58: @alloc_49a1e817e911805af64bbc7efb390101 = private unnamed_addr constant <{ [1 x i8] }> <{ [1 x i8] c"\0A" }>, align 1 
          59: @alloc_9771be2481f51be410bd2ac520d18601 = private unnamed_addr constant <{ ptr, [8 x i8], ptr, [8 x i8] }> <{ ptr inttoptr (i64 1 to ptr), [8 x i8] zeroinitializer, ptr @alloc_49a1e817e911805af64bbc7efb390101, [8 x i8] c"\01\00\00\00\00\00\00\00" }>, align 8 
          60: @alloc_6279f72697bc50b998c49d75e5a056ba = private unnamed_addr constant <{ [28 x i8] }> <{ [28 x i8] c"should not have been called\0A" }>, align 1 
          61: @alloc_be5c9986eadfae1b66bd7958e25dc482 = private unnamed_addr constant <{ ptr, [8 x i8] }> <{ ptr @alloc_6279f72697bc50b998c49d75e5a056ba, [8 x i8] c"\1C\00\00\00\00\00\00\00" }>, align 8 
          62: @alloc_8dfd08ba449915aba0baa3a82e12553a = private unnamed_addr constant <{ ptr, [8 x i8], ptr, [8 x i8], ptr, [8 x i8], ptr, [8 x i8] }> <{ ptr inttoptr (i64 1 to ptr), [8 x i8] zeroinitializer, ptr inttoptr (i64 1 to ptr), [8 x i8] zeroinitializer, ptr inttoptr (i64 1 to ptr), [8 x i8] zeroinitializer, ptr @alloc_49a1e817e911805af64bbc7efb390101, [8 x i8] c"\01\00\00\00\00\00\00\00" }>, align 8 
          63: @alloc_0fd49fb9c87d0ea55f07188f9eff834d = private unnamed_addr constant <{ [4 x i8] }> <{ [4 x i8] c" ***" }>, align 1 
          64: @alloc_9db824fd26015da05d288b42181536c6 = private unnamed_addr constant <{ [4 x i8] }> <{ [4 x i8] c"*** " }>, align 1 
          65: @alloc_3edf33e52be22c945259abc2c0759d11 = private unnamed_addr constant <{ [19 x i8] }> <{ [19 x i8] c"wrapped result is: " }>, align 1 
          66: @__llvm_coverage_mapping = private constant { { i32, i32, i32, i32 }, [69 x i8] } { { i32, i32, i32, i32 } { i32 0, i32 69, i32 0, i32 6 }, [69 x i8] c"\02FBx\DA\E3\D5O\CEHM\CE\CE/-\D1\CFO\CA2G\F0JR\8BK\8A\F5\93\F3SR\D3S\F3\F43\F3\8AK\8AJsS\F3Jt\93\F3\CBR\8B\12\D3S\C1*\0A\8A\F2\D3\F5\8A\8A\01\9D\A9\1A\DA" }, section "__llvm_covmap", align 8 
          67: @__covrec_1D9B895249AD0C75u = linkonce_odr hidden constant <{ i64, i32, i64, i64, [9 x i8] }> <{ i64 2133449835006463093, i32 9, i64 -6571832530001747915, i64 -8916703881926681984, [9 x i8] c"\01\01\00\01\01 \01\04\02" }>, section "__llvm_covfun", comdat, align 8 
          68: @__covrec_36725C27D3039CB5u = linkonce_odr hidden constant <{ i64, i32, i64, i64, [9 x i8] }> <{ i64 3923299551506832565, i32 9, i64 -2764016617801376853, i64 -8916703881926681984, [9 x i8] c"\01\01\00\01\01&\01\03\02" }>, section "__llvm_covfun", comdat, align 8 
          69: @__covrec_1CE7CA97E6F1AF41u = linkonce_odr hidden constant <{ i64, i32, i64, i64, [9 x i8] }> <{ i64 2082856106445614913, i32 9, i64 6031088114520241132, i64 -8916703881926681984, [9 x i8] c"\01\01\00\01\01+\01\05\02" }>, section "__llvm_covfun", comdat, align 8 
          70: @__covrec_A2CB80454FA0AB25u = linkonce_odr hidden constant <{ i64, i32, i64, i64, [9 x i8] }> <{ i64 -6716133384115934427, i32 9, i64 6031088114520241132, i64 -8916703881926681984, [9 x i8] c"\01\01\00\01\01+\01\05\02" }>, section "__llvm_covfun", comdat, align 8 
          71: @__covrec_9DA069E8A9CA2C9u = linkonce_odr hidden constant <{ i64, i32, i64, i64, [26 x i8] }> <{ i64 709887169264394953, i32 26, i64 4490616907620167056, i64 -8916703881926681984, [26 x i8] c"\01\01\01\01\05\04\012\01\04\13\05\05\09\00\18\02\01\05\00\06\01\01\01\00\02" }>, section "__llvm_covfun", comdat, align 8 
          72: @__covrec_5690D14D8325DB4Au = linkonce_odr hidden constant <{ i64, i32, i64, i64, [26 x i8] }> <{ i64 6237715614751120202, i32 26, i64 4490616907620167056, i64 -8916703881926681984, [26 x i8] c"\01\01\01\01\05\04\012\01\04\13\05\05\09\00\18\02\01\05\00\06\01\01\01\00\02" }>, section "__llvm_covfun", comdat, align 8 
          73: @__covrec_138797266E6ABDC1u = linkonce_odr hidden constant <{ i64, i32, i64, i64, [26 x i8] }> <{ i64 1407259599893609921, i32 26, i64 4490616907620167056, i64 -8916703881926681984, [26 x i8] c"\01\01\01\01\05\04\012\01\04\13\05\05\09\00\18\02\01\05\00\06\01\01\01\00\02" }>, section "__llvm_covfun", comdat, align 8 
          74: @__covrec_53F9FD11B26D788Au = linkonce_odr hidden constant <{ i64, i32, i64, i64, [41 x i8] }> <{ i64 6051145826798762122, i32 41, i64 -8278694896101811857, i64 -8916703881926681984, [41 x i8] c"\01\01\01\01\05\07\01;\01\04\13\05\04\14\012\05\01V\012\05\01V\01\06\02\01\0C\01/\02\01^\01\06\01\02\01\00\02" }>, section "__llvm_covfun", comdat, align 8 
          75: @__covrec_CEC584AB7289F43u = linkonce_odr hidden constant <{ i64, i32, i64, i64, [9 x i8] }> <{ i64 931216300882566979, i32 9, i64 -8278694896101811857, i64 -8916703881926681984, [9 x i8] c"\01\01\00\01\01@:\00V" }>, section "__llvm_covfun", comdat, align 8 
          76: @__covrec_C6C88DA2C8EF10E1u = linkonce_odr hidden constant <{ i64, i32, i64, i64, [9 x i8] }> <{ i64 -4122889728562360095, i32 9, i64 -8278694896101811857, i64 -8916703881926681984, [9 x i8] c"\01\01\00\01\01A:\00V" }>, section "__llvm_covfun", comdat, align 8 
          77: @__covrec_AAF7C95823D55CB4u = linkonce_odr hidden constant <{ i64, i32, i64, i64, [9 x i8] }> <{ i64 -6127207387618779980, i32 9, i64 -8278694896101811857, i64 -8916703881926681984, [9 x i8] c"\01\01\00\01\01C7\00^" }>, section "__llvm_covfun", comdat, align 8 
          78: @__profc__RNvCs2vQph7PjJMo_8testprog14will_be_called = private global [1 x i64] zeroinitializer, section "__llvm_prf_cnts", comdat, align 8 
          79: @__profd__RNvCs2vQph7PjJMo_8testprog14will_be_called = private global { i64, i64, i64, i64, ptr, ptr, i32, [2 x i16], i32 } { i64 2133449835006463093, i64 -6571832530001747915, i64 sub (i64 ptrtoint (ptr @__profc__RNvCs2vQph7PjJMo_8testprog14will_be_called to i64), i64 ptrtoint (ptr @__profd__RNvCs2vQph7PjJMo_8testprog14will_be_called to i64)), i64 0, ptr null, ptr null, i32 1, [2 x i16] zeroinitializer, i32 0 }, section "__llvm_prf_data", comdat($__profc__RNvCs2vQph7PjJMo_8testprog14will_be_called), align 8 
          80: @__profc__RNvCs2vQph7PjJMo_8testprog18will_not_be_called = private global [1 x i64] zeroinitializer, section "__llvm_prf_cnts", comdat, align 8 
          81: @__profd__RNvCs2vQph7PjJMo_8testprog18will_not_be_called = private global { i64, i64, i64, i64, ptr, ptr, i32, [2 x i16], i32 } { i64 3923299551506832565, i64 -2764016617801376853, i64 sub (i64 ptrtoint (ptr @__profc__RNvCs2vQph7PjJMo_8testprog18will_not_be_called to i64), i64 ptrtoint (ptr @__profd__RNvCs2vQph7PjJMo_8testprog18will_not_be_called to i64)), i64 0, ptr null, ptr null, i32 1, [2 x i16] zeroinitializer, i32 0 }, section "__llvm_prf_data", comdat($__profc__RNvCs2vQph7PjJMo_8testprog18will_not_be_called), align 8 
          82: @__profc__RINvCs2vQph7PjJMo_8testprog5printRReEB2_ = private global [1 x i64] zeroinitializer, section "__llvm_prf_cnts", comdat, align 8 
          83: @__profd__RINvCs2vQph7PjJMo_8testprog5printRReEB2_ = private global { i64, i64, i64, i64, ptr, ptr, i32, [2 x i16], i32 } { i64 2082856106445614913, i64 6031088114520241132, i64 sub (i64 ptrtoint (ptr @__profc__RINvCs2vQph7PjJMo_8testprog5printRReEB2_ to i64), i64 ptrtoint (ptr @__profd__RINvCs2vQph7PjJMo_8testprog5printRReEB2_ to i64)), i64 0, ptr null, ptr null, i32 1, [2 x i16] zeroinitializer, i32 0 }, section "__llvm_prf_data", comdat($__profc__RINvCs2vQph7PjJMo_8testprog5printRReEB2_), align 8 
          84: @__profc__RINvCs2vQph7PjJMo_8testprog5printRbEB2_ = private global [1 x i64] zeroinitializer, section "__llvm_prf_cnts", comdat, align 8 
          85: @__profd__RINvCs2vQph7PjJMo_8testprog5printRbEB2_ = private global { i64, i64, i64, i64, ptr, ptr, i32, [2 x i16], i32 } { i64 -6716133384115934427, i64 6031088114520241132, i64 sub (i64 ptrtoint (ptr @__profc__RINvCs2vQph7PjJMo_8testprog5printRbEB2_ to i64), i64 ptrtoint (ptr @__profd__RINvCs2vQph7PjJMo_8testprog5printRbEB2_ to i64)), i64 0, ptr null, ptr null, i32 1, [2 x i16] zeroinitializer, i32 0 }, section "__llvm_prf_data", comdat($__profc__RINvCs2vQph7PjJMo_8testprog5printRbEB2_), align 8 
          86: @__profc__RINvCs2vQph7PjJMo_8testprog9wrap_withNCNvB2_4main0ReEB2_ = private global [2 x i64] zeroinitializer, section "__llvm_prf_cnts", comdat, align 8 
          87: @__profd__RINvCs2vQph7PjJMo_8testprog9wrap_withNCNvB2_4main0ReEB2_ = private global { i64, i64, i64, i64, ptr, ptr, i32, [2 x i16], i32 } { i64 709887169264394953, i64 4490616907620167056, i64 sub (i64 ptrtoint (ptr @__profc__RINvCs2vQph7PjJMo_8testprog9wrap_withNCNvB2_4main0ReEB2_ to i64), i64 ptrtoint (ptr @__profd__RINvCs2vQph7PjJMo_8testprog9wrap_withNCNvB2_4main0ReEB2_ to i64)), i64 0, ptr null, ptr null, i32 2, [2 x i16] zeroinitializer, i32 0 }, section "__llvm_prf_data", comdat($__profc__RINvCs2vQph7PjJMo_8testprog9wrap_withNCNvB2_4main0ReEB2_), align 8 
          88: @__profc__RINvCs2vQph7PjJMo_8testprog9wrap_withNCNvB2_4mains0_0bEB2_ = private global [2 x i64] zeroinitializer, section "__llvm_prf_cnts", comdat, align 8 
          89: @__profd__RINvCs2vQph7PjJMo_8testprog9wrap_withNCNvB2_4mains0_0bEB2_ = private global { i64, i64, i64, i64, ptr, ptr, i32, [2 x i16], i32 } { i64 6237715614751120202, i64 4490616907620167056, i64 sub (i64 ptrtoint (ptr @__profc__RINvCs2vQph7PjJMo_8testprog9wrap_withNCNvB2_4mains0_0bEB2_ to i64), i64 ptrtoint (ptr @__profd__RINvCs2vQph7PjJMo_8testprog9wrap_withNCNvB2_4mains0_0bEB2_ to i64)), i64 0, ptr null, ptr null, i32 2, [2 x i16] zeroinitializer, i32 0 }, section "__llvm_prf_data", comdat($__profc__RINvCs2vQph7PjJMo_8testprog9wrap_withNCNvB2_4mains0_0bEB2_), align 8 
          90: @__profc__RINvCs2vQph7PjJMo_8testprog9wrap_withNCNvB2_4mains_0ReEB2_ = private global [2 x i64] zeroinitializer, section "__llvm_prf_cnts", comdat, align 8 
          91: @__profd__RINvCs2vQph7PjJMo_8testprog9wrap_withNCNvB2_4mains_0ReEB2_ = private global { i64, i64, i64, i64, ptr, ptr, i32, [2 x i16], i32 } { i64 1407259599893609921, i64 4490616907620167056, i64 sub (i64 ptrtoint (ptr @__profc__RINvCs2vQph7PjJMo_8testprog9wrap_withNCNvB2_4mains_0ReEB2_ to i64), i64 ptrtoint (ptr @__profd__RINvCs2vQph7PjJMo_8testprog9wrap_withNCNvB2_4mains_0ReEB2_ to i64)), i64 0, ptr null, ptr null, i32 2, [2 x i16] zeroinitializer, i32 0 }, section "__llvm_prf_data", comdat($__profc__RINvCs2vQph7PjJMo_8testprog9wrap_withNCNvB2_4mains_0ReEB2_), align 8 
          92: @__profc__RNvCs2vQph7PjJMo_8testprog4main = private global [2 x i64] zeroinitializer, section "__llvm_prf_cnts", comdat, align 8 
          93: @__profd__RNvCs2vQph7PjJMo_8testprog4main = private global { i64, i64, i64, i64, ptr, ptr, i32, [2 x i16], i32 } { i64 6051145826798762122, i64 -8278694896101811857, i64 sub (i64 ptrtoint (ptr @__profc__RNvCs2vQph7PjJMo_8testprog4main to i64), i64 ptrtoint (ptr @__profd__RNvCs2vQph7PjJMo_8testprog4main to i64)), i64 0, ptr null, ptr null, i32 2, [2 x i16] zeroinitializer, i32 0 }, section "__llvm_prf_data", comdat($__profc__RNvCs2vQph7PjJMo_8testprog4main), align 8 
          94: @__profc__RNCNvCs2vQph7PjJMo_8testprog4main0B3_ = private global [1 x i64] zeroinitializer, section "__llvm_prf_cnts", comdat, align 8 
          95: @__profd__RNCNvCs2vQph7PjJMo_8testprog4main0B3_ = private global { i64, i64, i64, i64, ptr, ptr, i32, [2 x i16], i32 } { i64 931216300882566979, i64 -8278694896101811857, i64 sub (i64 ptrtoint (ptr @__profc__RNCNvCs2vQph7PjJMo_8testprog4main0B3_ to i64), i64 ptrtoint (ptr @__profd__RNCNvCs2vQph7PjJMo_8testprog4main0B3_ to i64)), i64 0, ptr null, ptr null, i32 1, [2 x i16] zeroinitializer, i32 0 }, section "__llvm_prf_data", comdat($__profc__RNCNvCs2vQph7PjJMo_8testprog4main0B3_), align 8 
          96: @__profc__RNCNvCs2vQph7PjJMo_8testprog4mains_0B3_ = private global [1 x i64] zeroinitializer, section "__llvm_prf_cnts", comdat, align 8 
          97: @__profd__RNCNvCs2vQph7PjJMo_8testprog4mains_0B3_ = private global { i64, i64, i64, i64, ptr, ptr, i32, [2 x i16], i32 } { i64 -4122889728562360095, i64 -8278694896101811857, i64 sub (i64 ptrtoint (ptr @__profc__RNCNvCs2vQph7PjJMo_8testprog4mains_0B3_ to i64), i64 ptrtoint (ptr @__profd__RNCNvCs2vQph7PjJMo_8testprog4mains_0B3_ to i64)), i64 0, ptr null, ptr null, i32 1, [2 x i16] zeroinitializer, i32 0 }, section "__llvm_prf_data", comdat($__profc__RNCNvCs2vQph7PjJMo_8testprog4mains_0B3_), align 8 
          98: @__profc__RNCNvCs2vQph7PjJMo_8testprog4mains0_0B3_ = private global [1 x i64] zeroinitializer, section "__llvm_prf_cnts", comdat, align 8 
          99: @__profd__RNCNvCs2vQph7PjJMo_8testprog4mains0_0B3_ = private global { i64, i64, i64, i64, ptr, ptr, i32, [2 x i16], i32 } { i64 -6127207387618779980, i64 -8278694896101811857, i64 sub (i64 ptrtoint (ptr @__profc__RNCNvCs2vQph7PjJMo_8testprog4mains0_0B3_ to i64), i64 ptrtoint (ptr @__profd__RNCNvCs2vQph7PjJMo_8testprog4mains0_0B3_ to i64)), i64 0, ptr null, ptr null, i32 1, [2 x i16] zeroinitializer, i32 0 }, section "__llvm_prf_data", comdat($__profc__RNCNvCs2vQph7PjJMo_8testprog4mains0_0B3_), align 8 
         100: @__llvm_prf_nm = private constant [145 x i8] c"\FB\03\8D\01x\DA\9D\CD\D1\0A\C2 \14\80az\A3\D3Z\B4n']\14$\CD\178\B8\92f\98\8A\8A\BE\FE\967\11\B4%\DD\7F??2\1A\89\AFbg\87\DD\E5q:\1Bl\82\F0\C1:s_\D7I*\85\BD\C0+WJ\DCV\B8`\9Bl\B5\09\1F\FE8\1Bl\AD\93:0&\0Em\85%\B2\FF\09\F7\C9q\8BI\86\81\12\1A']?\B9\D4P\B0\F8^z@\F8\F7\EA\F1\FD\9DM\B3|\01\B2L\A0\DD`\01\9B\9E\85\10\B2\1C\01\DFd\B3\A1", section "__llvm_prf_names", align 1 
         101: @llvm.compiler.used = appending global [11 x ptr] [ptr @__profd__RNvCs2vQph7PjJMo_8testprog14will_be_called, ptr @__profd__RNvCs2vQph7PjJMo_8testprog18will_not_be_called, ptr @__profd__RINvCs2vQph7PjJMo_8testprog5printRReEB2_, ptr @__profd__RINvCs2vQph7PjJMo_8testprog5printRbEB2_, ptr @__profd__RINvCs2vQph7PjJMo_8testprog9wrap_withNCNvB2_4main0ReEB2_, ptr @__profd__RINvCs2vQph7PjJMo_8testprog9wrap_withNCNvB2_4mains0_0bEB2_, ptr @__profd__RINvCs2vQph7PjJMo_8testprog9wrap_withNCNvB2_4mains_0ReEB2_, ptr @__profd__RNvCs2vQph7PjJMo_8testprog4main, ptr @__profd__RNCNvCs2vQph7PjJMo_8testprog4main0B3_, ptr @__profd__RNCNvCs2vQph7PjJMo_8testprog4mains_0B3_, ptr @__profd__RNCNvCs2vQph7PjJMo_8testprog4mains0_0B3_], section "llvm.metadata" 
         102: @llvm.used = appending global [13 x ptr] [ptr @__llvm_coverage_mapping, ptr @__covrec_1D9B895249AD0C75u, ptr @__covrec_36725C27D3039CB5u, ptr @__covrec_1CE7CA97E6F1AF41u, ptr @__covrec_A2CB80454FA0AB25u, ptr @__covrec_9DA069E8A9CA2C9u, ptr @__covrec_5690D14D8325DB4Au, ptr @__covrec_138797266E6ABDC1u, ptr @__covrec_53F9FD11B26D788Au, ptr @__covrec_CEC584AB7289F43u, ptr @__covrec_C6C88DA2C8EF10E1u, ptr @__covrec_AAF7C95823D55CB4u, ptr @__llvm_prf_nm], section "llvm.metadata" 
check:106                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  X error: no match found
         103: @__llvm_profile_filename = hidden constant [22 x i8] c"default_%m_%p.profraw\00", comdat 
         104:  
check:106     ~
check:106     ~
         105: ; <core::fmt::Arguments>::new_v1::<2, 1> 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         106: ; Function Attrs: inlinehint nonlazybind uwtable 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         107: define hidden void @_RINvMs2_NtCs6o8oohoFcRE_4core3fmtNtB6_9Arguments6new_v1Kj2_Kj1_ECs2vQph7PjJMo_8testprog(ptr sret([48 x i8]) align 8 %_0, ptr align 8 %pieces, ptr align 8 %args) unnamed_addr #0 { 
         108: start: 
check:106     ~~~~~~~
         109:  %0 = getelementptr inbounds i8, ptr %_0, i64 16 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         110:  store ptr %pieces, ptr %0, align 8 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         111:  %1 = getelementptr inbounds i8, ptr %0, i64 8 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         112:  store i64 2, ptr %1, align 8 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         113:  %2 = load ptr, ptr @0, align 8 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         114:  %3 = load i64, ptr getelementptr inbounds (i8, ptr @0, i64 8), align 8 
         115:  %4 = getelementptr inbounds i8, ptr %_0, i64 32 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         116:  store ptr %2, ptr %4, align 8 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         117:  %5 = getelementptr inbounds i8, ptr %4, i64 8 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         118:  store i64 %3, ptr %5, align 8 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         119:  store ptr %args, ptr %_0, align 8 
         120:  %6 = getelementptr inbounds i8, ptr %_0, i64 8 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         121:  store i64 1, ptr %6, align 8 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         122:  ret void 
check:106     ~~~~~~~~~~
         123: } 
check:106     ~~
         124:  
check:106     ~
         125: ; <core::fmt::Arguments>::new_v1::<4, 3> 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         126: ; Function Attrs: inlinehint nonlazybind uwtable 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         127: define hidden void @_RINvMs2_NtCs6o8oohoFcRE_4core3fmtNtB6_9Arguments6new_v1Kj4_Kj3_ECs2vQph7PjJMo_8testprog(ptr sret([48 x i8]) align 8 %_0, ptr align 8 %pieces, ptr align 8 %args) unnamed_addr #0 { 
         128: start: 
check:106     ~~~~~~~
         129:  %0 = getelementptr inbounds i8, ptr %_0, i64 16 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         130:  store ptr %pieces, ptr %0, align 8 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         131:  %1 = getelementptr inbounds i8, ptr %0, i64 8 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         132:  store i64 4, ptr %1, align 8 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         133:  %2 = load ptr, ptr @0, align 8 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         134:  %3 = load i64, ptr getelementptr inbounds (i8, ptr @0, i64 8), align 8 
         135:  %4 = getelementptr inbounds i8, ptr %_0, i64 32 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         136:  store ptr %2, ptr %4, align 8 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         137:  %5 = getelementptr inbounds i8, ptr %4, i64 8 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         138:  store i64 %3, ptr %5, align 8 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         139:  store ptr %args, ptr %_0, align 8 
         140:  %6 = getelementptr inbounds i8, ptr %_0, i64 8 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         141:  store i64 3, ptr %6, align 8 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         142:  ret void 
check:106     ~~~~~~~~~~
         143: } 
check:106     ~~
         144:  
check:106     ~
         145: ; <core::fmt::Arguments>::new_const::<1> 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         146: ; Function Attrs: inlinehint nonlazybind uwtable 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         147: define hidden void @_RINvMs2_NtCs6o8oohoFcRE_4core3fmtNtB6_9Arguments9new_constKj1_ECs2vQph7PjJMo_8testprog(ptr sret([48 x i8]) align 8 %_0, ptr align 8 %pieces) unnamed_addr #0 { 
         148: start: 
check:106     ~~~~~~~
         149:  %0 = getelementptr inbounds i8, ptr %_0, i64 16 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         150:  store ptr %pieces, ptr %0, align 8 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         151:  %1 = getelementptr inbounds i8, ptr %0, i64 8 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         152:  store i64 1, ptr %1, align 8 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         153:  %2 = load ptr, ptr @0, align 8 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         154:  %3 = load i64, ptr getelementptr inbounds (i8, ptr @0, i64 8), align 8 
         155:  %4 = getelementptr inbounds i8, ptr %_0, i64 32 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         156:  store ptr %2, ptr %4, align 8 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
---
         164:  
check:106     ~
         165: ; core::ptr::drop_in_place::<std::rt::lang_start<()>::{closure#0}> 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         166: ; Function Attrs: inlinehint nonlazybind uwtable 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         167: define hidden void @_RINvNtCs6o8oohoFcRE_4core3ptr13drop_in_placeNCINvNtCs8rMuRaksE4y_3std2rt10lang_startuE0ECs2vQph7PjJMo_8testprog(ptr align 8 %_1) unnamed_addr #0 { 
         168: start: 
check:106     ~~~~~~~
         169:  ret void 
check:106     ~~~~~~~~~~
check:106     ~~~~~~~~~~
         170: } 
check:106     ~~
         171:  
check:106     ~
         172: ; std::rt::lang_start::<()> 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         173: ; Function Attrs: nonlazybind uwtable 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         174: define hidden i64 @_RINvNtCs8rMuRaksE4y_3std2rt10lang_startuECs2vQph7PjJMo_8testprog(ptr %main, i64 %argc, ptr %argv, i8 %sigpipe) unnamed_addr #1 { 
         175: start: 
check:106     ~~~~~~~
         176:  %_8 = alloca [8 x i8], align 8 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         177:  %_5 = alloca [8 x i8], align 8 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         178:  store ptr %main, ptr %_8, align 8 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         179: ; call std::rt::lang_start_internal 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         180:  %0 = call i64 @_RNvNtCs8rMuRaksE4y_3std2rt19lang_start_internal(ptr align 1 %_8, ptr align 8 @vtable.0, i64 %argc, ptr %argv, i8 %sigpipe) 
         181:  store i64 %0, ptr %_5, align 8 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         182:  %v = load i64, ptr %_5, align 8 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         183:  ret i64 %v 
         184: } 
check:106     ~~
         185:  
check:106     ~
check:106     ~
         186: ; std::sys::backtrace::__rust_begin_short_backtrace::<fn(), ()> 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         187: ; Function Attrs: noinline nonlazybind uwtable 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         188: define hidden void @_RINvNtNtCs8rMuRaksE4y_3std3sys9backtrace28___rust_begin_short_backtraceFEuuECs2vQph7PjJMo_8testprog(ptr %f) unnamed_addr #2 { 
         189: start: 
check:106     ~~~~~~~
         190: ; call <fn() as core::ops::function::FnOnce<()>>::call_once 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         191:  call void @_RNvYFEuINtNtNtCs6o8oohoFcRE_4core3ops8function6FnOnceuE9call_onceCs2vQph7PjJMo_8testprog(ptr %f) 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         192:  call void asm sideeffect "", "~{memory}"(), !srcloc !4 
         193:  ret void 
check:106     ~~~~~~~~~~
         194: } 
check:106     ~~
check:106     ~~
         195:  
check:106     ~
         196: ; std::rt::lang_start::<()>::{closure#0} 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         197: ; Function Attrs: inlinehint nonlazybind uwtable 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         198: define hidden i32 @_RNCINvNtCs8rMuRaksE4y_3std2rt10lang_startuE0Cs2vQph7PjJMo_8testprog(ptr align 8 %_1) unnamed_addr #0 { 
         199: start: 
check:106     ~~~~~~~
         200:  %self = alloca [1 x i8], align 1 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         201:  %_4 = load ptr, ptr %_1, align 8 
         202: ; call std::sys::backtrace::__rust_begin_short_backtrace::<fn(), ()> 
check:106     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           .
           .
           .
           .
>>>>>>
------------------------------------------


---- [codegen] tests/codegen/issue-97217.rs stdout ----

error: verification with 'FileCheck' failed
status: exit status: 1
command: "/usr/lib/llvm-18/bin/FileCheck" "--input-file" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/issue-97217/issue-97217.ll" "/checkout/tests/codegen/issue-97217.rs" "--check-prefix=CHECK" "--check-prefix" "NONMSVC" "--allow-unused-prefixes" "--dump-input-context" "100"
--- stderr -------------------------------
/checkout/tests/codegen/issue-97217.rs:13:16: error: CHECK-NOT: excluded string found in input
/checkout/tests/codegen/issue-97217.rs:13:16: error: CHECK-NOT: excluded string found in input
 // CHECK-NOT: __rust_alloc
               ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/issue-97217/issue-97217.ll:143:82: note: found here
attributes #5 = { nounwind nonlazybind allockind("free") uwtable "alloc-family"="__rust_alloc" "probe-stack"="inline-asm" "target-cpu"="x86-64" }

Input file: /checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/issue-97217/issue-97217.ll
Check file: /checkout/tests/codegen/issue-97217.rs


-dump-input=help explains the following input dump.
Input was:
<<<<<<
        .
        .
        .
        .
       43:  br i1 %7, label %bb4, label %bb1.i 
       44:  
       45: bb1.i: ; preds = %bb2 
       46:  tail call void @__rust_dealloc(ptr noundef nonnull %self.val, i64 noundef %3, i64 noundef %elem_layout.1) #8 
       47:  br label %bb4 
       48:  
       49: bb4: ; preds = %start, %bb1.i, %bb2 
       50:  ret void 
       51: } 
       53: ; <alloc::vec::Vec<T,A> as core::ops::drop::Drop>::drop 
       53: ; <alloc::vec::Vec<T,A> as core::ops::drop::Drop>::drop 
       54: ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable 
       55: define hidden void @"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h51d027eda55be463E"(ptr noalias nocapture noundef readnone align 8 dereferenceable(24) %self) unnamed_addr #2 { 
       57:  ret void 
       58: } 
       59:  
       60: ; <alloc::raw_vec::RawVec<T,A> as core::ops::drop::Drop>::drop 
       60: ; <alloc::raw_vec::RawVec<T,A> as core::ops::drop::Drop>::drop 
       61: ; Function Attrs: nounwind nonlazybind uwtable 
       62: define hidden void @"_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17he8cc96a4b64d2418E"(ptr noalias nocapture noundef readonly align 8 dereferenceable(16) %self) unnamed_addr #1 { 
       63: start: 
       64:  tail call void @llvm.experimental.noalias.scope.decl(metadata !3) 
       65:  %0 = getelementptr inbounds i8, ptr %self, i64 8 
       66:  %self.val1.i = load i64, ptr %0, align 8, !alias.scope !3 
       67:  %1 = icmp eq i64 %self.val1.i, 0 
       68:  br i1 %1, label %"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$10deallocate17h39ffbca28b72ab67E.exit", label %bb1.i.i 
       69:  
       70: bb1.i.i: ; preds = %start 
       71:  %self.val.i = load ptr, ptr %self, align 8, !alias.scope !3, !nonnull !6, !noundef !6 
       72:  %2 = shl nuw i64 %self.val1.i, 2 
       73:  tail call void @__rust_dealloc(ptr noundef nonnull %self.val.i, i64 noundef %2, i64 noundef 4) #8, !noalias !3 
       74:  br label %"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$10deallocate17h39ffbca28b72ab67E.exit" 
       75:  
       76: "_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$10deallocate17h39ffbca28b72ab67E.exit": ; preds = %start, %bb1.i.i 
       77:  ret void 
       78: } 
       79:  
       80: ; Function Attrs: nonlazybind uwtable 
       81: define noundef i32 @issue97217() unnamed_addr #3 personality ptr @rust_eh_personality { 
       82: bb5.i: 
       83:  %_10 = alloca [16 x i8], align 8 
       84:  %_8 = alloca [48 x i8], align 8 
       85:  %total = alloca [4 x i8], align 4 
       86:  %0 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 
       87:  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %total) 
       88:  store i32 18, ptr %total, align 4 
       89:  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %_8) 
       90:  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %_10) 
       91:  store ptr %total, ptr %_10, align 8 
       92:  %_11.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %_10, i64 8 
       93:  store ptr @_RNvXs5_NtNtNtCs6o8oohoFcRE_4core3fmt3num3implNtB9_7Display3fmt, ptr %_11.sroa.4.0..sroa_idx, align 8 
       94:  %1 = getelementptr inbounds i8, ptr %_8, i64 16 
       95:  store ptr @alloc_9771be2481f51be410bd2ac520d18601, ptr %1, align 8 
       96:  %2 = getelementptr inbounds i8, ptr %_8, i64 24 
       97:  store i64 2, ptr %2, align 8 
       98:  %3 = getelementptr inbounds i8, ptr %_8, i64 32 
       99:  store ptr null, ptr %3, align 8 
      100:  store ptr %_10, ptr %_8, align 8 
      101:  %4 = getelementptr inbounds i8, ptr %_8, i64 8 
      102:  store i64 1, ptr %4, align 8 
      103: ; call std::io::stdio::_print 
      104:  call void @_RNvNtNtCs8rMuRaksE4y_3std2io5stdio6__print(ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %_8) 
      105:  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %_8) 
      106:  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %_10) 
      107:  %_0 = load i32, ptr %total, align 4, !noundef !6 
      108:  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %total) 
      109:  ret i32 %_0 
      110: } 
      111:  
      112: ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) 
      113: declare void @llvm.assume(i1 noundef) #4 
      114:  
      115: ; Function Attrs: nounwind nonlazybind uwtable 
      116: declare noundef i32 @rust_eh_personality(i32 noundef, i32 noundef, i64 noundef, ptr noundef, ptr noundef) unnamed_addr #1 
      117:  
      118: ; Function Attrs: nounwind nonlazybind allockind("free") uwtable 
      119: declare void @__rust_dealloc(ptr allocptr noundef, i64 noundef, i64 noundef) unnamed_addr #5 
      121: ; <i32 as core::fmt::Display>::fmt 
      121: ; <i32 as core::fmt::Display>::fmt 
      122: ; Function Attrs: nonlazybind uwtable 
      123: declare noundef zeroext i1 @_RNvXs5_NtNtNtCs6o8oohoFcRE_4core3fmt3num3implNtB9_7Display3fmt(ptr noalias noundef readonly align 4 dereferenceable(4), ptr noalias noundef align 8 dereferenceable(64)) unnamed_addr #3 
      125: ; std::io::stdio::_print 
      125: ; std::io::stdio::_print 
      126: ; Function Attrs: nonlazybind uwtable 
      127: declare void @_RNvNtNtCs8rMuRaksE4y_3std2io5stdio6__print(ptr noalias nocapture noundef align 8 dereferenceable(48)) unnamed_addr #3 
      128:  
      129: ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) 
      130: declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #6 
      131:  
      132: ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) 
      133: declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #6 
      134:  
      135: ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) 
      136: declare void @llvm.experimental.noalias.scope.decl(metadata) #7 
      137:  
      138: attributes #0 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } 
      139: attributes #1 = { nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } 
      140: attributes #2 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } 
      141: attributes #3 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } 
      142: attributes #4 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } 
      143: attributes #5 = { nounwind nonlazybind allockind("free") uwtable "alloc-family"="__rust_alloc" "probe-stack"="inline-asm" "target-cpu"="x86-64" } 
not:13                                                                                      !~~~~~~~~~~~                                                      error: no match expected
      144: attributes #6 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } 
      145: attributes #7 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } 
      146: attributes #8 = { nounwind } 
      147:  
      148: !llvm.module.flags = !{!0, !1} 
      149: !llvm.ident = !{!2} 
      150:  
      151: !0 = !{i32 8, !"PIC Level", i32 2} 
      152: !1 = !{i32 2, !"RtLibUseGOT", i32 1} 
      153: !2 = !{!"rustc version 1.85.0-nightly (18234b911 2024-12-08)"} 
      154: !3 = !{!4} 
      155: !4 = distinct !{!4, !5, !"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$10deallocate17h39ffbca28b72ab67E: %self"} 
      156: !5 = distinct !{!5, !"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$10deallocate17h39ffbca28b72ab67E"} 
      157: !6 = !{} 
------------------------------------------


---- [codegen] tests/codegen/issues/issue-103840.rs stdout ----
---- [codegen] tests/codegen/issues/issue-103840.rs stdout ----

error: verification with 'FileCheck' failed
status: exit status: 1
command: "/usr/lib/llvm-18/bin/FileCheck" "--input-file" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/issues/issue-103840/issue-103840.ll" "/checkout/tests/codegen/issues/issue-103840.rs" "--check-prefix=CHECK" "--check-prefix" "NONMSVC" "--allow-unused-prefixes" "--dump-input-context" "100"
--- stderr -------------------------------
/checkout/tests/codegen/issues/issue-103840.rs:5:16: error: CHECK-NOT: excluded string found in input
/checkout/tests/codegen/issues/issue-103840.rs:5:16: error: CHECK-NOT: excluded string found in input
 // CHECK-NOT: __rust_dealloc
               ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/issues/issue-103840/issue-103840.ll:28:18: note: found here
 tail call void @__rust_dealloc(ptr noundef nonnull %self3.i, i64 noundef %3, i64 noundef %elem_layout.1) #7

Input file: /checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/issues/issue-103840/issue-103840.ll
Check file: /checkout/tests/codegen/issues/issue-103840.rs


-dump-input=help explains the following input dump.
Input was:
<<<<<<
<<<<<<
       1: ; ModuleID = 'issue_103840.a72b67498cee3ad5-cgu.0' 
       2: source_filename = "issue_103840.a72b67498cee3ad5-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: ; alloc::raw_vec::RawVecInner<A>::deallocate 
       7: ; Function Attrs: nounwind nonlazybind uwtable 
       8: define hidden void @"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$10deallocate17h2dddbe218956c545E"(ptr noalias nocapture noundef readonly align 8 dereferenceable(16) %self, i64 noundef %elem_layout.0, i64 noundef %elem_layout.1) unnamed_addr #0 { 
       9: start: 
      10:  %0 = icmp eq i64 %elem_layout.0, 0 
      11:  %1 = getelementptr inbounds i8, ptr %self, i64 8 
      12:  %_5.i = load i64, ptr %1, align 8, !alias.scope !3, !noalias !6 
      13:  %2 = icmp eq i64 %_5.i, 0 
      14:  %or.cond.i = select i1 %0, i1 true, i1 %2 
      15:  br i1 %or.cond.i, label %bb4, label %bb2 
      16:  
      17: bb2: ; preds = %start 
      18:  %3 = mul nuw i64 %_5.i, %elem_layout.0 
      19:  %4 = icmp ne i64 %elem_layout.1, 0 
      20:  tail call void @llvm.assume(i1 %4) 
      21:  %5 = icmp ult i64 %elem_layout.1, -9223372036854775807 
      22:  tail call void @llvm.assume(i1 %5) 
      23:  %6 = icmp eq i64 %3, 0 
      24:  br i1 %6, label %bb4, label %bb1.i 
      25:  
      26: bb1.i: ; preds = %bb2 
      27:  %self3.i = load ptr, ptr %self, align 8, !alias.scope !3, !noalias !6, !nonnull !8, !noundef !8 
      28:  tail call void @__rust_dealloc(ptr noundef nonnull %self3.i, i64 noundef %3, i64 noundef %elem_layout.1) #7 
not:5                      !~~~~~~~~~~~~~                                                                               error: no match expected
      29:  br label %bb4 
      30:  
      31: bb4: ; preds = %start, %bb1.i, %bb2 
      32:  ret void 
      33: } 
      35: ; <alloc::vec::Vec<T,A> as core::ops::drop::Drop>::drop 
      35: ; <alloc::vec::Vec<T,A> as core::ops::drop::Drop>::drop 
      36: ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable 
      37: define hidden void @"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h2712c96390b223d7E"(ptr noalias nocapture noundef readnone align 8 dereferenceable(24) %self) unnamed_addr #1 { 
      39:  ret void 
      40: } 
      41:  
      42: ; <alloc::raw_vec::RawVec<T,A> as core::ops::drop::Drop>::drop 
      42: ; <alloc::raw_vec::RawVec<T,A> as core::ops::drop::Drop>::drop 
      43: ; Function Attrs: nounwind nonlazybind uwtable 
      44: define hidden void @"_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hd1da659966ea0b9aE"(ptr noalias nocapture noundef readonly align 8 dereferenceable(16) %self) unnamed_addr #0 { 
      45: start: 
      46:  tail call void @llvm.experimental.noalias.scope.decl(metadata !9) 
      47:  %0 = getelementptr inbounds i8, ptr %self, i64 8 
      48:  %_5.i.i = load i64, ptr %0, align 8, !alias.scope !12, !noalias !15 
      49:  %1 = icmp eq i64 %_5.i.i, 0 
      50:  br i1 %1, label %"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$10deallocate17h2dddbe218956c545E.exit", label %bb1.i.i 
      51:  
      52: bb1.i.i: ; preds = %start 
      53:  %2 = shl nuw i64 %_5.i.i, 3 
      54:  %self3.i.i = load ptr, ptr %self, align 8, !alias.scope !12, !noalias !15, !nonnull !8, !noundef !8 
      55:  tail call void @__rust_dealloc(ptr noundef nonnull %self3.i.i, i64 noundef %2, i64 noundef 8) #7, !noalias !9 
      56:  br label %"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$10deallocate17h2dddbe218956c545E.exit" 
      57:  
      58: "_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$10deallocate17h2dddbe218956c545E.exit": ; preds = %start, %bb1.i.i 
      59:  ret void 
      60: } 
      61:  
      62: ; issue_103840::foo 
      63: ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable 
      64: define void @_ZN12issue_1038403foo17h8c567f2f2ad93248E(ptr noalias nocapture noundef align 8 dereferenceable(24) %t) unnamed_addr #2 personality ptr @rust_eh_personality { 
      65: start: 
      66:  %taken.sroa.0.0.copyload7 = load i64, ptr %t, align 8, !alias.scope !17, !noalias !21 
      67:  %spec.select = tail call i64 @llvm.usub.sat.i64(i64 %taken.sroa.0.0.copyload7, i64 1) 
      68:  store i64 %spec.select, ptr %t, align 8 
      69:  ret void 
      70: } 
      71:  
      72: ; Function Attrs: nounwind nonlazybind uwtable 
      73: declare noundef i32 @rust_eh_personality(i32 noundef, i32 noundef, i64 noundef, ptr noundef, ptr noundef) unnamed_addr #0 
      74:  
      75: ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) 
      76: declare void @llvm.assume(i1 noundef) #3 
      77:  
      78: ; Function Attrs: nounwind nonlazybind allockind("free") uwtable 
      79: declare void @__rust_dealloc(ptr allocptr noundef, i64 noundef, i64 noundef) unnamed_addr #4 
      80:  
      81: ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) 
      82: declare void @llvm.experimental.noalias.scope.decl(metadata) #5 
      83:  
      84: ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) 
      85: declare i64 @llvm.usub.sat.i64(i64, i64) #6 
      86:  
      87: attributes #0 = { nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } 
      88: attributes #1 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } 
      89: attributes #2 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } 
      90: attributes #3 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } 
      91: attributes #4 = { nounwind nonlazybind allockind("free") uwtable "alloc-family"="__rust_alloc" "probe-stack"="inline-asm" "target-cpu"="x86-64" } 
      92: attributes #5 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } 
      93: attributes #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } 
      94: attributes #7 = { nounwind } 
      95:  
      96: !llvm.module.flags = !{!0, !1} 
      97: !llvm.ident = !{!2} 
      98:  
      99: !0 = !{i32 8, !"PIC Level", i32 2} 
     100: !1 = !{i32 2, !"RtLibUseGOT", i32 1} 
     101: !2 = !{!"rustc version 1.85.0-nightly (18234b911 2024-12-08)"} 
     102: !3 = !{!4} 
     103: !4 = distinct !{!4, !5, !"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$14current_memory17h6cb3b1d0bb3e68a9E: %self"} 
     104: !5 = distinct !{!5, !"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$14current_memory17h6cb3b1d0bb3e68a9E"} 
     105: !6 = !{!7} 
     106: !7 = distinct !{!7, !5, !"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$14current_memory17h6cb3b1d0bb3e68a9E: %_0"} 
     107: !8 = !{} 
     108: !9 = !{!10} 
     109: !10 = distinct !{!10, !11, !"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$10deallocate17h2dddbe218956c545E: %self"} 
     110: !11 = distinct !{!11, !"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$10deallocate17h2dddbe218956c545E"} 
     111: !12 = !{!13, !10} 
     112: !13 = distinct !{!13, !14, !"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$14current_memory17h6cb3b1d0bb3e68a9E: %self"} 
     113: !14 = distinct !{!14, !"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$14current_memory17h6cb3b1d0bb3e68a9E"} 
     114: !15 = !{!16} 
     115: !16 = distinct !{!16, !14, !"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$14current_memory17h6cb3b1d0bb3e68a9E: %_0"} 
     116: !17 = !{!18, !20} 
     117: !18 = distinct !{!18, !19, !"_ZN4core3mem7replace17h886fbb0a3fe60525E: %_0"} 
     118: !19 = distinct !{!19, !"_ZN4core3mem7replace17h886fbb0a3fe60525E"} 
     119: !20 = distinct !{!20, !19, !"_ZN4core3mem7replace17h886fbb0a3fe60525E: %dest"} 
     120: !21 = !{!22} 
     121: !22 = distinct !{!22, !19, !"_ZN4core3mem7replace17h886fbb0a3fe60525E: %src"} 
------------------------------------------


---- [codegen] tests/codegen/issues/issue-111603.rs stdout ----
---- [codegen] tests/codegen/issues/issue-111603.rs stdout ----

error: verification with 'FileCheck' failed
status: exit status: 1
command: "/usr/lib/llvm-18/bin/FileCheck" "--input-file" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/issues/issue-111603/issue-111603.ll" "/checkout/tests/codegen/issues/issue-111603.rs" "--check-prefix=CHECK" "--check-prefix" "NONMSVC" "--allow-unused-prefixes" "--dump-input-context" "100"
--- stderr -------------------------------
/checkout/tests/codegen/issues/issue-111603.rs:23:12: error: CHECK: expected string not found in input
 // CHECK: call alloc::sync::arcinner_layout_for_value_layout
           ^
           ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/issues/issue-111603/issue-111603.ll:440:39: note: scanning from here
define noundef nonnull ptr @new_uninit(i64 noundef %x) unnamed_addr #1 {
                                      ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/issues/issue-111603/issue-111603.ll:443:3: note: possible intended match here
  ^
/checkout/tests/codegen/issues/issue-111603.rs:33:12: error: CHECK: expected string not found in input
 // CHECK: call alloc::sync::arcinner_layout_for_value_layout
           ^
           ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/issues/issue-111603/issue-111603.ll:486:38: note: scanning from here
define { ptr, i64 } @new_uninit_slice(i64 noundef %x) unnamed_addr #1 personality ptr @rust_eh_personality {
                                     ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/issues/issue-111603/issue-111603.ll:491:3: note: possible intended match here
  ^

Input file: /checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/issues/issue-111603/issue-111603.ll
Check file: /checkout/tests/codegen/issues/issue-111603.rs
Check file: /checkout/tests/codegen/issues/issue-111603.rs

-dump-input=help explains the following input dump.
Input was:
<<<<<<
            .
            .
            .
            .
          340:  %3 = icmp eq i64 %2, 1 
          341:  br i1 %3, label %bb1, label %bb7 
          342:  
          343: bb1: ; preds = %bb9 
          344:  fence acquire 
          345:  %_5 = icmp eq ptr %self.0, @_RNvNtCsg6Tl50Ffchn_5alloc4sync18STATIC_INNER_SLICE 
          346:  br i1 %_5, label %bb2, label %bb3, !prof !19 
          347:  
          348: bb3: ; preds = %bb1 
          349:  %self.17 = load i64, ptr %1, align 8, !noundef !10 
          350:  %4 = shl nsw i64 %self.17, 3 
          351:  %5 = add i64 %4, 23 
          352:  %6 = and i64 %5, -8 
          353:  %7 = icmp eq i64 %6, 0 
          354:  br i1 %7, label %bb7, label %bb1.i.i 
          355:  
          356: bb1.i.i: ; preds = %bb3 
          357:  tail call void @__rust_dealloc(ptr noundef nonnull %self.0, i64 noundef %6, i64 noundef 8) #13 
          358:  br label %bb7 
          359:  
          360: bb2: ; preds = %bb1 
          361:  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %_12) 
          362:  %8 = getelementptr inbounds i8, ptr %_12, i64 16 
          363:  store ptr @alloc_0521c3f341cc8d5b6dc515ca4861d561, ptr %8, align 8 
          364:  %9 = getelementptr inbounds i8, ptr %_12, i64 24 
          365:  store i64 1, ptr %9, align 8 
          366:  %10 = getelementptr inbounds i8, ptr %_12, i64 32 
          367:  store ptr null, ptr %10, align 8 
          368:  store ptr inttoptr (i64 8 to ptr), ptr %_12, align 8 
          369:  %11 = getelementptr inbounds i8, ptr %_12, i64 8 
          370:  store i64 0, ptr %11, align 8 
          371: ; call core::panicking::panic_fmt 
          372:  call void @_RNvNtCs6o8oohoFcRE_4core9panicking9panic_fmt(ptr noalias nocapture noundef nonnull readonly align 8 dereferenceable(48) %_12, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) @alloc_73d841edacb55597b972884b5d7c58b3) #14 
          373:  unreachable 
          374:  
          375: bb7: ; preds = %bb1.i.i, %bb3, %start, %bb9 
          376:  ret void 
          377: } 
          378:  
          379: ; Function Attrs: nonlazybind uwtable 
          380: define { ptr, i64 } @new_from_array(i64 noundef %x) unnamed_addr #1 personality ptr @rust_eh_personality { 
          381: start: 
          382:  %array = alloca [8000 x i8], align 8 
          383:  %broadcast.splatinsert = insertelement <2 x i64> poison, i64 %x, i64 0 
          384:  %broadcast.splat = shufflevector <2 x i64> %broadcast.splatinsert, <2 x i64> poison, <2 x i32> zeroinitializer 
          385:  br label %vector.body 
          386:  
          387: vector.body: ; preds = %vector.body, %start 
          388:  %index = phi i64 [ 0, %start ], [ %index.next.4, %vector.body ] 
          389:  %0 = getelementptr inbounds [1000 x i64], ptr %array, i64 0, i64 %index 
          390:  %1 = getelementptr inbounds i64, ptr %0, i64 2 
          391:  store <2 x i64> %broadcast.splat, ptr %0, align 8 
          392:  store <2 x i64> %broadcast.splat, ptr %1, align 8 
          393:  %index.next = add nuw nsw i64 %index, 4 
          394:  %2 = getelementptr inbounds [1000 x i64], ptr %array, i64 0, i64 %index.next 
          395:  %3 = getelementptr inbounds i64, ptr %2, i64 2 
          396:  store <2 x i64> %broadcast.splat, ptr %2, align 8 
          397:  store <2 x i64> %broadcast.splat, ptr %3, align 8 
          398:  %index.next.1 = add nuw nsw i64 %index, 8 
          399:  %4 = getelementptr inbounds [1000 x i64], ptr %array, i64 0, i64 %index.next.1 
          400:  %5 = getelementptr inbounds i64, ptr %4, i64 2 
          401:  store <2 x i64> %broadcast.splat, ptr %4, align 8 
          402:  store <2 x i64> %broadcast.splat, ptr %5, align 8 
          403:  %index.next.2 = add nuw nsw i64 %index, 12 
          404:  %6 = getelementptr inbounds [1000 x i64], ptr %array, i64 0, i64 %index.next.2 
          405:  %7 = getelementptr inbounds i64, ptr %6, i64 2 
          406:  store <2 x i64> %broadcast.splat, ptr %6, align 8 
          407:  store <2 x i64> %broadcast.splat, ptr %7, align 8 
          408:  %index.next.3 = add nuw nsw i64 %index, 16 
          409:  %8 = getelementptr inbounds [1000 x i64], ptr %array, i64 0, i64 %index.next.3 
          410:  %9 = getelementptr inbounds i64, ptr %8, i64 2 
          411:  store <2 x i64> %broadcast.splat, ptr %8, align 8 
          412:  store <2 x i64> %broadcast.splat, ptr %9, align 8 
          413:  %index.next.4 = add nuw nsw i64 %index, 20 
          414:  %10 = icmp eq i64 %index.next.4, 1000 
          415:  br i1 %10, label %repeat_loop_next, label %vector.body, !llvm.loop !20 
          416:  
          417: repeat_loop_next: ; preds = %vector.body 
          418:  %11 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !23 
          419:  %_0.i.i.i = tail call noalias noundef align 8 dereferenceable_or_null(8016) ptr @__rust_alloc(i64 noundef 8016, i64 noundef 8) #13, !noalias !23 
          420:  %12 = icmp eq ptr %_0.i.i.i, null 
          421:  br i1 %12, label %bb2.i, label %_RNvNtCsg6Tl50Ffchn_5alloc5alloc15exchange_malloc.exit 
          422:  
          423: bb2.i: ; preds = %repeat_loop_next 
          424: ; call alloc::alloc::handle_alloc_error 
          425:  tail call void @_RNvNtCsg6Tl50Ffchn_5alloc5alloc18handle_alloc_error(i64 noundef 8016, i64 noundef 8) #14, !noalias !23 
          426:  unreachable 
          427:  

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
perf-regression Performance regression. S-experimental Status: Ongoing experiment that does not require reviewing and won't be merged in its current state. S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants