[PATCH] a68: Replace A68_GLOBAL_CONTEXT in favor of a68_range_context

Cupertino Miranda cupertinomiranda@gmail.com
Sun Sep 27 20:35:34 GMT 2026


Removed possibly forgotten A68_GLOBAL_CONTEXT and get_global_context
in favor of the language specific a68_range_context function.

The builtin initialization was using the global context through
pushdecl function, which although not an immediate problem seems to be
incorrect.

Signed-off-by: Cupertino Miranda <cupertinomiranda@gmail.com>

gcc/algol68/ChangeLog

	* a68-lang.cc (a68_init): Anticipate the execution of
	a68_init_ranges.
	(get_global_context): Removed function.
	(pushdecl): Replace call to get_global_context by
	a68_range_context.
	* a68.h: Remove A68_GLOBAL_CONTEXT macro.
---
 gcc/algol68/a68-lang.cc | 21 ++++-----------------
 gcc/algol68/a68.h       |  1 -
 2 files changed, 4 insertions(+), 18 deletions(-)

diff --git a/gcc/algol68/a68-lang.cc b/gcc/algol68/a68-lang.cc
index 1cefb08c5ab..77ddbf08788 100644
--- a/gcc/algol68/a68-lang.cc
+++ b/gcc/algol68/a68-lang.cc
@@ -222,14 +222,15 @@ a68_build_a68_type_nodes (void)
 static bool
 a68_init (void)
 {
+  /* Initialize binding contexts.  */
+  a68_init_ranges ();
+
   build_common_tree_nodes (false);
   a68_build_a68_type_nodes ();
   targetm.init_builtins ();
   build_common_builtin_nodes ();
   a68_install_builtins ();
 
-  /* Initialize binding contexts.  */
-  a68_init_ranges ();
 
   /* Set the type of size_t.  */
   if (TYPE_MODE (long_unsigned_type_node) == ptr_mode)
@@ -399,20 +400,6 @@ a68_getdecls (void)
 #undef LANG_HOOKS_GETDECLS
 #define LANG_HOOKS_GETDECLS a68_getdecls
 
-/* Return A68_GLOBAL_CONTEXT, but create it first if need be.  */
-
-static tree
-get_global_context (void)
-{
-  if (!A68_GLOBAL_CONTEXT)
-    {
-      A68_GLOBAL_CONTEXT = build_translation_unit_decl (NULL_TREE);
-      debug_hooks->register_main_translation_unit (A68_GLOBAL_CONTEXT);
-    }
-
-  return A68_GLOBAL_CONTEXT;
-}
-
 /* Implements the lang_hooks.decls.pushdecl routine.
    Record DECL as belonging to the current lexical scope.  */
 
@@ -426,7 +413,7 @@ pushdecl (tree decl)
       if (current_function_decl)
 	DECL_CONTEXT (decl) = current_function_decl;
       else
-	DECL_CONTEXT (decl) = get_global_context ();
+	DECL_CONTEXT (decl) = a68_range_context ();
     }
 
   /* Put decls on list in reverse order.  */
diff --git a/gcc/algol68/a68.h b/gcc/algol68/a68.h
index 7130cd0948a..90f5467cf65 100644
--- a/gcc/algol68/a68.h
+++ b/gcc/algol68/a68.h
@@ -144,7 +144,6 @@ extern GTY(()) A68_T a68_common;
 #define A68_GLOBAL_TREES   A68 (global_trees)
 #define A68_PARSER(Z)      (A68 (parser_state).Z)
 #define A68_MODULE_DEFINITION_DECLS   A68 (module_definition_decls)
-#define A68_GLOBAL_CONTEXT      A68 (global_context)
 #define A68_GLOBAL_DECLARATIONS A68 (global_declarations)
 
 /* Particular pre-defined modes.  */
-- 
2.47.3



More information about the Algol68 mailing list