On Wed, Jan 11, 2023 at 07:38:44PM -0500, Paul Koning wrote:
> > On Jan 11, 2023, at 2:52 PM, Segher Boessenkool 
> > <seg...@kernel.crashing.org> wrote:
> > On Tue, Jan 10, 2023 at 02:39:34PM -0500, Paul Koning via Gcc wrote:
> > Before reload it did not have operands[0] and operands[1] the same,
> > already?
> 
> No, and given that it's an addhi3 pattern that is fine before reload.  It's 
> reload that has to make them match because the machine instruction is two 
> operand.

Sure.  And one here is a pseudo, so it actually *can* reasonably be
tied.

> Indeed.  So does that mean the discussion about insn 48 is the interesting 
> one?  That goes on for a while:

No, the insns 49 one is the useful one.

            2 Non-pseudo reload: reject+=2
            2 Non input pseudo reload: reject++
          alt=0,overall=9,losers=1,rld_nregs=1
          alt=1,overall=0,losers=0,rld_nregs=0
            1 Matching alt: reject+=2
            1 Non-pseudo reload: reject+=2
            1 Non input pseudo reload: reject++
            alt=0,overall=11,losers=1 -- refuse
            1 Matching alt: reject+=2
            1 Non-pseudo reload: reject+=2
            1 Non input pseudo reload: reject++
            alt=1,overall=11,losers=1 -- refuse
            0 Spill pseudo into memory: reject+=3
            Using memory insn operand 0: reject+=3
            0 Non input pseudo reload: reject++
            alt=2,overall=13,losers=1 -- refuse
            0 Spill pseudo into memory: reject+=3
            Using memory insn operand 0: reject+=3
            0 Non input pseudo reload: reject++
            alt=3,overall=13,losers=1 -- refuse
         Choosing alt 1 in insn 49:  (0) rR  (1) 0  (2) Qi {addhi3}

For all four constraints it could tie operands[1] to it got "refuse".
This can't be good.

> > Please show *all* relevant things in the reload dump file?  Everything
> > about insn 49 or any insn added to reload it, for example.
> 
> I didn't see anything added to 49, but I'm not sure if I would necessarily 
> recognize it.  One observation is that the previous and next insns numbers 
> are 48 and 53 in the IRA and Reload dumps both.

It would look like e.g.
    Inserting insn reload before:
  413: r179:SI=r25:SI
or
    Inserting insn reload after:
  414: r45:SI=r179:SI

> Attached is a .i file produced from the failing compile, with unneeded parts 
> removed.  It's not really tiny but not all that large.  It consistently shows 
> the failure using a pdp11-aout targeted GCC built from yesterday's code, when 
> using -O2 or -Os and -mlra.  It doesn't fail with -O1 or if -mlra is omitted 
> (defaulting, in the currently committed code, to old reload).

It helped, I can reproduce the problem.  Thanks!

Open a PR for the problem?  So that people can cooperate on it easier,
and to battle the "attention span of a goldfish" problem?


Segher

Reply via email to