https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87031

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |NEW
           Assignee|rguenth at gcc dot gnu.org         |unassigned at gcc dot 
gnu.org

--- Comment #10 from Richard Biener <rguenth at gcc dot gnu.org> ---
diff --git a/gcc/tree-ssa-loop-ivcanon.cc b/gcc/tree-ssa-loop-ivcanon.cc
index 48b126dfcf8..34aee688974 100644
--- a/gcc/tree-ssa-loop-ivcanon.cc
+++ b/gcc/tree-ssa-loop-ivcanon.cc
@@ -843,7 +843,7 @@ try_unroll_loop_completely (class loop *loop,
             cautious on guessing if the unrolling is going to be
             profitable.
             Move from estimated_unrolled_size to unroll small loops.  */
-         if (unr_insns * 2 / 3
+         if ((cunrolli ? unr_insns : unr_insns * 2 / 3)
              /* If there is IV variable that will become constant, we
                 save one instruction in the loop prologue we do not
                 account otherwise.  */

has surprisingly big testsuite fallout.  Part of it will be addressed
(by testsuite adjustments) with the change for PR115825, but there's

+FAIL: g++.dg/opt/pr80275.C  -std=gnu++14  scan-tree-dump optimized "return 1;"
+FAIL: gcc.dg/Warray-bounds-68.c  (test for warnings, line 18)
+FAIL: gcc.dg/pr80492.c scan-tree-dump-times optimized "reg = " 4
+FAIL: gcc.dg/tree-ssa/cunroll-1.c scan-tree-dump cunrolli "Last iteration exit
edge was proved true."
+FAIL: gcc.dg/tree-ssa/cunroll-1.c scan-tree-dump cunrolli "loop with 2
iterations completely unrolled"
+FAIL: gcc.dg/tree-ssa/dump-6.c scan-tree-dump store-merging "MEM <unsigned
long> \\\\[\\\\(char \\\\*\\\\)\\\\&a8] = "
+FAIL: gcc.dg/tree-ssa/loop-37.c scan-tree-dump-not optimized "my_array"
+FAIL: gcc.dg/tree-ssa/ssa-dom-cse-5.c scan-tree-dump-times dom2 "return 3;" 1
+FAIL: gcc.dg/tree-ssa/vrp-unreachable-2.c scan-tree-dump-not optimized "foo "
+FAIL: gcc.dg/tree-ssa/vrp88.c scan-tree-dump vrp1 "Folded into: if.*"
+FAIL: gcc.dg/vect/no-vfa-vect-dv-2.c -flto -ffat-lto-objects 
scan-tree-dump-times vect "vectorized 3 loops" 1
+FAIL: gcc.dg/vect/no-vfa-vect-dv-2.c scan-tree-dump-times vect "vectorized 3
loops" 1
+FAIL: gcc.target/i386/part-vect-popcount-1.c scan-assembler-times
vpopcntb[^\\n\\r]*xmm[0-9] 3
+XPASS: gcc.target/i386/pr100637-4w.c scan-assembler pcmpgtw
+FAIL: gcc.target/i386/pr103861-3.c scan-assembler pavgb
+FAIL: gcc.target/i386/pr103941-1.c scan-assembler pavgb
+XPASS: gcc.target/i386/pr98218-3a.c scan-assembler pcmpgtd

so we do quite rely on "optimisting" non-growing estimation.

Reply via email to