http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60675

--- Comment #7 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Created attachment 32461
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=32461&action=edit
More reduced (below 14k)

>From this reduced testcase here is the most important info from the reload
dump:
  344: r173:DF=r594:DF-r693:DF
      REG_DEAD r594:DF
      REG_EQUAL 1.0e+0-r324:DF
    Inserting insn reload before:
  749: r693:DF=r324:DF

            Staticly defined alt reject+=6
            0 Non pseudo reload: reject++
          alt=0,overall=7,losers=0,rld_nregs=0
     Choosing alt 0 in insn 749:  (0) =w  (1) ?rY {*movdf_aarch64}
            Staticly defined alt reject+=6
            0 Non input pseudo reload: reject++
            1 Non-pseudo reload: reject+=2
            1 Non input pseudo reload: reject++
          alt=0,overall=22,losers=2,rld_nregs=2
            Staticly defined alt reject+=6
            1 Non-pseudo reload: reject+=2
            1 Non input pseudo reload: reject++
          alt=1,overall=15,losers=1,rld_nregs=1
            0 Non input pseudo reload: reject++
            1 Non-pseudo reload: reject+=2
            1 Non input pseudo reload: reject++
            alt=2,overall=16,losers=2 -- refuse
            0 Non input pseudo reload: reject++
            alt=3: Bad operand -- refuse
            0 Non input pseudo reload: reject++
          alt=4,overall=7,losers=1,rld_nregs=1
            0 Spill pseudo into memory: reject+=3
            0 Non input pseudo reload: reject++
            alt=5,overall=10,losers=1 -- refuse
          alt=6,overall=0,losers=0,rld_nregs=0
     Choosing alt 6 in insn 266:  (0) r  (1) m {*movdf_aarch64}
            Staticly defined alt reject+=6
          alt=0,overall=12,losers=1,rld_nregs=1
            Staticly defined alt reject+=6
            0 Non-pseudo reload: reject+=2
            0 Non input pseudo reload: reject++
            alt=1,overall=15,losers=1 -- refuse
          alt=2,overall=0,losers=0,rld_nregs=0
     Choosing alt 2 in insn 262:  (0) w  (1) w {*movdf_aarch64}
            Staticly defined alt reject+=6
          alt=0,overall=12,losers=1,rld_nregs=1
            Staticly defined alt reject+=6
            0 Non input pseudo reload: reject++
            alt=1,overall=13,losers=1 -- refuse
          alt=2,overall=606,losers=1,rld_nregs=1
            alt=3: Bad operand -- refuse
            1 Non pseudo reload: reject++
          alt=4,overall=1,losers=0,rld_nregs=0
     Choosing alt 4 in insn 744:  (0) w  (1) m {*movdf_aarch64}
            Staticly defined alt reject+=6
            0 Non input pseudo reload: reject++
          alt=0,overall=619,losers=2,rld_nregs=2
            Staticly defined alt reject+=6
            0 Non input pseudo reload: reject++
          alt=1,overall=13,losers=1,rld_nregs=1
            0 Non input pseudo reload: reject++
          alt=2,overall=607,losers=1,rld_nregs=1
            0 Non input pseudo reload: reject++
            alt=3: Bad operand -- refuse
            0 Non input pseudo reload: reject++
            1 Spill pseudo into memory: reject+=3
            alt=4,overall=16,losers=2 -- refuse
            0 Non pseudo reload: reject++
          alt=5,overall=1,losers=0,rld_nregs=0
     Choosing alt 5 in insn 743:  (0) m  (1) w {*movdf_aarch64}
            0 Non input pseudo reload: reject++
          alt=0,overall=613,losers=2,rld_nregs=4
            0 Costly loser: reject++
            0 Non input pseudo reload: reject++
          alt=1,overall=14,losers=2,rld_nregs=4
            0 Non input pseudo reload: reject++
            1 Costly loser: reject++
          alt=2,overall=614,losers=2,rld_nregs=4
            0 Costly loser: reject++
            0 Non input pseudo reload: reject++
            1 Costly loser: reject++
            alt=3,overall=15,losers=2 -- refuse
            0 Non input pseudo reload: reject++
            1 Spill pseudo into memory: reject+=3
            alt=4,overall=16,losers=2 -- refuse
            0 Non pseudo reload: reject++
          alt=5,overall=7,losers=1,rld_nregs=2
            0 Non pseudo reload: reject++
            alt=6: Bad operand -- refuse
            0 Costly loser: reject++
            0 Non input pseudo reload: reject++
            alt=7,overall=8,losers=1 -- refuse
            0 Non pseudo reload: reject++
            1 Costly loser: reject++
            alt=8,overall=8,losers=1 -- refuse
     Choosing alt 5 in insn 737:  (0) Ump  (1) r {*movti_aarch64}
      Creating newreg=694, assigning class CORE_REGS to r694

It decides to use movti_aarch64 for some reason even though we don't have a
TImode here, only DFmode or DImode.

Reply via email to