From: Alexander Monakov Date: Thu, 14 Jan 2010 11:16:02 +0000 (+0300) Subject: sel-sched.c (maybe_emit_renaming_copy): Exit early when expression to rename is not... X-Git-Tag: releases/gcc-4.5.0~1228 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f07013eb07cfe45ef2d67ce9ddce7cea5883e5ac;p=thirdparty%2Fgcc.git sel-sched.c (maybe_emit_renaming_copy): Exit early when expression to rename is not separable. 2010-01-14 Alexander Monakov * sel-sched.c (maybe_emit_renaming_copy): Exit early when expression to rename is not separable. Otherwise check that its LHS is not NULL. From-SVN: r155898 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index abfd461671cb..26fedcca6392 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2010-01-14 Alexander Monakov + + * sel-sched.c (maybe_emit_renaming_copy): Exit early when expression + to rename is not separable. Otherwise check that its LHS is not NULL. + 2010-01-14 Alexander Monakov * sel-sched.c (choose_best_reg_1): Loop over all regs for mode. diff --git a/gcc/sel-sched.c b/gcc/sel-sched.c index bdc7f9c42bcf..a1a0ec06e0d1 100644 --- a/gcc/sel-sched.c +++ b/gcc/sel-sched.c @@ -5823,14 +5823,19 @@ maybe_emit_renaming_copy (rtx insn, moveop_static_params_p params) { bool insn_emitted = false; - rtx cur_reg = expr_dest_reg (params->c_expr); + rtx cur_reg; - gcc_assert (!cur_reg || (params->dest && REG_P (params->dest))); + /* Bail out early when expression can not be renamed at all. */ + if (!EXPR_SEPARABLE_P (params->c_expr)) + return false; + + cur_reg = expr_dest_reg (params->c_expr); + gcc_assert (cur_reg && params->dest && REG_P (params->dest)); /* If original operation has expr and the register chosen for that expr is not original operation's dest reg, substitute operation's right hand side with the register chosen. */ - if (cur_reg != NULL_RTX && REGNO (params->dest) != REGNO (cur_reg)) + if (REGNO (params->dest) != REGNO (cur_reg)) { insn_t reg_move_insn, reg_move_insn_rtx;