regalloc2 icon indicating copy to clipboard operation
regalloc2 copied to clipboard

Make regalloc2 panic-clean: always return errors when impossible constraints occur

Open cfallin opened this issue 4 years ago • 1 comments

Right now, the allocator can panic if the client provides impossible constraints, such as requiring two different operands to be placed in the same PReg.

While this represents a programming error in the client and shouldn't arise from an invalid input program, it is always better to bubble up errors; we should reserve panic!() and assert!() for conditions that can only be violated due to errors in regalloc2 itself.

cfallin avatar Sep 01 '21 01:09 cfallin

I will report it here since I think it is a misuse on my part, but I ran into a panic when declaring a call instruction that returns (defines) r0 but also clobbers r0. The meaning of such an instruction is a bit ambiguous, but I guess regalloc interprets it as an impossible constraint.

digama0 avatar Nov 11 '21 10:11 digama0