https://gcc.gnu.org/g:4c1d8818dee177b4f6c3adbf747873a0443d02b6

commit r16-4146-g4c1d8818dee177b4f6c3adbf747873a0443d02b6
Author: Martin Uecker <[email protected]>
Date:   Sat Sep 13 08:37:32 2025 +0200

    c: Fix regression related to DECL_NONLOCAL on aarch64 [PR121933]
    
    The recent patch r16-3747-gafa74d37e81 to detect the use of non-local
    context by nested functions caused regressions on aarch64, because
    DECL_NONLOCAL was set on labels.  Fix this by setting it only to
    the same types of decls as before.
    
            PR target/121933
    
    gcc/c/ChangeLog:
            * c-typeck.cc (mark_decl_used): Set DECL_NONLOCAL
            only for VAR_DECL, FUNC_DECL, PARM_DECL.

Diff:
---
 gcc/c/c-typeck.cc | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/gcc/c/c-typeck.cc b/gcc/c/c-typeck.cc
index b96215adc768..9b2aeea50f4a 100644
--- a/gcc/c/c-typeck.cc
+++ b/gcc/c/c-typeck.cc
@@ -3696,7 +3696,8 @@ mark_decl_used (tree ref, bool address)
   if (static_p)
     C_DECL_USED (ref) = 1;
 
-  if (nonloc_p)
+  if (nonloc_p && (VAR_OR_FUNCTION_DECL_P (ref)
+                  || TREE_CODE (ref) == PARM_DECL))
     DECL_NONLOCAL (ref) = 1;
 
   /* Nothing to do anymore.  */

Reply via email to