https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106491
--- Comment #9 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The releases/gcc-12 branch has been updated by Richard Sandiford <rsand...@gcc.gnu.org>: https://gcc.gnu.org/g:a1465af240ee28fc7fcb83877c6aea94f11fb32f commit r12-8779-ga1465af240ee28fc7fcb83877c6aea94f11fb32f Author: Richard Sandiford <richard.sandif...@arm.com> Date: Wed Sep 21 09:30:31 2022 +0100 aarch64: Fix GTY markup for arm_sve.h [PR106491] It turns out that GTY(()) markers in definitions like: GTY(()) tree scalar_types[NUM_VECTOR_TYPES]; are not effective and are silently ignored. The GTY(()) has to come after an extern or static. The externs associated with the SVE ACLE GTY variables are in aarch64-sve-builtins.h. This file is not in tm_include_list because we don't want every target-facing file to include it. It therefore isn't in the list of GC header files either. In this case that's a blessing in disguise, since the variables belong to a namespace and gengtype doesn't understand namespaces. I think the fix is instead to add an extra extern before each variable declaration, similarly to varasm.cc and vtable-verify.cc. (This works due to a "using namespace" at the end of the file.) gcc/ PR target/106491 * config/aarch64/aarch64-sve-builtins.cc (scalar_types) (acle_vector_types, acle_svpattern, acle_svprfop): Add GTY markup to (new) extern declarations instead of to the main definition. (cherry picked from commit 6bf5a704d36243c4c04b17a9408ebe881beb0051)