[{"id":3678969,"web_url":"http://patchwork.ozlabs.org/comment/3678969/","msgid":"<87o6jgqvi9.fsf@googlemail.com>","list_archive_url":null,"date":"2026-04-18T12:54:22","subject":"Re: [PATCH 4/7] aarch64: Fix INACTIVE_LOCAL -> SAVED_LOCAL transition","submitter":{"id":4363,"url":"http://patchwork.ozlabs.org/api/people/4363/","name":"Richard Sandiford","email":"rdsandiford@googlemail.com"},"content":"Alice Carlotti <alice.carlotti@arm.com> writes:\n> When entering the SAVED_LOCAL state, commit the lazy save and disable\n> PSTATE.ZA.\n>\n> I'm not sure whether this state transition is actually possible, but if\n> it does occur then the previous behaviour was wrong.\n\nThe transition is used for cases where:\n\n(a) a function F1 with ZA state calls a function F2 without ZA state and\n(b) calling F2 raises an exception that F1 catches\n\nIn this case, it's the exception handling code that commits the lazy\nsave and turns ZA off (see aarch64_fallback_frame_state in libgcc).\nF1 is not expected to do anything extra.\n\nThanks,\nRichard\n\n>\n> gcc/ChangeLog:\n>\n> \t* config/aarch64/aarch64.cc (aarch64_mode_emit_local_sme_state):\n> \tFix INACTIVE_LOCAL -> SAVED_LOCAL handling.\n>\n>\n> diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc\n> index c91fff3ef6bab8a25391a8a0737fd8c7b0615bd5..ba73c2376a3cbb38567f36f5d3be28784e393165 100644\n> --- a/gcc/config/aarch64/aarch64.cc\n> +++ b/gcc/config/aarch64/aarch64.cc\n> @@ -31940,7 +31940,9 @@ aarch64_mode_emit_local_sme_state (aarch64_local_sme_state mode,\n>       a known mode.  */\n>    gcc_assert (prev_mode != aarch64_local_sme_state::ANY);\n>  \n> -  if (prev_mode == aarch64_local_sme_state::INACTIVE_CALLER)\n> +  if (prev_mode == aarch64_local_sme_state::INACTIVE_CALLER\n> +      || (prev_mode == aarch64_local_sme_state::INACTIVE_LOCAL\n> +\t  && mode == aarch64_local_sme_state::SAVED_LOCAL))\n>      {\n>        /* Commit any uncommitted lazy save.  This leaves ZA either active\n>  \t and zero (lazy save case) or off (normal case).\n> @@ -32116,6 +32118,12 @@ aarch64_mode_emit_local_sme_state (aarch64_local_sme_state mode,\n>        /* This is a transition to an exception handler.  */\n>        gcc_assert (prev_mode == aarch64_local_sme_state::OFF\n>  \t\t  || prev_mode == aarch64_local_sme_state::INACTIVE_LOCAL);\n> +\n> +      if (prev_mode == aarch64_local_sme_state::INACTIVE_LOCAL)\n> +\t/* We committed the lazy save earlier, but we still need to ensure that\n> +\t   ZA is disabled.  */\n> +\temit_insn (gen_aarch64_smstop_za ());\n> +\n>        return;\n>      }\n>","headers":{"Return-Path":"<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":["incoming@patchwork.ozlabs.org","gcc-patches@gcc.gnu.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","gcc-patches@gcc.gnu.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=googlemail.com header.i=@googlemail.com\n header.a=rsa-sha256 header.s=20251104 header.b=imq7CXJL;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=2620:52:6:3111::32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n\tdkim=pass (2048-bit key,\n unprotected) header.d=googlemail.com header.i=@googlemail.com\n header.a=rsa-sha256 header.s=20251104 header.b=imq7CXJL","sourceware.org; dmarc=pass (p=quarantine dis=none)\n header.from=googlemail.com","sourceware.org; spf=pass smtp.mailfrom=googlemail.com","server2.sourceware.org;\n arc=none smtp.remote-ip=209.85.221.54"],"Received":["from vm01.sourceware.org (vm01.sourceware.org\n [IPv6:2620:52:6:3111::32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fyWtv6cHHz1yGt\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 18 Apr 2026 22:54:56 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 0701E4AA51F8\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 18 Apr 2026 12:54:53 +0000 (GMT)","from mail-wr1-f54.google.com (mail-wr1-f54.google.com\n [209.85.221.54])\n by sourceware.org (Postfix) with ESMTPS id 856594C91769\n for <gcc-patches@gcc.gnu.org>; Sat, 18 Apr 2026 12:54:25 +0000 (GMT)","by mail-wr1-f54.google.com with SMTP id\n ffacd0b85a97d-43eb05b1875so888782f8f.3\n for <gcc-patches@gcc.gnu.org>; Sat, 18 Apr 2026 05:54:25 -0700 (PDT)","from localhost ([103.214.45.63])\n by smtp.googlemail.com with ESMTPSA id\n 5b1f17b1804b1-488fc1c96b4sm208841915e9.13.2026.04.18.05.54.23\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Sat, 18 Apr 2026 05:54:23 -0700 (PDT)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 0701E4AA51F8","OpenDKIM Filter v2.11.0 sourceware.org 856594C91769"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org 856594C91769","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org 856594C91769","ARC-Seal":"i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776516865; cv=none;\n b=uoH8YjwJZV4I+ZvvZ7VnT1HFQMe7f4JZeb5o/kShm2h8npqi48iyQCVJM8+8kzrcY7erw0gr7kpoOa9JiM+wMrNjNw2PFvTZSrUqrXjkZv+10i0E7Rp3+i9QvoBGHq1TUUH6tAuEluTKnvF5VDP40OfktURNV23Zv8Z81T//YHA=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1776516865; c=relaxed/simple;\n bh=yyslrUamzSDqgbZyhXDdatLP8HlFcToXxUeDgo/sOKc=;\n h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version;\n b=f3gVN7RApGFFTJfXsev5UjaeGlYbS8jaOg8gU0WtvXP/BVVph7Nh7LGWk8qghegpz9tNBvxYxAGAJMNrAltF9pFGkHKySq5Ti7DVNIPAy9RqCwmWHkrlqlLLTyYit1cXXbWgIQJc3gDuzno1YG683GyLsxanILmyFcVCwcICwp4=","ARC-Authentication-Results":"i=1; server2.sourceware.org","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=googlemail.com; s=20251104; t=1776516864; x=1777121664; darn=gcc.gnu.org;\n h=mime-version:user-agent:message-id:date:references:in-reply-to\n :subject:cc:mail-followup-to:to:from:from:to:cc:subject:date\n :message-id:reply-to;\n bh=SO0MEDmSu9GYbLQ+wW0la6HVziumU/mtEVRi5JQX2VI=;\n b=imq7CXJLgL1bqo0tTuG2g5t7w7VWh2lAZ8Sn/9aR2RGB0NGKIOHuCLVaJHlWuKzN1Z\n 8WBRupC5/+YHrw+zydk/ccUs7CxZQU5oz9FC+1U7bXmmCTNllFUGfEPNh2qNPn/F/CYw\n hHSJeTY/PjdmDDoLTj4twkM+Ts5hUuQV4T7o+Xj+086uLPHOkJpb3CndCQdD0TNuj8wJ\n QoLurpXy/SdsgIoHxd2Nk6BV7VXIxTSuaBJ15VSqZTKLJ95H3xneITol181B7p+fxtE6\n z1IPqHCuuyWaQmrXTsrS7Y5Nz5QcqesE1VKd9C5nc1GGOr+VWhmgApE1h6c43lEdaX0R\n QkGg==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776516864; x=1777121664;\n h=mime-version:user-agent:message-id:date:references:in-reply-to\n :subject:cc:mail-followup-to:to:from:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=SO0MEDmSu9GYbLQ+wW0la6HVziumU/mtEVRi5JQX2VI=;\n b=KRaywBz3hzNR3ytkQloqL6m6xaRLqDgC+wcFkacQKKdKz96jTnejmQWwoTtyc2ki+i\n jhe0WiUQ04S6+62v9miDRRPaiARmOILJRk2k7Xk59eI7AZsRa4Cbi4o3A5rqKPKMkoBn\n 7H4ygzUzaFYfrPLICT+e61BfcEPXG32aGY5slwiGvT3jJi9b83r8IhYHGI93PjoBybXQ\n qIr7Ug08FHsy1O7itXj9PDpF5AtfaCHKzOpV5pNzf7KLCu95F+yFpqbQRj6kZswvCk9n\n PLVEfoMHnD7gsCYmQZGKnm2e5ergbdt9dl3/tG7xW0TKSYLxioP9XjQHxwgxu5FWIi3k\n i/Pw==","X-Gm-Message-State":"AOJu0YzEq4RXJDarcF2PUs9z8RRjuTwOoVlbhBfm2eFonvboXqeDUlAx\n +byH0a/Msu1w+WAXGGPxUD9s7E0qPUmRNQ5hTbs3Qi7OUAZ1KC2jGjCE","X-Gm-Gg":"AeBDietLXxlPRbq94ETLt9sQOcR4Isw6rWq+6fqUsPKDKkAC+bBYiqB+z2OvCpAI0Mi\n vCSw+0xKO5nt7RNEX3Swc5yjiKzIwRLg6IP5hPNO1ZJaUwsL6Cb78QZnyRZbCdLfGzWXwExqJUf\n c5dmtxRqc1pOTr0D2jhZ4zN/b5fo5QKL+Npe2RUErSXQ4CLceyPYq/M3BJRpVnPX5yhmFW10HtW\n tQDIFANibQzx80vHHlYPM+m84GLk6ljrWhNidTwJqmRvlYe+3Ta/qjRWyPXZejP9y6M9e6OKk/X\n NXXSd3ad4trgrHdk245ENWdFd/UTMt88U1wPaZjMPL2Iz8/c+QV59ZwHXH4b5jDg/lZG0p9zV6z\n 8Jqr3a4MO/WbX8pDFzyobNlvj/VodRd5qV5FmFCzUVgIlGVfY0FHk8j4GuH1eb/CXa/mdGs14LU\n 1I1+tdeda56br4c1qfcZtLua9VUR7zWw9XvWn5AQQ=","X-Received":"by 2002:a05:600c:3115:b0:487:1108:48bc with SMTP id\n 5b1f17b1804b1-488fb77a3cemr97359765e9.17.1776516864201;\n Sat, 18 Apr 2026 05:54:24 -0700 (PDT)","From":"Richard Sandiford <rdsandiford@googlemail.com>","To":"Alice Carlotti <alice.carlotti@arm.com>","Mail-Followup-To":"Alice Carlotti\n <alice.carlotti@arm.com>,gcc-patches@gcc.gnu.org,  Richard Earnshaw\n <richard.earnshaw@arm.com>,  Tamar Christina <tamar.christina@arm.com>,\n Kyrylo Tkachov <ktkachov@nvidia.com>,  Alex Coplan <alex.coplan@arm.com>,\n Andrew Pinski <andrew.pinski@oss.qualcomm.com>,  Wilco Dijkstra\n <wilco.dijkstra@arm.com>, rdsandiford@googlemail.com","Cc":"gcc-patches@gcc.gnu.org,  Richard Earnshaw <richard.earnshaw@arm.com>,\n Tamar Christina <tamar.christina@arm.com>,  Kyrylo Tkachov\n <ktkachov@nvidia.com>,  Alex Coplan <alex.coplan@arm.com>,  Andrew Pinski\n <andrew.pinski@oss.qualcomm.com>,  Wilco Dijkstra <wilco.dijkstra@arm.com>","Subject":"Re: [PATCH 4/7] aarch64: Fix INACTIVE_LOCAL -> SAVED_LOCAL transition","In-Reply-To":"<e3296084-4cbd-583a-d370-e7156ab3a449@e124511.cambridge.arm.com>\n (Alice Carlotti's message of \"Sat, 18 Apr 2026 01:30:11 +0100\")","References":"<500b3dee-1ffe-5d08-2308-5bf06d38650c@e124511.cambridge.arm.com>\n <e3296084-4cbd-583a-d370-e7156ab3a449@e124511.cambridge.arm.com>","Date":"Sat, 18 Apr 2026 13:54:22 +0100","Message-ID":"<87o6jgqvi9.fsf@googlemail.com>","User-Agent":"Gnus/5.13 (Gnus v5.13)","MIME-Version":"1.0","Content-Type":"text/plain","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>,\n <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>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>","Errors-To":"gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org"}}]