[Bug target/56184] [4.8 Regression] Internal compiler error in push_reload during bootstrap stage 2

2013-02-13 Thread vmakarov at gcc dot gnu.org


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

2013-02-13 Thread vmakarov at gcc dot gnu.org


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

2013-02-13 Thread jakub at gcc dot gnu.org


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

2013-02-10 Thread steven at gcc dot gnu.org


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

2013-02-08 Thread rguenth at gcc dot gnu.org


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

2013-02-06 Thread uweigand at gcc dot gnu.org


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

2013-02-06 Thread uweigand at gcc dot gnu.org


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

2013-02-05 Thread mgretton at gcc dot gnu.org


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

2013-02-05 Thread mgretton at gcc dot gnu.org


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

2013-02-05 Thread mgretton at gcc dot gnu.org


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

2013-02-05 Thread uweigand at gcc dot gnu.org


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

2013-02-04 Thread rguenth at gcc dot gnu.org


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