regalloc2
regalloc2 copied to clipboard
A new register allocator
It's possible for vregs to be used or defined in branch instructions, but the fuzzer doesn't seem to check for these operands. The following doesn't pass the fuzzer: ``` block0:...
One of the reasons for the panic at [here](https://github.com/bytecodealliance/regalloc2/blob/main/src/ion/process.rs#L1253) is that `Early FixedReg Uses` are having their position updated to `Late` when there is already a `Late FixedReg Def` or...
This would allow an `invoke` instruction to define a virtual register representing the return value and then pass this as as blockparam to the regular return block. And similarly define...
Hi, currently it is possible for two panics to happen when a function's SSA is being validated: - If the block's numbering does not start at `0` or is non...
this resolves problems with feature unification and resolves https://github.com/bytecodealliance/regalloc2/issues/209
This crates uses `allocator-api2` without exposing a feature to enable `#![feature(allocator_api)]`. Due to issues outlined here https://github.com/zakarumych/allocator-api2/issues/19, this makes it is impossible to have this crate anywhere in the dependency...
This PR makes `MachineEnv` use `&'static [PReg]` instead of `Vec` to make it possible to place `MachineEnv` into `static`s as part of https://github.com/bytecodealliance/wasmtime/pull/8489. Edit: as it turns out serialization makes...
I'm getting up to snuff on compiler backend details for a personal project and the `regalloc2` overview and the [follow on article](https://cfallin.org/blog/2022/06/09/cranelift-regalloc2/) have been great. I'm not going to pretend...
For #194. The checker can now check whether the entries in the `debug_locations` output contain the vregs they're expected to contain as indicated by `Function::debug_value_labels`. The checking doesn't happen by...
From Jamey's idea [here](https://github.com/bytecodealliance/wasmtime/pull/8489#issuecomment-2106379885): it would be nice for users of RA2 to be able to statically allocate `MachineEnv`s. The current bottleneck is that the struct contains `Vec`s with lists...