This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Loop clean up


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]