This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: RFA: patch to solve PR37535
- From: Richard Sandiford <rdsandiford at googlemail dot com>
- To: Vladimir Makarov <vmakarov at redhat dot com>
- Cc: gcc-patches <gcc-patches at gcc dot gnu dot org>, Jeff Law <law at redhat dot com>
- Date: Sat, 20 Sep 2008 10:14:09 +0100
- Subject: Re: RFA: patch to solve PR37535
- References: <48D05B5E.40802@redhat.com>
Vladimir Makarov <vmakarov@redhat.com> writes:
> The following patch solves the PR37535. The analysis of the problem can
> be found on
>
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37535
Thanks for the patch. But my understanding is that (clobber (reg X))
is an earlyclobber for register-allocation purposes, not an output
clobber. C.f. the following bit of rtl.texi:
When a @code{clobber} expression for a register appears inside a
@code{parallel} with other side effects, the register allocator
guarantees that the register is unoccupied both before and after that
insn.
It does go on to say:
... However, the reload phase may allocate a register used for one of
the inputs unless the @samp{&} constraint is specified for the selected
alternative (@pxref{Modifiers}). You can clobber either a specific hard
register, a pseudo register, or a @code{scratch} expression; in the
latter two cases, GCC will allocate a hard register that is available
there for use as a temporary.
but I don't think that makes any difference for these pa and s390 patterns,
where the input operands are hard regs that are either hard-coded into
the .md file, or that have empty constraints.
I notice you said:
Unfortunately using DF for building conflicts became more
complicated that it was before based on REG notes. So it will take
some time.
I'm sorry to hear that you're so unhappy with that change. I'm happy
to back it out if you'd prefer. (Really.)
Richard