From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM02-DM3-obe.outbound.protection.outlook.com (mail-dm3nam02on2114.outbound.protection.outlook.com [40.107.95.114]) by sourceware.org (Postfix) with ESMTPS id C63D23896C1F for ; Tue, 15 Nov 2022 10:44:26 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org C63D23896C1F Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=os.amperecomputing.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=os.amperecomputing.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cKJJHe2jeC4MoyHfNRMWrrV6ZLGV6rmuJTSenUa/wxoloPkIi6lInRIDoLeT09q6dgrClLzFxPxUB2M5B1bftez5MCSLRmJMLpaspU56glSzc3dNYc/HlpIjG4z+UTDYON0daHrydfjr7cw1yPG8nseWs3oLdy1SieHKFWGJvE0WcYqeJHhUYiJaz8WXe1eXDUCb/lFz/GydoERXVkwiecamhWK3dRSpPW9MZtoYmN8gBDoriwEm/4YqrYAUeSnuPFfYuKd122XySHftFIYUDXNt2d4BrfP9rZi5ObGMLjwb7klYRFvB7LEuYlgbPMmpZqT5LdYQu+6gAxEOFEOQ1Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=0B092zY/oNbIK75P+gWYKbxe5NckNP6l8P6wORQgQPI=; b=A26Xs7LcOMZxaNJLBqYajUtdgdPjrPwv1XTMHRhT0jKriBAaFA35xTh3dEWT7MgjP1Ku7/8RTPATmk1qdS7VVxOdgh2INDKmtX2swJApTivaMpHT7DiYLM+b1IDmC4hyiQCyDgHeV8Jf34v0iXfWliVa95ximojudmWWoD2jiWmzuO4cpzDHY76u/IOHJ6IITISNNWVnZ4menHUk1FmbX4SNGaow3VrAeYK4f+x1nZ4JO4E/KvbeTW6tnwlb1WvYZ4hIi+ti2D8mXFa/IHWdU47KpQ/PI9fa+vf1P4TXQ2xm+GaqwPKeNaIZDM4HmSs8Thx2/5Gcc14TrHL/wdg2Fw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=os.amperecomputing.com; dmarc=pass action=none header.from=os.amperecomputing.com; dkim=pass header.d=os.amperecomputing.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=os.amperecomputing.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0B092zY/oNbIK75P+gWYKbxe5NckNP6l8P6wORQgQPI=; b=IbWu2ccXa/EtC5VnC5dhbiodoixlIAmUnuVC5vML7Gr4IAq7tGhGONMzQAzME0VaDNvdLUCvIR3XqeKRWMJ4fdm5Xxw/Kfkws6bjuptYDHD0FtYFZrTnfx58uZXLrzC6zMbITr+5sZuhVB0F41DapowyC6omiwS0PvC+xtmOu4g= Received: from SN6PR01MB4240.prod.exchangelabs.com (2603:10b6:805:ae::22) by PH0PR01MB6120.prod.exchangelabs.com (2603:10b6:510:15::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5813.16; Tue, 15 Nov 2022 10:44:24 +0000 Received: from SN6PR01MB4240.prod.exchangelabs.com ([fe80::fa9a:ec19:b8ef:6695]) by SN6PR01MB4240.prod.exchangelabs.com ([fe80::fa9a:ec19:b8ef:6695%4]) with mapi id 15.20.5813.017; Tue, 15 Nov 2022 10:44:24 +0000 From: Di Zhao OS To: "gcc-patches@gcc.gnu.org" CC: Richard Biener Subject: PING: [PATCH v6] tree-optimization/101186 - extend FRE with "equivalence map" for condition prediction Thread-Topic: PING: [PATCH v6] tree-optimization/101186 - extend FRE with "equivalence map" for condition prediction Thread-Index: AdjoB0XuZRSb0/TaR2C7PpfGqc0blgQ1/Sig Date: Tue, 15 Nov 2022 10:44:24 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_ActionId=391a15d4-fb5a-46ae-92eb-f4036d52bc48;MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_ContentBits=0;MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_Enabled=true;MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_Method=Standard;MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_Name=Confidential (Default);MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_SetDate=2022-10-24T23:29:52Z;MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_SiteId=3bc2b170-fd94-476d-b0ce-4229bdc904a7; authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=os.amperecomputing.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SN6PR01MB4240:EE_|PH0PR01MB6120:EE_ x-ms-office365-filtering-correlation-id: ab3e75b8-e919-4c38-0088-08dac6f65cc2 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: WoTgeNxKaH63GC6U6vjIXsXM7yVKiOQtt1msm/xkupHFoaKhl+9HKasmkaobDm+8KT3P4w2tOzfPk1lzv4TVPRLMDJpV0c9V9BMsNVuSLoBS0XypzG6K2cIKAPl5kxBDEAdR/Qv1XIWMM6t2EGxdQlwANqBm03rKIF0/dNNeULtaHZMzeVqgRRav8WFwj/IqIu9Z2zOjhCjfmnd0aJLgmaHLA0TeiZs7O+JdDMWkXHQqBv0AZv2U+UI/a+2tds8Azqe3qeMzsi6C5fHSrH1W8VWxJVSlETIi1HmAY5fovjbSy6id3BGYkOKPTTR2aXfg2B177a/fUL8E2+EV69mlLYbY5NcBtkIzgPargOKqoDgq7z9sSKkSB0C2JTNqLuIddCFHXFzEGvWWNYF3TeDYRvK2e54ozy04N9+I94zi3btYIaUGw/4SOP4Noh8R4BA4LcTBTQ1YXllGl8D/V1m1xIT+LUr6oIjylUjL1hYNKUXu/n2I3ccpI8QICpiEHHHwZUulR6N/s80h+GX8V1BOlpybdxm9FpA/BZRtBW6jOAiitJg12hVfMDFGkj7nFQlbcMut7vAWkiQkbd3zS8pC/dx8+PG0pj5rrvwl9ALUvqZdvewqpMtoahM4dLknn8rjCjf0BehN/EQYsy0oCotPYXmMZsY7eth0/JQbMuQUUNtJhb7HxQrf5YXoIR2R11pbNz93jPiZtJTLgjpp+v05zecNoK6IEA3a8RlAPE/JCAfVwBYgK5RrzX/JAZZ3cScO/Ok1ffPY2s++NzFN6j6oYWXQhgExIGvNnFwC5anLt8E= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN6PR01MB4240.prod.exchangelabs.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(136003)(366004)(396003)(39850400004)(376002)(346002)(451199015)(55016003)(38070700005)(41300700001)(316002)(53546011)(4326008)(76116006)(8676002)(66476007)(66556008)(66446008)(8936002)(66946007)(5660300002)(52536014)(26005)(9686003)(64756008)(186003)(86362001)(38100700002)(122000001)(2906002)(83380400001)(4001150100001)(84970400001)(33656002)(71200400001)(478600001)(6506007)(7696005)(6916009);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?AMg94bu6WA5JKmjsHu52JQ864EkCnuTp9paahJjMF3kkLLLC79fSgL5PAOOv?= =?us-ascii?Q?YPHh6A1EqcLTsvyLlDHV7ec56N2zI0040f7pQR+0H8aSeuTdq5N7C1M6oZ1H?= =?us-ascii?Q?Wh4BtU8JmhGMmIqTWwh5mge8RPj62W6LiAqmkWfh1PDEKnekE4K5UhuopjN9?= =?us-ascii?Q?R1oU2PXpvLf7oqLUqVcR8gspNA/HH/vulW48iBKzR8hcBDO8MUOTz7HyxR8B?= =?us-ascii?Q?20k3mxtFrYq3i6T+c3in66hTrRvNxk3HzaJBRjzt232oRScd0AgOHJ5J5KHi?= =?us-ascii?Q?rg1LI2Dx0f3862jd3oWF/7kZxu2Yu73vtMiLvZ8JbfH+KIco5ySA+gMaO6ZN?= =?us-ascii?Q?aJoYNSUmSTYD1YgNLhFeWjt5pwlERQ8LorIMNIAPhe9crfuw/Y188wuoZweC?= =?us-ascii?Q?vpP/oKgHaosqqu0BUU6w6fk9+M4arLavgBjXnODFkue1CC9wOqzxom/Nd9Cn?= =?us-ascii?Q?HJz0yh17T5j+bewH6bT+yZkLBruppLV3W+O5VUMGOFNOlw68Cizi0vIw8KOZ?= =?us-ascii?Q?rDHp8cfTyvfeSGeX7RTqg6m0SP8tYnhIJ+fF+AXHGCgc36KmkPJilCEQ3Gqe?= =?us-ascii?Q?b0O2WjcpNQCV0tNZKdykHPfTmryyMcNxdVywoZvIr+v/4alZ/LuHOm2sBYZU?= =?us-ascii?Q?aOlVOqSsGxdN30L1Oc+eyCM4mSdGKMqcFgDDVlxQhx9FiorsQ4Uo3LKTqbyx?= =?us-ascii?Q?ZAKrsVlCUusCNtyGTbKkEmS5Voy9HsWqh/VRPPxOiJiTbC6bNdZil5dJ0FJq?= =?us-ascii?Q?pwvOWDqP08vQtoOrIKxCXV/KhSFC0aJpqMotyj5sKM8xNcQg08l5IIzDs1Xd?= =?us-ascii?Q?s+7kS6UyiIn1CaRBY+ELb2u7Ye3R99AySaX+eBYrNX811kbSjUtUrYYYIOEL?= =?us-ascii?Q?L+3ZZU1ZhS7AXSOmCDk9LG6oCrvsJ0iedyP04RDu3wMCzLDlLmJwxw8/+oLU?= =?us-ascii?Q?NCwYDaPRWaWDdF6FEa18TueSL8TW49F6SE8hrIVeoD4eZFDMMJ72n/ljxlex?= =?us-ascii?Q?/U1wYj4+rPlYsxh6nBnavcPg8WEfsqNJwt/Clfdf1MbgVOwYlTowTD18Ul7U?= =?us-ascii?Q?0uwmAanQ/K1EPjp0QE4TOJkGMW3yPL4a+noj6Ksg/QGYqvicCWi9EjWRHVFd?= =?us-ascii?Q?6BMDr42KvgKLxIcLFHWcbVnrQm27VUDvYiBrE/y+txBiXsZZK165Ra6R8jae?= =?us-ascii?Q?AlXqV+Iwgxm3ZrAdOeZNzcf2dd62CstyjLD7YKg31h9V+sGKgbWFOSk2pd3N?= =?us-ascii?Q?YRcLFCJpIhM6jxu9hBKzDHDUWZgx096xelzGpt0zkpCTym/G0d3kJegHOHPl?= =?us-ascii?Q?GWC5EdWuAOTrQW3jfyK1VaE+X36ok0cPbwERCUJtuYSPfbqhp+dgca/RS67r?= =?us-ascii?Q?7DO1DiGtar9vclnI6wExnJx6zSoC+WJGmEV3XDmoe/Sb5RO7HkBtIn9SAs9g?= =?us-ascii?Q?NoGdn5+UEoxirr/ZeJaioaAXdGsdJVVkb2CjRzgo1TC++wtODE/d/tN7NqAC?= =?us-ascii?Q?rhc4zSzUAX87njIGLN7s4YV9A+DwQsjd1w5QGSUqxqG/IWelWxBvEoU6LcHz?= =?us-ascii?Q?yzXb4Zi3rOYhoAx90/D/NnJyU5ccdgt5nRBkDz/7ggFeeJjhFZXpqcvJNIQ9?= =?us-ascii?Q?tg=3D=3D?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SN6PR01MB4240.prod.exchangelabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: ab3e75b8-e919-4c38-0088-08dac6f65cc2 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Nov 2022 10:44:24.6506 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3bc2b170-fd94-476d-b0ce-4229bdc904a7 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: I6yGn2We1zBEM+U/n9KoB0Z5ooOgt0kxYKmmLB2J0HUF88c/nRUwU+MlQP+EX30y93MT1QF7gl904vKJ5DbEsmbij+lxvVMDeRjQVKNEKAmadW5WCMS+4kdsRwjALbHB X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR01MB6120 X-Spam-Status: No, score=-2.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: Hi, I saw that Stage 1 of GCC 13 development is just ended. So is this considered? Or should I bring this up when general development is reopened? Thanks, Di Zhao > -----Original Message----- > From: Di Zhao OS > Sent: Tuesday, October 25, 2022 8:18 AM > To: gcc-patches@gcc.gnu.org > Cc: Richard Biener > Subject: [PATCH v6] tree-optimization/101186 - extend FRE with "equivalen= ce > map" for condition prediction >=20 > Sorry for the late update. I've been on a vacation and then I > spent some time updating and verifying the patch. >=20 > Attached is a new version of the patch. There are some changes: >=20 > 1. Store equivalences in a vn_pval chain in vn_ssa_aux, rather than > in the expression hash table. (Following Richard's suggestion.) > 2. Extracted insert_single_predicated_value function. > 3. Simplify record_equiv_from_prev_phi a bit. > 4. Changed some of the functions' names and tried to improve the > comments a little. >=20 > Current status of the new testcases in the patch: >=20 > ssa-fre-200.c Can also be optimized by evrp > ssa-fre-201.c Not optimized in trunk. > ssa-fre-202.c foo() can be removed by evrp; while x + b is not > folded. > ssa-pre-34.c Not optimized in trunk. >=20 > Initially, this patch is motivated to remove the unreachable codes > in case like ssa-pre-34.c, in which we need to use equivalence > relation produced from a preceding condition for another condition. > VRP didn't optimize that because it needs jump threading to make > the relation valid at the second condition. >=20 > After browsing the mechanisms of VRP and FRE, it seems to me there > are two options: 1) Teach VRP to identify related but not threaded > conditions. That might require introducing value-numbering into VRP > to detect common expressions, and I think is too much for this. > 2) Introduce temporary equivalence in sccvn, which I thought would > change less on current code. (And along the reviews and updating > patch I see how ad-hoc it was.) >=20 > I saw from the talk about VN there's plan to replace predicated > values by ranger. So how does it goes? Is there something I can help > with? (For the case ssa-pre-34.c, I think maybe it still needs the > predicated-value support, to lookup related conditional expressions.) >=20 > Below are about questions in the last review: >=20 > > > /* Valid hashtables storing information we have proven to be > > > correct. */ > > > @@ -490,9 +492,9 @@ VN_INFO (tree name) > > > nary->predicated_values =3D 0; > > > nary->u.result =3D boolean_true_node; > > > vn_nary_op_insert_into (nary, valid_info->nary); > > > - gcc_assert (nary->unwind_to =3D=3D NULL); > > > > why's that? doesn't this mean unwinding will be broken? >=20 > Previously, predicate "argument_x =3D=3D NULL" or "argument_x !=3D NULL" > is always new here (because argument_x's VN is just inserted.) > But with the patch, there can be slot for "argument_x =3D=3D NULL" > or "argument_x !=3D NULL" already. It won't break unwinding as the > new value is not linked to the unwind-chain. >=20 > > > > > /* Also do not link it into the undo chain. */ > > > last_inserted_nary =3D nary->next; > > > + /* There could be a predicate already. */ > > > nary->next =3D (vn_nary_op_t)(void *)-1; > > > nary =3D alloc_vn_nary_op_noinit (2, &vn_tables_insert_obstack)= ; > > > init_vn_nary_op_from_pieces (nary, 2, EQ_EXPR, >=20 > > > /* Compute and return the hash value for nary operation VBO1. */ > > > > > > hashval_t > > > @@ -4226,6 +4342,9 @@ init_vn_nary_op_from_stmt (vn_nary_op_t vno, ga= ssign > *stmt) > > > for (i =3D 0; i < vno->length; ++i) > > > vno->op[i] =3D gimple_op (stmt, i + 1); > > > } > > > + /* Insert and lookup N-ary results by the operands' equivalence he= ads. > */ > > > + if (gimple_bb (stmt)) > > > + lookup_equiv_heads (vno->length, vno->op, vno->op, gimple_bb (st= mt)); > > > > That seems like the wrong place, the function didn't even valueize befo= re. >=20 > To utilize temp-equivalences and get more simplified result, n-ary > expressions should be always inserted and lookup by the operands' > equivalence heads. So practically all the places > init_vn_nary_op_from_stmt is used, lookup_equiv_heads (changed to > get_equiv_heads) should be called. As I haven't found better place > to put that, I just left it here in the patch.. >=20 > > > visit_nary_op (tree lhs, gassign *stmt) > > > { > > > vn_nary_op_t vnresult; > > > - tree result =3D vn_nary_op_lookup_stmt (stmt, &vnresult); > > > - if (! result && vnresult) > > > + unsigned length =3D vn_nary_length_from_stmt (stmt); > > > + vn_nary_op_t vno > > > + =3D XALLOCAVAR (struct vn_nary_op_s, sizeof_vn_nary_op (length))= ; > > > + init_vn_nary_op_from_stmt (vno, stmt); > > > + tree result =3D NULL_TREE; > > > + /* Try to get a simplified result. */ > > > + /* Do not simplify variable used in PHI at loop exit, or > > > + simplify_peeled_chrec/constant_after_peeling may miss the loop.= */ > > > + gimple *use_stmt; > > > + use_operand_p use_p; > > > + if (!(single_imm_use (lhs, &use_p, &use_stmt) > > > + && gimple_code (use_stmt) =3D=3D GIMPLE_PHI > > > + && single_succ_p (gimple_bb (use_stmt)) > > > + && (single_succ_edge (gimple_bb (use_stmt))->flags & EDGE_DFS_BACK)= )) > > > + result =3D fold_const_from_equiv_heads (vno->length, vno->opcode= , vno- > >op, > > > + vno->type); > > > > copy propagating conditional equivalences has proved problematic, why > > do this at all when there's no actual simplification? It's a bit odd t= hat > > we need a special fold_const_from_equiv_heads here, why is general > > valueization not handling equivalences? Are they supposed to be only > > used for simplifying conditionals? >=20 > With temporary equivalences introduced, expressions like "a - equiv(a)" > and "a =3D=3D equiv (a)" can be folded, and no need to store predicates > like "a =3D=3D b is true". The function fold_const_from_equiv_heads is > intended to limit the usage of gimple_simplify, to when a constant can > be folded using equivalences. The code seems too complex but I haven't > figured out how to improve it yet. (I'm not very acquainted on how to > use the simplifying utility properly, I hope I can get some advices > here.) Also, could I have more details about "copy propagating > conditional equivalences has proved problematic" ? >=20 > Thank you very much, > Di Zhao >=20 > ---- >=20 > Extend FRE with temporary equivalences. >=20 > 2022-10-24 Di Zhao >=20 > gcc/ChangeLog: >=20 > * tree-ssa-sccvn.cc (VN_INFO): remove assertions (there could be > a predicate already). > (dominated_by_p_w_unex): Moved upward. > (is_pval_valid_at_bb): Check if vn_pval is valid at BB. > (get_equiv_head): Returns the "equivalence head" of given node. > (get_equiv_heads): Get the "equivalence head"s of given nodes. > (init_vn_nary_op_from_stmt): Insert and lookup nary expressions > by "equivalence head"s. > (insert_single_predicated_value): Extracted utility. > (vn_nary_op_insert_into): Use the extracted utility > insert_single_predicated_value. > (fold_const_from_equiv_heads): Fold N-ary expression to constant > by equiv-heads. > (push_new_nary_ref): Insert a back-reference to vn_nary_op_t. > (alloc_single_predicated_value): Extracted utility. > (push_single_equiv): Push a new value to the equivalence list. > (record_temporary_equivalence): Record temporary equivalence. > (vn_nary_op_insert_pieces_predicated): Record equivalences > instead of some predicates; insert back-refs. > (record_equiv_from_prev_phi_1): Record temporary equivalences > generated by PHI nodes. > (record_equiv_from_prev_phi): Given a taken edge of a conditional > branch, record equivalences generated by PHI nodes. > (visit_nary_op): Lookup previous results of N-ary operations by > equivalences. > (insert_related_predicates_on_edge): Some predicates can be > computed from equivalences, no need to insert them. > (process_bb): Add lookup predicated values by equivalences. > (struct unwind_state): Unwind state of back-refs and temporary > equivalences. > (do_unwind): Unwind the back-refs and temporary equivalences. > (do_rpo_vn_1): Update unwind state of back-reference and > temporary equivalences. > * tree-ssa-sccvn.h (struct temp_equiv): In vn_ssa_aux, hold a > list of temporary equivalences. > (struct nary_ref): In vn_ssa_aux, hold a lists of references to > the nary map entries. >=20 > gcc/testsuite/ChangeLog: >=20 > * g++.dg/pr83541.C: Disable fre. > * gcc.dg/tree-ssa/pr68619-2.c: Disable fre. > * gcc.dg/tree-ssa/pr71947-1.c: Disable fre. > * gcc.dg/tree-ssa/pr71947-2.c: Disable fre. > * gcc.dg/tree-ssa/pr71947-3.c: Disable fre. > * gcc.dg/tree-ssa/pr71947-5.c: Disable fre. > * gcc.dg/tree-ssa/pr71947-7.c: Disable fre. > * gcc.dg/tree-ssa/pr71947-8.c: Disable fre. > * gcc.dg/tree-ssa/pr71947-9.c: Disable fre. > * gcc.dg/tree-ssa/vrp03.c: Disable fre. > * gcc.dg/tree-ssa/ssa-fre-200.c: New test. > * gcc.dg/tree-ssa/ssa-fre-201.c: New test. > * gcc.dg/tree-ssa/ssa-fre-202.c: New test. > * gcc.dg/tree-ssa/ssa-pre-34.c: New test.