sched-deps.c (sched_analyze_1): Check pending list if it is not less than MAX_PENDING...
authorBin Cheng <bin.cheng@arm.com>
Tue, 11 Nov 2014 02:10:37 +0000 (02:10 +0000)
committerBin Cheng <amker@gcc.gnu.org>
Tue, 11 Nov 2014 02:10:37 +0000 (02:10 +0000)
* 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

gcc/ChangeLog
gcc/sched-deps.c

index ce5759ef22520110b9edcf8b07bdb745bc6dbc70..1ddd36a721a9656cf556865c119e9d5954ba276c 100644 (file)
@@ -1,3 +1,9 @@
+2014-11-11  Bin Cheng  <bin.cheng@arm.com>
+
+       * 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  <ubizjak@gmail.com>
 
        * config/i386/i386.c (ix86_decompose_address): Replace open-coded
index 6cdb95a27bb51bfc4a592d00af5d5d8f04cb64f1..a4ea8362a6af8eb2f4c197a9ebe2c660219c676d 100644 (file)
@@ -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, &reg_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