| Message ID | 20260603151924.53706-7-chris.bazley@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 vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 8B1FC4BA23CB for <patchwork@sourceware.org>; Wed, 3 Jun 2026 15:26:48 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 8B1FC4BA23CB 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=eEKIcsee; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=eEKIcsee X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazon11010024.outbound.protection.outlook.com [52.101.69.24]) by sourceware.org (Postfix) with ESMTPS id 26B5B4BA2E19 for <gcc-patches@gcc.gnu.org>; Wed, 3 Jun 2026 15:21:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 26B5B4BA2E19 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 26B5B4BA2E19 Authentication-Results: sourceware.org; arc=pass smtp.remote-ip=52.101.69.24 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1780500068; cv=pass; b=YWjync6VdqRbevcaefVQPHz7xruRiQiVdCwy/w3aM9b2XyWerN24vbfVUHtKU5VNlF3unH1khLQVpJpmKelA4lpZQBytC8xF+cK503Gh2OqRwaqCZvQ1J9V/Rk8YKh4jSG96xWT0xFE6ldrGGNiZs0EsMCHWzIxbjSF+Sz8yUb8= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1780500068; c=relaxed/simple; bh=woWes6CSAsJ7RfxcblkFywnic8zo6ZRYekIMXFZvi9k=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=tUK/sBdhWpdxcBwqAnmNyjWDDbA0i2hC+9AQavHNDHi1bU2Yt7oX9gPG+95hoPPkoxeSHWG0JE7I4MrsYiMc4iEA9lIvJ4vEXpnYmlj0gKjS1NIRxYymnQsP1+j82j1wjFclXEXMeThMogMr87YWt5kt4fBzotn3jRaOQOcswXU= ARC-Authentication-Results: i=3; 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=eEKIcsee; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=eEKIcsee DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 26B5B4BA2E19 ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=Z+imvzYXUA8iu9yWM4mIlXf0MxVlrtK10SsydsyH8YdNzGft3eCUzrFM9wz3i3tDXZxeI1jdqguetrQS3o5AZ49EQsFmk1vveIoCzSYK5nFyICIn0nEqipZEUOX7L56oVOf3NTEDf9pRjrdH3YeF4MHeGSoT2VUUwtr96cUH5xa+E7Zl9B6UaF8j6/rAYu7DKe0maEQr8G2LABRKw1VkpkP8ZJGEYushoe3f94Y7RaZ8TJQU+IRwjLwnIQMB7LrMpVT+ueihgf1FRrbzTkUn4Gp4IxwOSYgLj4a+xsCzqV9kG5uw8JxTianrLeJyXP1IAzj0vQlWSQYfx7se0cv4Pg== 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=Yu0UQx4JaeWw5bvoWXScM0dIxm9HTjX6DzcR3T3CwxY=; b=k+3TXOhuZnCFUuVakNjfKpaeLISAKfm5oTaaZ52X3D52QADN4EwUKspYIBiGzuwyWRbt2XtuI888cTfX3I9JAXy/c75fN9U7tyRzLDDmxv0JTTBWutxlZ0TGYUWjOqM5xOBwBJFu7A7maWhCDGq1VJ91mK+D5yY0rGwilVaC8O3uS/llRnOjtj1/PE06owTaCagMTk02WeYtDT7KZ2RQWurvsdBs7y7yVRpSOIVSq4Q6LJbs3ZkpfFUu+Ia3Ut+ATHz2Ni39sWOqqnNihGZ3tG7K3cXASviO4tdXBqksux6vb2WAdbwRwhOZ2he2NzhZMYQuN9f6I4hiBuG6/A8STA== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) 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] 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=Yu0UQx4JaeWw5bvoWXScM0dIxm9HTjX6DzcR3T3CwxY=; b=eEKIcseek6I7/cFoLViFsJ1TvOIoJIk/k4lzZl+vnWQfVHVs55FtSWgTuQoURKYMmSLyQF6mXpD9J+pwU4VW1d16IlCeqkYaI8Rfe6JTVo+MrtrZ2MhTQUsf5gt9PIxVDwa+wfKChu/3YQiuAHq6BJOhH91x0XBGoJD8hBjQV1Y= Received: from DUZPR01CA0165.eurprd01.prod.exchangelabs.com (2603:10a6:10:4b3::6) by GVXPR08MB7823.eurprd08.prod.outlook.com (2603:10a6:150:2::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.7; Wed, 3 Jun 2026 15:20:59 +0000 Received: from DB3PEPF0000885B.eurprd02.prod.outlook.com (2603:10a6:10:4b3:cafe::87) by DUZPR01CA0165.outlook.office365.com (2603:10a6:10:4b3::6) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.92.7 via Frontend Transport; Wed, 3 Jun 2026 15:20:58 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) 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 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by DB3PEPF0000885B.mail.protection.outlook.com (10.167.242.6) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.92.5 via Frontend Transport; Wed, 3 Jun 2026 15:20:58 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ltNOT/3Fgktfovy7mvXu3h8UU3PDz4HMHMF3ggeFkDLFhcCtVY9TbrVkPJBOZYc7dKSfx1rw67cqtTVgoXr+e5f7V142eGE/2U1n2fTXoxMcqQb4HrAzQosiiP5/nMRM74aD1TJZXcLq+NcnhhCuCxlAvZCNzYzdWiKVGbaSBBHMwrAI5AL7+2nR9/iJoA+6VQeuc3Ttr/2Rxj3OmN6WwVJlKzUz/TJ3pBeYuaPiC6D9zrmkcoYP32Jl1NHpuyL0Gjp8pE1SmSLNMw6Va/fQiTCdaC0HyD+jetUpulDrcjjvZhvsezEJ/YYXPIkR+yDQn18PnMoGHMrDMTq21LjQ1A== 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=Yu0UQx4JaeWw5bvoWXScM0dIxm9HTjX6DzcR3T3CwxY=; b=hzjdviBmVO9I4t/EKkrvcl1MyQ6hPIaC3gmPQfgrHf2Sp/Bp/Q6QjzIc9goTGA3wm6N8mOr54rRPGme1xgnqTCyTdeZiWFz5rhdYy2KEyFFnWRPxySoJpFqQktfqJWYj0/DgQd3SWsiigRja+hycTS17El+IMBlPJNdM/M7NnjGqkN5ZDA6ysGlonWzP/BReNIo2R5Lzd7R3NRytCTaiAPGa6pAxYDF3v5chKDE0MU0V8TF39nmDkFeEN2j+K46bWqdpXwUBhzlquD0MguLavmC/o5U6CiQXNA1txpNXF1fYy5z8reCpFCLRHdCq/3rj0hIgcLgPxme8kwTO6tNu3g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 172.205.89.229) smtp.rcpttodomain=gcc.gnu.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=none (message not signed); arc=none (0) 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=Yu0UQx4JaeWw5bvoWXScM0dIxm9HTjX6DzcR3T3CwxY=; b=eEKIcseek6I7/cFoLViFsJ1TvOIoJIk/k4lzZl+vnWQfVHVs55FtSWgTuQoURKYMmSLyQF6mXpD9J+pwU4VW1d16IlCeqkYaI8Rfe6JTVo+MrtrZ2MhTQUsf5gt9PIxVDwa+wfKChu/3YQiuAHq6BJOhH91x0XBGoJD8hBjQV1Y= Received: from DUZPR01CA0009.eurprd01.prod.exchangelabs.com (2603:10a6:10:3c3::16) by AMDPR08MB11459.eurprd08.prod.outlook.com (2603:10a6:20b:71a::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.7; Wed, 3 Jun 2026 15:19:55 +0000 Received: from DU6PEPF00009525.eurprd02.prod.outlook.com (2603:10a6:10:3c3:cafe::8d) by DUZPR01CA0009.outlook.office365.com (2603:10a6:10:3c3::16) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.92.7 via Frontend Transport; Wed, 3 Jun 2026 15:19:55 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 172.205.89.229) smtp.mailfrom=arm.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 172.205.89.229 as permitted sender) receiver=protection.outlook.com; client-ip=172.205.89.229; helo=nebula.arm.com; pr=C Received: from nebula.arm.com (172.205.89.229) by DU6PEPF00009525.mail.protection.outlook.com (10.167.8.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.5 via Frontend Transport; Wed, 3 Jun 2026 15:19:54 +0000 Received: from AZ-NEU-EX04.Arm.com (10.240.25.138) by AZ-NEU-EX03.Arm.com (10.240.25.137) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.29; Wed, 3 Jun 2026 15:19:35 +0000 Received: from ip-10-248-139-165.eu-west-1.compute.internal (10.248.139.165) by mail.arm.com (10.240.25.138) with Microsoft SMTP Server id 15.2.2562.29 via Frontend Transport; Wed, 3 Jun 2026 15:19:35 +0000 From: Christopher Bazley <chris.bazley@arm.com> To: <gcc-patches@gcc.gnu.org> CC: <Tamar.Christina@arm.com>, <rdsandiford@googlemail.com>, <richard.guenther@gmail.com>, Christopher Bazley <chris.bazley@arm.com> Subject: [PATCH v11 06/12] Handle variable-length vector types in store_constructor Date: Wed, 3 Jun 2026 15:19:18 +0000 Message-ID: <20260603151924.53706-7-chris.bazley@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603151924.53706-1-chris.bazley@arm.com> References: <20260603151924.53706-1-chris.bazley@arm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-EOPAttributedMessage: 1 X-MS-TrafficTypeDiagnostic: DU6PEPF00009525:EE_|AMDPR08MB11459:EE_|DB3PEPF0000885B:EE_|GVXPR08MB7823:EE_ X-MS-Office365-Filtering-Correlation-Id: 69ac9cab-9773-4ca8-9041-08dec183b6cc 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|82310400026|36860700016|3023799007|11063799006|5023799004|56012099006|18002099003|22082099003|6133799003; X-Microsoft-Antispam-Message-Info-Original: jR94Q/IGWO/rqE8uzwjaSrum8wFABJG1Smw+QvsqhkC7vBPJ/KtdLkSZVFhEy8lNppGmfkXOFJXKFfJNJw4HujZUPlKyhKYMBqG0Jx2sZE6CKxd2ArNYc0MsXzdHpQiMGi6ADx2NAFAeYbZWU1YjFiSFG7oYxj6IEZjy4CtoCAdhYXZhXIPUKNVfcxvMgVxAoF6ZoKQlyMkaI0G7pcfl0kJdfPHqcqaL1D7cOH/Q3g34NhZsOuRwMILgCCPgmouKnUV2ZFfzvTN7bjoEq5wv7L6uvFahTEFPe24kAphOPn1a3brGbqQ1FBK0707B+oWGT/bpiKZe5bUlRR32A+kr79oFxcILkpPhIzqOJEzuWnpu3GkVyQDghaDmli3NyKFKMuu+3b9lufeDKXjGF9x93MEXwUmuCqe8mqUTkyLeTWEqMhxZ5XdrzxQWmuwF1dfoyXaqZIoxSyHeFiYNmD+LKTyYIKneEm0rxiX+6pp7J4z2rgdso5mBmuHfjgEnodW47md7l3amhz+hxkQdIITJMmc6sGdV9rct/F41rExcBHDrbwUWX2QrVme5sWDHX7j6iJF8lp3I33+aa+A3KYGQ3RTvNWOydAHpOwtSnypE69TpJU/LHYtK+mNpbJ6ja/frsVhTU8ypJukcgVF4eO6KYBAKLjEuq5aTtOaPb2XHaExOd46xBcu2Zm6jjk7qwMTtFTd8s5pqAELTvlwdAkB5kQfujAWiC7Km3mg7PywvGm0= X-Forefront-Antispam-Report-Untrusted: CIP:172.205.89.229; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:nebula.arm.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(1800799024)(376014)(82310400026)(36860700016)(3023799007)(11063799006)(5023799004)(56012099006)(18002099003)(22082099003)(6133799003); DIR:OUT; SFP:1101; X-Exchange-RoutingPolicyChecked: sWdmSLFq59V5slVRj91WBf+LMPdhgGSlqP/zoRxayWHDhO1JGoKYor1GmUgrUpAYktdYJ0pCKERd61UjpO20Bd2msg1Kq+TZJhaXwEbOaFPHPScVDNzHB13YaPJqGcOaHa1FPnBbG7z9/1EwMGfxn8dw8LDVz3sajoQhfQRsrF1YhaQXA32GR0J6oAamxWuFuX3as6ZYz1F8lzVHdEDLznrQskFcD/lmQ6ExeyVYj8iw6RoNBwXazJVBZM5+KpMMHrwAbIvaWmjP3PRyh0aOOMKbhGCM2Z0/mll+ZtxMEL8FVE065plnxC9eAYlXztXNeW2w4Qdm+nBBJKjHbdaFIw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AMDPR08MB11459 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB3PEPF0000885B.eurprd02.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 41a0f9de-dc46-4f4e-ad40-08dec18390df X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|35042699022|36860700016|82310400026|14060799003|376014|6133799003|3023799007|5023799004|22082099003|18002099003|11063799006|56012099006; X-Microsoft-Antispam-Message-Info: CMdHikHjklmFOeDZHRooOSSEhMF69DRdVfxTuxgxhzz4Je1N5M+2Vn6jzqsxRlLG8eDw4Jyy1j67tg4roGmMB5c/ff6JYuoBl1jTiE8gPKDznytgTM1EwccNhz2YMuXRkFzBHfSujkEgOyaftkQjb3zZc3m8lT8u8rq997pMrlRmb8jpIrqGNfEWCkcru4a33sSjW2zwiAM01YlXw435K+GyIs2qbBdSHx1/cTMABkStsymIA00/ZnU3eYRFHraHBEd5NBi2i2+5kRP8BNDkhZABwsGuHhJkGnO+tnYZlddG1FDxbkIqDoRFz4fEj7jYfk7H7kHfq53JTpRqdS5og5m4PAA+hdT5ix+1SWVRYJHnB62xmG5jM9IsYoa/VuLPsZhffEDwoTpazcPuoVCg5mEu8mLAE07R+qnltMxADOjF34AFMEaDU2hiaH6ZDfUDz+eyVF7Z6+aBHbOcK2LF7lOvndVLuLPTuEnm4kU2dVw1PJzSaIUxGVXWC0uShYI7kaLlZ9hRfCotkTuTScmlOPdfK8aZ14L6NgHKgt6vF9LjUD7/8gCP9aS5KlseD1RdlOFcGnd51ilc08juBRstJ+2xAhnZfXrSGLV0Mbfvu6GiNBroGsAPmOdDgSfFv3CVxkTHyyEVZdZLmtlG+MZAc/UFDOr009A+ZcxjhcSP/NipUFtgBThnN7igRuG2xVwQXQjrEbHFx6JkvzZXXbZkY1TCJPO/45cKPUsKn+I+euA= X-Forefront-Antispam-Report: CIP:4.158.2.129; CTRY:GB; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:outbound-uk1.az.dlp.m.darktrace.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(1800799024)(35042699022)(36860700016)(82310400026)(14060799003)(376014)(6133799003)(3023799007)(5023799004)(22082099003)(18002099003)(11063799006)(56012099006); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: tKBoyuTY0xSJLnyiSW9Km2umubCdaFnHsamfQfllEos4rPWBcVEH8apfZtjoTj1G4KMFwCDvUBtsBfAWQbGcoT4X2BsNDGPDk2Y++OIWeaqzAAPQesh9llCCwNLntMMqu6BAvd+IqE9lcKRYW94+prv7NCrJW5LxT8g44yiuzA+g2V/tp/e/RHCidNo8Ag4PoeWVW+Jutl13ZbitL5HnwAq1wiIX/vYxt9rC8L46HLNE5ONpqEWdSI4krkC8TpXfO5aFg7JjKP7wOaG4pxBCQB9HGFY1uqgz6g4cj7AjY/pvlZS8V0f2ZXDrRzvd2gVUXC6MEVHjK2LN2EM5X/+piwsS+IggBGqmhWzWmggoSX/BYYTFsY20KRCYGy9Irs6gPyDr/XgAmpAK0cuERg0R0tkKqQvYFRzRCL9LtVDrWskwYGCV3acl+q1BLNwalWwR X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jun 2026 15:20:58.3947 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 69ac9cab-9773-4ca8-9041-08dec183b6cc X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[4.158.2.129]; Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: DB3PEPF0000885B.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVXPR08MB7823 X-Spam-Status: No, score=-10.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FORGED_SPF_HELO, GIT_PATCH_0, RCVD_IN_DNSWL_BLOCKED, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_NONE, TXREP, URIBL_BLOCKED shortcircuit=no autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on 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 |
Extend BB SLP vectorization to use predicated tails
|
|
Commit Message
Christopher Bazley
June 3, 2026, 3:19 p.m. UTC
When given a constructor of variable-length vector type, the store_constructor function now builds a vector with the lower bound of the number of subparts in the vector type and uses it to emit the body of the kind of insn chosen by the convert_optab_handler function. Previously, this function used a fallback path of calling store_constructor_field upon discovering that the number of subparts in the vector type was not a constant multiple of the number of subparts in the element type. For example, this allows GCC to generate the following AArch64 assembly language output for the tail of a reduction in the slp_6 test: uaddv d31, p6, z31.b uaddv d27, p6, z27.b uaddv d26, p6, z26.b movi d30, #0 insr z30.b, b26 insr z30.b, b27 insr z30.b, b31 add z25.b, z25.b, z30.b instead of the following output (with predicated tails for basic block SLP vectorization but without this change): addvl x0, sp, #2 movi d0, #0 st1b z0.b, p6, [sp, #2, mul vl] uaddv d27, p6, z27.b uaddv d26, p6, z26.b uaddv d25, p6, z25.b str b27, [x0] addvl x0, sp, #1 add x0, x0, 1 ptrue p7.b, vl3 ld1b z0.b, p6/z, [sp, #2, mul vl] st1b z0.b, p6, [sp, #1, mul vl] str b26, [x0] ld1b z0.b, p6/z, [sp, #1, mul vl] st1b z0.b, p6, [sp] str b25, [sp, 2] ld1b z0.b, p6/z, [sp] add z28.b, z28.b, z0.b st1b z28.b, p7, [x1] addvl sp, sp, #3 or the original assembly language output (with neither predicated tails for basic block SLP vectorization nor this change): uaddv d31, p6, z31.b fmov x0, d31 uaddv d31, p6, z26.b add w6, w6, w0 fmov x0, d31 uaddv d31, p6, z27.b add w5, w5, w0 fmov x0, d31 add w4, w4, w0 gcc/ChangeLog: * expr.cc (store_constructor): Add an else block to handle cases of TREE_CODE (TREE_TYPE (exp)) == VECTOR_TYPE in which exact_div (n_elts, GET_MODE_NUNITS (eltmode)).is_constant (&const_n_elts) is false similar to the existing "element type is not a vector type" case except that const_n_elts is taken from the lower bound of the subparts of the vector type. --- gcc/expr.cc | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-)
Comments
On Wed, Jun 3, 2026 at 5:21 PM Christopher Bazley <chris.bazley@arm.com> wrote: > > When given a constructor of variable-length vector type, the > store_constructor function now builds a vector with the lower bound > of the number of subparts in the vector type and uses it to emit the > body of the kind of insn chosen by the convert_optab_handler function. > Previously, this function used a fallback path of calling > store_constructor_field upon discovering that the number of subparts > in the vector type was not a constant multiple of the number of > subparts in the element type. > > For example, this allows GCC to generate the following AArch64 assembly > language output for the tail of a reduction in the slp_6 test: > > uaddv d31, p6, z31.b > uaddv d27, p6, z27.b > uaddv d26, p6, z26.b > movi d30, #0 > insr z30.b, b26 > insr z30.b, b27 > insr z30.b, b31 > add z25.b, z25.b, z30.b > > instead of the following output (with predicated tails for basic block > SLP vectorization but without this change): > > addvl x0, sp, #2 > movi d0, #0 > st1b z0.b, p6, [sp, #2, mul vl] > uaddv d27, p6, z27.b > uaddv d26, p6, z26.b > uaddv d25, p6, z25.b > str b27, [x0] > addvl x0, sp, #1 > add x0, x0, 1 > ptrue p7.b, vl3 > ld1b z0.b, p6/z, [sp, #2, mul vl] > st1b z0.b, p6, [sp, #1, mul vl] > str b26, [x0] > ld1b z0.b, p6/z, [sp, #1, mul vl] > st1b z0.b, p6, [sp] > str b25, [sp, 2] > ld1b z0.b, p6/z, [sp] > add z28.b, z28.b, z0.b > st1b z28.b, p7, [x1] > addvl sp, sp, #3 > > or the original assembly language output (with neither predicated tails > for basic block SLP vectorization nor this change): > > uaddv d31, p6, z31.b > fmov x0, d31 > uaddv d31, p6, z26.b > add w6, w6, w0 > fmov x0, d31 > uaddv d31, p6, z27.b > add w5, w5, w0 > fmov x0, d31 > add w4, w4, w0 > > gcc/ChangeLog: > > * expr.cc (store_constructor): Add an else block to handle > cases of TREE_CODE (TREE_TYPE (exp)) == VECTOR_TYPE in which > exact_div (n_elts, GET_MODE_NUNITS (eltmode)).is_constant > (&const_n_elts) is false similar to the existing "element type > is not a vector type" case except that const_n_elts is taken > from the lower bound of the subparts of the vector type. > --- > gcc/expr.cc | 12 ++++++++++-- > 1 file changed, 10 insertions(+), 2 deletions(-) > > diff --git a/gcc/expr.cc b/gcc/expr.cc > index de73215ccc6..f163ea16fe2 100644 > --- a/gcc/expr.cc > +++ b/gcc/expr.cc > @@ -7498,11 +7498,14 @@ fields_length (const_tree type) > return count; > } > > - > /* Store the value of constructor EXP into the rtx TARGET. > TARGET is either a REG or a MEM; we know it cannot conflict, since > safe_from_p has been called. > CLEARED is true if TARGET is known to have been zero'd. > + If the constructor EXP has a vector type then elements of TARGET for which > + there is no corresponding element in EXP are zero'd. For a variable-length > + vector type, elements beyond the minimum number of subparts of the type are > + not zero'd. Huh? We agreed to zeroing even for VLA vectors. > SIZE is the number of bytes of TARGET we are allowed to modify: this > may not be the same as the size of EXP if we are assigning to a field > which has been packed to exclude padding bits. > @@ -8075,7 +8078,12 @@ store_constructor (tree exp, rtx target, int cleared, poly_int64 size, > similarly non-const type vectors. */ > icode = convert_optab_handler (vec_init_optab, mode, eltmode); > } > - > + else > + { > + /* Handle variable-length vector types. */ > + icode = convert_optab_handler (vec_init_optab, mode, eltmode); > + const_n_elts = constant_lower_bound (n_elts); > + } And here I'd like to see gcc_assert (icode != CODE_FOR_nothing); for doc/md.texi the vec_init optab documentation should be amended that for variable-size modes operand 1 contains elements for the minimum number of elements and the remainder of elements should be zeroed. > if (const_n_elts && icode != CODE_FOR_nothing) > { > vector = rtvec_alloc (const_n_elts); > -- > 2.43.0 >
diff --git a/gcc/expr.cc b/gcc/expr.cc index de73215ccc6..f163ea16fe2 100644 --- a/gcc/expr.cc +++ b/gcc/expr.cc @@ -7498,11 +7498,14 @@ fields_length (const_tree type) return count; } - /* Store the value of constructor EXP into the rtx TARGET. TARGET is either a REG or a MEM; we know it cannot conflict, since safe_from_p has been called. CLEARED is true if TARGET is known to have been zero'd. + If the constructor EXP has a vector type then elements of TARGET for which + there is no corresponding element in EXP are zero'd. For a variable-length + vector type, elements beyond the minimum number of subparts of the type are + not zero'd. SIZE is the number of bytes of TARGET we are allowed to modify: this may not be the same as the size of EXP if we are assigning to a field which has been packed to exclude padding bits. @@ -8075,7 +8078,12 @@ store_constructor (tree exp, rtx target, int cleared, poly_int64 size, similarly non-const type vectors. */ icode = convert_optab_handler (vec_init_optab, mode, eltmode); } - + else + { + /* Handle variable-length vector types. */ + icode = convert_optab_handler (vec_init_optab, mode, eltmode); + const_n_elts = constant_lower_bound (n_elts); + } if (const_n_elts && icode != CODE_FOR_nothing) { vector = rtvec_alloc (const_n_elts);