From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by sourceware.org (Postfix) with ESMTPS id 8CEBA3858CDA; Mon, 26 Sep 2022 06:21:19 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 8CEBA3858CDA 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 Received: from pps.filterd (m0127361.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 28Q4eGWI024900; Mon, 26 Sep 2022 06:21:19 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=message-id : date : subject : to : cc : references : from : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pp1; bh=yDTTL2aFNDiLQ6LtiS+GzjXUQjZ+aaM18hhqLTzgnWY=; b=S5Yblgh6ynX6WHer3ScixeNcNoAlYkpzad+oc3pcUIIXRt08o/0qF1I7brWfNBYYfFeV A9NnMQQ8qagsT2pnUm4v2JY//O+AAfLj2GEj+UYj7XlI3fF2FEoyN/kq+CmjCtPAjXEH R5rolil/48pTUmt27QZ+NgWYu84nrWmvKCDnKXlueV0af1xGarmvuk0qeEDU8uusCpDF XiknudHuellgoAtjoySmLheOPFkGn1slDX8RASnRilhsIAgFXNd4iK4EXIuDKsZjQmMx PAcQbpuFqmDDTs3pfVRETiAYubB3DNtuTLMNU+agfH1ddkFMJtIIkeNByZl7axxIP41/ Sw== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3jtbxr3e4n-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 26 Sep 2022 06:21:18 +0000 Received: from m0127361.ppops.net (m0127361.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 28Q6JK7V029940; Mon, 26 Sep 2022 06:21:18 GMT Received: from ppma03ams.nl.ibm.com (62.31.33a9.ip4.static.sl-reverse.com [169.51.49.98]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3jtbxr3e3h-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 26 Sep 2022 06:21:18 +0000 Received: from pps.filterd (ppma03ams.nl.ibm.com [127.0.0.1]) by ppma03ams.nl.ibm.com (8.16.1.2/8.16.1.2) with SMTP id 28Q65dcS027226; Mon, 26 Sep 2022 06:21:16 GMT Received: from b06cxnps4075.portsmouth.uk.ibm.com (d06relay12.portsmouth.uk.ibm.com [9.149.109.197]) by ppma03ams.nl.ibm.com with ESMTP id 3jssh99ymk-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 26 Sep 2022 06:21:16 +0000 Received: from d06av25.portsmouth.uk.ibm.com (d06av25.portsmouth.uk.ibm.com [9.149.105.61]) by b06cxnps4075.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 28Q6LE2g64946680 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 26 Sep 2022 06:21:14 GMT Received: from d06av25.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 6005511C04C; Mon, 26 Sep 2022 06:21:14 +0000 (GMT) Received: from d06av25.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 686A911C04A; Mon, 26 Sep 2022 06:21:12 +0000 (GMT) Received: from [9.197.236.181] (unknown [9.197.236.181]) by d06av25.portsmouth.uk.ibm.com (Postfix) with ESMTP; Mon, 26 Sep 2022 06:21:12 +0000 (GMT) Message-ID: Date: Mon, 26 Sep 2022 14:21:11 +0800 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.6.1 Subject: Re: [PATCH V3] rs6000: cannot_force_const_mem for HIGH code rtx[PR106460] Content-Language: en-US To: Jiufu Guo Cc: dje.gcc@gmail.com, segher@kernel.crashing.org, linkw@gcc.gnu.org, gcc-patches@gcc.gnu.org References: <20220907070842.63722-1-guojiufu@linux.ibm.com> From: "Kewen.Lin" In-Reply-To: <20220907070842.63722-1-guojiufu@linux.ibm.com> Content-Type: text/plain; charset=UTF-8 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: OMDZ9fRAOYsMrDKnYbs7AZVTyw77CgR7 X-Proofpoint-GUID: QWNtJA6R7VqEFspKyAc8Rnn6JfgZ8ltG Content-Transfer-Encoding: 7bit X-Proofpoint-UnRewURL: 0 URL was un-rewritten MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.895,Hydra:6.0.528,FMLib:17.11.122.1 definitions=2022-09-26_04,2022-09-22_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 mlxscore=0 spamscore=0 clxscore=1015 phishscore=0 lowpriorityscore=0 bulkscore=0 priorityscore=1501 mlxlogscore=999 suspectscore=0 impostorscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2209130000 definitions=main-2209260036 X-Spam-Status: No, score=-12.6 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,GIT_PATCH_0,KAM_SHORT,NICE_REPLY_A,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,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 Jeff, on 2022/9/7 15:08, Jiufu Guo via Gcc-patches wrote: > Hi, > > As the issue in PR106460, a rtx 'high:DI (symbol_ref:DI ("var_48")' is tried > to store into constant pool and ICE occur. But actually, this rtx represents > partial address and can not be put into a .rodata section. > > This patch updates rs6000_cannot_force_const_mem to return true for rtx(s) with > HIGH code, because these rtx(s) indicate part of address and are not ok for > constant pool. > > Below are some examples: > (high:DI (const:DI (plus:DI (symbol_ref:DI ("xx") (const_int 12 [0xc]))))) > (high:DI (symbol_ref:DI ("var_1")..))) > > This patch updated the previous patch, and drafted an test case which ICE > without the patch, and assoicated with one PR. > https://gcc.gnu.org/pipermail/gcc-patches/2022-July/597712.html > This patch also updated the message for previous patch V2. > > I would ask help to review this patch one more time. > > Bootstrap and regtest pass on ppc64 and ppc64le. > Is this ok for trunk. > > BR, > Jeff(Jiufu) > > PR target/106460 > > gcc/ChangeLog: > > * config/rs6000/rs6000.cc (rs6000_cannot_force_const_mem): Return true > for HIGH code rtx. > > gcc/testsuite/ChangeLog: > > * gcc.target/powerpc/pr106460.c: New test. > --- > gcc/config/rs6000/rs6000.cc | 7 +++++-- > gcc/testsuite/gcc.target/powerpc/pr106460.c | 11 +++++++++++ > 2 files changed, 16 insertions(+), 2 deletions(-) > create mode 100644 gcc/testsuite/gcc.target/powerpc/pr106460.c > > diff --git a/gcc/config/rs6000/rs6000.cc b/gcc/config/rs6000/rs6000.cc > index 2f3146e56f8..04e3a393147 100644 > --- a/gcc/config/rs6000/rs6000.cc > +++ b/gcc/config/rs6000/rs6000.cc > @@ -9643,8 +9643,11 @@ rs6000_init_stack_protect_guard (void) > static bool > rs6000_cannot_force_const_mem (machine_mode mode ATTRIBUTE_UNUSED, rtx x) > { > - if (GET_CODE (x) == HIGH > - && GET_CODE (XEXP (x, 0)) == UNSPEC) > + /* If GET_CODE (x) is HIGH, the 'X' represets the high part of a symbol_ref. > + It indicates partial address, which can not be put into a constant pool. > + e.g. (high:DI (unspec:DI [(symbol_ref/u:DI ("*.LC0")..) > + (high:DI (symbol_ref:DI ("var")..)). */ Nit: Maybe it's good to align these two "(high:DI ... ? > + if (GET_CODE (x) == HIGH) > return true; > > /* A TLS symbol in the TOC cannot contain a sum. */ > diff --git a/gcc/testsuite/gcc.target/powerpc/pr106460.c b/gcc/testsuite/gcc.target/powerpc/pr106460.c > new file mode 100644 > index 00000000000..dfaffcb6e28 > --- /dev/null > +++ b/gcc/testsuite/gcc.target/powerpc/pr106460.c > @@ -0,0 +1,11 @@ Need a power10_ok effective target here. /* { dg-require-effective-target power10_ok } */ > +/* { dg-options "-O1 -mdejagnu-cpu=power10" } */ Nit: As Segher's review on one of my patches, O2 is preferred against O1 if it still works for this issue. The point is to avoid some related optimization (routines or passes) to be disabled at O1 one day and this becomes ineffective. BR, Kewen