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.
- 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.