------- Comment #1 from rask at sygehus dot dk 2007-07-15 14:29 -------
I get something similiar with my 16-bit x86 port compiling libgcc:
/home/rask/cvsbuild/gcc/./gcc/xgcc -B/home/rask/cvsbuild/gcc/./gcc/ -nostdinc
-B/home/rask/cvsbuild/gcc/ia16-elf/newlib/ -isystem
/home/rask/cvsbuild/gcc/ia16-elf/newlib/targ-include -isystem
/home/rask/cvssrc/gcc/newlib/libc/include -B/usr/local/gcc/ia16-elf/bin/
-B/usr/local/gcc/ia16-elf/lib/ -isystem /usr/local/gcc/ia16-elf/include
-isystem /usr/local/gcc/ia16-elf/sys-include -O2 -g -O2 -fno-split-wide-types
-O2 -O2 -g -O2 -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE -W -Wall
-Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition
-isystem ./include -g -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -Dinhibit_libc
-I. -I. -I../../.././gcc -I../../../../../cvssrc/gcc/libgcc
-I../../../../../cvssrc/gcc/libgcc/. -I../../../../../cvssrc/gcc/libgcc/../gcc
-I../../../../../cvssrc/gcc/libgcc/../include -DHAVE_CC_TLS -o _mulvsi3.o -MT
_mulvsi3.o -MD -MP -MF _mulvsi3.dep -DL_mulvsi3 -c
../../../../../cvssrc/gcc/libgcc/../gcc/libgcc2.c \
../../../../../cvssrc/gcc/libgcc/../gcc/libgcc2.c: In function '__mulvsi3':
../../../../../cvssrc/gcc/libgcc/../gcc/libgcc2.c:169: internal compiler error:
RTL check: expected code 'reg', have 'subreg' in rhs_regno, at rtl.h:972
This patch seems to fix it:
Index: gcc/df-problems.c
===================================================================
--- gcc/df-problems.c (revision 126653)
+++ gcc/df-problems.c (working copy)
@@ -4023,8 +4023,9 @@ df_note_bb_compute (unsigned int bb_inde
while (*mws_rec)
{
struct df_mw_hardreg *mws = *mws_rec;
+ rtx reg = REG_P (mws->mw_reg) ? mws->mw_reg : SUBREG_REG
(mws->mw_reg);
if ((mws->type != DF_REF_REG_DEF)
- && !df_ignore_stack_reg (REGNO (mws->mw_reg)))
+ && !df_ignore_stack_reg (REGNO (reg)))
old_dead_notes
= df_set_dead_notes_for_mw (insn, old_dead_notes,
mws, live, do_not_gen,
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32557