From: Bin Cheng Date: Tue, 11 Nov 2014 02:10:37 +0000 (+0000) Subject: sched-deps.c (sched_analyze_1): Check pending list if it is not less than MAX_PENDING... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=43722f9fa69d4cc9a369b468552d5612674a576f;p=gcc.git sched-deps.c (sched_analyze_1): Check pending list if it is not less than MAX_PENDING_LIST_LENGTH. * sched-deps.c (sched_analyze_1): Check pending list if it is not less than MAX_PENDING_LIST_LENGTH. (sched_analyze_2, sched_analyze_insn, deps_analyze_insn): Ditto. From-SVN: r217331 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ce5759ef225..1ddd36a721a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2014-11-11 Bin Cheng + + * sched-deps.c (sched_analyze_1): Check pending list if it is not + less than MAX_PENDING_LIST_LENGTH. + (sched_analyze_2, sched_analyze_insn, deps_analyze_insn): Ditto. + 2014-11-11 Uros Bizjak * config/i386/i386.c (ix86_decompose_address): Replace open-coded diff --git a/gcc/sched-deps.c b/gcc/sched-deps.c index 6cdb95a27bb..a4ea8362a6a 100644 --- a/gcc/sched-deps.c +++ b/gcc/sched-deps.c @@ -2504,7 +2504,7 @@ sched_analyze_1 (struct deps_desc *deps, rtx x, rtx_insn *insn) /* Pending lists can't get larger with a readonly context. */ if (!deps->readonly && ((deps->pending_read_list_length + deps->pending_write_list_length) - > MAX_PENDING_LIST_LENGTH)) + >= MAX_PENDING_LIST_LENGTH)) { /* Flush all pending reads and writes to prevent the pending lists from getting any larger. Insn scheduling runs too slowly when @@ -2722,7 +2722,7 @@ sched_analyze_2 (struct deps_desc *deps, rtx x, rtx_insn *insn) { if ((deps->pending_read_list_length + deps->pending_write_list_length) - > MAX_PENDING_LIST_LENGTH + >= MAX_PENDING_LIST_LENGTH && !DEBUG_INSN_P (insn)) flush_pending_lists (deps, insn, true, true); add_insn_mem_dependence (deps, true, insn, x); @@ -3227,8 +3227,8 @@ sched_analyze_insn (struct deps_desc *deps, rtx x, rtx_insn *insn) EXECUTE_IF_SET_IN_REG_SET (reg_pending_clobbers, 0, i, rsi) { struct deps_reg *reg_last = &deps->reg_last[i]; - if (reg_last->uses_length > MAX_PENDING_LIST_LENGTH - || reg_last->clobbers_length > MAX_PENDING_LIST_LENGTH) + if (reg_last->uses_length >= MAX_PENDING_LIST_LENGTH + || reg_last->clobbers_length >= MAX_PENDING_LIST_LENGTH) { add_dependence_list_and_free (deps, insn, ®_last->sets, 0, REG_DEP_OUTPUT, false); @@ -3661,7 +3661,7 @@ deps_analyze_insn (struct deps_desc *deps, rtx_insn *insn) && sel_insn_is_speculation_check (insn))) { /* Keep the list a reasonable size. */ - if (deps->pending_flush_length++ > MAX_PENDING_LIST_LENGTH) + if (deps->pending_flush_length++ >= MAX_PENDING_LIST_LENGTH) flush_pending_lists (deps, insn, true, true); else deps->pending_jump_insns