------- 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