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

Reply via email to