On Tue, Jun 18, 2019 at 12:31:13PM +, Joel Hutton wrote:
> from bar.c.263r.combine:
> Trying 10 -> 12:
> 10: r97:V4SF=float(r96:V4SI)
> REG_DEAD r96:V4SI
> 12: r98:V4SF=r97:V4SF*r99:V4SF
> REG_DEAD r97:V4SF
> REG_EQUAL r97:V4SF*const_v
Hi Segher,
> I'll need some compilable source code to investigate this. That means
> compilable for*me*, so with some target that is in trunk.
I'm not sure I can trigger this on trunk. I've attached a minimal patch, which
adds a pattern which can trigger the behaviour, and 2 c files: foo.c match
On Mon, Jun 17, 2019 at 12:46:31PM -0500, Segher Boessenkool wrote:
> So this insn 5 makes it hard to combine with insn 9, because you'll quickly
> need a four insn combination, and those are restricted somewhat. But 10+11
> should do something. But it seems it isn't tried at all? Huh.
That's b
On Mon, Jun 17, 2019 at 04:47:29PM +, Joel Hutton wrote:
> Hi Segher,
>
> > If you want the const_vector for r97, you should look at the combination
> > that tries *that* insn together with 10 and 12. Did it try that?
> Why not?
>
> It did not attempt to combine all three, I'm not sure w
Hi Segher,
> If you want the const_vector for r97, you should look at the combination
> that tries *that* insn together with 10 and 12. Did it try that?
Why not?
It did not attempt to combine all three, I'm not sure why not, I would
have expected
it to, they are all in the same basic block.
On Wed, Jun 12, 2019 at 10:52:42AM +, Joel Hutton wrote:
> A summary of the behaviour is:
> when combining A -> B, the register equivalence notes of A are checked, the
> register notes of B are not checked.
>
> Is this expected behaviour?
Yes.
If it would use the notes on B to make the new
Hi all,
This is a patch to demonstrate some unusual behavior I have encountered in
combine.
A summary of the behaviour is:
when combining A -> B, the register equivalence notes of A are checked, the
register notes of B are not checked.
Is this expected behaviour?
from combine.c:1484 in combi