From e3c70a3384d18fb8ae6378c3452935264c74c57f Mon Sep 17 00:00:00 2001 From: Chris Fallin Date: Mon, 7 Apr 2025 11:07:08 -0700 Subject: [PATCH 1/2] Cranelift: update to regalloc2 0.11.3. This pulls in a fix for a fuzzbug found after #10502 started generating more challenging constraints for regalloc. The fix in bytecodealliance/regalloc2#214 updates bundle-splitting logic to properly handle bundles with multiple live-ranges all covering one instruction. --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- supply-chain/imports.lock | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9fcf66222ea9..a827b4fa633a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2794,9 +2794,9 @@ dependencies = [ [[package]] name = "regalloc2" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc06e6b318142614e4a48bc725abbf08ff166694835c43c9dae5a9009704639a" +checksum = "6d4c3c15aa088eccea44550bffea9e9a5d0b14a264635323d23c6e6351acca98" dependencies = [ "allocator-api2", "bumpalo", diff --git a/Cargo.toml b/Cargo.toml index 356b1c308f7c..8ea6124e9823 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -286,7 +286,7 @@ byte-array-literals = { path = "crates/wasi-preview1-component-adapter/byte-arra # Bytecode Alliance maintained dependencies: # --------------------------- -regalloc2 = "0.11.2" +regalloc2 = "0.11.3" # cap-std family: target-lexicon = "0.13.0" diff --git a/supply-chain/imports.lock b/supply-chain/imports.lock index 02ad17e2c868..4826137617e5 100644 --- a/supply-chain/imports.lock +++ b/supply-chain/imports.lock @@ -933,8 +933,8 @@ user-login = "dtolnay" user-name = "David Tolnay" [[publisher.regalloc2]] -version = "0.11.2" -when = "2025-04-01" +version = "0.11.3" +when = "2025-04-07" user-id = 3726 user-login = "cfallin" user-name = "Chris Fallin" From 2e04f5db587d910b0d4342ca06b2eaf5fc54e8a1 Mon Sep 17 00:00:00 2001 From: Chris Fallin Date: Mon, 7 Apr 2025 11:42:03 -0700 Subject: [PATCH 2/2] Update test expectations after regalloc perturbation. --- .../filetests/isa/aarch64/return-call.clif | 68 ++++++++--------- .../filetests/isa/riscv64/return-call.clif | 76 +++++++++---------- 2 files changed, 72 insertions(+), 72 deletions(-) diff --git a/cranelift/filetests/filetests/isa/aarch64/return-call.clif b/cranelift/filetests/filetests/isa/aarch64/return-call.clif index 46a9ce746ca3..1e018b3c4a84 100644 --- a/cranelift/filetests/filetests/isa/aarch64/return-call.clif +++ b/cranelift/filetests/filetests/isa/aarch64/return-call.clif @@ -463,18 +463,18 @@ block2: ; stp x19, x20, [sp, #-16]! ; sub sp, sp, #16 ; block0: -; movz x3, #10 -; str x3, [sp] +; movz x14, #10 +; str x14, [sp] ; movz x3, #15 ; movz x4, #20 ; movz x5, #25 ; movz x6, #30 ; movz x7, #35 -; movz x25, #40 -; movz x21, #45 -; movz x28, #50 -; movz x27, #55 -; movz x26, #60 +; movz x21, #40 +; movz x28, #45 +; movz x27, #50 +; movz x26, #55 +; movz x25, #60 ; movz x24, #65 ; movz x23, #70 ; movz x22, #75 @@ -493,11 +493,11 @@ block2: ; cbnz x2, label2 ; b label1 ; block1: ; movz x2, #140 -; str x25, [sp, #112] -; str x21, [sp, #120] -; str x28, [sp, #128] -; str x27, [sp, #136] -; str x26, [sp, #144] +; str x21, [sp, #112] +; str x28, [sp, #120] +; str x27, [sp, #128] +; str x26, [sp, #136] +; str x25, [sp, #144] ; str x24, [sp, #152] ; str x23, [sp, #160] ; str x22, [sp, #168] @@ -519,11 +519,11 @@ block2: ; return_call_ind x1 new_stack_arg_size:176 x2=x2 x3=x3 x4=x4 x5=x5 x6=x6 x7=x7 ; block2: ; ldr x2, [sp] -; str x25, [sp, #128] -; str x21, [sp, #136] -; str x28, [sp, #144] -; str x27, [sp, #152] -; str x26, [sp, #160] +; str x21, [sp, #128] +; str x28, [sp, #136] +; str x27, [sp, #144] +; str x26, [sp, #152] +; str x25, [sp, #160] ; str x24, [sp, #168] ; str x23, [sp, #176] ; str x22, [sp, #184] @@ -557,18 +557,18 @@ block2: ; stp x19, x20, [sp, #-0x10]! ; sub sp, sp, #0x10 ; block1: ; offset 0x30 -; mov x3, #0xa -; stur x3, [sp] +; mov x14, #0xa +; stur x14, [sp] ; mov x3, #0xf ; mov x4, #0x14 ; mov x5, #0x19 ; mov x6, #0x1e ; mov x7, #0x23 -; mov x25, #0x28 -; mov x21, #0x2d -; mov x28, #0x32 -; mov x27, #0x37 -; mov x26, #0x3c +; mov x21, #0x28 +; mov x28, #0x2d +; mov x27, #0x32 +; mov x26, #0x37 +; mov x25, #0x3c ; mov x24, #0x41 ; mov x23, #0x46 ; mov x22, #0x4b @@ -587,11 +587,11 @@ block2: ; cbnz x2, #0x12c ; block2: ; offset 0xa0 ; mov x2, #0x8c -; stur x25, [sp, #0x70] -; stur x21, [sp, #0x78] -; stur x28, [sp, #0x80] -; stur x27, [sp, #0x88] -; stur x26, [sp, #0x90] +; stur x21, [sp, #0x70] +; stur x28, [sp, #0x78] +; stur x27, [sp, #0x80] +; stur x26, [sp, #0x88] +; stur x25, [sp, #0x90] ; stur x24, [sp, #0x98] ; stur x23, [sp, #0xa0] ; stur x22, [sp, #0xa8] @@ -623,11 +623,11 @@ block2: ; br x1 ; block3: ; offset 0x12c ; ldur x2, [sp] -; stur x25, [sp, #0x80] -; stur x21, [sp, #0x88] -; stur x28, [sp, #0x90] -; stur x27, [sp, #0x98] -; stur x26, [sp, #0xa0] +; stur x21, [sp, #0x80] +; stur x28, [sp, #0x88] +; stur x27, [sp, #0x90] +; stur x26, [sp, #0x98] +; stur x25, [sp, #0xa0] ; stur x24, [sp, #0xa8] ; stur x23, [sp, #0xb0] ; stur x22, [sp, #0xb8] diff --git a/cranelift/filetests/filetests/isa/riscv64/return-call.clif b/cranelift/filetests/filetests/isa/riscv64/return-call.clif index b472a6c31c3a..2a47ad837a1b 100644 --- a/cranelift/filetests/filetests/isa/riscv64/return-call.clif +++ b/cranelift/filetests/filetests/isa/riscv64/return-call.clif @@ -561,10 +561,10 @@ block2: ; block0: ; li a1,10 ; sd a1,16(slot) -; li a2,15 -; sd a2,8(slot) -; li a3,20 -; sd a3,0(slot) +; li a1,15 +; sd a1,8(slot) +; li a2,20 +; sd a2,0(slot) ; li a3,25 ; li a4,30 ; li a5,35 @@ -572,11 +572,11 @@ block2: ; li a7,45 ; li a2,50 ; li a1,55 -; li s1,60 -; li s5,65 -; li s4,70 -; li s3,75 -; li s2,80 +; li s5,60 +; li s4,65 +; li s3,70 +; li s2,75 +; li s1,80 ; li t4,85 ; li t3,90 ; li t2,95 @@ -593,11 +593,11 @@ block2: ; li a0,140 ; sd a2,-160(incoming_arg) ; sd a1,-152(incoming_arg) -; sd s1,-144(incoming_arg) -; sd s5,-136(incoming_arg) -; sd s4,-128(incoming_arg) -; sd s3,-120(incoming_arg) -; sd s2,-112(incoming_arg) +; sd s5,-144(incoming_arg) +; sd s4,-136(incoming_arg) +; sd s3,-128(incoming_arg) +; sd s2,-120(incoming_arg) +; sd s1,-112(incoming_arg) ; sd t4,-104(incoming_arg) ; sd t3,-96(incoming_arg) ; sd t2,-88(incoming_arg) @@ -619,11 +619,11 @@ block2: ; ld a0,16(slot) ; sd a2,-144(incoming_arg) ; sd a1,-136(incoming_arg) -; sd s1,-128(incoming_arg) -; sd s5,-120(incoming_arg) -; sd s4,-112(incoming_arg) -; sd s3,-104(incoming_arg) -; sd s2,-96(incoming_arg) +; sd s5,-128(incoming_arg) +; sd s4,-120(incoming_arg) +; sd s3,-112(incoming_arg) +; sd s2,-104(incoming_arg) +; sd s1,-96(incoming_arg) ; sd t4,-88(incoming_arg) ; sd t3,-80(incoming_arg) ; sd t2,-72(incoming_arg) @@ -666,10 +666,10 @@ block2: ; block1: ; offset 0x54 ; addi a1, zero, 0xa ; sd a1, 0x10(sp) -; addi a2, zero, 0xf -; sd a2, 8(sp) -; addi a3, zero, 0x14 -; sd a3, 0(sp) +; addi a1, zero, 0xf +; sd a1, 8(sp) +; addi a2, zero, 0x14 +; sd a2, 0(sp) ; addi a3, zero, 0x19 ; addi a4, zero, 0x1e ; addi a5, zero, 0x23 @@ -677,11 +677,11 @@ block2: ; addi a7, zero, 0x2d ; addi a2, zero, 0x32 ; addi a1, zero, 0x37 -; addi s1, zero, 0x3c -; addi s5, zero, 0x41 -; addi s4, zero, 0x46 -; addi s3, zero, 0x4b -; addi s2, zero, 0x50 +; addi s5, zero, 0x3c +; addi s4, zero, 0x41 +; addi s3, zero, 0x46 +; addi s2, zero, 0x4b +; addi s1, zero, 0x50 ; addi t4, zero, 0x55 ; addi t3, zero, 0x5a ; addi t2, zero, 0x5f @@ -698,11 +698,11 @@ block2: ; addi a0, zero, 0x8c ; sd a2, 0x90(sp) ; sd a1, 0x98(sp) -; sd s1, 0xa0(sp) -; sd s5, 0xa8(sp) -; sd s4, 0xb0(sp) -; sd s3, 0xb8(sp) -; sd s2, 0xc0(sp) +; sd s5, 0xa0(sp) +; sd s4, 0xa8(sp) +; sd s3, 0xb0(sp) +; sd s2, 0xb8(sp) +; sd s1, 0xc0(sp) ; sd t4, 0xc8(sp) ; sd t3, 0xd0(sp) ; sd t2, 0xd8(sp) @@ -742,11 +742,11 @@ block2: ; ld a0, 0x10(sp) ; sd a2, 0xa0(sp) ; sd a1, 0xa8(sp) -; sd s1, 0xb0(sp) -; sd s5, 0xb8(sp) -; sd s4, 0xc0(sp) -; sd s3, 0xc8(sp) -; sd s2, 0xd0(sp) +; sd s5, 0xb0(sp) +; sd s4, 0xb8(sp) +; sd s3, 0xc0(sp) +; sd s2, 0xc8(sp) +; sd s1, 0xd0(sp) ; sd t4, 0xd8(sp) ; sd t3, 0xe0(sp) ; sd t2, 0xe8(sp)