This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]