Skip to content

Commit 638ebf7

Browse files
Rollup merge of #142959 - bjorn3:sync_cg_clif-2025-06-24, r=bjorn3
Subtree sync for rustc_codegen_cranelift The main highlight this time is a Cranelift update. r? `@ghost` `@rustbot` label +A-codegen +A-cranelift +T-compiler
2 parents df1b85f + dbe8682 commit 638ebf7

File tree

10 files changed

+98
-125
lines changed

10 files changed

+98
-125
lines changed

compiler/rustc_codegen_cranelift/Cargo.lock

Lines changed: 50 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -43,42 +43,42 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
4343

4444
[[package]]
4545
name = "cranelift-assembler-x64"
46-
version = "0.120.0"
46+
version = "0.121.0"
4747
source = "registry+https://github.com/rust-lang/crates.io-index"
48-
checksum = "9ff8e35182c7372df00447cb90a04e584e032c42b9b9b6e8c50ddaaf0d7900d5"
48+
checksum = "f6f53499803b1607b6ee0ba0de4ba036e6da700c2e489fe8f9d0f683d0b84d31"
4949
dependencies = [
5050
"cranelift-assembler-x64-meta",
5151
]
5252

5353
[[package]]
5454
name = "cranelift-assembler-x64-meta"
55-
version = "0.120.0"
55+
version = "0.121.0"
5656
source = "registry+https://github.com/rust-lang/crates.io-index"
57-
checksum = "14220f9c2698015c3b94dc6b84ae045c1c45509ddc406e43c6139252757fdb7a"
57+
checksum = "1aadaa5bc8430d0e7bb999459369bedd0e5816ad4a82a0e20748341c4e333eda"
5858
dependencies = [
5959
"cranelift-srcgen",
6060
]
6161

6262
[[package]]
6363
name = "cranelift-bforest"
64-
version = "0.120.0"
64+
version = "0.121.0"
6565
source = "registry+https://github.com/rust-lang/crates.io-index"
66-
checksum = "d372ef2777ceefd75829e1390211ac240e9196bc60699218f7ea2419038288ee"
66+
checksum = "2005fda2fc52a2dbce58229b4fb4483b70cbc806ba8ecc11b3f050c1a2d26cac"
6767
dependencies = [
6868
"cranelift-entity",
6969
]
7070

7171
[[package]]
7272
name = "cranelift-bitset"
73-
version = "0.120.0"
73+
version = "0.121.0"
7474
source = "registry+https://github.com/rust-lang/crates.io-index"
75-
checksum = "56323783e423818fa89ce8078e90a3913d2a6e0810399bfce8ebd7ee87baa81f"
75+
checksum = "56935e02452ca1249d39ad5c45a96304d0b4300a158a391fd113451e0cd4483d"
7676

7777
[[package]]
7878
name = "cranelift-codegen"
79-
version = "0.120.0"
79+
version = "0.121.0"
8080
source = "registry+https://github.com/rust-lang/crates.io-index"
81-
checksum = "74ffb780aab6186c6e9ba26519654b1ac55a09c0a866f6088a4efbbd84da68ed"
81+
checksum = "62612786bf00e10999f50217d6f455d02b31591155881a45a903d1a95d1a4043"
8282
dependencies = [
8383
"bumpalo",
8484
"cranelift-assembler-x64",
@@ -97,13 +97,14 @@ dependencies = [
9797
"serde",
9898
"smallvec",
9999
"target-lexicon",
100+
"wasmtime-math",
100101
]
101102

102103
[[package]]
103104
name = "cranelift-codegen-meta"
104-
version = "0.120.0"
105+
version = "0.121.0"
105106
source = "registry+https://github.com/rust-lang/crates.io-index"
106-
checksum = "c23ef13814d3b39c869650d5961128cbbecad83fbdff4e6836a03ecf6862d7ed"
107+
checksum = "07bae789df91ef236079733af9df11d852256c64af196f0bc6471ea0f5f301be"
107108
dependencies = [
108109
"cranelift-assembler-x64-meta",
109110
"cranelift-codegen-shared",
@@ -112,33 +113,33 @@ dependencies = [
112113

113114
[[package]]
114115
name = "cranelift-codegen-shared"
115-
version = "0.120.0"
116+
version = "0.121.0"
116117
source = "registry+https://github.com/rust-lang/crates.io-index"
117-
checksum = "b9f623300657679f847803ce80811454bfff89cea4f6bf684be5c468d4a73631"
118+
checksum = "1be319616d36527782558a8312508757815f64deb19b094c7b8f4337229a9bc6"
118119

119120
[[package]]
120121
name = "cranelift-control"
121-
version = "0.120.0"
122+
version = "0.121.0"
122123
source = "registry+https://github.com/rust-lang/crates.io-index"
123-
checksum = "31f4168af69989aa6b91fab46799ed4df6096f3209f4a6c8fb4358f49c60188f"
124+
checksum = "8810ee1ab5e9bd5cff4c0c8d240e2009cb5c2b79888fde1d5256d605712314b7"
124125
dependencies = [
125126
"arbitrary",
126127
]
127128

128129
[[package]]
129130
name = "cranelift-entity"
130-
version = "0.120.0"
131+
version = "0.121.0"
131132
source = "registry+https://github.com/rust-lang/crates.io-index"
132-
checksum = "ca6fa9bae1c8de26d71ac2162f069447610fd91e7780cb480ee0d76ac81eabb8"
133+
checksum = "086452c97cfbe116bf17dbe622dc5fdf2ea97299c7d4ce42460f284387c9928a"
133134
dependencies = [
134135
"cranelift-bitset",
135136
]
136137

137138
[[package]]
138139
name = "cranelift-frontend"
139-
version = "0.120.0"
140+
version = "0.121.0"
140141
source = "registry+https://github.com/rust-lang/crates.io-index"
141-
checksum = "b8219205608aa0b0e6769b580284a7e055c7e0c323c1041cde7ca078add3e412"
142+
checksum = "4c27947010ab759330f252610c17a8cd64d123358be4f33164233d04fcd77b80"
142143
dependencies = [
143144
"cranelift-codegen",
144145
"log",
@@ -148,15 +149,15 @@ dependencies = [
148149

149150
[[package]]
150151
name = "cranelift-isle"
151-
version = "0.120.0"
152+
version = "0.121.0"
152153
source = "registry+https://github.com/rust-lang/crates.io-index"
153-
checksum = "588d0c5964f10860b04043e55aab26d7f7a206b0fd4f10c5260e8aa5773832bd"
154+
checksum = "ec67bfb8bd55b1e9760eb9f5186dca8d81bd4d86110f8d5af01154a044c91802"
154155

155156
[[package]]
156157
name = "cranelift-jit"
157-
version = "0.120.0"
158+
version = "0.121.0"
158159
source = "registry+https://github.com/rust-lang/crates.io-index"
159-
checksum = "56bd917ddc524f84f4066f954062875bdfc0dffea068ee94e906d98de5ac7c33"
160+
checksum = "d67cdfc447f2abdb46bb30a6582cce189539c3c051c1d5330692376e1400edff"
160161
dependencies = [
161162
"anyhow",
162163
"cranelift-codegen",
@@ -174,9 +175,9 @@ dependencies = [
174175

175176
[[package]]
176177
name = "cranelift-module"
177-
version = "0.120.0"
178+
version = "0.121.0"
178179
source = "registry+https://github.com/rust-lang/crates.io-index"
179-
checksum = "68a03c057d8a992e06596c871341e446af43ff9224f941e5b8adea39137a5391"
180+
checksum = "e4597eaa52bca1ed111986c7a7f70cdbe192f83d271d627201365078e37b7e84"
180181
dependencies = [
181182
"anyhow",
182183
"cranelift-codegen",
@@ -185,9 +186,9 @@ dependencies = [
185186

186187
[[package]]
187188
name = "cranelift-native"
188-
version = "0.120.0"
189+
version = "0.121.0"
189190
source = "registry+https://github.com/rust-lang/crates.io-index"
190-
checksum = "19ed3c94cb97b14f92b6a94a1d45ef8c851f6a2ad9114e5d91d233f7da638fed"
191+
checksum = "75a9b63edea46e013fce459c46e500462cb03a0490fdd9c18fe42b1dd7b93aa1"
191192
dependencies = [
192193
"cranelift-codegen",
193194
"libc",
@@ -196,9 +197,9 @@ dependencies = [
196197

197198
[[package]]
198199
name = "cranelift-object"
199-
version = "0.120.0"
200+
version = "0.121.0"
200201
source = "registry+https://github.com/rust-lang/crates.io-index"
201-
checksum = "a64dacef362a69375a604f6636e5e9a174fb96dba3b273646fcd9fa85c1d0997"
202+
checksum = "ce706f0166d5b7f31693dff521e87cb9858e12adf22ffcde93c4a2826f8f04a9"
202203
dependencies = [
203204
"anyhow",
204205
"cranelift-codegen",
@@ -211,9 +212,9 @@ dependencies = [
211212

212213
[[package]]
213214
name = "cranelift-srcgen"
214-
version = "0.120.0"
215+
version = "0.121.0"
215216
source = "registry+https://github.com/rust-lang/crates.io-index"
216-
checksum = "85256fac1519a7d25a040c1d850fba67478f3f021ad5fdf738ba4425ee862dbf"
217+
checksum = "7d5870e266df8237b56cc98b04f5739c228565c92dd629ec6c66efa87271a158"
217218

218219
[[package]]
219220
name = "crc32fast"
@@ -288,6 +289,12 @@ dependencies = [
288289
"windows-targets",
289290
]
290291

292+
[[package]]
293+
name = "libm"
294+
version = "0.2.15"
295+
source = "registry+https://github.com/rust-lang/crates.io-index"
296+
checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de"
297+
291298
[[package]]
292299
name = "log"
293300
version = "0.4.22"
@@ -446,16 +453,25 @@ checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83"
446453

447454
[[package]]
448455
name = "wasmtime-jit-icache-coherence"
449-
version = "33.0.0"
456+
version = "34.0.0"
450457
source = "registry+https://github.com/rust-lang/crates.io-index"
451-
checksum = "175e924dbc944c185808466d1e90b5a7feb610f3b9abdfe26f8ee25fd1086d1c"
458+
checksum = "2eedc0324e37cf39b049f4dca0c30997eaab49f09006d5f4c1994e64e7b7dba8"
452459
dependencies = [
453460
"anyhow",
454461
"cfg-if",
455462
"libc",
456463
"windows-sys 0.59.0",
457464
]
458465

466+
[[package]]
467+
name = "wasmtime-math"
468+
version = "34.0.0"
469+
source = "registry+https://github.com/rust-lang/crates.io-index"
470+
checksum = "1cd35fae4cf51d2b4a9bd2ef04b0eb309fa1849cab6a6ab5ac27cbd054ea284d"
471+
dependencies = [
472+
"libm",
473+
]
474+
459475
[[package]]
460476
name = "windows-sys"
461477
version = "0.52.0"

compiler/rustc_codegen_cranelift/Cargo.toml

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ crate-type = ["dylib"]
88

99
[dependencies]
1010
# These have to be in sync with each other
11-
cranelift-codegen = { version = "0.120.0", default-features = false, features = ["std", "timing", "unwind", "all-native-arch"] }
12-
cranelift-frontend = { version = "0.120.0" }
13-
cranelift-module = { version = "0.120.0" }
14-
cranelift-native = { version = "0.120.0" }
15-
cranelift-jit = { version = "0.120.0", optional = true }
16-
cranelift-object = { version = "0.120.0" }
11+
cranelift-codegen = { version = "0.121.0", default-features = false, features = ["std", "timing", "unwind", "all-native-arch"] }
12+
cranelift-frontend = { version = "0.121.0" }
13+
cranelift-module = { version = "0.121.0" }
14+
cranelift-native = { version = "0.121.0" }
15+
cranelift-jit = { version = "0.121.0", optional = true }
16+
cranelift-object = { version = "0.121.0" }
1717
target-lexicon = "0.13"
1818
gimli = { version = "0.31", default-features = false, features = ["write"] }
1919
object = { version = "0.36", default-features = false, features = ["std", "read_core", "write", "archive", "coff", "elf", "macho", "pe"] }
@@ -24,12 +24,12 @@ smallvec = "1.8.1"
2424

2525
[patch.crates-io]
2626
# Uncomment to use an unreleased version of cranelift
27-
#cranelift-codegen = { git = "https://github.com/bytecodealliance/wasmtime.git", branch = "release-33.0.0", version = "0.120.0" }
28-
#cranelift-frontend = { git = "https://github.com/bytecodealliance/wasmtime.git", branch = "release-33.0.0", version = "0.120.0" }
29-
#cranelift-module = { git = "https://github.com/bytecodealliance/wasmtime.git", branch = "release-33.0.0", version = "0.120.0" }
30-
#cranelift-native = { git = "https://github.com/bytecodealliance/wasmtime.git", branch = "release-33.0.0", version = "0.120.0" }
31-
#cranelift-jit = { git = "https://github.com/bytecodealliance/wasmtime.git", branch = "release-33.0.0", version = "0.120.0" }
32-
#cranelift-object = { git = "https://github.com/bytecodealliance/wasmtime.git", branch = "release-33.0.0", version = "0.120.0" }
27+
#cranelift-codegen = { git = "https://github.com/bytecodealliance/wasmtime.git", branch = "release-34.0.0", version = "0.121.0" }
28+
#cranelift-frontend = { git = "https://github.com/bytecodealliance/wasmtime.git", branch = "release-34.0.0", version = "0.121.0" }
29+
#cranelift-module = { git = "https://github.com/bytecodealliance/wasmtime.git", branch = "release-34.0.0", version = "0.121.0" }
30+
#cranelift-native = { git = "https://github.com/bytecodealliance/wasmtime.git", branch = "release-34.0.0", version = "0.121.0" }
31+
#cranelift-jit = { git = "https://github.com/bytecodealliance/wasmtime.git", branch = "release-34.0.0", version = "0.121.0" }
32+
#cranelift-object = { git = "https://github.com/bytecodealliance/wasmtime.git", branch = "release-34.0.0", version = "0.121.0" }
3333

3434
# Uncomment to use local checkout of cranelift
3535
#cranelift-codegen = { path = "../wasmtime/cranelift/codegen" }

compiler/rustc_codegen_cranelift/build_system/abi_cafe.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ use crate::{CodegenBackend, SysrootKind, build_sysroot};
66
static ABI_CAFE_REPO: GitRepo = GitRepo::github(
77
"Gankra",
88
"abi-cafe",
9-
"f1220cfd13b57f5c0082c26529163865ee25e115",
10-
"fe93a9acd461425d",
9+
"94d38030419eb00a1ba80e5e2b4d763dcee58db4",
10+
"6efb4457893c8670",
1111
"abi-cafe",
1212
);
1313

@@ -46,6 +46,10 @@ pub(crate) fn run(
4646
let mut cmd = ABI_CAFE.run(bootstrap_host_compiler, dirs);
4747
cmd.arg("--");
4848

49+
cmd.arg("--debug");
50+
51+
cmd.arg("--rules").arg(dirs.source_dir.join("scripts/abi-cafe-rules.toml"));
52+
4953
// stdcall, vectorcall and such don't work yet
5054
cmd.arg("--conventions").arg("c").arg("--conventions").arg("rust");
5155

compiler/rustc_codegen_cranelift/patches/0002-abi-cafe-Disable-broken-tests.patch

Lines changed: 0 additions & 69 deletions
This file was deleted.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
[toolchain]
2-
channel = "nightly-2025-05-25"
2+
channel = "nightly-2025-06-24"
33
components = ["rust-src", "rustc-dev", "llvm-tools"]
44
profile = "minimal"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
[target.'cfg(all(target_arch = "aarch64", target_os = "linux"))']
2+
'F32Array::conv_c'.busted = "check"
3+
4+
[target.'cfg(all(target_arch = "aarch64", target_os = "macos"))']
5+
'SingleVariantUnion::conv_c::repr_c'.busted = "check"
6+
'OptionU128::conv_rust::repr_c::rustc_caller'.busted = "run"
7+
'OptionU128::conv_rust::repr_c::cgclif_caller'.busted = "check"
8+
9+
[target.'cfg(all(target_arch = "x86_64", windows))']
10+
'simple::conv_rust'.busted = "check"
11+
'simple::conv_rust::rustc_caller'.busted = "run"
12+
13+
[target.'*'.'f16']
14+
run = "skip"
15+
16+
[target.'*'.'f128']
17+
run = "skip"

compiler/rustc_codegen_cranelift/src/constant.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ fn pointer_for_allocation<'tcx>(
228228
crate::pointer::Pointer::new(global_ptr)
229229
}
230230

231-
pub(crate) fn data_id_for_alloc_id(
231+
fn data_id_for_alloc_id(
232232
cx: &mut ConstantCx,
233233
module: &mut dyn Module,
234234
alloc_id: AllocId,

compiler/rustc_codegen_cranelift/src/intrinsics/llvm_x86.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -202,9 +202,10 @@ pub(super) fn codegen_x86_llvm_intrinsic_call<'tcx>(
202202
};
203203
let x = codegen_operand(fx, &x.node);
204204
let y = codegen_operand(fx, &y.node);
205-
let kind = match &kind.node {
206-
Operand::Constant(const_) => crate::constant::eval_mir_constant(fx, const_).0,
207-
Operand::Copy(_) | Operand::Move(_) => unreachable!("{kind:?}"),
205+
let kind = if let Some(const_) = kind.node.constant() {
206+
crate::constant::eval_mir_constant(fx, const_).0
207+
} else {
208+
unreachable!("{kind:?}")
208209
};
209210

210211
let flt_cc = match kind

0 commit comments

Comments
 (0)