https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108862
--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Created attachment 54495 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=54495&action=edit gcc13-pr108862.patch Variant patch, instead of creating another temporary and moving it we can just do the highpart (which goes into temporary) first, then lowpart, then addition which depends on the highpart. Strangely, with this patch one gets the loop unrolled (2 handled iterations at once), while with the earlier patch it is not.