This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Loop clean up
- To: Alexandre Oliva <oliva at lsd dot ic dot unicamp dot br>
- Subject: Re: Loop clean up
- From: Franz Sirl <Franz dot Sirl-kernel at lauterbach dot com>
- Date: Tue, 18 Jan 2000 18:54:45 +0100
- Cc: Michael Hayes <m dot hayes at elec dot canterbury dot ac dot nz>,gcc-patches at gcc dot gnu dot org
- References: <Franz Sirl's message of "Tue, 18 Jan 2000 12:14:45 +0100"><4.2.2.20000118120940.04674d90@mail.lauterbach.com>
At 17:11 18.01.00 , Alexandre Oliva wrote:
>On Jan 18, 2000, Franz Sirl <Franz.Sirl-kernel@lauterbach.com> wrote:
>
> > At 07:12 02.12.99 , Michael Hayes wrote:
>
> >> (loop_used_count_register): Delete and replace with entry in
> >> loop_info structure.
>
>This is wrong. There's a single loop_info structure, that's assigned
>to each loop as we process it. But insert_bct wants to set
>used_count_register of enclosing loops, but loop_info is not
>available for them at that point.
>
>How about moving used_count_register to struct loop? I haven't
>completed a bootstrap of this patch yet (the AIX host is still dog
>slow, despite the use of ggc-page); it bootstrapped on GNU/Linux/x86,
>but this doesn't mean much more than ``the patch is syntactically
>correct.'' Assuming it bootstraps on AIX, is this ok to install?
>
>Index: gcc/ChangeLog
>from Alexandre Oliva <oliva@lsd.ic.unicamp.br>
>
> * loop.h (struct loop_info): Move used_count_register to...
> * basic-block.h (struct loop): ... here.
> * loop.c (insert_bct): Adjust.
With your patch applied I get the following testsuite regressions:
FAIL: gcc.c-torture/compile/991127-1.c, -O2
FAIL: gcc.c-torture/compile/991127-1.c, -Os
FAIL: gcc.c-torture/compile/991213-2.c, -O2
FAIL: gcc.c-torture/compile/991213-2.c, -O3 -fomit-frame-pointer
FAIL: gcc.c-torture/compile/991213-2.c, -O3 -fomit-frame-pointer
-funroll-loops
FAIL: gcc.c-torture/compile/991213-2.c, -O3 -fomit-frame-pointer
-funroll-all-loops -finline-functions
FAIL: gcc.c-torture/compile/991213-2.c, -O3 -g
FAIL: gcc.c-torture/compile/991213-2.c, -Os
they all seem to fail with this message:
/home/fsirl/cvsx/gccm/gcc/testsuite/gcc.c-torture/compile/991213-2.c: In
function `time2':
/home/fsirl/cvsx/gccm/gcc/testsuite/gcc.c-torture/compile/991213-2.c:15:
Internal compiler error in `loop_iterations', at unroll.c:3709
Please submit a full bug report.
See <URL:http://www.gnu.org/software/gcc/faq.html#bugreport> for instructions.
which corresponds to this code in unroll.c in my sources:
/* The only new registers that care created before loop iterations are
givs made from biv increments, so this should never occur. */
if ((unsigned) REGNO (iteration_var) >= reg_iv_type->num_elements)
abort ();
Franz.