]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
c: Fix regression related to DECL_NONLOCAL on aarch64 [PR121933]
authorMartin Uecker <uecker@tugraz.at>
Sat, 13 Sep 2025 06:37:32 +0000 (08:37 +0200)
committerMartin Uecker <uecker@gcc.gnu.org>
Tue, 30 Sep 2025 20:53:01 +0000 (22:53 +0200)
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.

gcc/c/c-typeck.cc

index b96215adc768604faa909f31e6df6a4b4fee4645..9b2aeea50f4a16a4001f0865ec15cbc3ef6d3c2e 100644 (file)
@@ -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.  */