[Bug rtl-optimization/21144] [4.0/4.1 regression] Apparent infinite loop in reload
--- Additional Comments From cvs-commit at gcc dot gnu dot org 2005-06-25 09:56 --- Subject: Bug 21144 CVSROOT:/cvs/gcc Module name:gcc Changes by: [EMAIL PROTECTED] 2005-06-25 09:56:38 Modified files: libgfortran: ChangeLog libgfortran/m4 : cshift1.m4 eoshift1.m4 eoshift3.m4 libgfortran/generated: cshift1_4.c cshift1_8.c eoshift1_4.c eoshift1_8.c eoshift3_4.c eoshift3_8.c gcc/testsuite : ChangeLog Added files: gcc/testsuite/gfortran.dg: shift-alloc.f90 Log message: 2005-06-25 Thomas Koenig [EMAIL PROTECTED] PR libfortran/22144 * m4/cshift1.m4: Remove const from argument ret. Populate return array descriptor if ret-data is NULL. * m4/eoshift1.m4: Likewise. * m4/eoshift3.m4: Likewise. * generated/cshift1_4.c: Regenerated. * generated/cshift1_8.c: Regenerated. * generated/eoshift1_4.c: Regenerated. * generated/eoshift1_8.c: Regenerated. * generated/eoshift3_4.c: Regenerated. * generated/eoshift3_8.c: Regenerated. 2005-06-25 Thomas Koenig [EMAIL PROTECTED] PR libfortran/21144 * gfortran.dg/shift-alloc.f90: New testcase. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libgfortran/ChangeLog.diff?cvsroot=gccr1=1.249r2=1.250 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libgfortran/m4/cshift1.m4.diff?cvsroot=gccr1=1.7r2=1.8 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libgfortran/m4/eoshift1.m4.diff?cvsroot=gccr1=1.8r2=1.9 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libgfortran/m4/eoshift3.m4.diff?cvsroot=gccr1=1.8r2=1.9 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libgfortran/generated/cshift1_4.c.diff?cvsroot=gccr1=1.6r2=1.7 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libgfortran/generated/cshift1_8.c.diff?cvsroot=gccr1=1.6r2=1.7 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libgfortran/generated/eoshift1_4.c.diff?cvsroot=gccr1=1.7r2=1.8 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libgfortran/generated/eoshift1_8.c.diff?cvsroot=gccr1=1.7r2=1.8 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libgfortran/generated/eoshift3_4.c.diff?cvsroot=gccr1=1.7r2=1.8 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libgfortran/generated/eoshift3_8.c.diff?cvsroot=gccr1=1.7r2=1.8 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gccr1=1.5684r2=1.5685 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/shift-alloc.f90.diff?cvsroot=gccr1=NONEr2=1.1 -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21144
[Bug rtl-optimization/21144] [4.0/4.1 regression] Apparent infinite loop in reload
--- Additional Comments From cvs-commit at gcc dot gnu dot org 2005-04-29 18:38 --- Subject: Bug 21144 CVSROOT:/cvs/gcc Module name:gcc Branch: gcc-4_0-branch Changes by: [EMAIL PROTECTED] 2005-04-29 18:38:44 Modified files: gcc: ChangeLog postreload.c Log message: PR rtl-optimization/21144 * postreload.c (reload_cse_move2add): Check for VOIDmode. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcconly_with_tag=gcc-4_0-branchr1=2.7592.2.204r2=2.7592.2.205 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/postreload.c.diff?cvsroot=gcconly_with_tag=gcc-4_0-branchr1=2.27r2=2.27.8.1 -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21144
[Bug rtl-optimization/21144] [4.0/4.1 regression] Apparent infinite loop in reload
--- Additional Comments From cvs-commit at gcc dot gnu dot org 2005-04-29 18:39 --- Subject: Bug 21144 CVSROOT:/cvs/gcc Module name:gcc Changes by: [EMAIL PROTECTED] 2005-04-29 18:39:23 Modified files: gcc: ChangeLog postreload.c Log message: PR rtl-optimization/21144 * postreload.c (reload_cse_move2add): Check for VOIDmode. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gccr1=2.8532r2=2.8533 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/postreload.c.diff?cvsroot=gccr1=2.29r2=2.30 -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21144
[Bug rtl-optimization/21144] [4.0/4.1 regression] Apparent infinite loop in reload
--- Additional Comments From matz at suse dot de 2005-04-29 19:03 --- This is now fixed, but it seems, even though I'm logged in, I can't change the state of this report. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21144
[Bug rtl-optimization/21144] [4.0/4.1 regression] Apparent infinite loop in reload
--- Additional Comments From pinskia at gcc dot gnu dot org 2005-04-29 19:08 --- Fixed. (In reply to comment #7) This is now fixed, but it seems, even though I'm logged in, I can't change the state of this report. I will get you admin. access. -- What|Removed |Added Status|NEW |RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21144
[Bug rtl-optimization/21144] [4.0/4.1 regression] Apparent infinite loop in reload
--- Additional Comments From wilson at gcc dot gnu dot org 2005-04-28 01:15 --- Confirmed. The patch is OK for both mainline and the gcc-4.0 branch, assuming it passes the regtest, in case anyone was waiting for approval. -- What|Removed |Added Status|UNCONFIRMED |NEW Ever Confirmed||1 Last reconfirmed|-00-00 00:00:00 |2005-04-28 01:15:34 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21144
[Bug rtl-optimization/21144] [4.0/4.1 regression] Apparent infinite loop in reload
--- Additional Comments From matz at suse dot de 2005-04-25 13:20 --- The problem is in reload_cse_move2add. It has such a loop: for (narrow_mode = GET_CLASS_NARROWEST_MODE (MODE_INT); narrow_mode != GET_MODE (reg); narrow_mode = GET_MODE_WIDER_MODE (narrow_mode)) { where 'reg' comes from a simple SET insn. In this testcase the insn is: (set (reg:BI r15) (const_int 1)) note the mode of reg being BImode. Now, BImode is in fact a FRACTIONAL_INT_MODE, not an INT_MODE (although GET_MODE_CLASS would return INT_MODE, so using this instead of hard-coded INT_MODE wouldn't help). And GET_CLASS_NARROWEST_MODE(INT_MODE) is QImode, as it will ignore modes with precision 1 bit in genmodes.c (I think because the rest of the compiler is not prepared to really see an BImode here, but I may be wrong, there are not that many instance of GET_CLASS_NARROWEST_MODE and most look safe, but will iterate one more time uselessly if started from BImode). So, this loop starts with QImode, widens the mode each time, and waits for it to become equal to the mode of 'reg', i.e. BImode. This of course never happens, so somewhen it is VOIDmode, and that's the fixed point of GET_CLASS_NARROWEST_MODE. So we are endlessly looping. I've attached the obvious change, which I'm going to regtest now. It fixes this testcase. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21144
[Bug rtl-optimization/21144] [4.0/4.1 regression] Apparent infinite loop in reload
-- What|Removed |Added CC||pinskia at gcc dot gnu dot ||org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21144
[Bug rtl-optimization/21144] [4.0/4.1 regression] Apparent infinite loop in reload
--- Additional Comments From matz at suse dot de 2005-04-25 13:26 --- Created an attachment (id=8734) -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=8734action=view) Patch for above problem -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21144
[Bug rtl-optimization/21144] [4.0/4.1 regression] Apparent infinite loop in reload
--- Additional Comments From schwab at suse dot de 2005-04-21 09:42 --- Created an attachment (id=8698) -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=8698action=view) Testcase -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21144
[Bug rtl-optimization/21144] [4.0/4.1 regression] Apparent infinite loop in reload
-- What|Removed |Added Target Milestone|--- |4.0.1 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21144