Return values larger than 2 registers using a return area pointer
LLVM and Cranelift disagree about how to return values that don't fit in the registers designated for return values. LLVM will force the entire return value to be passed by return area pointer, while Cranelift will look at each IR level return value independently and decide to pass it in a register or not, which would result in the return value being passed partially in registers and partially through a return area pointer.
While Cranelift may need to be fixed as the LLVM behavior is generally more correct with respect to the surface language, forcing this behavior in rustc itself makes it easier for other backends to conform to the Rust ABI and for the C ABI rustc already handles this behavior anyway.
In addition LLVM's decision to pass the return value in registers or using a return area pointer depends on how exactly the return type is lowered to an LLVM IR type. For example Option<u128> can be lowered as { i128, i128 } in which case the x86_64 backend would use a return area pointer, or it could be passed as { i32, i128 } in which case the x86_64 backend would pass it in registers by taking advantage of an LLVM ABI extension that allows using 3 registers for the x86_64 sysv call conv rather than the officially specified 2 registers.
This adjustment is only necessary for the Rust ABI as for other ABI's the calling convention implementations in rustc_target already ensure any return value which doesn't fit in the available amount of return registers is passed in the right way for the current target.
Helps with https://github.com/rust-lang/rustc_codegen_cranelift/issues/1525 cc https://github.com/bytecodealliance/wasmtime/issues/9250
r? @jieyouxu
rustbot has assigned @jieyouxu. They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.
Use r? to explicitly pick a reviewer
I have no clue about this... r? compiler
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)
------
> importing cache manifest from ghcr.io/rust-lang/rust-ci-cache:20950f2ccee3dff53a038adf5c1cf05231c0b30772617126a5f6478a66316a29cba9aead69f7bb0004886d32c1f8e6287542cf6d25130711c82d16a66201d4fe:
------
##[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]
---
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', '--set', 'change-id=99999999', '--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/i128-x86-align.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/i128-x86-align/i128-x86-align.ll" "/checkout/tests/codegen/i128-x86-align.rs" "--check-prefix=CHECK" "--check-prefix" "NONMSVC" "--allow-unused-prefixes" "--dump-input-context" "100"
--- stderr -------------------------------
/checkout/tests/codegen/i128-x86-align.rs:26:17: error: CHECK-NEXT: expected string not found in input
/checkout/tests/codegen/i128-x86-align.rs:26:17: error: CHECK-NEXT: expected string not found in input
// CHECK-NEXT: [[IV1:%.*]] = insertvalue { i32, i128 } poison, i32 [[A]], 0
^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/i128-x86-align/i128-x86-align.ll:13:34: note: scanning from here
%2 = load i128, ptr %1, align 16, !noundef !3
^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/i128-x86-align/i128-x86-align.ll:13:34: note: with "A" equal to "%0"
%2 = load i128, ptr %1, align 16, !noundef !3
^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/i128-x86-align/i128-x86-align.ll:15:13: note: possible intended match here
%3 = getelementptr inbounds i8, ptr %_0, i64 16
/checkout/tests/codegen/i128-x86-align.rs:68:18: error: CHECK-LABEL: expected string not found in input
/checkout/tests/codegen/i128-x86-align.rs:68:18: error: CHECK-LABEL: expected string not found in input
// CHECK-LABEL: define { i128, i128 } @transmute(i32 noundef %x.0, i128 noundef %x.1)
^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/i128-x86-align/i128-x86-align.ll:43:28: note: scanning from here
define void @load_volatile(ptr dead_on_unwind noalias nocapture noundef writable sret([32 x i8]) align 16 dereferenceable(32) %_0, ptr noalias noundef readonly align 16 dereferenceable(32) %x) unnamed_addr #0 {
^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/i128-x86-align/i128-x86-align.ll:51:95: note: possible intended match here
define void @transmute(ptr dead_on_unwind noalias nocapture noundef writable sret([32 x i8]) align 16 dereferenceable(32) %_0, i32 noundef %x.0, i128 noundef %x.1) unnamed_addr #0 {
Input file: /checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/i128-x86-align/i128-x86-align.ll
Check file: /checkout/tests/codegen/i128-x86-align.rs
-dump-input=help explains the following input dump.
Input was:
<<<<<<
<<<<<<
1: ; ModuleID = 'i128_x86_align.c99a19dc19580418-cgu.0'
2: source_filename = "i128_x86_align.c99a19dc19580418-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: %ScalarPair = type { i32, [3 x i32], i128 }
7:
8: ; Function Attrs: nonlazybind uwtable
9: define void @load(ptr dead_on_unwind noalias nocapture noundef writable sret([32 x i8]) align 16 dereferenceable(32) %_0, ptr noalias noundef readonly align 16 dereferenceable(32) %x) unnamed_addr #0 {
10: start:
11: %0 = load i32, ptr %x, align 16, !noundef !3
12: %1 = getelementptr inbounds i8, ptr %x, i64 16
13: %2 = load i128, ptr %1, align 16, !noundef !3
next:26'0 X~~~~~~~~~~~~~ error: no match found
next:26'1 with "A" equal to "%0"
14: store i32 %0, ptr %_0, align 16
next:26'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
15: %3 = getelementptr inbounds i8, ptr %_0, i64 16
next:26'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
next:26'2 ? possible intended match
16: store i128 %2, ptr %3, align 16
next:26'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
17: ret void
next:26'0 ~~~~~~~~~~
18: }
next:26'0 ~~
next:26'0 ~
next:26'0 ~
20: ; Function Attrs: nonlazybind uwtable
next:26'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
21: define void @store(ptr noalias noundef align 16 dereferenceable(32) %x) unnamed_addr #0 {
next:26'0 ~~~~~~~~~~~~~~~~~~~
22: start:
23: store i32 1, ptr %x, align 16
24: %0 = getelementptr inbounds i8, ptr %x, i64 16
25: store i128 2, ptr %0, align 16
26: ret void
27: }
28:
29: ; Function Attrs: nonlazybind uwtable
30: define void @alloca() unnamed_addr #0 {
31: start:
32: %x = alloca [32 x i8], align 16
33: call void @llvm.lifetime.start.p0(i64 32, ptr %x)
34: store i32 1, ptr %x, align 16
35: %0 = getelementptr inbounds i8, ptr %x, i64 16
36: store i128 2, ptr %0, align 16
37: call void @store(ptr noalias noundef align 16 dereferenceable(32) %x)
38: call void @llvm.lifetime.end.p0(i64 32, ptr %x)
39: ret void
40: }
41:
42: ; Function Attrs: nonlazybind uwtable
43: define void @load_volatile(ptr dead_on_unwind noalias nocapture noundef writable sret([32 x i8]) align 16 dereferenceable(32) %_0, ptr noalias noundef readonly align 16 dereferenceable(32) %x) unnamed_addr #0 {
label:68'0 X~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ error: no match found
label:68'0 ~~~~~~~
label:68'0 ~~~~~~~
45: %0 = load volatile %ScalarPair, ptr %x, align 16
label:68'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
46: store %ScalarPair %0, ptr %_0, align 16
label:68'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
47: ret void
label:68'0 ~~~~~~~~~~
48: }
label:68'0 ~~
label:68'0 ~
label:68'0 ~
50: ; Function Attrs: nonlazybind uwtable
label:68'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
51: define void @transmute(ptr dead_on_unwind noalias nocapture noundef writable sret([32 x i8]) align 16 dereferenceable(32) %_0, i32 noundef %x.0, i128 noundef %x.1) unnamed_addr #0 {
label:68'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
label:68'1 ? possible intended match
label:68'0 ~~~~~~~
label:68'0 ~~~~~~~
53: store i32 %x.0, ptr %_0, align 16
label:68'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
54: %0 = getelementptr inbounds i8, ptr %_0, i64 16
label:68'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
55: store i128 %x.1, ptr %0, align 16
label:68'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
56: ret void
label:68'0 ~~~~~~~~~~
57: }
label:68'0 ~~
label:68'0 ~
label:68'0 ~
59: ; Function Attrs: nonlazybind uwtable
label:68'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
60: define void @store_struct(ptr noalias noundef align 16 dereferenceable(32) %x) unnamed_addr #0 {
label:68'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
label:68'0 ~~~~~~~
62: %_2 = alloca [32 x i8], align 16
label:68'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
label:68'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
63: call void @llvm.lifetime.start.p0(i64 32, ptr %_2)
label:68'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
64: store i32 1, ptr %_2, align 16
label:68'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
65: %0 = getelementptr inbounds i8, ptr %_2, i64 4
label:68'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
66: store i32 2, ptr %0, align 4
label:68'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
67: %1 = getelementptr inbounds i8, ptr %_2, i64 16
label:68'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
68: store i128 3, ptr %1, align 16
label:68'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
69: call void @llvm.memcpy.p0.p0.i64(ptr align 16 %x, ptr align 16 %_2, i64 32, i1 false)
label:68'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
70: call void @llvm.lifetime.end.p0(i64 32, ptr %_2)
label:68'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
71: ret void
label:68'0 ~~~~~~~~~~
72: }
label:68'0 ~~
label:68'0 ~
label:68'0 ~
74: ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
label:68'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
75: declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #1
label:68'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
label:68'0 ~
label:68'0 ~
77: ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
label:68'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
78: declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #2
label:68'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
label:68'0 ~
label:68'0 ~
80: ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
label:68'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
81: declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #2
label:68'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
label:68'0 ~
label:68'0 ~
83: attributes #0 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" }
label:68'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
84: attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
label:68'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
85: attributes #2 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
label:68'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
label:68'0 ~
label:68'0 ~
87: !llvm.module.flags = !{!0, !1}
label:68'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
88: !llvm.ident = !{!2}
label:68'0 ~~~~~~~~~~~~~~~~~~~~
label:68'0 ~
label:68'0 ~
90: !0 = !{i32 8, !"PIC Level", i32 2}
label:68'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
91: !1 = !{i32 2, !"RtLibUseGOT", i32 1}
label:68'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
92: !2 = !{!"rustc version 1.83.0-nightly (4c6421a22 2024-10-03)"}
label:68'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
93: !3 = !{}
label:68'0 ~~~~~~~~~
------------------------------------------
A perf run can't hurt.
@bors try @rust-timer queue
Awaiting bors try build completion.
@rustbot label: +S-waiting-on-perf
:hourglass: Trying commit 34210ca25b1235049e4b6e740882942b84cdadfc with merge 3fb9bf9f57bf3271f7203a8baf759edd81c1a8c8...
fwiw LLVM often looks at an i128, sees that the intermediate computation will not exceed 64 bits for $REASONS, and then folds it into a 64-bit computation, in an actual optimized code section. this has been true since a long time ago. not that we shouldn't check the perf, obviously.
:sunny: Try build successful - checks-actions
Build commit: 3fb9bf9f57bf3271f7203a8baf759edd81c1a8c8 (3fb9bf9f57bf3271f7203a8baf759edd81c1a8c8)
Queued 3fb9bf9f57bf3271f7203a8baf759edd81c1a8c8 with parent 1e5719bdc40bb553089ce83525f07dfe0b2e71e9, future comparison URL. There are currently 2 preceding artifacts in the queue. It will probably take at least ~2.6 hours until the benchmark run finishes.
Finished benchmarking commit (3fb9bf9f57bf3271f7203a8baf759edd81c1a8c8): comparison URL.
Overall result: no relevant changes - no 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.
@bors rollup=never @rustbot label: -S-waiting-on-perf -perf-regression
Instruction count
This benchmark run did not return any relevant results for this metric.
Max RSS (memory usage)
Results (primary 3.3%, secondary 1.9%)
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) |
3.3% | [3.3%, 3.3%] | 1 |
| Regressions ❌ (secondary) |
2.9% | [2.1%, 4.6%] | 4 |
| Improvements ✅ (primary) |
- | - | 0 |
| Improvements ✅ (secondary) |
-2.0% | [-2.0%, -2.0%] | 1 |
| All ❌✅ (primary) | 3.3% | [3.3%, 3.3%] | 1 |
Cycles
This benchmark run did not return any relevant results for this metric.
Binary size
This benchmark run did not return any relevant results for this metric.
Bootstrap: 773.547s -> 773.604s (0.01%) Artifact size: 342.00 MiB -> 341.98 MiB (-0.00%)
r? compiler cc @nikic maybe
My only question here is whether it would make sense to try and preserve the behavior you mention where we pass the result in up to three registers rather than two? Or does Cranelift not support that variant?
LLVM only supports this on some architectures afaik and conditionally doing this depending on the architecture is harder than never doing it at all. In any case Cranelift only supports it on x86_64. Also due to the interaction of PassMode::Pair with padding, it depends on the exact way rust types are lowered to llvm types if some types would be considered 3 or 4 registers big. The LLVM and Cranelift backends currently disagree about this for some types including the aformentioned Option<u128>. The LLVM backend lowers it as { i32, i128 } without padding which fits in 3 registers, while the Cranelift backend takes the total type size including padding (32 bytes) which requires 4 registers.
The job mingw-check-tidy failed! Check out the build log: (web) (plain)
Click to see the possible cause of the failure (guessed by this bot)
COPY host-x86_64/mingw-check/validate-toolstate.sh /scripts/
COPY host-x86_64/mingw-check/validate-error-codes.sh /scripts/
# NOTE: intentionally uses python2 for x.py so we can test it still works.
# validate-toolstate only runs in our CI, so it's ok for it to only support python3.
ENV SCRIPT TIDY_PRINT_DIFF=1 python2.7 ../x.py test \
--stage 0 src/tools/tidy tidyselftest --extra-checks=py:lint,cpp:fmt
# This file is autogenerated by pip-compile with Python 3.10
# by the following command:
#
# pip-compile --allow-unsafe --generate-hashes reuse-requirements.in
---
#13 2.996 Building wheels for collected packages: reuse
#13 2.997 Building wheel for reuse (pyproject.toml): started
#13 3.302 Building wheel for reuse (pyproject.toml): finished with status 'done'
#13 3.303 Created wheel for reuse: filename=reuse-4.0.3-cp310-cp310-manylinux_2_35_x86_64.whl size=132715 sha256=dfa09868353292d98f811d3efdb0d54d07389e808efc71d68e3b93c514bf8bec
#13 3.303 Stored in directory: /tmp/pip-ephem-wheel-cache-9s0hnzqe/wheels/3d/8d/0a/e0fc6aba4494b28a967ab5eaf951c121d9c677958714e34532
#13 3.307 Installing collected packages: boolean-py, binaryornot, tomlkit, reuse, python-debian, markupsafe, license-expression, jinja2, chardet, attrs
#13 3.748 Successfully installed attrs-23.2.0 binaryornot-0.4.4 boolean-py-4.0 chardet-5.2.0 jinja2-3.1.4 license-expression-30.3.0 markupsafe-2.1.5 python-debian-0.1.49 reuse-4.0.3 tomlkit-0.13.0
#13 3.748 WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
#13 4.330 Collecting virtualenv
#13 4.330 Collecting virtualenv
#13 4.376 Downloading virtualenv-20.26.6-py3-none-any.whl (6.0 MB)
#13 4.464 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 6.0/6.0 MB 71.5 MB/s eta 0:00:00
#13 4.507 Collecting distlib<1,>=0.3.7
#13 4.512 Downloading distlib-0.3.9-py2.py3-none-any.whl (468 kB)
#13 4.520 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 469.0/469.0 KB 81.3 MB/s eta 0:00:00
#13 4.557 Collecting filelock<4,>=3.12.2
#13 4.562 Downloading filelock-3.16.1-py3-none-any.whl (16 kB)
#13 4.595 Collecting platformdirs<5,>=3.9.1
#13 4.599 Downloading platformdirs-4.3.6-py3-none-any.whl (18 kB)
#13 4.683 Installing collected packages: distlib, platformdirs, filelock, virtualenv
#13 4.877 Successfully installed distlib-0.3.9 filelock-3.16.1 platformdirs-4.3.6 virtualenv-20.26.6
#13 DONE 5.0s
#14 [7/8] COPY host-x86_64/mingw-check/validate-toolstate.sh /scripts/
#14 DONE 0.0s
---
DirectMap4k: 229312 kB
DirectMap2M: 9207808 kB
DirectMap1G: 9437184 kB
##[endgroup]
Executing TIDY_PRINT_DIFF=1 python2.7 ../x.py test --stage 0 src/tools/tidy tidyselftest --extra-checks=py:lint,cpp:fmt
+ TIDY_PRINT_DIFF=1 python2.7 ../x.py test --stage 0 src/tools/tidy tidyselftest --extra-checks=py:lint,cpp:fmt
Finished `dev` profile [unoptimized] target(s) in 0.06s
##[endgroup]
downloading https://static.rust-lang.org/dist/2024-09-22/rustfmt-nightly-x86_64-unknown-linux-gnu.tar.xz
extracting /checkout/obj/build/cache/2024-09-22/rustfmt-nightly-x86_64-unknown-linux-gnu.tar.xz to /checkout/obj/build/x86_64-unknown-linux-gnu/rustfmt
---
fmt check
fmt: checked 5593 files
tidy check
tidy: Skipping binary file check, read-only filesystem
##[error]tidy error: /checkout/tests/codegen/i128-x86-align.rs:21: line longer than 100 chars
removing old virtual environment
creating virtual environment at '/checkout/obj/build/venv' using 'python3.10'
Requirement already satisfied: pip in ./build/venv/lib/python3.10/site-packages (24.2)
All checks passed!
checking C++ file formatting
some tidy checks failed
some tidy checks failed
Command has failed. Rerun with -v to see more details.
local time: Thu Oct 10 14:10:36 UTC 2024
network time: Thu, 10 Oct 2024 14:10:37 GMT
##[error]Process completed with exit code 1.
Post job cleanup.
@rustbot ready
@bors r+
:pushpin: Commit ccd1bc2ad1be8516f16d80b8cb6dffd79f5c6c85 has been approved by nikic
It is now in the queue for this repository.
:hourglass: Testing commit ccd1bc2ad1be8516f16d80b8cb6dffd79f5c6c85 with merge 7fc6cad8a0a4b47baf413161f667d6b9edf87095...
The job test-various failed! Check out the build log: (web) (plain)
Click to see the possible cause of the failure (guessed by this bot)
failures:
---- [codegen] tests/codegen/float/f128.rs#other stdout ----
error in revision `other`: verification with 'FileCheck' failed
status: exit status: 1
command: "/checkout/obj/build/x86_64-unknown-linux-gnu/ci-llvm/bin/FileCheck" "--input-file" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/float/f128.other/f128.ll" "/checkout/tests/codegen/float/f128.rs" "--check-prefix=CHECK" "--check-prefix" "other" "--check-prefix" "NONMSVC" "--allow-unused-prefixes" "--dump-input-context" "100"
--- stderr -------------------------------
/checkout/tests/codegen/float/f128.rs:55:17: error: CHECK-LABEL: expected string not found in input
/checkout/tests/codegen/float/f128.rs:55:17: error: CHECK-LABEL: expected string not found in input
// CHECK-LABEL: fp128 @f128_neg(
^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/float/f128.other/f128.ll:42:46: note: scanning from here
define dso_local noundef zeroext i1 @f128_le(fp128 noundef %a, fp128 noundef %b) unnamed_addr #0 {
^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/float/f128.other/f128.ll:49:18: note: possible intended match here
define dso_local void @f128_neg(ptr dead_on_unwind noalias nocapture noundef writable writeonly sret([16 x i8]) align 16 dereferenceable(16) %_0, fp128 noundef %a) unnamed_addr #1 {
Input file: /checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/float/f128.other/f128.ll
-dump-input=help explains the following input dump.
Input was:
<<<<<<
<<<<<<
1: ; ModuleID = 'f128.486e1c7a7d34452b-cgu.0'
2: source_filename = "f128.486e1c7a7d34452b-cgu.0"
3: target datalayout = "e-m:e-p:32:32-p10:8:8-p20:8:8-i64:64-n32:64-S128-ni:1:10:20"
4: target triple = "wasm32-unknown-wasi"
5:
6: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)
7: define dso_local noundef zeroext i1 @f128_eq(fp128 noundef %a, fp128 noundef %b) unnamed_addr #0 {
8: start:
9: %_0 = fcmp oeq fp128 %a, %b
10: ret i1 %_0
11: }
12:
13: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)
14: define dso_local noundef zeroext i1 @f128_ne(fp128 noundef %a, fp128 noundef %b) unnamed_addr #0 {
15: start:
16: %_0 = fcmp une fp128 %a, %b
17: ret i1 %_0
18: }
19:
20: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)
21: define dso_local noundef zeroext i1 @f128_gt(fp128 noundef %a, fp128 noundef %b) unnamed_addr #0 {
22: start:
23: %_0 = fcmp ogt fp128 %a, %b
24: ret i1 %_0
25: }
26:
27: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)
28: define dso_local noundef zeroext i1 @f128_ge(fp128 noundef %a, fp128 noundef %b) unnamed_addr #0 {
29: start:
30: %_0 = fcmp oge fp128 %a, %b
31: ret i1 %_0
32: }
33:
34: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)
35: define dso_local noundef zeroext i1 @f128_lt(fp128 noundef %a, fp128 noundef %b) unnamed_addr #0 {
36: start:
37: %_0 = fcmp olt fp128 %a, %b
38: ret i1 %_0
39: }
40:
41: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)
42: define dso_local noundef zeroext i1 @f128_le(fp128 noundef %a, fp128 noundef %b) unnamed_addr #0 {
label:55'0 X~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ error: no match found
label:55'0 ~~~~~~~
label:55'0 ~~~~~~~
44: %_0 = fcmp ole fp128 %a, %b
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
45: ret i1 %_0
label:55'0 ~~~~~~~~~~~~
46: }
label:55'0 ~~
label:55'0 ~
label:55'0 ~
48: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write)
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49: define dso_local void @f128_neg(ptr dead_on_unwind noalias nocapture noundef writable writeonly sret([16 x i8]) align 16 dereferenceable(16) %_0, fp128 noundef %a) unnamed_addr #1 {
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
label:55'1 ? possible intended match
label:55'0 ~~~~~~~
label:55'0 ~~~~~~~
51: %0 = fneg fp128 %a
label:55'0 ~~~~~~~~~~~~~~~~~~~~
52: store fp128 %0, ptr %_0, align 16
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
53: ret void
label:55'0 ~~~~~~~~~~
54: }
label:55'0 ~~
label:55'0 ~
label:55'0 ~
56: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write)
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
57: define dso_local void @f128_add(ptr dead_on_unwind noalias nocapture noundef writable writeonly sret([16 x i8]) align 16 dereferenceable(16) %_0, fp128 noundef %a, fp128 noundef %b) unnamed_addr #1 {
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
label:55'0 ~~~~~~~
label:55'0 ~~~~~~~
59: %0 = fadd fp128 %a, %b
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~
60: store fp128 %0, ptr %_0, align 16
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
61: ret void
label:55'0 ~~~~~~~~~~
62: }
label:55'0 ~~
label:55'0 ~
label:55'0 ~
64: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write)
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
65: define dso_local void @f128_sub(ptr dead_on_unwind noalias nocapture noundef writable writeonly sret([16 x i8]) align 16 dereferenceable(16) %_0, fp128 noundef %a, fp128 noundef %b) unnamed_addr #1 {
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
label:55'0 ~~~~~~~
label:55'0 ~~~~~~~
67: %0 = fsub fp128 %a, %b
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~
68: store fp128 %0, ptr %_0, align 16
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
69: ret void
label:55'0 ~~~~~~~~~~
70: }
label:55'0 ~~
label:55'0 ~
label:55'0 ~
72: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write)
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
73: define dso_local void @f128_mul(ptr dead_on_unwind noalias nocapture noundef writable writeonly sret([16 x i8]) align 16 dereferenceable(16) %_0, fp128 noundef %a, fp128 noundef %b) unnamed_addr #1 {
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
label:55'0 ~~~~~~~
label:55'0 ~~~~~~~
75: %0 = fmul fp128 %a, %b
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~
76: store fp128 %0, ptr %_0, align 16
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
77: ret void
label:55'0 ~~~~~~~~~~
78: }
label:55'0 ~~
label:55'0 ~
label:55'0 ~
80: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write)
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
81: define dso_local void @f128_div(ptr dead_on_unwind noalias nocapture noundef writable writeonly sret([16 x i8]) align 16 dereferenceable(16) %_0, fp128 noundef %a, fp128 noundef %b) unnamed_addr #1 {
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
label:55'0 ~~~~~~~
label:55'0 ~~~~~~~
83: %0 = fdiv fp128 %a, %b
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~
84: store fp128 %0, ptr %_0, align 16
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
85: ret void
label:55'0 ~~~~~~~~~~
86: }
label:55'0 ~~
label:55'0 ~
label:55'0 ~
88: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write)
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
89: define dso_local void @f128_rem(ptr dead_on_unwind noalias nocapture noundef writable writeonly sret([16 x i8]) align 16 dereferenceable(16) %_0, fp128 noundef %a, fp128 noundef %b) unnamed_addr #1 {
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
label:55'0 ~~~~~~~
label:55'0 ~~~~~~~
91: %0 = frem fp128 %a, %b
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~
92: store fp128 %0, ptr %_0, align 16
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
93: ret void
label:55'0 ~~~~~~~~~~
94: }
label:55'0 ~~
label:55'0 ~
label:55'0 ~
96: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite)
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
97: define dso_local void @f128_add_assign(ptr noalias nocapture noundef align 16 dereferenceable(16) %a, fp128 noundef %b) unnamed_addr #2 {
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
label:55'0 ~~~~~~~
label:55'0 ~~~~~~~
99: %0 = load fp128, ptr %a, align 16, !noundef !1
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
100: %1 = fadd fp128 %0, %b
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~
101: store fp128 %1, ptr %a, align 16
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
102: ret void
label:55'0 ~~~~~~~~~~
103: }
label:55'0 ~~
label:55'0 ~
label:55'0 ~
105: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite)
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
106: define dso_local void @f128_sub_assign(ptr noalias nocapture noundef align 16 dereferenceable(16) %a, fp128 noundef %b) unnamed_addr #2 {
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
label:55'0 ~~~~~~~
label:55'0 ~~~~~~~
108: %0 = load fp128, ptr %a, align 16, !noundef !1
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
109: %1 = fsub fp128 %0, %b
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~
110: store fp128 %1, ptr %a, align 16
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
111: ret void
label:55'0 ~~~~~~~~~~
112: }
label:55'0 ~~
label:55'0 ~
label:55'0 ~
114: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite)
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
115: define dso_local void @f128_mul_assign(ptr noalias nocapture noundef align 16 dereferenceable(16) %a, fp128 noundef %b) unnamed_addr #2 {
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
label:55'0 ~~~~~~~
label:55'0 ~~~~~~~
117: %0 = load fp128, ptr %a, align 16, !noundef !1
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
118: %1 = fmul fp128 %0, %b
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~
119: store fp128 %1, ptr %a, align 16
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
120: ret void
label:55'0 ~~~~~~~~~~
121: }
label:55'0 ~~
label:55'0 ~
label:55'0 ~
123: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite)
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
124: define dso_local void @f128_div_assign(ptr noalias nocapture noundef align 16 dereferenceable(16) %a, fp128 noundef %b) unnamed_addr #2 {
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
label:55'0 ~~~~~~~
label:55'0 ~~~~~~~
126: %0 = load fp128, ptr %a, align 16, !noundef !1
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
127: %1 = fdiv fp128 %0, %b
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~
128: store fp128 %1, ptr %a, align 16
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
129: ret void
label:55'0 ~~~~~~~~~~
130: }
label:55'0 ~~
label:55'0 ~
label:55'0 ~
132: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite)
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
133: define dso_local void @f128_rem_assign(ptr noalias nocapture noundef align 16 dereferenceable(16) %a, fp128 noundef %b) unnamed_addr #2 {
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
label:55'0 ~~~~~~~
label:55'0 ~~~~~~~
135: %0 = load fp128, ptr %a, align 16, !noundef !1
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
136: %1 = frem fp128 %0, %b
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~
137: store fp128 %1, ptr %a, align 16
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
138: ret void
label:55'0 ~~~~~~~~~~
139: }
label:55'0 ~~
label:55'0 ~
label:55'0 ~
141: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
142: define dso_local noundef half @f128_as_f16(fp128 noundef %a) unnamed_addr #0 {
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
label:55'0 ~~~~~~~
label:55'0 ~~~~~~~
144: %_0 = fptrunc fp128 %a to half
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
145: ret half %_0
label:55'0 ~~~~~~~~~~~~~~
146: }
label:55'0 ~~
label:55'0 ~
label:55'0 ~
148: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
149: define dso_local noundef float @f128_as_f32(fp128 noundef %a) unnamed_addr #0 {
label:55'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.
.
>>>>>>
------------------------------------------
------------------------------------------
---- [codegen] tests/codegen/float/f16.rs#other stdout ----
error in revision `other`: verification with 'FileCheck' failed
status: exit status: 1
command: "/checkout/obj/build/x86_64-unknown-linux-gnu/ci-llvm/bin/FileCheck" "--input-file" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/float/f16.other/f16.ll" "/checkout/tests/codegen/float/f16.rs" "--check-prefix=CHECK" "--check-prefix" "other" "--check-prefix" "NONMSVC" "--allow-unused-prefixes" "--dump-input-context" "100"
--- stderr -------------------------------
/checkout/tests/codegen/float/f16.rs:164:17: error: CHECK-LABEL: expected string not found in input
/checkout/tests/codegen/float/f16.rs:164:17: error: CHECK-LABEL: expected string not found in input
// CHECK-LABEL: fp128 @f16_as_f128(
^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/float/f16.other/f16.ll:149:45: note: scanning from here
define dso_local noundef double @f16_as_f64(half noundef %a) unnamed_addr #0 {
^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/float/f16.other/f16.ll:156:18: note: possible intended match here
define dso_local void @f16_as_f128(ptr dead_on_unwind noalias nocapture noundef writable writeonly sret([16 x i8]) align 16 dereferenceable(16) %_0, half noundef %a) unnamed_addr #2 {
Input file: /checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/float/f16.other/f16.ll
-dump-input=help explains the following input dump.
Input was:
<<<<<<
.
.
.
.
49: define dso_local noundef half @f16_neg(half noundef %a) unnamed_addr #0 {
50: start:
51: %_0 = fneg half %a
52: ret half %_0
53: }
54:
55: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)
56: define dso_local noundef half @f16_add(half noundef %a, half noundef %b) unnamed_addr #0 {
57: start:
58: %_0 = fadd half %a, %b
59: ret half %_0
60: }
61:
62: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)
63: define dso_local noundef half @f16_sub(half noundef %a, half noundef %b) unnamed_addr #0 {
64: start:
65: %_0 = fsub half %a, %b
66: ret half %_0
67: }
68:
69: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)
70: define dso_local noundef half @f16_mul(half noundef %a, half noundef %b) unnamed_addr #0 {
71: start:
72: %_0 = fmul half %a, %b
73: ret half %_0
74: }
75:
76: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)
77: define dso_local noundef half @f16_div(half noundef %a, half noundef %b) unnamed_addr #0 {
78: start:
79: %_0 = fdiv half %a, %b
80: ret half %_0
81: }
82:
83: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)
84: define dso_local noundef half @f16_rem(half noundef %a, half noundef %b) unnamed_addr #0 {
85: start:
86: %_0 = frem half %a, %b
87: ret half %_0
88: }
89:
90: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite)
91: define dso_local void @f16_add_assign(ptr noalias nocapture noundef align 2 dereferenceable(2) %a, half noundef %b) unnamed_addr #1 {
92: start:
93: %0 = load half, ptr %a, align 2, !noundef !1
94: %1 = fadd half %0, %b
95: store half %1, ptr %a, align 2
96: ret void
97: }
98:
99: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite)
100: define dso_local void @f16_sub_assign(ptr noalias nocapture noundef align 2 dereferenceable(2) %a, half noundef %b) unnamed_addr #1 {
101: start:
102: %0 = load half, ptr %a, align 2, !noundef !1
103: %1 = fsub half %0, %b
104: store half %1, ptr %a, align 2
105: ret void
106: }
107:
108: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite)
109: define dso_local void @f16_mul_assign(ptr noalias nocapture noundef align 2 dereferenceable(2) %a, half noundef %b) unnamed_addr #1 {
110: start:
111: %0 = load half, ptr %a, align 2, !noundef !1
112: %1 = fmul half %0, %b
113: store half %1, ptr %a, align 2
114: ret void
115: }
116:
117: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite)
118: define dso_local void @f16_div_assign(ptr noalias nocapture noundef align 2 dereferenceable(2) %a, half noundef %b) unnamed_addr #1 {
119: start:
120: %0 = load half, ptr %a, align 2, !noundef !1
121: %1 = fdiv half %0, %b
122: store half %1, ptr %a, align 2
123: ret void
124: }
125:
126: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite)
127: define dso_local void @f16_rem_assign(ptr noalias nocapture noundef align 2 dereferenceable(2) %a, half noundef %b) unnamed_addr #1 {
128: start:
129: %0 = load half, ptr %a, align 2, !noundef !1
130: %1 = frem half %0, %b
131: store half %1, ptr %a, align 2
132: ret void
133: }
134:
135: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)
136: define dso_local noundef half @f16_as_self(half noundef returned %a) unnamed_addr #0 {
137: start:
138: ret half %a
139: }
140:
141: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)
142: define dso_local noundef float @f16_as_f32(half noundef %a) unnamed_addr #0 {
143: start:
144: %_0 = fpext half %a to float
145: ret float %_0
146: }
147:
148: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)
149: define dso_local noundef double @f16_as_f64(half noundef %a) unnamed_addr #0 {
label:164'0 X~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ error: no match found
label:164'0 ~~~~~~~
label:164'0 ~~~~~~~
151: %_0 = fpext half %a to double
label:164'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
152: ret double %_0
label:164'0 ~~~~~~~~~~~~~~~~
153: }
label:164'0 ~~
label:164'0 ~
label:164'0 ~
155: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write)
label:164'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
156: define dso_local void @f16_as_f128(ptr dead_on_unwind noalias nocapture noundef writable writeonly sret([16 x i8]) align 16 dereferenceable(16) %_0, half noundef %a) unnamed_addr #2 {
label:164'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
label:164'1 ? possible intended match
label:164'0 ~~~~~~~
label:164'0 ~~~~~~~
158: %0 = fpext half %a to fp128
label:164'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
159: store fp128 %0, ptr %_0, align 16
label:164'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
160: ret void
label:164'0 ~~~~~~~~~~
161: }
label:164'0 ~~
label:164'0 ~
label:164'0 ~
163: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)
label:164'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
164: define dso_local noundef half @f32_as_f16(float noundef %a) unnamed_addr #0 {
label:164'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
label:164'0 ~~~~~~~
label:164'0 ~~~~~~~
166: %_0 = fptrunc float %a to half
label:164'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
167: ret half %_0
label:164'0 ~~~~~~~~~~~~~~
168: }
label:164'0 ~~
label:164'0 ~
label:164'0 ~
170: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)
label:164'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
171: define dso_local noundef half @f64_as_f16(double noundef %a) unnamed_addr #0 {
label:164'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
label:164'0 ~~~~~~~
label:164'0 ~~~~~~~
173: %_0 = fptrunc double %a to half
label:164'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
174: ret half %_0
label:164'0 ~~~~~~~~~~~~~~
175: }
label:164'0 ~~
label:164'0 ~
label:164'0 ~
177: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)
label:164'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
178: define dso_local noundef half @f128_as_f16(fp128 noundef %a) unnamed_addr #0 {
label:164'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
label:164'0 ~~~~~~~
label:164'0 ~~~~~~~
180: %_0 = fptrunc fp128 %a to half
label:164'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
181: ret half %_0
label:164'0 ~~~~~~~~~~~~~~
182: }
label:164'0 ~~
label:164'0 ~
label:164'0 ~
184: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)
label:164'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
185: define dso_local noundef i8 @f16_as_u8(half noundef %a) unnamed_addr #0 {
label:164'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
label:164'0 ~~~~~~~
label:164'0 ~~~~~~~
187: %_0 = tail call i8 @llvm.fptoui.sat.i8.f16(half %a)
label:164'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
188: ret i8 %_0
label:164'0 ~~~~~~~~~~~~
189: }
:broken_heart: Test failed - checks-actions
Fixed tests on 32bit targets.
@bors r+ rollup=iffy
:pushpin: Commit 8ed77fd29e289a591df16390049a8e94f3c62b04 has been approved by nikic
It is now in the queue for this repository.
:hourglass: Testing commit 8ed77fd29e289a591df16390049a8e94f3c62b04 with merge b8fe97a86ed7c418cc9c1225d8b93b15ab6452fc...
The job i686-gnu failed! Check out the build log: (web) (plain)
Click to see the possible cause of the failure (guessed by this bot)
failures:
---- [codegen] tests/codegen/mir-aggregate-no-alloca.rs#bit32 stdout ----
error in revision `bit32`: verification with 'FileCheck' failed
status: exit status: 1
command: "/checkout/obj/build/i686-unknown-linux-gnu/llvm/build/bin/FileCheck" "--input-file" "/checkout/obj/build/i686-unknown-linux-gnu/test/codegen/mir-aggregate-no-alloca.bit32/mir-aggregate-no-alloca.ll" "/checkout/tests/codegen/mir-aggregate-no-alloca.rs" "--check-prefix=CHECK" "--check-prefix" "bit32" "--check-prefix" "NONMSVC" "--allow-unused-prefixes" "--dump-input-context" "100"
--- stderr -------------------------------
--- stderr -------------------------------
/checkout/tests/codegen/mir-aggregate-no-alloca.rs:105:17: error: bit32-LABEL: expected string not found in input
// bit32-LABEL: void @make_struct_2_asc({{.*}} sret([16 x i8]) {{.*}} %s,
^
/checkout/obj/build/i686-unknown-linux-gnu/test/codegen/mir-aggregate-no-alloca.bit32/mir-aggregate-no-alloca.ll:65:50: note: scanning from here
define noundef i32 @make_struct_1(i32 noundef %a) unnamed_addr #0 {
^
/checkout/obj/build/i686-unknown-linux-gnu/test/codegen/mir-aggregate-no-alloca.bit32/mir-aggregate-no-alloca.ll:71:8: note: possible intended match here
define void @make_struct_2_asc(ptr dead_on_unwind noalias nocapture noundef writable sret([12 x i8]) align 4 dereferenceable(12) %s, i16 noundef %a, i64 noundef %b) unnamed_addr #0 {
Input file: /checkout/obj/build/i686-unknown-linux-gnu/test/codegen/mir-aggregate-no-alloca.bit32/mir-aggregate-no-alloca.ll
-dump-input=help explains the following input dump.
Input was:
<<<<<<
<<<<<<
1: ; ModuleID = 'mir_aggregate_no_alloca.a14a2a7ff05b7360-cgu.0'
2: source_filename = "mir_aggregate_no_alloca.a14a2a7ff05b7360-cgu.0"
3: target datalayout = "e-m:e-p:32:32-p270:32:32-p271:32:32-p272:64:64-i128:128-f64:32:64-f80:32-n8:16:32-S128"
4: target triple = "i686-unknown-linux-gnu"
6: ; Function Attrs: uwtable
6: ; Function Attrs: uwtable
7: define noundef i32 @make_transparent(i32 noundef %x) unnamed_addr #0 {
8: start:
9: ret i32 %x
10: }
12: ; Function Attrs: uwtable
12: ; Function Attrs: uwtable
13: define noundef i32 @make_closure(i32 noundef %x) unnamed_addr #0 {
14: start:
15: ret i32 %x
16: }
18: ; Function Attrs: uwtable
18: ; Function Attrs: uwtable
19: define { i16, i16 } @make_transparent_pair(i16 noundef %x.0, i16 noundef %x.1) unnamed_addr #0 {
20: start:
21: %0 = insertvalue { i16, i16 } poison, i16 %x.0, 0
22: %1 = insertvalue { i16, i16 } %0, i16 %x.1, 1
23: ret { i16, i16 } %1
24: }
26: ; Function Attrs: uwtable
26: ; Function Attrs: uwtable
27: define { i32, i32 } @make_2_tuple(i32 noundef %x) unnamed_addr #0 {
28: start:
29: %0 = insertvalue { i32, i32 } poison, i32 %x, 0
30: %1 = insertvalue { i32, i32 } %0, i32 %x, 1
31: ret { i32, i32 } %1
32: }
34: ; Function Attrs: uwtable
34: ; Function Attrs: uwtable
35: define noundef i8 @make_cell_of_bool(i1 noundef zeroext %b) unnamed_addr #0 {
36: start:
37: %_2 = zext i1 %b to i8
38: ret i8 %_2
39: }
41: ; Function Attrs: uwtable
41: ; Function Attrs: uwtable
42: define { i8, i16 } @make_cell_of_bool_and_short(i1 noundef zeroext %b, i16 noundef %s) unnamed_addr #0 {
43: start:
44: %_4.0 = zext i1 %b to i8
45: %0 = insertvalue { i8, i16 } poison, i8 %_4.0, 0
46: %1 = insertvalue { i8, i16 } %0, i16 %s, 1
47: ret { i8, i16 } %1
48: }
50: ; Function Attrs: uwtable
50: ; Function Attrs: uwtable
51: define { i1, i1 } @make_tuple_of_bools(i1 noundef zeroext %a, i1 noundef zeroext %b) unnamed_addr #0 {
52: start:
53: %0 = insertvalue { i1, i1 } poison, i1 %a, 0
54: %1 = insertvalue { i1, i1 } %0, i1 %b, 1
55: ret { i1, i1 } %1
56: }
58: ; Function Attrs: uwtable
58: ; Function Attrs: uwtable
59: define void @make_struct_0() unnamed_addr #0 {
61: ret void
62: }
63:
64: ; Function Attrs: uwtable
64: ; Function Attrs: uwtable
65: define noundef i32 @make_struct_1(i32 noundef %a) unnamed_addr #0 {
label:105'0 X~~~~~~~~~~~~~~~~~~ error: no match found
label:105'0 ~~~~~~~
label:105'0 ~~~~~~~
67: ret i32 %a
label:105'0 ~~~~~~~~~~~~
68: }
label:105'0 ~~
label:105'0 ~
70: ; Function Attrs: uwtable
label:105'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~
label:105'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~
71: define void @make_struct_2_asc(ptr dead_on_unwind noalias nocapture noundef writable sret([12 x i8]) align 4 dereferenceable(12) %s, i16 noundef %a, i64 noundef %b) unnamed_addr #0 {
label:105'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
label:105'1 ? possible intended match
label:105'0 ~~~~~~~
label:105'0 ~~~~~~~
73: %0 = getelementptr inbounds i8, ptr %s, i32 8
label:105'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
74: store i16 %a, ptr %0, align 4
label:105'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
75: store i64 %b, ptr %s, align 4
label:105'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
76: ret void
label:105'0 ~~~~~~~~~~
77: }
label:105'0 ~~
label:105'0 ~
79: ; Function Attrs: uwtable
label:105'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~
label:105'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~
80: define void @make_struct_2_desc(ptr dead_on_unwind noalias nocapture noundef writable sret([12 x i8]) align 4 dereferenceable(12) %s, i64 noundef %a, i16 noundef %b) unnamed_addr #0 {
label:105'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
label:105'0 ~~~~~~~
label:105'0 ~~~~~~~
82: store i64 %a, ptr %s, align 4
label:105'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
83: %0 = getelementptr inbounds i8, ptr %s, i32 8
label:105'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
84: store i16 %b, ptr %0, align 4
label:105'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
85: ret void
label:105'0 ~~~~~~~~~~
86: }
label:105'0 ~~
label:105'0 ~
label:105'0 ~
88: attributes #0 = { uwtable "probe-stack"="inline-asm" "target-cpu"="pentium4" }
label:105'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
label:105'0 ~
label:105'0 ~
90: !llvm.module.flags = !{!0}
label:105'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
91: !llvm.ident = !{!1}
label:105'0 ~~~~~~~~~~~~~~~~~~~~
label:105'0 ~
label:105'0 ~
93: !0 = !{i32 8, !"PIC Level", i32 2}
label:105'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
94: !1 = !{!"rustc version 1.84.0-nightly (b8fe97a86 2024-10-14)"}
label:105'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
------------------------------------------
---- [codegen] tests/codegen/range-attribute.rs#bit32 stdout ----
---- [codegen] tests/codegen/range-attribute.rs#bit32 stdout ----
error in revision `bit32`: verification with 'FileCheck' failed
status: exit status: 1
command: "/checkout/obj/build/i686-unknown-linux-gnu/llvm/build/bin/FileCheck" "--input-file" "/checkout/obj/build/i686-unknown-linux-gnu/test/codegen/range-attribute.bit32/range-attribute.ll" "/checkout/tests/codegen/range-attribute.rs" "--check-prefix=CHECK" "--check-prefix" "bit32" "--check-prefix" "NONMSVC" "--allow-unused-prefixes" "--dump-input-context" "100"
--- stderr -------------------------------
/checkout/tests/codegen/range-attribute.rs:51:11: error: bit32: expected string not found in input
/checkout/tests/codegen/range-attribute.rs:51:11: error: bit32: expected string not found in input
// bit32: void @enum1_value({{.*}} sret([16 x i8]) {{[^,]*}}, [[ENUM1_TYP:i[0-9]+]]
^
/checkout/obj/build/i686-unknown-linux-gnu/test/codegen/range-attribute.bit32/range-attribute.ll:26:76: note: scanning from here
define noundef range(i8 0, 4) i8 @enum0_value(i8 noundef range(i8 0, 4) %x) unnamed_addr #0 {
^
/checkout/obj/build/i686-unknown-linux-gnu/test/codegen/range-attribute.bit32/range-attribute.ll:32:8: note: possible intended match here
define void @enum1_value(ptr dead_on_unwind noalias nocapture noundef writable sret([12 x i8]) align 4 dereferenceable(12) %_0, i32 noundef range(i32 0, 3) %x.0, i64 noundef %x.1) unnamed_addr #0 {
Input file: /checkout/obj/build/i686-unknown-linux-gnu/test/codegen/range-attribute.bit32/range-attribute.ll
-dump-input=help explains the following input dump.
Input was:
<<<<<<
<<<<<<
1: ; ModuleID = 'range_attribute.31ae304c7dd8c3c5-cgu.0'
2: source_filename = "range_attribute.31ae304c7dd8c3c5-cgu.0"
3: target datalayout = "e-m:e-p:32:32-p270:32:32-p271:32:32-p272:64:64-i128:128-f64:32:64-f80:32-n8:16:32-S128"
4: target triple = "i686-unknown-linux-gnu"
6: ; Function Attrs: uwtable
6: ; Function Attrs: uwtable
7: define void @helper(i32 noundef %_1) unnamed_addr #0 {
9: ret void
10: }
11:
12: ; Function Attrs: uwtable
12: ; Function Attrs: uwtable
13: define void @nonzero_int(ptr dead_on_unwind noalias nocapture noundef writable sret([16 x i8]) align 16 dereferenceable(16) %_0, i128 noundef range(i128 1, 0) %x) unnamed_addr #0 {
14: start:
15: store i128 %x, ptr %_0, align 16
16: ret void
17: }
19: ; Function Attrs: uwtable
19: ; Function Attrs: uwtable
20: define noundef range(i8 0, 3) i8 @optional_bool(i8 noundef range(i8 0, 3) %x) unnamed_addr #0 {
21: start:
22: ret i8 %x
23: }
25: ; Function Attrs: uwtable
25: ; Function Attrs: uwtable
26: define noundef range(i8 0, 4) i8 @enum0_value(i8 noundef range(i8 0, 4) %x) unnamed_addr #0 {
check:51'0 X~~~~~~~~~~~~~~~~~~ error: no match found
check:51'0 ~~~~~~~
check:51'0 ~~~~~~~
28: ret i8 %x
check:51'0 ~~~~~~~~~~~
29: }
check:51'0 ~~
check:51'0 ~
31: ; Function Attrs: uwtable
check:51'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~
check:51'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~
32: define void @enum1_value(ptr dead_on_unwind noalias nocapture noundef writable sret([12 x i8]) align 4 dereferenceable(12) %_0, i32 noundef range(i32 0, 3) %x.0, i64 noundef %x.1) unnamed_addr #0 {
check:51'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:51'1 ? possible intended match
check:51'0 ~~~~~~~
check:51'0 ~~~~~~~
34: store i32 %x.0, ptr %_0, align 4
check:51'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
35: %0 = getelementptr inbounds i8, ptr %_0, i32 4
check:51'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
36: store i64 %x.1, ptr %0, align 4
check:51'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
37: ret void
check:51'0 ~~~~~~~~~~
38: }
check:51'0 ~~
check:51'0 ~
40: ; Function Attrs: uwtable
check:51'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~
check:51'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~
41: define { i8, i8 } @enum2_value(i8 noundef range(i8 0, 3) %x.0, i8 noundef %x.1) unnamed_addr #0 {
check:51'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:51'0 ~~~~~~~
check:51'0 ~~~~~~~
43: %0 = insertvalue { i8, i8 } poison, i8 %x.0, 0
check:51'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
44: %1 = insertvalue { i8, i8 } %0, i8 %x.1, 1
check:51'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
45: ret { i8, i8 } %1
check:51'0 ~~~~~~~~~~~~~~~~~~~
46: }
check:51'0 ~~
check:51'0 ~
48: ; Function Attrs: uwtable
check:51'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~
check:51'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~
49: define noundef i32 @takes_slice(ptr noalias noundef nonnull readonly align 4 %x.0, i32 noundef %x.1) unnamed_addr #0 {
check:51'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:51'0 ~~~~~~~
check:51'0 ~~~~~~~
51: ret i32 %x.1
check:51'0 ~~~~~~~~~~~~~~
52: }
check:51'0 ~~
check:51'0 ~
check:51'0 ~
54: attributes #0 = { uwtable "probe-stack"="inline-asm" "target-cpu"="pentium4" }
check:51'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:51'0 ~
check:51'0 ~
56: !llvm.module.flags = !{!0}
check:51'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
57: !llvm.ident = !{!1}
check:51'0 ~~~~~~~~~~~~~~~~~~~~
check:51'0 ~
check:51'0 ~
59: !0 = !{i32 8, !"PIC Level", i32 2}
check:51'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
60: !1 = !{!"rustc version 1.84.0-nightly (b8fe97a86 2024-10-14)"}
check:51'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
------------------------------------------
---- [codegen] tests/codegen/tuple-layout-opt.rs#bit32 stdout ----
---- [codegen] tests/codegen/tuple-layout-opt.rs#bit32 stdout ----
error in revision `bit32`: verification with 'FileCheck' failed
status: exit status: 1
command: "/checkout/obj/build/i686-unknown-linux-gnu/llvm/build/bin/FileCheck" "--input-file" "/checkout/obj/build/i686-unknown-linux-gnu/test/codegen/tuple-layout-opt.bit32/tuple-layout-opt.ll" "/checkout/tests/codegen/tuple-layout-opt.rs" "--check-prefix=CHECK" "--check-prefix" "bit32" "--check-prefix" "NONMSVC" "--allow-unused-prefixes" "--dump-input-context" "100"
--- stderr -------------------------------
/checkout/tests/codegen/tuple-layout-opt.rs:28:11: error: bit32: expected string not found in input
/checkout/tests/codegen/tuple-layout-opt.rs:28:11: error: bit32: expected string not found in input
// bit32: define {{(dso_local )?}}void @test_ScalarPairZstLast(ptr sret([24 x i8]) align 8
^
/checkout/obj/build/i686-unknown-linux-gnu/test/codegen/tuple-layout-opt.bit32/tuple-layout-opt.ll:16:77: note: scanning from here
define void @test_ScalarZstFirst(ptr sret([16 x i8]) align 16 %_0, i128 %_1) unnamed_addr #0 {
^
/checkout/obj/build/i686-unknown-linux-gnu/test/codegen/tuple-layout-opt.bit32/tuple-layout-opt.ll:25:1: note: possible intended match here
define void @test_ScalarPairZstLast(ptr sret([32 x i8]) align 16 %_0, i128 %_1.0, i8 %_1.1) unnamed_addr #0 {
Input file: /checkout/obj/build/i686-unknown-linux-gnu/test/codegen/tuple-layout-opt.bit32/tuple-layout-opt.ll
-dump-input=help explains the following input dump.
Input was:
<<<<<<
<<<<<<
1: ; ModuleID = 'tuple_layout_opt.c538b16a2de83a99-cgu.0'
2: source_filename = "tuple_layout_opt.c538b16a2de83a99-cgu.0"
3: target datalayout = "e-m:e-p:32:32-p270:32:32-p271:32:32-p272:64:64-i128:128-f64:32:64-f80:32-n8:16:32-S128"
4: target triple = "i686-unknown-linux-gnu"
6: ; Function Attrs: uwtable
6: ; Function Attrs: uwtable
7: define void @test_ScalarZstLast(ptr sret([16 x i8]) align 16 %_0, i128 %_1) unnamed_addr #0 {
8: start:
9: br label %bb1
10:
11: bb1: ; preds = %bb1, %start
12: br label %bb1
13: }
15: ; Function Attrs: uwtable
15: ; Function Attrs: uwtable
16: define void @test_ScalarZstFirst(ptr sret([16 x i8]) align 16 %_0, i128 %_1) unnamed_addr #0 {
check:28'0 X~~~~~~~~~~~~~~~~~~ error: no match found
check:28'0 ~~~~~~~
check:28'0 ~~~~~~~
18: br label %bb1
check:28'0 ~~~~~~~~~~~~~~~
check:28'0 ~
check:28'0 ~
20: bb1: ; preds = %bb1, %start
check:28'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
21: br label %bb1
check:28'0 ~~~~~~~~~~~~~~~
22: }
check:28'0 ~~
check:28'0 ~
24: ; Function Attrs: uwtable
check:28'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~
check:28'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~
25: define void @test_ScalarPairZstLast(ptr sret([32 x i8]) align 16 %_0, i128 %_1.0, i8 %_1.1) unnamed_addr #0 {
check:28'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:28'1 ? possible intended match
check:28'0 ~~~~~~~
check:28'0 ~~~~~~~
27: br label %bb1
check:28'0 ~~~~~~~~~~~~~~~
check:28'0 ~
check:28'0 ~
29: bb1: ; preds = %bb1, %start
check:28'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
30: br label %bb1
check:28'0 ~~~~~~~~~~~~~~~
31: }
check:28'0 ~~
check:28'0 ~
33: ; Function Attrs: uwtable
check:28'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~
check:28'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~
34: define void @test_ScalarPairZstFirst(ptr sret([32 x i8]) align 16 %_0, i8 %_1.0, i128 %_1.1) unnamed_addr #0 {
check:28'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:28'0 ~~~~~~~
check:28'0 ~~~~~~~
36: br label %bb1
check:28'0 ~~~~~~~~~~~~~~~
check:28'0 ~
check:28'0 ~
38: bb1: ; preds = %bb1, %start
check:28'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
39: br label %bb1
check:28'0 ~~~~~~~~~~~~~~~
40: }
check:28'0 ~~
check:28'0 ~
42: ; Function Attrs: uwtable
check:28'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~
check:28'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~
43: define void @test_ScalarPairLotsOfZsts(ptr sret([32 x i8]) align 16 %_0, i128 %_1.0, i8 %_1.1) unnamed_addr #0 {
check:28'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:28'0 ~~~~~~~
check:28'0 ~~~~~~~
45: br label %bb1
check:28'0 ~~~~~~~~~~~~~~~
check:28'0 ~
check:28'0 ~
47: bb1: ; preds = %bb1, %start
check:28'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
48: br label %bb1
check:28'0 ~~~~~~~~~~~~~~~
49: }
check:28'0 ~~
check:28'0 ~
51: ; Function Attrs: uwtable
check:28'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~
check:28'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~
52: define void @test_ScalarPairLottaNesting(ptr sret([32 x i8]) align 16 %_0, i128 %_1.0, i8 %_1.1) unnamed_addr #0 {
check:28'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:28'0 ~~~~~~~
check:28'0 ~~~~~~~
54: br label %bb1
check:28'0 ~~~~~~~~~~~~~~~
check:28'0 ~
check:28'0 ~
56: bb1: ; preds = %bb1, %start
check:28'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
57: br label %bb1
check:28'0 ~~~~~~~~~~~~~~~
58: }
check:28'0 ~~
check:28'0 ~
check:28'0 ~
60: attributes #0 = { uwtable "probe-stack"="inline-asm" "target-cpu"="pentium4" }
check:28'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:28'0 ~
check:28'0 ~
62: !llvm.module.flags = !{!0}
check:28'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
63: !llvm.ident = !{!1}
check:28'0 ~~~~~~~~~~~~~~~~~~~~
check:28'0 ~
check:28'0 ~
65: !0 = !{i32 8, !"PIC Level", i32 2}
check:28'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
66: !1 = !{!"rustc version 1.84.0-nightly (b8fe97a86 2024-10-14)"}
check:28'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
------------------------------------------
:broken_heart: Test failed - checks-actions
I've now tested this on i686-unknown-linux-gnu, x86_64-unknown-linux-gnu and wasm32-wasip1.
@bors r=nikic,jieyouxu
:pushpin: Commit cab206cda2f7d5a823e839ca4a92d0d438e1edea has been approved by nikic,jieyouxu
It is now in the queue for this repository.
:hourglass: Testing commit cab206cda2f7d5a823e839ca4a92d0d438e1edea with merge f075de02f8d4dc0c5d4035ffdaab89b9e11e8ba4...
The job i686-gnu-nopt failed! Check out the build log: (web) (plain)
Click to see the possible cause of the failure (guessed by this bot)
failures:
---- [assembly] tests/assembly/x86-return-float.rs#normal stdout ----
error in revision `normal`: verification with 'FileCheck' failed
status: exit status: 1
command: "/checkout/obj/build/i686-unknown-linux-gnu/llvm/build/bin/FileCheck" "--input-file" "/checkout/obj/build/i686-unknown-linux-gnu/test/assembly/x86-return-float.normal/x86-return-float.s" "/checkout/tests/assembly/x86-return-float.rs" "--check-prefix=CHECK" "--check-prefix" "normal" "--check-prefix" "NONMSVC" "--allow-unused-prefixes" "--dump-input-context" "100" "--implicit-check-not" "fld" "--implicit-check-not" "fst"
--- stderr -------------------------------
--- stderr -------------------------------
/checkout/tests/assembly/x86-return-float.rs:318:17: error: CHECK-NEXT: is not on the line after the previous match
// CHECK-NEXT: movl [[#%d,OFFSET+16]](%ebp), %[[VAL4:.*]]
^
/checkout/obj/build/i686-unknown-linux-gnu/test/assembly/x86-return-float.normal/x86-return-float.s:655:2: note: 'next' match was here
movl 24(%ebp), %edi
^
/checkout/obj/build/i686-unknown-linux-gnu/test/assembly/x86-return-float.normal/x86-return-float.s:651:20: note: previous match ended here
movl 8(%ebp), %eax
^
/checkout/obj/build/i686-unknown-linux-gnu/test/assembly/x86-return-float.normal/x86-return-float.s:652:1: note: non-matching line after previous match is here
movl 12(%ebp), %ecx
Input file: /checkout/obj/build/i686-unknown-linux-gnu/test/assembly/x86-return-float.normal/x86-return-float.s
-dump-input=help explains the following input dump.
Input was:
<<<<<<
.
.
.
.
555: .L18$pb:
556: popl %ebx
557: leal -16(%ebp), %eax
558: .Ltmp8:
559: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp8-.L18$pb), %ebx
560: movl %eax, (%esp)
561: calll get_other_f32@PLT
562: subl $4, %esp
563: movl -16(%ebp), %eax
564: movss -12(%ebp), %xmm0
565: movl %eax, (%esi)
566: movss %xmm0, 4(%esi)
567: addl $16, %esp
568: popl %esi
569: popl %ebx
570: popl %ebp
571: .cfi_def_cfa %esp, 4
572: retl
573: .Lfunc_end18:
574: .size call_other_f32, .Lfunc_end18-call_other_f32
575: .cfi_endproc
576:
577: .section .text.call_other_f64,"ax",@progbits
578: .globl call_other_f64
579: .p2align 4, 0x90
580: .type call_other_f64,@function
581: call_other_f64:
582: .cfi_startproc
583: pushl %ebp
584: .cfi_def_cfa_offset 8
585: .cfi_offset %ebp, -8
586: movl %esp, %ebp
587: .cfi_def_cfa_register %ebp
588: pushl %ebx
589: pushl %esi
590: subl $16, %esp
591: .cfi_offset %esi, -16
592: .cfi_offset %ebx, -12
593: movl 8(%ebp), %esi
594: calll .L19$pb
595: .L19$pb:
596: popl %ebx
597: leal -20(%ebp), %eax
598: .Ltmp9:
599: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp9-.L19$pb), %ebx
600: movl %eax, (%esp)
601: calll get_other_f64@PLT
602: subl $4, %esp
603: movl -20(%ebp), %eax
604: movsd -16(%ebp), %xmm0
605: movl %eax, (%esi)
606: movsd %xmm0, 4(%esi)
607: addl $16, %esp
608: popl %esi
609: popl %ebx
610: popl %ebp
611: .cfi_def_cfa %esp, 4
612: retl
613: .Lfunc_end19:
614: .size call_other_f64, .Lfunc_end19-call_other_f64
615: .cfi_endproc
616:
617: .section .text.return_f16,"ax",@progbits
618: .globl return_f16
619: .p2align 4, 0x90
620: .type return_f16,@function
621: return_f16:
622: .cfi_startproc
623: pushl %ebp
624: .cfi_def_cfa_offset 8
625: .cfi_offset %ebp, -8
626: movl %esp, %ebp
627: .cfi_def_cfa_register %ebp
628: pinsrw $0, 8(%ebp), %xmm0
629: popl %ebp
630: .cfi_def_cfa %esp, 4
631: retl
632: .Lfunc_end20:
633: .size return_f16, .Lfunc_end20-return_f16
634: .cfi_endproc
635:
636: .section .text.return_f128,"ax",@progbits
637: .globl return_f128
638: .p2align 4, 0x90
639: .type return_f128,@function
640: return_f128:
641: .cfi_startproc
642: pushl %ebp
643: .cfi_def_cfa_offset 8
644: .cfi_offset %ebp, -8
645: movl %esp, %ebp
646: .cfi_def_cfa_register %ebp
647: pushl %edi
648: pushl %esi
649: .cfi_offset %esi, -16
650: .cfi_offset %edi, -12
651: movl 8(%ebp), %eax
652: movl 12(%ebp), %ecx
653: movl 16(%ebp), %edx
654: movl 20(%ebp), %esi
655: movl 24(%ebp), %edi
next:318 !~~~~~~~~~~~~~~~~~~ error: match on wrong line
656: movl %edi, 12(%eax)
657: movl %esi, 8(%eax)
658: movl %edx, 4(%eax)
659: movl %ecx, (%eax)
660: popl %esi
661: popl %edi
662: popl %ebp
663: .cfi_def_cfa %esp, 4
664: retl $4
665: .Lfunc_end21:
666: .size return_f128, .Lfunc_end21-return_f128
667: .cfi_endproc
668:
669: .ident "rustc version 1.84.0-nightly (f075de02f 2024-10-17)"
670: .section ".note.GNU-stack","",@progbits
------------------------------------------