On Fri, Sep 21, 2018 at 12:50:40PM +0200, Ulrich Weigand wrote:
> Ilya Leoshkevich wrote:
> 
> > 2018-09-19  Ilya Leoshkevich  <i...@linux.ibm.com>
> > 
> >     PR target/80080
> >     * config/s390/s390.md: Do not use PARALLEL RETURN+USE when
> >     returning via %r14.
> 
> This makes sense to me.  I'm just wondering if it wouldn't be
> simpler to do the check for r14 right in s390_emit_epilogue
> and then just call gen_return instead of gen_return_use
> directly there?

I had the same thought :-)

> > +++ b/gcc/config/s390/s390.md
> > @@ -10831,6 +10831,13 @@
> >       (use (match_operand 0 "register_operand" "a"))])]
> >    ""
> >  {
> > +  if (REGNO (operands[0]) == RETURN_REGNUM && s390_can_use_return_insn ())
> 
> This probably cannot happen in practice in this specific case,
> but in general a register_operand may also be e.g. a SUBREG,
> so you shouldn't use REGNO without first verifying that this
> is a REG.  (If you move the check to s390_emit_epilogue as above,
> this point is moot; you don't even need to generate a REG RTX
> if it's for r14 then.)

There is reg_or_subregno exactly for this.


Segher

Reply via email to