[Bug target/56184] [4.8 Regression] Internal compiler error in push_reload during bootstrap stage 2
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56184 --- Comment #7 from Vladimir Makarov vmakarov at gcc dot gnu.org 2013-02-13 15:15:14 UTC --- (In reply to comment #6) Unfortunately I'm not really familiar with the live range splitting code; maybe Vladimir can help with this? Yes, Ulrich. I've started to work on this.
[Bug target/56184] [4.8 Regression] Internal compiler error in push_reload during bootstrap stage 2
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56184 --- Comment #8 from Vladimir Makarov vmakarov at gcc dot gnu.org 2013-02-13 17:40:33 UTC --- Author: vmakarov Date: Wed Feb 13 17:40:22 2013 New Revision: 196019 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=196019 Log: 2013-02-13 Vladimir Makarov vmaka...@redhat.com PR target/56184 * ira.c (max_regno_before_ira): Move from ... (ira): ... here. (fix_reg_equiv_init): Use max_regno_before_ira instead of vec_safe_length. 2013-02-13 Vladimir Makarov vmaka...@redhat.com PR target/56184 * gcc.target/arm/pr56184.C: New test. Added: trunk/gcc/testsuite/gcc.target/arm/pr56184.C Modified: trunk/gcc/ChangeLog trunk/gcc/ira.c trunk/gcc/testsuite/ChangeLog
[Bug target/56184] [4.8 Regression] Internal compiler error in push_reload during bootstrap stage 2
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56184 Jakub Jelinek jakub at gcc dot gnu.org changed: What|Removed |Added Status|NEW |RESOLVED CC||jakub at gcc dot gnu.org Resolution||FIXED --- Comment #9 from Jakub Jelinek jakub at gcc dot gnu.org 2013-02-14 00:16:19 UTC --- Fixed.
[Bug target/56184] [4.8 Regression] Internal compiler error in push_reload during bootstrap stage 2
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56184 Steven Bosscher steven at gcc dot gnu.org changed: What|Removed |Added Keywords||ice-checking Status|UNCONFIRMED |NEW Last reconfirmed||2013-02-10 Ever Confirmed|0 |1
[Bug target/56184] [4.8 Regression] Internal compiler error in push_reload during bootstrap stage 2
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56184 Richard Biener rguenth at gcc dot gnu.org changed: What|Removed |Added Priority|P3 |P1
[Bug target/56184] [4.8 Regression] Internal compiler error in push_reload during bootstrap stage 2
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56184 --- Comment #5 from Ulrich Weigand uweigand at gcc dot gnu.org 2013-02-06 19:27:31 UTC --- Depending on configure tests of the installed (cross-)assembler, the ICE may not occur. In those cases, I'm now able to reliably reproduce the ICE by using -fno-section-anchors (in addition to the flags given above).
[Bug target/56184] [4.8 Regression] Internal compiler error in push_reload during bootstrap stage 2
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56184 Ulrich Weigand uweigand at gcc dot gnu.org changed: What|Removed |Added CC||vmakarov at gcc dot gnu.org --- Comment #6 from Ulrich Weigand uweigand at gcc dot gnu.org 2013-02-06 19:40:30 UTC --- The problem occurs with the following insn: (insn 539 383 384 46 (set (reg:DI 355 [313]) (const_int 256 [0x100])) test.ii:128 643 {*movdi_vfp} (expr_list:REG_EQUIV (const_int 256 [0x100]) (nil))) Register 355 is recognized as always-equal to the constant 256, and insn 539 is the insn that originally sets up the equivalence. If the register doesn't get a hard reg, what ought to happen is that users of reg 355 get replaced by the constant, and the insn setting the equivalence ought to be deleted. Because the insn will get deleted anyway, it also ought to be skipped for find_reloads. To achieve that, reg_equiv_constant(355) should hold the constant, and reg_equiv_init(355) should point to the above insn. However, what actually happens in this test case is that reg_equiv_init(355) is NULL. Therefore, the insn is *not* skipped for find_reloads, which then aborts since it tries to push an output reload for an always-constant register, which is not supposed to happen. Now the register is somewhat special in that it was created by IRA via live range splitting. The original register was reg 313; and this still has reg_equiv_init(313) pointing to the above insn. However, reg_equiv_init(355) is NULL. There is a routine fix_reg_equiv_init in ira.c which appears to be intended to fix the reg_equiv_init settings of new registers created by live range splitting. However, this doesn't seem to have worked in this case ... Unfortunately I'm not really familiar with the live range splitting code; maybe Vladimir can help with this?
[Bug target/56184] [4.8 Regression] Internal compiler error in push_reload during bootstrap stage 2
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56184 mgretton at gcc dot gnu.org changed: What|Removed |Added CC||mgretton at gcc dot gnu.org --- Comment #1 from mgretton at gcc dot gnu.org 2013-02-05 13:08:48 UTC --- I can reproduce this is in a compiler targeted for arm-none-eabi (and without needing libraries built) as follows: Compiler configured with: /work/sources/gcc-fsf/master/configure --target=arm-none-eabi --prefix=/work/builds/gcc-fsf-master/tools --without-headers --with-newlib --disable-shared --disable-threads --disable-libssp --disable-libgomp --disable-libmudflap --disable-libatomic --without-libquadmath --disable-libquadmath --enable-languages=c,c++ ./cc1plus -fpreprocessed test.ii -mthumb -march=armv7-a -mfpu=neon -mfloat-abi=softfp -mtune=cortex-a9 -O2 -o /tmp/tmp.s RTL dumps of 208r.ira and 208r.reload are attached from running the above command. The assert producing the ICE is: int regno = REGNO (out); gcc_assert (regno FIRST_PSEUDO_REGISTER || reg_renumber[regno] = 0 || reg_equiv_constant (regno) == NULL_RTX); out: (reg:DI 358 [315]) regno: 358 reg_renumber[regno] = -1 reg_equiv_constant (regno) = ? (Can't get GDB to print the value)
[Bug target/56184] [4.8 Regression] Internal compiler error in push_reload during bootstrap stage 2
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56184 --- Comment #2 from mgretton at gcc dot gnu.org 2013-02-05 13:11:33 UTC --- Created attachment 29357 -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=29357 RTL dump from IRA phase
[Bug target/56184] [4.8 Regression] Internal compiler error in push_reload during bootstrap stage 2
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56184 --- Comment #3 from mgretton at gcc dot gnu.org 2013-02-05 13:12:18 UTC --- Created attachment 29358 -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=29358 RTL dump from reload phase
[Bug target/56184] [4.8 Regression] Internal compiler error in push_reload during bootstrap stage 2
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56184 Ulrich Weigand uweigand at gcc dot gnu.org changed: What|Removed |Added CC||uweigand at gcc dot gnu.org --- Comment #4 from Ulrich Weigand uweigand at gcc dot gnu.org 2013-02-05 13:51:24 UTC --- This is weird; I cannot reproduce the behaviour even with the exact configure and command lines you specify. I've been using SVN rev. 195717; which revision do you see the problem with? In the generated test.ii.208r.ira file I get, I see different register uses even before IRA, compared to your version. Would you mind sending me (offline) a full set of the dump files so I can see where my compile run starts to diverge from yours?
[Bug target/56184] [4.8 Regression] Internal compiler error in push_reload during bootstrap stage 2
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56184 Richard Biener rguenth at gcc dot gnu.org changed: What|Removed |Added Target Milestone|--- |4.8.0 Summary|Internal compiler error in |[4.8 Regression] Internal |push_reload during |compiler error in |bootstrap stage 2 |push_reload during ||bootstrap stage 2