Re: [Combine] Unusual behaviour in combine

2019-06-18 Thread Segher Boessenkool
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

[Combine] Unusual behaviour in combine

2019-06-18 Thread Joel Hutton
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

Re: [Combine] Unusual behaviour in combine

2019-06-17 Thread Segher Boessenkool
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

Re: [Combine] Unusual behaviour in combine

2019-06-17 Thread Segher Boessenkool
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

Re: [Combine] Unusual behaviour in combine

2019-06-17 Thread Joel Hutton
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.

Re: [Combine] Unusual behaviour in combine

2019-06-14 Thread Segher Boessenkool
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

[Combine] Unusual behaviour in combine

2019-06-12 Thread Joel Hutton
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