https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107569
--- Comment #47 from Jakub Jelinek <jakub at gcc dot gnu.org> --- I have tested the --- gcc/passes.def.jj 2023-03-22 16:59:45.378390155 +0100 +++ gcc/passes.def 2023-03-22 22:07:35.272803901 +0100 @@ -88,6 +88,7 @@ along with GCC; see the file COPYING3. /* pass_build_ealias is a dummy pass that ensures that we execute TODO_rebuild_alias at this point. */ NEXT_PASS (pass_build_ealias); + NEXT_PASS (pass_dce); NEXT_PASS (pass_fre, true /* may_iterate */); NEXT_PASS (pass_early_vrp); NEXT_PASS (pass_merge_phi); patch and it unfortunately has some regressions on x86_64-linux, haven't verified though what is just that testcases would need to be tweaking and where we actually end up with worse code: UNRESOLVED: gcc.dg/bic-bitmask-13.c scan-tree-dump-not dce7 "&\\\\s* 4294967040" UNRESOLVED: gcc.dg/bic-bitmask-13.c scan-tree-dump-times dce7 "<=\\\\s* 255" 1 UNRESOLVED: gcc.dg/bic-bitmask-14.c scan-tree-dump-not dce7 "&\\\\s* 4294967040" UNRESOLVED: gcc.dg/bic-bitmask-14.c scan-tree-dump-times dce7 "<=\\\\s* 255" 1 UNRESOLVED: gcc.dg/bic-bitmask-15.c scan-tree-dump-not dce7 "&\\\\s* 4294967040" UNRESOLVED: gcc.dg/bic-bitmask-15.c scan-tree-dump-times dce7 "=\\\\s* 1" 1 UNRESOLVED: gcc.dg/bic-bitmask-16.c scan-tree-dump-not dce7 "&\\\\s* 4294967040" UNRESOLVED: gcc.dg/bic-bitmask-16.c scan-tree-dump-times dce7 ">\\\\s* 255" 1 UNRESOLVED: gcc.dg/bic-bitmask-17.c scan-tree-dump-not dce7 "&\\\\s* 4294967040" UNRESOLVED: gcc.dg/bic-bitmask-17.c scan-tree-dump-times dce7 "<=\\\\s* 255" 1 UNRESOLVED: gcc.dg/bic-bitmask-18.c scan-tree-dump-times dce7 " = 0;" 1 UNRESOLVED: gcc.dg/bic-bitmask-19.c scan-tree-dump-not dce7 "&\\\\s* 4294967294" UNRESOLVED: gcc.dg/bic-bitmask-19.c scan-tree-dump-times dce7 ">\\\\s* 1" 1 UNRESOLVED: gcc.dg/bic-bitmask-20.c scan-tree-dump dce7 "&\\\\s* 4294967290" UNRESOLVED: gcc.dg/bic-bitmask-20.c scan-tree-dump-not dce7 "<=\\\\s* 4294967289" UNRESOLVED: gcc.dg/bic-bitmask-21.c scan-tree-dump dce7 "<=\\\\s* 255" UNRESOLVED: gcc.dg/bic-bitmask-21.c scan-tree-dump-not dce7 "&\\\\s* 4294967290" UNRESOLVED: gcc.dg/bic-bitmask-22.c scan-tree-dump dce7 ">\\\\s* 255" UNRESOLVED: gcc.dg/bic-bitmask-22.c scan-tree-dump-not dce7 "&\\\\s* 4294967290" FAIL: gcc.dg/pr23911.c scan-tree-dump-times dce3 "(?n)IMAGPART_EXPR.*= 0\\\\.0" 2 FAIL: gcc.dg/pr23911.c scan-tree-dump-times dce3 "(?n)REALPART_EXPR.*= 1\\\\.0e\\\\+0" 2 FAIL: gcc.dg/guality/pr45003-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 10 a == 0x8078 FAIL: gcc.dg/guality/pr45003-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 19 a == 0xffff8078 FAIL: gcc.dg/guality/pr45003-3.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 10 a == -32648 FAIL: gcc.dg/guality/pr45003-3.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 19 a == 0x8078 UNRESOLVED: gcc.dg/tree-ssa/20030731-2.c scan-tree-dump-times dce2 "if " 1 UNRESOLVED: gcc.dg/tree-ssa/20030808-1.c scan-tree-dump-times dce7 "->code" 0 UNRESOLVED: gcc.dg/tree-ssa/20030808-1.c scan-tree-dump-times dce7 "if " 0 UNRESOLVED: gcc.dg/tree-ssa/20040305-1.c scan-tree-dump-times dce2 "if " 2 FAIL: gcc.dg/tree-ssa/alias-37.c scan-tree-dump dse1 "Deleted dead store" UNRESOLVED: gcc.dg/tree-ssa/cfgcleanup-1.c scan-tree-dump-times dce2 "if " 0 FAIL: gcc.dg/tree-ssa/evrp10.c scan-tree-dump-times evrp "\\\\[-128, 127\\\\]" 9 FAIL: gcc.dg/tree-ssa/evrp6.c scan-tree-dump evrp "\\\\[12, \\\\+INF" UNRESOLVED: gcc.dg/tree-ssa/pr69270-2.c scan-tree-dump-times dce2 "usecount_[0-9]+ = usecount_[0-9]+ . 1;" 0 FAIL: gcc.dg/tree-ssa/pr79697.c scan-tree-dump cddce1 "Deleting : __builtin_strdup" FAIL: gcc.dg/tree-ssa/pr79697.c scan-tree-dump cddce1 "Deleting : __builtin_strndup" FAIL: gcc.dg/tree-ssa/ssa-dse-32.c scan-tree-dump-times dse1 "Deleted dead store" 1 UNRESOLVED: gcc.dg/vect/pr26359.c -flto -ffat-lto-objects scan-tree-dump-times dce6 "Deleting : vect_" 0 UNRESOLVED: gcc.dg/vect/pr26359.c scan-tree-dump-times dce6 "Deleting : vect_" 0 UNRESOLVED: gcc.dg/vect/vect-bic-bitmask-23.c -flto -ffat-lto-objects scan-tree-dump dce7 "<=\\\\s*.+{ 255, 15, 1, 65535 }" UNRESOLVED: gcc.dg/vect/vect-bic-bitmask-23.c scan-tree-dump dce7 "<=\\\\s*.+{ 255, 15, 1, 65535 }" FAIL: g++.dg/cpp1y/new1.C -std=gnu++11 scan-tree-dump-times cddce1 "Deleting : _\\\\d+ = operator new" 8 FAIL: g++.dg/cpp1y/new1.C -std=gnu++14 scan-tree-dump-times cddce1 "Deleting : _\\\\d+ = operator new" 8 FAIL: g++.dg/cpp1y/new1.C -std=gnu++17 scan-tree-dump-times cddce1 "Deleting : _\\\\d+ = operator new" 8 FAIL: g++.dg/cpp1y/new1.C -std=gnu++20 scan-tree-dump-times cddce1 "Deleting : _\\\\d+ = operator new" 8 FAIL: g++.dg/cpp1y/new1.C -std=gnu++2b scan-tree-dump-times cddce1 "Deleting : _\\\\d+ = operator new" 8 FAIL: g++.dg/cpp1y/new1.C -std=gnu++98 scan-tree-dump-times cddce1 "Deleting : _\\\\d+ = operator new" 8 FAIL: g++.dg/pr94314-2.C -std=gnu++11 scan-tree-dump-times cddce1 "Deleting : operator delete" 2 FAIL: g++.dg/pr94314-2.C -std=gnu++14 scan-tree-dump-times cddce1 "Deleting : operator delete" 2 FAIL: g++.dg/pr94314-2.C -std=gnu++17 scan-tree-dump-times cddce1 "Deleting : operator delete" 2 FAIL: g++.dg/pr94314-2.C -std=gnu++20 scan-tree-dump-times cddce1 "Deleting : operator delete" 2 FAIL: g++.dg/pr94314-2.C -std=gnu++2b scan-tree-dump-times cddce1 "Deleting : operator delete" 2 FAIL: g++.dg/pr94314-2.C -std=gnu++98 scan-tree-dump-times cddce1 "Deleting : operator delete" 2 FAIL: g++.dg/warn/Wmismatched-new-delete-5.C -std=gnu++11 (test for warnings, line 36) FAIL: g++.dg/warn/Wmismatched-new-delete-5.C -std=gnu++14 (test for warnings, line 36) FAIL: g++.dg/warn/Wmismatched-new-delete-5.C -std=gnu++17 (test for warnings, line 36) FAIL: g++.dg/warn/Wmismatched-new-delete-5.C -std=gnu++20 (test for warnings, line 36) FAIL: g++.dg/warn/Wmismatched-new-delete-5.C -std=gnu++2b (test for warnings, line 36) FAIL: g++.dg/warn/Wmismatched-new-delete-5.C -std=gnu++98 (test for warnings, line 36) The UNRESOLVED ones likely just need to replace dce7 with dce8.