[Bug target/71436] [7 Regression] Segmentation fault in arm_output_multireg_pop

ktkachov at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Jun 6 13:57:00 GMT 2016


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

--- Comment #1 from ktkachov at gcc dot gnu.org ---
The invalid mem-mem set rtx appears during reload. It transforms:

(insn 55 67 151 3 (parallel [
            (set (reg:SI 0 r0)
                (mem/u/c:SI (reg/f:SI 147) [2 c+0 S4 A32]))
            (set (reg:SI 158 [ c+4 ])
                (mem/u/c:SI (plus:SI (reg/f:SI 147)
                        (const_int 4 [0x4])) [2 c+4 S4 A32]))
        ]) arm-crash.c:25 393 {*load_multiple}
     (expr_list:REG_UNUSED (reg:SI 0 r0)
        (nil)))


into:

(insn 55 67 70 3 (parallel [
            (set (reg:SI 0 r0)
                (mem/u/c:SI (reg/f:SI 5 r5 [147]) [2 c+0 S4 A32]))
            (set (mem/c:SI (plus:SI (reg/f:SI 102 sfp)
                        (const_int -4 [0xfffffffffffffffc])) [4 %sfp+-12 S4
A32])
                (mem/u/c:SI (plus:SI (reg/f:SI 5 r5 [147])
                        (const_int 4 [0x4])) [2 c+4 S4 A32]))
        ]) arm-crash.c:25 393 {*load_multiple}
     (nil))

I wonder why this gets recognised?
ldm_stm_operation_p that's supposed to act as a predicate for that insn doesn't
accept it (from what I can see in gdb)


More information about the Gcc-bugs mailing list