On 03/19/2018 03:46 PM, co...@sdf.org wrote: > (updating) > krister found a better hack patch which explains what the problem is, > adding a useless move at the end of the instruction, so the label is > not the last instruction. > > (And, in the problem code, the last instruction in the function.) > > --- a/external/gpl3/gcc/dist/gcc/config/vax/builtins.md > +++ b/external/gpl3/gcc/dist/gcc/config/vax/builtins.md > @@ -70,6 +70,7 @@ > emit_jump_insn (gen_jbbssi<mode> (operands[1], const0_rtx, label, > operands[1])); > emit_move_insn (operands[0], const0_rtx); > emit_label (label); > + emit_move_insn (operands[0], operands[0]); > DONE; > }") > You're almost certainly not fixing the problem with that patch. You're just twiddling the generated IL in such a way that you're hiding the real problem.
If I had to hazard a guess it looks like those jbs* patterns don't accept a reversed pc/label_ref. There may be other problems, that's the most glaring one I see. As an example of it done right, look at "*branch" and "*branch_reversed". jeff