mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-18 20:31:00 +08:00
Small fix to PLACEHOLDER_EXPR handling in loc_list_from_tree_1
This handles the discriminated record types of Ada: the PLACEHOLDER_EXPR is the "template" expression for the discriminant in the type definition. Now for some components, typically arrays whose upper bound is the discriminant, the compiler creates a local subtype for the component, so the code needs to be able to deal with this nested type. gcc/ChangeLog: * dwarf2out.c (loc_list_from_tree_1) <PLACEHOLDER_EXPR>: Deal with a nested context type
This commit is contained in:
parent
8c60696b69
commit
237a8e8d56
@ -18245,10 +18245,11 @@ loc_list_from_tree_1 (tree loc, int want_address,
|
||||
case PLACEHOLDER_EXPR:
|
||||
/* This case involves extracting fields from an object to determine the
|
||||
position of other fields. It is supposed to appear only as the first
|
||||
operand of COMPONENT_REF nodes and to reference precisely the type
|
||||
that the context allows. */
|
||||
operand of COMPONENT_REF nodes and to reference precisely the type
|
||||
that the context allows or its enclosing type. */
|
||||
if (context != NULL
|
||||
&& TREE_TYPE (loc) == context->context_type
|
||||
&& (TREE_TYPE (loc) == context->context_type
|
||||
|| TREE_TYPE (loc) == TYPE_CONTEXT (context->context_type))
|
||||
&& want_address >= 1)
|
||||
{
|
||||
if (dwarf_version >= 3 || !dwarf_strict)
|
||||
|
Loading…
x
Reference in New Issue
Block a user