summaryrefslogtreecommitdiff
path: root/gcc/ssa-dce.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/ssa-dce.c')
-rw-r--r--gcc/ssa-dce.c108
1 files changed, 39 insertions, 69 deletions
diff --git a/gcc/ssa-dce.c b/gcc/ssa-dce.c
index 43354ff50b6..c308c7793b6 100644
--- a/gcc/ssa-dce.c
+++ b/gcc/ssa-dce.c
@@ -1,5 +1,5 @@
/* Dead-code elimination pass for the GNU compiler.
- Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
+ Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
Written by Jeffrey D. Oldham <oldham@codesourcery.com>.
This file is part of GCC.
@@ -93,30 +93,23 @@ typedef struct {
/* Local function prototypes. */
static control_dependent_block_to_edge_map control_dependent_block_to_edge_map_create
- PARAMS((size_t num_basic_blocks));
+ (size_t num_basic_blocks);
static void set_control_dependent_block_to_edge_map_bit
- PARAMS ((control_dependent_block_to_edge_map c, basic_block bb,
- int edge_index));
+ (control_dependent_block_to_edge_map c, basic_block bb, int edge_index);
static void control_dependent_block_to_edge_map_free
- PARAMS ((control_dependent_block_to_edge_map c));
+ (control_dependent_block_to_edge_map c);
static void find_all_control_dependences
- PARAMS ((struct edge_list *el, dominance_info pdom,
- control_dependent_block_to_edge_map cdbte));
+ (struct edge_list *el, dominance_info pdom,
+ control_dependent_block_to_edge_map cdbte);
static void find_control_dependence
- PARAMS ((struct edge_list *el, int edge_index, dominance_info pdom,
- control_dependent_block_to_edge_map cdbte));
-static basic_block find_pdom
- PARAMS ((dominance_info pdom, basic_block block));
-static int inherently_necessary_register_1
- PARAMS ((rtx *current_rtx, void *data));
-static int inherently_necessary_register
- PARAMS ((rtx current_rtx));
-static int find_inherently_necessary
- PARAMS ((rtx current_rtx));
-static int propagate_necessity_through_operand
- PARAMS ((rtx *current_rtx, void *data));
-static void note_inherently_necessary_set
- PARAMS ((rtx, rtx, void *));
+ (struct edge_list *el, int edge_index, dominance_info pdom,
+ control_dependent_block_to_edge_map cdbte);
+static basic_block find_pdom (dominance_info pdom, basic_block block);
+static int inherently_necessary_register_1 (rtx *current_rtx, void *data);
+static int inherently_necessary_register (rtx current_rtx);
+static int find_inherently_necessary (rtx current_rtx);
+static int propagate_necessity_through_operand (rtx *current_rtx, void *data);
+static void note_inherently_necessary_set (rtx, rtx, void *);
/* Unnecessary insns are indicated using insns' in_struct bit. */
@@ -126,8 +119,7 @@ static void note_inherently_necessary_set
#define RESURRECT_INSN(INSN) INSN_DEAD_CODE_P(INSN) = 0
/* Return nonzero if INSN is unnecessary. */
#define UNNECESSARY_P(INSN) INSN_DEAD_CODE_P(INSN)
-static void mark_all_insn_unnecessary
- PARAMS ((void));
+static void mark_all_insn_unnecessary (void);
/* Execute CODE with free variable INSN for all unnecessary insns in
an unspecified order, producing no output. */
#define EXECUTE_IF_UNNECESSARY(INSN, CODE) \
@@ -142,11 +134,9 @@ static void mark_all_insn_unnecessary
}
/* Find the label beginning block BB. */
-static rtx find_block_label
- PARAMS ((basic_block bb));
+static rtx find_block_label (basic_block bb);
/* Remove INSN, updating its basic block structure. */
-static void delete_insn_bb
- PARAMS ((rtx insn));
+static void delete_insn_bb (rtx insn);
/* Recording which blocks are control dependent on which edges. We
expect each block to be control dependent on very few edges so we
@@ -161,8 +151,7 @@ static void delete_insn_bb
control_dependent_block_to_edge_map_free (). */
static control_dependent_block_to_edge_map
-control_dependent_block_to_edge_map_create (num_basic_blocks)
- size_t num_basic_blocks;
+control_dependent_block_to_edge_map_create (size_t num_basic_blocks)
{
int i;
control_dependent_block_to_edge_map c
@@ -180,10 +169,8 @@ control_dependent_block_to_edge_map_create (num_basic_blocks)
control-dependent. */
static void
-set_control_dependent_block_to_edge_map_bit (c, bb, edge_index)
- control_dependent_block_to_edge_map c;
- basic_block bb;
- int edge_index;
+set_control_dependent_block_to_edge_map_bit (control_dependent_block_to_edge_map c,
+ basic_block bb, int edge_index)
{
if (bb->index - (INVALID_BLOCK+1) >= c->length)
abort ();
@@ -205,8 +192,7 @@ set_control_dependent_block_to_edge_map_bit (c, bb, edge_index)
/* Destroy a control_dependent_block_to_edge_map C. */
static void
-control_dependent_block_to_edge_map_free (c)
- control_dependent_block_to_edge_map c;
+control_dependent_block_to_edge_map_free (control_dependent_block_to_edge_map c)
{
int i;
for (i = 0; i < c->length; ++i)
@@ -220,10 +206,8 @@ control_dependent_block_to_edge_map_free (c)
which should be empty. */
static void
-find_all_control_dependences (el, pdom, cdbte)
- struct edge_list *el;
- dominance_info pdom;
- control_dependent_block_to_edge_map cdbte;
+find_all_control_dependences (struct edge_list *el, dominance_info pdom,
+ control_dependent_block_to_edge_map cdbte)
{
int i;
@@ -238,11 +222,9 @@ find_all_control_dependences (el, pdom, cdbte)
with zeros in each (block b', edge) position. */
static void
-find_control_dependence (el, edge_index, pdom, cdbte)
- struct edge_list *el;
- int edge_index;
- dominance_info pdom;
- control_dependent_block_to_edge_map cdbte;
+find_control_dependence (struct edge_list *el, int edge_index,
+ dominance_info pdom,
+ control_dependent_block_to_edge_map cdbte)
{
basic_block current_block;
basic_block ending_block;
@@ -269,9 +251,7 @@ find_control_dependence (el, edge_index, pdom, cdbte)
negative numbers. */
static basic_block
-find_pdom (pdom, block)
- dominance_info pdom;
- basic_block block;
+find_pdom (dominance_info pdom, basic_block block)
{
if (!block)
abort ();
@@ -300,9 +280,8 @@ find_pdom (pdom, block)
particular PC values. */
static int
-inherently_necessary_register_1 (current_rtx, data)
- rtx *current_rtx;
- void *data ATTRIBUTE_UNUSED;
+inherently_necessary_register_1 (rtx *current_rtx,
+ void *data ATTRIBUTE_UNUSED)
{
rtx x = *current_rtx;
@@ -332,8 +311,7 @@ inherently_necessary_register_1 (current_rtx, data)
/* Return nonzero if the insn CURRENT_RTX is inherently necessary. */
static int
-inherently_necessary_register (current_rtx)
- rtx current_rtx;
+inherently_necessary_register (rtx current_rtx)
{
return for_each_rtx (&current_rtx,
&inherently_necessary_register_1, NULL);
@@ -345,10 +323,7 @@ inherently_necessary_register (current_rtx)
nonzero value in inherently_necessary_p if such a store is found. */
static void
-note_inherently_necessary_set (dest, set, data)
- rtx set ATTRIBUTE_UNUSED;
- rtx dest;
- void *data;
+note_inherently_necessary_set (rtx dest, rtx set ATTRIBUTE_UNUSED, void *data)
{
int *inherently_necessary_set_p = (int *) data;
@@ -370,8 +345,7 @@ note_inherently_necessary_set (dest, set, data)
Return nonzero iff inherently necessary. */
static int
-find_inherently_necessary (x)
- rtx x;
+find_inherently_necessary (rtx x)
{
if (x == NULL_RTX)
return 0;
@@ -416,9 +390,7 @@ find_inherently_necessary (x)
instructions. */
static int
-propagate_necessity_through_operand (current_rtx, data)
- rtx *current_rtx;
- void *data;
+propagate_necessity_through_operand (rtx *current_rtx, void *data)
{
rtx x = *current_rtx;
varray_type *unprocessed_instructions = (varray_type *) data;
@@ -447,21 +419,20 @@ propagate_necessity_through_operand (current_rtx, data)
/* Indicate all insns initially assumed to be unnecessary. */
static void
-mark_all_insn_unnecessary ()
+mark_all_insn_unnecessary (void)
{
rtx insn;
for (insn = get_insns (); insn != NULL_RTX; insn = NEXT_INSN (insn)) {
if (INSN_P (insn))
KILL_INSN (insn);
}
-
+
}
/* Find the label beginning block BB, adding one if necessary. */
static rtx
-find_block_label (bb)
- basic_block bb;
+find_block_label (basic_block bb)
{
rtx insn = bb->head;
if (LABEL_P (insn))
@@ -478,8 +449,7 @@ find_block_label (bb)
/* Remove INSN, updating its basic block structure. */
static void
-delete_insn_bb (insn)
- rtx insn;
+delete_insn_bb (rtx insn)
{
if (!insn)
abort ();
@@ -498,7 +468,7 @@ delete_insn_bb (insn)
/* Perform the dead-code elimination. */
void
-ssa_eliminate_dead_code ()
+ssa_eliminate_dead_code (void)
{
rtx insn;
basic_block bb;
@@ -734,7 +704,7 @@ ssa_eliminate_dead_code ()
if (INSN_P (insn))
RESURRECT_INSN (insn);
}
-
+
if (VARRAY_ACTIVE_SIZE (unprocessed_instructions) != 0)
abort ();
control_dependent_block_to_edge_map_free (cdbte);