2 This is a very simple check to a condition that on lightning 2.0.5
3 could cause an assertion on some backends, due to correcting a problem
4 with temporaries that could not be saved/reloaded due to being used only
5 in the hardware instruction, or being considered live for too long on the
6 lightning instruction, and that could not be reloaded after the jump target
7 (or after false/true target on conditional branches).
9 If this code in lib/lightning.c:_jit_update():
11 for (regno = 0; regno < _jitc->reglen; regno++) {
12 spec = jit_class(_rvs[regno].spec);
13 if (jit_regset_tstbit(mask, regno) &&
14 (spec & (jit_class_gpr|jit_class_fpr)) &&
15 !(spec & jit_class_sav))
16 jit_regset_clrbit(mask, regno);
19 were removed, this test case, on x86_64 would fail like this:
21 lt-lightning: lightning.c:305: _jit_get_reg: Assertion `regspec & 0x02000000' failed.
47 movi %r0 ret_add_v1_v2
52 beqi_d pass_movi_f0 %f0 3
55 beqi pass_check_v2 %v2 2
59 beqi pass_add_v1_v2 %v1 3