aboutsummaryrefslogtreecommitdiff
path: root/gcc/cfg.c
diff options
context:
space:
mode:
authorRichard Kenner <kenner@vlsi1.ultra.nyu.edu>2001-12-22 15:51:07 +0000
committerRichard Kenner <kenner@gcc.gnu.org>2001-12-22 10:51:07 -0500
commit4891442b1f7dcf81fb2d8772cc4adb6123194350 (patch)
tree17b1afe9dcf1bd5c9ede2a22dc8ff45733e7bf35 /gcc/cfg.c
parentbfdade77da046cd5d11e2b8096e0b33e6f927141 (diff)
downloadgcc-4891442b1f7dcf81fb2d8772cc4adb6123194350.zip
gcc-4891442b1f7dcf81fb2d8772cc4adb6123194350.tar.gz
gcc-4891442b1f7dcf81fb2d8772cc4adb6123194350.tar.bz2
* cfg.c, cfganal.c, cfgbuild.c: Reformatting and minor cleanups.
From-SVN: r48270
Diffstat (limited to 'gcc/cfg.c')
-rw-r--r--gcc/cfg.c56
1 files changed, 37 insertions, 19 deletions
diff --git a/gcc/cfg.c b/gcc/cfg.c
index 37c994f..8adcef6 100644
--- a/gcc/cfg.c
+++ b/gcc/cfg.c
@@ -152,7 +152,7 @@ free_edge (e)
edge e;
{
n_edges--;
- memset (e, 0, sizeof (*e));
+ memset (e, 0, sizeof *e);
e->succ_next = first_deleted_edge;
first_deleted_edge = e;
}
@@ -177,6 +177,7 @@ clear_edges ()
free_edge (e);
e = next;
}
+
bb->succ = NULL;
bb->pred = NULL;
}
@@ -189,6 +190,7 @@ clear_edges ()
free_edge (e);
e = next;
}
+
EXIT_BLOCK_PTR->pred = NULL;
ENTRY_BLOCK_PTR->succ = NULL;
@@ -211,8 +213,8 @@ alloc_block ()
}
else
{
- bb = (basic_block) obstack_alloc (&flow_obstack, sizeof (*bb));
- memset (bb, 0, sizeof (*bb));
+ bb = (basic_block) obstack_alloc (&flow_obstack, sizeof *bb);
+ memset (bb, 0, sizeof *bb);
}
return bb;
}
@@ -233,7 +235,7 @@ expunge_block (b)
}
/* Invalidate data to make bughunting easier. */
- memset (b, 0, sizeof (*b));
+ memset (b, 0, sizeof *b);
b->index = -3;
basic_block_info->num_elements--;
n_basic_blocks--;
@@ -253,11 +255,10 @@ cached_make_edge (edge_cache, src, dst, flags)
int use_edge_cache;
edge e;
- /* Don't bother with edge cache for ENTRY or EXIT; there aren't that
- many edges to them, and we didn't allocate memory for it. */
+ /* Don't bother with edge cache for ENTRY or EXIT, if there aren't that
+ many edges to them, or we didn't allocate memory for it. */
use_edge_cache = (edge_cache
- && src != ENTRY_BLOCK_PTR
- && dst != EXIT_BLOCK_PTR);
+ && src != ENTRY_BLOCK_PTR && dst != EXIT_BLOCK_PTR);
/* Make sure we don't add duplicate edges. */
switch (use_edge_cache)
@@ -289,8 +290,8 @@ cached_make_edge (edge_cache, src, dst, flags)
}
else
{
- e = (edge) obstack_alloc (&flow_obstack, sizeof (*e));
- memset (e, 0, sizeof (*e));
+ e = (edge) obstack_alloc (&flow_obstack, sizeof *e);
+ memset (e, 0, sizeof *e);
}
n_edges++;
@@ -345,6 +346,7 @@ remove_edge (e)
edge last_succ = NULL;
edge tmp;
basic_block src, dest;
+
src = e->src;
dest = e->dest;
for (tmp = src->succ; tmp && tmp != e; tmp = tmp->succ_next)
@@ -398,10 +400,12 @@ redirect_edge_succ_nodup (e, new_succ)
basic_block new_succ;
{
edge s;
+
/* Check whether the edge is already present. */
for (s = e->src->succ; s; s = s->succ_next)
if (s->dest == new_succ && s != e)
break;
+
if (s)
{
s->flags |= e->flags;
@@ -412,6 +416,7 @@ redirect_edge_succ_nodup (e, new_succ)
}
else
redirect_edge_succ (e, new_succ);
+
return e;
}
@@ -427,6 +432,7 @@ redirect_edge_pred (e, new_pred)
/* Disconnect the edge from the old predecessor block. */
for (pe = &e->src->succ; *pe != e; pe = &(*pe)->succ_next)
continue;
+
*pe = (*pe)->succ_next;
/* Reconnect the edge to the new predecessor block. */
@@ -447,6 +453,7 @@ dump_flow_info (file)
if (REG_N_REFS (i))
{
enum reg_class class, altclass;
+
fprintf (file, "\nRegister %d used %d times across %d insns",
i, REG_N_REFS (i), REG_LIVE_LENGTH (i));
if (REG_BASIC_BLOCK (i) >= 0)
@@ -464,6 +471,7 @@ dump_flow_info (file)
fprintf (file, "; crosses %d calls", REG_N_CALLS_CROSSED (i));
if (PSEUDO_REGNO_BYTES (i) != UNITS_PER_WORD)
fprintf (file, "; %d bytes", PSEUDO_REGNO_BYTES (i));
+
class = reg_preferred_class (i);
altclass = reg_alternate_class (i);
if (class != GENERAL_REGS || altclass != ALL_REGS)
@@ -477,6 +485,7 @@ dump_flow_info (file)
reg_class_names[(int) class],
reg_class_names[(int) altclass]);
}
+
if (REG_POINTER (regno_reg_rtx[i]))
fprintf (file, "; pointer");
fprintf (file, ".\n");
@@ -488,9 +497,10 @@ dump_flow_info (file)
basic_block bb = BASIC_BLOCK (i);
edge e;
- fprintf (file, "\nBasic block %d: first insn %d, last %d, loop_depth %d, count ",
- i, INSN_UID (bb->head), INSN_UID (bb->end), bb->loop_depth);
- fprintf (file, HOST_WIDEST_INT_PRINT_DEC, (HOST_WIDEST_INT) bb->count);
+ fprintf (file, "\nBasic block %d: first insn %d, last %d, ",
+ i, INSN_UID (bb->head), INSN_UID (bb->end));
+ fprintf (file, "loop_depth %d, count ", bb->loop_depth);
+ fprintf (file, HOST_WIDEST_INT_PRINT_DEC, bb->count);
fprintf (file, ", freq %i.\n", bb->frequency);
fprintf (file, "Predecessors: ");
@@ -540,19 +550,17 @@ dump_edge_info (file, e, do_succ)
if (e->count)
{
fprintf (file, " count:");
- fprintf (file, HOST_WIDEST_INT_PRINT_DEC, (HOST_WIDEST_INT) e->count);
+ fprintf (file, HOST_WIDEST_INT_PRINT_DEC, e->count);
}
if (e->flags)
{
- static const char * const bitnames[] = {
- "fallthru", "ab", "abcall", "eh", "fake", "dfs_back"
- };
+ static const char * const bitnames[]
+ = {"fallthru", "ab", "abcall", "eh", "fake", "dfs_back"};
int comma = 0;
int i, flags = e->flags;
- fputc (' ', file);
- fputc ('(', file);
+ fputs (" (", file);
for (i = 0; flags; i++)
if (flags & (1 << i))
{
@@ -566,11 +574,13 @@ dump_edge_info (file, e, do_succ)
fprintf (file, "%d", i);
comma = 1;
}
+
fputc (')', file);
}
}
/* Simple routines to easily allocate AUX fields of basic blocks. */
+
static struct obstack block_aux_obstack;
static void *first_block_aux_obj = 0;
static struct obstack edge_aux_obstack;
@@ -605,6 +615,7 @@ alloc_aux_for_blocks (size)
gcc_obstack_init (&block_aux_obstack);
initialized = 1;
}
+
/* Check whether AUX data are still allocated. */
else if (first_block_aux_obj)
abort ();
@@ -612,8 +623,10 @@ alloc_aux_for_blocks (size)
if (size)
{
int i;
+
for (i = 0; i < n_basic_blocks; i++)
alloc_aux_for_block (BASIC_BLOCK (i), size);
+
alloc_aux_for_block (ENTRY_BLOCK_PTR, size);
alloc_aux_for_block (EXIT_BLOCK_PTR, size);
}
@@ -628,6 +641,7 @@ clear_aux_for_blocks ()
for (i = 0; i < n_basic_blocks; i++)
BASIC_BLOCK (i)->aux = NULL;
+
ENTRY_BLOCK_PTR->aux = NULL;
EXIT_BLOCK_PTR->aux = NULL;
}
@@ -675,9 +689,11 @@ alloc_aux_for_edges (size)
gcc_obstack_init (&edge_aux_obstack);
initialized = 1;
}
+
/* Check whether AUX data are still allocated. */
else if (first_edge_aux_obj)
abort ();
+
first_edge_aux_obj = (char *) obstack_alloc (&edge_aux_obstack, 0);
if (size)
{
@@ -691,6 +707,7 @@ alloc_aux_for_edges (size)
bb = BASIC_BLOCK (i);
else
bb = ENTRY_BLOCK_PTR;
+
for (e = bb->succ; e; e = e->succ_next)
alloc_aux_for_edge (e, size);
}
@@ -713,6 +730,7 @@ clear_aux_for_edges ()
bb = BASIC_BLOCK (i);
else
bb = ENTRY_BLOCK_PTR;
+
for (e = bb->succ; e; e = e->succ_next)
e->aux = NULL;
}