This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Internal compiler error building libstdc++ for vax
On 03/19/2018 03:46 PM, coypu@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