This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Fix for flow_loop_pre_header_scan
- To: gcc-patches at gcc dot gnu dot org
- Subject: Fix for flow_loop_pre_header_scan
- From: Michael Hayes <mhayes at cygnus dot com>
- Date: Tue, 26 Sep 2000 22:13:13 +1200 (NZST)
I've committed the following obvious bugfix to deal with the
case when we enter straight into a loop.
Michael.
* flow.c (flow_loop_pre_header_scan): Punt if loop enters
from entry block.
Index: flow.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/flow.c,v
retrieving revision 1.340
diff -c -3 -p -r1.340 flow.c
*** flow.c 2000/09/18 06:59:23 1.340
--- flow.c 2000/09/26 09:55:27
*************** flow_loop_pre_header_scan (loop)
*** 7869,7880 ****
sbitmap_zero (loop->pre_header_trace);
ebb = loop->entry_edges[0]->src;
! SET_BIT (loop->pre_header_trace, ebb->index);
! while (ebb->pred->src != ENTRY_BLOCK_PTR
! && ! ebb->pred->pred_next)
{
- ebb = ebb->pred->src;
SET_BIT (loop->pre_header_trace, ebb->index);
}
loop->pre_header_root = ebb;
--- 7869,7884 ----
sbitmap_zero (loop->pre_header_trace);
ebb = loop->entry_edges[0]->src;
!
! if (ebb != ENTRY_BLOCK_PTR)
{
SET_BIT (loop->pre_header_trace, ebb->index);
+ while (ebb->pred->src != ENTRY_BLOCK_PTR
+ && ! ebb->pred->pred_next)
+ {
+ ebb = ebb->pred->src;
+ SET_BIT (loop->pre_header_trace, ebb->index);
+ }
}
loop->pre_header_root = ebb;