Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2226782/?format=api
{ "id": 2226782, "url": "http://patchwork.ozlabs.org/api/patches/2226782/?format=api", "web_url": "http://patchwork.ozlabs.org/project/gcc/patch/bmm.hhup4p5wp2.gcc.gcc-TEST.pinskia.84.1.10@forge-stage.sourceware.org/", "project": { "id": 17, "url": "http://patchwork.ozlabs.org/api/projects/17/?format=api", "name": "GNU Compiler Collection", "link_name": "gcc", "list_id": "gcc-patches.gcc.gnu.org", "list_email": "gcc-patches@gcc.gnu.org", "web_url": null, "scm_url": null, "webscm_url": null, "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<bmm.hhup4p5wp2.gcc.gcc-TEST.pinskia.84.1.10@forge-stage.sourceware.org>", "list_archive_url": null, "date": "2026-04-22T18:49:18", "name": "[v1,10/10] Remove fold_builtin pass [PR121762]", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "a193eec01a72c8e3691e72d361746b4021ae43e1", "submitter": { "id": 93219, "url": "http://patchwork.ozlabs.org/api/people/93219/?format=api", "name": "Andrew Pinski via Sourceware Forge", "email": "forge-bot+pinskia@forge-stage.sourceware.org" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/gcc/patch/bmm.hhup4p5wp2.gcc.gcc-TEST.pinskia.84.1.10@forge-stage.sourceware.org/mbox/", "series": [ { "id": 501092, "url": "http://patchwork.ozlabs.org/api/series/501092/?format=api", "web_url": "http://patchwork.ozlabs.org/project/gcc/list/?series=501092", "date": "2026-04-22T18:49:11", "name": "remove_fab", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/501092/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2226782/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2226782/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "gcc-patches@gcc.gnu.org" ], "Delivered-To": [ "patchwork-incoming@legolas.ozlabs.org", "gcc-patches@gcc.gnu.org" ], "Authentication-Results": [ "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=2620:52:6:3111::32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)", "sourceware.org; dmarc=none (p=none dis=none)\n header.from=forge-stage.sourceware.org", "sourceware.org;\n spf=pass smtp.mailfrom=forge-stage.sourceware.org", "server2.sourceware.org;\n arc=none smtp.remote-ip=38.145.34.39" ], "Received": [ "from vm01.sourceware.org (vm01.sourceware.org\n [IPv6:2620:52:6:3111::32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g18gN0kvcz1y2d\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 23 Apr 2026 05:39:28 +1000 (AEST)", "from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 3696E436758F\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 22 Apr 2026 19:39:26 +0000 (GMT)", "from forge-stage.sourceware.org (vm08.sourceware.org [38.145.34.39])\n by sourceware.org (Postfix) with ESMTPS id AEA1640AB6A3\n for <gcc-patches@gcc.gnu.org>; Wed, 22 Apr 2026 18:50:43 +0000 (GMT)", "from forge-stage.sourceware.org (localhost [IPv6:::1])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256)\n (No client certificate requested)\n by forge-stage.sourceware.org (Postfix) with ESMTPS id 0A0EC43599\n for <gcc-patches@gcc.gnu.org>; Wed, 22 Apr 2026 18:50:42 +0000 (UTC)" ], "DKIM-Filter": [ "OpenDKIM Filter v2.11.0 sourceware.org 3696E436758F", "OpenDKIM Filter v2.11.0 sourceware.org AEA1640AB6A3" ], "DMARC-Filter": "OpenDMARC Filter v1.4.2 sourceware.org AEA1640AB6A3", "ARC-Filter": "OpenARC Filter v1.0.0 sourceware.org AEA1640AB6A3", "ARC-Seal": "i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776883843; cv=none;\n b=Q4fBSyClkkdE3HWuu3sl2HNC2bmcgDskpclPYduP6J6FmRZnPQ1VVmyZIsIRAotcSNbFJRwBb54QLhD1bX51r/2zbqXMBvcT3rzjN4WYuoxfKC/t7gjzbQFW0ixMmkL4lPSUzLzL7yh49pkewtFGqokBjVFoUF2ToZ695G0DtL0=", "ARC-Message-Signature": "i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1776883843; c=relaxed/simple;\n bh=XiCM1Hf7DR13oqGb/nIWFYdlU3dJoNgrYog6vAlrTyY=;\n h=From:Date:Subject:To:Message-ID;\n b=GENB+bYxI1J30FimvrTCtx7gr2BMoM5vCb1rz5U4HuI2DRbkBPmfj6gUQ4tq0anCmhb0/a/NzVHosYKCobJitFTPw14eTXlONI2x0gSDGwdmgYYfV5OdecSTIUbSZqlS7iGnYp/X/eEYr8DIvftVHHHRTqj0mIv7kZDKu7PJ+CY=", "ARC-Authentication-Results": "i=1; server2.sourceware.org", "From": "Andrew Pinski via Sourceware Forge\n <forge-bot+pinskia@forge-stage.sourceware.org>", "Date": "Wed, 22 Apr 2026 18:49:18 +0000", "Subject": "[PATCH v1 10/10] Remove fold_builtin pass [PR121762]", "To": "gcc-patches mailing list <gcc-patches@gcc.gnu.org>", "Message-ID": "\n <bmm.hhup4p5wp2.gcc.gcc-TEST.pinskia.84.1.10@forge-stage.sourceware.org>", "X-Mailer": "batrachomyomachia", "X-Pull-Request-Organization": "gcc", "X-Pull-Request-Repository": "gcc-TEST", "X-Pull-Request": "https://forge.sourceware.org/gcc/gcc-TEST/pulls/84", "References": "\n <bmm.hhup4p5wp2.gcc.gcc-TEST.pinskia.84.1.0@forge-stage.sourceware.org>", "In-Reply-To": "\n <bmm.hhup4p5wp2.gcc.gcc-TEST.pinskia.84.1.0@forge-stage.sourceware.org>", "X-Patch-URL": "\n https://forge.sourceware.org/pinskia/gcc-TEST/commit/54194efe9062df3e7a0cd7c3c08dca0cad5f3f0a", "X-BeenThere": "gcc-patches@gcc.gnu.org", "X-Mailman-Version": "2.1.30", "Precedence": "list", "List-Id": "Gcc-patches mailing list <gcc-patches.gcc.gnu.org>", "List-Unsubscribe": "<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>", "List-Archive": "<https://gcc.gnu.org/pipermail/gcc-patches/>", "List-Post": "<mailto:gcc-patches@gcc.gnu.org>", "List-Help": "<mailto:gcc-patches-request@gcc.gnu.org?subject=help>", "List-Subscribe": "<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>", "Reply-To": "gcc-patches mailing list <gcc-patches@gcc.gnu.org>,\n pinskia@gcc.gnu.org", "Errors-To": "gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org" }, "content": "From: Andrew Pinski <andrew.pinski@oss.qualcomm.com>\n\nAfter moving the last optimization out of fab, we can\nfinally remove this pass.\nFor -Og, we remove this pass and also swaps out the copy_prop\nfor a forwprop (which does an integrated copy prop too).\n\nA few testcases needed to be updated.\nMost is just s/fab1/optimized/ except for pr79691.c which\nneeded a slight change in the scaning of the optimized dump;\nto find `return 9;` instead of `= 9;`.\n\nBootstrappd and tested on x86_64-linux-gnu.\n\n\tPR tree-optimization/121762\ngcc/ChangeLog:\n\n\t* passes.def: Remove both pass_fold_builtin.\n\tSwap out pass_copy_prop for pass_forwprop with\n\tfull_walk = false and last=true.\n\t* tree-pass.h (make_pass_fold_builtins): Remove.\n\t* tree-ssa-ccp.cc (class pass_fold_builtins): Delete.\n\t(pass_fold_builtins::execute): Delete.\n\t(make_pass_fold_builtins): Remove.\n\t* doc/passes.texi (Folding built-in functions): Remove.\n\ngcc/testsuite/ChangeLog:\n\n\t* gcc.dg/tree-ssa/builtin-fprintf-1.c: Update to scan optimized.\n\t* gcc.dg/tree-ssa/builtin-fprintf-chk-1.c: Likewise.\n\t* gcc.dg/tree-ssa/builtin-printf-1.c: Likewise.\n\t* gcc.dg/tree-ssa/builtin-printf-chk-1.c: Likewise.\n\t* gcc.dg/tree-ssa/builtin-vfprintf-1.c: Likewise.\n\t* gcc.dg/tree-ssa/builtin-vfprintf-chk-1.c: Likewise.\n\t* gcc.dg/tree-ssa/builtin-vprintf-1.c: Likewise.\n\t* gcc.dg/tree-ssa/builtin-vprintf-chk-1.c: Likewise.\n\t* gcc.dg/tree-ssa/ssa-ccp-10.c: Likewise.\n\t* gcc.dg/builtin-unreachable-5.c: Likewise.\n\t* gcc.dg/builtin-unreachable-6.c: Likewise.\n\t* gcc.dg/builtin-unreachable-6a.c: Likewise.\n\t* gcc.dg/builtin-unreachable-7.c: Likewise.\n\t* gcc.dg/pr78408-2.c: Change fab1 to forwprop1 as that\n\toptimization was moved there a while back.\n\t* gcc.dg/tree-ssa/pr79691.c: Udpate scanning for 9\n\tconstant to return.\n\nSigned-off-by: Andrew Pinski <andrew.pinski@oss.qualcomm.com>\n---\n gcc/doc/passes.texi | 6 -\n gcc/passes.def | 8 +-\n gcc/testsuite/gcc.dg/builtin-unreachable-5.c | 10 +-\n gcc/testsuite/gcc.dg/builtin-unreachable-6.c | 6 +-\n gcc/testsuite/gcc.dg/builtin-unreachable-6a.c | 6 +-\n gcc/testsuite/gcc.dg/builtin-unreachable-7.c | 8 +-\n gcc/testsuite/gcc.dg/pr78408-2.c | 4 +-\n .../gcc.dg/tree-ssa/builtin-fprintf-1.c | 20 ++--\n .../gcc.dg/tree-ssa/builtin-fprintf-chk-1.c | 20 ++--\n .../gcc.dg/tree-ssa/builtin-printf-1.c | 22 ++--\n .../gcc.dg/tree-ssa/builtin-printf-chk-1.c | 22 ++--\n .../gcc.dg/tree-ssa/builtin-vfprintf-1.c | 16 +--\n .../gcc.dg/tree-ssa/builtin-vfprintf-chk-1.c | 16 +--\n .../gcc.dg/tree-ssa/builtin-vprintf-1.c | 16 +--\n .../gcc.dg/tree-ssa/builtin-vprintf-chk-1.c | 16 +--\n gcc/testsuite/gcc.dg/tree-ssa/pr79691.c | 2 +-\n gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-10.c | 4 +-\n gcc/tree-pass.h | 1 -\n gcc/tree-ssa-ccp.cc | 108 ------------------\n 19 files changed, 96 insertions(+), 215 deletions(-)", "diff": "diff --git a/gcc/doc/passes.texi b/gcc/doc/passes.texi\nindex 282fc1a6a12b..f6db15d5a5fc 100644\n--- a/gcc/doc/passes.texi\n+++ b/gcc/doc/passes.texi\n@@ -735,12 +735,6 @@ cannot be used for branch prediction (though adapting it would\n not be difficult). The pass is located in @file{tree-vrp.cc} and is\n described by @code{pass_vrp}.\n \n-@item Folding built-in functions\n-\n-This pass simplifies built-in functions, as applicable, with constant\n-arguments or with inferable string lengths. It is located in\n-@file{tree-ssa-ccp.cc} and is described by @code{pass_fold_builtins}.\n-\n @item Split critical edges\n \n This pass identifies critical edges and inserts empty basic blocks\ndiff --git a/gcc/passes.def b/gcc/passes.def\nindex 3f828477b687..fac04cd86c7d 100644\n--- a/gcc/passes.def\n+++ b/gcc/passes.def\n@@ -369,7 +369,6 @@ along with GCC; see the file COPYING3. If not see\n NEXT_PASS (pass_forwprop, /*full_walk=*/false, /*last=*/true);\n NEXT_PASS (pass_sink_code, true /* unsplit edges */);\n NEXT_PASS (pass_phiopt, false /* early_p */);\n- NEXT_PASS (pass_fold_builtins);\n NEXT_PASS (pass_optimize_widening_mul);\n NEXT_PASS (pass_store_merging);\n /* If DCE is not run before checking for uninitialized uses,\n@@ -405,12 +404,9 @@ along with GCC; see the file COPYING3. If not see\n NEXT_PASS (pass_ccp, true /* nonzero_p */);\n NEXT_PASS (pass_post_ipa_warn);\n NEXT_PASS (pass_object_sizes);\n- /* Fold remaining builtins. */\n- NEXT_PASS (pass_fold_builtins);\n NEXT_PASS (pass_strlen);\n- /* Copy propagation also copy-propagates constants, this is necessary\n- to forward object-size and builtin folding results properly. */\n- NEXT_PASS (pass_copy_prop);\n+ /* Fold remaining builtins. */\n+ NEXT_PASS (pass_forwprop, /*full_walk=*/false, /*last=*/true);\n NEXT_PASS (pass_dce);\n /* Profile count may overflow as a result of inlinining very large\n loop nests. This pass should run before any late pass that makes\ndiff --git a/gcc/testsuite/gcc.dg/builtin-unreachable-5.c b/gcc/testsuite/gcc.dg/builtin-unreachable-5.c\nindex ba87bdd735e2..91e6dcc3db13 100644\n--- a/gcc/testsuite/gcc.dg/builtin-unreachable-5.c\n+++ b/gcc/testsuite/gcc.dg/builtin-unreachable-5.c\n@@ -1,5 +1,5 @@\n /* { dg-do compile } */\n-/* { dg-options \"-O2 -fdump-tree-fab1\" } */\n+/* { dg-options \"-O2 -fdump-tree-optimized\" } */\n \n int\n foo (int a)\n@@ -16,7 +16,7 @@ foo (int a)\n return a > 0;\n }\n \n-/* { dg-final { scan-tree-dump-times \"if \\\\(\" 0 \"fab1\" } } */\n-/* { dg-final { scan-tree-dump-times \"goto\" 0 \"fab1\" } } */\n-/* { dg-final { scan-tree-dump-times \"L1:\" 0 \"fab1\" } } */\n-/* { dg-final { scan-tree-dump-times \"__builtin_unreachable\" 0 \"fab1\" } } */\n+/* { dg-final { scan-tree-dump-times \"if \\\\(\" 0 \"optimized\" } } */\n+/* { dg-final { scan-tree-dump-times \"goto\" 0 \"optimized\" } } */\n+/* { dg-final { scan-tree-dump-times \"L1:\" 0 \"optimized\" } } */\n+/* { dg-final { scan-tree-dump-times \"__builtin_unreachable\" 0 \"optimized\" } } */\ndiff --git a/gcc/testsuite/gcc.dg/builtin-unreachable-6.c b/gcc/testsuite/gcc.dg/builtin-unreachable-6.c\nindex 4c3b9bbaefd0..c896ad4e39ce 100644\n--- a/gcc/testsuite/gcc.dg/builtin-unreachable-6.c\n+++ b/gcc/testsuite/gcc.dg/builtin-unreachable-6.c\n@@ -1,5 +1,5 @@\n /* { dg-do compile } */\n-/* { dg-options \"-O2 -fdump-tree-fab1 -fno-tree-dominator-opts -fno-tree-vrp\" } */\n+/* { dg-options \"-O2 -fdump-tree-optimized -fno-tree-dominator-opts -fno-tree-vrp\" } */\n /* { dg-require-effective-target label_values } */\n \n void\n@@ -17,5 +17,5 @@ lab2:\n goto *x;\n }\n \n-/* { dg-final { scan-tree-dump-times \"lab:\" 1 \"fab1\" } } */\n-/* { dg-final { scan-tree-dump-times \"__builtin_unreachable\" 1 \"fab1\" } } */\n+/* { dg-final { scan-tree-dump-times \"lab:\" 1 \"optimized\" } } */\n+/* { dg-final { scan-tree-dump-times \"__builtin_unreachable\" 1 \"optimized\" } } */\ndiff --git a/gcc/testsuite/gcc.dg/builtin-unreachable-6a.c b/gcc/testsuite/gcc.dg/builtin-unreachable-6a.c\nindex f527f2edc3b2..53062352d420 100644\n--- a/gcc/testsuite/gcc.dg/builtin-unreachable-6a.c\n+++ b/gcc/testsuite/gcc.dg/builtin-unreachable-6a.c\n@@ -1,7 +1,7 @@\n /* { dg-do compile } */\n-/* { dg-options \"-O2 -fdump-tree-fab1\" } */\n+/* { dg-options \"-O2 -fdump-tree-optimized\" } */\n \n #include \"builtin-unreachable-6.c\"\n \n-/* { dg-final { scan-tree-dump-times \"lab:\" 1 \"fab1\" } } */\n-/* { dg-final { scan-tree-dump-not \"__builtin_unreachable\" \"fab1\" } } */\n+/* { dg-final { scan-tree-dump-times \"lab:\" 1 \"optimized\" } } */\n+/* { dg-final { scan-tree-dump-not \"__builtin_unreachable\" \"optimized\" } } */\ndiff --git a/gcc/testsuite/gcc.dg/builtin-unreachable-7.c b/gcc/testsuite/gcc.dg/builtin-unreachable-7.c\nindex a6c078fef285..0ff60b6550be 100644\n--- a/gcc/testsuite/gcc.dg/builtin-unreachable-7.c\n+++ b/gcc/testsuite/gcc.dg/builtin-unreachable-7.c\n@@ -1,5 +1,5 @@\n /* { dg-do compile } */\n-/* { dg-options \"-O2 -fdump-tree-fab1 -fno-tree-dominator-opts -fno-tree-vrp\" } */\n+/* { dg-options \"-O2 -fdump-tree-optimized -fno-tree-dominator-opts -fno-tree-vrp\" } */\n /* { dg-require-effective-target label_values } */\n \n void foo (int b, int c)\n@@ -18,7 +18,7 @@ lab2:\n \n /* Fab should still able to remove the conditional but leave the bb there. */\n \n-/* { dg-final { scan-tree-dump-times \"lab:\" 1 \"fab1\" } } */\n-/* { dg-final { scan-tree-dump-times \"__builtin_unreachable\" 1 \"fab1\" } } */\n-/* { dg-final { scan-tree-dump-not \"if \" \"fab1\" } } */\n+/* { dg-final { scan-tree-dump-times \"lab:\" 1 \"optimized\" } } */\n+/* { dg-final { scan-tree-dump-times \"__builtin_unreachable\" 1 \"optimized\" } } */\n+/* { dg-final { scan-tree-dump-not \"if \" \"optimized\" } } */\n \ndiff --git a/gcc/testsuite/gcc.dg/pr78408-2.c b/gcc/testsuite/gcc.dg/pr78408-2.c\nindex 89c9b7eae435..cad1285f70e4 100644\n--- a/gcc/testsuite/gcc.dg/pr78408-2.c\n+++ b/gcc/testsuite/gcc.dg/pr78408-2.c\n@@ -1,7 +1,7 @@\n /* PR c/78408 */\n /* { dg-do compile { target size32plus } } */\n-/* { dg-options \"-O2 -fdump-tree-fab1-details\" } */\n-/* { dg-final { scan-tree-dump-not \"after previous\" \"fab1\" } } */\n+/* { dg-options \"-O2 -fdump-tree-forwprop1-details\" } */\n+/* { dg-final { scan-tree-dump-not \"after previous\" \"forwprop1\" } } */\n \n struct S { char a[32]; };\n struct T { char a[65536]; };\ndiff --git a/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-1.c b/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-1.c\nindex 9e4501490dbb..31d7f70e4418 100644\n--- a/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-1.c\n+++ b/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-1.c\n@@ -1,5 +1,5 @@\n /* { dg-do compile } */\n-/* { dg-options \"-O2 -fdump-tree-fab1\" } */\n+/* { dg-options \"-O2 -fdump-tree-optimized\" } */\n \n typedef struct { int i; } FILE;\n FILE *fp;\n@@ -29,12 +29,12 @@ void test (void)\n vi9 = 0;\n }\n \n-/* { dg-final { scan-tree-dump \"vi0.*fwrite.*\\\"hello\\\".*1, 5, fp.*vi1\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi1.*fwrite.*\\\"hello\\\\\\\\n\\\".*1, 6, fp.*vi2\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi2.*fputc.*fp.*vi3\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi3 ={v} 0\\[^\\(\\)\\]*vi4 ={v} 0\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi4.*fwrite.*\\\"hello\\\".*1, 5, fp.*vi5\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi5.*fwrite.*\\\"hello\\\\\\\\n\\\".*1, 6, fp.*vi6\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi6.*fputc.*fp.*vi7\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi7.*fputc.*fp.*vi8\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi8.*fprintf.*fp.*\\\"%d%d\\\".*vi9\" \"fab1\"} } */\n+/* { dg-final { scan-tree-dump \"vi0.*fwrite.*\\\"hello\\\".*1, 5, fp.*vi1\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi1.*fwrite.*\\\"hello\\\\\\\\n\\\".*1, 6, fp.*vi2\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi2.*fputc.*fp.*vi3\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi3 ={v} 0\\[^\\(\\)\\]*vi4 ={v} 0\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi4.*fwrite.*\\\"hello\\\".*1, 5, fp.*vi5\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi5.*fwrite.*\\\"hello\\\\\\\\n\\\".*1, 6, fp.*vi6\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi6.*fputc.*fp.*vi7\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi7.*fputc.*fp.*vi8\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi8.*fprintf.*fp.*\\\"%d%d\\\".*vi9\" \"optimized\"} } */\ndiff --git a/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-chk-1.c b/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-chk-1.c\nindex f3de73acd86c..f4f18e8bebbf 100644\n--- a/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-chk-1.c\n+++ b/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-chk-1.c\n@@ -1,5 +1,5 @@\n /* { dg-do compile } */\n-/* { dg-options \"-O2 -fdump-tree-fab1\" } */\n+/* { dg-options \"-O2 -fdump-tree-optimized\" } */\n \n typedef struct { int i; } FILE;\n FILE *fp;\n@@ -29,12 +29,12 @@ void test (void)\n vi9 = 0;\n }\n \n-/* { dg-final { scan-tree-dump \"vi0.*fwrite.*\\\"hello\\\".*1, 5, fp.*vi1\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi1.*fwrite.*\\\"hello\\\\\\\\n\\\".*1, 6, fp.*vi2\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi2.*fputc.*fp.*vi3\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi3 ={v} 0\\[^\\(\\)\\]*vi4 ={v} 0\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi4.*fwrite.*\\\"hello\\\".*1, 5, fp.*vi5\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi5.*fwrite.*\\\"hello\\\\\\\\n\\\".*1, 6, fp.*vi6\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi6.*fputc.*fp.*vi7\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi7.*fputc.*fp.*vi8\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi8.*__fprintf_chk.*fp.*1.*\\\"%d%d\\\".*vi9\" \"fab1\"} } */\n+/* { dg-final { scan-tree-dump \"vi0.*fwrite.*\\\"hello\\\".*1, 5, fp.*vi1\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi1.*fwrite.*\\\"hello\\\\\\\\n\\\".*1, 6, fp.*vi2\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi2.*fputc.*fp.*vi3\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi3 ={v} 0\\[^\\(\\)\\]*vi4 ={v} 0\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi4.*fwrite.*\\\"hello\\\".*1, 5, fp.*vi5\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi5.*fwrite.*\\\"hello\\\\\\\\n\\\".*1, 6, fp.*vi6\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi6.*fputc.*fp.*vi7\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi7.*fputc.*fp.*vi8\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi8.*__fprintf_chk.*fp.*1.*\\\"%d%d\\\".*vi9\" \"optimized\"} } */\ndiff --git a/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-1.c b/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-1.c\nindex bd119e0e55bd..056edea65d2d 100644\n--- a/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-1.c\n+++ b/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-1.c\n@@ -1,5 +1,5 @@\n /* { dg-do compile } */\n-/* { dg-options \"-O2 -fdump-tree-fab1\" } */\n+/* { dg-options \"-O2 -fdump-tree-optimized\" } */\n \n extern int printf (const char *, ...);\n volatile int vi0, vi1, vi2, vi3, vi4, vi5, vi6, vi7, vi8, vi9, via;\n@@ -29,13 +29,13 @@ void test (void)\n via = 0;\n }\n \n-/* { dg-final { scan-tree-dump \"vi0.*printf.*\\\"hello\\\".*vi1\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi1.*puts.*\\\"hello\\\".*vi2\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi2.*putchar.*vi3\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi3 ={v} 0\\[^\\(\\)\\]*vi4 ={v} 0\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi4.*printf.*\\\"hello\\\".*vi5\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi5.*puts.*\\\"hello\\\".*vi6\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi6.*putchar.*vi7\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi7 ={v} 0\\[^\\(\\)\\]*vi8 ={v} 0\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi8.*putchar.*vi9\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi9.*puts.*\\\"hello\\\\\\\\n\\\".*via\" \"fab1\"} } */\n+/* { dg-final { scan-tree-dump \"vi0.*printf.*\\\"hello\\\".*vi1\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi1.*puts.*\\\"hello\\\".*vi2\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi2.*putchar.*vi3\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi3 ={v} 0\\[^\\(\\)\\]*vi4 ={v} 0\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi4.*printf.*\\\"hello\\\".*vi5\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi5.*puts.*\\\"hello\\\".*vi6\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi6.*putchar.*vi7\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi7 ={v} 0\\[^\\(\\)\\]*vi8 ={v} 0\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi8.*putchar.*vi9\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi9.*puts.*\\\"hello\\\\\\\\n\\\".*via\" \"optimized\"} } */\ndiff --git a/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-chk-1.c b/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-chk-1.c\nindex a0c0ef946f38..1a9690fde125 100644\n--- a/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-chk-1.c\n+++ b/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-chk-1.c\n@@ -1,5 +1,5 @@\n /* { dg-do compile } */\n-/* { dg-options \"-O2 -fdump-tree-fab1\" } */\n+/* { dg-options \"-O2 -fdump-tree-optimized\" } */\n \n extern int __printf_chk (int, const char *, ...);\n volatile int vi0, vi1, vi2, vi3, vi4, vi5, vi6, vi7, vi8, vi9, via;\n@@ -29,13 +29,13 @@ void test (void)\n via = 0;\n }\n \n-/* { dg-final { scan-tree-dump \"vi0.*__printf_chk.*1.*\\\"hello\\\".*vi1\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi1.*puts.*\\\"hello\\\".*vi2\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi2.*putchar.*vi3\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi3 ={v} 0\\[^\\(\\)\\]*vi4 ={v} 0\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi4.*__printf_chk.*1.*\\\"hello\\\".*vi5\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi5.*puts.*\\\"hello\\\".*vi6\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi6.*putchar.*vi7\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi7 ={v} 0\\[^\\(\\)\\]*vi8 ={v} 0\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi8.*putchar.*vi9\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi9.*puts.*\\\"hello\\\\\\\\n\\\".*via\" \"fab1\"} } */\n+/* { dg-final { scan-tree-dump \"vi0.*__printf_chk.*1.*\\\"hello\\\".*vi1\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi1.*puts.*\\\"hello\\\".*vi2\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi2.*putchar.*vi3\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi3 ={v} 0\\[^\\(\\)\\]*vi4 ={v} 0\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi4.*__printf_chk.*1.*\\\"hello\\\".*vi5\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi5.*puts.*\\\"hello\\\".*vi6\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi6.*putchar.*vi7\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi7 ={v} 0\\[^\\(\\)\\]*vi8 ={v} 0\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi8.*putchar.*vi9\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi9.*puts.*\\\"hello\\\\\\\\n\\\".*via\" \"optimized\"} } */\ndiff --git a/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-1.c b/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-1.c\nindex 29b4a4b4ebe7..3124309198c6 100644\n--- a/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-1.c\n+++ b/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-1.c\n@@ -1,5 +1,5 @@\n /* { dg-do compile } */\n-/* { dg-options \"-O2 -fdump-tree-fab1\" } */\n+/* { dg-options \"-O2 -fdump-tree-optimized\" } */\n \n #include <stdarg.h>\n \n@@ -29,10 +29,10 @@ test (va_list ap1, va_list ap2, va_list ap3, va_list ap4, va_list ap5,\n vi7 = 0;\n }\n \n-/* { dg-final { scan-tree-dump \"vi0.*fwrite.*\\\"hello\\\".*1, 5, fp.*vi1\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi1.*fwrite.*\\\"hello\\\\\\\\n\\\".*1, 6, fp.*vi2\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi2.*fputc.*fp.*vi3\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi3 ={v} 0\\[^\\(\\)\\]*vi4 ={v} 0\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi4.*vfprintf.*\\\"%s\\\".*vi5\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi5.*vfprintf.*\\\"%c\\\".*vi6\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi6.*vfprintf.*\\\"%s\\\\\\\\n\\\".*vi7\" \"fab1\"} } */\n+/* { dg-final { scan-tree-dump \"vi0.*fwrite.*\\\"hello\\\".*1, 5, fp.*vi1\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi1.*fwrite.*\\\"hello\\\\\\\\n\\\".*1, 6, fp.*vi2\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi2.*fputc.*fp.*vi3\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi3 ={v} 0\\[^\\(\\)\\]*vi4 ={v} 0\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi4.*vfprintf.*\\\"%s\\\".*vi5\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi5.*vfprintf.*\\\"%c\\\".*vi6\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi6.*vfprintf.*\\\"%s\\\\\\\\n\\\".*vi7\" \"optimized\"} } */\ndiff --git a/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-chk-1.c b/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-chk-1.c\nindex c91c70921b50..15ee7f979526 100644\n--- a/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-chk-1.c\n+++ b/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-chk-1.c\n@@ -1,5 +1,5 @@\n /* { dg-do compile } */\n-/* { dg-options \"-O2 -fdump-tree-fab1\" } */\n+/* { dg-options \"-O2 -fdump-tree-optimized\" } */\n \n #include <stdarg.h>\n \n@@ -29,10 +29,10 @@ test (va_list ap1, va_list ap2, va_list ap3, va_list ap4, va_list ap5,\n vi7 = 0;\n }\n \n-/* { dg-final { scan-tree-dump \"vi0.*fwrite.*\\\"hello\\\".*1, 5, fp.*vi1\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi1.*fwrite.*\\\"hello\\\\\\\\n\\\".*1, 6, fp.*vi2\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi2.*fputc.*fp.*vi3\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi3 ={v} 0\\[^\\(\\)\\]*vi4 ={v} 0\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi4.*__vfprintf_chk.*fp.*1.*\\\"%s\\\".*vi5\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi5.*__vfprintf_chk.*fp.*1.*\\\"%c\\\".*vi6\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi6.*__vfprintf_chk.*fp.*1.*\\\"%s\\\\\\\\n\\\".*vi7\" \"fab1\"} } */\n+/* { dg-final { scan-tree-dump \"vi0.*fwrite.*\\\"hello\\\".*1, 5, fp.*vi1\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi1.*fwrite.*\\\"hello\\\\\\\\n\\\".*1, 6, fp.*vi2\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi2.*fputc.*fp.*vi3\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi3 ={v} 0\\[^\\(\\)\\]*vi4 ={v} 0\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi4.*__vfprintf_chk.*fp.*1.*\\\"%s\\\".*vi5\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi5.*__vfprintf_chk.*fp.*1.*\\\"%c\\\".*vi6\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi6.*__vfprintf_chk.*fp.*1.*\\\"%s\\\\\\\\n\\\".*vi7\" \"optimized\"} } */\ndiff --git a/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-1.c b/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-1.c\nindex 023384a3b819..ed7a4ae05592 100644\n--- a/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-1.c\n+++ b/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-1.c\n@@ -1,5 +1,5 @@\n /* { dg-do compile } */\n-/* { dg-options \"-O2 -fdump-tree-fab1\" } */\n+/* { dg-options \"-O2 -fdump-tree-optimized\" } */\n \n #include <stdarg.h>\n \n@@ -27,10 +27,10 @@ test (va_list ap1, va_list ap2, va_list ap3, va_list ap4, va_list ap5,\n vi7 = 0;\n }\n \n-/* { dg-final { scan-tree-dump \"vi0.*vprintf.*\\\"hello\\\".*vi1\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi1.*puts.*\\\"hello\\\".*vi2\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi2.*putchar.*vi3\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi3 ={v} 0\\[^\\(\\)\\]*vi4 ={v} 0\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi4.*vprintf.*\\\"%s\\\".*vi5\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi5.*vprintf.*\\\"%c\\\".*vi6\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi6.*vprintf.*\\\"%s\\\\\\\\n\\\".*vi7\" \"fab1\"} } */\n+/* { dg-final { scan-tree-dump \"vi0.*vprintf.*\\\"hello\\\".*vi1\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi1.*puts.*\\\"hello\\\".*vi2\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi2.*putchar.*vi3\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi3 ={v} 0\\[^\\(\\)\\]*vi4 ={v} 0\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi4.*vprintf.*\\\"%s\\\".*vi5\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi5.*vprintf.*\\\"%c\\\".*vi6\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi6.*vprintf.*\\\"%s\\\\\\\\n\\\".*vi7\" \"optimized\"} } */\ndiff --git a/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-chk-1.c b/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-chk-1.c\nindex 2b21f7b70e22..b86fe33f0edd 100644\n--- a/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-chk-1.c\n+++ b/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-chk-1.c\n@@ -1,5 +1,5 @@\n /* { dg-do compile } */\n-/* { dg-options \"-O2 -fdump-tree-fab1\" } */\n+/* { dg-options \"-O2 -fdump-tree-optimized\" } */\n \n #include <stdarg.h>\n \n@@ -27,10 +27,10 @@ test (va_list ap1, va_list ap2, va_list ap3, va_list ap4, va_list ap5,\n vi7 = 0;\n }\n \n-/* { dg-final { scan-tree-dump \"vi0.*__vprintf_chk.*1.*\\\"hello\\\".*vi1\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi1.*puts.*\\\"hello\\\".*vi2\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi2.*putchar.*vi3\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi3 ={v} 0\\[^\\(\\)\\]*vi4 ={v} 0\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi4.*__vprintf_chk.*1.*\\\"%s\\\".*vi5\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi5.*__vprintf_chk.*1.*\\\"%c\\\".*vi6\" \"fab1\"} } */\n-/* { dg-final { scan-tree-dump \"vi6.*__vprintf_chk.*1.*\\\"%s\\\\\\\\n\\\".*vi7\" \"fab1\"} } */\n+/* { dg-final { scan-tree-dump \"vi0.*__vprintf_chk.*1.*\\\"hello\\\".*vi1\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi1.*puts.*\\\"hello\\\".*vi2\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi2.*putchar.*vi3\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi3 ={v} 0\\[^\\(\\)\\]*vi4 ={v} 0\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi4.*__vprintf_chk.*1.*\\\"%s\\\".*vi5\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi5.*__vprintf_chk.*1.*\\\"%c\\\".*vi6\" \"optimized\"} } */\n+/* { dg-final { scan-tree-dump \"vi6.*__vprintf_chk.*1.*\\\"%s\\\\\\\\n\\\".*vi7\" \"optimized\"} } */\ndiff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr79691.c b/gcc/testsuite/gcc.dg/tree-ssa/pr79691.c\nindex bf889318c063..43770c95bcab 100644\n--- a/gcc/testsuite/gcc.dg/tree-ssa/pr79691.c\n+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr79691.c\n@@ -34,4 +34,4 @@ int f4 (int i)\n \n /* { dg-final { scan-tree-dump-times \"sprintf\" 1 \"optimized\" } }\n { dg-final { scan-tree-dump-times \"snprintf\" 1 \"optimized\" } }\n- { dg-final { scan-tree-dump \" = 9;\" \"optimized\" } } */\n+ { dg-final { scan-tree-dump \"return 9;\" \"optimized\" } } */\ndiff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-10.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-10.c\nindex d6126a3e8efe..dc87a56de06e 100644\n--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-10.c\n+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-10.c\n@@ -1,5 +1,5 @@\n /* { dg-do compile } */\n-/* { dg-options \"-O1 -fdump-tree-fab1\" } */\n+/* { dg-options \"-O1 -fdump-tree-optimized\" } */\n \n /* Check that we fold strlen of equally long strings, and that we do not\n fail to terminate when there is a nontrivial cycle in the corresponding\n@@ -32,4 +32,4 @@ middle:\n }\n \n /* There should be no calls to strlen. */\n-/* { dg-final { scan-tree-dump-times \"strlen\" 0 \"fab1\"} } */\n+/* { dg-final { scan-tree-dump-times \"strlen\" 0 \"optimized\"} } */\ndiff --git a/gcc/tree-pass.h b/gcc/tree-pass.h\nindex 61cec52c6248..410341d47119 100644\n--- a/gcc/tree-pass.h\n+++ b/gcc/tree-pass.h\n@@ -447,7 +447,6 @@ extern gimple_opt_pass *make_pass_warn_access (gcc::context *ctxt);\n extern gimple_opt_pass *make_pass_warn_printf (gcc::context *ctxt);\n extern gimple_opt_pass *make_pass_warn_recursion (gcc::context *ctxt);\n extern gimple_opt_pass *make_pass_strlen (gcc::context *ctxt);\n-extern gimple_opt_pass *make_pass_fold_builtins (gcc::context *ctxt);\n extern gimple_opt_pass *make_pass_post_ipa_warn (gcc::context *ctxt);\n extern gimple_opt_pass *make_pass_stdarg (gcc::context *ctxt);\n extern gimple_opt_pass *make_pass_early_warn_uninitialized (gcc::context *ctxt);\ndiff --git a/gcc/tree-ssa-ccp.cc b/gcc/tree-ssa-ccp.cc\nindex c884fdfffd01..6de02e5c7dcb 100644\n--- a/gcc/tree-ssa-ccp.cc\n+++ b/gcc/tree-ssa-ccp.cc\n@@ -3085,114 +3085,6 @@ make_pass_ccp (gcc::context *ctxt)\n return new pass_ccp (ctxt);\n }\n \n-/* A simple pass that attempts to fold all builtin functions. This pass\n- is run after we've propagated as many constants as we can. */\n-\n-namespace {\n-\n-const pass_data pass_data_fold_builtins =\n-{\n- GIMPLE_PASS, /* type */\n- \"fab\", /* name */\n- OPTGROUP_NONE, /* optinfo_flags */\n- TV_NONE, /* tv_id */\n- ( PROP_cfg | PROP_ssa ), /* properties_required */\n- 0, /* properties_provided */\n- 0, /* properties_destroyed */\n- 0, /* todo_flags_start */\n- TODO_update_ssa, /* todo_flags_finish */\n-};\n-\n-class pass_fold_builtins : public gimple_opt_pass\n-{\n-public:\n- pass_fold_builtins (gcc::context *ctxt)\n- : gimple_opt_pass (pass_data_fold_builtins, ctxt)\n- {}\n-\n- /* opt_pass methods: */\n- opt_pass * clone () final override { return new pass_fold_builtins (m_ctxt); }\n- unsigned int execute (function *) final override;\n-\n-}; // class pass_fold_builtins\n-\n-unsigned int\n-pass_fold_builtins::execute (function *fun)\n-{\n- bool cfg_changed = false;\n- basic_block bb;\n- unsigned int todoflags = 0;\n-\n- /* Set last full fold prop if not already set. */\n- fun->curr_properties |= PROP_last_full_fold;\n-\n- FOR_EACH_BB_FN (bb, fun)\n- {\n- gimple_stmt_iterator i;\n- for (i = gsi_start_bb (bb); !gsi_end_p (i); )\n-\t{\n-\t gimple *stmt, *old_stmt;\n-\n-\t stmt = gsi_stmt (i);\n-\n-\t if (gimple_code (stmt) != GIMPLE_CALL)\n-\t {\n-\t gsi_next (&i);\n-\t continue;\n-\t }\n-\n-\t /* Only fold internal calls\n-\t or normal builtins. */\n-\t if (!gimple_call_internal_p (stmt)\n-\t && !gimple_call_builtin_p (stmt, BUILT_IN_NORMAL))\n-\t {\n-\t gsi_next (&i);\n-\t continue;\n-\t }\n-\t if (!fold_stmt (&i))\n-\t {\n-\t gsi_next (&i);\n-\t continue;\n-\t }\n-\t if (dump_file && (dump_flags & TDF_DETAILS))\n-\t {\n-\t fprintf (dump_file, \"Simplified\\n \");\n-\t print_gimple_stmt (dump_file, stmt, 0, dump_flags);\n-\t }\n-\n-\t old_stmt = stmt;\n-\t stmt = gsi_stmt (i);\n-\t update_stmt (stmt);\n-\n-\t if (maybe_clean_or_replace_eh_stmt (old_stmt, stmt)\n-\t && gimple_purge_dead_eh_edges (bb))\n-\t cfg_changed = true;\n-\n-\t if (dump_file && (dump_flags & TDF_DETAILS))\n-\t {\n-\t fprintf (dump_file, \"to\\n \");\n-\t print_gimple_stmt (dump_file, stmt, 0, dump_flags);\n-\t fprintf (dump_file, \"\\n\");\n-\t }\n-\t gsi_next (&i);\n-\t}\n- }\n-\n- /* Delete unreachable blocks. */\n- if (cfg_changed)\n- todoflags |= TODO_cleanup_cfg;\n-\n- return todoflags;\n-}\n-\n-} // anon namespace\n-\n-gimple_opt_pass *\n-make_pass_fold_builtins (gcc::context *ctxt)\n-{\n- return new pass_fold_builtins (ctxt);\n-}\n-\n /* A simple pass that emits some warnings post IPA. */\n \n namespace {\n", "prefixes": [ "v1", "10/10" ] }