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>
|
2000-01-23 Richard Henderson <rth@cygnus.com>
|
||||||
|
|
||||||
* libgcc2.c (dwarf_reg_size_table): Size with DWARF_FRAME_REGISTERS.
|
* libgcc2.c (dwarf_reg_size_table): Size with DWARF_FRAME_REGISTERS.
|
||||||
|
@ -325,6 +325,9 @@ struct loops
|
|||||||
/* Number of natural loops in the function. */
|
/* Number of natural loops in the function. */
|
||||||
int num;
|
int num;
|
||||||
|
|
||||||
|
/* Maxium nested loop level in the function. */
|
||||||
|
int levels;
|
||||||
|
|
||||||
/* Array of natural loop descriptors (scanning this array in reverse order
|
/* Array of natural loop descriptors (scanning this array in reverse order
|
||||||
will find the inner loops before their enclosing outer loops). */
|
will find the inner loops before their enclosing outer loops). */
|
||||||
struct loop *array;
|
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)
|
if (! num_loops || ! file)
|
||||||
return;
|
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++)
|
for (i = 0; i < num_loops; i++)
|
||||||
{
|
{
|
||||||
@ -6783,7 +6784,7 @@ flow_loop_level_compute (loop, depth)
|
|||||||
int depth;
|
int depth;
|
||||||
{
|
{
|
||||||
struct loop *inner;
|
struct loop *inner;
|
||||||
int level = 0;
|
int level = 1;
|
||||||
|
|
||||||
if (! loop)
|
if (! loop)
|
||||||
return 0;
|
return 0;
|
||||||
@ -6791,7 +6792,8 @@ flow_loop_level_compute (loop, depth)
|
|||||||
/* Traverse loop tree assigning depth and computing level as the
|
/* Traverse loop tree assigning depth and computing level as the
|
||||||
maximum level of all the inner loops of this loop. The loop
|
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
|
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)
|
for (inner = loop->inner; inner; inner = inner->next)
|
||||||
{
|
{
|
||||||
int ilevel;
|
int ilevel;
|
||||||
@ -6811,11 +6813,22 @@ flow_loop_level_compute (loop, depth)
|
|||||||
hierarchy tree specfied by LOOPS. Return the maximum enclosed loop
|
hierarchy tree specfied by LOOPS. Return the maximum enclosed loop
|
||||||
level. */
|
level. */
|
||||||
|
|
||||||
static int
|
static int
|
||||||
flow_loops_level_compute (loops)
|
flow_loops_level_compute (loops)
|
||||||
struct loops *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
|
/* Assign the loop nesting depth and enclosed loop level for each
|
||||||
loop. */
|
loop. */
|
||||||
flow_loops_level_compute (loops);
|
loops->levels = flow_loops_level_compute (loops);
|
||||||
|
|
||||||
return num_loops;
|
return num_loops;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user