aboutsummaryrefslogtreecommitdiff
path: root/gcc/ssa.c
diff options
context:
space:
mode:
authorJeffrey A Law <law@cygnus.com>2001-06-19 16:54:26 +0000
committerJeff Law <law@gcc.gnu.org>2001-06-19 10:54:26 -0600
commitfd9305ef933ed71ba669af6379c0fe12cc4c22a2 (patch)
tree07c8c91fb87a8f7733f18709b6bb7795f1df1631 /gcc/ssa.c
parent164d59e04e9897ab5c82c642e9df1f2f62c9009a (diff)
downloadgcc-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.c27
1 files changed, 15 insertions, 12 deletions
diff --git a/gcc/ssa.c b/gcc/ssa.c
index df4ca9af..79382aa 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. */