diff options
author | Jeffrey A Law <law@cygnus.com> | 2001-06-19 16:54:26 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 2001-06-19 10:54:26 -0600 |
commit | fd9305ef933ed71ba669af6379c0fe12cc4c22a2 (patch) | |
tree | 07c8c91fb87a8f7733f18709b6bb7795f1df1631 /gcc/ssa.c | |
parent | 164d59e04e9897ab5c82c642e9df1f2f62c9009a (diff) | |
download | gcc-fd9305ef933ed71ba669af6379c0fe12cc4c22a2.zip gcc-fd9305ef933ed71ba669af6379c0fe12cc4c22a2.tar.gz gcc-fd9305ef933ed71ba669af6379c0fe12cc4c22a2.tar.bz2 |
ssa.c (remove_phi_alternative): Remove declaration.
* ssa.c (remove_phi_alternative): Remove declaration. No longer
static. Second argument is a pointer to a basic block structure,
not a basic block index.
(convert_to_ssa): Do not remove dead code.
(convert_from_ssa): Do not remove dead code to create death notes.
* ssa.h (remove_phi_alternative): Declare.
From-SVN: r43464
Diffstat (limited to 'gcc/ssa.c')
-rw-r--r-- | gcc/ssa.c | 27 |
1 files changed, 15 insertions, 12 deletions
@@ -1,5 +1,5 @@ /* Static Single Assignment conversion routines for the GNU compiler. - Copyright (C) 2000 Free Software Foundation, Inc. + Copyright (C) 2000, 2001 Free Software Foundation, Inc. This file is part of GNU CC. @@ -164,8 +164,6 @@ static inline rtx * phi_alternative PARAMS ((rtx, int)); static rtx first_insn_after_basic_block_note PARAMS ((basic_block)); -static int remove_phi_alternative - PARAMS ((rtx, int)); static void compute_dominance_frontiers_1 PARAMS ((sbitmap *frontiers, int *idom, int bb, sbitmap done)); static void compute_dominance_frontiers @@ -427,15 +425,16 @@ phi_alternative (set, c) block C. Return non-zero on success, or zero if no alternative is found for C. */ -static int -remove_phi_alternative (set, c) +int +remove_phi_alternative (set, block) rtx set; - int c; + basic_block block; { rtvec phi_vec = XVEC (SET_SRC (set), 0); int num_elem = GET_NUM_ELEM (phi_vec); - int v; + int v, c; + c = block->index; for (v = num_elem - 2; v >= 0; v -= 2) if (INTVAL (RTVEC_ELT (phi_vec, v + 1)) == c) { @@ -1155,8 +1154,9 @@ convert_to_ssa () if (in_ssa_form) abort (); - /* Need global_live_at_{start,end} up to date. */ - life_analysis (get_insns (), NULL, PROP_KILL_DEAD_CODE | PROP_SCAN_DEAD_CODE); + /* Need global_live_at_{start,end} up to date. Do not remove any + dead code. We'll let the SSA optimizers do that. */ + life_analysis (get_insns (), NULL, 0); idom = (int *) alloca (n_basic_blocks * sizeof (int)); memset ((void *)idom, -1, (size_t)n_basic_blocks * sizeof (int)); @@ -2149,9 +2149,12 @@ convert_from_ssa() partition reg_partition; rtx insns = get_insns (); - /* Need global_live_at_{start,end} up to date. */ - life_analysis (insns, NULL, - PROP_KILL_DEAD_CODE | PROP_SCAN_DEAD_CODE | PROP_DEATH_NOTES); + /* Need global_live_at_{start,end} up to date. There should not be + any significant dead code at this point, except perhaps dead + stores. So do not take the time to perform dead code elimination. + + We also do not need death notes, so don't bother creating them. */ + life_analysis (insns, NULL, 0); /* Figure out which regs in copies and phi nodes don't conflict and therefore can be coalesced. */ |