diff options
author | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-12-22 15:51:07 +0000 |
---|---|---|
committer | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-12-22 15:51:07 +0000 |
commit | e4fc8aad939baf2d819e8e0858dc6044a1ee7ac5 (patch) | |
tree | 17b1afe9dcf1bd5c9ede2a22dc8ff45733e7bf35 /gcc/cfg.c | |
parent | e6751e9a9156960957c6a11cbdf6b48e2fa9f00f (diff) | |
download | gcc-e4fc8aad939baf2d819e8e0858dc6044a1ee7ac5.tar.gz |
* cfg.c, cfganal.c, cfgbuild.c: Reformatting and minor cleanups.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@48270 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cfg.c')
-rw-r--r-- | gcc/cfg.c | 56 |
1 files changed, 37 insertions, 19 deletions
diff --git a/gcc/cfg.c b/gcc/cfg.c index 37c994f89c9..8adcef637b3 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; } |