https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101995
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- REG_RETURNED is no longer there. Looks like there is an extra move which caused the code to be different. For aarch64 we have: (insn 18 4 2 2 (set (reg:DI 94) (reg:DI 0 x0 [ foo ])) "/app/example.cpp":17:42 47 {*movdi_aarch64} (nil)) (insn 2 18 3 2 (set (reg/v/f:DI 90 [ foo ]) (reg:DI 94)) "/app/example.cpp":17:42 47 {*movdi_aarch64} (expr_list:REG_DEAD (reg:DI 94) (nil))) Before the call to memset.