From 8d8e771af944796eba10cfa9568d284daaab93a1 Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Thu, 9 Jul 2026 09:21:57 +0200 Subject: Implement record extensions --- gcc/gcc/elna-builtins.cc | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'gcc') diff --git a/gcc/gcc/elna-builtins.cc b/gcc/gcc/elna-builtins.cc index 7c97027..7817c7e 100644 --- a/gcc/gcc/elna-builtins.cc +++ b/gcc/gcc/elna-builtins.cc @@ -124,6 +124,18 @@ namespace elna::gcc { tree composite_type_node = make_node(RECORD_TYPE); + if (!reference->base.empty()) + { + tree base_type_node = get_inner_alias(reference->base, symbols); + + for (tree base_field = TYPE_FIELDS(base_type_node); base_field != NULL_TREE; + base_field = TREE_CHAIN(base_field)) + { + tree cloned_field = build_field(UNKNOWN_LOCATION, composite_type_node, + IDENTIFIER_POINTER(DECL_NAME(base_field)), TREE_TYPE(base_field)); + TYPE_FIELDS(composite_type_node) = chainon(TYPE_FIELDS(composite_type_node), cloned_field); + } + } build_composite_type(reference->fields, composite_type_node, symbols); return composite_type_node; -- cgit v1.2.3