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 C97CC3858C3A; Wed, 15 May 2024 02:34:57 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C97CC3858C3A 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 C97CC3858C3A 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=1715740499; cv=none; b=hpyeamNs/Qj/rLeDq4hBW9k9CpkEYP8ISHWBo6StSr2iJmhEO5UYtsbRnwAjkXOvPf5LyuT+8RjyO4dA1cyFswUSa3Lwh5KBerrBfosyhViDNWBy7hOVRJ1enxJ7f92znlfD2KuMMMboU5eH/kctPrEtNUyUpzVVxECP1pY2KWU= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1715740499; c=relaxed/simple; bh=meKYx9XrLPoOBcVvuw7sdRZOT9NiV8BuINp7cX0UZRc=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=gnWMUSGvttaeM3cYfIy1J55PJ8Ry9we5qb+gkaA2JY8pXhm05kJqyew1gdX4xMR3gql1Zn+T/AwQqjmkCb3tONzFHuW3L8+aLidqrPWvILere8E2xqsjIRfR1tvtp4mBr83Ew2ZB3YZPtq9Mj9heL70fpl2HpjtYBG79kdZ60/0= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from pps.filterd (m0353723.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 44F2YGUf005914; Wed, 15 May 2024 02:34:57 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=dIiBVpC0jXMw3cSSolrd9fezvM0A/hFfD8vNn4q5AGU=; b=YA0y4eVlrC5l4g8GOJ7hCYLphRc/nH2mZtlqROJgH9oCjeUzHvh5lqTeFK68fSAZHL9o 3YbaTCQdCwhf4yFv9ABKgEOW2azv/xrXWA1u4ev1fXWscPVcvyo5bSFcIt3cJmCsPGRF c03wFlb3Nxbb6Rnz3DNPS9K5YDQJAajjXu+tKxIGHY8A0VTTjvrqZLTFnm/KPjuAUBoF Z8GM0V6bbP9gcgplr4+LCqlBRD2eKmAiklTG8xqNEQ11mxbw7b9Z21cbkRWKJCYBytxB xZD6qh3D4f0n3YvfFybrOAYvWlXysMguf11HZnnRlyhfTVEaoG2d9ghRj+W4ddszvuMh 0A== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3y4h7c8c9v-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 15 May 2024 02:34:57 +0000 Received: from m0353723.ppops.net (m0353723.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 44F2YuWs006597; Wed, 15 May 2024 02:34:56 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 3y4h7c8c9t-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 15 May 2024 02:34:56 +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 44F0xDPi018780; Wed, 15 May 2024 02:34:55 GMT Received: from smtprelay06.fra02v.mail.ibm.com ([9.218.2.230]) by ppma12.dal12v.mail.ibm.com (PPS) with ESMTPS id 3y2k0th77y-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 15 May 2024 02:34:55 +0000 Received: from smtpav02.fra02v.mail.ibm.com (smtpav02.fra02v.mail.ibm.com [10.20.54.101]) by smtprelay06.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 44F2YnRa32113316 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 15 May 2024 02:34:51 GMT Received: from smtpav02.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 925022004E; Wed, 15 May 2024 02:34:49 +0000 (GMT) Received: from smtpav02.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 791F120043; Wed, 15 May 2024 02:34:48 +0000 (GMT) Received: from genoa.aus.stglabs.ibm.com (unknown [9.40.192.157]) by smtpav02.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 15 May 2024 02:34:48 +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] report message for operator %a on unaddressible operand Date: Wed, 15 May 2024 10:34:47 +0800 Message-Id: <20240515023447.350404-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-GUID: ague1wIgOXrHM6Kn9UzzxoDufwXovvfS X-Proofpoint-ORIG-GUID: Ku1r6MtRKqkAerlzFfQBuHKm7mti4Uz7 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-14_16,2024-05-14_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 mlxlogscore=906 impostorscore=0 suspectscore=0 malwarescore=0 adultscore=0 priorityscore=1501 lowpriorityscore=0 clxscore=1015 mlxscore=0 spamscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2405010000 definitions=main-2405150016 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. 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 | 6 +++++- gcc/testsuite/gcc.target/powerpc/pr96866-1.c | 18 ++++++++++++++++++ gcc/testsuite/gcc.target/powerpc/pr96866-2.c | 13 +++++++++++++ 3 files changed, 36 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..38b2806f209 100644 --- a/gcc/config/rs6000/rs6000.cc +++ b/gcc/config/rs6000/rs6000.cc @@ -14664,7 +14664,11 @@ 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. */ + if (TARGET_TOC) + output_operand_lossage ("%%a requires a memory reference operand"); + } } 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..d5ccb9c2c49 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/pr96866-1.c @@ -0,0 +1,18 @@ +/* The "%a" modifier can not print the extern symbol through TOC under + -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..c0639d260ea --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/pr96866-2.c @@ -0,0 +1,13 @@ +/* The "%a" modifier can not handle the extern symbol through TOC + for "X" constraint under -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