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. */