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

--- Comment #188 from Kazumoto Kojima <kkojima at gcc dot gnu.org> ---
(In reply to Kazumoto Kojima from comment #187)

Looking at the RTL dumps in -mlra case, there is an instruction to set r4 in
the postreload dump:

(insn 579 573 580 49 (set (reg:SI 4 r4)
        (reg/f:SI 11 r11 [1021])) "/git/gcc/gcc/wide-int.h":822:94 191
{movsi_ie}
     (expr_list:REG_EQUAL (plus:SI (reg/f:SI 153 sfp)
            (const_int -88 [0xffffffffffffffa8]))
        (nil)))
(insn 580 579 581 49 (set (reg:SI 5 r5)
        (reg/f:SI 10 r10 [1023])) "/git/gcc/gcc/wide-int.h":822:94 191
{movsi_ie}
     (expr_list:REG_EQUAL (plus:SI (reg/f:SI 153 sfp)
            (const_int -60 [0xffffffffffffffc4]))
        (nil)))
(insn 581 580 2186 49 (set (reg:SI 6 r6)
        (const_int 1 [0x1])) "/git/gcc/gcc/wide-int.h":822:94 191 {movsi_ie}
     (nil))
(note 2186 581 582 49 NOTE_INSN_DELETED)
(insn 582 2186 2187 49 (parallel [
            (set (mem:BLK (reg:SI 4 r4) [0  A8])
                (mem:BLK (reg:SI 5 r5) [0  A8]))
            (use (reg:SI 14 r14 [1193]))
            (use (const_int 0 [0]))
            (use (reg:SI 6 r6))
            (clobber (reg:SI 146 pr))
            (clobber (reg:SI 147 t))
            (clobber (reg:SI 4 r4))
            (clobber (reg:SI 5 r5))
            (clobber (reg:SI 6 r6))
            (clobber (reg:SI 0 r0))
            (clobber (reg:SI 1 r1))
            (clobber (reg:SI 2 r2))
            (clobber (reg:SI 3 r3))
        ]) "/git/gcc/gcc/wide-int.h":822:94 326 {block_lump_real_i4}
     (nil))

but the insn 579 is dissapeared in late_combine2 dump:

(insn 573 1839 580 49 (set (mem/c:SI (plus:SI (reg/f:SI 10 r10 [1023])
                (const_int 16 [0x10])) [6 MEM[(struct fixed_wide_int_storage
*)_301].len+0 S4 A32])
        (reg:SI 7 r7 [1042])) "/git/gcc/gcc/wide-int.h":1435:7 191 {movsi_ie}
     (nil))
(insn 580 573 581 49 (set (reg:SI 5 r5)
        (reg/f:SI 10 r10 [1023])) "/git/gcc/gcc/wide-int.h":822:94 191
{movsi_ie}
     (expr_list:REG_EQUAL (plus:SI (reg/f:SI 153 sfp)
            (const_int -60 [0xffffffffffffffc4]))
        (nil)))

I confirmed that -fno-late-combine-instructions fixes this issue.  I'm not sure
what is going on, though.
As pointed out in c#184, -fno-late-combine-instructions doesn't help __muldi3
case.

Reply via email to