bytecodealliance / bytecodealliance/regalloc2
Conflicting defs and clobbers lead to panic rather than clean error from allocator
- Ngôn ngữ chính
- Rust
- Star
- 265
- Fork
- 53
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Mô tả
`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
}
```
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
Hướng nghiên cứu
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.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- rust
- Lĩnh vực
- compilers
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 45/100