http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60718
--- Comment #1 from Bernd Edlinger <bernd.edlinger at hotmail dot de> ---
I think, instructions 40 and 44 are transposed between
select_type_4a.f90.209r.asmcons:
(insn 40 38 43 6 (set (mem/f/c:SI (plus:SI (reg/f:SI 102 sfp)
(const_int -4 [0xfffffffffffffffc])) [3 MEM[(struct
__class_poly_list_Node_type_p *)&node + 4B]+0 S4 A32])
(reg/f:SI 140)) select_type_4a.f90:36 663 {*arm_movsi_vfp}
(nil))
(insn 43 40 44 6 (set (reg/f:SI 139)
(plus:SI (reg/f:SI 102 sfp)
(const_int -8 [0xfffffffffffffff8]))) select_type_4a.f90:36 5
{*arm_addsi3}
(nil))
(insn 44 43 45 6 (parallel [
(set (reg:SI 0 r0)
(mem/c:SI (reg/f:SI 139) [8 MEM[(struct
__class_poly_list_Node_type &)&node]+0 S4 A64]))
(set (reg:SI 1 r1)
(mem/c:SI (plus:SI (reg/f:SI 139)
(const_int 4 [0x4])) [8 MEM[(struct
__class_poly_list_Node_type &)&node]+4 S4 A32]))
]) select_type_4a.f90:36 420 {*ldm2_ia}
(nil))
and select_type_4a.f90.212r.sched1:
(insn 44 38 40 6 (parallel [
(set (reg:SI 0 r0)
(mem/c:SI (reg/f:SI 139) [8 MEM[(struct
__class_poly_list_Node_type &)&node]+0 S4 A64]))
(set (reg:SI 1 r1)
(mem/c:SI (plus:SI (reg/f:SI 139)
(const_int 4 [0x4])) [8 MEM[(struct
__class_poly_list_Node_type &)&node]+4 S4 A32]))
]) select_type_4a.f90:36 420 {*ldm2_ia}
(nil))
(insn 40 44 45 6 (set (mem/f/c:SI (plus:SI (reg/f:SI 102 sfp)
(const_int -4 [0xfffffffffffffffc])) [3 MEM[(struct
__class_poly_list_Node_type_p *)&node + 4B]+0 S4 A32])
(reg/f:SI 140)) select_type_4a.f90:36 663 {*arm_movsi_vfp}
(nil))
but they use an alias to the same memory.
interesting, one names the memory MEM[...&node]+4
and the other names it MEM[...&node+4B]+0.