From e16b6fd0f7b7da99739f850360d6c86c5b1cba20 Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Thu, 31 Mar 2011 07:28:29 -0600 Subject: [PATCH] tree-ssa-forwprop.c (forward_propagate_into_cond): Avoid typo potentially leading to null pointer dereference. * tree-ssa-forwprop.c (forward_propagate_into_cond): Avoid typo potentially leading to null pointer dereference. * caller-save.c (new_saved_hard_reg): Eliminate return value. (setup_save_areas): Corresponding changes to avoid useless assignments. * jump.c (reversed_comparison_code_parts): Avoid successive return statements when REVERSE_CONDITION is defined. * expr.c (expand_assignment): Avoid useless assignments. (expand_expr_real_1): Likewise. (expand_expr_real_2): Avoid useless statements. * tree-ssa-phiopt.c (minmax_replacement): Avoid useless statement. * cfgexpand.c (expand_gimple_basic_block): Avoid useless assignment. * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Avoid useless statements. * stmt.c (expand_expr_stmt): Avoid useless assignment. From-SVN: r171780 --- gcc/ChangeLog | 25 +++++++++++++++++++++++++ gcc/caller-save.c | 9 ++++----- gcc/cfgexpand.c | 2 +- gcc/expr.c | 8 ++------ gcc/jump.c | 3 ++- gcc/stmt.c | 2 +- gcc/tree-ssa-dce.c | 8 -------- gcc/tree-ssa-forwprop.c | 2 +- gcc/tree-ssa-phiopt.c | 1 - 9 files changed, 36 insertions(+), 24 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9442b249f16..f33051f814f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,28 @@ +2011-03-31 Jeff Law + + * tree-ssa-forwprop.c (forward_propagate_into_cond): Avoid + typo potentially leading to null pointer dereference. + + * caller-save.c (new_saved_hard_reg): Eliminate return value. + (setup_save_areas): Corresponding changes to avoid useless + assignments. + + * jump.c (reversed_comparison_code_parts): Avoid successive return + statements when REVERSE_CONDITION is defined. + + * expr.c (expand_assignment): Avoid useless assignments. + (expand_expr_real_1): Likewise. + (expand_expr_real_2): Avoid useless statements. + + * tree-ssa-phiopt.c (minmax_replacement): Avoid useless statement. + + * cfgexpand.c (expand_gimple_basic_block): Avoid useless assignment. + + * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Avoid useless + statements. + + * stmt.c (expand_expr_stmt): Avoid useless assignment. + 2011-03-31 Joseph Myers PR target/47109 diff --git a/gcc/caller-save.c b/gcc/caller-save.c index 54de30b4a51..369b55c2302 100644 --- a/gcc/caller-save.c +++ b/gcc/caller-save.c @@ -82,7 +82,7 @@ static int reg_restore_code (int, enum machine_mode); struct saved_hard_reg; static void initiate_saved_hard_regs (void); -static struct saved_hard_reg *new_saved_hard_reg (int, int); +static void new_saved_hard_reg (int, int); static void finish_saved_hard_regs (void); static int saved_hard_reg_compare_func (const void *, const void *); @@ -346,7 +346,7 @@ initiate_saved_hard_regs (void) /* Allocate and return new saved hard register with given REGNO and CALL_FREQ. */ -static struct saved_hard_reg * +static void new_saved_hard_reg (int regno, int call_freq) { struct saved_hard_reg *saved_reg; @@ -359,7 +359,6 @@ new_saved_hard_reg (int regno, int call_freq) saved_reg->call_freq = call_freq; saved_reg->first_p = FALSE; saved_reg->next = -1; - return saved_reg; } /* Free memory allocated for the saved hard registers. */ @@ -463,7 +462,7 @@ setup_save_areas (void) if (hard_reg_map[regno] != NULL) hard_reg_map[regno]->call_freq += freq; else - saved_reg = new_saved_hard_reg (regno, freq); + new_saved_hard_reg (regno, freq); SET_HARD_REG_BIT (hard_regs_used, regno); } /* Look through all live pseudos, mark their hard registers. */ @@ -483,7 +482,7 @@ setup_save_areas (void) if (hard_reg_map[r] != NULL) hard_reg_map[r]->call_freq += freq; else - saved_reg = new_saved_hard_reg (r, freq); + new_saved_hard_reg (r, freq); SET_HARD_REG_BIT (hard_regs_to_save, r); SET_HARD_REG_BIT (hard_regs_used, r); } diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c index e075c53a461..cdd7d035615 100644 --- a/gcc/cfgexpand.c +++ b/gcc/cfgexpand.c @@ -3576,7 +3576,7 @@ expand_gimple_basic_block (basic_block bb) val = gen_rtx_VAR_LOCATION (mode, var, (rtx)value, VAR_INIT_STATUS_INITIALIZED); - val = emit_debug_insn (val); + emit_debug_insn (val); if (dump_file && (dump_flags & TDF_DETAILS)) { diff --git a/gcc/expr.c b/gcc/expr.c index 076b8d2f0a4..ca618040680 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -4124,7 +4124,7 @@ expand_assignment (tree to, tree from, bool nontemporal) /* Don't crash if the lhs of the assignment was erroneous. */ if (TREE_CODE (to) == ERROR_MARK) { - result = expand_normal (from); + expand_normal (from); return; } @@ -8170,7 +8170,6 @@ expand_expr_real_2 (sepops ops, rtx target, enum machine_mode tmode, case VEC_UNPACK_LO_EXPR: { op0 = expand_normal (treeop0); - this_optab = optab_for_tree_code (code, type, optab_default); temp = expand_widen_pattern_expr (ops, op0, NULL_RTX, NULL_RTX, target, unsignedp); gcc_assert (temp); @@ -8182,9 +8181,6 @@ expand_expr_real_2 (sepops ops, rtx target, enum machine_mode tmode, { op0 = expand_normal (treeop0); /* The signedness is determined from input operand. */ - this_optab = optab_for_tree_code (code, - TREE_TYPE (treeop0), - optab_default); temp = expand_widen_pattern_expr (ops, op0, NULL_RTX, NULL_RTX, target, TYPE_UNSIGNED (TREE_TYPE (treeop0))); @@ -8334,7 +8330,7 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode, { temp = expand_expr (exp, NULL_RTX, VOIDmode, modifier); if (MEM_P (temp)) - temp = copy_to_reg (temp); + copy_to_reg (temp); return const0_rtx; } diff --git a/gcc/jump.c b/gcc/jump.c index 9721fe19e9e..8adfbfd5c40 100644 --- a/gcc/jump.c +++ b/gcc/jump.c @@ -308,8 +308,9 @@ reversed_comparison_code_parts (enum rtx_code code, const_rtx arg0, { #ifdef REVERSE_CONDITION return REVERSE_CONDITION (code, mode); -#endif +#else return reverse_condition (code); +#endif } /* Try a few special cases based on the comparison code. */ diff --git a/gcc/stmt.c b/gcc/stmt.c index b65c6db4642..1a9f9e505da 100644 --- a/gcc/stmt.c +++ b/gcc/stmt.c @@ -1455,7 +1455,7 @@ expand_expr_stmt (tree exp) if (TYPE_MODE (type) == VOIDmode) ; else if (TYPE_MODE (type) != BLKmode) - value = copy_to_reg (value); + copy_to_reg (value); else { rtx lab = gen_label_rtx (); diff --git a/gcc/tree-ssa-dce.c b/gcc/tree-ssa-dce.c index ce2d41bff31..c46836da108 100644 --- a/gcc/tree-ssa-dce.c +++ b/gcc/tree-ssa-dce.c @@ -271,8 +271,6 @@ mark_operand_necessary (tree op) static void mark_stmt_if_obviously_necessary (gimple stmt, bool aggressive) { - tree lhs = NULL_TREE; - /* With non-call exceptions, we have to assume that all statements could throw. If a statement may throw, it is inherently necessary. */ if (cfun->can_throw_non_call_exceptions && stmt_could_throw_p (stmt)) @@ -311,12 +309,6 @@ mark_stmt_if_obviously_necessary (gimple stmt, bool aggressive) } if (!gimple_call_lhs (stmt)) return; - lhs = gimple_call_lhs (stmt); - /* Fall through */ - - case GIMPLE_ASSIGN: - if (!lhs) - lhs = gimple_assign_lhs (stmt); break; case GIMPLE_DEBUG: diff --git a/gcc/tree-ssa-forwprop.c b/gcc/tree-ssa-forwprop.c index f183159604c..aaed6cb689e 100644 --- a/gcc/tree-ssa-forwprop.c +++ b/gcc/tree-ssa-forwprop.c @@ -553,7 +553,7 @@ forward_propagate_into_cond (gimple_stmt_iterator *gsi_p) { name = cond; def_stmt = get_prop_source_stmt (name, true, NULL); - if (def_stmt || !can_propagate_from (def_stmt)) + if (!def_stmt || !can_propagate_from (def_stmt)) return did_something; rhs0 = gimple_assign_rhs1 (def_stmt); diff --git a/gcc/tree-ssa-phiopt.c b/gcc/tree-ssa-phiopt.c index caea9ac723f..6b15ae09488 100644 --- a/gcc/tree-ssa-phiopt.c +++ b/gcc/tree-ssa-phiopt.c @@ -695,7 +695,6 @@ minmax_replacement (basic_block cond_bb, basic_block middle_bb, cond = last_stmt (cond_bb); cmp = gimple_cond_code (cond); - result = PHI_RESULT (phi); /* This transformation is only valid for order comparisons. Record which operand is smaller/larger if the result of the comparison is true. */ -- 2.30.2