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);