basic-block.h (struct loops): New field `levels'.
2000-01-24 Michael Hayes <m.hayes@elec.canterbury.ac.nz> * basic-block.h (struct loops): New field `levels'. * flow.c (flow_loops_level_compute): Traverse all outer loops. (flow_loop_level_compute): Initialise level to 1. (flow_loops_find): Set loops->levels. (flow_loops_dump): Print loops->levels. From-SVN: r31577
This commit is contained in:
parent
7e259f255f
commit
d6181b1bdc
@ -1,3 +1,11 @@
|
||||
2000-01-24 Michael Hayes <m.hayes@elec.canterbury.ac.nz>
|
||||
|
||||
* basic-block.h (struct loops): New field `levels'.
|
||||
* flow.c (flow_loops_level_compute): Traverse all outer loops.
|
||||
(flow_loop_level_compute): Initialise level to 1.
|
||||
(flow_loops_find): Set loops->levels.
|
||||
(flow_loops_dump): Print loops->levels.
|
||||
|
||||
2000-01-23 Richard Henderson <rth@cygnus.com>
|
||||
|
||||
* libgcc2.c (dwarf_reg_size_table): Size with DWARF_FRAME_REGISTERS.
|
||||
|
@ -325,6 +325,9 @@ struct loops
|
||||
/* Number of natural loops in the function. */
|
||||
int num;
|
||||
|
||||
/* Maxium nested loop level in the function. */
|
||||
int levels;
|
||||
|
||||
/* Array of natural loop descriptors (scanning this array in reverse order
|
||||
will find the inner loops before their enclosing outer loops). */
|
||||
struct loop *array;
|
||||
|
25
gcc/flow.c
25
gcc/flow.c
@ -6387,7 +6387,8 @@ flow_loops_dump (loops, file, verbose)
|
||||
if (! num_loops || ! file)
|
||||
return;
|
||||
|
||||
fprintf (file, ";; %d loops found\n", num_loops);
|
||||
fprintf (file, ";; %d loops found, %d levels\n",
|
||||
num_loops, loops->levels);
|
||||
|
||||
for (i = 0; i < num_loops; i++)
|
||||
{
|
||||
@ -6783,7 +6784,7 @@ flow_loop_level_compute (loop, depth)
|
||||
int depth;
|
||||
{
|
||||
struct loop *inner;
|
||||
int level = 0;
|
||||
int level = 1;
|
||||
|
||||
if (! loop)
|
||||
return 0;
|
||||
@ -6791,7 +6792,8 @@ flow_loop_level_compute (loop, depth)
|
||||
/* Traverse loop tree assigning depth and computing level as the
|
||||
maximum level of all the inner loops of this loop. The loop
|
||||
level is equivalent to the height of the loop in the loop tree
|
||||
and corresponds to the number of enclosed loop levels. */
|
||||
and corresponds to the number of enclosed loop levels (including
|
||||
itself). */
|
||||
for (inner = loop->inner; inner; inner = inner->next)
|
||||
{
|
||||
int ilevel;
|
||||
@ -6811,11 +6813,22 @@ flow_loop_level_compute (loop, depth)
|
||||
hierarchy tree specfied by LOOPS. Return the maximum enclosed loop
|
||||
level. */
|
||||
|
||||
static int
|
||||
static int
|
||||
flow_loops_level_compute (loops)
|
||||
struct loops *loops;
|
||||
{
|
||||
return flow_loop_level_compute (loops->tree, 1);
|
||||
struct loop *loop;
|
||||
int level;
|
||||
int levels = 0;
|
||||
|
||||
/* Traverse all the outer level loops. */
|
||||
for (loop = loops->tree; loop; loop = loop->next)
|
||||
{
|
||||
level = flow_loop_level_compute (loop, 1);
|
||||
if (level > levels)
|
||||
levels = level;
|
||||
}
|
||||
return levels;
|
||||
}
|
||||
|
||||
|
||||
@ -6970,7 +6983,7 @@ flow_loops_find (loops)
|
||||
|
||||
/* Assign the loop nesting depth and enclosed loop level for each
|
||||
loop. */
|
||||
flow_loops_level_compute (loops);
|
||||
loops->levels = flow_loops_level_compute (loops);
|
||||
|
||||
return num_loops;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user