From patchwork Tue Aug 25 07:46:37 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexey Lapshin X-Patchwork-Id: 142156 Return-Path: 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 DCBB14BA7994 for ; Tue, 25 Aug 2026 07:47:33 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org DCBB14BA7994 Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=espressifsystems.onmicrosoft.com header.i=@espressifsystems.onmicrosoft.com header.a=rsa-sha256 header.s=selector1-espressifsystems-onmicrosoft-com header.b=Soas8/Z7 X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from OS8PR02CU002.outbound.protection.outlook.com (mail-japanwestazon11022093.outbound.protection.outlook.com [40.107.75.93]) by sourceware.org (Postfix) with ESMTPS id 9BA2C4BA2E10 for ; Tue, 25 Aug 2026 07:46:56 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 9BA2C4BA2E10 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=espressif.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=espressif.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 9BA2C4BA2E10 Authentication-Results: sourceware.org; arc=pass smtp.remote-ip=40.107.75.93 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1787644017; cv=pass; b=pmSGPfXICmy096MsOAwcwqhuJ7FNwHlios91fa6HprWtGi62oM/TlCbIbTq3MYcvuecEW70WL3WqbzO5hqJ4FrJIaexMP251Iqdpj2kYEya0gY42o+F5sjRkQbl6nMwt+R3clzx4/dASPQFK78HFm14cyD1wEskiDP1VtzA4We8= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1787644017; c=relaxed/simple; bh=ul8UZr4Whl0jn27pfD1hJNzPyhAuA05+gfPyMS9qPtg=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=GHEUesEGWcyhZUMs1uvGuMfjDHZgJuC/VhmUvloPZTqOpWrX48kgXMNBuGDsu82EXpFF6u4ndg8JvlgB0qqivOPN26qFMxCj8YWAY+iIYMBVa4b1tE+zBsRuhpwu2rFevq1Jz5uKnAKTeSia1f78HAg0RvGPqQf2ClHz79O+fuM= ARC-Authentication-Results: i=2; sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=espressifsystems.onmicrosoft.com header.i=@espressifsystems.onmicrosoft.com header.a=rsa-sha256 header.s=selector1-espressifsystems-onmicrosoft-com header.b=Soas8/Z7 DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 9BA2C4BA2E10 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=nk0RJ14RvqDvescxEaBJVN8e17BvxvyQOKv7hRF2/pBuMP0rrGpMKO62bSdf+PElIhx8DEcaw2Jl8m1NrYwOMlftDelz+vB2SSKlbByqsTdimvyrleXQ2QC3yzeYobygs2KWYDsn3hIgTGaCPgBQ5paoSXR6v68W8QXWAlgJx4fFZrvP6kdDIvBMS64woE7MnskGKEiYxckskWsuF9G1K/A9g6Vjxxz+Ec5B61EW3t1k5XdSbwwpyw8YABLfdG66iulpo7/jgfFxTWuOxF+mJp+NwWkCCDc6xV0kKrEOfLtN58BJnlnUzrB7BLhRZd4ET6h3hHdqoJe9vcJ4aVgUSQ== 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=YG3OsLMYfLpS5UBl09D5Pa3qt2SZvxZZD+55opDWPHE=; b=cxm2dbOKPpSgLNzffMRqYhYen4l3XWxqJ7BvmZ3K5BjYhj6hs3Ksb+GBY4rwKQlqLbvNVwwJqRYkb5pgVtO2ruFj7G+RNoZ6Ul1rtijIP7XSrMoYxDU5KMz6m19Fs8xKFB8mig4CnSi9mKMLlfnIF+IUC+Fj5uAM47vmr0IDXDQEhfBhO+/AIfYeI0WT0Rje9M7lZWOQrAqw6OhLIQgK7Kdr1c5RuVklTm0OEvkoWi56iYQlO65Oafv8NbSSiFkBOU1hcWE0whV/u9UvDuotHIygHRIVRDnq90VAP9dqVu4Tp2Sl4HwesGHeZ+/H4KSW/9wLnYysLKCNfw61+VSucg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=espressif.com; dmarc=pass action=none header.from=espressif.com; dkim=pass header.d=espressif.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=espressifsystems.onmicrosoft.com; s=selector1-espressifsystems-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=YG3OsLMYfLpS5UBl09D5Pa3qt2SZvxZZD+55opDWPHE=; b=Soas8/Z7e9Hm9SdbFngSEnXhqhrAGjDCGTLfLTt4TclUugisFiayZrTU1QzSunLHcKZKeNYMJS6d/mfUtIyBwF8EtBVIkjA6ArdPMfyLnZb5QDF95LhYs2ve0iMOtU1yGOIWDe0XJsfikYZwwVB69TMbbOYeY+YfO+6nxKEfpjg= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=espressif.com; Received: from KL1PR04MB7210.apcprd04.prod.outlook.com (2603:1096:820:fe::7) by TYPPR04MB8865.apcprd04.prod.outlook.com (2603:1096:405:2b5::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.360.6; Tue, 25 Aug 2026 07:46:50 +0000 Received: from KL1PR04MB7210.apcprd04.prod.outlook.com ([fe80::4c9e:728f:a1a8:4be8]) by KL1PR04MB7210.apcprd04.prod.outlook.com ([fe80::4c9e:728f:a1a8:4be8%3]) with mapi id 15.21.0360.005; Tue, 25 Aug 2026 07:46:50 +0000 From: Alexey Lapshin To: binutils@sourceware.org Cc: jcmvbkbc@gmail.com, alexey.gerenkov@espressif.com, jjsuwa_sys3175@yahoo.co.jp, Alexey Lapshin Subject: [PATCH v2] gas: fix MAX_ISTACK for loopgtz L32R widening Date: Tue, 25 Aug 2026 14:46:37 +0700 Message-ID: <20260825074642.15106-1-alexey.lapshin@espressif.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: References: X-ClientProxiedBy: KU2P306CA0033.MYSP306.PROD.OUTLOOK.COM (2603:1096:d10:3d::13) To KL1PR04MB7210.apcprd04.prod.outlook.com (2603:1096:820:fe::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR04MB7210:EE_|TYPPR04MB8865:EE_ X-MS-Office365-Filtering-Correlation-Id: cdfa50d8-5936-4e90-520e-08df027d05a9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|1800799024|10070799003|23010399003|366016|10067099003|6133799003|56012099006|18002099003|22082099003|3023799007; X-Microsoft-Antispam-Message-Info: ez77xbw/c8Ym2xXRH/8AVbzWxpiZnC+wMyZbYDkEvAT316ViP8sDjMvl9dB0F4Y8ueRCH8OrQNtjIaFcvy0DiTWMAPLH4UTfwKqZeqTl/3ZdmyDex+r9Vkzu8UrM6pyNih4ZOTt0gNnNUVErntywnoc5SIxzkYJEoPEpgZjwOEvM9rtx2v8UUr+Oo++nss6a4111UFMUAXUxRc62DdPOL0SM/O/w+mTVAMXgjpurkwQMw4Sq6OxXX5zKkY4Io/JTOtw2s3Y3H9cureh/iQ+qyc4BVQ+i7xXffT9NFCoraTiJr6GPzDfbS0W7Z2ajjx5rA+9MM2Ja6s7azvNEAogU1nNJ/I7w4criIsRMu7Bix1SKUh6qciNuN1CO0Vxn/Sc7ikWMoZZoWavpdZN21eKxHA0VsqQAqpNjm6pNpn7pwl3eAQksO9cE4kCJiCHYDWd2+nFKbEs4CT9trMzHjm4uE5Es4XQuQ1/y52U3qeNonj1Ft0A7Uxh20IzDbDnla0lK9lE5/5jEWTDt7belcgaeAlL1oHbdIA3Jjy7KQyz1XP5VY3IA7BNchqoEm3EtVSkDLpumOpzwy5Qx8ftopqJRe9UqrSsOj3AYcLt2AE7tDkkvHFqV4t9fpmdfnQAWNg5mh0pNDnV7i0HijvViWj6Eas5aOifoWRik2Hfp0sDROTc= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:KL1PR04MB7210.apcprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(1800799024)(10070799003)(23010399003)(366016)(10067099003)(6133799003)(56012099006)(18002099003)(22082099003)(3023799007); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: p0UwfagI/xlApIWNLmiIpfY9AvbVhtZLxkIyH+R5rtBCeqXaOP0KB5y1Ie6mWrqn04jqY8MmxuHLsiMOLkJMlAOJDjr2YvceeGEzMlDsKcUk11NzK7rYoWztLh+RpGAE/jyUb8URLpw6NXv4RbZ9KNF82VuL7oqJbzPAhJLQJ5+IpUTWX1d1fbYBt/ZMdZyv3u2E4DyngyTU245J9yI9L32TJXzOhDrxHq8/U/vfyoMdr0KXnPIOj4PGQ1HeRPoSwvbvd6BpIRJgL6S9GTzhMDjzexzj+B9rFQA6wfkfMHQBFTbY2tL/+ShCMjlep9MJTBC6DE5ymRrsMWclhez7tfrLn1zEWyaHtueiX5520V/vekqVlKv8+FKMP7hJ6GpZ9NKDlxfR0pCFcvclrLW5jbR6sKmBInyPC/p6BqGpIvT312sPibaIx1bInLvO29rRTPQP6CK+KcvDnZAfVZuSDAMTyiNaEgw6uZoFBSfWSzpbg2ngLVY/EwzF41542w4rHMKl91OF83f4VXmxWJMqXiA13gUg4pmWJAxpGfiLmGdkSql9d/V3Yf7ec2EPG1ZW/z8ZborpjOmgI1GXS80S70tjcmvqeJrtqow0DbwrY+1WDCwY/ZSS5n1Z0vxgSgGP5f131dw64mxt3CNxwJjIXXeCqkZjIuyt6YaKJsrOyyWJKRhx/6yE/KeuHJ5ddQFQFvQgHZaxfEHilMAfCqaJga/JfZumNJLZCog4tr354VLhXxKsOkJhQzt9jA3NfFWVrxi/Y4wPxEq5WuAe8DPPJHxyVHJanso2JO/8HogFobsp+2AwK67P8Y+ht7KMZE7+0hRvGq9sEsyFWc51bNmPqnGJ5oGdxxy0gPNeqpUTYg+Dt3eDuIUYmlCRT+og4qVz1kSTXZluMbcrdHKCaq48H7TrkG6vpA8aQ0pqjxW43MCE+JpQGmLo4JE6mZgwqhGDkAX3KgkfvHo8G2uTQPtHlpzP2aOk/B7eZV4I/T6Jtya3tcFruHtzsEixE0xNbaqh7pF3bAWOZYxDLI2QDECkl2qCVffzeJdqJoQNw7DGjwWspBX1EtPKpSsTXxQAc5AXrFj0qaU1rKTTRrwtvd0d+8u73zGmQDp04kf5Xk4b09vx78KEB3UMNMwpGjlGTvETIg8halTEBeA6D8lv5JMMyYYdlOkcGmHpacxfTMacxfRiiAQg1TIySP1sSfPagrDaiPfEY7tGuF1vKt6hVZ6W+DLCyHmd9vz11RbzNsEBH9JibYfUxeuD0PaOw3+onN7f+QlqCYbNtXn2Q6mk4V2US4icbbNmahpSIwF6eMjgwvvo01skekglGiba1zto6/nInM7rcLDuS++gcfdZionAo+IhZHIoAwTmaKlZHQf80WWh9TKgPtkWpi9Qddy93slAJLi2FMFjUFnbFxzW5BAsVFOkQsSAx/aWgZn4QjQHktRB5wJvkcYSuKm/M8RwUAvhpYcOQjFnwpW9CQQhAXypONeo2IZybP83fliV4KtMky7cakwwL4iWKqf797tCBkFZHd426wNBp4guXOIe06UeBbJ8LxHiXQb7YRc5Zv5PY8gB1y7zo4yykJm5yY6X9++sjQoTPH7ffGgm3cIxyQEaN23kCLdm3FsiVZvDY2cjc7E3RTUKkOE6sjrMcZ5xkOSWjr6Ac8RNXv8ucWYXv/byxvYkuu6py8rDJphSNutFUgzI96axgxgUmVE5l10/iJjmcZksbvCl4l0YGvGAQcIfcc9EWawzJ8+jA7YQqonv4iRw4XAWig+clF1+Hf4wDyOO0dKP+hdq X-MS-Exchange-AntiSpam-MessageData-1: /evORVJn0mA/+FRn05QQdZo7R+vKtyxKpbM= X-OriginatorOrg: espressif.com X-MS-Exchange-CrossTenant-Network-Message-Id: cdfa50d8-5936-4e90-520e-08df027d05a9 X-MS-Exchange-CrossTenant-AuthSource: KL1PR04MB7210.apcprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Aug 2026 07:46:50.1167 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 5faf27fd-3557-4294-9545-8ea74a409f39 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: VCkCYsaeoJBlIUAxpETutdTXbAo5YMz3xLVyvTuDGeRRKLDUcONTgVwgIvjKiEsM+lPfrv/8pxVgPYq757TQ6/6Uub6WWsaViIW9jjw6DCw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYPPR04MB8865 X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP 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: binutils@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: binutils-bounces~patchwork=sourceware.org@sourceware.org Commit 403b0b61f6d4 ("gas: use literals/const16 for xtensa loop relaxation") replaced loop widening with an L32R-based sequence. The loopgtz variant of that sequence needs 13 istack entries, but MAX_ISTACK remained 12, so relaxation of an out-of-range loopgtz overflowed the instruction stack. Increase MAX_ISTACK and report overflow with as_fatal that names MAX_ISTACK. Add a test. gas/ * config/xtensa-istack.h (MAX_ISTACK): Increase to 16. Document requirement. * config/tc-xtensa.c (istack_push, istack_push_space): Report stack overflow with as_fatal. * testsuite/gas/xtensa/loopgtz-relax.d: New test. * testsuite/gas/xtensa/loopgtz-relax.s: New test source. --- gas/config/tc-xtensa.c | 8 ++++++-- gas/config/xtensa-istack.h | 5 ++++- gas/testsuite/gas/xtensa/loopgtz-relax.d | 16 ++++++++++++++++ gas/testsuite/gas/xtensa/loopgtz-relax.s | 10 ++++++++++ 4 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 gas/testsuite/gas/xtensa/loopgtz-relax.d create mode 100644 gas/testsuite/gas/xtensa/loopgtz-relax.s diff --git a/gas/config/tc-xtensa.c b/gas/config/tc-xtensa.c index 397744f742b..414d1dda316 100644 --- a/gas/config/tc-xtensa.c +++ b/gas/config/tc-xtensa.c @@ -12520,7 +12520,9 @@ void istack_push (IStack *stack, TInsn *insn) { int rec = stack->ninsn; - gas_assert (!istack_full (stack)); + if (istack_full (stack)) + as_fatal (_("internal error: instruction stack overflow; " + "increase MAX_ISTACK")); stack->insn[rec] = *insn; stack->ninsn++; } @@ -12534,7 +12536,9 @@ istack_push_space (IStack *stack) { int rec = stack->ninsn; TInsn *insn; - gas_assert (!istack_full (stack)); + if (istack_full (stack)) + as_fatal (_("internal error: instruction stack overflow; " + "increase MAX_ISTACK")); insn = &stack->insn[rec]; tinsn_init (insn); stack->ninsn++; diff --git a/gas/config/xtensa-istack.h b/gas/config/xtensa-istack.h index 15e34c2b9d8..67367f16f12 100644 --- a/gas/config/xtensa-istack.h +++ b/gas/config/xtensa-istack.h @@ -23,7 +23,10 @@ #include "xtensa-isa.h" -#define MAX_ISTACK 12 +/* Must hold the largest multi-instruction widening expansion from + widen_spec_list in xtensa-relax.c. Currently that is the loopgtz + + L32R sequence (13 entries including LITERAL and LABEL). */ +#define MAX_ISTACK 16 #define MAX_INSN_ARGS 64 enum itype_enum diff --git a/gas/testsuite/gas/xtensa/loopgtz-relax.d b/gas/testsuite/gas/xtensa/loopgtz-relax.d new file mode 100644 index 00000000000..1374186c6d6 --- /dev/null +++ b/gas/testsuite/gas/xtensa/loopgtz-relax.d @@ -0,0 +1,16 @@ +#as: +#objdump: -d + +#... +.*beqz.*a9,.* +.*bltz.*a9,.* +.*loopgtz.*a9,.* +.*rsr.lend.*a9 +.*wsr.lbeg.*a9 +.*l32r.*a9,.* +.*nop +.*wsr.lend.*a9 +.*isync +.*rsr.lcount.*a9 +.*addi.*a9, a9, 1 +#... diff --git a/gas/testsuite/gas/xtensa/loopgtz-relax.s b/gas/testsuite/gas/xtensa/loopgtz-relax.s new file mode 100644 index 00000000000..a03528f306c --- /dev/null +++ b/gas/testsuite/gas/xtensa/loopgtz-relax.s @@ -0,0 +1,10 @@ + .text + .globl main + .align 4 +main: + loopgtz a9, .Lloop_end + .rep 200 + nop + .endr +.Lloop_end: + nop