This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: bootstrap broken on powerpc-linux and powerpc64-linux
Alan Modra wrote:
Both powerpc-linux and powerpc64-linux die compiling libgfortran. Looks
to be your recent patches. The powerpc64 failure is
matmul_c4.c: In function 'matmul_c4':
matmul_c4.c:274: internal compiler error: in rtx_equiv_p, at struct-equiv.c:644
(gdb) up
#2 0x00000000103bb790 in set_dest_equiv_p (x=0x8000679010, y=0x80006791d0,
info=0x1ffffffeb80) at /src/gcc-current/gcc/struct-equiv.c:761
(gdb) p debug_rtx (x)
(parallel [
(set (parallel:SC [
(expr_list:REG_DEP_ANTI (reg:SF 33 1)
(const_int 0 [0x0]))
(expr_list:REG_DEP_ANTI (reg:SF 34 2)
(const_int 4 [0x4]))
])
(call (mem:SI (symbol_ref:DI ("__mulsc3") [flags 0x41] <function_decl 0x8000299200 __mulsc3>) [0 S4 A8])
(const_int 64 [0x40])))
(use (const_int 0 [0x0]))
(clobber (reg:SI 65 lr))
])
That one looks relatively easy to fix.
I have checked in the attached patch under the obvious rule.
2005-12-14 J"orn Rennecke <joern.rennecke@st.com>
* struct-equiv.c (rtx_equiv_p): Allow arbitrary RVALUE values for
PARALLELs with a mode.
Index: struct-equiv.c
===================================================================
/usr/bin/diff -p -d -F^( -u -L struct-equiv.c (revision 108508) -L struct-equiv.c (working copy) .svn/text-base/struct-equiv.c.svn-base struct-equiv.c
--- struct-equiv.c (revision 108508)
+++ struct-equiv.c (working copy)
@@ -637,7 +637,10 @@ rtx_equiv_p (rtx *xp, rtx y, int rvalue,
return (rtx_equiv_p (&XEXP (x, 0), XEXP (y, 0), 0, info)
&& rtx_equiv_p (&XEXP (x, 0), XEXP (y, 0), 1, info));
case PARALLEL:
- gcc_assert (rvalue < 0);
+ /* If this is a top-level PATTERN PARALLEL, we expect the caller to
+ have handled the SET_DESTs. A complex or vector PARALLEL can be
+ identified by having a mode. */
+ gcc_assert (rvalue < 0 || GET_MODE (x) != VOIDmode);
break;
case LABEL_REF:
/* Check special tablejump match case. */