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;"