This is the mail archive of the
gcc-regression@gcc.gnu.org
mailing list for the GCC project.
Re: GCC build failed with your patch.
- To: gcc-patches at gcc dot gnu dot org
- Subject: Re: GCC build failed with your patch.
- From: Geoff Keating <geoffk at cygnus dot com>
- Date: Mon, 31 Jul 2000 01:30:12 -0700
- CC: jh at suse dot cz, gcc-regression at gcc dot gnu dot org
- References: <200007302124.OAA10006@sloth.cygnus.com>
The problem is this change:
> +Sun Jul 30 20:42:21 MET DST 2000 Jan Hubicka <jh@suse.cz>
> +
> + * gcse.c (try_replace_reg): Use validate_replace_rtx_subexp
> + instead of replace_rtx.
> + * recog.c (validate_replace_rtx_subexp): New function.
> + * recog.h (validate_replace_rtx_subexp): Declare.
> +
It is being called with
(insn 77 75 79 (set (reg:DF 95)
(reg:DF 3 r3)) 290 {*movdf_softfloat32} (nil)
(insn_list:REG_RETVAL 72 (expr_list:REG_EQUAL (expr_list (symbol_ref:SI ("__adddf3"))
(expr_list (reg:DF 90)
(expr_list (reg:DF 89)
(nil))))
(nil))))
and it doesn't seem to be stopping at the NULL_RTX at the end of the
EXPR_LIST. replace_rtx explicitly takes care of this case:
1986 /* Allow this function to make replacements in EXPR_LISTs. */
1987 if (x == 0)
1988 return 0;
To bring gcc back to compile-land, I will add similar code to
validate_replace_rtx_1:
2000-07-31 Geoff Keating <geoffk@cygnus.com>
* recog.c (validate_replace_rtx_1): Ignore NULL_RTX input.
Index: recog.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/recog.c,v
retrieving revision 1.69
diff -p -u -c -r1.69 recog.c
cvs server: conflicting specifications of output style
*** recog.c 2000/07/30 23:57:56 1.69
--- recog.c 2000/07/31 08:29:17
*************** validate_replace_rtx_1 (loc, from, to, o
*** 409,415 ****
register int i, j;
register const char *fmt;
register rtx x = *loc;
! enum rtx_code code = GET_CODE (x);
/* X matches FROM if it is the same rtx or they are both referring to the
same register in the same mode. Avoid calling rtx_equal_p unless the
--- 409,421 ----
register int i, j;
register const char *fmt;
register rtx x = *loc;
! enum rtx_code code;
!
! /* Allow this function to make replacements in EXPR_LISTs. */
! if (x == 0)
! return 0;
!
! code = GET_CODE (x);
/* X matches FROM if it is the same rtx or they are both referring to the
same register in the same mode. Avoid calling rtx_equal_p unless the
... which I'll commit once I've tested it.
--
- Geoffrey Keating <geoffk@cygnus.com>