From patchwork Tue Oct 19 04:54:04 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Li, Pan2 via Gcc-patches" X-Patchwork-Id: 46374 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 4288B3858408 for ; Tue, 19 Oct 2021 04:58:25 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 4288B3858408 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1634619505; bh=zDaC8bX1Wo3QgMjvQDuAXy9Yqf0Vyc1k/AcA6MEk+9U=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=Dcvqxs3E1/a1cmf0Fnb8E/DEwk18lVWsc9wOq0Gi7j99WJyImN5cM1IYVKR/3HHcY VplA5rH/t4fAed8QP132fE9jSkakn2oQv6SUBNVHjFE6tJI+eQm+aVVd+xD7FHfSSm 6eItXA4hSCFo2UZeBqtddrEULwsliIXuYqG9CQ4Y= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by sourceware.org (Postfix) with ESMTPS id 046073858C27 for ; Tue, 19 Oct 2021 04:54:12 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 046073858C27 Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 19J0kaOQ030337 for ; Mon, 18 Oct 2021 21:54:12 -0700 Received: from dc5-exch02.marvell.com ([199.233.59.182]) by mx0b-0016f401.pphosted.com with ESMTP id 3bsfk49pm0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT) for ; Mon, 18 Oct 2021 21:54:12 -0700 Received: from DC5-EXCH01.marvell.com (10.69.176.38) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server (TLS) id 15.0.1497.18; Mon, 18 Oct 2021 21:54:10 -0700 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server id 15.0.1497.18 via Frontend Transport; Mon, 18 Oct 2021 21:54:10 -0700 Received: from linux.wrightpinski.org.com (unknown [10.69.242.198]) by maili.marvell.com (Postfix) with ESMTP id 6D7703F7084; Mon, 18 Oct 2021 21:54:10 -0700 (PDT) To: Subject: [PATCH 4/4] Improve maybe_remove_writeonly_store to do a simple DCE for defining statement Date: Mon, 18 Oct 2021 21:54:04 -0700 Message-ID: <1634619244-18969-5-git-send-email-apinski@marvell.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1634619244-18969-1-git-send-email-apinski@marvell.com> References: <1634619244-18969-1-git-send-email-apinski@marvell.com> MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: 06PWreJ8DEy3MbMmrQmc85WjYJPLGxp- X-Proofpoint-GUID: 06PWreJ8DEy3MbMmrQmc85WjYJPLGxp- X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.182.1,Aquarius:18.0.790,Hydra:6.0.425,FMLib:17.0.607.475 definitions=2021-10-18_07,2021-10-18_01,2020-04-07_01 X-Spam-Status: No, score=-14.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: apinski--- via Gcc-patches From: "Li, Pan2 via Gcc-patches" Reply-To: apinski@marvell.com Cc: Andrew Pinski Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" From: Andrew Pinski Instead of putting a full blow DCE after execute_fixup_cfg, it makes sense to try to remove the defining statement for the store that is being removed. Right now we only handle PHI node statements as there needs no extra checks except for it is only used once in the store statement. gcc/ChangeLog: * tree-cfg.c (maybe_remove_writeonly_store): Remove defining (PHI) statement of the store if possible. --- gcc/tree-cfg.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index dbbf6beb6e4..d9efdc220ca 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -9692,6 +9692,41 @@ maybe_remove_writeonly_store (gimple_stmt_iterator &gsi, gimple *stmt) print_gimple_stmt (dump_file, stmt, 0, TDF_VOPS|TDF_MEMSYMS); } + + /* Remove the statement defining the rhs if it was only + used by this statement. */ + if (gimple_assign_single_p (stmt)) + { + tree rhs = gimple_assign_rhs1 (stmt); + gimple *use_stmt; + use_operand_p use_p; + gimple *stmt1; + + + if (TREE_CODE (rhs) == SSA_NAME + && single_imm_use (rhs, &use_p, &use_stmt) + && (stmt1 = SSA_NAME_DEF_STMT (rhs)) + /* For now only handle PHI nodes. + FIXME: this should handle more. */ + && gimple_code (stmt1) == GIMPLE_PHI) + { + if (dump_file && (dump_flags & TDF_DETAILS)) + { + fprintf (dump_file, "Removing defining statement:\n"); + print_gimple_stmt (dump_file, stmt1, 0, + TDF_VOPS|TDF_MEMSYMS); + } + gimple_stmt_iterator gsi_for_def; + gsi_for_def = gsi_for_stmt (stmt1); + if (gimple_code (stmt1) == GIMPLE_PHI) + remove_phi_node (&gsi_for_def, true); + else + { + gsi_remove (&gsi_for_def, true); + release_defs (stmt1); + } + } + } unlink_stmt_vdef (stmt); gsi_remove (&gsi, true); release_defs (stmt);