[Bug bootstrap/11593] [3.4 regression] infinite loop in find_rgns compiling c-parse.c

rakdver at atrey dot karlin dot mff dot cuni dot cz gcc-bugzilla@gcc.gnu.org
Sat Jul 19 21:35:00 GMT 2003


PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11593



------- Additional Comments From rakdver at atrey dot karlin dot mff dot cuni dot cz  2003-07-19 21:35 -------
Subject: Re:  [3.4 regression] infinite loop in find_rgns compiling c-parse.c

Hello,

> PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.
> 
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11593
> 
> 
> pinskia at physics dot uc dot edu changed:
> 
>            What    |Removed                     |Added
> ----------------------------------------------------------------------------
>              Status|UNCONFIRMED                 |NEW
>      Ever Confirmed|                            |1
>            Priority|P3                          |P1
>    Last reconfirmed|0000-00-00 00:00:00         |2003-07-19 20:28:15
>                date|                            |
> 
> 
> ------- Additional Comments From pinskia at physics dot uc dot edu  2003-07-19 20:28 -------
> It also introduced other regressions: <http://gcc.gnu.org/ml/gcc-patches/2003-07/
> msg01957.html>. 
> Here is the original patch and discussion: <http://gcc.gnu.org/ml/gcc-patches/2003-07/
> msg01574.html>.
> 
>  I say we start the 48 hours now to revert this if there is no hope of
>  getting this fixed soon.

the find_rgns function incorrectly assumes that the first block of
function has number zero. Provided that it passes testing, I will
commit the following patch as obvious.

Zdenek

Index: sched-rgn.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/sched-rgn.c,v
retrieving revision 1.62
diff -c -3 -p -r1.62 sched-rgn.c
*** sched-rgn.c	19 Jul 2003 14:47:13 -0000	1.62
--- sched-rgn.c	19 Jul 2003 21:30:41 -0000
*************** find_rgns (struct edge_list *edge_list, 
*** 618,624 ****
    int *max_hdr, *dfs_nr, *stack, *degree;
    char no_loops = 1;
    int node, child, loop_head, i, head, tail;
!   int count = 0, sp, idx = 0, current_edge = out_edges[0];
    int num_bbs, num_insns, unreachable;
    int too_large_failure;
    basic_block bb;
--- 618,625 ----
    int *max_hdr, *dfs_nr, *stack, *degree;
    char no_loops = 1;
    int node, child, loop_head, i, head, tail;
!   int count = 0, sp, idx = 0;
!   int current_edge = out_edges[ENTRY_BLOCK_PTR->succ->dest->index];
    int num_bbs, num_insns, unreachable;
    int too_large_failure;
    basic_block bb;



More information about the Gcc-bugs mailing list