bytecodealliance / bytecodealliance/regalloc2
Fuzzer Not Detecting Incorrect Allocation
- Langage dominant
- Rust
- Étoiles
- 265
- Forks
- 53
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
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:
0. branch(1). operands: [def v0 (fixed: p0)] // Allocation: [v0: p0]
block1:
1. operands: [use v0 (fixed: p0)] // Allocation: [v0: p0]
```
And this does:
```
block0:
0. operand: [def v0 (fixed: p0)] // Allocation: [v0: p0]
1. branch(1). operands: [use v0 (fixed: p1)] // Allocation: [v0: p9]
block1:
2. operands: [use v0 (fixed: p0)] // Allocation: [v0: p0]
```
Which is incorrect.
To reproduce this, run the tests in `src/fastalloc/tests.rs` at https://github.com/d-sonuga/regalloc2/tree/975dee0ceb56bbc6cbd21554a237babe1e388573.
To resolve this issue, one of the following could be done:
- Disallow operands in branch instructions.
- Update the fuzzer to check for these operands.
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Évaluation
Cette issue n'a pas encore été évaluée.