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.