There is some special handling of undef operands here which I don't
understand. For some reason a special offset value is used and the
type is changed to Constant, and then later was replaced with
ConstantIndex based on the dummy offset value. This also seems to be
inconsistently treated in the existing code. See the test changes in
statepoint-fixup-undef.mir since this stops the use of the constant
pool with the special offset in one of the run lines. I don't
understand why an undef operand would end up being encoded as anything
in the final binary.
Also have no idea if the new test checks are meaningful.
This avoids test failures in a future patch which starts discarding
liveness information on register allocation failures.
I also noticed we seem to be lacking verification for PATCHPOINT's
operand restrictions. In particular you hit assertions if the operand
for the number of operands isn't correct.