https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106491

--- Comment #7 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The trunk branch has been updated by Richard Sandiford <rsand...@gcc.gnu.org>:

https://gcc.gnu.org/g:6bf5a704d36243c4c04b17a9408ebe881beb0051

commit r13-2739-g6bf5a704d36243c4c04b17a9408ebe881beb0051
Author: Richard Sandiford <richard.sandif...@arm.com>
Date:   Tue Sep 20 15:27:47 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.

Reply via email to