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

acsawdey at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |ebotcazou at gcc dot gnu.org,
                   |                            |rsandifo at gcc dot gnu.org

--- Comment #27 from acsawdey at gcc dot gnu.org ---
So, I think the problem is that the rtx given by
crtl->args.internal_arg_pointer is not canonical as expected. So near the
beginning of vt_add_function_parameter where it is using == to compare parts of
the incoming arg rtx to this, it fails but rtx_equal_p does not. This small
patch resolves the go bootstrap issues:

Index: gcc/var-tracking.c
===================================================================
--- gcc/var-tracking.c  (revision 257159)
+++ gcc/var-tracking.c  (working copy)
@@ -9668,10 +9668,10 @@
      into MEMs based on the argument pointer, so that incoming doesn't
      depend on a pseudo.  */
   if (MEM_P (incoming)
-      && (XEXP (incoming, 0) == crtl->args.internal_arg_pointer
+      && (rtx_equal_p (XEXP (incoming, 0), crtl->args.internal_arg_pointer)
          || (GET_CODE (XEXP (incoming, 0)) == PLUS
-             && XEXP (XEXP (incoming, 0), 0)
-                == crtl->args.internal_arg_pointer
+             && rtx_equal_p (XEXP (XEXP (incoming, 0), 0),
+                             crtl->args.internal_arg_pointer)
              && CONST_INT_P (XEXP (XEXP (incoming, 0), 1)))))
     {
       HOST_WIDE_INT off = -FIRST_PARM_OFFSET (current_function_decl);

Reply via email to