DECS gcc aliens CONTEXT VOID
USE standard:
{
Alien declarations to access gcc internals from Algol 68 programs.
Copyright (C) 2011 Jose E. Marchesi
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see
.
}
{ Include several needed headers }
INT dummy = ALIEN "dummy" "#include ""config.h"""
"#include "
"#include ""system.h"""
"#include ""ansidecl.h"""
"#include ""system.h"""
"#include ""coretypes.h"""
"#include ""gimple.h"""
"#include ""flags.h"""
"#include ""opts.h"""
"#include ""gcc.h"""
"#include ""toplev.h"""
"#include ""debug.h"""
"#include ""convert.h""";
{ Stuff from stdio.h }
REF CPTR null = ALIEN "NULL" "#include ";
{ Stuff from gcc/coretypes.h }
MODE BITMAP = CPTR,
RTX = CPTR,
RTVEC = CPTR,
TREE = CPTR,
GIMPLE = CPTR,
GIMPLESEQ = CPTR,
GIMPLESEQNODE = CPTR,
ADDRSPACE = SHORT SHORT BITS,
EDGE = CPTR,
BASICBLOCK = CPTR;
MODE IRTYPE = INT; { Enumeration }
IRTYPE ir gimple = 0;
IRTYPE ir rtl cfgrtl = 1;
IRTYPE ir rtl cfglayout = 2;
{ Stuff from system.h }
PROC VOID gcc unreachable =
ALIEN "GCC_GCC_UNREACHABLE"
"#define GCC_GCC_UNREACHABLE gcc_unreachable"
"#include ""system.h""";
{ Stuff from flags.h }
MODE EXCESSPRECISION = INT; { Enumeration }
EXCESSPRECISION excess precision default
= ALIEN "EXCESS_PRECISION_DEFAULT" "#include ""flags.h""",
excess precision fast
= ALIEN "EXCESS_PRECISION_FAST" "/**/",
excess precision standard
= ALIEN "EXCESS_PRECISION_STANDARD" "/**/";
EXCESSPRECISION flag excess precision cmdline
= ALIEN "flag_excess_precision_cmdline" "/**/";
PROC(EXCESSPRECISION)VOID set flag excess precision cmdline
= ALIEN "GCC_SET_FLAG_EXCESS_PRECISION_CMDLINE"
"#define GCC_SET_FLAG_EXCESS_PRECISION_CMDLINE(e) \"
"flag_excess_precision_cmdline = (e)";
EXCESSPRECISION flag excess precision
= ALIEN "flag_excess_precision" "/**/";
{ Stuff from options.h (generated file) }
INT cl algol68 = ALIEN "CL_Algol68" "#include ""options.h""";
{ Stuff from input.h }
MODE LOCATION = INT;
LOCATION unknown location = ALIEN "UNKNOWN_LOCATION" "#include ""input.h""";
LOCATION input location = ALIEN "input_location" "/**/";
REF CSTR main input filename alien = ALIEN "main_input_filename" "/**/";
PROC main input filename = STRING: MAKERVC CSTRTORVC main input filename alien;
{ Stuff from machmode.h }
MODE MACHINEMODE = INT;
MACHINEMODE ptr mode = ALIEN "ptr_mode" "#include ""machmode.h""";
INT num machine modes = ALIEN "NUM_MACHINE_MODES" "/**/";
MODE MODECLASS = INT; { Enumeration }
MODECLASS mode random = 0; { Other }
MODECLASS mode cc = 1; { Condition code in a register }
MODECLASS mode int = 2; { Integer }
MODECLASS mode partial int = 3; { Integer with padding bits }
MODECLASS mode fract = 4; { Signed fractional function }
MODECLASS mode ufract = 5; { Unsigned fractional number }
MODECLASS mode accum = 6; { Signed accumulator }
MODECLASS mode uaccum = 7; { Unsigned accumulator }
MODECLASS mode float = 8; { Floating point }
MODECLASS mode decimal float = 9; { Decimal floating point }
MODECLASS mode complex int = 10; { Complex integral number }
MODECLASS mode complex float = 13; { SIMD vectors }
MODECLASS mode vector int = 14; { SIMD vectors }
MODECLASS mode vector fract = 15; { SIMD vectors }
MODECLASS mode vector ufract = 16; { SIMD vectors }
MODECLASS mode vector accum = 17; { SIMD vectors }
MODECLASS mode vector uaccum = 18; { SIMD vectors }
MODECLASS mode vector float = 19; { SIMD vectors }
PROC(MACHINEMODE)CSTR get mode name alien =
ALIEN "GCC_GET_MODE_NAME"
"#define GCC_GET_MODE_NAME(i) GET_MODE_NAME(A_INT_int(i))";
PROC get mode name = (MACHINEMODE mode)STR:
BEGIN
CSTRTORVC get mode name alien (mode)
END;
PROC(MACHINEMODE)MODECLASS get mode class =
ALIEN "GCC_GET_MODE_CLASS"
"#define GCC_GET_MODE_CLASS(i) A_int_INT(GET_MODE_CLASS(A_INT_int(i)))";
PROC(MACHINEMODE)BOOL integral mode p =
ALIEN "GCC_INTEGRAL_MODE_P"
"#define GCC_INTEGRAL_MODE_P(i) (A68_BOOL)(INTEGRAL_MODE_P(A_INT_int(i)))";
PROC(MACHINEMODE)BOOL float mode p =
ALIEN "GCC_FLOAT_MODE_P"
"#define GCC_FLOAT_MODE_P(i) (A68_BOOL)(FLOAT_MODE_P(A_INT_int(i)))";
PROC(MACHINEMODE)BOOL complex mode p =
ALIEN "GCC_COMPLEX_MODE_P"
"#define GCC_COMPLEX_MODE_P(i) (A68_BOOL)(COMPLEX_MODE_P(A_INT_int(i)))";
PROC(MACHINEMODE)BOOL vector mode p =
ALIEN "GCC_VECTOR_MODE_P"
"#define GCC_VECTOR_MODE_P(i) (A68_BOOL)(VECTOR_MODE_P(A_INT_int(i)))";
PROC(MACHINEMODE)BOOL scalar int mode p =
ALIEN "GCC_SCALAR_INT_MODE_P"
"#define GCC_SCALAR_INT_MODE_P(i) (A68_BOOL)(SCALAR_INT_MODE_P(A_INT_int(i)))";
PROC(MACHINEMODE)BOOL scalar float mode p =
ALIEN "GCC_SCALAR_FLOAT_MODE_P"
"#define GCC_SCALAR_FLOAT_MODE_P(i) (A68_BOOL)(SCALAR_FLOAT_MODE_P(A_INT_int(i)))";
PROC(MACHINEMODE)BOOL decimal float mode p =
ALIEN "GCC_DECIMAL_FLOAT_MODE_P"
"#define GCC_DECIMAL_FLOAT_MODE_P(i) (A68_BOOL)(SCALAR_DECIMAL_MODE_P(A_INT_int(i)))";
PROC(MACHINEMODE)BOOL scalar fract mode p =
ALIEN "GCC_SCALAR_FRACT_MODE_P"
"#define GCC_SCALAR_FRACT_MODE_P(i) (A68_BOOL)(SCALAR_FRACT_MODE_P(A_INT_int(i)))";
PROC(MACHINEMODE)BOOL scalar ufract mode p =
ALIEN "GCC_SCALAR_UFRACT_MODE_P"
"#define GCC_USCALAR_FRACT_MODE_P(i) (A68_BOOL)(SCALAR_UFRACT_MODE_P(A_INT_int(i)))";
PROC(MACHINEMODE)BOOL all scalar fract mode p =
ALIEN "GCC_ALL_SCALAR_FRACT_MODE_P"
"#define GCC_ALL_SCALAR_FRACT_MODE_P(i) (A68_BOOL)(ALL_SCALAR_FRACT_MODE_P(A_INT_int(i)))";
PROC(MACHINEMODE)BOOL scalar accum mode p =
ALIEN "GCC_SCALAR_ACCUM_MODE_P"
"#define GCC_SCALAR_ACCUM_MODE_P(i) (A68_BOOL)(SCALAR_ACCUM_MODE_P(A_INT_int(i)))";
PROC(MACHINEMODE)BOOL scalar uaccum mode p =
ALIEN "GCC_SCALAR_UACCUM_MODE_P"
"#define GCC_SCALAR_UACCUM_MODE_P(i) (A68_BOOL)(SCALAR_UACCUM_MODE_P(A_INT_int(i)))";
PROC(MACHINEMODE)BOOL all scalar accum mode p =
ALIEN "GCC_ALL_SCALAR_ACCUM_MODE_P"
"#define GCC_ALL_SCALAR_ACCUM_MODE_P(i) (A68_BOOL)(ALL_SCALAR_ACCUM_MODE_P(A_INT_int(i)))";
PROC(MACHINEMODE)BOOL signed scalar fixed point mode p =
ALIEN "GCC_SIGNED_SCALAR_FIXED_POINT_MODE_P"
"#define GCC_SIGNED_SCALAR_FIXED_POINT_MODE_P(i) (A68_BOOL)(SIGNED_SCALAR_FIXED_POINT_MODE_P(A_INT_int(i)))";
PROC(MACHINEMODE)BOOL unsigned scalar fixed point mode p =
ALIEN "GCC_UNSIGNED_SCALAR_FIXED_POINT_MODE_P"
"#define GCC_UNSIGNED_SCALAR_FIXED_POINT_MODE_P(i) (A68_BOOL)(UNSIGNED_SCALAR_FIXED_POINT_MODE_P(A_INT_int(i)))";
PROC(MACHINEMODE)BOOL all scalar fixed point mode p =
ALIEN "GCC_ALL_SCALAR_FIXED_POINT_MODE_P"
"#define GCC_ALL_SCALAR_FIXED_POINT_MODE_P(i) (A68_BOOL)(ALL_SCALAR_FIXED_POINT_MODE_P(A_INT_int(i)))";
PROC(MACHINEMODE)BOOL fract mode p =
ALIEN "GCC_FRACT_MODE_P"
"#define GCC_FRACT_MODE_P(i) (A68_BOOL)(FRACT_MODE_P(A_INT_int(i)))";
PROC(MACHINEMODE)BOOL ufract mode p =
ALIEN "GCC_UFRACT_MODE_P"
"#define GCC_UFRACT_MODE_P(i) (A68_BOOL)(UFRACT_MODE_P(A_INT_int(i)))";
PROC(MACHINEMODE)BOOL all fract mode p =
ALIEN "GCC_ALL_FRACT_MODE_P"
"#define GCC_ALL_FRACT_MODE_P(i) (A68_BOOL)(ALL_FRACT_MODE_P(A_INT_int(i)))";
PROC(MACHINEMODE)BOOL accum mode p =
ALIEN "GCC_ACCUM_MODE_P"
"#define GCC_ACCUM_MODE_P(i) (A68_BOOL)(ACCUM_MODE_P(A_INT_int(i)))";
PROC(MACHINEMODE)BOOL uaccum mode p =
ALIEN "GCC_UACCUM_MODE_P"
"#define GCC_UACCUM_MODE_P(i) (A68_BOOL)(UACCUM_MODE_P(A_INT_int(i)))";
PROC(MACHINEMODE)BOOL all accum mode p =
ALIEN "GCC_ALL_ACCUM_MODE_P"
"#define GCC_ALL_ACCUM_MODE_P(i) (A68_BOOL)(ALL_ACCUM_MODE_P(A_INT_int(i)))";
PROC(MACHINEMODE)BOOL signed fixed point mode p =
ALIEN "GCC_SIGNED_FIXED_POINT_MODE_P"
"#define GCC_SIGNED_FIXED_POINT_MODE_P(i) (A68_BOOL)(SIGNED_FIXED_POINT_MODE_P(A_INT_int(i)))";
PROC(MACHINEMODE)BOOL unsigned fixed point mode p =
ALIEN "GCC_UNSIGNED_FIXED_POINT_MODE_P"
"#define GCC_UNSIGNED_FIXED_POINT_MODE_P(i) (A68_BOOL)(UNSIGNED_FIXED_POINT_MODE_P(A_INT_int(i)))";
PROC(MACHINEMODE)BOOL all fixed point mode p =
ALIEN "GCC_ALL_FIXED_POINT_MODE_P"
"#define GCC_ALL_FIXED_POINT_MODE_P(i) (A68_BOOL)(ALL_FIXED_POINT_MODE_P(A_INT_int(i)))";
PROC(MACHINEMODE)BOOL class has wider modes p =
ALIEN "GCC_CLASS_HAS_WIDER_MODES_P"
"#define GCC_CLASS_HAS_WIDER_MODES_P(i) (A68_BOOL)(CLASS_HAS_WIDER_MODES_P(A_INT_int(i)))";
PROC(MACHINEMODE)INT get mode size =
ALIEN "GCC_GET_MODE_SIZE"
"#define GCC_GET_MODE_SIZE(i) A_int_INT(GET_MODE_SIZE((unsigned short)(i)))";
PROC(MACHINEMODE)INT get mode bitsize =
ALIEN "GCC_GET_MODE_BITSIZE"
"#define GCC_GET_MODE_BITSIZE(i) A_int_INT(GET_MODE_BITSIZE((unsigned short)(i)))";
PROC(MACHINEMODE)INT get mode precision =
ALIEN "GCC_GET_MODE_PRECISION"
"#define GCC_GET_MODE_PRECISION(i) A_int_INT(GET_MODE_PRECISION(A_INT_int(i)))";
PROC(MACHINEMODE)INT get mode ibit =
ALIEN "GCC_GET_MODE_IBIT"
"#define GCC_GET_MODE_IBIT(i) A_int_INT(GET_MODE_IBIT(A_INT_int(i)))";
PROC(MACHINEMODE)INT get mode fbit =
ALIEN "GCC_GET_MODE_FBIT"
"#define GCC_GET_MODE_FBIT(i) A_int_INT(GET_MODE_FBIT(A_INT_int(i)))";
PROC(MACHINEMODE)INT get mode mask =
ALIEN "GCC_GET_MODE_MASK"
"#define GCC_GET_MODE_MASK(i) A_int_INT(GET_MODE_MASK(A_INT_int(i)))";
PROC(MACHINEMODE)INT get mode inner =
ALIEN "GCC_GET_MODE_INNER"
"#define GCC_GET_MODE_INNER(i) A_int_INT(GET_MODE_INNER(A_INT_int(i)))";
PROC(MACHINEMODE)INT get mode unit size =
ALIEN "GCC_GET_MODE_UNIT_SIZE"
"#define GCC_GET_MODE_UNIT_SIZE(i) A_int_INT(GET_MODE_UNIT_SIZE(A_INT_int(i)))";
PROC(MACHINEMODE)INT get mode nunits =
ALIEN "GCC_GET_MODE_NUNITS"
"#define GCC_GET_MODE_NUNITS(i) A_int_INT(GET_MODE_NUNITS(A_INT_int(i)))";
PROC(MACHINEMODE)MACHINEMODE get mode wider mode =
ALIEN "GCC_GET_MODE_WIDER_MODE"
"#define GCC_GET_MODE_WIDER_MODE(i) A_int_INT(GET_MODE_WIDER_MODE(A_INT_int(i)))";
PROC(MACHINEMODE)MACHINEMODE get mode 2xwider mode =
ALIEN "GCC_GET_MODE_2XWIDER_MODE"
"#define GCC_GET_MODE_2XWIDER_MODE(i) A_int_INT(GET_MODE_2XWIDER_MODE(A_INT_int(i)))";
{ Stuff from tree.h }
MODE TREECODE = INT; { Enumeration. XXX: move to generated treecodes.a68 }
TREECODE tcc exceptional = ALIEN "tcc_exceptional" "#include ""tree.h""";
TREECODE function decl = ALIEN "FUNCTION_DECL" "/**/";
TREECODE var decl = ALIEN "VAR_DECL" "/**/";
TREECODE result decl = ALIEN "RESULT_DECL" "/**/";
TREECODE modify expr = ALIEN "MODIFY_EXPR" "/**/";
TREECODE preincrement expr = ALIEN "PREINCREMENT_EXPR" "/**/";
TREECODE exit expr = ALIEN "EXIT_EXPR" "/**/";
TREECODE cond expr = ALIEN "COND_EXPR" "/**/";
TREECODE compound expr = ALIEN "COMPOUND_EXPR" "/**/";
TREECODE loop expr = ALIEN "LOOP_EXPR" "/**/";
TREECODE init expr = ALIEN "INIT_EXPR" "/**/";
TREECODE addr expr = ALIEN "ADDR_EXPR" "/**/";
TREECODE block = ALIEN "BLOCK" "/**/";
TREECODE indirect ref = ALIEN "INDIRECT_REF" "/**/";
TREECODE max tree codes = ALIEN "MAX_TREE_CODES" "/**/";
INT num tree codes = ALIEN "NUM_TREE_CODES" "/**/";
REF TREE current function decl = ALIEN "current_function_decl" "/**/";
REF TREE null tree = ALIEN "((A68_BITS *) NULL_TREE)" "/**/";
PROC(TREE)BOOL tree is null =
ALIEN "GCC_TREE_IS_NULL"
"#define GCC_TREE_IS_NULL(t) ((t) == NULL)";
REF TREE error mark node = ALIEN "error_mark_node" "/**/",
intqi type node = ALIEN "intQI_type_node" "/**/",
inthi type node = ALIEN "intHI_type_node" "/**/",
intsi type node = ALIEN "intSI_type_node" "/**/",
intdi type node = ALIEN "intDI_type_node" "/**/",
intti type node = ALIEN "intTI_type_node" "/**/",
unsigned intqi type node = ALIEN "unsigned_intQI_type_node" "/**/",
unsigned inthi type node = ALIEN "unsigned_intHI_type_node" "/**/",
unsigned intsi type node = ALIEN "unsigned_intSI_type_node" "/**/",
unsigned intdi type node = ALIEN "unsigned_intDI_type_node" "/**/",
unsigned intti type node = ALIEN "unsigned_intTI_type_node" "/**/",
uint32 type node = ALIEN "uint32_type_node" "/**/",
uint64 type node = ALIEN "uint64_type_node" "/**/",
integer zero node = ALIEN "integer_zero_node" "/**/",
integer one node = ALIEN "integer_one_node" "/**/",
integer minus one node = ALIEN "integer_minus_one_node" "/**/",
size zero node = ALIEN "size_zero_node" "/**/",
size one node = ALIEN "size_one_node" "/**/",
bitsize zero node = ALIEN "bitsize_zero_node" "/**/",
bitsize one node = ALIEN "bitsize_one_node" "/**/",
bitsize unit node = ALIEN "bitsize_unit_node" "/**/",
access public node = ALIEN "access_public_node" "/**/",
access protected node = ALIEN "access_protected_node" "/**/",
access private node = ALIEN "access_private_node" "/**/",
null pointer node = ALIEN "null_pointer_node" "/**/",
float type node = ALIEN "float_type_node" "/**/",
double type node = ALIEN "double_type_node" "/**/",
long double type node = ALIEN "long_double_type_node" "/**/",
float ptr type node = ALIEN "float_ptr_type_node" "/**/",
double ptr type node = ALIEN "double_ptr_type_node" "/**/",
long double ptr type node = ALIEN "long_double_ptr_type_node" "/**/",
integer ptr type node = ALIEN "integer_ptr_type_node" "/**/",
complex integer type node = ALIEN "complex_integer_type_node" "/**/",
complex float type node = ALIEN "complex_float_type_node" "/**/",
complex double type node = ALIEN "complex_double_type_node" "/**/",
complex long double type node= ALIEN "complex_long_double_type_node" "/**/",
void type node = ALIEN "void_type_node" "/**/",
ptr type node = ALIEN "ptr_type_node" "/**/",
const ptr type node = ALIEN "const_ptr_type_node" "/**/",
size type node = ALIEN "size_type_node" "/**/",
pid type node = ALIEN "pid_type_node" "/**/",
ptrdiff type node = ALIEN "ptrdiff_type_node" "/**/",
va list type node = ALIEN "va_list_type_node" "/**/",
va list gpr counter field = ALIEN "va_list_gpr_counter_field" "/**/",
va list fpr counter field = ALIEN "va_list_fpr_counter_field" "/**/",
fileptr type node = ALIEN "fileptr_type_node" "/**/",
boolean type node = ALIEN "boolean_type_node" "/**/",
boolean false node = ALIEN "boolean_false_node" "/**/",
boolean true node = ALIEN "boolean_true_node" "/**/",
dfloat32 type node = ALIEN "dfloat32_type_node" "/**/",
dfloat64 type node = ALIEN "dfloat64_type_node" "/**/",
dfloat128 type node = ALIEN "dfloat128_type_node" "/**/",
dfloat32_ptr_type_node = ALIEN "dfloat32_ptr_type_node" "/**/",
dfloat64_ptr_type_node = ALIEN "dfloat64_ptr_type_node" "/**/",
dfloat128 ptr type node = ALIEN "dfloat128_ptr_type_node" "/**/",
sat short fract type node = ALIEN "sat_short_fract_type_node" "/**/",
sat fract type node = ALIEN "sat_fract_type_node" "/**/",
sat long fract type node = ALIEN "sat_long_fract_type_node" "/**/",
sat long long fract type node= ALIEN "sat_long_long_fract_type_node" "/**/",
sat unsigned short fract type node
= ALIEN "sat_unsigned_short_fract_type_node" "/**/",
sat unsigned fract type node = ALIEN "sat_unsigned_fract_type_node" "/**/",
sat unsigned long fract type node
= ALIEN "sat_unsigned_long_fract_type_node" "/**/",
short fract type node = ALIEN "short_fract_type_node" "/**/",
fract type node = ALIEN "fract_type_node" "/**/",
long fract type node = ALIEN "long_fract_type_node" "/**/",
long long fract type node = ALIEN "long_long_fract_type_node" "/**/",
unsigned short fract type node
= ALIEN "unsigned_short_fract_type_node" "/**/",
unsigned fract type node = ALIEN "unsigned_fract_type_node" "/**/",
unsigned long fract type node= ALIEN "unsigned_long_fract_type_node" "/**/",
unsigned long long fract type node
= ALIEN "unsigned_long_long_fract_type_node" "/**/",
unsigned sat short accum type node
= ALIEN "unsigned_sat_short_accum_type_node" "/**/",
sat accum type node = ALIEN "sat_accum_type_node" "/**/",
sat long accum type node = ALIEN "sat_long_accum_type_node" "/**/",
sat long long accum type node= ALIEN "sat_long_long_accum_type_node" "/**/",
sat unsigned short accum type node
= ALIEN "sat_unsigned_short_accum_type_node" "/**/",
sat unsigned accum type node = ALIEN "sat_unsigned_accum_type_node" "/**/",
sat unsigned long accum type node = ALIEN "sat_unsigned_long_accum_type_node" "/**/",
sat unsigned long long accum type node
= ALIEN "sat_unsigned_long_long_accum_type_node" "/**/",
short accum type node = ALIEN "short_accum_type_node" "/**/",
accum type node = ALIEN "accum_type_node" "/**/",
long accum type node = ALIEN "long_accum_type_node" "/**/",
long long accum type node = ALIEN "long_long_accum_type_node" "/**/",
unsigned short accum type node
= ALIEN "unsigned_short_accum_type_node" "/**/",
unsigned accum type node = ALIEN "unsigned_accum_type_node" "/**/",
unsigned long accum type node= ALIEN "unsigned_long_accum_type_node" "/**/",
unsigned long long accum type node
= ALIEN "unsigned_long_long_accum_type_node" "/**/",
qq type node = ALIEN "qq_type_node" "/**/",
hq type node = ALIEN "hq_type_node" "/**/",
sq type node = ALIEN "sq_type_node" "/**/",
dq type node = ALIEN "dq_type_node" "/**/",
tq type node = ALIEN "tq_type_node" "/**/",
uqq type node = ALIEN "uqq_type_node" "/**/",
uhq type node = ALIEN "uhq_type_node" "/**/",
usq type node = ALIEN "usq_type_node" "/**/",
udq type node = ALIEN "udq_type_node" "/**/",
utq type node = ALIEN "utq_type_node" "/**/",
sat qq type node = ALIEN "sat_qq_type_node" "/**/",
sat hq type node = ALIEN "sat_hq_type_node" "/**/",
sat sq type node = ALIEN "sat_sq_type_node" "/**/",
sat dq type node = ALIEN "sat_dq_type_node" "/**/",
sat tq type node = ALIEN "sat_tq_type_node" "/**/",
sat uqq type node = ALIEN "sat_uqq_type_node" "/**/",
sat uhq type node = ALIEN "sat_uhq_type_node" "/**/",
sat usq type node = ALIEN "sat_usq_type_node" "/**/",
sat udq type node = ALIEN "sat_udq_type_node" "/**/",
sat utq type node = ALIEN "sat_utq_type_node" "/**/",
ha type node = ALIEN "ha_type_node" "/**/",
sa type node = ALIEN "sa_type_node" "/**/",
da type node = ALIEN "da_type_node" "/**/",
ta type node = ALIEN "ta_type_node" "/**/",
uha type node = ALIEN "uha_type_node" "/**/",
usa type node = ALIEN "usa_type_node" "/**/",
uda type node = ALIEN "uda_type_node" "/**/",
uta type node = ALIEN "uta_type_node" "/**/",
sat ha type node = ALIEN "sat_ha_type_node" "/**/",
sat sa type node = ALIEN "sat_sa_type_node" "/**/",
sat da type node = ALIEN "sat_da_type_node" "/**/",
sat ta type node = ALIEN "sat_ta_type_node" "/**/",
sat uha type node = ALIEN "sat_uha_type_node" "/**/",
sat usa type node = ALIEN "sat_usa_type_node" "/**/",
sat uda type node = ALIEN "sat_uda_type_node" "/**/",
sat uta type node = ALIEN "sat_uta_type_node" "/**/",
void list node = ALIEN "void_list_node" "/**/",
main identifier node = ALIEN "main_identifier_node" "/**/",
optimization default node = ALIEN "optimization_default_node" "/**/",
optimization current node = ALIEN "optimization_current_node" "/**/",
target option default node = ALIEN "target_option_default_node" "/**/",
target option current node = ALIEN "target_option_current_node" "/**/",
current target pragma = ALIEN "current_target_pragma" "/**/",
current optimize pragma = ALIEN "current_optimize_pragma" "/**/",
char type node = ALIEN "char_type_node" "/**/",
signed char type node = ALIEN "signed_char_type_node" "/**/",
unsigned char type node = ALIEN "unsigned_char_type_node" "/**/",
short integer type node = ALIEN "short_integer_type_node" "/**/",
short unsigned type node = ALIEN "short_unsigned_type_node" "/**/",
integer type node = ALIEN "integer_type_node" "/**/",
unsigned type node = ALIEN "unsigned_type_node" "/**/",
long integer type node = ALIEN "long_integer_type_node" "/**/",
long unsigned type node = ALIEN "long_unsigned_type_node" "/**/",
long long integer type node = ALIEN "long_long_integer_type_node" "/**/",
long long unsigned type node = ALIEN "long_long_unsigned_type_node" "/**/";
PROC(TREE)MACHINEMODE type mode =
ALIEN "GCC_TYPE_MODE"
"#define GCC_TYPE_MODE(t) TYPE_MODE((tree)(t))";
PROC(TREE)BOOL main name p =
ALIEN "GCC_MAIN_NAME_P"
"#define GCC_MAIN_NAME_P(t) MAIN_NAME_P((tree)t)";
PROC(TREE,TREE)TREE build tree list =
ALIEN "GCC_BUILD_TREE_LIST"
"#define GCC_BUILD_TREE_LIST(t,q) build_tree_list ((tree)t,(tree)q)";
PROC(BOOL,BOOL)VOID build common tree nodes =
ALIEN "GCC_BUILD_COMMON_TREE_NODES"
"#define GCC_BUILD_COMMON_TREE_NODES(b1,b2) build_common_tree_nodes ((bool)b1,(bool)b2)";
PROC(INT)VOID build common tree nodes 2 =
ALIEN "GCC_BUILD_COMMON_TREE_NODES_2"
"#define GCC_BUILD_COMMON_TREE_NODES_2(i) build_common_tree_nodes_2 (A_INT_int(i))";
PROC VOID build common builtin nodes =
ALIEN "build_common_builtin_nodes" "/**/";
PROC(TREE)TREE build function type list 1 =
ALIEN "GCC_BUILD_FUNCTION_TYPE_LIST_1"
"#define GCC_BUILD_FUNCTION_TYPE_LIST_1(t) build_function_type_list ((tree)(t), NULL_TREE)";
PROC(TREE,TREE)TREE build function type list 2 =
ALIEN "GCC_BUILD_FUNCTION_TYPE_LIST_2"
"#define GCC_BUILD_FUNCTION_TYPE_LIST_2(t1,t2) build_function_type_list ((tree)(t1),(tree)(t2),NULL_TREE)";
PROC(VECTOR[]CHAR)TREE gcc get identifier =
ALIEN "GCC_GET_IDENTIFIER"
"#define GCC_GET_IDENTIFIER(buf) get_identifier (A_VC_charptr(buf))";
PROC get identifier = (VECTOR[]CHAR s)TREE:
BEGIN
gcc get identifier (Z s)
END;
PROC(TREE)BOOL tree public =
ALIEN "GCC_TREE_PUBLIC"
"#define GCC_TREE_PUBLIC(t) TREE_PUBLIC((tree)t)";
PROC(TREE,BOOL)VOID set tree public =
ALIEN "GCC_SET_TREE_PUBLIC"
"#define GCC_SET_TREE_PUBLIC(t,b) TREE_PUBLIC((tree)t) = ((int)b)";
PROC(TREE)BOOL decl external =
ALIEN "GCC_DECL_EXTERNAL"
"#define GCC_DECL_EXTERNAL(t) (A68_BOOL)(DECL_EXTERNAL((tree)t))";
PROC(TREE,BOOL)VOID set decl external =
ALIEN "GCC_SET_DECL_EXTERNAL"
"#define GCC_SET_DECL_EXTERNAL(t,b) DECL_EXTERNAL((tree)t) = ((int)(b))";
PROC(TREE)BOOL decl artificial =
ALIEN "GCC_DECL_ARTIFICIAL"
"#define GCC_DECL_ARTIFICIAL(t) (A68_BOOL)(DECL_ARTIFICIAL((tree)(t)))";
PROC(TREE,BOOL)VOID set decl artificial =
ALIEN "GCC_SET_DECL_ARTIFICIAL"
"#define GCC_SET_DECL_ARTIFICIAL(t,b) DECL_ARTIFICIAL((tree)t) = ((int)(b))";
PROC(TREE)TREE decl saved tree =
ALIEN "GCC_DECL_SAVED_TREE"
"#define GCC_DECL_SAVED_TREE(t) DECL_SAVED_TREE((tree)(t))";
PROC(TREE,TREE)VOID set decl saved tree =
ALIEN "GCC_SET_DECL_SAVED_TREE"
"#define GCC_SET_DECL_SAVED_TREE(t1,t2) DECL_SAVED_TREE((tree)(t1)) = ((tree)(t2))";
PROC(TREE)TREE decl result =
ALIEN "GCC_DECL_RESULT"
"#define GCC_DECL_RESULT(t) DECL_RESULT((tree)(t))";
PROC(TREE,TREE)VOID set decl result =
ALIEN "GCC_SET_DECL_RESULT"
"#define GCC_SET_DECL_RESULT(t1,t2) DECL_RESULT((tree)(t1)) = (tree)(t2)";
PROC(TREE)BOOL decl uninlinable =
ALIEN "GCC_DECL_UNINLINABLE"
"#define GCC_DECL_UNINLINABLE(t) (A68_BOOL)DECL_UNINLINABLE((tree)(t))";
PROC(TREE,BOOL)VOID set decl uninlinable =
ALIEN "GCC_SET_DECL_UNINLINABLE"
"#define GCC_SET_DECL_UNINLINABLE(t,b) DECL_UNINLINABLE((tree)(t)) = (int)(b)";
PROC(TREE)TREE decl initial =
ALIEN "GCC_DECL_INITIAL"
"#define GCC_DECL_INITIAL(t) DECL_INITIAL((tree)(t))";
PROC(TREE,TREE)VOID set decl initial =
ALIEN "GCC_SET_DECL_INITIAL"
"#define GCC_SET_DECL_INITIAL(t1,t2) DECL_INITIAL((tree)(t1)) = (tree)(t2)";
PROC(TREE)BOOL tree static =
ALIEN "GCC_TREE_STATIC"
"#define GCC_TREE_STATIC(t) TREE_STATIC((tree)(t))";
PROC(TREE,BOOL)VOID set tree static =
ALIEN "GCC_SET_TREE_STATIC"
"#define GCC_SET_TREE_STATIC(t,b) TREE_STATIC((tree)(t)) = (b)";
PROC(TREE)BOOL tree used =
ALIEN "GCC_TREE_USED"
"#define GCC_TREE_USED(t) TREE_USED((tree)(t))";
PROC(TREE,BOOL)VOID set tree used =
ALIEN "GCC_SET_TREE_USED"
"#define GCC_SET_TREE_USED(t,b) TREE_USED((tree)(t)) = (b)";
PROC(TREECODE)TREE make node =
ALIEN "GCC_MAKE_NODE"
"#define GCC_MAKE_NODE(tc) make_node((enum tree_code)(tc))";
PROC(TREE,BOOL)VOID allocate struct function =
ALIEN "GCC_ALLOCATE_STRUCT_FUNCTION"
"#define GCC_ALLOCATE_STRUCT_FUNCTION(t,b) allocate_struct_function((tree)(t),(bool)(b))";
PROC(TREE)VOID set sizetype =
ALIEN "GCC_SET_SIZETYPE"
"#define GCC_SET_SIZETYPE(t) set_sizetype ((tree) t)";
PROC(LOCATION,TREECODE,TREE,TREE)TREE build decl =
ALIEN "GCC_BUILD_DECL"
"#define GCC_BUILD_DECL(l,c,t,q) build_decl ((location_t) l, (enum tree_code) A_INT_int(c), (tree) t, (tree) q)";
PROC(TREE,TREE)TREE build function type =
ALIEN "GCC_BUILD_FUNCTION_TYPE"
"#define GCC_BUILD_FUNCTION_TYPE(t1,t2) build_function_type ((tree)(t1),(tree)(t2))";
PROC(TREE,INT)TREE build vector type =
ALIEN "GCC_BUILD_VECTOR_TYPE"
"#define GCC_BUILD_VECTOR_TYPE(t,i) build_vector_type ((tree)(t),A_INT_int ((i)))";
PROC(TREE)TREE build pointer type =
ALIEN "GCC_BUILD_POINTER_TYPE"
"#define GCC_BUILD_POINTER_TYPE(t) build_pointer_type ((tree)(t))";
PROC(TREE,TREE)TREE fold convert =
ALIEN "GCC_FOLD_CONVERT"
"#define GCC_FOLD_CONVERT(t1,t2) fold_convert((tree)t1, (tree)t2)";
PROC(TREE)TREE build call expr =
ALIEN "GCC_BUILD_CALL_EXPR"
"#define GCC_BUILD_CALL_EXPR(t) build_call_expr ((tree)(t),0)";
PROC(TREE,TREE)TREE build call expr 1 =
ALIEN "GCC_BUILD_CALL_EXPR_1"
"#define GCC_BUILD_CALL_EXPR_1(t1,t2) build_call_expr ((tree)(t1),1,(tree)t2)";
PROC(LOCATION,TREE,TREE)TREE fold build 1 =
ALIEN "GCC_FOLD_BUILD1"
"#define GCC_FOLD_BUILD1(l,t1,t2) fold_build1((location_t)(l),(tree)(t1),(tree)(t2))";
PROC(TREECODE,TREE)TREE build0 =
ALIEN "GCC_BUILD0"
"#define GCC_BUILD0(c,t) build0 ((enum tree_code)(c),(tree)(t))";
PROC(TREECODE, TREE, TREE)TREE build1 =
ALIEN "GCC_BUILD1"
"#define GCC_BUILD1(c,t1,t2) build1 ((enum tree_code)(c),(tree)(t1),(tree)(t2))";
PROC(TREECODE,TREE,TREE,TREE)TREE build2 =
ALIEN "GCC_BUILD2"
"#define GCC_BUILD2(c,t1,t2,t3) build2 ((enum tree_code)(c),(tree)(t1),(tree)(t2),(tree)(t3))";
PROC(TREECODE,TREE,TREE,TREE,TREE)TREE build3 =
ALIEN "GCC_BUILD3"
"#define GCC_BUILD3(c,t1,t2,t3,t4) build3 ((enum tree_code)(c),(tree)(t1),(tree)(t2),(tree)(t3),(tree)(t4))";
PROC(TREECODE,TREE,TREE,TREE,TREE,TREE)TREE build4 =
ALIEN "GCC_BUILD4"
"#define GCC_BUILD4(c,t1,t2,t3,t4,t5) build4 ((enum tree_code)(c),(tree)(t1),(tree)(t2),(tree)(t3),(tree)(t4),(tree)(t5))";
PROC(TREECODE,TREE,TREE,TREE,TREE,TREE,TREE)TREE build5 =
ALIEN "GCC_BUILD5"
"#define GCC_BUILD5(c,t1,t2,t3,t4,t5,t6) build5 ((enum tree_code)(c),(tree)(t1),(tree)(t2),(tree)(t3),(tree)(t4),(tree)(t5),(tree)(t6))";
PROC(TREECODE,TREE,TREE,TREE,TREE,TREE,TREE,TREE)TREE build6 =
ALIEN "GCC_BUILD6"
"#define GCC_BUILD6(c,t1,t2,t3,t4,t5,t6,t7) \"
"build6 ((enum tree_code)(c),(tree)(t1),(tree)(t2),(tree)(t3),(tree)(t4),(tree)(t5),(tree)(t6),(tree)(t7))";
PROC(TREE,INT)TREE build int cst =
ALIEN "GCC_BUILD_INT_CST"
"#define GCC_BUILD_INT_CST(t,i) \"
"build_int_cst ((tree)(t),(HOST_WIDE_INT)(i))";
PROC(TREE)TREE tree type =
ALIEN "GCC_TREE_TYPE"
"#define GCC_TREE_TYPE(t) TREE_TYPE((tree)(t))";
{ Stuff from tree-iterator.h }
PROC(TREE, REF TREE)VOID
append to statement list =
ALIEN "GCC_APPEND_TO_STATEMENT_LIST"
"#define GCC_APPEND_TO_STATEMENT_LIST(t,rt) append_to_statement_list((tree)(t),(tree*)(rt))"
"#include ""tree-iterator.h""";
{ Stuff from cgraph.h }
PROC(TREE)VOID
varpool finalize decl =
ALIEN "GCC_VARPOOL_FINALIZE_DECL"
"#define GCC_VARPOOL_FINALIZE_DECL(t) varpool_finalize_decl ((tree)(t))";
PROC(TREE,BOOL)VOID
cgraph finalize function =
ALIEN "GCC_CGRAPH_FINALIZE_FUNCTION"
"#define GCC_CGRAPH_FINALIZE_FUNCTION(t,b) cgraph_finalize_function((tree)(t),(bool)(b))";
PROC VOID
cgraph finalize compilation unit =
ALIEN "GCC_CGRAPH_FINALIZE_COMPILATION_UNIT"
"#define GCC_CGRAPH_FINALIZE_COMPILATION_UNIT cgraph_finalize_compilation_unit";
{ Stuff from gimple.h }
PROC (TREE)VOID gimplify function tree =
ALIEN "GCC_GIMPLIFY_FUNCTION_TREE"
"#define GCC_GIMPLIFY_FUNCTION_TREE(t) gimplify_function_tree((tree)(t))"
"#include ""gimple.h"""
KEEP
dummy,
null,
ir gimple, ir rtl cfgrtl, ir rtl cfglayout,
{ Stuff from system.h }
gcc unreachable,
{ Stuff from flags.h }
excess precision default, excess precision fast,
excess precision standard,
flag excess precision cmdline,
flag excess precision,
set flag excess precision cmdline,
{ Stuff from options.h }
cl algol68,
{ modes }
BITMAP, RTX, RTVEC, GIMPLE, GIMPLESEQ,
GIMPLESEQNODE, ADDRSPACE, EDGE, BASICBLOCK,
IRTYPE, EXCESSPRECISION,
{ Stuff from input.h }
LOCATION,
unknown location, input location,
main input filename,
{ Stuff from tree.h }
TREE,
num tree codes,
current function decl,
tcc exceptional,
{ Tree nodes }
error mark node, intqi type node, inthi type node,
intsi type node, intdi type node, intti type node,
unsigned intqi type node, unsigned inthi type node,
unsigned intsi type node, unsigned intdi type node,
unsigned intti type node, uint32 type node,
uint64 type node, integer zero node, integer one node,
integer minus one node, size zero node, size one node,
bitsize zero node, bitsize one node, bitsize unit node,
access public node, access protected node, access private node,
null pointer node, float type node, double type node,
long double type node, float ptr type node, double ptr type node,
long double ptr type node, integer ptr type node, complex integer type node,
complex float type node, complex double type node, complex long double type node,
void type node, ptr type node, const ptr type node, size type node,
pid type node, ptrdiff type node, va list type node, va list gpr counter field,
va list fpr counter field, fileptr type node, boolean type node, boolean false node,
boolean true node, dfloat32 type node, dfloat64 type node, dfloat128 type node,
dfloat32_ptr_type_node, dfloat64_ptr_type_node, dfloat128 ptr type node,
sat short fract type node, sat fract type node, sat long fract type node,
sat long long fract type node, sat unsigned short fract type node,
sat unsigned fract type node, sat unsigned long fract type node,
short fract type node, fract type node, long fract type node,
long long fract type node, unsigned short fract type node,
unsigned fract type node, unsigned long fract type node,
unsigned long long fract type node, unsigned sat short accum type node,
sat accum type node, sat long accum type node, sat long long accum type node,
sat unsigned short accum type node, sat unsigned accum type node,
sat unsigned long accum type node, sat unsigned long long accum type node,
short accum type node, accum type node, long accum type node,
long long accum type node, unsigned short accum type node,
unsigned accum type node, unsigned long accum type node,
unsigned long long accum type node, qq type node, hq type node, sq type node,
dq type node, tq type node, uqq type node, uhq type node, usq type node,
udq type node, utq type node, sat qq type node, sat hq type node,
sat sq type node, sat dq type node, sat tq type node, sat uqq type node,
sat uhq type node, sat usq type node, sat udq type node, sat utq type node,
ha type node, sa type node, da type node, ta type node, uha type node,
usa type node, uda type node, uta type node, sat ha type node, sat sa type node,
sat da type node, sat ta type node, sat uha type node, sat usa type node,
sat uda type node, sat uta type node, void list node, main identifier node,
optimization default node, optimization current node, target option default node,
target option current node, current target pragma, current optimize pragma,
char type node, signed char type node, unsigned char type node,
short integer type node, short unsigned type node, integer type node,
unsigned type node, long integer type node, long unsigned type node,
long long integer type node, long long unsigned type node,
type mode,
main name p,
indirect ref,
null tree,
tree is null,
build tree list,
build common tree nodes,
build common tree nodes 2,
build common builtin nodes,
build function type list 1,
build function type list 2,
get identifier,
{ Getters and setters for node properties }
tree public, set tree public,
decl external, set decl external,
decl artificial, set decl artificial,
decl saved tree, set decl saved tree,
decl result, set decl result,
decl uninlinable, set decl uninlinable,
decl initial, set decl initial,
tree static, set tree static,
tree used, set tree used,
make node,
allocate struct function,
set sizetype,
build decl,
build function type, build vector type, build pointer type,
function decl, var decl, result decl,
fold convert,
build call expr, build call expr 1,
fold build 1,
build0, build1, build2, build3, build4, build5, build6,
build int cst, tree type,
{ XXX: move to generated treecodes.a68 }
TREECODE, modify expr, preincrement expr,
exit expr, cond expr, compound expr, loop expr, init expr,
addr expr, block,
{ Stuff from tree-iterator.h }
append to statement list,
{ Stuff from cgraph.h }
varpool finalize decl,
cgraph finalize function,
cgraph finalize compilation unit,
{ Stuff from gimple.h }
gimplify function tree,
{ Stuff from machmode.h }
MACHINEMODE,
ptr mode,
num machine modes,
{ Mode classes }
mode random, mode cc, mode int, mode partial int, mode fract, mode ufract,
mode accum, mode uaccum, mode float, mode decimal float, mode complex int,
mode complex float, mode vector int, mode vector fract, mode vector ufract,
mode vector accum, mode vector uaccum, mode vector float,
get mode name,
get mode class,
get mode size,
get mode bitsize,
get mode precision,
get mode ibit,
get mode fbit,
get mode mask,
get mode inner,
get mode unit size,
get mode nunits,
get mode wider mode,
get mode 2xwider mode,
{ Mode type predicates }
integral mode p, float mode p, complex mode p, vector mode p, scalar int mode p,
scalar float mode p, decimal float mode p, scalar fract mode p,
scalar ufract mode p, all scalar fract mode p, scalar accum mode p,
scalar uaccum mode p, all scalar accum mode p, signed scalar fixed point mode p,
unsigned scalar fixed point mode p, all scalar fixed point mode p,
fract mode p, ufract mode p, all fract mode p, accum mode p, uaccum mode p,
all accum mode p, signed fixed point mode p, unsigned fixed point mode p,
all fixed point mode p, class has wider modes p
FINISH