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.