PR debug/66535
[official-gcc.git] / gcc / testsuite / gnat.dg / case_optimization_pkg1.ads
blobda458645e9ccacac66b9cf4a61e9da119bdfc7b3
1 package Case_Optimization_Pkg1 is
3 type Element is null record;
5 type Internal_Element_Kinds is
6 (Not_An_Element,
7 An_All_Calls_Remote_Pragma,
8 An_Asynchronous_Pragma,
9 An_Atomic_Pragma,
10 An_Atomic_Components_Pragma,
11 An_Attach_Handler_Pragma,
12 A_Controlled_Pragma,
13 A_Convention_Pragma,
14 A_Discard_Names_Pragma,
15 An_Elaborate_Pragma,
16 An_Elaborate_All_Pragma,
17 An_Elaborate_Body_Pragma,
18 An_Export_Pragma,
19 An_Import_Pragma,
20 An_Inline_Pragma,
21 An_Inspection_Point_Pragma,
22 An_Interrupt_Handler_Pragma,
23 An_Interrupt_Priority_Pragma,
24 A_Linker_Options_Pragma,
25 A_List_Pragma,
26 A_Locking_Policy_Pragma,
27 A_Normalize_Scalars_Pragma,
28 An_Optimize_Pragma,
29 A_Pack_Pragma,
30 A_Page_Pragma,
31 A_Preelaborate_Pragma,
32 A_Priority_Pragma,
33 A_Pure_Pragma,
34 A_Queuing_Policy_Pragma,
35 A_Remote_Call_Interface_Pragma,
36 A_Remote_Types_Pragma,
37 A_Restrictions_Pragma,
38 A_Reviewable_Pragma,
39 A_Shared_Passive_Pragma,
40 A_Storage_Size_Pragma,
41 A_Suppress_Pragma,
42 A_Task_Dispatching_Policy_Pragma,
43 A_Volatile_Pragma,
44 A_Volatile_Components_Pragma,
45 An_Assert_Pragma,
46 An_Assertion_Policy_Pragma,
47 A_Detect_Blocking_Pragma,
48 A_No_Return_Pragma,
49 A_Partition_Elaboration_Policy_Pragma,
50 A_Preelaborable_Initialization_Pragma,
51 A_Priority_Specific_Dispatching_Pragma,
52 A_Profile_Pragma,
53 A_Relative_Deadline_Pragma,
54 An_Unchecked_Union_Pragma,
55 An_Unsuppress_Pragma,
56 An_Implementation_Defined_Pragma,
57 An_Unknown_Pragma,
58 A_Defining_Identifier,
59 A_Defining_Character_Literal,
60 A_Defining_Enumeration_Literal,
61 A_Defining_And_Operator,
62 A_Defining_Or_Operator,
63 A_Defining_Xor_Operator,
64 A_Defining_Equal_Operator,
65 A_Defining_Not_Equal_Operator,
66 A_Defining_Less_Than_Operator,
67 A_Defining_Less_Than_Or_Equal_Operator,
68 A_Defining_Greater_Than_Operator,
69 A_Defining_Greater_Than_Or_Equal_Operator,
70 A_Defining_Plus_Operator,
71 A_Defining_Minus_Operator,
72 A_Defining_Concatenate_Operator,
73 A_Defining_Unary_Plus_Operator,
74 A_Defining_Unary_Minus_Operator,
75 A_Defining_Multiply_Operator,
76 A_Defining_Divide_Operator,
77 A_Defining_Mod_Operator,
78 A_Defining_Rem_Operator,
79 A_Defining_Exponentiate_Operator,
80 A_Defining_Abs_Operator,
81 A_Defining_Not_Operator,
82 A_Defining_Expanded_Name,
83 An_Ordinary_Type_Declaration,
84 A_Task_Type_Declaration,
85 A_Protected_Type_Declaration,
86 An_Incomplete_Type_Declaration,
87 A_Tagged_Incomplete_Type_Declaration,
88 A_Private_Type_Declaration,
89 A_Private_Extension_Declaration,
90 A_Subtype_Declaration,
91 A_Variable_Declaration,
92 A_Constant_Declaration,
93 A_Deferred_Constant_Declaration,
94 A_Single_Task_Declaration,
95 A_Single_Protected_Declaration,
96 An_Integer_Number_Declaration,
97 A_Real_Number_Declaration,
98 An_Enumeration_Literal_Specification,
99 A_Discriminant_Specification,
100 A_Component_Declaration,
101 A_Loop_Parameter_Specification,
102 A_Procedure_Declaration,
103 A_Function_Declaration,
104 A_Parameter_Specification,
105 A_Procedure_Body_Declaration,
106 A_Function_Body_Declaration,
107 A_Return_Object_Declaration,
108 A_Null_Procedure_Declaration,
109 A_Package_Declaration,
110 A_Package_Body_Declaration,
111 An_Object_Renaming_Declaration,
112 An_Exception_Renaming_Declaration,
113 A_Package_Renaming_Declaration,
114 A_Procedure_Renaming_Declaration,
115 A_Function_Renaming_Declaration,
116 A_Generic_Package_Renaming_Declaration,
117 A_Generic_Procedure_Renaming_Declaration,
118 A_Generic_Function_Renaming_Declaration,
119 A_Task_Body_Declaration,
120 A_Protected_Body_Declaration,
121 An_Entry_Declaration,
122 An_Entry_Body_Declaration,
123 An_Entry_Index_Specification,
124 A_Procedure_Body_Stub,
125 A_Function_Body_Stub,
126 A_Package_Body_Stub,
127 A_Task_Body_Stub,
128 A_Protected_Body_Stub,
129 An_Exception_Declaration,
130 A_Choice_Parameter_Specification,
131 A_Generic_Procedure_Declaration,
132 A_Generic_Function_Declaration,
133 A_Generic_Package_Declaration,
134 A_Package_Instantiation,
135 A_Procedure_Instantiation,
136 A_Function_Instantiation,
137 A_Formal_Object_Declaration,
138 A_Formal_Type_Declaration,
139 A_Formal_Procedure_Declaration,
140 A_Formal_Function_Declaration,
141 A_Formal_Package_Declaration,
142 A_Formal_Package_Declaration_With_Box,
143 A_Derived_Type_Definition,
144 A_Derived_Record_Extension_Definition,
145 An_Enumeration_Type_Definition,
146 A_Signed_Integer_Type_Definition,
147 A_Modular_Type_Definition,
148 A_Root_Integer_Definition,
149 A_Root_Real_Definition,
150 A_Universal_Integer_Definition,
151 A_Universal_Real_Definition,
152 A_Universal_Fixed_Definition,
153 A_Floating_Point_Definition,
154 An_Ordinary_Fixed_Point_Definition,
155 A_Decimal_Fixed_Point_Definition,
156 An_Unconstrained_Array_Definition,
157 A_Constrained_Array_Definition,
158 A_Record_Type_Definition,
159 A_Tagged_Record_Type_Definition,
160 An_Ordinary_Interface,
161 A_Limited_Interface,
162 A_Task_Interface,
163 A_Protected_Interface,
164 A_Synchronized_Interface,
165 A_Pool_Specific_Access_To_Variable,
166 An_Access_To_Variable,
167 An_Access_To_Constant,
168 An_Access_To_Procedure,
169 An_Access_To_Protected_Procedure,
170 An_Access_To_Function,
171 An_Access_To_Protected_Function,
172 A_Subtype_Indication,
173 A_Range_Attribute_Reference,
174 A_Simple_Expression_Range,
175 A_Digits_Constraint,
176 A_Delta_Constraint,
177 An_Index_Constraint,
178 A_Discriminant_Constraint,
179 A_Component_Definition,
180 A_Discrete_Subtype_Indication_As_Subtype_Definition,
181 A_Discrete_Range_Attribute_Reference_As_Subtype_Definition,
182 A_Discrete_Simple_Expression_Range_As_Subtype_Definition,
183 A_Discrete_Subtype_Indication,
184 A_Discrete_Range_Attribute_Reference,
185 A_Discrete_Simple_Expression_Range,
186 An_Unknown_Discriminant_Part,
187 A_Known_Discriminant_Part,
188 A_Record_Definition,
189 A_Null_Record_Definition,
190 A_Null_Component,
191 A_Variant_Part,
192 A_Variant,
193 An_Others_Choice,
194 An_Anonymous_Access_To_Variable,
195 An_Anonymous_Access_To_Constant,
196 An_Anonymous_Access_To_Procedure,
197 An_Anonymous_Access_To_Protected_Procedure,
198 An_Anonymous_Access_To_Function,
199 An_Anonymous_Access_To_Protected_Function,
200 A_Private_Type_Definition,
201 A_Tagged_Private_Type_Definition,
202 A_Private_Extension_Definition,
203 A_Task_Definition,
204 A_Protected_Definition,
205 A_Formal_Private_Type_Definition,
206 A_Formal_Tagged_Private_Type_Definition,
207 A_Formal_Derived_Type_Definition,
208 A_Formal_Discrete_Type_Definition,
209 A_Formal_Signed_Integer_Type_Definition,
210 A_Formal_Modular_Type_Definition,
211 A_Formal_Floating_Point_Definition,
212 A_Formal_Ordinary_Fixed_Point_Definition,
213 A_Formal_Decimal_Fixed_Point_Definition,
214 A_Formal_Ordinary_Interface,
215 A_Formal_Limited_Interface,
216 A_Formal_Task_Interface,
217 A_Formal_Protected_Interface,
218 A_Formal_Synchronized_Interface,
219 A_Formal_Unconstrained_Array_Definition,
220 A_Formal_Constrained_Array_Definition,
221 A_Formal_Pool_Specific_Access_To_Variable,
222 A_Formal_Access_To_Variable,
223 A_Formal_Access_To_Constant,
224 A_Formal_Access_To_Procedure,
225 A_Formal_Access_To_Protected_Procedure,
226 A_Formal_Access_To_Function,
227 A_Formal_Access_To_Protected_Function,
228 An_Integer_Literal,
229 A_Real_Literal,
230 A_String_Literal,
231 An_Identifier,
232 An_And_Operator,
233 An_Or_Operator,
234 An_Xor_Operator,
235 An_Equal_Operator,
236 A_Not_Equal_Operator,
237 A_Less_Than_Operator,
238 A_Less_Than_Or_Equal_Operator,
239 A_Greater_Than_Operator,
240 A_Greater_Than_Or_Equal_Operator,
241 A_Plus_Operator,
242 A_Minus_Operator,
243 A_Concatenate_Operator,
244 A_Unary_Plus_Operator,
245 A_Unary_Minus_Operator,
246 A_Multiply_Operator,
247 A_Divide_Operator,
248 A_Mod_Operator,
249 A_Rem_Operator,
250 An_Exponentiate_Operator,
251 An_Abs_Operator,
252 A_Not_Operator,
253 A_Character_Literal,
254 An_Enumeration_Literal,
255 An_Explicit_Dereference,
256 A_Function_Call,
257 An_Indexed_Component,
258 A_Slice,
259 A_Selected_Component,
260 An_Access_Attribute,
261 An_Address_Attribute,
262 An_Adjacent_Attribute,
263 An_Aft_Attribute,
264 An_Alignment_Attribute,
265 A_Base_Attribute,
266 A_Bit_Order_Attribute,
267 A_Body_Version_Attribute,
268 A_Callable_Attribute,
269 A_Caller_Attribute,
270 A_Ceiling_Attribute,
271 A_Class_Attribute,
272 A_Component_Size_Attribute,
273 A_Compose_Attribute,
274 A_Constrained_Attribute,
275 A_Copy_Sign_Attribute,
276 A_Count_Attribute,
277 A_Definite_Attribute,
278 A_Delta_Attribute,
279 A_Denorm_Attribute,
280 A_Digits_Attribute,
281 An_Exponent_Attribute,
282 An_External_Tag_Attribute,
283 A_First_Attribute,
284 A_First_Bit_Attribute,
285 A_Floor_Attribute,
286 A_Fore_Attribute,
287 A_Fraction_Attribute,
288 An_Identity_Attribute,
289 An_Image_Attribute,
290 An_Input_Attribute,
291 A_Last_Attribute,
292 A_Last_Bit_Attribute,
293 A_Leading_Part_Attribute,
294 A_Length_Attribute,
295 A_Machine_Attribute,
296 A_Machine_Emax_Attribute,
297 A_Machine_Emin_Attribute,
298 A_Machine_Mantissa_Attribute,
299 A_Machine_Overflows_Attribute,
300 A_Machine_Radix_Attribute,
301 A_Machine_Rounds_Attribute,
302 A_Max_Attribute,
303 A_Max_Size_In_Storage_Elements_Attribute,
304 A_Min_Attribute,
305 A_Model_Attribute,
306 A_Model_Emin_Attribute,
307 A_Model_Epsilon_Attribute,
308 A_Model_Mantissa_Attribute,
309 A_Model_Small_Attribute,
310 A_Modulus_Attribute,
311 An_Output_Attribute,
312 A_Partition_ID_Attribute,
313 A_Pos_Attribute,
314 A_Position_Attribute,
315 A_Pred_Attribute,
316 A_Range_Attribute,
317 A_Read_Attribute,
318 A_Remainder_Attribute,
319 A_Round_Attribute,
320 A_Rounding_Attribute,
321 A_Safe_First_Attribute,
322 A_Safe_Last_Attribute,
323 A_Scale_Attribute,
324 A_Scaling_Attribute,
325 A_Signed_Zeros_Attribute,
326 A_Size_Attribute,
327 A_Small_Attribute,
328 A_Storage_Pool_Attribute,
329 A_Storage_Size_Attribute,
330 A_Succ_Attribute,
331 A_Tag_Attribute,
332 A_Terminated_Attribute,
333 A_Truncation_Attribute,
334 An_Unbiased_Rounding_Attribute,
335 An_Unchecked_Access_Attribute,
336 A_Val_Attribute,
337 A_Valid_Attribute,
338 A_Value_Attribute,
339 A_Version_Attribute,
340 A_Wide_Image_Attribute,
341 A_Wide_Value_Attribute,
342 A_Wide_Width_Attribute,
343 A_Width_Attribute,
344 A_Write_Attribute,
345 A_Machine_Rounding_Attribute,
346 A_Mod_Attribute,
347 A_Priority_Attribute,
348 A_Stream_Size_Attribute,
349 A_Wide_Wide_Image_Attribute,
350 A_Wide_Wide_Value_Attribute,
351 A_Wide_Wide_Width_Attribute,
352 An_Implementation_Defined_Attribute,
353 An_Unknown_Attribute,
354 A_Record_Aggregate,
355 An_Extension_Aggregate,
356 A_Positional_Array_Aggregate,
357 A_Named_Array_Aggregate,
358 An_And_Then_Short_Circuit,
359 An_Or_Else_Short_Circuit,
360 An_In_Range_Membership_Test,
361 A_Not_In_Range_Membership_Test,
362 An_In_Type_Membership_Test,
363 A_Not_In_Type_Membership_Test,
364 A_Null_Literal,
365 A_Parenthesized_Expression,
366 A_Type_Conversion,
367 A_Qualified_Expression,
368 An_Allocation_From_Subtype,
369 An_Allocation_From_Qualified_Expression,
370 A_Pragma_Argument_Association,
371 A_Discriminant_Association,
372 A_Record_Component_Association,
373 An_Array_Component_Association,
374 A_Parameter_Association,
375 A_Generic_Association,
376 A_Null_Statement,
377 An_Assignment_Statement,
378 An_If_Statement,
379 A_Case_Statement,
380 A_Loop_Statement,
381 A_While_Loop_Statement,
382 A_For_Loop_Statement,
383 A_Block_Statement,
384 An_Exit_Statement,
385 A_Goto_Statement,
386 A_Procedure_Call_Statement,
387 A_Return_Statement,
388 An_Extended_Return_Statement,
389 An_Accept_Statement,
390 An_Entry_Call_Statement,
391 A_Requeue_Statement,
392 A_Requeue_Statement_With_Abort,
393 A_Delay_Until_Statement,
394 A_Delay_Relative_Statement,
395 A_Terminate_Alternative_Statement,
396 A_Selective_Accept_Statement,
397 A_Timed_Entry_Call_Statement,
398 A_Conditional_Entry_Call_Statement,
399 An_Asynchronous_Select_Statement,
400 An_Abort_Statement,
401 A_Raise_Statement,
402 A_Code_Statement,
403 An_If_Path,
404 An_Elsif_Path,
405 An_Else_Path,
406 A_Case_Path,
407 A_Select_Path,
408 An_Or_Path,
409 A_Then_Abort_Path,
410 A_Use_Package_Clause,
411 A_Use_Type_Clause,
412 A_With_Clause,
413 An_Attribute_Definition_Clause,
414 An_Enumeration_Representation_Clause,
415 A_Record_Representation_Clause,
416 An_At_Clause,
417 A_Component_Clause,
418 An_Exception_Handler,
419 Non_Trivial_Mapping,
420 Not_Implemented_Mapping,
421 Trivial_Mapping,
422 No_Mapping);
424 subtype Internal_Expression_Kinds is Internal_Element_Kinds
425 range An_Integer_Literal .. An_Allocation_From_Qualified_Expression;
427 subtype Internal_Operator_Symbol_Kinds is Internal_Expression_Kinds
428 range An_And_Operator .. A_Not_Operator;
430 function Int_Kind (E : Element) return Internal_Element_Kinds;
432 end Case_Optimization_Pkg1;