]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ada: Change scope of XUB type
authorTom Tromey <tromey@adacore.com>
Wed, 31 Jul 2024 15:01:45 +0000 (09:01 -0600)
committerMarc Poulhiès <dkm@gcc.gnu.org>
Fri, 25 Oct 2024 09:09:04 +0000 (11:09 +0200)
An earlier patch in the "nameless" series caused a regression with
-fgnat-encodings=all.  Previously, all artificial types were emitted
in the CU scope in the DWARF, but with the patch, an "XUB" type is
emitted in the function scope.  This causes gdb lookups to erroneously
find the XUB type rather than the type that gdb expects to find.

Note that I don't know why the earlier code worked, because decl.cc
clearly sets the XUB type's context to be the current function.

This patch changes the type's context so that it is nested in a type
that is conveniently available.

gcc/ada/ChangeLog:

* gcc-interface/decl.cc (gnat_to_gnu_entity): Use gnu_fat_type as the type
context for a XUB type.

gcc/ada/gcc-interface/decl.cc

index 372d72a18b60ab305b9c16aff37fdb716deacdd8..3404b747ddf8dc22cb0c22888a80ba6e168be443 100644 (file)
@@ -2401,7 +2401,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, bool definition)
            = chainon (gnu_template_fields, gnu_temp_fields[index]);
        finish_record_type (gnu_template_type, gnu_template_fields, 0,
                            debug_info_p);
-       TYPE_CONTEXT (gnu_template_type) = current_function_decl;
+       TYPE_CONTEXT (gnu_template_type) = gnu_fat_type;
 
        /* If Component_Size is not already specified, annotate it with the
           size of the component.  */