This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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.  */

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]