Cranelift, Part 3: Correctness in Register Allocation