X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Fcfgbuild.c;h=967aa6cb7fc2d4feef4e48f037b38049e2a6a1f9;hb=b5de1aa4059bc18a6c07ec20df7c7118be36bc8d;hp=834119dbc0c8f9bdde536bec7f2c3e2d6355f35a;hpb=4d2e5d528864f897011ae82014889955d1558c97;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/cfgbuild.c b/gcc/cfgbuild.c index 834119dbc0c..967aa6cb7fc 100644 --- a/gcc/cfgbuild.c +++ b/gcc/cfgbuild.c @@ -28,7 +28,7 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA Available functionality: - CFG construction - find_basic_blocks */ + find_basic_blocks */ #include "config.h" #include "system.h" @@ -124,8 +124,8 @@ control_flow_insn_p (rtx insn) case BARRIER: /* It is nonsense to reach barrier when looking for the - end of basic block, but before dead code is eliminated - this may happen. */ + end of basic block, but before dead code is eliminated + this may happen. */ return false; default: @@ -145,7 +145,7 @@ count_basic_blocks (rtx f) for (insn = f; insn; insn = NEXT_INSN (insn)) { /* Code labels and barriers causes current basic block to be - terminated at previous real insn. */ + terminated at previous real insn. */ if ((LABEL_P (insn) || BARRIER_P (insn)) && saw_insn) count++, saw_insn = false; @@ -542,9 +542,12 @@ find_basic_blocks (rtx f) instructions at all until close to the end of compilation when we actually lay them out. */ - VARRAY_BB_INIT (basic_block_info, n_basic_blocks, "basic_block_info"); - BASIC_BLOCK (ENTRY_BLOCK) = ENTRY_BLOCK_PTR; - BASIC_BLOCK (EXIT_BLOCK) = EXIT_BLOCK_PTR; + basic_block_info = VEC_alloc (basic_block, gc, n_basic_blocks); + VEC_safe_grow (basic_block, gc, basic_block_info, n_basic_blocks); + memset (VEC_address (basic_block, basic_block_info), 0, + sizeof (basic_block) * n_basic_blocks); + SET_BASIC_BLOCK (ENTRY_BLOCK, ENTRY_BLOCK_PTR); + SET_BASIC_BLOCK (EXIT_BLOCK, EXIT_BLOCK_PTR); find_basic_blocks_1 (f); @@ -609,13 +612,13 @@ purge_dead_tablejump_edges (basic_block bb, rtx table) for (ei = ei_start (bb->succs); (e = ei_safe_edge (ei)); ) { if (FULL_STATE (e->dest) & BLOCK_USED_BY_TABLEJUMP) - SET_STATE (e->dest, FULL_STATE (e->dest) - & ~(size_t) BLOCK_USED_BY_TABLEJUMP); + SET_STATE (e->dest, FULL_STATE (e->dest) + & ~(size_t) BLOCK_USED_BY_TABLEJUMP); else if (!(e->flags & (EDGE_ABNORMAL | EDGE_EH))) - { - remove_edge (e); - continue; - } + { + remove_edge (e); + continue; + } ei_next (&ei); } }