This fixes a regression caused by my patch for nested functions
on aarch64.

Bootstrapped and regression tested on aarch64 and x86_64.



    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:
            * gcc/c/c-typeck.cc (mark_decl_used): Set DECL_NONLOCAL
            only for VAR_DECL, FUNC_DECL, PARM_DECL.

diff --git a/gcc/c/c-typeck.cc b/gcc/c/c-typeck.cc
index 1f04a4d7f4f..4100f82e016 100644
--- a/gcc/c/c-typeck.cc
+++ b/gcc/c/c-typeck.cc
@@ -3690,7 +3690,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