https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118594

--- Comment #12 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
For gcc 15 I'd suggest to go with
--- gcc/expr.cc.jj      2025-01-13 13:57:15.952153645 +0100
+++ gcc/expr.cc 2025-01-24 17:46:33.026188539 +0100
@@ -445,8 +445,11 @@ convert_mode_scalar (rtx to, rtx from, i
                                        0).exists (&toi_mode))
                {
                  start_sequence ();
-                 rtx fromi = force_lowpart_subreg (fromi_mode, from,
-                                                   from_mode);
+                 rtx fromi;
+                 if (MEM_P (from))
+                   fromi = adjust_address (from, fromi_mode, 0);
+                 else
+                   fromi = force_lowpart_subreg (fromi_mode, from, from_mode);
                  rtx tof = NULL_RTX;
                  if (fromi)
                    {
and we can do something better in the lowpart subreg handling for GCC 16.

Reply via email to