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 rsand...@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.

Reply via email to