[Bug rtl-optimization/86107] [9 Regression] ICE: in ix86_mitigate_rop, at config/i386/i386.c:42301 with -O -funroll-loops -mavx5124fmaps -mmitigate-rop --param=hot-bb-frequency-fraction=1

rsandifo at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Jun 13 16:57:00 GMT 2018


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86107

--- Comment #6 from rsandifo at gcc dot gnu.org <rsandifo at gcc dot gnu.org> ---
(In reply to Uroš Bizjak from comment #5)
> (In reply to rsandifo@gcc.gnu.org from comment #4)
> 
> > > but should not fail verification even for !TARGET_INTER_UNIT_MOVES_TO_VEC
> > > targets. As a matter of fact, the compilation works with -mtune=intel.
> > 
> > This is by design when the insn belongs to a block that is being
> > optimised for speed rather than size.  It isn't recog per se that
> > fails, but the validate_change stuff, which is designed for doing
> > optional optimisations rather than required changes.
> 
> Please note that regrename_do_replace fails, since the mentioned instruction
> does not validate, although the compiler just wants to rename %bx to %dx in
> (insn 1264); a simple register rename should not make the new insn invalid.

Yeah, but "validate" in the "validate_change" sense rather than
"recog_memoized" sense.  Like I say, that's by design: regrename
shouldn't be changing a "preferred for speed" alternative into
a "not preferred for speed" alternative if the block is being
optimised for speed.  The renaming is a pure optimisation when
regrename does it, so returning false is the right thing to do.


More information about the Gcc-bugs mailing list