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

--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> ---
Index: gcc/config/i386/i386-features.c
===================================================================
--- gcc/config/i386/i386-features.c     (revision 274536)
+++ gcc/config/i386/i386-features.c     (working copy)
@@ -613,6 +613,10 @@ general_scalar_chain::replace_with_subre
   if (x == reg)
     return gen_rtx_SUBREG (vmode, new_reg, 0);

+  /* But not in memory addresses.  */
+  if (GET_CODE (x) == MEM)
+    return x;
+
   const char *fmt = GET_RTX_FORMAT (GET_CODE (x));
   int i, j;
   for (i = GET_RTX_LENGTH (GET_CODE (x)) - 1; i >= 0; i--)


fixes this, but then the replacement has higher cost in the end(?).

Reply via email to