111
|
1 /****************************************************************************
|
|
2 * *
|
|
3 * GNAT COMPILER COMPONENTS *
|
|
4 * *
|
|
5 * FE *
|
|
6 * *
|
|
7 * C Header File *
|
|
8 * *
|
131
|
9 * Copyright (C) 1992-2018, Free Software Foundation, Inc. *
|
111
|
10 * *
|
|
11 * GNAT is free software; you can redistribute it and/or modify it under *
|
|
12 * terms of the GNU General Public License as published by the Free Soft- *
|
|
13 * ware Foundation; either version 3, or (at your option) any later ver- *
|
|
14 * sion. GNAT is distributed in the hope that it will be useful, but WITH- *
|
|
15 * OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY *
|
|
16 * or FITNESS FOR A PARTICULAR PURPOSE. *
|
|
17 * *
|
|
18 * As a special exception under Section 7 of GPL version 3, you are granted *
|
|
19 * additional permissions described in the GCC Runtime Library Exception, *
|
|
20 * version 3.1, as published by the Free Software Foundation. *
|
|
21 * *
|
|
22 * You should have received a copy of the GNU General Public License and *
|
|
23 * a copy of the GCC Runtime Library Exception along with this program; *
|
|
24 * see the files COPYING3 and COPYING.RUNTIME respectively. If not, see *
|
|
25 * <http://www.gnu.org/licenses/>. *
|
|
26 * *
|
|
27 * GNAT was originally developed by the GNAT team at New York University. *
|
|
28 * Extensive contributions were provided by Ada Core Technologies Inc. *
|
|
29 * *
|
|
30 ****************************************************************************/
|
|
31
|
|
32 /* This file contains declarations to access front-end functions and variables
|
|
33 used by gigi.
|
|
34
|
|
35 WARNING: functions taking String_Pointer parameters must abide by the rule
|
|
36 documented alongside the definition of String_Pointer in types.h. */
|
|
37
|
|
38 #ifdef __cplusplus
|
|
39 extern "C" {
|
|
40 #endif
|
|
41
|
|
42 /* atree: */
|
|
43
|
|
44 #define Serious_Errors_Detected atree__serious_errors_detected
|
|
45
|
|
46 /* comperr: */
|
|
47
|
|
48 #define Compiler_Abort comperr__compiler_abort
|
|
49 extern int Compiler_Abort (String_Pointer, String_Pointer, Boolean) ATTRIBUTE_NORETURN;
|
|
50
|
|
51 /* csets: */
|
|
52
|
|
53 #define Fold_Lower(C) csets__fold_lower[C]
|
|
54 #define Fold_Upper(C) csets__fold_upper[C]
|
|
55 extern char Fold_Lower[], Fold_Upper[];
|
|
56
|
|
57 /* debug: */
|
|
58
|
|
59 #define Debug_Flag_Dot_R debug__debug_flag_dot_r
|
|
60 #define Debug_Flag_NN debug__debug_flag_nn
|
|
61 extern Boolean Debug_Flag_Dot_R;
|
|
62 extern Boolean Debug_Flag_NN;
|
|
63
|
|
64 /* einfo: */
|
|
65
|
|
66 #define Set_Alignment einfo__set_alignment
|
|
67 #define Set_Component_Bit_Offset einfo__set_component_bit_offset
|
|
68 #define Set_Component_Size einfo__set_component_size
|
|
69 #define Set_Esize einfo__set_esize
|
|
70 #define Set_Mechanism einfo__set_mechanism
|
131
|
71 #define Set_Normalized_First_Bit einfo__set_normalized_first_bit
|
|
72 #define Set_Normalized_Position einfo__set_normalized_position
|
111
|
73 #define Set_RM_Size einfo__set_rm_size
|
|
74
|
|
75 extern void Set_Alignment (Entity_Id, Uint);
|
|
76 extern void Set_Component_Bit_Offset (Entity_Id, Uint);
|
|
77 extern void Set_Component_Size (Entity_Id, Uint);
|
|
78 extern void Set_Esize (Entity_Id, Uint);
|
|
79 extern void Set_Mechanism (Entity_Id, Mechanism_Type);
|
131
|
80 extern void Set_Normalized_First_Bit (Entity_Id, Uint);
|
|
81 extern void Set_Normalized_Position (Entity_Id, Uint);
|
111
|
82 extern void Set_RM_Size (Entity_Id, Uint);
|
|
83
|
|
84 #define Is_Entity_Name einfo__is_entity_name
|
|
85 extern Boolean Is_Entity_Name (Node_Id);
|
|
86
|
|
87 #define Get_Attribute_Definition_Clause einfo__get_attribute_definition_clause
|
131
|
88 extern Node_Id Get_Attribute_Definition_Clause (Entity_Id, unsigned char);
|
111
|
89
|
|
90 /* errout: */
|
|
91
|
|
92 #define Error_Msg_N errout__error_msg_n
|
|
93 #define Error_Msg_NE errout__error_msg_ne
|
|
94 #define Set_Identifier_Casing errout__set_identifier_casing
|
|
95
|
|
96 extern void Error_Msg_N (String_Pointer, Node_Id);
|
|
97 extern void Error_Msg_NE (String_Pointer, Node_Id, Entity_Id);
|
|
98 extern void Set_Identifier_Casing (Char *, const Char *);
|
|
99
|
|
100 /* err_vars: */
|
|
101
|
|
102 #define Error_Msg_Node_2 err_vars__error_msg_node_2
|
|
103 #define Error_Msg_Uint_1 err_vars__error_msg_uint_1
|
|
104 #define Error_Msg_Uint_2 err_vars__error_msg_uint_2
|
|
105
|
|
106 extern Entity_Id Error_Msg_Node_2;
|
|
107 extern Uint Error_Msg_Uint_1;
|
|
108 extern Uint Error_Msg_Uint_2;
|
|
109 extern Nat Serious_Errors_Detected;
|
|
110
|
|
111 /* exp_ch11: */
|
|
112
|
|
113 #define Get_Local_Raise_Call_Entity exp_ch11__get_local_raise_call_entity
|
|
114 #define Get_RT_Exception_Entity exp_ch11__get_rt_exception_entity
|
|
115 #define Get_RT_Exception_Name exp_ch11__get_rt_exception_name
|
|
116 #define Warn_If_No_Local_Raise exp_ch11__warn_if_no_local_raise
|
|
117
|
|
118 extern Entity_Id Get_Local_Raise_Call_Entity (void);
|
|
119 extern Entity_Id Get_RT_Exception_Entity (int);
|
|
120 extern void Get_RT_Exception_Name (int);
|
|
121 extern void Warn_If_No_Local_Raise (int);
|
|
122
|
|
123 /* exp_code: */
|
|
124
|
|
125 #define Asm_Input_Constraint exp_code__asm_input_constraint
|
|
126 #define Asm_Input_Value exp_code__asm_input_value
|
|
127 #define Asm_Output_Constraint exp_code__asm_output_constraint
|
|
128 #define Asm_Output_Variable exp_code__asm_output_variable
|
|
129 #define Asm_Template exp_code__asm_template
|
|
130 #define Clobber_Get_Next exp_code__clobber_get_next
|
|
131 #define Clobber_Setup exp_code__clobber_setup
|
|
132 #define Is_Asm_Volatile exp_code__is_asm_volatile
|
|
133 #define Next_Asm_Input exp_code__next_asm_input
|
|
134 #define Next_Asm_Output exp_code__next_asm_output
|
|
135 #define Setup_Asm_Inputs exp_code__setup_asm_inputs
|
|
136 #define Setup_Asm_Outputs exp_code__setup_asm_outputs
|
|
137
|
|
138 extern Node_Id Asm_Input_Constraint (void);
|
|
139 extern Node_Id Asm_Input_Value (void);
|
|
140 extern Node_Id Asm_Output_Constraint (void);
|
|
141 extern Node_Id Asm_Output_Variable (void);
|
|
142 extern Node_Id Asm_Template (Node_Id);
|
|
143 extern char *Clobber_Get_Next (void);
|
|
144 extern void Clobber_Setup (Node_Id);
|
|
145 extern Boolean Is_Asm_Volatile (Node_Id);
|
|
146 extern void Next_Asm_Input (void);
|
|
147 extern void Next_Asm_Output (void);
|
|
148 extern void Setup_Asm_Inputs (Node_Id);
|
|
149 extern void Setup_Asm_Outputs (Node_Id);
|
|
150
|
|
151 /* exp_dbug: */
|
|
152
|
|
153 #define Get_Encoded_Name exp_dbug__get_encoded_name
|
|
154 #define Get_External_Name exp_dbug__get_external_name
|
|
155
|
|
156 extern void Get_Encoded_Name (Entity_Id);
|
|
157 extern void Get_External_Name (Entity_Id, Boolean, String_Pointer);
|
|
158
|
131
|
159 /* exp_tss: */
|
|
160
|
|
161 #define Is_Init_Proc exp_tss__is_init_proc
|
|
162
|
|
163 extern Boolean Is_Init_Proc (Entity_Id);
|
|
164
|
111
|
165 /* exp_util: */
|
|
166
|
|
167 #define Is_Fully_Repped_Tagged_Type exp_util__is_fully_repped_tagged_type
|
131
|
168 #define Find_Interface_Tag exp_util__find_interface_tag
|
111
|
169
|
|
170 extern Boolean Is_Fully_Repped_Tagged_Type (Entity_Id);
|
131
|
171 extern Entity_Id Find_Interface_Tag (Entity_Id, Entity_Id);
|
111
|
172
|
|
173 /* lib: */
|
|
174
|
|
175 #define Cunit lib__cunit
|
|
176 #define Ident_String lib__ident_string
|
|
177 #define In_Extended_Main_Code_Unit lib__in_extended_main_code_unit
|
|
178 #define In_Same_Source_Unit lib__in_same_source_unit
|
|
179
|
|
180 extern Node_Id Cunit (Unit_Number_Type);
|
|
181 extern Node_Id Ident_String (Unit_Number_Type);
|
|
182 extern Boolean In_Extended_Main_Code_Unit (Entity_Id);
|
|
183 extern Boolean In_Same_Source_Unit (Node_Id, Node_Id);
|
|
184
|
|
185 /* opt: */
|
|
186
|
|
187 #define Back_End_Inlining opt__back_end_inlining
|
|
188 #define Exception_Extra_Info opt__exception_extra_info
|
|
189 #define Exception_Locations_Suppressed opt__exception_locations_suppressed
|
|
190 #define Exception_Mechanism opt__exception_mechanism
|
|
191 #define Float_Format opt__float_format
|
|
192 #define Generate_SCO_Instance_Table opt__generate_sco_instance_table
|
|
193 #define GNAT_Mode opt__gnat_mode
|
|
194 #define List_Representation_Info opt__list_representation_info
|
|
195 #define No_Strict_Aliasing_CP opt__no_strict_aliasing
|
|
196
|
|
197 typedef enum {
|
|
198 Front_End_SJLJ, Back_End_ZCX, Back_End_SJLJ
|
|
199 } Exception_Mechanism_Type;
|
|
200
|
|
201 extern Boolean Back_End_Inlining;
|
|
202 extern Boolean Exception_Extra_Info;
|
|
203 extern Boolean Exception_Locations_Suppressed;
|
|
204 extern Exception_Mechanism_Type Exception_Mechanism;
|
|
205 extern Char Float_Format;
|
|
206 extern Boolean Generate_SCO_Instance_Table;
|
|
207 extern Boolean GNAT_Mode;
|
|
208 extern Int List_Representation_Info;
|
|
209 extern Boolean No_Strict_Aliasing_CP;
|
|
210
|
|
211 #define ZCX_Exceptions opt__zcx_exceptions
|
|
212 #define SJLJ_Exceptions opt__sjlj_exceptions
|
|
213 #define Front_End_Exceptions opt__front_end_exceptions
|
|
214 #define Back_End_Exceptions opt__back_end_exceptions
|
|
215
|
|
216 extern Boolean ZCX_Exceptions (void);
|
|
217 extern Boolean SJLJ_Exceptions (void);
|
|
218 extern Boolean Front_End_Exceptions (void);
|
|
219 extern Boolean Back_End_Exceptions (void);
|
|
220
|
|
221 /* restrict: */
|
|
222
|
|
223 #define No_Exception_Handlers_Set restrict__no_exception_handlers_set
|
|
224 #define Check_No_Implicit_Heap_Alloc restrict__check_no_implicit_heap_alloc
|
|
225 #define Check_No_Implicit_Task_Alloc restrict__check_no_implicit_task_alloc
|
|
226 #define Check_No_Implicit_Protected_Alloc restrict__check_no_implicit_protected_alloc
|
|
227 #define Check_Elaboration_Code_Allowed restrict__check_elaboration_code_allowed
|
|
228 #define Check_Implicit_Dynamic_Code_Allowed restrict__check_implicit_dynamic_code_allowed
|
|
229
|
|
230 extern Boolean No_Exception_Handlers_Set (void);
|
|
231 extern void Check_No_Implicit_Heap_Alloc (Node_Id);
|
|
232 extern void Check_No_Implicit_Task_Alloc (Node_Id);
|
|
233 extern void Check_No_Implicit_Protected_Alloc (Node_Id);
|
|
234 extern void Check_Elaboration_Code_Allowed (Node_Id);
|
|
235 extern void Check_Implicit_Dynamic_Code_Allowed (Node_Id);
|
|
236
|
|
237 /* sem_aggr: */
|
|
238
|
|
239 #define Is_Others_Aggregate sem_aggr__is_others_aggregate
|
|
240
|
|
241 extern Boolean Is_Others_Aggregate (Node_Id);
|
|
242
|
|
243 /* sem_aux: */
|
|
244
|
|
245 #define Ancestor_Subtype sem_aux__ancestor_subtype
|
|
246 #define Constant_Value sem_aux__constant_value
|
|
247 #define First_Discriminant sem_aux__first_discriminant
|
|
248 #define First_Stored_Discriminant sem_aux__first_stored_discriminant
|
|
249 #define First_Subtype sem_aux__first_subtype
|
|
250 #define Is_By_Reference_Type sem_aux__is_by_reference_type
|
|
251 #define Is_Derived_Type sem_aux__is_derived_type
|
|
252
|
|
253 extern Entity_Id Ancestor_Subtype (Entity_Id);
|
|
254 extern Node_Id Constant_Value (Entity_Id);
|
|
255 extern Entity_Id First_Discriminant (Entity_Id);
|
|
256 extern Entity_Id First_Stored_Discriminant (Entity_Id);
|
|
257 extern Entity_Id First_Subtype (Entity_Id);
|
|
258 extern Boolean Is_By_Reference_Type (Entity_Id);
|
|
259 extern Boolean Is_Derived_Type (Entity_Id);
|
|
260
|
|
261 /* sem_eval: */
|
|
262
|
|
263 #define Compile_Time_Known_Value sem_eval__compile_time_known_value
|
|
264 #define Expr_Value sem_eval__expr_value
|
|
265 #define Expr_Value_S sem_eval__expr_value_s
|
|
266 #define Is_OK_Static_Expression sem_eval__is_ok_static_expression
|
|
267 #define Is_OK_Static_Subtype sem_eval__is_ok_static_subtype
|
|
268
|
|
269 extern Uint Expr_Value (Node_Id);
|
|
270 extern Node_Id Expr_Value_S (Node_Id);
|
|
271 extern Boolean Compile_Time_Known_Value (Node_Id);
|
|
272 extern Boolean Is_OK_Static_Expression (Node_Id);
|
|
273 extern Boolean Is_OK_Static_Subtype (Entity_Id);
|
|
274
|
|
275 /* sem_util: */
|
|
276
|
|
277 #define Defining_Entity sem_util__defining_entity
|
|
278 #define First_Actual sem_util__first_actual
|
|
279 #define Next_Actual sem_util__next_actual
|
131
|
280 #define Is_Variable_Size_Record sem_util__is_variable_size_record
|
111
|
281 #define Requires_Transient_Scope sem_util__requires_transient_scope
|
|
282
|
|
283 extern Entity_Id Defining_Entity (Node_Id);
|
|
284 extern Node_Id First_Actual (Node_Id);
|
|
285 extern Node_Id Next_Actual (Node_Id);
|
131
|
286 extern Boolean Is_Variable_Size_Record (Entity_Id Id);
|
|
287 extern Boolean Requires_Transient_Scope (Entity_Id);
|
111
|
288
|
|
289 /* sinfo: */
|
|
290
|
|
291 #define End_Location sinfo__end_location
|
|
292 #define Set_Has_No_Elaboration_Code sinfo__set_has_no_elaboration_code
|
|
293 #define Set_Present_Expr sinfo__set_present_expr
|
|
294
|
|
295 extern Source_Ptr End_Location (Node_Id);
|
|
296 extern void Set_Has_No_Elaboration_Code (Node_Id, Boolean);
|
|
297 extern void Set_Present_Expr (Node_Id, Uint);
|
|
298
|
|
299 /* targparm: */
|
|
300
|
|
301 #define Backend_Overflow_Checks_On_Target targparm__backend_overflow_checks_on_target
|
|
302 #define Machine_Overflows_On_Target targparm__machine_overflows_on_target
|
|
303 #define Signed_Zeros_On_Target targparm__signed_zeros_on_target
|
|
304 #define Stack_Check_Probes_On_Target targparm__stack_check_probes_on_target
|
|
305 #define Stack_Check_Limits_On_Target targparm__stack_check_limits_on_target
|
|
306
|
|
307 extern Boolean Backend_Overflow_Checks_On_Target;
|
|
308 extern Boolean Machine_Overflows_On_Target;
|
|
309 extern Boolean Signed_Zeros_On_Target;
|
|
310 extern Boolean Stack_Check_Probes_On_Target;
|
|
311 extern Boolean Stack_Check_Limits_On_Target;
|
|
312
|
|
313 /* warnsw: */
|
|
314
|
|
315 #define Warn_On_Questionable_Layout warnsw__warn_on_questionable_layout
|
|
316
|
|
317 extern Boolean Warn_On_Questionable_Layout;
|
|
318
|
|
319 #ifdef __cplusplus
|
|
320 }
|
|
321 #endif
|