Commit 4891442b by Richard Kenner Committed by Richard Kenner

* cfg.c, cfganal.c, cfgbuild.c: Reformatting and minor cleanups.

From-SVN: r48270
parent bfdade77
Sat Dec 22 08:59:50 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* predict.c: Reformatting and minor cleanups.
* cfg.c, cfganal.c, cfgbuild.c: Likewise.
* expr.c (expand_expr, case ADDR_EXPR): Handling taking address of
SAVE_EXPR.
......
......@@ -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;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment