https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78439
ktkachov at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |ktkachov at gcc dot gnu.org --- Comment #4 from ktkachov at gcc dot gnu.org --- Hmm, this looks like a bug exposed by that patch. The peephole2 pass does something weird. We have: (insn 13 33 40 2 (set (mem/c:SI (plus:SI (reg/f:SI 11 fp) (const_int -28 [0xffffffffffffffe4])) [3 d.num_comps+0 S4 A64]) (reg:SI 12 ip [orig:117 _20 ] [117])) "cp-demangle.c":32 632 {*arm_movsi_vfp} (expr_list:REG_DEAD (reg:SI 12 ip [orig:117 _20 ] [117]) (nil))) (insn 40 13 39 2 (set (mem/f/c:SI (plus:SI (reg/f:SI 11 fp) (const_int -24 [0xffffffffffffffe8])) [2 d.subs+0 S4 A32]) (reg/f:SI 13 sp)) "cp-demangle.c":51 632 {*arm_movsi_vfp} (nil)) being turned into: (insn 68 33 39 2 (set (mem/c:DI (plus:SI (reg/f:SI 11 fp) (const_int -28 [0xffffffffffffffe4])) [3 d.num_comps+0 S8 A64]) (reg:DI 12 ip)) "cp-demangle.c":51 -1 (nil)) which is not recognisable. Something dodgy with the store-multiple peepholes I think