1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
|
/****************************************************************************
* *
* GNAT COMPILER COMPONENTS *
* *
* FE *
* *
* C Header File *
* *
* *
* Copyright (C) 1992-2002 Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
* ware Foundation; either version 2, or (at your option) any later ver- *
* sion. GNAT is distributed in the hope that it will be useful, but WITH- *
* OUT 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 distributed with GNAT; see file COPYING. If not, write *
* to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, *
* MA 02111-1307, USA. *
* *
* As a special exception, if you link this file with other files to *
* produce an executable, this file does not by itself cause the resulting *
* executable to be covered by the GNU General Public License. This except- *
* ion does not however invalidate any other reasons why the executable *
* file might be covered by the GNU Public License. *
* *
* GNAT was originally developed by the GNAT team at New York University. *
* Extensive contributions were provided by Ada Core Technologies Inc. *
* *
****************************************************************************/
/* This file contains definitions to access front-end functions and
variables used by gigi. */
/* atree: */
#define Is_Rewrite_Substitution atree__is_rewrite_substitution
#define Original_Node atree__original_node
extern Boolean Is_Rewrite_Subsitution PARAMS ((Node_Id));
extern Node_Id Original_Node PARAMS ((Node_Id));
/* comperr: */
#define Compiler_Abort comperr__compiler_abort
extern int Compiler_Abort PARAMS ((Fat_Pointer, int)) ATTRIBUTE_NORETURN;
/* csets: Definitions to access the front-end's character translation
tables. */
#define Fold_Lower(C) csets__fold_lower[C]
#define Fold_Upper(C) csets__fold_upper[C]
extern char Fold_Lower[], Fold_Upper[];
/* debug: */
#define Debug_Flag_XX debug__debug_flag_xx
#define Debug_Flag_NN debug__debug_flag_nn
extern Boolean Debug_Flag_XX;
extern Boolean Debug_Flag_NN;
/* einfo: We will be setting Esize for types, Component_Bit_Offset for fields,
Alignment for types and objects, Component_Size for array types, and
Present_Expr for N_Variant nodes. */
#define Set_Alignment einfo__set_alignment
#define Set_Esize einfo__set_esize
#define Set_RM_Size einfo__set_rm_size
#define Set_Component_Bit_Offset einfo__set_component_bit_offset
#define Set_Component_Size einfo__set_component_size
#define Set_Present_Expr sinfo__set_present_expr
extern void Set_Alignment PARAMS ((Entity_Id, Uint));
extern void Set_Component_Size PARAMS ((Entity_Id, Uint));
extern void Set_Esize PARAMS ((Entity_Id, Uint));
extern void Set_RM_Size PARAMS ((Entity_Id, Uint));
extern void Set_Component_Bit_Offset PARAMS ((Entity_Id, Uint));
extern void Set_Present_Expr PARAMS ((Node_Id, Uint));
/* Test if the node N is the name of an entity (i.e. is an identifier,
expanded name, or an attribute reference that returns an entity). */
#define Is_Entity_Name einfo__is_entity_name
extern Boolean Is_Entity_Name PARAMS ((Node_Id));
#define Get_Attribute_Definition_Clause einfo__get_attribute_definition_clause
extern Node_Id Get_Attribute_Definition_Clause PARAMS ((Entity_Id, char));
/* errout: */
#define Error_Msg_N errout__error_msg_n
#define Error_Msg_NE errout__error_msg_ne
#define Error_Msg_Node_2 errout__error_msg_node_2
#define Error_Msg_Uint_1 errout__error_msg_uint_1
#define Error_Msg_Uint_2 errout__error_msg_uint_2
extern void Error_Msg_N PARAMS ((Fat_Pointer, Node_Id));
extern void Error_Msg_NE PARAMS ((Fat_Pointer, Node_Id, Entity_Id));
extern Entity_Id Error_Msg_Node_2;
extern Uint Error_Msg_Uint_1;
extern Uint Error_Msg_Uint_2;
/* exp_code: */
#define Asm_Input_Constraint exp_code__asm_input_constraint
#define Asm_Input_Value exp_code__asm_input_value
#define Asm_Output_Constraint exp_code__asm_output_constraint
#define Asm_Output_Variable exp_code__asm_output_variable
#define Asm_Template exp_code__asm_template
#define Clobber_Get_Next exp_code__clobber_get_next
#define Clobber_Setup exp_code__clobber_setup
#define Is_Asm_Volatile exp_code__is_asm_volatile
#define Next_Asm_Input exp_code__next_asm_input
#define Next_Asm_Output exp_code__next_asm_output
#define Setup_Asm_Inputs exp_code__setup_asm_inputs
#define Setup_Asm_Outputs exp_code__setup_asm_outputs
extern Node_Id Asm_Input_Constraint PARAMS ((void));
extern Node_Id Asm_Input_Value PARAMS ((void));
extern Node_Id Asm_Output_Constraint PARAMS ((void));
extern Node_Id Asm_Output_Variable PARAMS ((void));
extern Node_Id Asm_Template PARAMS ((Node_Id));
extern char *Clobber_Get_Next PARAMS ((void));
extern void Clobber_Setup PARAMS ((Node_Id));
extern Boolean Is_Asm_Volatile PARAMS ((Node_Id));
extern void Next_Asm_Input PARAMS ((void));
extern void Next_Asm_Output PARAMS ((void));
extern void Setup_Asm_Inputs PARAMS ((Node_Id));
extern void Setup_Asm_Outputs PARAMS ((Node_Id));
/* exp_dbug: */
#define Get_Encoded_Name exp_dbug__get_encoded_name
#define Get_External_Name_With_Suffix exp_dbug__get_external_name_with_suffix
extern void Get_Encoded_Name PARAMS ((Entity_Id));
extern void Get_External_Name_With_Suffix PARAMS ((Entity_Id, Fat_Pointer));
/* lib: */
#define Cunit lib__cunit
#define Ident_String lib__ident_string
#define In_Extended_Main_Code_Unit lib__in_extended_main_code_unit
extern Node_Id Cunit PARAMS ((Unit_Number_Type));
extern Node_Id Ident_String PARAMS ((Unit_Number_Type));
extern Boolean In_Extended_Main_Code_Unit PARAMS ((Entity_Id));
/* opt: */
#define Global_Discard_Names opt__global_discard_names
#define Exception_Mechanism opt__exception_mechanism
typedef enum {Setjmp_Longjmp, Front_End_ZCX, GCC_ZCX} Exception_Mechanism_Type;
extern Boolean Global_Discard_Names;
extern Exception_Mechanism_Type Exception_Mechanism;
/* restrict: */
#define Check_Elaboration_Code_Allowed restrict__check_elaboration_code_allowed
#define No_Exception_Handlers_Set restrict__no_exception_handlers_set
extern void Check_Elaboration_Code_Allowed PARAMS ((Node_Id));
extern Boolean No_Exception_Handlers_Set PARAMS ((void));
/* sem_eval: */
#define Compile_Time_Known_Value sem_eval__compile_time_known_value
#define Expr_Value sem_eval__expr_value
#define Expr_Value_S sem_eval__expr_value_s
#define Is_OK_Static_Expression sem_eval__is_ok_static_expression
extern Uint Expr_Value PARAMS ((Node_Id));
extern Node_Id Expr_Value_S PARAMS ((Node_Id));
extern Boolean Compile_Time_Known_Value PARAMS((Node_Id));
extern Boolean Is_OK_Static_Expression PARAMS((Node_Id));
/* sem_util: */
#define Defining_Entity sem_util__defining_entity
#define First_Actual sem_util__first_actual
#define Next_Actual sem_util__next_actual
#define Requires_Transient_Scope sem_util__requires_transient_scope
extern Entity_Id Defining_Entity PARAMS ((Node_Id));
extern Node_Id First_Actual PARAMS ((Node_Id));
extern Node_Id Next_Actual PARAMS ((Node_Id));
extern Boolean Requires_Transient_Scope PARAMS ((Entity_Id));
/* sinfo: These functions aren't in sinfo.h since we don't make the
setting functions, just the retrieval functions. */
#define Set_Has_No_Elaboration_Code sinfo__set_has_no_elaboration_code
extern void Set_Has_No_Elaboration_Code PARAMS ((Node_Id, Boolean));
/* targparm: */
#define Stack_Check_Probes_On_Target targparm__stack_check_probes_on_target
extern Boolean Stack_Check_Probes_On_Target;
|