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:
Trevor Elliott
2022-11-29 11:25:35 -08:00
committed by GitHub
parent 3b76874834
commit f138fc0ed3
6 changed files with 13 additions and 27 deletions

4
Cargo.lock generated
View File

@@ -2388,9 +2388,9 @@ dependencies = [
[[package]]
name = "regalloc2"
version = "0.4.2"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "91b2eab54204ea0117fe9a060537e0b07a4e72f7c7d182361ecc346cab2240e5"
checksum = "10b072c75d1b10368447a55cf1d589f2527d956e92c281c81c3e788cda81b983"
dependencies = [
"fxhash",
"log",

View File

@@ -26,7 +26,7 @@ serde = { version = "1.0.94", features = ["derive"], optional = true }
bincode = { version = "1.2.1", optional = true }
gimli = { workspace = true, features = ["write"], optional = 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 }
sha2 = { version = "0.10.2", optional = true }
# It is a goal of the cranelift-codegen crate to have minimal external dependencies.

View File

@@ -25,7 +25,7 @@ use regalloc2::{MachineEnv, PRegSet};
use smallvec::{smallvec, SmallVec};
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.
/// 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 {
f,
flags,
allocatable: preg_set_from_machine_env(machine_env),
allocatable: PRegSet::from(machine_env),
vcode,
vregs,
value_regs,

View File

@@ -4,7 +4,7 @@
use alloc::{string::String, vec::Vec};
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")]
use serde::{Deserialize, Serialize};
@@ -38,26 +38,6 @@ pub fn first_user_vreg_index() -> usize {
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
/// virtual register or a fixed physical register. It does not have
/// any constraints applied to it: those can be added later in

View File

@@ -416,6 +416,12 @@ criteria = "safe-to-deploy"
delta = "0.4.1 -> 0.4.2"
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]]
who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-deploy"

View File

@@ -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
# by Cranelift and Winch.
cranelift-codegen = { workspace = true }
regalloc2 = "0.4.2"
regalloc2 = "0.5.0"
[features]
x64 = ["cranelift-codegen/x86"]