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

--- Comment #377 from Kazumoto Kojima <kkojima at gcc dot gnu.org> ---
(In reply to Oleg Endo from comment #376)
> Alternative #2 above is the same as alternative #13 of the "movsf_ie"
> pattern, isn't it?
> .. which is also the same as "movsf_ie_y" and that dangling 'define_split'
> below, which could be the reason for PR 116709.
> 
> I'm a bit concerned that all the different SFmode move constructs will get
> in the way when trying to address PR 115949 (trouble with v2sf usage from
> fsca insn), PR 13423, PR 55295...

movsf_ie_rffr/2 is different with its SFmode clobber pattern from others.
They are similar but movsf_ie_rffr is generated only brfore RA.  RA will see
the alternatives of the generated insn so they don't make RA confuse, I
thought.  There could be problems for them, though.

> 
> Another thing in the "SH: Try to reduce R0 live ranges" patch, pattern
> define_expand "mov<mode>":
> 
> >  if (! lra_in_progress && ! reload_completed
> >      && sh_lra_p ()
> >      && ! TARGET_SH2A
> >      && arith_reg_operand (operands[1], <MODE>mode)
> >      && satisfies_constraint_Sid (operands[0]))
> >    {
> >      rtx adr = XEXP (operands[0], 0);
> >      rtx base = XEXP (adr, 0);
> >      rtx idx = XEXP (adr, 1);
> >      emit_insn (gen_mov<mode>_store_mem_index (base, idx,operands[1]));
> >      DONE;
> >    }
> 
> Doesn't this break mem aliasing info?  Also the code added in "movsf" that
> does a similar thing... AFAIR the proper way would be to use
> 'replace_equiv_address' somehow?

Maybe.  There could be a lot of room for improvement.

Reply via email to