https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102462
--- Comment #6 from Hongtao.liu <crazylht at gmail dot com> ---
Move pass_strlen before loop passes
@@ -261,6 +261,7 @@ along with GCC; see the file COPYING3. If not see
NEXT_PASS (pass_tsan);
NEXT_PASS (pass_dse);
NEXT_PASS (pass_dce);
+ NEXT_PASS (pass_strlen);
/* Pass group that runs when 1) enabled, 2) there are loops
in the function. Make sure to run pass_fix_loops before
to discover/remove loops before running the gate function
@@ -334,7 +335,6 @@ along with GCC; see the file COPYING3. If not see
form if possible. */
NEXT_PASS (pass_thread_jumps);
NEXT_PASS (pass_dominator, false /* may_peel_loop_headers_p */);
- NEXT_PASS (pass_strlen);
NEXT_PASS (pass_thread_jumps);
NEXT_PASS (pass_vrp, false /* warn_array_bounds_p */);
/* Threading can leave many const/copy propagations in the IL.
causes 54 new fails
c-c++-common/Wstringop-overflow.c -Wc++-compat (test for warnings, line 93)
c-c++-common/Wstringop-overflow.c -Wc++-compat (test for warnings, line 94)
c-c++-common/Wstringop-overflow.c -std=gnu++14 (test for warnings, line 93)
c-c++-common/Wstringop-overflow.c -std=gnu++14 (test for warnings, line 94)
c-c++-common/Wstringop-overflow.c -std=gnu++17 (test for warnings, line 93)
c-c++-common/Wstringop-overflow.c -std=gnu++17 (test for warnings, line 94)
c-c++-common/Wstringop-overflow.c -std=gnu++2a (test for warnings, line 93)
c-c++-common/Wstringop-overflow.c -std=gnu++2a (test for warnings, line 94)
c-c++-common/Wstringop-overflow.c -std=gnu++98 (test for warnings, line 93)
c-c++-common/Wstringop-overflow.c -std=gnu++98 (test for warnings, line 94)
g++.dg/tree-ssa/calloc.C -std=gnu++14 scan-tree-dump-not optimized "malloc"
g++.dg/tree-ssa/calloc.C -std=gnu++14 scan-tree-dump-not optimized "memset"
g++.dg/tree-ssa/calloc.C -std=gnu++14 scan-tree-dump-times optimized "calloc"
1
g++.dg/tree-ssa/calloc.C -std=gnu++17 scan-tree-dump-not optimized "malloc"
g++.dg/tree-ssa/calloc.C -std=gnu++17 scan-tree-dump-not optimized "memset"
g++.dg/tree-ssa/calloc.C -std=gnu++17 scan-tree-dump-times optimized "calloc"
1
g++.dg/tree-ssa/calloc.C -std=gnu++2a scan-tree-dump-not optimized "malloc"
g++.dg/tree-ssa/calloc.C -std=gnu++2a scan-tree-dump-not optimized "memset"
g++.dg/tree-ssa/calloc.C -std=gnu++2a scan-tree-dump-times optimized "calloc"
1
g++.dg/tree-ssa/calloc.C -std=gnu++98 scan-tree-dump-not optimized "malloc"
g++.dg/tree-ssa/calloc.C -std=gnu++98 scan-tree-dump-not optimized "memset"
g++.dg/tree-ssa/calloc.C -std=gnu++98 scan-tree-dump-times optimized "calloc"
1
gcc.dg/Wstringop-overflow-17.c (test for warnings, line 16)
gcc.dg/Wstringop-overflow-17.c (test for warnings, line 9)
gcc.dg/Wstringop-overflow-70.c (test for warnings, line 22)
gcc.dg/tree-ssa/pr95731.c scan-tree-dump-times optimized " >= 0| < 0" 6
gcc.dg/tree-ssa/pr96480.c scan-tree-dump optimized " = _[0-9]* <= 3;"
unix/-m32: c-c++-common/Wstringop-overflow.c -Wc++-compat (test for
warnings, line 93)
unix/-m32: c-c++-common/Wstringop-overflow.c -Wc++-compat (test for
warnings, line 94)
unix/-m32: c-c++-common/Wstringop-overflow.c -std=gnu++14 (test for warnings,
line 93)
unix/-m32: c-c++-common/Wstringop-overflow.c -std=gnu++14 (test for warnings,
line 94)
unix/-m32: c-c++-common/Wstringop-overflow.c -std=gnu++17 (test for warnings,
line 93)
unix/-m32: c-c++-common/Wstringop-overflow.c -std=gnu++17 (test for warnings,
line 94)
unix/-m32: c-c++-common/Wstringop-overflow.c -std=gnu++2a (test for warnings,
line 93)
unix/-m32: c-c++-common/Wstringop-overflow.c -std=gnu++2a (test for warnings,
line 94)
unix/-m32: c-c++-common/Wstringop-overflow.c -std=gnu++98 (test for warnings,
line 93)
unix/-m32: c-c++-common/Wstringop-overflow.c -std=gnu++98 (test for warnings,
line 94)
unix/-m32: g++.dg/tree-ssa/calloc.C -std=gnu++14 scan-tree-dump-not optimized
"malloc"
unix/-m32: g++.dg/tree-ssa/calloc.C -std=gnu++14 scan-tree-dump-not optimized
"memset"
unix/-m32: g++.dg/tree-ssa/calloc.C -std=gnu++14 scan-tree-dump-times
optimized "calloc" 1
unix/-m32: g++.dg/tree-ssa/calloc.C -std=gnu++17 scan-tree-dump-not optimized
"malloc"
unix/-m32: g++.dg/tree-ssa/calloc.C -std=gnu++17 scan-tree-dump-not optimized
"memset"
unix/-m32: g++.dg/tree-ssa/calloc.C -std=gnu++17 scan-tree-dump-times
optimized "calloc" 1
unix/-m32: g++.dg/tree-ssa/calloc.C -std=gnu++2a scan-tree-dump-not optimized
"malloc"
unix/-m32: g++.dg/tree-ssa/calloc.C -std=gnu++2a scan-tree-dump-not optimized
"memset"
unix/-m32: g++.dg/tree-ssa/calloc.C -std=gnu++2a scan-tree-dump-times
optimized "calloc" 1
unix/-m32: g++.dg/tree-ssa/calloc.C -std=gnu++98 scan-tree-dump-not optimized
"malloc"
unix/-m32: g++.dg/tree-ssa/calloc.C -std=gnu++98 scan-tree-dump-not optimized
"memset"
unix/-m32: g++.dg/tree-ssa/calloc.C -std=gnu++98 scan-tree-dump-times
optimized "calloc" 1
unix/-m32: gcc.dg/Wstringop-overflow-17.c (test for warnings, line 16)
unix/-m32: gcc.dg/Wstringop-overflow-17.c (test for warnings, line 9)
unix/-m32: gcc.dg/Wstringop-overflow-70.c (test for warnings, line 22)
unix/-m32: gcc.dg/tree-ssa/pr95731.c scan-tree-dump-times optimized " >= 0| <
0" 6
unix/-m32: gcc.dg/tree-ssa/pr96480.c scan-tree-dump optimized " = _[0-9]* <=
3;"