GCC Newspaper
OCTOBER 6, 2026
Date
/
Architectures
Components
Topics
News & Policy
Other
a68

a68: Use front-end type nodes consistently

Ensures consistent use of Algol 68 front-end type nodes across the codebase.

This commit standardizes the use of Algol 68’s internal type representations (a68_*_type) throughout the compiler’s Algol 68 front-end. Previously, the code sometimes used native C types instead of the Algol 68 specific type nodes. By enforcing the use of a68_*_type for internal operations, the compiler ensures type consistency and correctness, except when interacting with external entities like libcalls that require C types. This change affects numerous lowering functions in the a68 subsystem.

In Details

This patch refactors various a68 lowering routines (a68-low-*.cc) to consistently use the front-end's type nodes (a68_*_type) instead of raw C types. These a68_*_type nodes are initialized via a68_build_a68_type_nodes and serve as canonical representations of Algol 68 types within the compiler's internal processing. The goal is to ensure type integrity and simplify type-related operations within the Algol 68 front-end, reserving the use of C types only for necessary interactions with external interfaces, such as library calls.

For Context
a68
GCC's front-end for the Algol 68 programming language.
type nodes
Internal data structures used by a compiler to represent and manage type information for various programming language constructs.
front-end
The part of a compiler that analyzes the source code (e.g., parsing, semantic analysis) and converts it into an intermediate representation.
lowering
The process of translating a higher-level intermediate representation (like GENERIC) into a lower-level one (like RTL) that is closer to machine code.
libcalls
Calls made by the compiler to standard library functions (e.g., for math operations, memory allocation) when direct machine instructions are not sufficient or available.
Filed Under: a68type systemcodebase consistencyinternal representation