Andrew Pinski/R&D/SCEA wrote on 05/23/2007 06:29:17 PM: > Kenneth Zadeck wrote on 05/23/2007 06:19:05 AM: > > > We have not recently tested the arm, spu, mips, z390, and sparc. > > For spu-elf, we have one regression: > > /home/apinski/src/dataflow/gcc/gcc/testsuite/gcc.dg/pr27335.c: In function 'foo':^M > /home/apinski/src/dataflow/gcc/gcc/testsuite/gcc.dg/pr27335.c:27: internal compiler error: in df_refs_verify, at df-scan.c:4075^M > Please submit a full bug report,^M > with preprocessed source if appropriate.^M > See for instructions.^M > FAIL: gcc.dg/pr27335.c (internal compiler error) > FAIL: gcc.dg/pr27335.c (test for excess errors) > Excess errors: /home/apinski/src/dataflow/gcc/gcc/testsuite/gcc.dg/pr27335.c:27: internal compiler error: in df_refs_verify, at df-scan.c:4075 > > The instruction at the time we are verifying: > (insn 147 146 148 7 (set (reg:SI 240) > (mult:SI (zero_extend:SI (subreg:HI (reg:SI 234) 2)) > (zero_extend:SI (subreg:HI (reg:SI 238) 2)))) -1 (expr_list:REG_EQUAL (mult:SI (zero_extend:SI (subreg:HI (reg:SI 234) 2)) > (const_int 43690 [0xaaaa])) > (nil))) > > Note this is compiling with -O2 -funroll-loops. > > If you need to debug this more than what I have given so far, I be willing to show you how to build a cross compiler for spu-elf. Ok, thanks to Paolo, I found an easy fix, unshare the rtl during the expand. Attached is the patch which I am testing right now and will apply to both the mainline and branch after the test is finished. Thanks, Andrew Pinski ChangeLog: * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain. (umulsi3_highpart): Likewise.