[Bug rtl-optimization/32557] [4.3 Regression] internal compiler error: RTL check: expected code 'reg', have 'subreg' in rhs_regno, at rtl.h:956
-- pinskia at gcc dot gnu dot org changed: What|Removed |Added Component|c |rtl-optimization Keywords||build, ice-checking, ice-on- ||valid-code Summary|internal compiler error: RTL|[4.3 Regression] internal |check: expected code 'reg', |compiler error: RTL check: |have 'subreg' in rhs_regno, |expected code 'reg', have |at rtl.h:956|'subreg' in rhs_regno, at ||rtl.h:956 Target Milestone|--- |4.3.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32557
[Bug rtl-optimization/32557] [4.3 Regression] internal compiler error: RTL check: expected code 'reg', have 'subreg' in rhs_regno, at rtl.h:956
--- 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
[Bug rtl-optimization/32557] [4.3 Regression] internal compiler error: RTL check: expected code 'reg', have 'subreg' in rhs_regno, at rtl.h:956
--- Comment #2 from ebotcazou at gcc dot gnu dot org 2007-07-15 15:43 --- > I get something similiar with my 16-bit x86 port compiling libgcc: Same on SPARC/Solaris: http://gcc.gnu.org/ml/gcc-patches/2007-06/msg02135.html > 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, See the discussion at http://gcc.gnu.org/ml/gcc-patches/2007-06/msg01894.html -- ebotcazou at gcc dot gnu dot org changed: What|Removed |Added CC||ebotcazou at gcc dot gnu dot ||org Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Last reconfirmed|-00-00 00:00:00 |2007-07-15 15:43:00 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32557
[Bug rtl-optimization/32557] [4.3 Regression] internal compiler error: RTL check: expected code 'reg', have 'subreg' in rhs_regno, at rtl.h:956
--- Comment #3 from rask at sygehus dot dk 2007-07-18 11:27 --- It happens on sh-unknown-elf too compiling newlib: make[8]: Entering directory `/home/rask/build/gcc-sh-unknown-elf/sh-unknown-elf/m2a/newlib/libc/stdlib' Makefile:1333: warning: overriding commands for target `lib_a-mbtowc_r.o' Makefile:791: warning: ignoring old commands for target `lib_a-mbtowc_r.o' /home/rask/build/gcc-sh-unknown-elf/./gcc/xgcc -B/home/rask/build/gcc-sh-unknown-elf/./gcc/ -nostdinc -B/home/rask/build/gcc-sh-unknown-elf/sh-unknown-elf/m2a/newlib/ -isystem /home/rask/build/gcc-sh-unknown-elf/sh-unknown-elf/m2a/newlib/targ-include -isystem /n/12/rask/src/all/newlib/libc/include -B/usr/local/sh-unknown-elf/bin/ -B/usr/local/sh-unknown-elf/lib/ -isystem /usr/local/sh-unknown-elf/include -isystem /usr/local/sh-unknown-elf/sys-include -L/home/rask/build/gcc-sh-unknown-elf/./ld -m2a -DPACKAGE_NAME=\"newlib\" -DPACKAGE_TARNAME=\"newlib\" -DPACKAGE_VERSION=\"1.15.0\" -DPACKAGE_STRING=\"newlib\ 1.15.0\" -DPACKAGE_BUGREPORT=\"\" -I. -I/n/12/rask/src/all/newlib/libc/stdlib -O2 -fno-builtin -O2 -g -O2 -m2a -c -o lib_a-dtoa.o `test -f 'dtoa.c' || echo '/n/12/rask/src/all/newlib/libc/stdlib/'`dtoa.c /n/12/rask/src/all/newlib/libc/stdlib/dtoa.c: In function '_dtoa_r': /n/12/rask/src/all/newlib/libc/stdlib/dtoa.c:862: internal compiler error: RTL check: expected code 'reg', have 'subreg' in rhs_regno, at rtl.h:972 -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32557
[Bug rtl-optimization/32557] [4.3 Regression] internal compiler error: RTL check: expected code 'reg', have 'subreg' in rhs_regno, at rtl.h:956
-- mmitchel at gcc dot gnu dot org changed: What|Removed |Added Priority|P3 |P1 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32557
[Bug rtl-optimization/32557] [4.3 Regression] internal compiler error: RTL check: expected code 'reg', have 'subreg' in rhs_regno, at rtl.h:956
--- Comment #4 from patchapp at dberlin dot org 2007-08-19 12:30 --- Subject: Bug number PR rtl-optimization/32557 A patch for this bug has been added to the patch tracker. The mailing list url for the patch is http://gcc.gnu.org/ml/gcc-patches/2007-08/msg01210.html -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32557
[Bug rtl-optimization/32557] [4.3 Regression] internal compiler error: RTL check: expected code 'reg', have 'subreg' in rhs_regno, at rtl.h:956
--- Comment #5 from bonzini at gnu dot org 2007-08-20 07:11 --- Richard, is this the issue you had a patch for? -- bonzini at gnu dot org changed: What|Removed |Added CC||bonzini at gnu dot org, ||rsandifo at gcc dot gnu dot ||org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32557
[Bug rtl-optimization/32557] [4.3 Regression] internal compiler error: RTL check: expected code 'reg', have 'subreg' in rhs_regno, at rtl.h:956
--- Comment #6 from richard at codesourcery dot com 2007-08-20 09:40 --- Subject: Re: [4.3 Regression] internal compiler error: RTL check: expected code 'reg', have 'subreg' in rhs_regno, at rtl.h:956 "bonzini at gnu dot org" <[EMAIL PROTECTED]> writes: > --- Comment #5 from bonzini at gnu dot org 2007-08-20 07:11 --- > Richard, is this the issue you had a patch for? Well, the patch I had has already been committed: 2007-07-27 Richard Sandiford <[EMAIL PROTECTED]> * df.h (df_mw_hardreg): Remove "loc" field. * df-scan.c (df_ref_record): Don't set it. Remove redundant local variable. * df-problems.c (df_whole_mw_reg_unused_p): New function, split out from df_set_unused_notes_for_mw. Return false for partial references. Assert that mw_reg is a REG when returning true. (df_set_unused_notes_for_mw): Use it. Use mw_reg instead of *loc. (df_whole_mw_reg_dead_p): New function, split out from df_set_dead_notes_for_mw. Return false for partial references. Assert that mw_reg is a REG when returning true. (df_set_dead_notes_for_mw): Use it. Use mw_reg instead of *loc. Remove redundant bitmap check. Is this a regression from then? Richard -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32557
[Bug rtl-optimization/32557] [4.3 Regression] internal compiler error: RTL check: expected code 'reg', have 'subreg' in rhs_regno, at rtl.h:956
--- Comment #7 from rask at gcc dot gnu dot org 2007-08-20 16:06 --- Created an attachment (id=14082) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=14082&action=view) Preprocessed testcase; compile with -O2 -g -m2a -fno-builtin It appears to fail the same way as earlier: (gdb) frame 3 #3 0x0050a7f5 in df_note_bb_compute (bb_index=28, live=0xf335c0, do_not_gen=0xf332e0, artificial_uses=0xf33580) at /n/12/rask/src/all/gcc/df-problems.c:3490 3490 if ((mws->type != DF_REF_REG_DEF) (gdb) list 3485 /* Process the uses. */ 3486 mws_rec = DF_INSN_UID_MWS (uid); 3487 while (*mws_rec) 3488{ 3489 struct df_mw_hardreg *mws = *mws_rec; 3490 if ((mws->type != DF_REF_REG_DEF) 3491 && !df_ignore_stack_reg (REGNO (mws->mw_reg))) 3492old_dead_notes 3493 = df_set_dead_notes_for_mw (insn, old_dead_notes, 3494 mws, live, do_not_gen, (gdb) call debug_rtx(mws->mw_reg) (subreg:DF (reg/v:DI 3 r3 [orig:327 d2 ] [327]) 0) (gdb) print *mws $1 = {mw_reg = 0x2b27c6a994e0, type = DF_REF_REG_USE, flags = 100, start_regno = 3, end_regno = 4, mw_order = 207550} -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32557
[Bug rtl-optimization/32557] [4.3 Regression] internal compiler error: RTL check: expected code 'reg', have 'subreg' in rhs_regno, at rtl.h:956
--- Comment #8 from patchapp at dberlin dot org 2007-08-21 21:25 --- Subject: Bug number PR rtl-optimization/32557 A patch for this bug has been added to the patch tracker. The mailing list url for the patch is http://gcc.gnu.org/ml/gcc-patches/2007-08/msg01404.html -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32557
[Bug rtl-optimization/32557] [4.3 Regression] internal compiler error: RTL check: expected code 'reg', have 'subreg' in rhs_regno, at rtl.h:956
--- Comment #9 from rask at gcc dot gnu dot org 2007-08-22 12:56 --- Subject: Bug 32557 Author: rask Date: Wed Aug 22 12:56:35 2007 New Revision: 127703 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=127703 Log: PR rtl-optimization/32557 * df-problems.c (df_note_bb_compute): Use mws->start_regno instead of REGNO (mws->mw_reg). Modified: trunk/gcc/ChangeLog trunk/gcc/df-problems.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32557
[Bug rtl-optimization/32557] [4.3 Regression] internal compiler error: RTL check: expected code 'reg', have 'subreg' in rhs_regno, at rtl.h:956
--- Comment #10 from bonzini at gnu dot org 2007-08-23 10:18 --- fixed? -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32557
[Bug rtl-optimization/32557] [4.3 Regression] internal compiler error: RTL check: expected code 'reg', have 'subreg' in rhs_regno, at rtl.h:956
--- Comment #11 from rask at gcc dot gnu dot org 2007-08-23 12:18 --- I don't know if it has been fixed on powerpc64-suse-linux-gnu yet. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32557
[Bug rtl-optimization/32557] [4.3 Regression] internal compiler error: RTL check: expected code 'reg', have 'subreg' in rhs_regno, at rtl.h:956
--- Comment #12 from rask at gcc dot gnu dot org 2007-09-04 08:52 --- Closing as suggested off-line by Andreas Jaeger. -- rask at gcc dot gnu dot org changed: What|Removed |Added Status|NEW |RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32557