+2011-03-31 Jeff Law <law@redhat.com>
+
+ * 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 <joseph@codesourcery.com>
PR target/47109
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 *);
/* 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;
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. */
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. */
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);
}
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))
{
/* 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;
}
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);
{
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)));
{
temp = expand_expr (exp, NULL_RTX, VOIDmode, modifier);
if (MEM_P (temp))
- temp = copy_to_reg (temp);
+ copy_to_reg (temp);
return const0_rtx;
}
{
#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. */
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 ();
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))
}
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:
{
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);
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. */