Bump regalloc2 to 0.5.0 (#5345)
* Bump the regalloc2 dependency to 0.5.0 * Replace preg_set_from_machine_env with PRegSet::from * Vet the regalloc2 update
This commit is contained in:
4
Cargo.lock
generated
4
Cargo.lock
generated
@@ -2388,9 +2388,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "regalloc2"
|
name = "regalloc2"
|
||||||
version = "0.4.2"
|
version = "0.5.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "91b2eab54204ea0117fe9a060537e0b07a4e72f7c7d182361ecc346cab2240e5"
|
checksum = "10b072c75d1b10368447a55cf1d589f2527d956e92c281c81c3e788cda81b983"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"fxhash",
|
"fxhash",
|
||||||
"log",
|
"log",
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ serde = { version = "1.0.94", features = ["derive"], optional = true }
|
|||||||
bincode = { version = "1.2.1", optional = true }
|
bincode = { version = "1.2.1", optional = true }
|
||||||
gimli = { workspace = true, features = ["write"], optional = true }
|
gimli = { workspace = true, features = ["write"], optional = true }
|
||||||
smallvec = { workspace = true }
|
smallvec = { workspace = true }
|
||||||
regalloc2 = { version = "0.4.2", features = ["checker"] }
|
regalloc2 = { version = "0.5.0", features = ["checker"] }
|
||||||
souper-ir = { version = "2.1.0", optional = true }
|
souper-ir = { version = "2.1.0", optional = true }
|
||||||
sha2 = { version = "0.10.2", optional = true }
|
sha2 = { version = "0.10.2", optional = true }
|
||||||
# It is a goal of the cranelift-codegen crate to have minimal external dependencies.
|
# It is a goal of the cranelift-codegen crate to have minimal external dependencies.
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ use regalloc2::{MachineEnv, PRegSet};
|
|||||||
use smallvec::{smallvec, SmallVec};
|
use smallvec::{smallvec, SmallVec};
|
||||||
use std::fmt::Debug;
|
use std::fmt::Debug;
|
||||||
|
|
||||||
use super::{preg_set_from_machine_env, VCodeBuildDirection, VRegAllocator};
|
use super::{VCodeBuildDirection, VRegAllocator};
|
||||||
|
|
||||||
/// An "instruction color" partitions CLIF instructions by side-effecting ops.
|
/// An "instruction color" partitions CLIF instructions by side-effecting ops.
|
||||||
/// All instructions with the same "color" are guaranteed not to be separated by
|
/// All instructions with the same "color" are guaranteed not to be separated by
|
||||||
@@ -417,7 +417,7 @@ impl<'func, I: VCodeInst> Lower<'func, I> {
|
|||||||
Ok(Lower {
|
Ok(Lower {
|
||||||
f,
|
f,
|
||||||
flags,
|
flags,
|
||||||
allocatable: preg_set_from_machine_env(machine_env),
|
allocatable: PRegSet::from(machine_env),
|
||||||
vcode,
|
vcode,
|
||||||
vregs,
|
vregs,
|
||||||
value_regs,
|
value_regs,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
use alloc::{string::String, vec::Vec};
|
use alloc::{string::String, vec::Vec};
|
||||||
use core::{fmt::Debug, hash::Hash};
|
use core::{fmt::Debug, hash::Hash};
|
||||||
use regalloc2::{Allocation, MachineEnv, Operand, OperandConstraint, PReg, PRegSet, VReg};
|
use regalloc2::{Allocation, Operand, OperandConstraint, PReg, PRegSet, VReg};
|
||||||
|
|
||||||
#[cfg(feature = "enable-serde")]
|
#[cfg(feature = "enable-serde")]
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
@@ -38,26 +38,6 @@ pub fn first_user_vreg_index() -> usize {
|
|||||||
PINNED_VREGS
|
PINNED_VREGS
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Collect the registers from a regalloc2 MachineEnv into a PRegSet.
|
|
||||||
/// TODO: remove this once it's upstreamed in regalloc2
|
|
||||||
pub fn preg_set_from_machine_env(machine_env: &MachineEnv) -> PRegSet {
|
|
||||||
let mut regs = PRegSet::default();
|
|
||||||
|
|
||||||
for class in machine_env.preferred_regs_by_class.iter() {
|
|
||||||
for reg in class.iter() {
|
|
||||||
regs.add(*reg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for class in machine_env.non_preferred_regs_by_class.iter() {
|
|
||||||
for reg in class.iter() {
|
|
||||||
regs.add(*reg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
regs
|
|
||||||
}
|
|
||||||
|
|
||||||
/// A register named in an instruction. This register can be either a
|
/// A register named in an instruction. This register can be either a
|
||||||
/// virtual register or a fixed physical register. It does not have
|
/// virtual register or a fixed physical register. It does not have
|
||||||
/// any constraints applied to it: those can be added later in
|
/// any constraints applied to it: those can be added later in
|
||||||
|
|||||||
@@ -416,6 +416,12 @@ criteria = "safe-to-deploy"
|
|||||||
delta = "0.4.1 -> 0.4.2"
|
delta = "0.4.1 -> 0.4.2"
|
||||||
notes = "The Bytecode Alliance is the author of this crate."
|
notes = "The Bytecode Alliance is the author of this crate."
|
||||||
|
|
||||||
|
[[audits.regalloc2]]
|
||||||
|
who = "Trevor Elliott <telliott@fastly.com>"
|
||||||
|
criteria = "safe-to-deploy"
|
||||||
|
delta = "0.4.2 -> 0.5.0"
|
||||||
|
notes = "The Bytecode Alliance is the author of this crate."
|
||||||
|
|
||||||
[[audits.rustc-demangle]]
|
[[audits.rustc-demangle]]
|
||||||
who = "Alex Crichton <alex@alexcrichton.com>"
|
who = "Alex Crichton <alex@alexcrichton.com>"
|
||||||
criteria = "safe-to-deploy"
|
criteria = "safe-to-deploy"
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ target-lexicon = { workspace = true, features = ["std"] }
|
|||||||
# In the next iteration we'll factor out the common bits so that they can be consumed
|
# In the next iteration we'll factor out the common bits so that they can be consumed
|
||||||
# by Cranelift and Winch.
|
# by Cranelift and Winch.
|
||||||
cranelift-codegen = { workspace = true }
|
cranelift-codegen = { workspace = true }
|
||||||
regalloc2 = "0.4.2"
|
regalloc2 = "0.5.0"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
x64 = ["cranelift-codegen/x86"]
|
x64 = ["cranelift-codegen/x86"]
|
||||||
|
|||||||
Reference in New Issue
Block a user