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 E93E53858D1E; Mon, 20 May 2024 05:22:33 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org E93E53858D1E 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 E93E53858D1E Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=148.163.158.5 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1716182555; cv=none; b=bJc9ug3G8LufMDE3NC6iuQpYNGuntC5n5bk6V/QzfwldemTMySWT9svg5+T3EmgM9u3UZzyRzYJKtPV7//L4B2wVo5JsrjvknFa8pyupadGFHYlrndbPi6W73iqqbybVuLQq7CU6wGq04wqhgj7du7T8lAFopG1uZdvJ/LcAfCI= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1716182555; c=relaxed/simple; bh=xdHF7GiNMRRuyLgyhcnhw2F4jkTB5HXFX6GyxkSCCok=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=WCkXoXrvSewR7elISSlu2EN5rJ3ox8b4XCYucFMtx2hqQ2Fe+9i8vSCoIJi0TxTniPxFzbNBAycJ5GiorKJmMfU3lEbHob+GZgORMxa+QejdZdPESSqCIftAyU2cRViV+3VwhFCN1MqEDj+asHIS+yj/r/Rdk6p1+qGK/NpDu9E= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from pps.filterd (m0360072.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 44K4Maeg020090; Mon, 20 May 2024 05:22:33 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : mime-version : content-transfer-encoding; s=pp1; bh=CMBtIxFeYy4XWqqx3mvnTpLyRy62Q/294LymhU46GuE=; b=I907tpDWt3MeiQ4sXzlGVBwJcmzb/xNfs6EeMiFFdABXARCftwTaILhOMBIC9E1uOjoV JUZSpKU3/iEiK3BDiMmTLgTJF06Md8vzcq2ZNd8F2S1iZVEVXyRSuI+URPZQSfSaZu7R nuc7qDkLLiE7coX59MKCvG9ggS1TtJALg3uxcN/w9USGFCbwIDRmf4/0vCFsmoAjxcw6 y4gaIB9523D5bqB9U6ipQ75RqmqWWtPhuYXmWxUIbtb9nxqTcilCIbr3Z424wQnURB/x QxRkOkt3TL2CY9+qvh9qNEbJ2cVR7W2VF7uzVOEGrHBO252wdaAMIAc6wPjVSoRTQLnO WQ== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3y7yea03t9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 20 May 2024 05:22:32 +0000 Received: from m0360072.ppops.net (m0360072.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 44K5MW6W029177; Mon, 20 May 2024 05:22:32 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 3y7yea03t7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 20 May 2024 05:22:32 +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 44K4XUHk022087; Mon, 20 May 2024 05:22:31 GMT Received: from smtprelay04.fra02v.mail.ibm.com ([9.218.2.228]) by ppma12.dal12v.mail.ibm.com (PPS) with ESMTPS id 3y76nte9t8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 20 May 2024 05:22:31 +0000 Received: from smtpav05.fra02v.mail.ibm.com (smtpav05.fra02v.mail.ibm.com [10.20.54.104]) by smtprelay04.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 44K5MQmE20054276 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 20 May 2024 05:22:28 GMT Received: from smtpav05.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 1BF5820040; Mon, 20 May 2024 05:22:26 +0000 (GMT) Received: from smtpav05.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id EF7022004B; Mon, 20 May 2024 05:22:24 +0000 (GMT) Received: from genoa.aus.stglabs.ibm.com (unknown [9.40.192.157]) by smtpav05.fra02v.mail.ibm.com (Postfix) with ESMTP; Mon, 20 May 2024 05:22:24 +0000 (GMT) From: Jiufu Guo To: gcc-patches@gcc.gnu.org Cc: segher@kernel.crashing.org, dje.gcc@gmail.com, linkw@gcc.gnu.org, bergner@linux.ibm.com, guojiufu@linux.ibm.com Subject: [PATCH V3] report message for operator %a on unaddressible operand Date: Mon, 20 May 2024 13:22:24 +0800 Message-Id: <20240520052224.2583967-1-guojiufu@linux.ibm.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: p80GZjoG8TQqA8tHE1ZliJvBisqTuTDn X-Proofpoint-GUID: nHVHtacNSJUDzEcYkx-tkLT2_RqCftUZ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.650,FMLib:17.11.176.26 definitions=2024-05-20_02,2024-05-17_03,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 phishscore=0 mlxscore=0 adultscore=0 mlxlogscore=978 bulkscore=0 impostorscore=0 priorityscore=1501 clxscore=1011 lowpriorityscore=0 spamscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2405010000 definitions=main-2405200043 X-Spam-Status: No, score=-10.8 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 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, For PR96866, when printing asm code for modifier "%a", an addressable operand is required. While the constraint "X" allow any kind of operand even which is hard to get the address directly. e.g. extern symbol whose address is in TOC. An error message would be reported to indicate the invalid asm operand. Compare with previous version, code comments and message are updated. Bootstrap®test pass on ppc64{,le}. Is this ok for trunk? BR, Jeff(Jiufu Guo) PR target/96866 gcc/ChangeLog: * config/rs6000/rs6000.cc (print_operand_address): gcc/testsuite/ChangeLog: * gcc.target/powerpc/pr96866-1.c: New test. * gcc.target/powerpc/pr96866-2.c: New test. --- gcc/config/rs6000/rs6000.cc | 7 ++++++- gcc/testsuite/gcc.target/powerpc/pr96866-1.c | 18 ++++++++++++++++++ gcc/testsuite/gcc.target/powerpc/pr96866-2.c | 13 +++++++++++++ 3 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.target/powerpc/pr96866-1.c create mode 100644 gcc/testsuite/gcc.target/powerpc/pr96866-2.c diff --git a/gcc/config/rs6000/rs6000.cc b/gcc/config/rs6000/rs6000.cc index 117999613d8..7e7c36a1bad 100644 --- a/gcc/config/rs6000/rs6000.cc +++ b/gcc/config/rs6000/rs6000.cc @@ -14664,7 +14664,12 @@ print_operand_address (FILE *file, rtx x) fprintf (file, "@%s(%s)", SMALL_DATA_RELOC, reg_names[SMALL_DATA_REG]); else - gcc_assert (!TARGET_TOC); + { + /* Do not support getting address directly from TOC, emit error. + No more work is needed for !TARGET_TOC. */ + if (TARGET_TOC) + output_operand_lossage ("%%a requires an address of memory"); + } } else if (GET_CODE (x) == PLUS && REG_P (XEXP (x, 0)) && REG_P (XEXP (x, 1))) diff --git a/gcc/testsuite/gcc.target/powerpc/pr96866-1.c b/gcc/testsuite/gcc.target/powerpc/pr96866-1.c new file mode 100644 index 00000000000..bcebbd6e310 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/pr96866-1.c @@ -0,0 +1,18 @@ +/* The "%a" modifier can't get the address of extern symbol directly from TOC + with -fPIC, even the symbol is propgated for "X" constraint under -O2. */ +/* { dg-options "-fPIC -O2" } */ + +/* It's to verify no ICE here, ignore error messages about invalid 'asm'. */ +/* { dg-excess-errors "pr96866-1.c" } */ + +int x[2]; + +int __attribute__ ((noipa)) +f1 (void) +{ + int n; + int *p = x; + *p++; + __asm__ volatile("ld %0, %a1" : "=r"(n) : "X"(p)); + return n; +} diff --git a/gcc/testsuite/gcc.target/powerpc/pr96866-2.c b/gcc/testsuite/gcc.target/powerpc/pr96866-2.c new file mode 100644 index 00000000000..0577fd6d588 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/pr96866-2.c @@ -0,0 +1,13 @@ +/* The "%a" modifier can't get the address of extern symbol directly from TOC + with -fPIC. */ +/* { dg-options "-fPIC -O2" } */ + +/* It's to verify no ICE here, ignore error messages about invalid 'asm'. */ +/* { dg-excess-errors "pr96866-2.c" } */ + +void +f (void) +{ + extern int x; + __asm__ volatile("#%a0" ::"X"(&x)); +} -- 2.25.1