From patchwork Wed Oct 2 22:20:11 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Qing Zhao X-Patchwork-Id: 1992189 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=oracle.com header.i=@oracle.com header.a=rsa-sha256 header.s=corp-2023-11-20 header.b=f+OarCTq; dkim=pass (1024-bit key; unprotected) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-oracle-onmicrosoft-com header.b=iqNsiAWl; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4XJq7c3wjqz1xtq for ; Thu, 3 Oct 2024 08:22:51 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id D680D3858D39 for ; Wed, 2 Oct 2024 22:22:48 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by sourceware.org (Postfix) with ESMTPS id 1878E3858D39 for ; Wed, 2 Oct 2024 22:22:30 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 1878E3858D39 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=oracle.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 1878E3858D39 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1727907752; cv=pass; b=iZq/rgsNF1TX103sfWWjhGWeFmLkKMEeIKoVcYjcsLM+Z+YKp5Yt8NDHM9CfBIPYw0AFDbfHNoJ2hFY3IhvtekC5d3c805Nuqw0K8MzLM8to7Xgr4bEK4T9qUTsmdQKaiBTe4NjiBYpVb+/4KNrNGtgop8r3qpZjF0+gatAZBsc= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1727907752; c=relaxed/simple; bh=Jv3DO2RrN3oK8yzGJtnCOjMeJuH+mObdrHmS8JAHvYg=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=FndSYfnQztV4Ds0DFMDNyfSgg3Ur/2Mp0QR9U8Wx53A3dh+eQO5Fvbkb1pId8Z/jBOzdToG9336B01aivrLTHgEBOhYsjt5f6BSBpOb7gnTTKqdGnRKr7sQa9SUBd6tF6R/I5QiF/+4SeKSmljcE1QRMgHLLrlR86YKzeu8v22s= ARC-Authentication-Results: i=2; server2.sourceware.org Received: from pps.filterd (m0333521.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 492L6jxi003640; Wed, 2 Oct 2024 22:22:26 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h= from:to:cc:subject:date:message-id:content-transfer-encoding :content-type:mime-version; s=corp-2023-11-20; bh=tDyRJrnKNAaiXl 9g7Un2AdIXIs43CSnmCgM4dChLfRk=; b=f+OarCTqtrr/dWm0TWpGN1BehyiPqa 2XeW6s1UQ83mG0CWefwNWtMw7U7b5oPuAGXkakXkwxt1F3RLaU/xEy0J+INFqISY 4Y/vvNPHQEOE069yqQq6dD6CMZ0WUby0uJXR12/gjo9i8Q0ORykKZlSMPBrlYyXd wOse3bM6DI5jLwnLE5ts810SNd4w/q2BBSzms8ngUL+YcZCOwy0jiq2UD1XqC4fX YKpZPvt0wqVUQ2oW5O6UXGR5metqHte4NCBlFtESq0CI+s72FDG+Wg1HFRSKS/Hh A+6bgq0IqQLiJvq/hk3gyvfPxVQQV+EARFKZa771jKBcbJ++05i7cBTQ== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 41x8qbark1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 02 Oct 2024 22:22:26 +0000 (GMT) Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 492LZ9UA028418; Wed, 2 Oct 2024 22:22:25 GMT Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12lp2044.outbound.protection.outlook.com [104.47.66.44]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 41x889p73v-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 02 Oct 2024 22:22:25 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=k/0/sfCIBvQxacH7QqaDaGmYOTDY+eenbjG1MfwP5mqSD7MwR3Fz4F9nxcfms3eFzDacFx5dXi2dVpeyfsbWRcyPdGGktz+EzoocLr2WstuLvqZy7OS1WwhbbYHkAS6TKA95j3L/XQozsq2aHdUN5QFIp56/oj3/VyvGzKiuaGW++13atK0rmvvwWJK0qR4uTMJhr6RAlN4ubXHspxvL0ldErIPuI773JCtE+osEVjfMaIUkvC/bF6xg6er3XlVRulBIboI53prKE1EKnK7Qvt/iWGNTrsyw2yJn/FrxY0F1oGxbE7SA2cC8Chbu+CaDjeV6TUjwWVlqcrmBcY5jrg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=tDyRJrnKNAaiXl9g7Un2AdIXIs43CSnmCgM4dChLfRk=; b=BtUC2GqRZGT/V8yTMa+oDM9PX0jFwM2qpAVMnC6oNCCK5Dh18d1iC08oNAh5R3IYyyid+UVWIIxpjWFjXIcHIghjH1l1kiXC8yt3y/I/PTjp91NzazEB0nI0O/R/zeOdD93vXdI4xWjxkV1zhHKw2GOryF653ait+H0Rvag+GwGftjkKEOX15JpLXpu9mSaU/oRGDfXBS42s/zvun1JydpuFtkMzR0wwx0lGOYj29swcOhY4MBhhx4PLaqcp/Ln7wUvUM/VZT0FGSE7Ce37dEhx8Xm8y5LL2olmJg08gc5vtP0eeWHbiKD9uDrawFqFYGaE5ftLcxReznSXQiUHkfg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tDyRJrnKNAaiXl9g7Un2AdIXIs43CSnmCgM4dChLfRk=; b=iqNsiAWls2p6ewpEl3vOYNZ46kx2LFVUMM69vz4PLjh8gNGyfjSbHTa4/HSKVI14lIxmL7xme2W093ZkAyRPRqeppTqKnPqTPf01TSnW9/mlIX2Kh8QiJbMd2iihvyQJCHLRvE57H/ctLYheFSdPP3XV0DewR8bRCk48ed7Pu/E= Received: from CY8PR10MB6538.namprd10.prod.outlook.com (2603:10b6:930:5a::17) by SJ0PR10MB7691.namprd10.prod.outlook.com (2603:10b6:a03:51a::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.16; Wed, 2 Oct 2024 22:22:23 +0000 Received: from CY8PR10MB6538.namprd10.prod.outlook.com ([fe80::8a:61cd:764a:e47]) by CY8PR10MB6538.namprd10.prod.outlook.com ([fe80::8a:61cd:764a:e47%4]) with mapi id 15.20.8026.016; Wed, 2 Oct 2024 22:22:23 +0000 From: Qing Zhao To: polacek@redhat.com, jakub@redhat.com Cc: bruno@clisp.org, gcc-patches@gcc.gnu.org, qing zhao Subject: [PATCH v2] c: ICE in build_counted_by_ref [PR116735] Date: Wed, 2 Oct 2024 22:20:11 +0000 Message-ID: <20241002222219.1609430-1-qing.zhao@oracle.com> X-Mailer: git-send-email 2.43.5 X-ClientProxiedBy: SJ0PR03CA0122.namprd03.prod.outlook.com (2603:10b6:a03:33c::7) To CY8PR10MB6538.namprd10.prod.outlook.com (2603:10b6:930:5a::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY8PR10MB6538:EE_|SJ0PR10MB7691:EE_ X-MS-Office365-Filtering-Correlation-Id: 75862267-b344-41f5-76b5-08dce330b00d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: oBLYUZrZ+3pnxL1KrFILedCDC5o9DRCymLyUxK5jtXqGVhqOJ9u4Mvj4WD7fAIEjd0gwGOpITcWDcrJQ3XTHtdu7y0C203cjzxNro7EqzhUNdKfOOOwS4409bcUjglf1RXwgEYjOVvDgf6/JsrjKvFRC6MherJniK94B+znU+IUTqgywsb6UrnE/XQr9o5eQcF102CfHH1O4wVfRyVxJf3Z/QZk/hWe+N9V3YE7NGGNTW2HjEXjB75GQD9XF5xCi5fsGlmJAztGo7icEwIlD+HJPrNIpBj4d2dI0B4wHAYdS7w7JbS0kGbvp5sN7scpldmT5NYPf2lE5E5QwXFXJjj0rllxo9xiwhbozp9iqsIlneZnb99g2YgWDvLz/fRTscd5zdGHNL/0WBad+fe+8q65gnmv5urXHs5684bL9T08AOP3GbWMeUTJjhOEl5bAKdzCSUOpv0vKuYZgf/h/QeOrOvXDkhhJPftvZGiilbU5o3dc7gz8STHvqgma5t3Cl+rnq5jT+DMIkpC8ZWYumE3+hQsMiZsbAfst95dCiG4b++8Ad5nfrp/XDPIuI/GPPkxTRW3u8pme0L0IyF/aXUw/O8xTQvedUJjMJFPf17hDhUqlTk+ry/o5RhZ7C3PeRJn07PqaCrUROwMDdvH0oBOah6fk0LSufaXfLgb6w4mRQQqvK9oZ70IOkWJkcWJ+hG6SG3a8zLEmZjsptSsz9jbdMwxlmY5c+nWvBbCE4D2ypha6qvmpgOUKbKivPliNeYgutADdUDzxedBxkcrDphMCGAGfQSTsKbaiEB0pQApzsJRjWnBLDPBTmGmLu+9vpavmvEshq+EZ+ykq4KvfackmNxgR0tjD89cGPGXQpTI9HyrASX68UNntQ/WnXUvnMKIbYKznYJN9jMwWVN/DtE/kgklvPr4lIeuHJuX7ks1BLqAYhY2V+cGLwMhPlqwrfH1c2iM05KuloO69LnVTLXOYFtbwiA0e16B18X8rcqXtILh47gMPI+DYwPGjD2WOGCLPQiBvzOdym3bSeBlAgmj39j2KBy3IeMaPvEM4jsdLm3ZpUpNsBEILeE3iCg3DiNOoFhwI+k01f9bDYWaJXnPMmszccI5kYiDzix/PLh+IzTajiEBF9WBaEZ1UoppgJOqKiwx0MPm44S1NoSHJ/1yhQx7o53wr4bPbR6WsquU5gOJJG/0fqTHLB5Jhj0AFLu/7LPha4QPAkUHYj9tmCEithMA22ZhD/JD1sOzB7I4c= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CY8PR10MB6538.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(366016)(1800799024); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 4P61OulWuxE+2wnfnke1O1iLcPHsNmFRMbDSobItRb2fao5KrYu3jKKfcb6nOAAXxhAX5117uFU7hs2JfS2cppx5jcl8pEbx2NGhK/+N8Zvgr+h8KnbszcCJSNr4nFOAAtVO0EspPVsa2DikmiyQt8QcXVDMsMMZLFkgP5tnle5nuGbzYEGLv6sKDJhCqjqzJpVzOp0tb6hJkLKsbKwwcR+xk6S39CccqcBBOnXHWpUpmE9IXKrxXtpzjK7q/JDLHN0fYVrMO3sYd6WIGOya3a6VdEaft2AvPZq7r+qmtQEJWkaqnY5rMb6Ztu00uocm7jU0Pej2yqm2APLOwGn95vrnXuZ7BVcUa7iJd8WexDqURMtw8u52nBIL6Ui5X3WUc6QoMWwnNstPEl+TGwOp+7I4vfVYy23yOMEhTlWTJfzlMArUbmw0akVQVVb6rHKEHYH5YNIUDiiAjF2DzmyNiKQ6voUmUPgdhGBsRGpNnQzDdipz80aAklL3Fg3jPjYW7jBh0cV8kkREc51jO9piaNzjWFnR3qqfApdckG4u8G3Ixlgl1OqCohtwxHLt7MBEZqcUrjoVTt6R4UUtsDUna3o+mcN7Bpwf8azkmxW412Oc1eTpnSpOBWuoVx02IbI7BJKmvhmIVbYzs6ggCC2ARBviHYTRIdf6OHFIuNCMG6WRFDfPouQLVKh9EhmpWdoTxwYp8cVFy4wyVcj925QnceEQ5SK5yiff44dwFOb26Ubwm/MIIe5S2i8oAsyoeaiLzX9pLJ6bm6zDnI7lPjei7D+OhPsrk+nlZK7DkW7oC+sNhVy6jDJh24nd0708vjl4P5701cBVp/Ndj3eF3ZtExWawDorppwLfUbWNIyPMOIQiAH+e1Np2hTuz15J0qEVUBMeRCTgFhMwsTC5uky6w3IDNwv213X4jjvMWyqKkonZqKlY49BiSGvFwA8NwdIFtsl6zP9bki6eCOFxah35oCWMmltAcKUf99gH/Xfi38y/eo8VpCoV0IgMeOg+e6fubJbQlaxSzAnU0oNIM6eSV31CfmJRadmv2l+FndXU0sheETfwAG03b60AGajVPKtyQCMhTLEhQWMESWj4Uhu0iK638DOSf+7FU2wLHFSK+qU+/nMUicJ6zDtbDyOBgY5BWD8b9mtcuOoFr4T3t6v7eNWJ8sApURjlxX4xvN/lEeKQStY0zuWWvbV/xZbX+nD+Yr7OaMJrUq80EX8el1yH9VWeSM23I7X7evCl85O6LLC4vTYSMGLKsNlaiT2pubeB19jw8yJPJP0nSw8+1MD7V5gG1qVwkighdzIhK6Pf2kMp6VC4FarTuqimZF98jyTd0HYvzI5EqBbSVv8bWwn6BKahNpg4Nqxfj8iv+l+zAAt255V9thjBUXehNJ4KNdpwi2VHzM1IIXdlJ90IgtqNzCYrW0r1eYO/bv92XPEglxgG04oSwfIm9xMXrm3eiJWzD8JKaRbkyAG0X+6rUlUL2OM+p2MLOnTTFyzO9vKOpBKf0dJPlZpbk928UxXm/er6wHKyRL86ReWdoLJ0o8CsN3knRnaMskLioZFuVdmXhVllm/uiHLpFyRef1IOVHaDB9 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: oTUz8BOBso1yNJUXwlacK+Zt7N4IMP9a3xp1FKo7ZGyCDpzWUyvt5o7R+SKROQYncxEkWthKv9Zy7EktfqMsXCpoc061A7LjXlVt0Vu2IBjYnFtvt7wpY9xHrTXS0+3caM2dvui1P+WunGeKmJNjFQOsW7fQ8uTGnspBEp9YanVT1/Dn3YWApUgXVxESvgN9MrTQiEKH9ugDaoSIq0sg2Km2t7p6t18e+T9UGe0A0ZLtGCCyXqswDlWZ0rMtgBsmo6G1ZDu+X0YV5TdaquEJv33y8/OW3klBVdTa4D845RSL/+R0MTDd3lfQRjSMpth8Ro8atYqHu2wR8dM5maD/O7qd70TdpP2mIeq9AtpWiOWpcE5erv/y1fuT1Nd9JAIvFyebVSMp7BDsVRtdjE6EBILiwCy+5l0NN7rGMi+ORdLwwKPYkZmfF/45Cjvr1kPypDMPYPWGIfH00JQXTfnD+oK59znG/k8oib0UwuhR9UKSUVSmDGojb9CQIxe+0zVXFXhfzV0UXZdexIiEnVxIHTukJuXj9pFn2dNIxvS4E11DmBIPBsPN8c2nJK8TsMHBAWAHxAbw+aezx+4cYOU+qbvFzEU7e8GHgkkINsDJR0c= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 75862267-b344-41f5-76b5-08dce330b00d X-MS-Exchange-CrossTenant-AuthSource: CY8PR10MB6538.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Oct 2024 22:22:23.2348 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: GcBGs/FoB/tacFHVuYs0j/0AQVAU1OvFbPUZwBrcXyFKpOr6j+3DoiAH8sqq8Bn7xLnwb3VHK0fqPi0TgzOCxA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR10MB7691 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1051,Hydra:6.0.680,FMLib:17.12.62.30 definitions=2024-10-02_21,2024-09-30_01,2024-09-30_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 mlxscore=0 malwarescore=0 mlxlogscore=999 phishscore=0 suspectscore=0 spamscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2408220000 definitions=main-2410020158 X-Proofpoint-GUID: eBUWFKA-1gDaukHdMNjwdu2vCOxeJaAN X-Proofpoint-ORIG-GUID: eBUWFKA-1gDaukHdMNjwdu2vCOxeJaAN X-Spam-Status: No, score=-11.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NONE, 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 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~incoming=patchwork.ozlabs.org@gcc.gnu.org From: qing zhao Hi, this is the 2nd version of the patch. compared to the 1st version, the major changes are to address Marek and Jacub's comments. bootstrapped and regression tested on both x86 and aarch64. Okay for committing? thanks. Qing ====================== When handling the counted_by attribute, if the corresponding field doesn't exit, in additiion to issue error, we should also remove the already added non-existing "counted_by" attribute from the field_decl. PR c/116735 gcc/c/ChangeLog: * c-decl.cc (verify_counted_by_attribute): Remove the attribute when error. gcc/testsuite/ChangeLog: * gcc.dg/flex-array-counted-by-9.c: New test. --- gcc/c/c-decl.cc | 32 +++++++++++-------- .../gcc.dg/flex-array-counted-by-9.c | 25 +++++++++++++++ 2 files changed, 43 insertions(+), 14 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/flex-array-counted-by-9.c diff --git a/gcc/c/c-decl.cc b/gcc/c/c-decl.cc index aa7f69d1b7b..224c015cd6d 100644 --- a/gcc/c/c-decl.cc +++ b/gcc/c/c-decl.cc @@ -9502,14 +9502,17 @@ verify_counted_by_attribute (tree struct_type, tree field_decl) tree counted_by_field = lookup_field (struct_type, fieldname); - /* Error when the field is not found in the containing structure. */ + /* Error when the field is not found in the containing structure and + remove the corresponding counted_by attribute from the field_decl. */ if (!counted_by_field) - error_at (DECL_SOURCE_LOCATION (field_decl), - "argument %qE to the %qE attribute is not a field declaration" - " in the same structure as %qD", fieldname, - (get_attribute_name (attr_counted_by)), - field_decl); - + { + error_at (DECL_SOURCE_LOCATION (field_decl), + "argument %qE to the % attribute" + " is not a field declaration in the same structure" + " as %qD", fieldname, field_decl); + DECL_ATTRIBUTES (field_decl) + = remove_attribute ("counted_by", DECL_ATTRIBUTES (field_decl)); + } else /* Error when the field is not with an integer type. */ { @@ -9518,14 +9521,15 @@ verify_counted_by_attribute (tree struct_type, tree field_decl) tree real_field = TREE_VALUE (counted_by_field); if (!INTEGRAL_TYPE_P (TREE_TYPE (real_field))) - error_at (DECL_SOURCE_LOCATION (field_decl), - "argument %qE to the %qE attribute is not a field declaration" - " with an integer type", fieldname, - (get_attribute_name (attr_counted_by))); - + { + error_at (DECL_SOURCE_LOCATION (field_decl), + "argument %qE to the % attribute" + " is not a field declaration with an integer type", + fieldname); + DECL_ATTRIBUTES (field_decl) + = remove_attribute ("counted_by", DECL_ATTRIBUTES (field_decl)); + } } - - return; } /* TYPE is a struct or union that we're applying may_alias to after the body is diff --git a/gcc/testsuite/gcc.dg/flex-array-counted-by-9.c b/gcc/testsuite/gcc.dg/flex-array-counted-by-9.c new file mode 100644 index 00000000000..5c6fedd0d3d --- /dev/null +++ b/gcc/testsuite/gcc.dg/flex-array-counted-by-9.c @@ -0,0 +1,25 @@ +/* PR c/116735 */ +/* { dg-options "-std=c99" } */ +/* { dg-do compile } */ + +struct foo { + int len; + int element[] __attribute__ ((__counted_by__ (lenx))); /* { dg-error "attribute is not a field declaration in the same structure as" } */ +}; + +struct bar { + float count; + int array[] __attribute ((counted_by (count))); /* { dg-error "attribute is not a field declaration with an integer type" } */ +}; + +int main () +{ + struct foo *p = __builtin_malloc (sizeof (struct foo) + 3 * sizeof (int)); + struct bar *q = __builtin_malloc (sizeof (struct bar) + 3 * sizeof (int)); + p->len = 3; + p->element[0] = 17; + p->element[1] = 13; + q->array[0] = 13; + q->array[2] = 17; + return 0; +}