regalloc2 icon indicating copy to clipboard operation
regalloc2 copied to clipboard

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

Open MaxVerevkin opened this issue 9 months ago • 4 comments

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
}

MaxVerevkin avatar Apr 13 '25 14:04 MaxVerevkin