[Bug target/69176] [6 Regression] ICE in in final_scan_insn, at final.c:2981 on aarch64-linux-gnu
pinskia at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Jan 7 20:25:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69176
--- Comment #8 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Wilco from comment #7)
> > > I think the problem is the constraints on *add<mode>3_pluslong allows all immediates.
> >
> > I'm not sure what you mean here - there are 4 constraints that should all be
> > true before the instruction is matched: GPI, aarch64_pluslong_immediate, 'i'
> > and "!aarch64_plus_operand (operands[2], VOIDmode) && !aarch64_move_imm
> > (INTVAL (operands[2]), <MODE>mode)".
>
> It appears reload creates the instruction without doing the last check -
> this is incorrect as it might be an instruction that is disabled (eg. not
> supported by the selected architecture)...
>
> However a trivial workaround is to always expand the pattern by changing the
> "&& true" into "true". I'll post a patch.
plus patterns are special to reload (this is documented IIRC). So I think there
should be only one plus pattern for DI mode.
More information about the Gcc-bugs
mailing list