[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