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

--- Comment #2 from Alex Coplan <acoplan at gcc dot gnu.org> ---
So we try to combine these two insns:

(insn 14 82 16 2 (set (mem/c:TF (plus:DI (reg/f:DI 31 sp)
                (const_int 32 [0x20])) [3 %sfp+-32 S16 A128])
        (asm_operands:TF ("") ("=g") 0 [
                (mem/c:TF (plus:DI (reg/f:DI 31 sp)
                        (const_int 32 [0x20])) [3 %sfp+-32 S16 A128])
            ]
             [
                (asm_input:TF ("0") t.c:5)
            ]
             [] t.c:5)) "t.c":5:6 -1
     (nil))
(insn 16 14 19 2 (set (mem/c:TF (plus:DI (reg/f:DI 31 sp)
                (const_int 48 [0x30])) [3 %sfp+-16 S16 A128])
        (asm_operands:TF ("") ("=g") 0 [
                (mem/c:TF (plus:DI (reg/f:DI 31 sp)
                        (const_int 48 [0x30])) [3 %sfp+-16 S16 A128])
            ]
             [
                (asm_input:TF ("0") t.c:5)
            ]
             [] t.c:5)) "t.c":5:6 -1
     (nil))

I think we aren't expecting to see memory operands in the RHS of the stores, I
think the pass needs to reject invalid operands earlier before we even start
tracking them.

Testing a patch.

Reply via email to