From: Jeffrey A Law Date: Tue, 19 Jun 2001 16:54:26 +0000 (+0000) Subject: ssa.c (remove_phi_alternative): Remove declaration. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=fd9305ef933ed71ba669af6379c0fe12cc4c22a2;p=gcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a5754d3f596..42dfd93cdbd 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -6,6 +6,13 @@ Tue Jun 19 07:53:52 2001 Jeffrey A Law (law@cygnus.com) + * 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. + * flow.c (delete_unreachable_blocks): Fix patch error in previous change (call to find_unreachable_blocks was lost). diff --git a/gcc/ssa.c b/gcc/ssa.c index df4ca9af687..79382aa7171 100644 --- a/gcc/ssa.c +++ b/gcc/ssa.c @@ -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. */ diff --git a/gcc/ssa.h b/gcc/ssa.h index 463fef8b60c..5095319e997 100644 --- a/gcc/ssa.h +++ b/gcc/ssa.h @@ -1,5 +1,5 @@ /* Static Single Assignment (SSA) definitions for GNU C-Compiler - Copyright (C) 2000 Free Software Foundation, Inc. + Copyright (C) 2000, 2001 Free Software Foundation, Inc. Written by Jeffrey D. Oldham . This file is part of GNU CC. @@ -27,9 +27,11 @@ typedef int (*successor_phi_fn) PARAMS ((rtx, int, int, void *)); extern int for_each_successor_phi PARAMS ((basic_block bb, successor_phi_fn, void *)); +extern int remove_phi_alternative PARAMS ((rtx, basic_block)); + /* Optimizations. */ -/* In dce.c */ +/* In ssa-dce.c */ extern void eliminate_dead_code PARAMS ((void)); /* SSA definitions and uses. */