[5/7] middle-end: Add initial support for poly_int64 BIT_FIELD_REF in expand pass [PR96342]
Message ID | Z1BIZtEudb64bUvq@arm.com |
---|---|
State | New |
Headers |
Return-Path: <gcc-patches-bounces~patchwork=sourceware.org@gcc.gnu.org> X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id B4830385841F for <patchwork@sourceware.org>; Wed, 4 Dec 2024 12:21:03 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B4830385841F Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=NHj/+fCx; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=NHj/+fCx X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazlp170110001.outbound.protection.outlook.com [IPv6:2a01:111:f403:c200::1]) by sourceware.org (Postfix) with ESMTPS id ECCE23858D35 for <gcc-patches@gcc.gnu.org>; Wed, 4 Dec 2024 12:18:00 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org ECCE23858D35 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org ECCE23858D35 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=2a01:111:f403:c200::1 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1733314681; cv=pass; b=fDxpeifZVph/rwxMA/sroIl1WdwlJeBP9MtxqKRytZc6AmssUReEu0gV7JDbNrQx1Gk2SrJZKD0uCAGEUKRNWM1dFaVU+xiBuUKhlcmAJMnkxPg87n4y6WkHNfHYsVN5tdYjfYcV5zbX0ZcYMD/pEMAOYtwUfTL8suEKDk4+O2I= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1733314681; c=relaxed/simple; bh=ChA+/l2SxoTNhPwF2ch+yjaL9pz6URON288rTYBB7Rk=; h=DKIM-Signature:DKIM-Signature:Date:From:To:Subject:Message-ID: MIME-Version; b=VirksejZu2RS+GwK9u9LNPo8g2Gpw9qiePvJP9N3M/IMJxABEAvIhwfEy3HJyU516d/v7hEvV/4s/zgeuLTKRV2oDDcwXmJeHWmmPJzhMH/FPrFmg6zXdTcqGtfXqupfToZfyzTG9GY3kHnb+qID4RBJPiuYQNucwx4SD0a5pqs= ARC-Authentication-Results: i=3; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org ECCE23858D35 ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=CjWI4mntVMtv2X2m1XTOJ1aD7/Kw/YhQFdkl51R5SeTYPnZx7lo0GhTWZGK6UKvb9DzWaGd1Me/ZAOmKczX3SQjFLVajKXwwR2U/xmChPpK7OM3cU8bayHWpW88BLmFoiiMtPcIFtmcVFc0yWd+KkkRFjFm02aS3l+niWFrsisHhjkWrcLIbdA1Ve+N2iRHXDHBMgQfbqxLmXCSdXuuK3TOaOOev+uR/xCDEyNBcpubJTuFJSPvRB6TOAP+VmBlb5BbHWeeLaPPaKyFraduShyqUaNZme0n19s8bmZe68/3dO25JTFj+oTHv+DdAZg40uSGswf7v45DuLEpjA5p1vA== ARC-Message-Signature: i=2; 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=/9etiVZoRL/SzRzEkYcfQVIB0bwXw5fNLP44oKOck5A=; b=HL+LXupTq/SC43++hkk6ueoX3OEpixC4WQzgPzQBmMC2Yi24rngv7KDpDx/Xe0r8JbIuKBCUssHFrexpbSW+Tcsr5IR3Hmnf/+THmbQrjj0IinDOQUdz1qZiUpUb4vRJ3wFvWj6lBxf2tFZUkCzzSbVaimaP/0myDhiGpkoODeIaM764O8eVhHgDUF17zu4fp6+P6HmQlJrBspB+yTE/zrjt1LxyoZ7OekYYKkw90O6oc9J1PgTrWf80pC0OozApTorQetAljcejNn/nbZfTZxbSSJOUtiv4+mCAJNtArU9dJR3x/O1aJUQUgP/mFcVhoe5MsLAJ6DW94Nfmark0fQ== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=gcc.gnu.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/9etiVZoRL/SzRzEkYcfQVIB0bwXw5fNLP44oKOck5A=; b=NHj/+fCxjK0atmaQkha7mTIrNwWlHrsYRd/R7w+qyGN6C5VpONOJdVroCjkmpMTyv+Oa0pvohJqzjC0kGPp4W7ePo/cKQD2xE/KUekHsctd3CJqoUIN4CFlP/40mo9LakPVxPle04yKmZZSOlHfJNxdqGXN1dTvewDL80ZMpG9Y= Received: from DUZPR01CA0085.eurprd01.prod.exchangelabs.com (2603:10a6:10:46a::17) by PAVPR08MB8918.eurprd08.prod.outlook.com (2603:10a6:102:323::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8207.19; Wed, 4 Dec 2024 12:17:54 +0000 Received: from DB5PEPF00014B9C.eurprd02.prod.outlook.com (2603:10a6:10:46a:cafe::1a) by DUZPR01CA0085.outlook.office365.com (2603:10a6:10:46a::17) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8207.19 via Frontend Transport; Wed, 4 Dec 2024 12:17:54 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DB5PEPF00014B9C.mail.protection.outlook.com (10.167.8.170) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8230.7 via Frontend Transport; Wed, 4 Dec 2024 12:17:53 +0000 Received: ("Tessian outbound fd6255904ce0:v522"); Wed, 04 Dec 2024 12:17:53 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 417aba79a06a3213 X-TessianGatewayMetadata: AXHCv+r87826a1HepQWKKw+rJ6VuQbMibIbLvd2K8U79gUOsA8h0XGZzl5HH8mMk6zPFoO2aWKvM+YGnZiJuODppO/7tkhsKT4izdEqjCBwQPpHgjOwW4ad5uj3vRuasVUl6p16GPTJEYF10R8Y1Qw== X-CR-MTA-TID: 64aa7808 Received: from L5956d5f65a6c.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id ABE710FE-A080-4D2E-95BE-2439DA951153.1; Wed, 04 Dec 2024 12:17:46 +0000 Received: from EUR05-AM6-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id L5956d5f65a6c.1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384); Wed, 04 Dec 2024 12:17:46 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=EAiNet80oHiL4AK0k6ys6hzdk9ZhnPOIVDJjFd7lA8S6z8sonyPwDN+DC7pP0jLaMn6XSn/Q3CDOgn1GVArNamdKko7lcpTFF7lSo0yMb6Rk3q7AJXztlJLbeyZlrwl/qdx3HxoJ5T8rolm33nck9FPYgCyvU56ff9BnnZVciwYCYtCK+FVHY2cVugbLaXJGqFqhlyYY2kU0LcY3RFxMub3rGAehig62znWhlIJ2d58ESZLyhuS4GZnUm6IIpj2jNBbAr2lihQBQYvsbburS2uDRQxIL1M0O2ti250b2RFo26Q0jlM2HljHuRdtN3FQeKyWuRx6Mhc9VgLpSv/5tWQ== 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=/9etiVZoRL/SzRzEkYcfQVIB0bwXw5fNLP44oKOck5A=; b=kUVzj51Jw4eE32GhIfp4QKlpVAOcUWO/epiRc3O5uajbSwbqHhnjvbfCleTsgLKUTS9/+VGsT7Jin8Wni85MTsrC6AOkWxzPwvAUuUOV/kL5a9Z4EBe2w/QVkzdWl8UqgefoljtlpAyRvGiiBEwR6v6f97oQjHmU9iYUSoIcf4QHIPKt8TKmOuZbuapYm3ppaPullimDhdTor0CEdO/OW3eIiDo1LQVwSWxbyzGIruWmQdttPfIw8xAX0bkbMKvlpWaR4LRYCoX8Nl7sMZ/gNZXtn6pcXIybGIB+setOprF5v1uB4SVqGJTwYjQw+TOOWA2SQ8CABAjS+WauOZarhw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/9etiVZoRL/SzRzEkYcfQVIB0bwXw5fNLP44oKOck5A=; b=NHj/+fCxjK0atmaQkha7mTIrNwWlHrsYRd/R7w+qyGN6C5VpONOJdVroCjkmpMTyv+Oa0pvohJqzjC0kGPp4W7ePo/cKQD2xE/KUekHsctd3CJqoUIN4CFlP/40mo9LakPVxPle04yKmZZSOlHfJNxdqGXN1dTvewDL80ZMpG9Y= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) by AS8PR08MB6390.eurprd08.prod.outlook.com (2603:10a6:20b:31b::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8230.11; Wed, 4 Dec 2024 12:17:44 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::89dc:c731:362b:7c69]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::89dc:c731:362b:7c69%2]) with mapi id 15.20.8207.017; Wed, 4 Dec 2024 12:17:44 +0000 Date: Wed, 4 Dec 2024 12:17:42 +0000 From: Tamar Christina <tamar.christina@arm.com> To: gcc-patches@gcc.gnu.org Cc: nd@arm.com, rguenther@suse.de, richard.sandiford@arm.com Subject: [PATCH 5/7]middle-end: Add initial support for poly_int64 BIT_FIELD_REF in expand pass [PR96342] Message-ID: <Z1BIZtEudb64bUvq@arm.com> Content-Type: multipart/mixed; boundary="llLc3AxDDgHjY4KK" Content-Disposition: inline In-Reply-To: <patch-19026-tamar@arm.com> X-ClientProxiedBy: LO2P265CA0186.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:a::30) To VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI1PR08MB5325:EE_|AS8PR08MB6390:EE_|DB5PEPF00014B9C:EE_|PAVPR08MB8918:EE_ X-MS-Office365-Filtering-Correlation-Id: a41389fa-4b98-4471-26fe-08dd145dadb1 x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|1800799024|376014|366016; X-Microsoft-Antispam-Message-Info-Original: /7c1Jd8ucP8An1VB9QJ+dvkuCeV/59gKRs22dooa7wt/YunzJud7HfhZRyzzMJTaCcRoi92Qz0MLwcbmBneJHWuTSHchKawHym2YsSibAZ+Hph+/T5uvngVJrQZ7El/ZHDJ5ANdsEj+HdFXS0svbcUylURw7vofHcImAefyD6X5LKUVaFP9ReoshIRNteXYlIAyenJ5KcRZI60VtSbKNNgYtEkf7qfn2RS/QHQ//UWFvjUPdNdOC3uT0BvhFNccujZ99wv8QgwOrweSUimV3Jr2Undg7mwG2x8nK50xrC+0SvWDndio2VntjoZnIr9jilaHgqyxFCwVibcq5VkHAKvnz6duoeh1lFQjV6CES6pYReXngS+nEGE1CooQ3R9da8YtTOc3wBajt01bOdVr0niWV7n3yJOZxYOhAL4dpm/RMAx9Ed24acFux13oIO4w+2LCrRJhtOOgEsfiNUGSsnrprkVnX2y7HtWhWFqiY3EnHDF6w4NKw9+9Zre6026GB41u5wmVxhIqx9RwJeIQp8CkImrcYCU1QmdLdxOh+3Q9s7KzVBrSTUNcOmhKAg67FBlbdXvw/hEDnFNd+xDqn3d9T/9CHnI4c1RK0Ezo09vMEVYjYIXfKHrH//G+Cq+X+G7u9kFVbExJLmBW9qMfu5G3AZPw0MeNXhw1xA2rDfhOCFjUk3hyLKcK6S/iIsVE1GWUgYS6BMprAfMF2h1p2AzKya/LJbMmJVsSSQIATdBbV7bFf3VyhOezHc354FAuaRe2BakDTDgYO79L6u+bXo/2qKFUfWpjZq0ExtQfZ4JUw3ry3U6dMXktIXqCnFUHSqvbbjTElPdnmJmuF+O+t0Vj4hsMlMQzKCGee8lyX4Hq+8ONTePxF7DFnehoZFbf5DjgbeBY7/5RIH0WgkgJM/jCaLio4bYaDhTeI67Lwh7MgIh31daF7qMxiEqr/v6luBpHGxmjeOLXSnMibLLhHdPKoIpjvkKPs+S6W+a5fes912b6XCwhby/5/7mdTQUNZigCAdIVVm7b1gBij7Kx+FIsYWqPiQ26wvb+rsnKXKE+YDjajat8D9xAmB2Ss+HQmJfECR/PuzSbwZjRscn8RMeTJuow1oOsPfFPbkqDpI3SSIjsmMHKLuekM90e8Ov9cKykrOG29sB8tB4zn/LMoQIJnnTIdxgqmqcOXDCB7feSmuMspn66r1cJFxPphF/JTQIT7DwGyogD6LvIlVCFID/XRqPEv8R41afZn+RkeLl6/8i4gfmN+aE2S2IkJMDMJOp1+dkZyvKBBmgq0JTlKnywlqWGSUhKypaA3HVnu9+2CSZJGTA6ESVy0Vl4NXRXkXQzPhBGHCy0LLEBTirRd3479lLq47fVE5nxcm2Gnf+s= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI1PR08MB5325.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(376014)(366016); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6390 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-SkipListedInternetSender: ip=[2603:10a6:803:13e::17]; domain=VI1PR08MB5325.eurprd08.prod.outlook.com X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5PEPF00014B9C.eurprd02.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: a877f27c-bf06-4521-8d28-08dd145da822 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|36860700013|82310400026|14060799003|376014|35042699022; X-Microsoft-Antispam-Message-Info: =?utf-8?q?FRIP9P3svt3pzF8i3sccqXWtd1iQtAJ?= =?utf-8?q?+BL0YXHtbh6H0JqN74f5ykXArEP+kv4yYU6YYg+J9uUFIrwvxLVK5E1n66VoumSWV?= =?utf-8?q?PFO2F2GghBErEGLcymXRGcFva2ACCLEn9Gzw70GWzKZhrrErCAi24oimREW9xdUf2?= =?utf-8?q?4OemwMamIumxHuTrHaw8aFLjec+4SEmo8/W20BWHxGhFzzTwsX3lir4m4TsXXilRa?= =?utf-8?q?D0sbviXVuBoKYx7iUFvMMsxF5ku9kBzRvOKKojh0JGGUf6omgXABVWC9Hyyx57vlP?= =?utf-8?q?R5CS+G7IdD7EsqL44soITzacB1PWKirnD7An1N6P4smD+QM2fPZndlUOmJAu8PegV?= =?utf-8?q?/HLWLKElzjV6bnMwG+w4tbnJTOu/mWMAaTuQIKm5kRFqty6xurfKxkVlEXuIERtP+?= =?utf-8?q?yIksoG10wdaGzzwFyxMsI8U81lKLgdbmmJp+eYb40Q+whw0+FZNimUo6CmZ4hQEXt?= =?utf-8?q?aMUb7YpxCAuUgXMnv5UxjEOetkfh7OANBYgy3D32IUrqXXH5fBr3qTjfVYj2T6+O0?= =?utf-8?q?Z4Wj2hpgfVcSlgf4HXRzq96yXCF3KJWoJs86GJ2Sjjipm+iV1dUvcQjt8KVFvkzlE?= =?utf-8?q?MqyZkQBXAy/4OOKebyyfgMuikmvgA1q0oCU7R8S/9mro9lso342WnYUEtgJ66LqOT?= =?utf-8?q?pVpOIG/0Nks9q4JIeoUwlP4IpeTNaHCi/LH49P6JHx0K4cNxll0G0Yjo1CH/CsAos?= =?utf-8?q?GOnYttaYNs5Dc5fSV9BsxAwgWFaP8HDbBn4lhZ3GuT5mFJEvozdRqNQMXZXA/fUm2?= =?utf-8?q?seUNX5za365IrV3+tQ+uyEzsmrNrWDEGNLMJjsc6wmf1sYtvIU4taY/JELXAXCxPD?= =?utf-8?q?v3u/Fe2J3+znZ2j+42nW1OvQQCW1znTF5Yz82uVnLgO4zdl0hrE5En8gZmX2kWKPi?= =?utf-8?q?oMlo5w4gZT3Gjtugi9+7TV3idnoMdtbfTRo201RLf8RIJG2ExOTdQaZGKZw106gly?= =?utf-8?q?L3euN0jAr6rAnthPyWQ8JMIVu4+1cwTLslq6Vy7kQrUNnBOVmvkG24qkvrb7BWfny?= =?utf-8?q?zTzUOQRfwqI5OvZPkmiV8SYma/WLBWAElRms6J4kzAf7UtlAgTMmJB9sWJKVuTjE/?= =?utf-8?q?ocnwd6A3Qp5dlhA8CWvohdv2DN43wB7kfT/f32q8v33Ihr8fwsTP3aP6/4N7DB4w5?= =?utf-8?q?Nfoy22De6tsJUhsOjVHsMB+e1Suz8yz5SBJwuVmvv37J3SMyHkFw/W0WpxNRZKKvz?= =?utf-8?q?ngXN+8T0C4u1MlA7PWwIBN7ucojzpJhYp2w4VQ17xuztKz82XXeYrVC6Nl6ViVzwm?= =?utf-8?q?Fa7y5Uyt9v3FzVkw6JGH54QiflKdDBaBpvy9ks1DcYRxYJBfxhCC0NrGVe4yotd2T?= =?utf-8?q?ZH/cePQrQVk1/wXWgJrIis+t3NRVIOefHSPfi8TcnFemRw2N/zsxBemZlR8OEYCJI?= =?utf-8?q?trZDW0XCfSl?= X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:64aa7808-outbound-1.mta.getcheckrecipient.com; CAT:NONE; SFS:(13230040)(1800799024)(36860700013)(82310400026)(14060799003)(376014)(35042699022); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Dec 2024 12:17:53.4279 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a41389fa-4b98-4471-26fe-08dd145dadb1 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: DB5PEPF00014B9C.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAVPR08MB8918 X-Spam-Status: No, score=-12.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FORGED_SPF_HELO, GIT_PATCH_0, KAM_LOTSOFHASH, SPF_HELO_PASS, SPF_NONE, TXREP, UNPARSEABLE_RELAY, URIBL_BLOCKED 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 <gcc-patches.gcc.gnu.org> List-Unsubscribe: <https://gcc.gnu.org/mailman/options/gcc-patches>, <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe> List-Archive: <https://gcc.gnu.org/pipermail/gcc-patches/> List-Post: <mailto:gcc-patches@gcc.gnu.org> List-Help: <mailto:gcc-patches-request@gcc.gnu.org?subject=help> List-Subscribe: <https://gcc.gnu.org/mailman/listinfo/gcc-patches>, <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe> Errors-To: gcc-patches-bounces~patchwork=sourceware.org@gcc.gnu.org |
Series |
None
|
|
Commit Message
Tamar Christina
Dec. 4, 2024, 12:17 p.m. UTC
Hi All, While `poly_int64' has been the default representation of bitfield size and offset for some time, there was a lack of support for the use of non-constant `poly_int64' values for those values throughout the compiler, limiting the applicability of the BIT_FIELD_REF rtl expression for variable length vectors, such as those used by SVE. This patch starts work on extending the functionality of relevant functions in the expand pass such as to enable their use by the compiler for such vectors. gcc/ChangeLog: PR target/96342 * expr.cc (store_constructor): Enable poly_{u}int64 type usage. (get_inner_reference): Ditto. * expmed.cc (store_bit_field_1): Add is_constant checks to bitsize and bitnum. Co-authored-by: Tamar Christina <tamar.christina@arm.com> Bootstrapped Regtested on aarch64-none-linux-gnu, arm-none-linux-gnueabihf, x86_64-pc-linux-gnu -m32, -m64 and no issues. Ok for master? Thanks, Tamar --- --
Comments
On Wed, Dec 4, 2024 at 1:21 PM Tamar Christina <tamar.christina@arm.com> wrote: > > Hi All, > > While `poly_int64' has been the default representation of bitfield size > and offset for some time, there was a lack of support for the use of > non-constant `poly_int64' values for those values throughout the > compiler, limiting the applicability of the BIT_FIELD_REF rtl expression > for variable length vectors, such as those used by SVE. > > This patch starts work on extending the functionality of relevant > functions in the expand pass such as to enable their use by the compiler > for such vectors. > > gcc/ChangeLog: > > PR target/96342 > * expr.cc (store_constructor): Enable poly_{u}int64 type usage. > (get_inner_reference): Ditto. > * expmed.cc (store_bit_field_1): Add is_constant checks to bitsize > and bitnum. > > Co-authored-by: Tamar Christina <tamar.christina@arm.com> > > Bootstrapped Regtested on aarch64-none-linux-gnu, > arm-none-linux-gnueabihf, x86_64-pc-linux-gnu > -m32, -m64 and no issues. > > Ok for master? > > Thanks, > Tamar > > --- > diff --git a/gcc/expmed.cc b/gcc/expmed.cc > index 2d5e5243ce8e9c7dd2eeb0996711801d969b3f22..3721d55967ba21516b9a816505e0e999a53c3d2f 100644 > --- a/gcc/expmed.cc > +++ b/gcc/expmed.cc > @@ -849,6 +849,10 @@ store_bit_field_1 (rtx str_rtx, poly_uint64 bitsize, poly_uint64 bitnum, > polynomial bitnum and bitsize. */ > > /* From here on we need to be looking at a fixed-size insertion. */ > + > + if (!bitsize.is_constant () || !bitnum.is_constant ()) > + error ("bit field masks of variable size length/offset unsupported"); > + Nak for this, we'll ICE immediately after anyway. > unsigned HOST_WIDE_INT ibitsize = bitsize.to_constant (); > unsigned HOST_WIDE_INT ibitnum = bitnum.to_constant (); > > diff --git a/gcc/expr.cc b/gcc/expr.cc > index 70f2ecec99839e6247ed7601e0bff67e7aa38ba4..2d90d7aac296077cc0bda8a1b4732b1cd44a610d 100644 > --- a/gcc/expr.cc > +++ b/gcc/expr.cc > @@ -7897,15 +7897,15 @@ store_constructor (tree exp, rtx target, int cleared, poly_int64 size, > { > unsigned HOST_WIDE_INT idx; > constructor_elt *ce; > - int i; > + poly_int64 i; > bool need_to_clear; > insn_code icode = CODE_FOR_nothing; > tree elt; > tree elttype = TREE_TYPE (type); > int elt_size = vector_element_bits (type); > machine_mode eltmode = TYPE_MODE (elttype); > - HOST_WIDE_INT bitsize; > - HOST_WIDE_INT bitpos; > + poly_int64 bitsize; > + poly_int64 bitpos; > rtvec vector = NULL; > poly_uint64 n_elts; > unsigned HOST_WIDE_INT const_n_elts; > @@ -8002,7 +8002,7 @@ store_constructor (tree exp, rtx target, int cleared, poly_int64 size, > ? TREE_TYPE (CONSTRUCTOR_ELT (exp, 0)->value) > : elttype); > if (VECTOR_TYPE_P (val_type)) > - bitsize = tree_to_uhwi (TYPE_SIZE (val_type)); > + bitsize = tree_to_poly_uint64 (TYPE_SIZE (val_type)); > else > bitsize = elt_size; > > @@ -8015,12 +8015,12 @@ store_constructor (tree exp, rtx target, int cleared, poly_int64 size, > need_to_clear = true; > else > { > - unsigned HOST_WIDE_INT count = 0, zero_count = 0; > + poly_uint64 count = 0, zero_count = 0; > tree value; > > FOR_EACH_CONSTRUCTOR_VALUE (CONSTRUCTOR_ELTS (exp), idx, value) > { > - int n_elts_here = bitsize / elt_size; > + poly_int64 n_elts_here = exact_div (bitsize, elt_size); > count += n_elts_here; > if (mostly_zeros_p (value)) > zero_count += n_elts_here; > @@ -8029,7 +8029,7 @@ store_constructor (tree exp, rtx target, int cleared, poly_int64 size, > /* Clear the entire vector first if there are any missing elements, > or if the incidence of zero elements is >= 75%. */ > need_to_clear = (maybe_lt (count, n_elts) > - || 4 * zero_count >= 3 * count); > + || maybe_gt (4 * zero_count, 3 * count)); > } > > if (need_to_clear && maybe_gt (size, 0) && !vector) > @@ -8058,9 +8058,9 @@ store_constructor (tree exp, rtx target, int cleared, poly_int64 size, > element of TARGET, determined by counting the elements. */ > for (idx = 0, i = 0; > vec_safe_iterate (CONSTRUCTOR_ELTS (exp), idx, &ce); > - idx++, i += bitsize / elt_size) > + idx++, i += exact_div (bitsize, elt_size)) > { > - HOST_WIDE_INT eltpos; > + poly_int64 eltpos; > tree value = ce->value; That seems incomplete. We also have if (ce->index) eltpos = tree_to_uhwi (ce->index); else eltpos = i; which should use tree_to_poly_int64 then? And if .to_constant () below works, why not use constant_multiple_p instead of exact_div? It seems to me the code interweaves two cases with multi-exclusive conditions where only one is expected to have poly-ints but the changes make sure to obfuscate this even more ... Note we have GIMPLE verification that vector CTOR have no holes and no or incrementing INTEGER_CST indices unless the components are vectors themselves in which case the CTOR has to be full and CTOR_NELTS * subparts of element should be known_eq to subparts of the CTOR vector type. > if (cleared && initializer_zerop (value)) > @@ -8081,7 +8081,7 @@ store_constructor (tree exp, rtx target, int cleared, poly_int64 size, > } > else > gcc_assert (TREE_CODE (TREE_TYPE (value)) != VECTOR_TYPE); > - RTVEC_ELT (vector, eltpos) = expand_normal (value); > + RTVEC_ELT (vector, eltpos.to_constant ()) = expand_normal (value); > } > else > { > @@ -8457,10 +8457,10 @@ get_inner_reference (tree exp, poly_int64 *pbitsize, > > if (size_tree != 0) > { > - if (! tree_fits_uhwi_p (size_tree)) > - mode = BLKmode, *pbitsize = -1; > + if (poly_int_tree_p (size_tree, pbitsize)) > + ; > else > - *pbitsize = tree_to_uhwi (size_tree); > + mode = BLKmode, *pbitsize = -1; > } > > *preversep = reverse_storage_order_for_component_p (exp); > > > > > --
> > if (need_to_clear && maybe_gt (size, 0) && !vector) > > @@ -8058,9 +8058,9 @@ store_constructor (tree exp, rtx target, int cleared, > poly_int64 size, > > element of TARGET, determined by counting the elements. */ > > for (idx = 0, i = 0; > > vec_safe_iterate (CONSTRUCTOR_ELTS (exp), idx, &ce); > > - idx++, i += bitsize / elt_size) > > + idx++, i += exact_div (bitsize, elt_size)) > > { > > - HOST_WIDE_INT eltpos; > > + poly_int64 eltpos; > > tree value = ce->value; > > That seems incomplete. We also have > > if (ce->index) > eltpos = tree_to_uhwi (ce->index); > else > eltpos = i; > > which should use tree_to_poly_int64 then? And if .to_constant () below works, > why not use constant_multiple_p instead of exact_div? > > It seems to me the code interweaves two cases with multi-exclusive conditions > where only one is expected to have poly-ints but the changes make sure to > obfuscate this even more ... > > Note we have GIMPLE verification that vector CTOR have no holes and no > or incrementing INTEGER_CST indices unless the components are vectors > themselves in which case the CTOR has to be full and CTOR_NELTS * > subparts of element > should be known_eq to subparts of the CTOR vector type. > Done, gcc/ChangeLog: PR target/96342 * expr.cc (store_constructor): Enable poly_{u}int64 type usage. (get_inner_reference): Ditto. Co-authored-by: Tamar Christina <tamar.christina@arm.com> Bootstrapped Regtested on aarch64-none-linux-gnu, arm-none-linux-gnueabihf, x86_64-pc-linux-gnu -m32, -m64 and no issues. Ok for master? Thanks, Tamar -- inline copy of patch -- diff --git a/gcc/expr.cc b/gcc/expr.cc index 980ac415cfc7e2f7cf666637e756f857758688fc..4c6039c6608c0d9db3d1796eeab2129cb844433f 100644 --- a/gcc/expr.cc +++ b/gcc/expr.cc @@ -7901,15 +7901,14 @@ store_constructor (tree exp, rtx target, int cleared, poly_int64 size, { unsigned HOST_WIDE_INT idx; constructor_elt *ce; - int i; bool need_to_clear; insn_code icode = CODE_FOR_nothing; tree elt; tree elttype = TREE_TYPE (type); int elt_size = vector_element_bits (type); machine_mode eltmode = TYPE_MODE (elttype); - HOST_WIDE_INT bitsize; - HOST_WIDE_INT bitpos; + poly_int64 bitsize; + poly_int64 bitpos; rtvec vector = NULL; poly_uint64 n_elts; unsigned HOST_WIDE_INT const_n_elts; @@ -8006,7 +8005,7 @@ store_constructor (tree exp, rtx target, int cleared, poly_int64 size, ? TREE_TYPE (CONSTRUCTOR_ELT (exp, 0)->value) : elttype); if (VECTOR_TYPE_P (val_type)) - bitsize = tree_to_uhwi (TYPE_SIZE (val_type)); + bitsize = tree_to_poly_uint64 (TYPE_SIZE (val_type)); else bitsize = elt_size; @@ -8019,12 +8018,12 @@ store_constructor (tree exp, rtx target, int cleared, poly_int64 size, need_to_clear = true; else { - unsigned HOST_WIDE_INT count = 0, zero_count = 0; + poly_uint64 count = 0, zero_count = 0; tree value; FOR_EACH_CONSTRUCTOR_VALUE (CONSTRUCTOR_ELTS (exp), idx, value) { - int n_elts_here = bitsize / elt_size; + poly_int64 n_elts_here = exact_div (bitsize, elt_size); count += n_elts_here; if (mostly_zeros_p (value)) zero_count += n_elts_here; @@ -8033,7 +8032,7 @@ store_constructor (tree exp, rtx target, int cleared, poly_int64 size, /* Clear the entire vector first if there are any missing elements, or if the incidence of zero elements is >= 75%. */ need_to_clear = (maybe_lt (count, n_elts) - || 4 * zero_count >= 3 * count); + || maybe_gt (4 * zero_count, 3 * count)); } if (need_to_clear && maybe_gt (size, 0) && !vector) @@ -8060,9 +8059,13 @@ store_constructor (tree exp, rtx target, int cleared, poly_int64 size, /* Store each element of the constructor into the corresponding element of TARGET, determined by counting the elements. */ - for (idx = 0, i = 0; - vec_safe_iterate (CONSTRUCTOR_ELTS (exp), idx, &ce); - idx++, i += bitsize / elt_size) + HOST_WIDE_INT chunk_size = 0; + bool chunk_multiple_p = constant_multiple_p (bitsize, elt_size, + &chunk_size); + gcc_assert (chunk_multiple_p || vec_vec_init_p); + + for (idx = 0; vec_safe_iterate (CONSTRUCTOR_ELTS (exp), idx, &ce); + idx++) { HOST_WIDE_INT eltpos; tree value = ce->value; @@ -8073,7 +8076,7 @@ store_constructor (tree exp, rtx target, int cleared, poly_int64 size, if (ce->index) eltpos = tree_to_uhwi (ce->index); else - eltpos = i; + eltpos = idx * chunk_size; if (vector) { @@ -8461,10 +8464,8 @@ get_inner_reference (tree exp, poly_int64 *pbitsize, if (size_tree != 0) { - if (! tree_fits_uhwi_p (size_tree)) + if (!poly_int_tree_p (size_tree, pbitsize)) mode = BLKmode, *pbitsize = -1; - else - *pbitsize = tree_to_uhwi (size_tree); } *preversep = reverse_storage_order_for_component_p (exp);
On Mon, 9 Dec 2024, Tamar Christina wrote: > > > if (need_to_clear && maybe_gt (size, 0) && !vector) > > > @@ -8058,9 +8058,9 @@ store_constructor (tree exp, rtx target, int cleared, > > poly_int64 size, > > > element of TARGET, determined by counting the elements. */ > > > for (idx = 0, i = 0; > > > vec_safe_iterate (CONSTRUCTOR_ELTS (exp), idx, &ce); > > > - idx++, i += bitsize / elt_size) > > > + idx++, i += exact_div (bitsize, elt_size)) > > > { > > > - HOST_WIDE_INT eltpos; > > > + poly_int64 eltpos; > > > tree value = ce->value; > > > > That seems incomplete. We also have > > > > if (ce->index) > > eltpos = tree_to_uhwi (ce->index); > > else > > eltpos = i; > > > > which should use tree_to_poly_int64 then? And if .to_constant () below works, > > why not use constant_multiple_p instead of exact_div? > > > > It seems to me the code interweaves two cases with multi-exclusive conditions > > where only one is expected to have poly-ints but the changes make sure to > > obfuscate this even more ... > > > > Note we have GIMPLE verification that vector CTOR have no holes and no > > or incrementing INTEGER_CST indices unless the components are vectors > > themselves in which case the CTOR has to be full and CTOR_NELTS * > > subparts of element > > should be known_eq to subparts of the CTOR vector type. > > > > Done, OK. Thanks, Richard. > gcc/ChangeLog: > > PR target/96342 > * expr.cc (store_constructor): Enable poly_{u}int64 type usage. > (get_inner_reference): Ditto. > > Co-authored-by: Tamar Christina <tamar.christina@arm.com> > > Bootstrapped Regtested on aarch64-none-linux-gnu, > arm-none-linux-gnueabihf, x86_64-pc-linux-gnu > -m32, -m64 and no issues. > > Ok for master? > > Thanks, > Tamar > > -- inline copy of patch -- > > diff --git a/gcc/expr.cc b/gcc/expr.cc > index 980ac415cfc7e2f7cf666637e756f857758688fc..4c6039c6608c0d9db3d1796eeab2129cb844433f 100644 > --- a/gcc/expr.cc > +++ b/gcc/expr.cc > @@ -7901,15 +7901,14 @@ store_constructor (tree exp, rtx target, int cleared, poly_int64 size, > { > unsigned HOST_WIDE_INT idx; > constructor_elt *ce; > - int i; > bool need_to_clear; > insn_code icode = CODE_FOR_nothing; > tree elt; > tree elttype = TREE_TYPE (type); > int elt_size = vector_element_bits (type); > machine_mode eltmode = TYPE_MODE (elttype); > - HOST_WIDE_INT bitsize; > - HOST_WIDE_INT bitpos; > + poly_int64 bitsize; > + poly_int64 bitpos; > rtvec vector = NULL; > poly_uint64 n_elts; > unsigned HOST_WIDE_INT const_n_elts; > @@ -8006,7 +8005,7 @@ store_constructor (tree exp, rtx target, int cleared, poly_int64 size, > ? TREE_TYPE (CONSTRUCTOR_ELT (exp, 0)->value) > : elttype); > if (VECTOR_TYPE_P (val_type)) > - bitsize = tree_to_uhwi (TYPE_SIZE (val_type)); > + bitsize = tree_to_poly_uint64 (TYPE_SIZE (val_type)); > else > bitsize = elt_size; > > @@ -8019,12 +8018,12 @@ store_constructor (tree exp, rtx target, int cleared, poly_int64 size, > need_to_clear = true; > else > { > - unsigned HOST_WIDE_INT count = 0, zero_count = 0; > + poly_uint64 count = 0, zero_count = 0; > tree value; > > FOR_EACH_CONSTRUCTOR_VALUE (CONSTRUCTOR_ELTS (exp), idx, value) > { > - int n_elts_here = bitsize / elt_size; > + poly_int64 n_elts_here = exact_div (bitsize, elt_size); > count += n_elts_here; > if (mostly_zeros_p (value)) > zero_count += n_elts_here; > @@ -8033,7 +8032,7 @@ store_constructor (tree exp, rtx target, int cleared, poly_int64 size, > /* Clear the entire vector first if there are any missing elements, > or if the incidence of zero elements is >= 75%. */ > need_to_clear = (maybe_lt (count, n_elts) > - || 4 * zero_count >= 3 * count); > + || maybe_gt (4 * zero_count, 3 * count)); > } > > if (need_to_clear && maybe_gt (size, 0) && !vector) > @@ -8060,9 +8059,13 @@ store_constructor (tree exp, rtx target, int cleared, poly_int64 size, > > /* Store each element of the constructor into the corresponding > element of TARGET, determined by counting the elements. */ > - for (idx = 0, i = 0; > - vec_safe_iterate (CONSTRUCTOR_ELTS (exp), idx, &ce); > - idx++, i += bitsize / elt_size) > + HOST_WIDE_INT chunk_size = 0; > + bool chunk_multiple_p = constant_multiple_p (bitsize, elt_size, > + &chunk_size); > + gcc_assert (chunk_multiple_p || vec_vec_init_p); > + > + for (idx = 0; vec_safe_iterate (CONSTRUCTOR_ELTS (exp), idx, &ce); > + idx++) > { > HOST_WIDE_INT eltpos; > tree value = ce->value; > @@ -8073,7 +8076,7 @@ store_constructor (tree exp, rtx target, int cleared, poly_int64 size, > if (ce->index) > eltpos = tree_to_uhwi (ce->index); > else > - eltpos = i; > + eltpos = idx * chunk_size; > > if (vector) > { > @@ -8461,10 +8464,8 @@ get_inner_reference (tree exp, poly_int64 *pbitsize, > > if (size_tree != 0) > { > - if (! tree_fits_uhwi_p (size_tree)) > + if (!poly_int_tree_p (size_tree, pbitsize)) > mode = BLKmode, *pbitsize = -1; > - else > - *pbitsize = tree_to_uhwi (size_tree); > } > > *preversep = reverse_storage_order_for_component_p (exp); >
diff --git a/gcc/expmed.cc b/gcc/expmed.cc index 2d5e5243ce8e9c7dd2eeb0996711801d969b3f22..3721d55967ba21516b9a816505e0e999a53c3d2f 100644 --- a/gcc/expmed.cc +++ b/gcc/expmed.cc @@ -849,6 +849,10 @@ store_bit_field_1 (rtx str_rtx, poly_uint64 bitsize, poly_uint64 bitnum, polynomial bitnum and bitsize. */ /* From here on we need to be looking at a fixed-size insertion. */ + + if (!bitsize.is_constant () || !bitnum.is_constant ()) + error ("bit field masks of variable size length/offset unsupported"); + unsigned HOST_WIDE_INT ibitsize = bitsize.to_constant (); unsigned HOST_WIDE_INT ibitnum = bitnum.to_constant (); diff --git a/gcc/expr.cc b/gcc/expr.cc index 70f2ecec99839e6247ed7601e0bff67e7aa38ba4..2d90d7aac296077cc0bda8a1b4732b1cd44a610d 100644 --- a/gcc/expr.cc +++ b/gcc/expr.cc @@ -7897,15 +7897,15 @@ store_constructor (tree exp, rtx target, int cleared, poly_int64 size, { unsigned HOST_WIDE_INT idx; constructor_elt *ce; - int i; + poly_int64 i; bool need_to_clear; insn_code icode = CODE_FOR_nothing; tree elt; tree elttype = TREE_TYPE (type); int elt_size = vector_element_bits (type); machine_mode eltmode = TYPE_MODE (elttype); - HOST_WIDE_INT bitsize; - HOST_WIDE_INT bitpos; + poly_int64 bitsize; + poly_int64 bitpos; rtvec vector = NULL; poly_uint64 n_elts; unsigned HOST_WIDE_INT const_n_elts; @@ -8002,7 +8002,7 @@ store_constructor (tree exp, rtx target, int cleared, poly_int64 size, ? TREE_TYPE (CONSTRUCTOR_ELT (exp, 0)->value) : elttype); if (VECTOR_TYPE_P (val_type)) - bitsize = tree_to_uhwi (TYPE_SIZE (val_type)); + bitsize = tree_to_poly_uint64 (TYPE_SIZE (val_type)); else bitsize = elt_size; @@ -8015,12 +8015,12 @@ store_constructor (tree exp, rtx target, int cleared, poly_int64 size, need_to_clear = true; else { - unsigned HOST_WIDE_INT count = 0, zero_count = 0; + poly_uint64 count = 0, zero_count = 0; tree value; FOR_EACH_CONSTRUCTOR_VALUE (CONSTRUCTOR_ELTS (exp), idx, value) { - int n_elts_here = bitsize / elt_size; + poly_int64 n_elts_here = exact_div (bitsize, elt_size); count += n_elts_here; if (mostly_zeros_p (value)) zero_count += n_elts_here; @@ -8029,7 +8029,7 @@ store_constructor (tree exp, rtx target, int cleared, poly_int64 size, /* Clear the entire vector first if there are any missing elements, or if the incidence of zero elements is >= 75%. */ need_to_clear = (maybe_lt (count, n_elts) - || 4 * zero_count >= 3 * count); + || maybe_gt (4 * zero_count, 3 * count)); } if (need_to_clear && maybe_gt (size, 0) && !vector) @@ -8058,9 +8058,9 @@ store_constructor (tree exp, rtx target, int cleared, poly_int64 size, element of TARGET, determined by counting the elements. */ for (idx = 0, i = 0; vec_safe_iterate (CONSTRUCTOR_ELTS (exp), idx, &ce); - idx++, i += bitsize / elt_size) + idx++, i += exact_div (bitsize, elt_size)) { - HOST_WIDE_INT eltpos; + poly_int64 eltpos; tree value = ce->value; if (cleared && initializer_zerop (value)) @@ -8081,7 +8081,7 @@ store_constructor (tree exp, rtx target, int cleared, poly_int64 size, } else gcc_assert (TREE_CODE (TREE_TYPE (value)) != VECTOR_TYPE); - RTVEC_ELT (vector, eltpos) = expand_normal (value); + RTVEC_ELT (vector, eltpos.to_constant ()) = expand_normal (value); } else { @@ -8457,10 +8457,10 @@ get_inner_reference (tree exp, poly_int64 *pbitsize, if (size_tree != 0) { - if (! tree_fits_uhwi_p (size_tree)) - mode = BLKmode, *pbitsize = -1; + if (poly_int_tree_p (size_tree, pbitsize)) + ; else - *pbitsize = tree_to_uhwi (size_tree); + mode = BLKmode, *pbitsize = -1; } *preversep = reverse_storage_order_for_component_p (exp);