https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113280

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|ra                          |
     Ever confirmed|0                           |1
   Last reconfirmed|                            |2024-01-08
          Component|middle-end                  |rtl-optimization
             Status|UNCONFIRMED                 |NEW

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
So the problem seems like combine decides somehow to 
combine:
```
(insn 7 4 9 2 (set (reg/v:SF 100 [ xD.4459 ])
        (plus:SF (reg/v:SF 102 [ aD.4455 ])
            (reg/v:SF 103 [ bD.4456 ]))) "/app/example.cpp":6:7 1043 {addsf3}
     (expr_list:REG_DEAD (reg/v:SF 102 [ aD.4455 ])
        (nil)))
(insn 9 7 10 2 (set (reg:SF 104 [ xD.4459 ])
        (asm_operands:SF ("") ("=X") 0 [
                (reg/v:SF 100 [ xD.4459 ])
            ]
             [
                (asm_input:SF ("0") /app/example.cpp:8)
            ]
             [] /app/example.cpp:8)) "/app/example.cpp":8:5 -1
     (expr_list:REG_DEAD (reg/v:SF 100 [ xD.4459 ])
        (nil)))
into:
```
(insn 9 7 10 2 (set (reg:SF 104 [ xD.4459 ])
        (asm_operands:SF ("") ("=X") 0 [
                (plus:SF (reg:SF 106)
                    (reg/v:SF 103 [ bD.4456 ]))
            ]
             [
                (asm_input:SF ("0") /app/example.cpp:8)
            ]
             [] /app/example.cpp:8)) "/app/example.cpp":8:5 -1
     (expr_list:REG_DEAD (reg:SF 106)
        (nil)))
```

But the dump from combine does not make sense:
```
Trying 7 -> 9:
    7: r100:SF=r106:SF+r103:SF
      REG_DEAD r106:SF
    9: r104:SF=asm_operands
      REG_DEAD r100:SF
Failed to match this instruction:
(set (reg:SF 104 [ xD.4459 ])
    (asm_operands:SF ("") ("=X") 0 [
            (plus:SF (reg:SF 106)
                (reg/v:SF 103 [ bD.4456 ]))
        ]
         [
            (asm_input:SF ("0") /app/example.cpp:8)
        ]
         [] /app/example.cpp:8))
allowing combination of insns 7 and 9
original costs 8 + 4 = 12
replacement cost 4
deferring deletion of insn with uid = 7.
modifying insn i3     9: r104:SF=asm_operands
      REG_DEAD r106:SF
deferring rescan insn with uid = 9.
```

Reply via email to