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