infinite loop compiling aboot.i on alpha

Richard Henderson rth@cygnus.com
Tue Nov 30 23:39:00 GMT 1999


On Thu, Nov 11, 1999 at 01:26:45PM -0500, Brad Lucier wrote:
> it seems to get stuck in an infinite loop.
[...]
> #0  __divl () at ../sysdeps/alpha/divrem.h:175
> #1  0x1200f2914 in unroll_loop (loop_end=0x20000551b00, insn_count=5, 
>     loop_start=0x20000551940, end_insert_before=0x20000554040, 
>     loop_info=0x120329948, strength_reduce_p=0) at ../../gcc/unroll.c:390

Yes indeed.  Assign 0x1_0000_0000 to a 32-bit int and try
to find the non-zero factor, and you'll be searching a while.


r~


	* unroll.c (unroll_loop): Make temp an unsigned HOST_WIDE_INT.

Index: unroll.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/unroll.c,v
retrieving revision 1.77
diff -c -p -d -r1.77 unroll.c
*** unroll.c	1999/11/02 16:37:23	1.77
--- unroll.c	1999/11/12 20:39:39
*************** unroll_loop (loop_end, insn_count, loop_
*** 234,240 ****
       struct loop_info *loop_info;
       int strength_reduce_p;
  {
!   int i, j, temp;
    int unroll_number = 1;
    rtx copy_start, copy_end;
    rtx insn, sequence, pattern, tem;
--- 234,241 ----
       struct loop_info *loop_info;
       int strength_reduce_p;
  {
!   int i, j;
!   unsigned HOST_WIDE_INT temp;
    int unroll_number = 1;
    rtx copy_start, copy_end;
    rtx insn, sequence, pattern, tem;



More information about the Gcc-bugs mailing list