This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PR80693] drop value of parallel SETs dropped by combine


On Thu, Jun 22, 2017 at 03:21:01AM -0300, Alexandre Oliva wrote:
> On Jun  8, 2017, Segher Boessenkool <segher@kernel.crashing.org> wrote:
> 
> > [ I missed this patch the first time around; please cc: me to prevent this ]
> 
> > On Thu, May 18, 2017 at 07:25:57AM -0300, Alexandre Oliva wrote:
> >> When an insn used by combine has multiple SETs, only the non-REG_UNUSED
> >> set is used: others will end up dropped on the floor.
> 
> > Sometimes, yes; not always.
> 
> You mean sets to non-REGs, I suppose.  I didn't take them into account
> in my statement indeed, but I think it still applies: can_combine_p will
> reject parallel SETs if two or more of them don't have a REG_UNUSED note
> for their respective SET_DESTs.

can_combine_p is not called for I3; it also isn't called until after
I2 is split, if that happens.

It is fairly normal for an I3 with two SETs to have both survive in the
combined insn, even if one is unused.  (And this is a good thing!  The
insn with one SET removed might not exist.  OTOH, if we can remove one
of the SETs we probably should; we don't try that currently, if the
"full" instruction is recognised.)


Segher


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]