[COMMITTED 2/4] a68: register publicized type_decls in the global range
Jose E. Marchesi
jemarch@gnu.org
Fri Sep 25 12:07:25 GMT 2026
Signed-off-by: Jose E. Marchesi <jemarch@gnu.org>
gcc/algol68/ChangeLog
* a68-low-decls.cc (a68_lower_mode_declaration): Use
a68_add_global_decl for mode declarations in public ranges.
---
gcc/algol68/a68-low-decls.cc | 31 ++++++++++++++++---------------
1 file changed, 16 insertions(+), 15 deletions(-)
diff --git a/gcc/algol68/a68-low-decls.cc b/gcc/algol68/a68-low-decls.cc
index 532f5b65c3b..1c77bb56019 100644
--- a/gcc/algol68/a68-low-decls.cc
+++ b/gcc/algol68/a68-low-decls.cc
@@ -57,11 +57,9 @@
mode declaration, comma symbol,
defining indicant, equals symbol, void symbol.
- Each mode declaration lowers into a TYPE_DECL, which are chained in the
- current block. This function returns void_node.
-
- Note that the defining indicant is already annotated with the declared mode
- so there is no need to go hunting for the declarer in the subtree. */
+ Each mode declaration lowers into a TYPE_DECL so the mode is reflected in
+ the debug info. This is done by linking the decl to the type via
+ TYPE_STUB_DECL and by filling in the TYPE_NAME of the base type. */
tree
a68_lower_mode_declaration (NODE_T *p, LOW_CTX_T ctx)
@@ -87,19 +85,22 @@ a68_lower_mode_declaration (NODE_T *p, LOW_CTX_T ctx)
}
}
- /* Create a TYPE_DECL declaration for the defined mode and chain it in the
- current block. */
- tree ctype = CTYPE (MOID (defining_indicant));
+ tree type = CTYPE (MOID (defining_indicant));
+
tree decl_name = a68_get_mangled_indicant (NSYMBOL (defining_indicant),
- ctx.module_definition_name);
+ ctx.module_definition_name);
tree decl = build_decl (a68_get_node_location (p),
- TYPE_DECL, decl_name, ctype);
+ TYPE_DECL, decl_name, type);
SET_DECL_ASSEMBLER_NAME (decl, decl_name);
TREE_PUBLIC (decl) = 1;
- TYPE_CONTEXT (ctype) = DECL_CONTEXT (decl);
- TYPE_NAME (ctype) = decl;
- TYPE_STUB_DECL (ctype) = decl;
- a68_add_decl (decl);
+
+ if (PUBLIC_RANGE (TABLE (TAX (defining_indicant))))
+ a68_add_global_decl (decl);
+ else
+ a68_add_decl (decl);
+
+ TYPE_CONTEXT (type) = DECL_CONTEXT (decl);
+ TYPE_NAME (type) = decl;
return void_node;
}
@@ -159,7 +160,7 @@ a68_lower_variable_declaration (NODE_T *p, LOW_CTX_T ctx)
if (IS (q, PUBLIC_SYMBOL))
FORWARD (q);
-
+
if (IS (q, QUALIFIER))
{
/* The qualifier determines what kind of generator is used in the
--
2.39.5
More information about the Algol68
mailing list