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

Aperta
#222 4 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
45/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Ferma
Stack tecnologico
rust
Ambito
compilers

Direzione di ricerca

Riproduci il panic utilizzando la funzione o la rappresentazione JSON fornita con regalloc2 v0.12.0. Inizia da ion/process.rs:1253 e traccia il percorso dell’allocator che gestisce le definizioni in conflitto e i clobbers. Il lavoro è completato quando questo input produce un errore pulito dell’allocator invece di un panic.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

regalloc2 v0.12.0

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
{
  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
{
  "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
}
Lingua principale
Rust
Stelle
266
Fork
54
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di bytecodealliance/regalloc2

Tutte le issue di bytecodealliance/regalloc2

Issue simili

Altre issue su Rust

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.