https://gcc.gnu.org/g:7124671cadc5a9f21bb9332b5fd68d29fdcdef52

commit r15-4660-g7124671cadc5a9f21bb9332b5fd68d29fdcdef52
Author: Tom Tromey <tro...@adacore.com>
Date:   Wed Jul 31 09:01:45 2024 -0600

    ada: Change scope of XUB type
    
    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.

Diff:
---
 gcc/ada/gcc-interface/decl.cc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gcc/ada/gcc-interface/decl.cc b/gcc/ada/gcc-interface/decl.cc
index 372d72a18b60..3404b747ddf8 100644
--- a/gcc/ada/gcc-interface/decl.cc
+++ b/gcc/ada/gcc-interface/decl.cc
@@ -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.  */

Reply via email to