From af5c573a6064b6d91abe3b40a8f51977898a7efb Mon Sep 17 00:00:00 2001 From: Jeffrey A Law Date: Tue, 10 Jul 2001 16:27:54 +0000 Subject: [PATCH] ssa-ccp.c (first_phi_node): Remove. * ssa-ccp.c (first_phi_node): Remove. Replace uses with calls to first_insn_after_basic_block_note instead. * df.c (df_bb_refs_unlink): #if 0 out for now. * ssa.h: Add prototype for ssa_const_prop * ssa-ccp.c: Add prototype for ssa_fast_dce and mark_references (ssa_ccp_substitute_constants): Fix signed vs unsigned comparison (ssa_fast_dce): Remove unused variable From-SVN: r43906 --- gcc/ChangeLog | 14 ++++++++++++++ gcc/df.c | 4 ++-- gcc/ssa-ccp.c | 36 +++++------------------------------- gcc/ssa.h | 4 ++++ 4 files changed, 25 insertions(+), 33 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9bdce89d35c..e6ff663dd34 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,17 @@ +Tue Jul 10 09:04:45 2001 Jeffrey A Law (law@cygnus.com) + + * ssa-ccp.c (first_phi_node): Remove. Replace uses with calls to + first_insn_after_basic_block_note instead. + + * df.c (df_bb_refs_unlink): #if 0 out for now. + +2001-07-10 David Billinghurst * diagnostic.c (finish_diagnostic): Rename to diff --git a/gcc/df.c b/gcc/df.c index 4b049f55087..36ae66f783f 100644 --- a/gcc/df.c +++ b/gcc/df.c @@ -218,8 +218,8 @@ static struct df_link *df_ref_unlink PARAMS((struct df_link **, struct ref *)); static void df_def_unlink PARAMS((struct df *, struct ref *)); static void df_use_unlink PARAMS((struct df *, struct ref *)); static void df_insn_refs_unlink PARAMS ((struct df *, basic_block, rtx)); -static void df_bb_refs_unlink PARAMS ((struct df *, basic_block)); #if 0 +static void df_bb_refs_unlink PARAMS ((struct df *, basic_block)); static void df_refs_unlink PARAMS ((struct df *, bitmap)); #endif @@ -2513,6 +2513,7 @@ df_insn_refs_unlink (df, bb, insn) } +#if 0 /* Unlink all the insns within BB from their reference information. */ static void df_bb_refs_unlink (df, bb) @@ -2535,7 +2536,6 @@ df_bb_refs_unlink (df, bb) } -#if 0 /* Unlink all the refs in the basic blocks specified by BLOCKS. Not currently used. */ static void diff --git a/gcc/ssa-ccp.c b/gcc/ssa-ccp.c index 2316824a131..2b5e592cb09 100644 --- a/gcc/ssa-ccp.c +++ b/gcc/ssa-ccp.c @@ -123,41 +123,17 @@ static sbitmap ssa_edges; #define PHI_PARMS(x) XVEC (SET_SRC (x), 0) #define EIE(x,y) EDGE_INDEX (edges, x, y) -rtx first_phi_node PARAMS ((basic_block)); static void visit_phi_node PARAMS ((rtx, basic_block)); static void visit_expression PARAMS ((rtx, basic_block)); static void defs_to_undefined PARAMS ((rtx)); static void defs_to_varying PARAMS ((rtx)); static void examine_flow_edges PARAMS ((void)); +static int mark_references PARAMS ((rtx *, void *)); static void follow_def_use_chains PARAMS ((void)); static void optimize_unexecutable_edges PARAMS ((struct edge_list *, sbitmap)); static void ssa_ccp_substitute_constants PARAMS ((void)); static void ssa_ccp_df_delete_unreachable_insns PARAMS ((void)); - -/* Return the first PHI node in a basic block. This routine knows - what INSNs can start a basic block and what can validly follow - them up to the first PHI node. - - If the INSN chain or block structures are incorrect, then the behavior - of this routine is undefined. verify_flow_info will normally catch - these problems in a more graceful manner. */ -rtx -first_phi_node (block) - basic_block block; -{ - rtx insn = block->head; - - /* Eat the optional CODE_LABEL at the start of the block. */ - if (GET_CODE (insn) == CODE_LABEL) - insn = NEXT_INSN (insn); - - /* Eat the mandatory NOTE_INSN_BASIC_BLOCK. */ - if (!NOTE_INSN_BASIC_BLOCK_P (insn) || NOTE_BASIC_BLOCK (insn) != block) - abort (); - - /* If there is a PHI node in this block, then it will be the next insn. */ - return NEXT_INSN (insn); -} +static void ssa_fast_dce PARAMS ((struct df *)); /* Loop through the PHI_NODE's parameters for BLOCK and compare their lattice values to determine PHI_NODE's lattice value. */ @@ -638,7 +614,7 @@ examine_flow_edges (void) /* Always simulate PHI nodes, even if we have simulated this block before. Note that all PHI nodes are consecutive within a block. */ - for (curr_phi_node = first_phi_node (succ_block); + for (curr_phi_node = first_insn_after_basic_block_note (succ_block); PHI_NODE_P (curr_phi_node); curr_phi_node = NEXT_INSN (curr_phi_node)) visit_phi_node (curr_phi_node, succ_block); @@ -751,7 +727,7 @@ optimize_unexecutable_edges (edges, executable_edges) the PHI nodes in the target block. */ if (edge->dest != EXIT_BLOCK_PTR) { - rtx insn = first_phi_node (edge->dest); + rtx insn = first_insn_after_basic_block_note (edge->dest); while (PHI_NODE_P (insn)) { @@ -840,7 +816,7 @@ optimize_unexecutable_edges (edges, executable_edges) static void ssa_ccp_substitute_constants () { - int i; + unsigned int i; for (i = FIRST_PSEUDO_REGISTER; i < VARRAY_SIZE (ssa_definition); i++) { @@ -1159,8 +1135,6 @@ ssa_fast_dce (df) found_use = 0; for (curruse = df->regs[reg].uses; curruse; curruse = curruse->next) { - rtx useinsn; - if (curruse->ref && DF_REF_INSN (curruse->ref) && ! INSN_DELETED_P (DF_REF_INSN (curruse->ref)) diff --git a/gcc/ssa.h b/gcc/ssa.h index a5655958d42..bf9a04106fc 100644 --- a/gcc/ssa.h +++ b/gcc/ssa.h @@ -35,6 +35,10 @@ extern int remove_phi_alternative PARAMS ((rtx, basic_block)); /* In ssa-dce.c */ extern void ssa_eliminate_dead_code PARAMS ((void)); +/* In ssa-ccp.c */ +extern void ssa_const_prop PARAMS ((void)); + + /* SSA definitions and uses. */ /* This flag is set when the CFG is in SSA form. */ extern int in_ssa_form; -- 2.30.2