From: ienkovich Date: Thu, 21 Jan 2016 16:05:14 +0000 (+0000) Subject: gcc/ X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=9ad32a065886a8ac9e74a77c12e857c16fa7deb5;p=thirdparty%2Fgcc.git gcc/ 2016-01-21 Yuri Rumyantsev PR rtl-optimization/68920 * ifcvt.c (cond_move_process_if_block): Limit number of conditional moves. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@232680 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d15a87dcca69..abde3f44886b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2016-01-21 Yuri Rumyantsev + + PR rtl-optimization/68920 + * ifcvt.c (cond_move_process_if_block): Limit number of conditional + moves. + 2016-01-21 Vladimir Makarov PR rtl-optimization/68990 diff --git a/gcc/ifcvt.c b/gcc/ifcvt.c index ec6c3def1462..74958fb76d06 100644 --- a/gcc/ifcvt.c +++ b/gcc/ifcvt.c @@ -3743,6 +3743,7 @@ cond_move_process_if_block (struct noce_if_info *if_info) vec else_regs = vNULL; unsigned int i; int success_p = FALSE; + int limit = PARAM_VALUE (PARAM_MAX_RTL_IF_CONVERSION_INSNS); /* Build a mapping for each block to the value used for each register. */ @@ -3792,7 +3793,8 @@ cond_move_process_if_block (struct noce_if_info *if_info) is the number of assignments currently made in only one of the branches, since if we convert we are going to always execute them. */ - if (c > MAX_CONDITIONAL_EXECUTE) + if (c > MAX_CONDITIONAL_EXECUTE + || c > limit) goto done; /* Try to emit the conditional moves. First do the then block,