bytecodealliance / bytecodealliance/regalloc2

Conflicting defs and clobbers lead to panic rather than clean error from allocator

オープン
#222 コメント 4 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
Rust
スター
265
フォーク
53
PR マージ指標
30日以内にマージされた PR はありません

説明

`regalloc2 v0.12.0`

```text
thread 'main' panicked at /home/maxv/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regalloc2-0.12.0/src/ion/process.rs:1253:17:
Could not allocate minimal bundle, but the allocation problem should be possible to solve
```

Function which causes a panic:

Debug repr

```text
{
machine_env: MachineEnv {
preferred_regs_by_class: [
[
PReg(hw = 0, class = Int, index = 0),
PReg(hw = 1, class = Int, index = 1),
PReg(hw = 2, class = Int, index = 2),
],
[],
[],
],
non_preferred_regs_by_class: [
[],
[],
[],
],
scratch_by_class: [
None,
None,
None,
],
fixed_stack_slots: [],
}
spillslot_size(Int): 1
spillslot_size(Float): 1
spillslot_size(Vector): 1
multi_spillslot_named_by_last_slot: false
allow_multiple_vreg_defs: false
block0(): # succs:[] preds:[]
inst0: op Def: v0i any
inst1: op Def: v1i fixed(p0i), Use: v0i fixed(p1i), Clobber: p0i, Clobber: p1i, Clobber: p2i
inst2: ret Use: v1i fixed(p0i)
}
```

JSON repr

```json
{
"machine_env": {
"preferred_regs_by_class": [
[
{
"bits": 0
},
{
"bits": 1
},
{
"bits": 2
}
],
[],
[]
],
"non_preferred_regs_by_class": [
[],
[],
[]
],
"scratch_by_class": [
null,
null,
null
],
"fixed_stack_slots": []
},
"entry_block": 0,
"insts": [
{
"op": "Op",
"operands": [
{
"bits": 8388609
}
],
"clobbers": {
"bits": [
0,
0,
0,
0
]
}
},
{
"op": "Op",
"operands": [
{
"bits": 2155872256
},
{
"bits": 2197815297
}
],
"clobbers": {
"bits": [
7,
0,
0,
0
]
}
},
{
"op": "Ret",
"operands": [
{
"bits": 2164260864
}
],
"clobbers": {
"bits": [
0,
0,
0,
0
]
}
}
],
"blocks": [
[
0,
3
]
],
"block_preds": [
[]
],
"block_succs": [
[]
],
"block_params_in": [
[]
],
"block_params_out": [
[]
],
"num_vregs": 2,
"debug_value_labels": [],
"spillslot_size": [
1,
1,
1
],
"multi_spillslot_named_by_last_slot": false,
"allow_multiple_vreg_defs": false
}
```

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

調査の方向性

Reproduce the panic using the supplied function or JSON representation with regalloc2 v0.12.0. Start at ion/process.rs:1253 and trace the allocator path handling the conflicting definitions and clobbers. Done means this input produces a clean allocation error rather than a panic.

索引モデルが issue の本文から書いたものです。

評価

技術スタック
rust
領域
compilers
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
45/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。