From patchwork Wed Dec 6 09:27:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiufu Guo X-Patchwork-Id: 174440 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp3987805vqy; Wed, 6 Dec 2023 01:30:46 -0800 (PST) X-Google-Smtp-Source: AGHT+IES9u+DatzABjQlM4WadkSh+MfQI768Pg7P3O5oKTSwE6KSPpFllMP55gjJhTn6RPcUYtrx X-Received: by 2002:a05:620a:268a:b0:77e:fba3:4f19 with SMTP id c10-20020a05620a268a00b0077efba34f19mr726310qkp.111.1701855046183; Wed, 06 Dec 2023 01:30:46 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1701855046; cv=pass; d=google.com; s=arc-20160816; b=knapOngNy59N5oSKRa0uLjv/SQHK1cEO4/8oiLTp0bScj9vkrHBXky4zbLvggO8pc9 RyMPuLK7LfjqKTVXFOk7HIBtSJp8XA4PabOW0bfdVVKP7XIVTmps67MwdSfL7ltJzmmM 6Z9KAkfOo394h2V9LQk27nHeDQA17+Swe91uYkxcSVM+SX+/5vyITDtmCqS5yg4/dtoe +0Jbbmi7F88i7y/0/j2fi4enzbe81Dt9N3GmHMJKuhD9CF5ngloN0/9ZEevLQ3TD2aND 1jU4+cZh7rHPOP9CEprnu1QcPdfRdD81icEmptQqUVe2ySo3z+9k8j2cng1gM3xTdMF7 eJew== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:mime-version :content-transfer-encoding:message-id:date:subject:cc:to:from :dkim-signature:arc-filter:dmarc-filter:delivered-to; bh=pVLMY4QLj7PsdvUU/Ipl8z7uYF2PtRwufsWNjai+hYc=; fh=73HmOoJ5LFATX+BhmZkHLweRuQxGRYTjZkq83wMzLzs=; b=qnWmKENzG5CKwPYb01tJr/XYLg9NmMZTuWfq0zRGPur38uGkSZP3IaR7sXiBtyt23j 9o9v4xCqDEy3daLOzWup2SfoJt8xDk5FNGMfOYw5VDRPZFwHADg+fi/yyxibxd8xQyuN PNVPK6eQzW2o8MSgAkCmn9rfbrDj7igCC9m5PLyAZImNSv/oCdBlCWgf1vwColSGondu QppPFhpnbwZg3WQ5cZAYhrPUUUyO6fpreVFv3kpZwvSm52yw5hwaPoSFNf/KNW1NzRqF 87EiPbDZHNClQohEnV2M5BrsePyc7tzQS0fIHWoaLI8mgRUNM0Fh2oQdpsei920vc3O/ 5uIw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@ibm.com header.s=pp1 header.b=OYuwmU3Y; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=REJECT sp=NONE dis=NONE) header.from=ibm.com Received: from server2.sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id dy29-20020a05620a60dd00b0077436023382si12388018qkb.198.2023.12.06.01.30.46 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Dec 2023 01:30:46 -0800 (PST) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@ibm.com header.s=pp1 header.b=OYuwmU3Y; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=REJECT sp=NONE dis=NONE) header.from=ibm.com Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 31760385E021 for ; Wed, 6 Dec 2023 09:30:42 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by sourceware.org (Postfix) with ESMTPS id C8C9A3858C3A; Wed, 6 Dec 2023 09:28:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C8C9A3858C3A Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=linux.ibm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=linux.ibm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org C8C9A3858C3A Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=148.163.156.1 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701854890; cv=none; b=aoBfz+UqGKwrIWMhmzxTrpngbulgtQXAiTdkGc0hoCI5ztLJb8qvM9rQp3veZVc7oDVLLt6YRZBIWrGtejF3zhet02os+Oi0ozqwQY8+HXrBAn99iuRhcxRj4LIkrhY29+g3zeGGILB7N3HlkZsRV1sSCl+6eYJIt/zPI3APpYs= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701854890; c=relaxed/simple; bh=nQ++Z0qPebvvrK8tMyin2tjkMVoLjf7Oui0/4yVu0MY=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=n/liBkjUHADyY46sBqby4ubwseqRe4bVhsv788KwRyKx6GEnTkhYYVQmVzIZO3NUzSxxq3xfvgNSjahRT+EWnSMgLxlQgKqR9WnqwP3gm17frc1tUNhUpGW1TaRgTmHdE54VzqewbozYYLnZ+hn9BgJjAomoEC8xAc4D75MSOuw= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from pps.filterd (m0353726.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 3B69Q2Cj009253; Wed, 6 Dec 2023 09:28:05 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : content-transfer-encoding : mime-version; s=pp1; bh=pVLMY4QLj7PsdvUU/Ipl8z7uYF2PtRwufsWNjai+hYc=; b=OYuwmU3Y6n6DyEC7pNyY4RxuIJZamx+4mCwEPDSGPMcj3hQ0eZnVgh9SRvQwCxzfcJfx aOo2tax61aP3eokOQ9ww+U8ShkdLc/N6ejI2oA2kWjxKTzmagTzwQlZYsjjHFF0oaT1H /EKPCR5at1DsI68KVi/69/llZtQYfPFBdYktxpOr3BsDMr5mU4ytpJwHfaLNX52tdhha 88EV8VGTwG4TPjAQYQjVSZ4DznYhhcKAjTsePeeD4QxYASVVATWqv+q/Ohma40zBKFza iLJxuI1Cvv7Y7WGbBhe5SkkQNRi6fKswm63XjSZTHnTa+pHTjmCU0q732JbvC3YzGJSU Zg== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3utnp3s2py-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 06 Dec 2023 09:28:05 +0000 Received: from m0353726.ppops.net (m0353726.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 3B69QCSe010341; Wed, 6 Dec 2023 09:28:04 GMT Received: from ppma12.dal12v.mail.ibm.com (dc.9e.1632.ip4.static.sl-reverse.com [50.22.158.220]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3utnp3s2pm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 06 Dec 2023 09:28:04 +0000 Received: from pps.filterd (ppma12.dal12v.mail.ibm.com [127.0.0.1]) by ppma12.dal12v.mail.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 3B68Zpdn020810; Wed, 6 Dec 2023 09:28:03 GMT Received: from smtprelay05.fra02v.mail.ibm.com ([9.218.2.225]) by ppma12.dal12v.mail.ibm.com (PPS) with ESMTPS id 3utav4bf9v-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 06 Dec 2023 09:28:03 +0000 Received: from smtpav07.fra02v.mail.ibm.com (smtpav07.fra02v.mail.ibm.com [10.20.54.106]) by smtprelay05.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 3B69S0Nl11928268 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 6 Dec 2023 09:28:01 GMT Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id CEEF22006C; Wed, 6 Dec 2023 09:28:00 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 09E042004E; Wed, 6 Dec 2023 09:27:59 +0000 (GMT) Received: from genoa.aus.stglabs.ibm.com (unknown [9.40.192.157]) by smtpav07.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 6 Dec 2023 09:27:58 +0000 (GMT) From: Jiufu Guo To: gcc-patches@gcc.gnu.org Cc: rguenther@suse.de, jeffreyalaw@gmail.com, richard.sandiford@arm.com, zadeck@naturalbridge.com, pinskia@gcc.gnu.org, segher@kernel.crashing.org, dje.gcc@gmail.com, linkw@gcc.gnu.org, bergner@linux.ibm.com, guojiufu@linux.ibm.com Subject: [PATCH] treat argp-based mem as frame related in dse Date: Wed, 6 Dec 2023 17:27:58 +0800 Message-Id: <20231206092758.1000447-1-guojiufu@linux.ibm.com> X-Mailer: git-send-email 2.25.1 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: ndK1XM-5d-FxzlL81n-TnKoIfXZdeFiy X-Proofpoint-ORIG-GUID: jwPfQHzXjMICdY8pBT8Q1h6gqzPFTuky X-Proofpoint-UnRewURL: 0 URL was un-rewritten MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.997,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-12-06_06,2023-12-05_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxscore=0 suspectscore=0 mlxlogscore=999 impostorscore=0 lowpriorityscore=0 priorityscore=1501 phishscore=0 adultscore=0 malwarescore=0 bulkscore=0 clxscore=1011 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2311290000 definitions=main-2312060076 X-Spam-Status: No, score=-10.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1784524357329514656 X-GMAIL-MSGID: 1784524357329514656 Hi, The issue mentioned in PR112525 would be able to be handled by updating dse.cc to treat arg_pointer_rtx similarly with frame_pointer_rtx. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=30271#c10 also mentioned this idea. One thing, arpg area may be used to pass argument to callee. So, it would be needed to check if call insns are using that mem. Bootstrap ®test pass on ppc64{,le} and x86_64. Is this ok for trunk? BR, Jeff (Jiufu Guo) PR rtl-optimization/112525 gcc/ChangeLog: * dse.cc (get_group_info): Add arg_pointer_rtx as frame_related. (check_mem_read_rtx): Add parameter to indicate if it is checking mem for call insn. (scan_insn): Add mem checking on call usage. gcc/testsuite/ChangeLog: * gcc.target/powerpc/pr112525.c: New test. --- gcc/dse.cc | 17 +++++++++++++---- gcc/testsuite/gcc.target/powerpc/pr112525.c | 15 +++++++++++++++ 2 files changed, 28 insertions(+), 4 deletions(-) create mode 100644 gcc/testsuite/gcc.target/powerpc/pr112525.c diff --git a/gcc/dse.cc b/gcc/dse.cc index 1a85dae1f8c..f43b7bf8ba6 100644 --- a/gcc/dse.cc +++ b/gcc/dse.cc @@ -682,7 +682,8 @@ get_group_info (rtx base) gi->group_kill = BITMAP_ALLOC (&dse_bitmap_obstack); gi->process_globally = false; gi->frame_related = - (base == frame_pointer_rtx) || (base == hard_frame_pointer_rtx); + (base == frame_pointer_rtx) || (base == hard_frame_pointer_rtx) + || (base == arg_pointer_rtx && fixed_regs[ARG_POINTER_REGNUM]); gi->offset_map_size_n = 0; gi->offset_map_size_p = 0; gi->offset_map_n = NULL; @@ -2157,7 +2158,7 @@ replace_read (store_info *store_info, insn_info_t store_insn, be active. */ static void -check_mem_read_rtx (rtx *loc, bb_info_t bb_info) +check_mem_read_rtx (rtx *loc, bb_info_t bb_info, bool used_in_call = false) { rtx mem = *loc, mem_addr; insn_info_t insn_info; @@ -2302,7 +2303,8 @@ check_mem_read_rtx (rtx *loc, bb_info_t bb_info) stored, rewrite the read. */ else { - if (store_info->rhs + if (!used_in_call + && store_info->rhs && known_subrange_p (offset, width, store_info->offset, store_info->width) && all_positions_needed_p (store_info, @@ -2368,7 +2370,8 @@ check_mem_read_rtx (rtx *loc, bb_info_t bb_info) /* If this read is just reading back something that we just stored, rewrite the read. */ - if (store_info->rhs + if (!used_in_call + && store_info->rhs && store_info->group_id == -1 && store_info->cse_base == base && known_subrange_p (offset, width, store_info->offset, @@ -2650,6 +2653,12 @@ scan_insn (bb_info_t bb_info, rtx_insn *insn, int max_active_local_stores) that is not relative to the frame. */ add_non_frame_wild_read (bb_info); + for (rtx link = CALL_INSN_FUNCTION_USAGE (insn); + link != NULL_RTX; + link = XEXP (link, 1)) + if (GET_CODE (XEXP (link, 0)) == USE && MEM_P (XEXP (XEXP (link, 0),0))) + check_mem_read_rtx (&XEXP (XEXP (link, 0),0), bb_info, true); + return; } diff --git a/gcc/testsuite/gcc.target/powerpc/pr112525.c b/gcc/testsuite/gcc.target/powerpc/pr112525.c new file mode 100644 index 00000000000..428598188e7 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/pr112525.c @@ -0,0 +1,15 @@ +/* { dg-do compile { target lp64 } } */ +/* { dg-options "-O2" } */ + +typedef struct teststruct +{ + double d; + int arr[15]; +} teststruct; + +void +foo (teststruct p) +{ +} + +/* { dg-final { scan-assembler-not {\mstd\M} } } */