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

--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
--- gcc/rtlanal.cc.jj   2024-02-24 12:45:28.674249100 +0100
+++ gcc/rtlanal.cc      2024-04-18 15:09:55.199499083 +0200
@@ -1637,12 +1637,15 @@ set_noop_p (const_rtx set)
     return true;

   if (MEM_P (dst) && MEM_P (src))
-    return rtx_equal_p (dst, src) && !side_effects_p (dst);
+    return (rtx_equal_p (dst, src)
+           && !side_effects_p (dst)
+           && !side_effects_p (src));

   if (GET_CODE (dst) == ZERO_EXTRACT)
-    return rtx_equal_p (XEXP (dst, 0), src)
-          && !BITS_BIG_ENDIAN && XEXP (dst, 2) == const0_rtx
-          && !side_effects_p (src);
+    return (rtx_equal_p (XEXP (dst, 0), src)
+           && !BITS_BIG_ENDIAN && XEXP (dst, 2) == const0_rtx
+           && !side_effects_p (src)
+           && !side_effects_p (XEXP (dst, 0)));

   if (GET_CODE (dst) == STRICT_LOW_PART)
     dst = XEXP (dst, 0);
should fix this.

Reply via email to