]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/ada/ChangeLog
[Ada] Check SPARK restriction on Old/Loop_Entry with pointers
[thirdparty/gcc.git] / gcc / ada / ChangeLog
CommitLineData
7d2da10f 12019-08-14 Yannick Moy <moy@adacore.com>
2
3 * sem_spark.adb (Check_Old_Loop_Entry): New procedure to check
4 correct use of Old and Loop_Entry.
5 (Check_Node): Check subprogram contracts.
6 (Check_Pragma): Check Loop_Variant.
7 (Check_Safe_Pointers): Apply checking to library-level
8 subprogram declarations as well, in order to check their
9 contract.
10
a62147e6 112019-08-14 Yannick Moy <moy@adacore.com>
12
13 * sem_spark.adb (Is_Subpath_Expression): Take into account
14 conversion and qualification.
15
a9bd384f 162019-08-14 Eric Botcazou <ebotcazou@adacore.com>
17
18 * sem_ch7.adb (Install_Private_Declarations)
19 <Swap_Private_Dependents>: Do not rely solely on the
20 Is_Child_Unit flag on the unit to recurse.
21 (Uninstall_Declarations) <Swap_Private_Dependents>: New
22 function. Use it to recurse on the private dependent entities
23 for child units.
24
e2b5ac32 252019-08-14 Javier Miranda <miranda@adacore.com>
26
27 * exp_aggr.adb (Is_CCG_Supported_Aggregate): Return False for
28 arrays with bounds not known at compile time.
29
8e2a1f8f 302019-08-14 Ed Schonberg <schonberg@adacore.com>
31
32 * sem_util.adb (New_Copy_Tree, Visit_Entity): A quantified
33 expression includes the implicit declaration of the loop
34 parameter. When a quantified expression is copied during
35 expansion, for example when building the precondition code from
36 the generated pragma, a new loop parameter must be created for
37 the new tree, to prevent duplicate declarations for the same
38 symbol.
39
f27aa0dc 402019-08-14 Yannick Moy <moy@adacore.com>
41
42 * sem_disp.adb (Check_Dispatching_Operation): Update assertion
43 for the separate declarations created in GNATprove mode.
44 * sem_disp.ads (Is_Overriding_Subprogram): Update comment.
45 * sem_elab.adb (SPARK_Processor): Fix test for checking of
46 overriding primitives.
47
bd94cd6a 482019-08-14 Eric Botcazou <ebotcazou@adacore.com>
49
50 * inline.adb (Add_Inlined_Body): Tweak comments.
51 (List_Inlining_Info): Also list information about non-main
52 units.
53
ab791a8d 542019-08-14 Gary Dismukes <dismukes@adacore.com>
55
56 * sem_ch4.adb (Analyze_Selected_Component): In the case where
57 the prefix is of a concurrent type, and the selected entity
58 matching the selector is the first private declaration of the
59 type (such as the first local variable in a task's body), set
60 Is_Private_Op.
61
8325ffc0 622019-08-14 Piotr Trojanek <trojanek@adacore.com>
63
64 * einfo.adb (Is_Generic_Actual_Subprogram): Replace repeated
65 calls to Ekind with Ekind_In.
66
d1170f8d 672019-08-13 Richard Sandiford <richard.sandiford@arm.com>
68
69 PR middle-end/91421
70 * gcc-interface/trans.c (gigi): Call set_decl_buillt_in_function.
71 (Call_to_gnu): Use DECL_FE_FUNCTION_CODE instead of DECL_FUNCTION_CODE.
72
d042fb93 732019-08-13 Eric Botcazou <ebotcazou@adacore.com>
74
75 * ali.ads (Linker_Option_Record): Remove Original_Pos component.
76 * ali.adb (Scan_ALI): Do not set it.
77
69ddd862 782019-08-13 Eric Botcazou <ebotcazou@adacore.com>
79
80 * sem_ch3.adb (Build_Derived_Concurrent_Type): Add a couple of
81 local variables and use them. When the derived type fully
82 constrains the parent type, rewrite it as a subtype of an
83 implicit (unconstrained) derived type instead of the other way
84 around.
85 (Copy_And_Build): Deal with concurrent types and use predicates.
86 (Build_Derived_Private_Type): Build the full derivation if
87 needed for concurrent types too.
88 (Build_Derived_Record_Type): Add marker comment.
89 (Complete_Private_Subtype): Use predicates.
90
cfb10d96 912019-08-13 Ed Schonberg <schonberg@adacore.com>
92
93 * sem_ch3.adb (Check_Generic_Ancestor): New subprogram,
94 aubsidiary to Build_Derived_Record_Type. to enforce the rule
95 that a type extension declared in a generic body cznnot have an
96 ancestor that is a generic formal (RM 3.9.1 (4/2)). The rule
97 applies to all ancestors of the type, including interface
98 progenitors.
99
2fec02ad 1002019-08-13 Eric Botcazou <ebotcazou@adacore.com>
101
102 * sem_ch3.adb (Build_Underlying_Full_View): Delete.
103 (Complete_Private_Subtype): Do not set the full view on the
104 private subtype here. If the full base is itself derived from
105 private, do not re-derive the parent type but instead constrain
106 an existing underlying full view.
107 (Prepare_Private_Subtype_Completion): Do not get to the
108 underlying full view, if any. Set the full view on the private
109 subtype here.
110 (Process_Full_View): Likewise.
111 * sem_ch12.adb (Check_Generic_Actuals): Also set
112 Is_Generic_Actual_Type on the full view if the type of the
113 actual is private.
114 (Restore_Private_Views): Also reset Is_Generic_Actual_Type on
115 the full view if the type of the actual is private.
116 * sem_eval.adb (Subtypes_Statically_Match): Remove bypass for
117 generic actual types.
118
e2cbc305 1192019-08-13 Javier Miranda <miranda@adacore.com>
120
121 * sem_res.adb (Resolve_Selected_Component): When the type of the
122 component is an access to a class-wide type and the type of the
123 context is an access to a tagged type the relevant type is that
124 of the component (since in such case we may need to generate
125 implicit type conversions or dispatching calls).
126
ea791f8e 1272019-08-13 Ed Schonberg <schonberg@adacore.com>
128
129 * exp_aggr.adb (Aggr_Assignment_OK_For_Backend): Preanalyze
130 expression, rather do a full analysis, to prevent unwanted
131 removal of side effects which mask the intent of the expression.
132
da8cdc91 1332019-08-13 Eric Botcazou <ebotcazou@adacore.com>
134
135 * impunit.adb (Non_Imp_File_Names_95): Add
136 GNAT.Branch_Prediction.
137
b212de5b 1382019-08-13 Eric Botcazou <ebotcazou@adacore.com>
139
140 * exp_ch6.adb: Remove with and use clauses for Sem_Ch12.
141 (Expand_Call_Helper): Swap the back-end inlining case and the
142 special front-end expansion case. In back-end inlining mode, do
143 not invoke Add_Inlined_Body unless the call may be inlined.
144 * inline.ads (Add_Pending_Instantiation): New function moved
145 from...
146 * inline.adb (Add_Inlined_Body): Simplify comment. Turn test on
147 the enclosing unit into assertion.
148 (Add_Pending_Instantiation): New function moved from...
149 * sem_ch12.ads (Add_Pending_Instantiation): ...here.
150 * sem_ch12.adb (Add_Pending_Instantiation): ...here.
151
2cd122d8 1522019-08-13 Eric Botcazou <ebotcazou@adacore.com>
153
154 * sem.adb (Do_Analyze): Recompute Style_Check_Max_Line_Length
155 after restoring Style_Max_Line_Length.
156
f6bd78dd 1572019-08-13 Arnaud Charlet <charlet@adacore.com>
158
159 * sem_ch13.adb (Check_Iterator_Functions): Protect against
160 cascaded errors.
161
bcc2ed52 1622019-08-13 Ed Schonberg <schonberg@adacore.com>
163
164 * sem_ch8.adb (Analyze_Subprogram_Renaming): Do no suppress mode
165 conformance checks on child unit instance that is a compilation
166 unit.
167
e324731f 1682019-08-13 Gary Dismukes <dismukes@adacore.com>
169
170 * exp_dbug.adb (Fully_Qualify_Name): Add full name qualification
171 for the E_Exception case.
172
fa7ccff5 1732019-08-13 Gary Dismukes <dismukes@adacore.com>
174
175 * exp_aggr.adb (Aggr_Size_OK): Compute the aggregate size using
176 universal arithmetic, to avoid situations where the size
177 computation overflows.
178
4571ad41 1792019-08-13 Justin Squirek <squirek@adacore.com>
180
181 * repinfo.adb (List_Scalar_Storage_Order): Modify conditionals
182 for displaying ordering to always be triggered when -gnatR4 is
183 in effect.
184
da558db0 1852019-08-13 Justin Squirek <squirek@adacore.com>
186
187 * aspects.adb, aspects.ads: Register new aspect.
188 * par-prag.adb (Prag): Register new pragma
189 * sem_ch13.adb (Analyze_Aspect_Specifications): Add processing
190 for new aspect similar to Aspect_Max_Entry_Queue_Length.
191 * sem_prag.adb, sem_prag.ads (Analyze_Pragma): Register new
192 pragma and set it to use the same processing as
193 Pragma_Max_Queue_Length.
194 * snames.ads-tmpl: Move definition of
195 Name_Max_Entry_Queue_Length so that it can be processed as a
196 pragma in addition to a restriction and add an entry for the
197 pragma itself.
198
fb48dcd3 1992019-08-13 Yannick Moy <moy@adacore.com>
200
201 * sem_ch4.adb (Analyze_Allocator): Do not insert subtype
202 declaration for allocator inside a spec expression.
203
5bf51e61 2042019-08-13 Yannick Moy <moy@adacore.com>
205
206 * sem_res.adb (Resolve_Call): Do not inline calls inside record
207 types.
208
db3b1a47 2092019-08-13 Eric Botcazou <ebotcazou@adacore.com>
210
211 * sem_ch4.adb (Analyze_One_Call): Remove bypass for type
212 mismatch in nested instantiations.
213 * sem_ch8.adb (Find_Nearer_Entity): New function.
214 (Find_Renamed_Entity): Use it to disambiguate the candidates for
215 the renaming generated for an instantiation when it is
216 ambiguous.
217
175b42e6 2182019-08-13 Eric Botcazou <ebotcazou@adacore.com>
219
220 * gnat1drv.adb (Adjust_Global_Switches): Do not set
221 Back_End_Inlining in ASIS mode either.
222
1e510b63 2232019-08-13 Olivier Hainque <hainque@adacore.com>
224
225 * libgnat/s-win32.ads: Define size_t and fix the MapViewOfFile
226 binding to use it instead of DWORD for the dwNumberOfBytesToMap
227 argument.
228 * libgnat/g-sercom__mingw.adb (Read): State which definition of
229 size_t to fetch in call to Last_Index.
230
bfde37f8 2312019-08-13 Arnaud Charlet <charlet@adacore.com>
232
233 * gcc-interface/Make-lang.in: Remove unused TRACE variable. Pass
234 LN_S to relevant gnatlib targets.
235 * gcc-interface/Makefile.in: Systematically pass LN_S to
236 relevant gnatlib targets.
237
127fec2d 2382019-08-13 Yannick Moy <moy@adacore.com>
239
240 * sem_dim.adb (Analyze_Dimension,
241 Analyze_Dimension_Array_Aggregate, Analyze_Dimension_Call,
242 Analyze_Dimension_Extension_Or_Record_Aggregate): Return
243 immediately when inside an inlined body.
244 * sem_res.adb (Resolve_Call): Remove special checking now done
245 inside Analyze_Dimension_Call.
246
ae328900 2472019-08-13 Justin Squirek <squirek@adacore.com>
248
249 * exp_ch4.adb (Expand_N_Allocator): Add condition to detect
250 library-level object declarations
251
fecd5d5b 2522019-08-13 Eric Botcazou <ebotcazou@adacore.com>
253
254 * doc/gnat_ugn/building_executable_programs_with_gnat.rst
255 (-gnateT): Document Double_Float_Alignment parameter and fix
256 description of Double_Scalar_Alignment parameter.
257 * gnat_ugn.texi: Regenerate.
258
8105dc37 2592019-08-13 Eric Botcazou <ebotcazou@adacore.com>
260
261 * exp_ch6.adb (Expand_Call_Helper): If back-end inlining is
262 enabled, also instantiate the body of a generic unit containing
263 a subprogram subject to aspect/pragma Inline_Always at
264 optimization level zero.
265 * sem_ch12.adb (Might_Inline_Subp): Minor tweak.
266 (Analyze_Package_Instantiation): Do not instantiate the package
267 body because of inlining considerations if the instantiation is
268 done in a generic unit. Move around similar condition involving
269 the main unit. Add test on Back_End_Inlining to processing for
270 front-end inlining.
271
80a305cd 2722019-08-13 Javier Miranda <miranda@adacore.com>
273
274 * exp_disp.adb (Make_Secondary_DT): Handle record type
275 derivations that have interface components located at fixed
276 positions and interface components located at variable offset.
277 The offset of components located at fixed positions is computed
278 using the dummy object (similar to the case where all the
279 interface components are located at fixed positions).
280 (Make_DT): Build the dummy object for all tagged types that
281 implement interface types (that is, build it also for types with
282 variable size components), and use the dummy object to compute
283 the offset of all tag components located at fixed positions when
284 initializing the Interface_Table object.
285
0fabbf2c 2862019-08-13 Justin Squirek <squirek@adacore.com>
287
288 * gnatcmd.adb (GNATCmd): Add constant for new compiler switch
289 --help-ada, and include usage subprogram. Add line to usage help
290 explaining the new flag.
291 (GNATCmd_Usage): Rename from locally declared Usage so as not to
292 confuse with the newly imported version. Add new argument case
293 for --help-ada and add bug report email to implicit display of
294 help without the --help flag so as to unify output between the
295 two cases.
296
9c811f40 2972019-08-13 Dmitriy Anisimkov <anisimko@adacore.com>
298
299 * libgnat/g-comlin.adb (Getopt): Quote unrecognized switch in
300 Invalid_Switch exception message.
301
04c6a988 3022019-08-13 Yannick Moy <moy@adacore.com>
303
304 * sem_util.adb (Traverse_More_Func): Take into account
305 Loop_Actions inside N_Iterated_Component_Association nodes.
306 * sinfo.ads: Document correctly Loop_Actions as a field of nodes
307 of kind N_Iterated_Component_Association.
308
9c3e12d7 3092019-08-13 Claire Dross <dross@adacore.com>
310
311 * libgnat/a-cfinve.adb, libgnat/a-cofove.adb (Find_Index,
312 Reverse_Find_Index): Use bigger type to avoid range check
313 failure at the last loop iteration.
314
a4ea964c 3152019-08-12 Dmitriy Anisimkov <anisimko@adacore.com>
316
317 * libgnat/g-socket.adb (Is_IPv6_Address): Check that no less
318 then 2 colons in IPv6 numeric address.
319
4b422b29 3202019-08-12 Dmitriy Anisimkov <anisimko@adacore.com>
321
322 * libgnat/g-comlin.ads, libgnat/g-comlin.adb (Getopt): Add
323 parameter Quiet. Need to do not output error messages to
324 console. Invalid_Switch exception generation surrounded by an
325 error message.
326
fec0c7f6 3272019-08-12 Ed Schonberg <schonberg@adacore.com>
328
329 * exp_ch6.adb (Expand_Actuals. Add_Call_By_Copy_Code): Add code
330 to generate proper checks when an actual for an in-out or out
331 parameter has a non-null access type. No constraints are
332 applied to an inbound access parameter, but on exit a not-null
333 check must be performed if the type of the actual requires it.
334
41765355 3352019-08-12 Ed Schonberg <schonberg@adacore.com>
336
337 * sem_util.adb (Is_Expaned_Priority_Attribute): Check whether
338 call comes from a rewritten attribute before comparing name with
339 Get_Ceiling run-time subprogram.
340
99b6268d 3412019-08-12 Eric Botcazou <ebotcazou@adacore.com>
342
343 * exp_util.ads (Component_May_Be_Bit_Aligned): Small comment
344 tweaks.
345 (Possible_Bit_Aligned_Component): Likewise.
346 (Type_May_Have_Bit_Aligned_Components): Likewise.
347 * exp_util.adb (Component_May_Be_Bit_Aligned): Likewise.
348 (Possible_Bit_Aligned_Component): Likewise.
349 (Type_May_Have_Bit_Aligned_Components): Likewise.
350
5d2fb1fa 3512019-08-12 Eric Botcazou <ebotcazou@adacore.com>
352
353 * exp_ch4.adb (Expand_N_Op_Eq): Expand the array equality if
354 either operand is a possibly unaligned slice.
355 * exp_ch6.adb (Expand_Simple_Function_Return): Do not generate a
356 copy for a possibly unaligned object if it is represented as a
357 scalar.
358 * exp_util.adb (Is_Possibly_Unaligned_Slice): Do not always
359 return false if the target doesn't have strict alignment.
360
bb0246a6 3612019-08-12 Bob Duff <duff@adacore.com>
362
363 * sem_ch12.adb (Instantiate_Package_Body): Remove suppression of
364 checks in instances of internal units.
365 * sem_ch6.adb (Analyze_Function_Return): Do not generate a
366 constraint check on an extended_return_statement if the subtype
367 of the return object in the statement is identical to the return
368 subtype of the function.
369
f0bbb55a 3702019-08-12 Bob Duff <duff@adacore.com>
371
372 * libgnat/a-cbmutr.adb (Is_Reachable): Declare Idx to be of the
373 base subtype. Clearly it makes no sense to loop "while Idx >=
374 0", if Idx is of a nonnegative subtype.
375
91f3d9d4 3762019-08-12 Bob Duff <duff@adacore.com>
377
378 * libgnat/a-tifiio.adb (Put_Scaled): Prevent AA from being
379 negative, since Field is range 0 .. something.
380
d8f36b1a 3812019-08-12 Bob Duff <duff@adacore.com>
382
383 * doc/gnat_ugn/gnat_utility_programs.rst (gnatmetric, gnatpp,
384 gnatstub): Remove documentation for Ada language version
385 switches, and note that they are no longer needed.
386
6f663d96 3872019-08-12 Gary Dismukes <dismukes@adacore.com>
388
389 * sem_ch5.adb (Prepare_Param_Spec_Loop): Set the parents of the
390 copied low and high bounds in the case where the loop range is
391 given by a discrete_subtype_indication, to prevent hanging (or
392 Assert_Failure) in Insert_Actions.
393
32b3786f 3942019-08-12 Ed Schonberg <schonberg@adacore.com>
395
396 * sem_ch6.adb (heck_Untagged_Equality): Verify that user-defined
397 equality has the same profile as the predefined equality before
398 applying legality rule in RM 4.5.2 (9.8).
399
759d145f 4002019-08-12 Bob Duff <duff@adacore.com>
401
402 * libgnat/a-except.ads: Update obsolete comment, still making
403 clear that this is a variant. Add explicit default for Id
404 component of Exception_Occurrence, because that value is used.
405 Define Null_Occurrence less redundantly.
406 * libgnat/a-einuoc.adb: Minor simplification of code.
407
cee17a56 4082019-08-12 Justin Squirek <squirek@adacore.com>
409
410 * libgnat/a-dhfina.adb, libgnat/a-dhfina.ads (Is_Simple_Name,
411 Is_Root_Directory, Is_Parent_Directory,
412 Is_Current_Directory_Name, Is_Relative_Name, Initial_Directory,
413 Relative_Name, Compose): Add implementation and documentation.
414 * libgnat/a-direct.adb (Containing_Directory): Modify routine to
415 use routines from Ada.Directories.Hierarchical_File_Names and
416 remove incorrect special case for parent directories.
417 (Fetch_Next_Entry): Add check for current directory and parent
418 directory and ignore them under certain circumstances.
419 (Simple_Nmae): Add check for null result from
420 Simple_Name_Internal and raise Name_Error.
421 (Simple_Name_Internal): Add explicit check for root directories,
422 sanitize trailing directory separators, and modify behavior so
423 that current and parent directories are considered valid
424 results.
425 * Makefile.rtl: Add entry to GNATRTL_NONTASKING_OBJS.
426
cc87412b 4272019-08-12 Eric Botcazou <ebotcazou@adacore.com>
428
429 * freeze.adb (Freeze_Entity): Give the same error for an
430 Object_Size clause on a variable-sized type as for a Size
431 clause.
432
a6b48bfe 4332019-08-12 Gary Dismukes <dismukes@adacore.com>
434
435 * sem_prag.adb (Analyze_Pragma, Pragma_Suppress_Initialization):
436 For private types, set the Suppress_Initialization flag on the
437 Full_View of the entity rather than the entity's base type.
438
adb8ac81 4392019-08-12 Yannick Moy <moy@adacore.com>
440
441 * aspects.adb, aspects.ads (Aspect_No_Caching): New aspect.
442 * contracts.adb, contracts.ads (Add_Contract_Item): Add handling
443 of No_Caching.
444 (Analyze_Object_Contract): Add handling of No_Caching.
445 * einfo.adb, einfo.ads
446 (Get_Pragma): Add handling of No_Caching.
447 * doc/gnat_rm/implementation_defined_aspects.rst,
448 doc/gnat_rm/implementation_defined_pragmas.rst: Document new
449 aspect/pragma.
450 * gnat_rm.texi: Regenerate.
451 * par-prag.adb (Prag): New pragma Pragma_No_Caching.
452 * sem_ch13.adb (Analyze_Aspect_Specifications,
453 Check_Aspect_At_Freeze_Point): Add handling of No_Caching.
454 * sem_prag.adb (Analyze_Pragma): Deal with pragma No_Caching.
455 * sem_prag.ads (Analyze_External_Property_In_Decl_Part): Now
456 applies to No_Caching.
457 * sem_util.adb, sem_util.ads (Is_Effectively_Volatile): Add
458 handling of No_Caching.
459 (No_Caching_Enabled): New query function.
460 * snames.ads-tmpl: New names for pragma.
461
f50cb3de 4622019-08-12 Yannick Moy <moy@adacore.com>
463
464 * sem_util.adb, sem_util.ads (Traverse_More_Func,
465 Traverse_More_Proc): Add formal parameter for Itypes traversal.
466
65566aa4 4672019-08-12 Yannick Moy <moy@adacore.com>
468
469 * exp_attr.adb, exp_attr.ads (Expand_Size_Attribute): New
470 procedure to share part of the attribute expansion with
471 GNATprove mode.
472 (Expand_N_Attribute_Reference): Extract part of the
473 Size/Object_Size expansion in the new procedure
474 Expand_Size_Attribute.
475 * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Expand
476 Size/Object_Size attributes using the new procedure
477 Expand_Size_Attribute.
478
f8ca05f5 4792019-08-12 Yannick Moy <moy@adacore.com>
480
481 * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Only
482 expand Enum_Rep attribute when its parameter is a literal.
483
0175b8fe 4842019-08-12 Justin Squirek <squirek@adacore.com>
485
486 * sem_eval.adb (Check_Non_Static_Context): Add a condition to
487 determine if a range violation constitues a warning or an error.
488 (Out_Of_Range): Add a condition to determine if a range
489 violation constitues a warning or an error.
490
809a3252 4912019-08-12 Eric Botcazou <ebotcazou@adacore.com>
492
493 * exp_ch4.adb (Real_Range_Check): Do not rewrite the conversion
494 node but its expression instead, after having fetched its
495 current value. Clear the Do_Range_Check flag on entry. Return
496 early for a rewritten float-to-float conversion. Remove
497 redundant local variable. Suppress all checks when inserting
498 the temporary and do not reanalyze the node.
499
86d280c6 5002019-08-12 Eric Botcazou <ebotcazou@adacore.com>
501
502 * sprint.ads: Minor comment tweak.
503
138c6242 5042019-08-12 Eric Botcazou <ebotcazou@adacore.com>
505
506 * checks.adb (Insert_Valid_Check): Do not retrieve the
507 Do_Range_Check flag from the Original_Node but from the
508 Validated_Object. Remove useless bypass for floating-point
509 types.
510
ab16206d 5112019-08-12 Yannick Moy <moy@adacore.com>
512
513 * sem_util.adb, sem_util.ads (Traverse_More_Func,
514 Traverse_More_Proc): New traversal subprograms.
515
1ca535ae 5162019-08-12 Jerome Lambourg <lambourg@adacore.com>
517
518 * libgnarl/s-taprop__vxworks.adb (Abort_Handler): Only call
519 s-tpopsp.Self when actually needed.
520
9f49d9e6 5212019-08-12 Eric Botcazou <ebotcazou@adacore.com>
522
523 * exp_ch4.adb (Discrete_Range_Check): Return if checks are
524 suppressed.
525
a8bcbb37 5262019-08-12 Eric Botcazou <ebotcazou@adacore.com>
527
528 * sem_res.adb: Add with & use clause for Sem_Mech and
529 alphabetize.
530 (Resolve_Actuals): Do not apply a scalar range check for the
531 source of a conversion whose result is passed by reference to a
532 valued procedure.
533
e54cffd1 5342019-08-12 Eric Botcazou <ebotcazou@adacore.com>
535
536 * checks.adb (Insert_Valid_Check): Reset the Do_Range_Check flag
537 on the validated object.
538 * exp_ch6.adb (Add_Call_By_Copy_Code): Reset the Do_Range_Check
539 flag on the actual here, as well as on the Expression if the
540 actual is a N_Type_Conversion node.
541 (Add_Validation_Call_By_Copy_Code): Generate the incoming range
542 check if needed and reset the Do_Range_Check flag on the
543 Expression if the actual is a N_Type_Conversion node.
544 (Expand_Actuals): Do not reset the Do_Range_Check flag here.
545 Generate the incoming range check for In parameters here instead
546 of...
547 (Expand_Call_Helper): ...here. Remove redudant condition.
548 * sem_res.adb (Resolve_Actuals): Use local variable A_Typ and
549 remove obsolete comments.
550 (Resolve_Type_Conversion): Do not force the Do_Range_Check flag
551 on the operand if range checks are suppressed.
552
df1c131a 5532019-08-12 Eric Botcazou <ebotcazou@adacore.com>
554
555 * checks.adb (Activate_Range_Check): Remove redundant argument.
556 (Generate_Range_Check): Likewise.
557 (Apply_Float_Conversion_Check): Reset the Do_Range_Check flag on
558 entry and remove redundant condition.
559
c5c4ce6c 5602019-08-02 Alexandre Oliva <oliva@adacore.com>
87541248 561
562 * libgnat/a-exexpr.adb (Begin_Handler_v1, End_Handler_v1): New.
563 (Claimed_Cleanup): New.
564 (Begin_Handler, End_Handler): Document.
565 * gcc-interface/trans.c (gigi): Switch to exception handler
566 ABI #1.
567 (Exception_Handler_to_gnu_gcc): Save the original cleanup
568 returned by begin handler, pass it to end handler, and use
569 EH_ELSE_EXPR to pass a propagating exception to end handler.
570 (gnat_to_gnu): Leave the exception pointer alone for reraise.
571 (add_cleanup): Handle EH_ELSE_EXPR, require it by itself.
572
dcccb125 5732019-07-23 Ed Schonberg <schonberg@adacore.com>
574
575 * sem_ch13.adb (Check_Aspect_At_End_Of_Declarations,
576 Freeze_Entity_Checks): Include Aspect_CPU with other aspects
577 whose expresssion may depend on a discriminant, and thus require
578 that components of the type be made visible.
579
0275bc70 5802019-07-23 Eric Botcazou <ebotcazou@adacore.com>
581
582 * checks.adb (Convert_And_Check_Range): Add Suppress parameter
583 and pass it in the call to Insert_Actions. Rename local
584 variable.
585 (Generate_Range_Check): Minor comment fixes. Pass Range_Check
586 in the first call to Convert_And_Check_Range and All_Checks in
587 the second call.
588 * exp_ch4.adb (Expand_N_Type_Conversion): Reset the
589 Do_Overflow_Check flag in the float-to-float case too if there
590 is also a range check.
591
79ee9e76 5922019-07-23 Eric Botcazou <ebotcazou@adacore.com>
593
594 * checks.adb (Activate_Overflow_Check): Remove redundant
595 argument.
596 * exp_ch4.adb (Discrete_Range_Check): Reset the overflow flag.
597 (Expand_N_Type_Conversion): Do not reset it here.
598
87b5a4e8 5992019-07-23 Eric Botcazou <ebotcazou@adacore.com>
600
601 * repinfo.adb (List_Component_Layout): Pass Decimal to UI_Write.
602 (Write_Val): Likewise.
603
441fbb64 6042019-07-23 Ed Schonberg <schonberg@adacore.com>
605
606 * aspects.ads: New table Operational_Aspect, used to distinguish
607 between aspects that are view-specific, such as those related to
608 iterators, and representation aspects that apply to all views of
609 a type.
610 * aspects.adb (Find_Aspect): If the aspect being sought is
611 operational, do not ecamine the full view of a private type to
612 retrieve it.
613 * sem_ch5.adb (Analyze_Iterator_Specification): Improve error
614 message when the intended domain of iteration does not implement
615 the required iterator aspects.
616
583f62e9 6172019-07-23 Yannick Moy <moy@adacore.com>
618
619 * sem_spark.ads (Is_Local_Context): New function.
620 * sem_spark.adb (Check_Declaration): Issue errors on violations
621 of SPARK RM 3.10(4)
622 (Process_Path): Do not issue error on borrow/observe during
623 elaboration, as these are caught by the new rule.
624
ec154f5b 6252019-07-23 Yannick Moy <moy@adacore.com>
626
627 * exp_ch7.adb (Create_Finalizer): Force finalizer not to be
628 Ghost enabled.
629 * exp_dbug.adb (Get_External_Name): Explain special case of
630 Ghost finalizer.
631
e1598796 6322019-07-22 Eric Botcazou <ebotcazou@adacore.com>
633
634 * repinfo.adb (List_Entities): Also list compiled-generated
635 types present as Etype of objects.
636
da90894a 6372019-07-22 Eric Botcazou <ebotcazou@adacore.com>
638
639 * sinfo.ads: Update the documentation about the
640 Do_Division_Check, Do_Overflow_Check and Do_Range_Check flags.
641
bb8b9752 6422019-07-22 Eric Botcazou <ebotcazou@adacore.com>
643
644 * exp_ch4.adb (Expand_N_Type_Conversion): Beef up comment.
645 (Fixup_Universal_Fixed_Operation): Set the base type instead of
646 the type of the enclosing type conversion on the operation.
647
aeb4eb17 6482019-07-22 Ed Schonberg <schonberg@adacore.com>
649
650 * exp_ch4.adb (Expand_N_In): Do not suggest the use of attribute
651 'Valid as a replacement for a range check on a discrete type
652 when the bounds of the range are given by type conversions,
653 because in such a case there are distinct types involved and the
654 subbested attribute replacement would be misplaced.
655
30cf324b 6562019-07-22 Yannick Moy <moy@adacore.com>
657
658 * sem_spark.adb (Get_Root_Object, Is_Path_Expression,
659 Is_Subpath_Expression): Add parameter Is_Traversal to adapt
660 these functions to the case of paths returned from a traversal
661 function.
662 (Read_Indexes): Handle the case of an if-expression or
663 case-expression.
664 (Check_Statement): Check Emit_Messages only when issuing an
665 error message. This is important as Emit_Messages may store the
666 information that an error was detected.
667
72c474b5 6682019-07-22 Eric Botcazou <ebotcazou@adacore.com>
669
670 * checks.adb (Apply_Type_Conversion_Checks): Do not set
671 Do_Range_Check flag on conversions from fixed-point types
672 either.
673 * exp_attr.adb: Add use and with clause for Expander.
674 (Expand_N_Attribute_Reference) <Fixed_Value, Integer_Value>: Set
675 the Conversion_OK flag and do not generate overflow/range checks
676 manually.
677 * exp_ch4.adb (Expand_N_Qualified_Expression): Remove
678 superfluous clearing of Do_Range_Check flag.
679 (Discrete_Range_Check): New procedure to generate a range check
680 for discrete types.
681 (Real_Range_Check): Remove redundant local variable and adjust.
682 Remove useless shortcut. Clear Do_Range_Check flag on all
683 paths.
684 (Expand_N_Type_Conversion): Remove redundant test on
685 Conversion_OK. Call Discrete_Range_Check to generate range
686 checks on discrete types. Remove obsolete code for
687 float-to-integer conversions. Add code to generate range checks
688 for conversions involving fixed-point types.
689
39cdd055 6902019-07-22 Eric Botcazou <ebotcazou@adacore.com>
691
692 * sprint.ads: Fix pasto in comment.
693
9af8c78a 6942019-07-22 Javier Miranda <miranda@adacore.com>
695
696 * sem_res.adb (Resolve_Actuals): Replace code that displaces the
697 pointer to an allocated object to reference its secondary
698 dispatch table by a type conversion (which takes care of
699 handling all cases).
700
0ff5a502 7012019-07-22 Eric Botcazou <ebotcazou@adacore.com>
702
703 * sprint.adb (Sprint_Node_Actual)
704 <N_Decimal_Fixed_Point_Definition>: Swap a couple of spaces.
705 (Write_Itype): Minor consistency fixes throughout. Add support
706 for printing ordinary and decimal fixed-point types and
707 subtypes.
708
8c6eab72 7092019-07-22 Eric Botcazou <ebotcazou@adacore.com>
710
711 * exp_attr.adb (Expand_Loop_Entry_Attribute): Beef up comment.
712
76ed386d 7132019-07-22 Ed Schonberg <schonberg@adacore.com>
714
715 * libgnat/s-valboo.ads, libgnat/s-valcha.ads,
716 libgnat/s-valdec.ads, libgnat/s-valenu.ads,
717 libgnat/s-valint.ads, libgnat/s-vallld.ads,
718 libgnat/s-vallli.ads, libgnat/s-valllu.ads,
719 libgnat/s-valrea.ads, libgnat/s-valuns.ads,
720 libgnat/s-valwch.ads: Change categorization of packages that
721 implement attribute 'Value from Pure to Preelaborate, to prevent
722 undesirable optimizations when the evaluation of the attribute
723 raises Constraint_Error, but subsequent use of the result of
724 this evsaluation is removed by a subsequent optimization.
725
e869060d 7262019-07-22 Ed Schonberg <schonberg@adacore.com>
727
728 * sem_warn.adb (Check_References): Do not emit s warning on a
729 referenced entity with no explicit assignment if the type of the
730 entity has Preelaborable_Initialixation, such as
731 Exception_Occurrence.
732
9bf70d94 7332019-07-22 Javier Miranda <miranda@adacore.com>
734
735 * exp_ch4.adb (Size_In_Storage_Elements): Improve the expansion
736 to handle array indexes that are modular type.
737 (Expand_N_Allocator): For 32-bit targets improve the generation
738 of the runtime check associated with large arrays supporting
739 arrays initialized with a qualified expression.
740 * libgnat/s-imenne.adb (Image_Enumeration_8,
741 Image_Enumeration_16, Image_Enumeration_32): Define the index of
742 Index_Table with range Natural'First .. Names'Length since in
743 the worst case all the literals of the enumeration type would be
744 single letter literals and the Table built by the frontend would
745 have as many components as the length of the names string. As a
746 result of this enhancement, the internal tables declared using
747 Index_Table have a length closer to the real needs, thus
748 avoiding the declaration of large arrays on 32-bit CCG targets.
749
b0da310b 7502019-07-22 Yannick Moy <moy@adacore.com>
751
752 * sem_ch3.adb (Constrain_Access): Issue a message about ignored
753 constraint.
754
592e600a 7552019-07-22 Eric Botcazou <ebotcazou@adacore.com>
756
757 * sem_ch8.adb (End_Use_Type): Reset the In_Use flag on the
758 class-wide type if the type is tagged.
759 (Use_One_Type): Add commentary on the handling of the class-wide
760 type.
761
c1eeb1c6 7622019-07-22 Eric Botcazou <ebotcazou@adacore.com>
763
764 * einfo.ads (Is_For_Access_Subtype): Delete.
765 (Set_Is_For_Access_Subtype): Likewise.
766 * einfo.adb (Is_For_Access_Subtype): Likewise.
767 (Set_Is_For_Access_Subtype): Likewise.
768 (Write_Entity_Flags): Do not write Is_For_Access_Subtype.
769 * exp_ch4.adb (Expand_N_Selected_Component): Do not deal with
770 it.
771 * exp_spark.adb (Expand_SPARK_N_Selected_Component): Likewise.
772 * sem_ch4.adb (Analyze_Explicit_Dereference): Likewise.
773 * sem_ch3.adb (Build_Discriminated_Subtype): Do not build a
774 special private subtype for access-to-record subtypes.
775
3eb44c27 7762019-07-22 Eric Botcazou <ebotcazou@adacore.com>
777
778 * sem_ch3.adb (Complete_Private_Subtype): Rework the setting of
779 the Etype of the full view for full base types that cannot
780 contain any discriminant. Remove code and comment about it in
781 the main path.
782
9c6c2b81 7832019-07-22 Ed Schonberg <schonberg@adacore.com>
784
785 * sem_ch3.adb (Convert_Bound): Subsidiary of
786 Floating_Point_Type_Declaration, to handle properly range
787 specifications with bounds that may include static constants of
788 a given type rather than real literals.
789
d5dbc1bb 7902019-07-22 Eric Botcazou <ebotcazou@adacore.com>
791
792 * sem_aggr.adb (Rewrite_Bound): Be prepared for discriminals
793 too.
794 (Rewrite_Range;): Minor tweak.
795 (Resolve_Record_Aggregate): For a component with default
796 initialization whose expression is an array aggregate, also
797 rewrite the bounds of the component associations, if any.
798
37f1cae9 7992019-07-22 Gary Dismukes <dismukes@adacore.com>
800
801 * exp_ch5.adb (Expand_N_Case_Statement): In the case where a
802 case statement is rewritten as an equivalent if statement,
803 inherit the From_Condition_Expression flag from the case
804 statement.
805
e6368760 8062019-07-22 Eric Botcazou <ebotcazou@adacore.com>
807
808 * sem_ch8.adb (Check_Constrained_Object): Further extend the
809 special optimization to all limited types.
810
9b8341e7 8112019-07-22 Eric Botcazou <ebotcazou@adacore.com>
812
813 * exp_attr.adb (Expand_N_Attribute_Reference)
814 <Attribute_Enum_Val>: Set No_Truncation on the
815 N_Unchecked_Type_Conversion built around the argument passed to
816 the attribute.
817
f930ed43 8182019-07-22 Nicolas Roche <roche@adacore.com>
819
820 * libgnat/s-valrea.adb (Scan_Real): Ignore non significative
821 digits to avoid converging to infinity in some cases.
822
3474a75e 8232019-07-22 Eric Botcazou <ebotcazou@adacore.com>
824
825 * libgnat/g-encstr.adb (Encode_Wide_String): Fix oversight.
826 (Encode_Wide_Wide_String): Likewise.
827
a7f20f4b 8282019-07-22 Eric Botcazou <ebotcazou@adacore.com>
829
830 * sem_warn.adb (Find_Var): Bail out for a function call with an
831 Out or In/Out parameter.
832
a51cd2a2 8332019-07-22 Nicolas Roche <roche@adacore.com>
834
835 * terminals.c (__gnat_tty_waitpid): Support both blocking and
836 not blocking mode.
837 * libgnat/g-exptty.ads (Is_Process_Running): New function.
838 * libgnat/g-exptty.adb (Close): Don't try to interrupt/terminate
839 a process if it is already dead.
840
36167f09 8412019-07-22 Ed Schonberg <schonberg@adacore.com>
842
c5c4ce6c 843 * freeze.adb (Freeze_Fixed_Point_Type): When freezing a
36167f09 844 fixed-point subtype, check whether the parent type declarastion
845 includes an aspect specification for the 'Small type attribute,
846 and inherit the specified value.
847
b5293e2d 8482019-07-22 Javier Miranda <miranda@adacore.com>
849
850 * freeze.adb (Freeze_Subprogram): Check that C++ constructors
851 must have external or link name.
852
7c48993c 8532019-07-22 Ed Schonberg <schonberg@adacore.com>
854
855 * sem_res.adb (Resolve_Selected_Component): If the prefix has a
856 deferred reference, generate the correct reference now, to
857 indicate that the previous assignment is used. This prevents
858 spurious warnings on useless assignments when compiling with all
859 warnings enabled. when there is a subsequent call in the same
860 stqtement list, in which the prefix of the selected component is
861 the actual for an out parameter.
862
0b87f8cf 8632019-07-22 Eric Botcazou <ebotcazou@adacore.com>
864
865 * exp_attr.adb (Expand_Loop_Entry_Attribute): Copy the condition
866 of a while loop instead of simply relocating it.
867
0c41e160 8682019-07-18 Arnaud Charlet <charlet@adacore.com>
869
870 * Makefile.rtl, expect.c, env.c, aux-io.c, mkdir.c, initialize.c,
871 cstreams.c, raise.c, tracebak.c, adadecode.c, init.c, raise-gcc.c,
872 argv.c, adaint.c, adaint.h, ctrl_c.c, sysdep.c, rtinit.c, cio.c,
873 seh_init.c, exit.c, targext.c: Introduce a "STANDALONE" mode where C
874 runtime files do not have any dependency on GCC include files.
875 Remove unnecessary includes.
876 Remove remaining references to VMS in runtime C file.
877 * runtime.h: new File.
878
0e972d45 8792019-07-13 Andreas Schwab <schwab@linux-m68k.org>
880
881 * Makefile.rtl: Use g-sercom__linux.adb for all linuxes.
882
77fe13f0 8832019-07-11 Piotr Trojanek <trojanek@adacore.com>
884
885 * lib-writ.adb (Ensure_System_Dependency,
886 Up_To_Date_ALI_File_Exists, Write_ALI): Replace low-level access
887 to table with a high-level query.
888
56903255 8892019-07-11 Piotr Trojanek <trojanek@adacore.com>
890
891 * checks.adb: Fix typo in comment.
892 * sem.adb (Semantics): Avoid repeated calls to
893 In_Extended_Main_Source_Unit by reusing an already-cached
894 result.
895 * sem_util.adb (First_Global): Fix style.
896
85f6c73a 8972019-07-11 Yannick Moy <moy@adacore.com>
898
899 * sem_res.adb (Resolve_Call): Do not perform dimensionality
900 checking on inlined bodies.
901
5083f119 9022019-07-11 Yannick Moy <moy@adacore.com>
903
904 * debug.adb: Flip meaning of debug switch -gnatdF.
905
f237e5eb 9062019-07-11 Yannick Moy <moy@adacore.com>
907
908 * sem_eval.adb (Is_Same_Value): Add special case for rewritten
909 Loop_Entry attribute.
910
1e5359c0 9112019-07-11 Claire Dross <dross@adacore.com>
912
913 * gnat1drv.adb: SPARK checking rules for pointer aliasing are
914 moved to GNATprove backend.
915 * sem_spark.ads, sem_spark.adb (Sem_SPARK): Is now a generic
916 unit. Takes as parameters:
917 - Retysp which is used to query the most underlying type
918 visible in SPARK. We do not introduce aliasing checks for
919 types which are not visibly deep.
920 - Component_Is_Visible_In_SPARK is used to avoid doing pointer
921 aliasing checks on components which are not visible in SPARK.
922 - Emit_Messages returns True in the second phase of SPARK
923 analysis. Error messages for failed aliasing checks are only
924 output in this case.
925 Additionally, errors on constructs not supported in SPARK are
926 removed as duplicates of marking errors. Components are stored
927 in the permission map using their original component to avoid
928 inconsistencies between components of different views of the
929 same type.
930 (Check_Expression): Handle delta constraints.
931 (Is_Deep): Exported so that we can check for SPARK restrictions
932 on deep types inside SPARK semantic checkings.
933 (Is_Traversal_Function): Exported so that we can check for SPARK
934 restrictions on traversal functions inside SPARK semantic
935 checkings.
936 (Check_Call_Statement, Read_Indexes): Check wether we are
937 dealing with a subprogram pointer type before querying called
938 entity.
939 (Is_Subpath_Expression): Image attribute can appear inside a
940 path.
941 (Check_Loop_Statement): Correct order of statements in the loop.
942 (Check_Node): Ignore raise nodes.
943 (Check_Statement): Use Last_Non_Pragma to get the object
944 declaration in an extended return statement.
945
fb7f0b28 9462019-07-11 Patrick Bernardi <bernardi@adacore.com>
947
948 * bindgen.adb (Gen_Main): Do not generate a reference to
949 Ada_Main_Program_Name when the Minimal_Binder flag is set.
950 (Gen_Output_File_Ada): Do not output GNAT_Version and
951 Ada_Main_Program_Name info if Minimal_Binder flag is set.
952 * bindusg.adb: Add documentation for new -minimal switch.
953 * gnatbind.adb (Scan_Bind_Arg): Scan -minimal switch.
954 * opt.ads: Add new global flag Minimal_Binder to indicate if the
955 binder should not produce global variables.
956 * doc/gnat_ugn/building_executable_programs_with_gnat.rst:
957 Update documentation with new binder -minimal switch.
958 * gnat_ugn.texi: Regenerate.
959
6e0725a9 9602019-07-11 Eric Botcazou <ebotcazou@adacore.com>
961
962 * Makefile.rtl: Add warning note about compilation flags and
963 capitalize.
964
263dcfe9 9652019-07-11 Ed Schonberg <schonberg@adacore.com>
966
967 * exp_ch9.adb (Expand_N_Protected_Type_Declaaration): New
968 subsidiary routine Replace_Access_Definition, to handle properly
969 a protected type PT one of whose private components is of type
970 access PT.
971
dc001f3e 9722019-07-11 Dmitriy Anisimkov <anisimko@adacore.com>
973
974 * libgnat/g-socket.ads (Level_Type): Add enumerators for
975 IP_Protocol_For_ICMP, IP_Protocol_For_IGMP,
976 IP_Protocol_For_RAW_Level.
977 * libgnat/g-socket.adb (Levels): Handle them.
978 * s-oscons-tmplt.c: Import socket protocols defined in
979 netinet/in.h.
980
3bcff314 9812019-07-11 Claire Dross <dross@adacore.com>
982
983 * libgnat/a-cfhama.adb, libgnat/a-cfhase.adb (Free): Do not
984 reset the Has_Element flag if no element is freed.
985
8e22ede8 9862019-07-11 Arnaud Charlet <charlet@adacore.com>
987
988 * errno.c: Remove obsolete support for MaRTE OS.
989
180bd06b 9902019-07-11 Ed Schonberg <schonberg@adacore.com>
991
992 * exp_ch4.adb (Expand_N_Type_Conversion): If a predicate check
993 is generated, analyze it with range check suppressed, because
994 that check has been previously applied.
995 * exp_ch5.adb (Expand_N_Assignment_Statement): If the RHS is a
996 type conversion to the type of the LHS, do not apply a predicate
997 check to the RHS because it will have been generated already
998 during its expansion.
999 * exp_ch6.adb (Can_Fold_Predicate_Call): Extend processing to
1000 handle a predicate check on a constant entity whose value is
1001 static.
1002
32859955 10032019-07-11 Hristian Kirtchev <kirtchev@adacore.com>
1004
1005 * bindo.adb: Remove the documentation of switch -d_N because it
1006 is no longer in use.
1007 * bindo-graphs.ads, bindo-graphs.adb (Is_Spec_Before_Body_Edge):
1008 New routine.
1009 * bindo-writers.adb (Write_Dependency_Edge): Add the missing
1010 case of a spec-before-body edge.
1011
0595f8ff 10122019-07-11 Dmitriy Anisimkov <anisimko@adacore.com>
1013
1014 * libgnat/g-socket.ads (Mode_Type): Add a Socket_Raw enumerator.
1015 * libgnat/g-socket.adb (Modes): Handle Socket_Raw.
1016
af7bae25 10172019-07-11 Justin Squirek <squirek@adacore.com>
1018
1019 * exp_ch9.adb (Build_Private_Protected_Declaration): Add
1020 exception for the moving of pragmas to internally generated
1021 specs for pragma Unreferenced.
1022
87259588 10232019-07-11 Bob Duff <duff@adacore.com>
1024
1025 * doc/gnat_ugn/gnat_utility_programs.rst: Fix inconsistent
1026 documentation for gnatmetric.
1027 * gnat_ugn.texi: Regenerate.
1028
2d95f0f8 10292019-07-11 Bob Duff <duff@adacore.com>
1030
1031 * doc/gnat_ugn/gnat_utility_programs.rst: Document gnatpp's
1032 --spaces-only switch.
1033
814e7b6e 10342019-07-11 Hristian Kirtchev <kirtchev@adacore.com>
1035
1036 * sem_util.adb (Null_Status): Assume that an erroneous construct
1037 has an undefined null status.
1038
53904d64 10392019-07-11 Hristian Kirtchev <kirtchev@adacore.com>
1040
1041 * checks.adb, exp_ch6.adb, gnat1drv.adb, sem_aux.adb,
1042 sem_ch2.adb, sem_ch8.adb, sem_res.adb: Minor reformatting.
1043
21dccd5f 10442019-07-11 Hristian Kirtchev <kirtchev@adacore.com>
1045
1046 * sem_ch8.adb (Analyze_Object_Renaming): Obtain the object being
1047 renamed using routine Get_Object_Name which takes care of
1048 various name forms.
1049 (Get_Object_Name): New routine.
1050
3da5e0d4 10512019-07-11 Ed Schonberg <schonberg@adacore.com>
1052
1053 * exp_ch6.adb (Can_Fold_Predicate_Call): New function,
1054 subsidiary of Expand_Call_Helper, to compute statically a
1055 predicate check when the argument is a static integer.
1056
3d95efc8 10572019-07-11 Hristian Kirtchev <kirtchev@adacore.com>
1058
1059 * sem_res.adb (Resolve_Op_Not): Do not rewrite an equality
1060 operator into a function call when the operator is intrinsic.
1061
8c93b71c 10622019-07-11 Thomas Quinot <quinot@adacore.com>
1063
1064 * sem_prag.adb (Analyze_Pragma, case pragma Check): Do not call
1065 Set_SCO_Pragma_Enabled for the dynamic predicate case.
1066
001b1b6a 10672019-07-11 Hristian Kirtchev <kirtchev@adacore.com>
1068
1069 * exp_util.ads, exp_util.adb (Needs_Finalization): Move to
1070 Sem_Util.
1071 * sem_ch9.adb (Analyze_Protected_Definition): Code cleanup. Mark
1072 the protected type as having controlled components when it
1073 contains at least one such component.
1074 * sem_util.ads, sem_util.adb (Needs_Finalization): New
1075 function.
1076
5dc190e5 10772019-07-11 Eric Botcazou <ebotcazou@adacore.com>
1078
1079 * alloc.ads (Rep_JSON_Table_Initial): New constant.
1080 (Rep_JSON_Table_Increment): Likewise.
1081 * debug.adb: Document -gnatd_j switch.
1082 * gcc-interface/Make-lang.in (GNAT_ADA_OBJS): Add
1083 repinfo-input.o.
1084 * gnat1drv.adb: Add with clause for Repinfo.Input.
1085 Add with and use clauses for Sinput.
1086 (Read_JSON_Files_For_Repinfo): New procedure.
1087 (Gnat1drv1): Deal with -gnatd_j switch.
1088 * repinfo-input.ad[sb]: New unit.
1089 * snames.ads-tmpl (Name_Discriminant): New constant.
1090 (Name_Operands): Likewise.
1091
b1118eb8 10922019-07-11 Justin Squirek <squirek@adacore.com>
1093
1094 * checks.adb (Apply_Accessibility_Check): Add check for constant
1095 folded conditions on accessibility checks.
1096
ef0b2206 10972019-07-11 Arnaud Charlet <charlet@adacore.com>
1098
1099 * libgnarl/g-thread.ads, libgnarl/g-thread.adb (Get_Thread):
1100 Update comments. Add new version taking a Task_Id.
1101
12b1c23b 11022019-07-11 Hristian Kirtchev <kirtchev@adacore.com>
1103
1104 * bindo.adb: Update the section of switches and debugging
1105 elaboration issues.
1106 * bindo.ads: Add type Elaboration_Phase.
1107 * bindo-augmentors.adb: Add use clause for
1108 Bindo.Writers.Phase_Writers.
1109 (Augment_Library_Graph): Signal the start and end of the
1110 aubmentation phase.
1111 * bindo-builders.adb: Add with and use clause for Bindo.Writers.
1112 Add use clause for Bindo.Writers.Phase_Writers.
1113 (Build_Invocation_Graph): Signal the start and end of the
1114 invocation graph construction phase.
1115 (Build_Library_Graph): Signal the start and end of the library
1116 graph construction phase.
1117 * bindo-diagnostics.adb: Add use clause for
1118 Bindo.Writers.Phase_Writers.
1119 (Diagnose_Cycle): Signal the start and end of the cycle
1120 diagnostic phase.
1121 * bindo-elaborators.adb: Add use clause for
1122 Bindo.Writers.Phase_Writers.
1123 (Elaborate_Units): Signal the start and end of the unit
1124 elaboration phase.
1125 * bindo-graphs.adb: Add use clause for
1126 Bindo.Writers.Phase_Writers.
1127 (Find_Components): Signal the start and end of the component
1128 discovery phase.
1129 (Find_Cycles): Signal the start and end of the cycle discovery
1130 phase.
1131 * bindo-units.adb: Add with and use clause for Bindo.Writers.
1132 Add use clause for Bindo.Writers.Phase_Writers.
1133 (Collect_Elaborable_Units): Signal the start and end of the unit
1134 collection phase.
1135 * bindo-validators.adb: Add with and use clause for
1136 Bindo.Writers. Add use clause for Bindo.Writers.Phase_Writers.
1137 (Validate_Cycles, Validate_Elaboration_Order,
1138 Validate_Invocation_Graph, Validate_Library_Graph): Signal the
1139 start and end of the libray graph validation phase.
1140 * bindo-writers.ads, bindo-writers.adb: Add new nested package
1141 Phase_Writers.
1142 * debug.adb: Update the documentation of switch d_S.
1143
d7569e04 11442019-07-11 Yannick Moy <moy@adacore.com>
1145
1146 * sem_res.adb (Check_Argument_Order): Special case calls to
1147 operators.
1148
604c5bca 11492019-07-10 Dmitriy Anisimkov <anisimko@adacore.com>
1150
1151 * libgnat/s-ststop.adb: Remove System.Strings.Stream_Ops
1152 dependence on System.Streams.Stream_IO.
1153
ce9565a8 11542019-07-10 Ed Schonberg <schonberg@adacore.com>
1155
1156 * sem_ch2.adb (Analyze_Integer_Literal): Preserve the type of
1157 the literal if prior analysis determined that its type is a
1158 modular integer type.
1159
e97ee616 11602019-07-10 Doug Rupp <rupp@adacore.com>
1161
1162 * init.c: Do not attempt to re-arm guard page on x86_64-vx7(r2).
1163
c0e85bb6 11642019-07-10 Ed Schonberg <schonberg@adacore.com>
1165
1166 * sem_ch8.adb (Check_Constrained_Object): A record that is
1167 limited because of the presence of a limited component is
1168 constrained, and no subtype indiciation needs to be created for
1169 it, just as is the case for declared limited records.
1170
94654315 11712019-07-10 Yannick Moy <moy@adacore.com>
1172
1173 * sem_aux.adb, sem_aux.ads (Is_Protected_Operation): New
1174 function to determine if a subprogram is protected.
1175 * sem_spark.adb (Setup_Protected_Components): New procedure to
1176 add protected components to the environment.
1177 (Check_Callable_Body): Call the new Setup_Protected_Components.
1178 (Check_Package_Spec): Merge local environment with enclosing one
1179 when done.
1180
9ac24568 11812019-07-10 Claire Dross <dross@adacore.com>
1182
1183 * sem_spark.adb (Check_Expression): Allow digits constraints as
1184 input.
1185 (Illegal_Global_Usage): Pass in the entity.
1186 (Is_Subpath_Expression): New function to allow different nodes
1187 as inner parts of a path expression.
1188 (Read_Indexes): Allow concatenation and aggregates with box
1189 expressions. Allow attributes Update and Loop_Entry.
1190 (Check_Expression): Allow richer membership test.
1191 (Check_Node): Ignore bodies of generics.
1192 (Get_Root_Object): Allow concatenation and attributes.
1193
95266217 11942019-07-10 Hristian Kirtchev <kirtchev@adacore.com>
1195
1196 * sem_ch6.adb (Check_Discriminant_Conformance): Use Find_Type to
1197 discover the type of a full view discriminant.
1198
f9d615a1 11992019-07-10 Arnaud Charlet <charlet@adacore.com>
1200
1201 * doc/gnat_ugn/gnat_and_program_execution.rst: Improve gnatmem's
1202 doc for the depth switch.
1203
55d7c660 12042019-07-10 Bob Duff <duff@adacore.com>
1205
1206 * doc/gnat_ugn/gnat_utility_programs.rst: Document gnatpp's
1207 --source-line-breaks switch.
1208
e94f4600 12092019-07-10 Justin Squirek <squirek@adacore.com>
1210
1211 * doc/gnat_rm/implementation_defined_attributes.rst: Add mention
1212 of 'Image attribute with 'Img's entry to mention additional
1213 added 2012 usage of Obj'Image.
1214 * doc/gnat_rm/implementation_defined_pragmas.rst: Correct
1215 mispelling of Async_Writers.
1216 * gnat_rm.texi: Regenerate.
1217 * sem_prag.adb (Analyze_Pragma): Correct mispelling of
1218 Async_Writers.
1219 * sem_util.adb (State_Has_Enabled_Property): Correct mispelling
1220 of Async_Writers.
1221
2bf00b7f 12222019-07-10 Simon Buist <buist@adacore.com>
1223
1224 * sem_util.ads (Child_Prefix): New constant.
1225 * sem_util.adb (Unique_Name): Add a special prefix to child
1226 units that have a nested subprogram or package.
1227
9dda714b 12282019-07-10 Arnaud Charlet <charlet@adacore.com>
1229
1230 * sfn_scan.adb (Scan_SFN_Pragmas): Add pragma Assert.
1231
fd8a528d 12322019-07-10 Hristian Kirtchev <kirtchev@adacore.com>
1233
1234 * sem_ch3.adb (Check_Nonoverridable_Aspects): Correct the
1235 spelling in certain error messages.
1236 (Check_Pragma_Implemented): Correct the spelling in certain
1237 error messages.
1238
97f0aa19 12392019-07-10 Eric Botcazou <ebotcazou@adacore.com>
1240
1241 * Makefile.rtl (GNATRTL_NONTASKING_OBJS): Add g-brapre.
1242 * libgnat/g-brapre.ads: New package specification.
1243 * doc/gnat_rm/the_gnat_library.rst: Document it.
1244 * gnat_rm.texi: Regenerate.
1245
d2506f16 12462019-07-10 Yannick Moy <moy@adacore.com>
1247
1248 * osint-c.adb (Set_File_Name): Always add extension for multiple
1249 units per file mode.
1250
c6db401c 12512019-07-10 Corentin Gay <gay@adacore.com>
1252
1253 * sysdep.c: Put include directive for 'vxWorks.h' before any
1254 other VxWorks headers.
1255
344c2639 12562019-07-10 Eric Botcazou <ebotcazou@adacore.com>
1257
1258 * doc/gnat_rm/implementation_defined_attributes.rst
1259 (Scalar_Storage_Order): Minor tweaks. Add note about debuggers.
1260 * gnat_rm.texi: Regenerate.
1261
8a9900a9 12622019-07-10 Hristian Kirtchev <kirtchev@adacore.com>
1263
1264 * exp_ch4.adb (Expand_N_Case_Expression): Mark the generated
1265 assignments to the temporary result as being OK because the
1266 expansion of case expressions is correct by construction.
1267 (Is_Copy_Type): Update the predicate to match the comment
1268 within.
1269
8c21443b 12702019-07-10 Hristian Kirtchev <kirtchev@adacore.com>
1271
1272 * bindo-graphs.adb, bindo.adb, debug.adb, exp_ch6.adb,
1273 sem_ch10.adb, sem_ch13.adb, sem_ch3.adb, sem_ch4.adb,
1274 sem_ch6.adb, sem_ch7.adb, sem_res.adb, sem_spark.adb,
1275 sem_util.adb, warnsw.ads: Minor reformatting.
1276
2e7929f0 12772019-07-10 Joffrey Huguet <huguet@adacore.com>
1278
1279 * libgnat/a-strbou.ads, libgnat/a-strfix.ads,
1280 libgnat/a-strunb.ads, libgnat/a-strunb__shared.ads: Add global
1281 contracts, contract cases, preconditions and postconditions to
1282 procedures and functions.
1283
87d55fe2 12842019-07-10 Doug Rupp <rupp@adacore.com>
1285
1286 * sysdep.c (__gnat_is_file_not_found_error): Reformulate to also
1287 work for vxworks7r2 SR0610.
1288
82d7e1f4 12892019-07-10 Doug Rupp <rupp@adacore.com>
1290
1291 * env.c (__gnat_environ): Reformulate to also work for
1292 vxworks7r2 SR0610.
1293
7f6066e1 12942019-07-10 Patrick Bernardi <bernardi@adacore.com>
1295
1296 * Makefile.rtl: Handle vxworks7r2 ppc target
1297
6523468f 12982019-07-10 Hristian Kirtchev <kirtchev@adacore.com>
1299
1300 * bindo.adb: Update the section on switches.
1301 * bindo-graphs.adb
1302 (Add_Cycle, Add_Vertex_And_Complement): Remove.
1303 (Create): The graph no longer needs a set of recorded cycles
1304 because the cycles are not rediscovered in permuted forms.
1305 (Cycle_End_Vertices): New routine.
1306 (Destroy): The graph no longer needs a set of recorded cycles
1307 because the cycles are not rediscovered in permuted forms.
1308 (Destroy_Library_Graph_Vertex): Move to the library level.
1309 (Find_All_Cycles_Through_Vertex, Find_All_Cycles_With_Edge):
1310 Remove.
1311 (Find_Cycles_From_Successor, Find_Cycles_From_Vertex,
1312 Find_Cycles_In_Component, Has_Elaborate_All_Edge): New routines.
1313 (Insert_And_Sort): Remove.
1314 (Is_Elaborate_Body_Edge): Use predicate
1315 Is_Vertex_With_Elaborate_Body.
1316 (Is_Recorded_Cycle): Remove.
1317 (Is_Vertex_With_Elaborate_Body): New routine.
1318 (Normalize_And_Add_Cycle): Remove.
1319 (Precedence): Rename to xxx_Precedence, where xxx relates to the
1320 input. These versions better reflect the desired input
1321 precedence.
1322 (Record_Cycle): New routine.
1323 (Remove_Vertex_And_Complement, Set_Is_Recorded_Cycle): Remove.
1324 (Trace_xxx): Update all versions to use debug switch -d_t.
1325 (Trace_Component): New routine.
1326 (Trace_Eol): Removed.
1327 (Trace_Vertex): Do not output the component as this information
1328 is already available when the component is traced.
1329 (Unvisit, Visit): New routine.
1330 * bindo-graphs.ads: Add new instance LGV_Lists. Remove instance
1331 RC_Sets. Update the structure of type Library_Graph_Attributes
1332 to remove the set of recorded cycles.
1333 (Destroy_Library_Graph_Vertex): Move to the library level.
1334 * bindo-writers.adb (Write_Component_Vertices): Output
1335 information about the number of vertices.
1336 * debug.adb: Document the use of binder switch -d_t. Update the
1337 use of binder switch -d_T.
1338
9eaacd61 13392019-07-10 Yannick Moy <moy@adacore.com>
1340
1341 * sem_spark.adb (Get_Root_Object): Replace precondition by error
1342 message.
1343 (Read_Indexes): Replace precondition by error message.
1344 (Check_Callable_Body): Check only traversal function returns an
1345 anonymous access type.
1346 (Check_Expression): Issue error on unexpected expression as
1347 path.
1348 * sem_util.adb (First_Global): Fix access to global on
1349 entry/task.
1350
2ac657bd 13512019-07-10 Javier Miranda <miranda@adacore.com>
1352
1353 * exp_ch6.adb (Is_Class_Wide_Interface_Type): New subprogram.
1354 (Expand_Call_Helper): Handle non-limited views when we check if
1355 any formal is a class-wide interface type.
1356 * exp_disp.adb (Expand_Interface_Actuals): Handle non-limited
1357 views when we look for interface type formals to force "this"
1358 displacement.
1359
d3fb378d 13602019-07-10 Ed Schonberg <schonberg@adacore.com>
1361
1362 * sem_res.adb (Resolve_Equality_Op): Do not replace the resolved
1363 operator by its alias if expander is not active, because the
1364 operand type may not be frozen yet and its inherited operations
1365 have not yet been created.
1366
ab8418a3 13672019-07-10 Hristian Kirtchev <kirtchev@adacore.com>
1368
1369 * bindo-elaborators.adb (Elaborate_Units): Set attribute
1370 Elab_Position of all elaborated units.
1371 (Set_Unit_Elaboration_Positions): New routine.
1372
6e618828 13732019-07-10 Gary Dismukes <dismukes@adacore.com>
1374
1375 * exp_util.adb: Reformatting and a typo fix.
1376
97f6f798 13772019-07-10 Yannick Moy <moy@adacore.com>
1378
1379 * exp_util.adb (Remove_Side_Effects): Prefer renamings for
1380 objects of possible owning type in GNATprove mode.
1381
89c67bd9 13822019-07-09 Ed Schonberg <schonberg@adacore.com>
1383
1384 * sem_ch3.adb (Analyze_Object_Declaration): If the object type
1385 is a composite type that has a dynamic predicate and, the
1386 expression in the declaration is an aggregate, the generated
1387 predicate check must appear after the expanded code for the
1388 aggregate, which will appear after the rewritten object
1389 declarastion.
1390
fb739c45 13912019-07-09 Justin Squirek <squirek@adacore.com>
1392
1393 * sem_eval.adb (Expr_Value_E): Add conditional to correctly
1394 handle constant enumerated character types.
1395
54b39f26 13962019-07-09 Eric Botcazou <ebotcazou@adacore.com>
1397
1398 * libgnarl/s-osinte__mingw.ads (CRITICAL_SECTION): Use proper
1399 type for SpinCount component.
1400
9b57fc30 14012019-07-09 Justin Squirek <squirek@adacore.com>
1402
1403 * exp_ch4.adb (Expand_N_Allocator): Add conditional to detect
1404 the presence of anoymous access type allocators and issue a
1405 warning if the appropriate warning flag is enabled.
1406 * warnsw.ads: Add new warning flag for anonymous allocators
1407 * warnsw.adb (All_Warnings, Restore_Warnings, Save_Warnings,
1408 Set_Underscore_Warning_Switch): Register new flags.
1409 (WA_Warnings): Register new flag as an "all warnings" switch
1410 * usage.adb,
1411 doc/gnat_ugn/building_executable_programs_with_gnat.rst:
1412 Document new warning switches -gnatw_a and -gnatw_A.
1413 * gnat_ugn.texi: Regenerate.
1414
2463fa93 14152019-07-09 Ed Schonberg <schonberg@adacore.com>
1416
1417 * sem_ch4.adb (Diagnose_Call): Improve error recovery when a
1418 local subprogram name hides a possible candidate name declared
1419 in a child package in the context of the current unit.
1420 * sem_ch6.adb (Process_Formals): Protect against malformed
1421 formal types when the parameter type does not denote an entity.
1422
7389bee5 14232019-07-09 Hristian Kirtchev <kirtchev@adacore.com>
1424
1425 * bindo-augmentors.adb (Visit_Elaboration_Root): Do not start a
1426 DFS from an elaboration root whose corresponding unit lacks
1427 elaboration code. This behavior mimics that of the old
1428 elaboration order mechanism.
1429 * bindo-graphs.adb (Find_All_Cycles_Through_Vertex): Move the
1430 vertex tracing within the functional branches of the routine.
1431 This prevents spurious trace output.
1432 (Has_No_Elaboration_Code): New routine.
1433 (Trace_Cycle, Trace_Edge): Update the various Ids to use the
1434 "standard" trace format.
1435 * bindo-graphs.ads (Has_No_Elaboration_Code): New routine.
1436 * bindo-units.ads, bindo-units.adb (Has_No_Elaboration_Code):
1437 New routine.
1438
06d78d4c 14392019-07-09 Piotr Trojanek <trojanek@adacore.com>
1440
1441 * ali.ads, bindo-graphs.adb, bindo-validators.adb, clean.adb,
1442 doc/gnat_ugn/elaboration_order_handling_in_gnat.rst, einfo.ads,
1443 exp_aggr.adb, exp_ch13.adb, exp_ch4.adb, exp_ch5.adb,
1444 exp_ch6.adb, exp_ch7.adb, exp_ch9.adb, exp_pakd.adb,
1445 fname-uf.ads, gnatlink.adb, inline.adb, lib.ads, make.adb,
1446 namet.ads, opt.ads, par-ch4.adb, par-ch6.adb, par-labl.adb,
1447 prep.adb, sem_aggr.adb, sem_ch13.adb, sem_ch4.adb, sem_ch5.adb,
1448 sem_ch6.adb, sem_ch6.ads, sem_ch7.adb, sem_ch8.adb, sem_dim.adb,
1449 sem_disp.adb, sem_prag.adb, sem_res.adb, sem_warn.adb,
1450 sinfo.ads: Replace ". " with ". ". Minor reformatting and typo
1451 corrections.
1452 * gnat_ugn.texi: Generate.
1453
7ed20965 14542019-07-09 Hristian Kirtchev <kirtchev@adacore.com>
1455
1456 * bindo.ads: Move type Precedence_Kind from the private to the
1457 visible part of the unit.
1458 * bindo-augmentors.adb: Remove the use of global data as it is
1459 bad practice.
1460 (Augment_Library_Graph): Update the parameter profile.
1461 (Is_Visited, Set_Is_Visited): Remove.
1462 (Visit_Elaboration_Root, Visit_Elaboration_Roots): Update the
1463 parameter profile and comment on usage.
1464 (Visit_Vertex): Likewise. Also keep track of which invocation
1465 edge activates a task.
1466 * bindo-augmentors.ads (Augment_Library_Graph): Update the
1467 parameter profile and comment on usage.
1468 * bindo-builders.adb (Create_Forced_Edge,
1469 Create_Spec_And_Body_Edge, Create_With_Edge): Update the call to
1470 Add_Edge.
1471 * bindo-diagnostics.adb: Add with end use clauses for Restrict
1472 and Rident.
1473 (Output_Dynamic_Model_Suggestions): Remove.
1474 (Output_Invocation_Related_Suggestions): New routine.
1475 (Output_Suggestions): Output all invocation-related suggestions
1476 together.
1477 * bindo-elaborators.adb: Remove types Comparator_Ptr and
1478 Predicate_Ptr.
1479 (Find_Best_Vertex): Update the parameter profile.
1480 * bindo-graphs.adb (Activates_Task): New routine.
1481 (Add_Body_Before_Spec_Edge): Update the call to
1482 Add_Edge_With_Return.
1483 (Add_Edge): Update the parameter profile and the call to
1484 Add_Edge_With_Return.
1485 (Add_Edge_With_Return): Update the parameter profile and comment
1486 on usage.
1487 (At_Least_One_Edge_Satisfies): New routine.
1488 (Contains_Elaborate_All_Edge): Reimplement.
1489 (Contains_Static_Successor_Edge, Contains_Task_Activation): New
1490 routine.
1491 (Contains_Weak_Static_Successor): Remove.
1492 (Is_Static_Successor_Edge): New routine.
1493 * bindo-graphs.ads: Add types LGE_Predicate_Ptr,
1494 LGV_Comparator_Ptr, and LGV_Predicate_Ptr. Update type
1495 Library_Graph_Edge_Attributes to capture whether an invocation
1496 edge activates a task. Update the value of
1497 No_Library_Graph_Edge_Attributes.
1498 (Activates_Task): Update the parameter profile and comment on
1499 usage.
1500 (Contains_Static_Successor_Edge, Contains_Task_Activation): New
1501 routines.
1502 (Contains_Weak_Static_Successor): Remove.
1503 * doc/gnat_ugn/elaboration_order_handling_in_gnat.rst:
1504 Update the documentation to reflect the new task-related advice.
1505 * gnat_ugn.texi: Regenerate.
1506
247527b7 15072019-07-09 Piotr Trojanek <trojanek@adacore.com>
1508
1509 * exp_util.adb (Containing_Package_With_Ext_Axioms): Replace
1510 low-level Ekind test with a high-level wrapper.
1511
1d7a9954 15122019-07-09 Arnaud Charlet <charlet@adacore.com>
1513
1514 * libgnat/s-memory.adb: Disable calls to Abort defer/undefer
1515 when ZCX_By_Default.
1516
7667b40a 15172019-07-09 Javier Miranda <miranda@adacore.com>
1518
1519 * sem_ch13.adb (Rep_Item_Too_Early): Representation clauses are
1520 not allowed for a derivation of a generic type. Extend the
1521 current test to check that none of the parents is a generic
1522 type.
1523
98eb8111 15242019-07-09 Hristian Kirtchev <kirtchev@adacore.com>
1525
1526 * exp_ch9.adb, exp_util.adb, repinfo.adb, sem_ch12.adb,
1527 sem_prag.adb, sem_res.adb, sem_spark.adb, sem_util.adb: Minor
1528 reformatting.
1529
5ffa473a 15302019-07-09 Ed Schonberg <schonberg@adacore.com>
1531
1532 * sem_res.adb (Resolve_Equality_Op): If the node was overloaded,
1533 set properly the entity to which the node has been resolved. The
1534 original entity is the first one found during analysis, and is
1535 not necessarily the resolved one.
1536 (Resolve_Op_Not): If the argument of negation is an overloaded
1537 equality operation, call its resolution directly given that the
1538 context type does not participate in overload resolution.
1539
f7197450 15402019-07-09 Hristian Kirtchev <kirtchev@adacore.com>
1541
1542 * bindo.adb: Remove with and use clauses for Debug. Add with
1543 and use clauses for Opt.
1544 (Find_Elaboration_Order): Enable the v4.0 elaboration order. The
1545 v3.0 mechanism is now available under binder switch -H.
1546 * bindusg.adb (Display): Enable switch -H.
1547 * debug.adb: Free compiler switch -gnatd_G. Free binder switch
1548 -d_N.
1549 * sem_elab.adb: Update the section on switches to remove
1550 -gnatd_G.
1551 (Invocation_Graph_Recording_OK): The invocation graph is now
1552 unconditionally recorded in ALI files.
1553 * switch-b.adb (Scan_Binder_Switches): Scan switch -H.
1554 * doc/gnat_ugn/building_executable_programs_with_gnat.rst:
1555 Update the documentation on compiler switches related to
1556 elaboration. Update the documentation on binder switches to
1557 include switch -H.
1558 * doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Update
1559 the documentation on elaboration order handling in GNAT.
1560 * gnat_ugn.texi: Regenerate.
1561
a2c6c634 15622019-07-09 Eric Botcazou <ebotcazou@adacore.com>
1563
1564 * repinfo.adb (List_Entities): Disregard formals altogether.
1565 (List_Name): Properly escape the double quote in the JSON
1566 output.
1567
3933efcf 15682019-07-09 Javier Miranda <miranda@adacore.com>
1569
1570 * exp_util.adb (Remove_Side_Effects): Preserve the
1571 Do_Range_Check flag.
1572
2166bdef 15732019-07-09 Yannick Moy <moy@adacore.com>
1574
1575 * sinfo.ads: Refine comment for Do_Range_Check.
1576
dbf9a3d7 15772019-07-09 Yannick Moy <moy@adacore.com>
1578
1579 * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Expand
1580 attribute reference on Enum_Rep.
1581
44e00a56 15822019-07-09 Ed Schonberg <schonberg@adacore.com>
1583
1584 * sem_ch12.adb (Instantiate_Formal_Package): Handle properly the
1585 case where the actual for a formal package in an instance is the
1586 current instance of an enclosing generic package.
1587 (Check_Formal_Packages): If the formal package declaration is
1588 box-initialized or lacks associations altogether, no internal
1589 instance was created to verify conformance, and there is no
1590 validating package to remove from tree.
1591
3e4e7139 15922019-07-09 Yannick Moy <moy@adacore.com>
1593
1594 * freeze.adb (Build_Renamed_Body): Do not set body to inline in
1595 GNATprove mode.
1596
8235b943 15972019-07-09 Yannick Moy <moy@adacore.com>
1598
1599 * exp_util.adb (Expand_Subtype_From_Expr): Still expand the type
1600 of static expressions in GNATprove_Mode.
1601 * sem_ch3.adb (Analyze_Object_Declaration): Remove obsolete
1602 special case for GNATprove_Mode.
1603
cf9af2fa 16042019-07-09 Piotr Trojanek <trojanek@adacore.com>
1605
1606 * doc/gnat_rm/the_gnat_library.rst,
1607 doc/gnat_ugn/building_executable_programs_with_gnat.rst,
1608 erroutc.adb, libgnat/g-comlin.adb, libgnat/g-comlin.ads,
1609 libgnat/g-regexp.ads, libgnat/g-regpat.ads,
1610 libgnat/g-spipat.ads, libgnat/s-os_lib.ads,
1611 libgnat/s-regexp.ads: Reword "wild card" to "wildcard".
1612 * gnat_rm.texi, gnat_ugn.texi: Regenerate.
1613
a080baa9 16142019-07-09 Yannick Moy <moy@adacore.com>
1615
1616 * sem_spark.adb (Check_Expression): Handle correctly implicit
1617 assignments as part of allocators and (extension) aggregates.
1618 (Get_Root_Object): Adapt for new path expressions.
1619 (Is_Path_Expression): Return True for (extension) aggregate.
1620
d9b7ae15 16212019-07-09 Piotr Trojanek <trojanek@adacore.com>
1622
1623 * einfo.ads: Fix a typo.
1624
4c24efa6 16252019-07-09 Ed Schonberg <schonberg@adacore.com>
1626
1627 * sem_util.adb (Scope_Within_Or_Same): Handle properly task
1628 bodies and protected bodies, so that local variables within have
1629 their proper scopes after these constructs have been rewritten
1630 during expansion. This patch resembles but is not identical to
1631 the code in Scope_Within.
1632
6c334e66 16332019-07-09 Arnaud Charlet <charlet@adacore.com>
1634
1635 * gnat1drv.adb (Adjust_Global_Switches): Set
1636 Dynamic_Elaboration_Checks to True in CodePeer mode.
1637
82c20af0 16382019-07-09 Yannick Moy <moy@adacore.com>
1639
1640 * sem_spark.adb (Get_Perm_Or_Tree): Issue an error when
1641 encountering unknown global variable.
1642
a42b8e6a 16432019-07-09 Yannick Moy <moy@adacore.com>
1644
1645 * sem_spark.adb (Check_Expression): Change signature to take an
1646 Extended_Checking_Mode, for handling read permission checking of
1647 sub-expressions in an assignment.
1648 (Check_Parameter_Or_Global): Adapt to new behavior of
1649 Check_Expression for mode Assign.
1650 (Check_Safe_Pointers): Do not analyze generic bodies.
1651 (Check_Assignment): Separate checking of the target of an
1652 assignment.
1653
5fb4f6e3 16542019-07-09 Eric Botcazou <ebotcazou@adacore.com>
1655
1656 * repinfo.ads (JSON format): Adjust.
1657 * repinfo.adb (Need_Blank_Line): Rename to...
1658 (Need_Separator): ...this.
1659 (Blank_Line): Rename to...
1660 (Write_Separator): ...this and add JSON specific handling.
1661 (List_Array_Info): Adjust to above renaming.
1662 (List_Object_Info): Likewise.
1663 (List_Record_Info): Likewise.
1664 (List_Subprogram_Info): Likewise.
1665 (List_Type_Info): Likewise.
1666 (List_Entities): Do not set Need_Blank_Line.
1667 (List_Rep_Info): Set Need_Separator and add JSON specific
1668 handling. Output a single JSON stream in the normal case.
1669
b389ec1e 16702019-07-09 Arnaud Charlet <charlet@adacore.com>
1671
1672 * doc/gnat_ugn/the_gnat_compilation_model.rst: Update doc on
1673 -fdump-ada-spec now that we generate Ada 2012.
1674 * gnat_ugn.texi: Regenerate.
1675
5acb3702 16762019-07-08 Eric Botcazou <ebotcazou@adacore.com>
1677
1678 * repinfo.adb (List_Common_Type_Info): New procedure extracted
1679 from...
1680 (List_Type_Info): ...here. Call it for the common information,
1681 start with a blank line and output the linker section at the
1682 end, if any.
1683 (List_Mechanisms): Rename to...
1684 (List_Subprogram_Info): ...this.
1685 (List_Array_Info): Call List_Common_Type_Info.
1686 (List_Entities): Adjust to above change and renaming.
1687 (List_Record_Info): Call List_Common_Type_Info.
1688
6eb57612 16892019-07-08 Dmitriy Anisimkov <anisimko@adacore.com>
1690
1691 * libgnat/g-sercom.ads
1692 (Serial_Port_Descriptor): New type.
1693 (Serial_Port): Add a comment, make it hold a
1694 Serial_Port_Descriptor.
1695 (To_Ada, To_C): New procedures.
1696 (Port_Data, Port_Data_Access): Remove types.
1697 * libgnat/g-sercom.adb (To_Ada): New stub.
1698 * libgnat/g-sercom__linux.adb, libgnat/g-sercom__mingw.adb:
1699 Update implementations accordingly.
1700 * s-oscons-tmplt.c: Bind Serial_Port_Descriptor to
1701 System.Win32.HANDLE on Windows, and to Interfaces.C.int on
1702 Linux. Add "Interfaces.C." prefix for other basic integer type
1703 bindings.
1704 * xoscons.adb (Output_Info): Remove the "Interfaces.C." prefix
1705 for subtypes generation.
1706
08da2ad9 17072019-07-08 Arnaud Charlet <charlet@adacore.com>
1708
1709 * doc/gnat_rm/standard_and_implementation_defined_restrictions.rst:
1710 Update documentation on No_Exceptions restriction.
1711 * gnat_rm.texi: Regenerate.
1712
89b07420 17132019-07-08 Dmitriy Anisimkov <anisimko@adacore.com>
1714
1715 * libgnat/s-os_lib.adb: Do not call __gnat_kill for Invalid_Pid.
1716
0cc34fed 17172019-07-08 Piotr Trojanek <trojanek@adacore.com>
1718
1719 * sem_util.adb (Enclosing_Package_Or_Subprogram): Do not expect
1720 package and subprogram bodies.
1721
46299a06 17222019-07-08 Bob Duff <duff@adacore.com>
1723
1724 * doc/gnat_ugn/gnat_utility_programs.rst: Remove documentation
1725 of ignored GNATpp switch.
1726
4475d2f0 17272019-07-08 Hristian Kirtchev <kirtchev@adacore.com>
1728
1729 * doc/gnat_rm/implementation_defined_pragmas.rst:
1730 Update the documentation of pragma Initialize_Scalars.
1731 * gnat_rm.texi: Regenerate.
1732
b282b25b 17332019-07-08 Javier Miranda <miranda@adacore.com>
1734
1735 * exp_ch4.adb (Tagged_Membership): Fix regression silently
1736 introduced in r260738 that erroneouslusy causes the evaluation
1737 to True of the membership test when the left operand of the
1738 membership test is a class-wide interface object and the right
1739 operand is a type that implements such interface type.
1740
703ee0e0 17412019-07-08 Hristian Kirtchev <kirtchev@adacore.com>
1742
1743 * sem_ch13.adb (Analyze_Attribute_Definition_Clause): Do not
1744 register an address clause when its prefix denotes a generic
1745 formal object.
1746
e6b4414e 17472019-07-08 Hristian Kirtchev <kirtchev@adacore.com>
1748
1749 * bindo-diagnostics.adb (Diagnose_Cycle): Capture the presence
1750 of an Elaborate_All edge before iterating over the edges of the
1751 cycle.
1752 (Output_Elaborate_Body_Transition): Update the parameter profile
1753 and the comment on usage. Add a missing case where the edge is
1754 within the context of an Elaborate_All.
1755 (Output_Transition): Update the call to
1756 Output_Elaborate_Body_Transition.
1757 * bindo-graphs.ads, bindo-graphs.adb
1758 (Contains_Elaborate_All_Edge): New routine.
1759
5a4de65a 17602019-07-08 Piotr Trojanek <trojanek@adacore.com>
1761
1762 * lib-xref-spark_specific.adb (Create_Heap): Set dummy Etype for
1763 the fake __HEAP entity.
1764
42253061 17652019-07-08 Daniel Mercier <mercier@adacore.com>
1766
1767 * gnat1drv.adb: Suppress warnings on memory representation in
1768 CodePeer compiler mode.
1769
a7c8fd7e 17702019-07-08 Nicolas Roche <roche@adacore.com>
1771
1772 * rtinit.c (__gnat_runtime_initialize): Remove dependency on
1773 CommandLineToArgvW.
1774
89c9dd55 17752019-07-08 Doug Rupp <rupp@adacore.com>
1776
1777 * Makefile.rtl: Handle vxworks7r2 in x86_64 and x86 vxworks7.
1778
944903c8 17792019-07-08 Dmitriy Anisimkov <anisimko@adacore.com>
1780
1781 * Makefile.rtl: Use g-sercom__linux.adb for all linuxes.
1782
e51a140c 17832019-07-08 Yannick Moy <moy@adacore.com>
1784
1785 * expander.adb (Expand): Do not reset Analyzed flag always.
1786 * sem_eval.adb (Fold_Ureal): Mark node as analyzed.
1787
f117e449 17882019-07-08 Ed Schonberg <schonberg@adacore.com>
1789
1790 * exp_ch9.adb (Expand_N_Timed_Entry_Call): Do not insert twice
1791 the assignment statement that computes the delay value, to
1792 prevent improper tree sharing when the value is a type
1793 conversion and Float_Overflow checks are enabled.
1794
f5cb3a59 17952019-07-08 Hristian Kirtchev <kirtchev@adacore.com>
1796
1797 * bindo.adb: Update the section on terminology to include new
1798 concepts. Update the section on switches to include new
1799 entries.
1800 * bindo.ads: Add type Precedence_Kind.
1801 * bindo-builders.adb: Add with and use clauses for Debug and
1802 Bindo.Validators. Add use clauses for
1803 Bindo.Validators.Invocation_Graph_Validators and
1804 Bindo.Validators.Library_Graph_Validators.
1805 (Build_Invocation_Graph): Validate the graph immediately after
1806 it was built.
1807 (Build_Library_Graph): Update the parameter profile. The
1808 creation of the graph is now elaboration model-agnostic.
1809 Validate the graph immediately after it was built.
1810 (Create_With_Edge): Create regular with edges for Elaborate and
1811 Elaborate_All edges when the appropriate debug switches are in
1812 effect.
1813 * bindo-builders.ads (Build_Library_Graph): Update the parameter
1814 profile.
1815 * bindo-diagnostics.adb (Diagnose_Cycle): Track the presence of
1816 an Elaborate_All edge throughout the inspection of the cycle's
1817 edges.
1818 (Output_Dynamic_Model_Suggestions): Output the suggestion only
1819 when the cycle contains at least one weak edge where the
1820 successor was statically elaborated.
1821 (Output_Elaborate_Body_Transition, Output_Forced_Transition,
1822 Output_With_Transition): Update the assertions.
1823 * bindo-elaborators.adb: Remove use clauses for
1824 Bindo.Validators.Invocation_Graph_Validators and
1825 Bindo.Validators.Library_Graph_Validators. Remove strings
1826 Add_To_All_Candidates_Msg and Add_To_Comp_Candidates_Msg.
1827 Remove type String_Ptr.
1828 (Add_Vertex, Add_Vertex_If_Elaborable, Create_All_Candidates_Set
1829 Create_Component_Candidates_Set): Remove.
1830 (Create_Component_Vertex_Sets, Create_Vertex_Sets): New routine.
1831 (Elaborate_Component): Update the parameter profile and the
1832 comment on usage. Reimplement the elaboration of a component.
1833 The algorithm will now attempt to elaborate as many vertices
1834 possible. If this is not possible, and a weakly elaborable
1835 vertex is available use unit was compiled using the dynamic
1836 model, the algorithm will elaborate it.
1837 (Elaborate_Library_Graph): Reimplement the elaboration of the
1838 graph. The algorithm will now attempt to elaborate as many
1839 vertices along with their components as possible. If this is not
1840 possible, and a weakly elaborable vertex is available use unit
1841 was compiled using the dynamic model, the algorithm will
1842 elaborate it along with its component.
1843 (Elaborate_Units): Merge with the functionality of
1844 Elaborate_Units_Common.
1845 (Elaborate_Units_Common, Elaborate_Units_Dynamic,
1846 Elaborate_Units_Static): Remove.
1847 (Elaborate_Vertex): Update the parameter profile and the comment
1848 on usage. Reimplemented.
1849 (Find_Best_Candidate): Remove.
1850 (Find_Best_Elaborable_Vertex, Find_Best_Vertex,
1851 Find_Best_Weakly_Elaborable_Vertex, Has_Elaborable_Body,
1852 Insert_Elaborable_Successor, Insert_Vertex): New routines.
1853 (Is_Better_Candidate): Remove.
1854 (Is_Better_Elaborable_Vertex,
1855 Is_Better_Weakly_Elaborable_Vertex,
1856 Is_Suitable_Elaborable_Vertex,
1857 Is_Suitable_Weakly_Elaborable_Vertex): New routines.
1858 (Trace_Candidate_Vertices): Remove.
1859 (Trace_Component): Output the number of strong and weak
1860 predecessors.
1861 (Trace_Unelaborated_Vertices): Remove.
1862 (Trace_Vertex): Output the number of strong and weak
1863 predecessors.
1864 (Trace_Vertices): New routine.
1865 (Update_Successor, Update_Successors): Update the parameter
1866 profile and the comment on usage.
1867 * bindo-graphs.adb: Remove type Precedence_Kind.
1868 (Add_Edge_With_Return): Update the increment of pending
1869 predecessors.
1870 (Add_Vertex): Provide default values for strong and weak
1871 predecessors.
1872 (Complementary_Vertex): Move the initial declaration to the
1873 spec. Update the parameter profile and the comment on usage.
1874 (Contains_Weak_Static_Successor): New routine.
1875 (Create): Update the parameter profile. The creation of the
1876 graph is now elaboration model-agnostic.
1877 (Decrement_Pending_Predecessors): Update the parameter profile
1878 and the comment on usage. Reimplemented.
1879 (Delete_Edge): Update the decrement of pending predecesors.
1880 (Has_Elaborate_Body): Do not treat a vertex as being subject to
1881 Elaborate_Body when a debug switch is in effect.
1882 (Increment_Pending_Predecessors): Update the parameter profile
1883 and the comment on usage. Reimplemented.
1884 (Is_Elaborable_Component): Reimplemented.
1885 (Is_Elaborable_Vertex): Move the initial declaration to the
1886 spec. Reimplemented.
1887 (Is_Elaborate_Body_Pair): New routine.
1888 (Is_Dynamically_Elaborated): Update the parameter profile.
1889 Reimplemented.
1890 (Is_Weakly_Elaborable_Vertex): New routine.
1891 (Pending_Predecessors): Removed.
1892 (Pending_Predecessors_For_Elaboration,
1893 Pending_Strong_Predecessors, Pending_Weak_Predecessors,
1894 Update_Pending_Predecessors): New routines.
1895 (Update_Pending_Predecessors_Of_Components): Update the
1896 increment of pending predecessors.
1897 * bindo-graphs.ads: Update the components of type
1898 Component_Attributes. Update the components of type
1899 Library_Graph_Attributes. Update the components of type
1900 Library_Graph_Vertex_Attributes. Update the initialization of
1901 No_Component_Attributes. Update the initialization of
1902 No_Library_Graph_Vertex_Attributes.
1903 (Complementary_Vertex, Contains_Weak_Static_Successor): New
1904 routines.
1905 (Create): Update the parameter profile and the comment on usage.
1906 (Decrement_Pending_Predecessors, Is_Dynamically_Elaborated):
1907 Update the parameter profile and the comment on usage.
1908 (Is_Elaborate_Body_Pair, Is_Weakly_Elaborable_Vertex): New
1909 routines.
1910 (Pending_Predecessors): Removed.
1911 (Pending_Predecessors_For_Elaboration,
1912 Pending_Strong_Predecessors, Pending_Weak_Predecessors): New
1913 routines.
1914 * bindo-writers.adb (Write_Components): Moved from the spec.
1915 (Write_Component): Output the strong and weak predecessors.
1916 (Write_Library_Graph): Output the components as part of the
1917 graph.
1918 (Write_Library_Graph_Vertex): Output the strong and weak
1919 predecessors.
1920 * bindo-writers.ads (Write_Components): Moved to the body.
1921 * debug.adb: Add and document new GNATbind switches -d_a, -d_b,
1922 -d_e.
1923 * bindo-validators.adb: Minor reformattings.
1924
7b8ca6b2 19252019-07-08 Bob Duff <duff@adacore.com>
1926
1927 * libgnat/g-sercom.ads, libgnat/g-sercom__linux.adb (Data_Rate):
1928 Support additional data rates.
1929
364c746f 19302019-07-08 Olivier Hainque <hainque@adacore.com>
1931
1932 * gcc-interface/trans.c (Compilation_Unit_to_gnu): Don't request
1933 DECL_ARTIFICIAL_P on elab proc declarations.
1934
2dbfbbb2 19352019-07-08 Eric Botcazou <ebotcazou@adacore.com>
1936
1937 * repinfo.adb (List_Record_Info): Declare Incomplete_Layout and
1938 Not_In_Extended_Main local exceptions.
1939 (List_Structural_Record_Layout): For an extension, raise the
1940 former if the parent subtype has not been built and the latter
1941 if it is not declared in the main source unit. Fall back to the
1942 flat layout if either exception has been raised.
1943
3e05bbec 19442019-07-08 Ed Schonberg <schonberg@adacore.com>
1945
1946 * libgnat/a-strfix.adb (Delete): The RM describes the semantics
1947 of Delete as equivalent to that of Replace_String with a null
1948 argument. As a result, deleting a null string that starts past
1949 the end of its argument is a noop and must not raise
1950 Index_Error.
1951
c98aac61 19522019-07-08 Javier Miranda <miranda@adacore.com>
1953
1954 * exp_disp.adb (Register_Primitive): When registering a
1955 primitive in the secondary dispatch table, handle primitive
1956 inherited through several levels of type derivation (required to
1957 properly handle inherited 'null' primitive).
1958
221b67b6 19592019-07-08 Bob Duff <duff@adacore.com>
1960
1961 * doc/gnat_ugn/gnat_utility_programs.rst: Document handling of
1962 preprocessor directives in GNATpp.
1963
aed4e06a 19642019-07-08 Javier Miranda <miranda@adacore.com>
1965
1966 * gnat1drv.adb (Post_Compilation_Validation_Checks:
1967 Validate_Compile_Time_Warning_Errors is now located in sem_prag
1968 (instead of sem_ch13).
1969 * sem_ch13.ads (Validate_Compile_Time_Warning_Error,
1970 Validate_Compile_Time_Warning_Errors): Move to sem_prag.
1971 * sem_ch13.adb
1972 (Compile_Time_Warnings_Errors): Move to sem_prag.
1973 (Initialize): Remove initialization of table
1974 Compile_Time_Warning_Errors.
1975 (Validate_Compile_Time_Warning_Error,
1976 Validate_Compile_Time_Warning_Errors): Move to sem_prag.
1977 * sem_prag.ads (Validate_Compile_Time_Warning_Errors): New
1978 procedure.
1979 * sem_prag.adb (Initialize): Initialize table
1980 Compile_Time_Warning_Errors.
1981
b9bd5934 19822019-07-08 Ed Schonberg <schonberg@adacore.com>
1983
1984 * sem_ch13.adb (Analyze_Aspect_Specifications): For a
1985 pre/postcondition of a generic subprogram declaration, do not
1986 use Relocate_Node on the aspect expression to construct the
1987 corresponding attribute specification, to prevent tree anomalies
1988 when the expression is a call with named actual parameters.
1989
63bb17d8 19902019-07-08 Javier Miranda <miranda@adacore.com>
1991
1992 * sem_attr.adb (Analyze_Attribute [Attribute_Size]): For pragmas
1993 used to report user defined compile time warning or errors
1994 handle 'Size for types with known static RM size.
1995
1979cbfe 19962019-07-08 Justin Squirek <squirek@adacore.com>
1997
1998 * exp_imgv.adb (Build_Enumeration_Image_Tables): Default SSO for
1999 the building of image tables.
2000 (Expand_Image_Attribute): Minor cleanup.
2001
bcb0a375 20022019-07-08 Dmitriy Anisimkov <anisimko@adacore.com>
2003
2004 * libgnat/g-socket.ads, libgnat/g-socket.adb: Improve
2005 documentation.
2006 (Get_Socket_Option, Set_Socket_Option): Remove default value for
2007 the Level formal.
2008
429822c1 20092019-07-08 Ed Schonberg <schonberg@adacore.com>
2010
2011 * sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): For an
2012 unanalized aspect in a generic context that has not been
2013 analyzed yet, if the aspect applies to a type, place the type on
2014 the scope stack to make its components visible, before checking
2015 conformance with the version of the expression analyzed at the
2016 freeze point.
2017
e1415398 20182019-07-05 Justin Squirek <squirek@adacore.com>
2019
2020 * checks.adb (Apply_Accessibility_Check): Add logic to fetch the
2021 function result accessibility level if one is required within
2022 the generated check.
2023 * exp_ch6.adb (Needs_Result_Accessibility_Level): Modify
2024 controlling elsif block to handle more cases such as anonymous
2025 access results and disable checking for coextensions.
2026
dad9e9f8 20272019-07-05 Ed Schonberg <schonberg@adacore.com>
2028
2029 * sem_ch9.adb (Analyze_Accept_Statement): If this is an illegal
2030 accept statement for an enclosing entry abandon analysis to
2031 prevent scope mismatches and potential infinite loops in
2032 compiler.
2033
627d0751 20342019-07-05 Hristian Kirtchev <kirtchev@adacore.com>
2035
2036 * ali.adb (For_Each_Invocation_Construct,
2037 For_Each_Invocation_Relation): New version.
2038 (Scan_ALI): Initialize field Invocation_Graph_Encoding.
2039 (Set_Invocation_Graph_Encoding): Update the setting of the
2040 invocation graph encoding.
2041 * ali.ads: Move field Invocation_Graph_Encoding from Unit_Record
2042 to ALI_Record because the encoding applies to the whole ALI,
2043 rather than one of the units (spec or body) for which the ALI
2044 file was created.
2045 (For_Each_Invocation_Construct, For_Each_Invocation_Relation):
2046 New version.
2047 * bindo.adb: Update the section on switches. Complete the
2048 section of debugging elaboration order issues.
2049 (Find_Elaboration_Order): Prepare the routine for the switch
2050 from the old to the new elaboration order mechanism.
2051 * bindo-diagnostics.adb (Find_And_Output_Invocation_Paths):
2052 Manage a visited set used by Visit_Vertex.
2053 (Output_All_Cycles_Suggestions,
2054 Output_Dynamic_Model_Suggestions): Clarify the nature of the
2055 suggested switch.
2056 (Output_Elaborate_Body_Transition): Update the diagnostic to
2057 emit a better message.
2058 (Output_Forced_Suggestions, Output_Full_Encoding_Suggestions):
2059 Clarify the nature of the suggested switch.
2060 (Visit_Vertex): Update the parameter profile to add a set of
2061 invokers visited during the transition. This set prevents
2062 infinite exploration of the graph in case the invocations are
2063 recursive.
2064 * bindo-elaborators.adb: Add a use clause for
2065 Bindo.Writers.Dependency_Writers.
2066 (Elaborate_Units_Common): Output the library graph after it has
2067 been augmented with invocation edges. Output just the components
2068 instead of outputting the whole library graph again.
2069 (Elaborate_Units_Dynamic, Elaborate_Units_Static): Output the
2070 dependencies as expressed in the library graph.
2071 * bindo-units.adb (Invocation_Graph_Encoding): Update the
2072 extraction of the invocation graph encoding.
2073 * bindo-writers.adb: Add with and use clauses for Binderr and
2074 Butil.
2075 (palgc, plgc): New debug routine.
2076 (Write_Components): Moved to the spec. Add a header for the
2077 output.
2078 (Write_Dependencies, Write_Dependencies_Of_Vertex,
2079 Write_Dependency_Edge): New routine.
2080 (Write_Elaboration_Order): Update the logic to follow the format
2081 of Binde's order output.
2082 (Write_Library_Graph): Do not output the components every time
2083 the graph is written.
2084 (Write_Unit): Output the invocation graph encoding of the unit.
2085 Output the invocation constructs and relations for the unit
2086 only.
2087 * bindo-writers.ads (Write_Components): Moved from the body.
2088 (Write_Dependencies): New routine.
2089 * bindusg.adb: Prepare the routine for the switch from the old
2090 to the new elaboration order mechanism.
2091 * debug.adb: Binder switch -d_O is now not associated with any
2092 functionality.
2093 * einfo.adb (Is_Elaboration_Target): The attribute applies to
2094 packages, as specified by the comment on the attribute usage.
2095 * opt.ads: Add a global flag which controls the choice between
2096 the new and the legacy elaboration order mechanism.
2097 * sem_elab.adb: Add Package_Target to type Target_Kind.
2098 (Build_Elaborate_Body_Procedure, Build_Elaborate_Procedure,
2099 Build_Elaborate_Spec_Procedure, Check_Elaboration_Scenarios,
2100 Check_SPARK_Model_In_Effect): Use Main_Unit_Entity to obtain the
2101 entity of the main unit.
2102 (Create_Package_Rep): New routine.
2103 (Create_Target_Rep): Add processing for packages.
2104 (Declaration_Placement_Of_Node, Has_Prior_Elaboration): Use
2105 Main_Unit_Entity to obtain the entity of the main
2106 unit.
2107 (Invocation_Graph_Recording_OK): Prepare the routine for the
2108 switch from the old to the new elaboration order mechanism.
2109 (Main_Unit_Entity): New routine.
2110 (Meet_Elaboration_Requirement,
2111 Process_Conditional_ABE_Variable_Reference): Use
2112 Main_Unit_Entity to obtain the entity of the main unit.
2113 (Process_Invocation_Instantiation): New routine.
2114 (Process_Invocation_Scenario): Add processing for
2115 instantiations.
2116 * switch-b.adb (Scan_Binder_Switches): Prepare the routine for
2117 the switch from the old to the new elaboration order mechanism.
2118
30fb27b1 21192019-07-05 Joffrey Huguet <huguet@adacore.com>
2120
2121 * libgnat/a-textio.adb: Add abstract state refinment.
2122 * libgnat/a-textio.ads: Add File_System abstract state. Add
2123 global contracts, contract cases, preconditions and
2124 postconditions to procedures and functions.
2125 (Set_Input, Set_Output, Set_Error, Standard_Input,
2126 Standard_Output, Standard_Error, Current_Input, Current_Output,
2127 Current_Error): Turn SPARK_Mode off.
2128 (Get_Line): Turn SPARK_Mode off on Get_Line functions.
2129 * libgnat/a-tideio.ads, libgnat/a-tienio.ads,
2130 libgnat/a-tifiio.ads, libgnat/a-tiflio.ads,
2131 libgnat/a-tiinio.ads, libgnat/a-timoio.ads: Add global
2132 contracts, contract cases, preconditions and postconditions to
2133 procedures and functions.
2134
ce99fc8a 21352019-07-05 Arnaud Charlet <charlet@adacore.com>
2136
2137 * doc/gnat_ugn/platform_specific_information.rst: Refresh doc on
2138 installing from the command line on Windows. Remove obsolete
2139 part.
2140 * gnat_ugn.texi: Regenerate.
2141
26ea5003 21422019-07-05 Vasiliy Fofanov <fofanov@adacore.com>
2143
2144 * libgnat/a-wichha.ads (Is_Alphanumeric): Replace comment with
2145 the correct one. Also capitalize references to False
2146 throughout.
2147
c9c81835 21482019-07-05 Eric Botcazou <ebotcazou@adacore.com>
2149
2150 * exp_ch4.adb (Expand_N_Indexed_Component): Do not expand actual
2151 parameters of function calls here either.
2152
50948c8a 21532019-07-05 Hristian Kirtchev <kirtchev@adacore.com>
2154
2155 * bindo-units.adb, checks.adb, exp_attr.adb, exp_ch3.adb,
2156 exp_ch4.adb, exp_pakd.adb, lib-writ.adb, libgnat/g-traceb.adb,
2157 libgnat/g-traceb.ads, libgnat/s-stratt.ads, sem_aux.ads,
2158 sem_util.adb: Minor reformatting.
2159
a9fa50ab 21602019-07-05 Ed Schonberg <schonberg@adacore.com>
2161
2162 * sem_ch13.adb (Build_Predicate_Functions): If a subtype that
2163 carries a static predicate aspect is frozen immediately after
2164 its declaration, ensure that the generated function body created
2165 for predicate checking is inserted after the corresponding
2166 subprogram declaration, which is created at the point the
2167 declaration is elaborated.
2168
ee4e1dd7 21692019-07-05 Hristian Kirtchev <kirtchev@adacore.com>
2170
2171 * exp_ch7.adb (Cleanup_Record): Use the underlying type when
2172 checking for components with tasks.
2173
2028580f 21742019-07-05 Arnaud Charlet <charlet@adacore.com>
2175
2176 * libgnarl/s-osinte__linux.ads: Link with -lrt before -lpthread.
2177
ec1e481f 21782019-07-05 Ed Schonberg <schonberg@adacore.com>
2179
2180 * exp_pakd.adb (Expand_Bit_Packed_Element_Set): Add explicit
2181 range checks when the index type of the bit-packed array is an
2182 enumeration type with a non-standard representation,
2183
ae60396a 21842019-07-05 Hristian Kirtchev <kirtchev@adacore.com>
2185
2186 * sem_res.adb (Is_Control_Flow_Statement): Delay statements
2187 contain an expression, which in turn may have side effects and
2188 affect the infinite recursion. As a result, delay statements
2189 should not be treated specially.
2190
d33025f2 21912019-07-05 Arnaud Charlet <charlet@adacore.com>
2192
2193 * libgnarl/s-linux.ads, libgnarl/s-linux__alpha.ads,
2194 libgnarl/s-linux__android.ads, libgnarl/s-linux__hppa.ads,
2195 libgnarl/s-linux__mips.ads, libgnarl/s-linux__riscv.ads,
2196 libgnarl/s-linux__sparc.ads: Fix typos in comments.
2197
51f2c7f9 21982019-07-05 Hristian Kirtchev <kirtchev@adacore.com>
2199
2200 * sem_res.adb (Check_Infinite_Recursion): Reimplemented.
2201 (Enclosing_Declaration_Or_Statement,
2202 Invoked_With_Different_Arguments, Is_Conditional_Statement,
2203 Is_Control_Flow_Statement, Is_Immediately_Within_Body,
2204 Is_Raise_Idiom, Is_Raise_Statement, Is_Sole_Statement,
2205 Preceded_By_Control_Flow_Statement,
2206 Within_Conditional_Statement): New routines.
2207
0e6f6ee1 22082019-07-05 Javier Miranda <miranda@adacore.com>
2209
2210 * exp_ch4.adb (Expand_N_Type_Conversion): Do not apply an
2211 accessibility check when the conversion is an access to
2212 class-wide interface type and it is an actual parameter.
2213 * exp_ch6.adb (Expand_Call_Helper): Add documentation on the
2214 accessibility level of an anonymous allocator defining the value
2215 of an access parameter.
2216 * sem_util.ads, sem_util.adb (Dynamic_Accessibility_Level): Add
2217 support for an anonymous allocator whose type is that of a
2218 stand-alone object of an anonymous access to object type.
2219
f28a3d6c 22202019-07-05 Piotr Trojanek <trojanek@adacore.com>
2221
2222 * einfo.ads, sem_res.adb: Typo fixes in comments.
2223
2d8a0eb3 22242019-07-05 Bob Duff <duff@adacore.com>
2225
2226 * exp_ch6.adb (Is_Build_In_Place_Function): Narrow the check for
2227 Has_Foreign_Convention to the imported case only. If a
2228 build-in-place function is exported, and called from Ada code,
2229 build-in-place protocols should be used.
2230
6eddee84 22312019-07-05 Ed Schonberg <schonberg@adacore.com>
2232
2233 * sem_util.adb (Encloing_Subprogram): If Enclosing_Dynamic_Scope
2234 is a loop, continue climbing the scope stack to find the
2235 enclosing subprogram.
2236 (Gather_Components): Handle properly a choice in a record
2237 aggregate that is given by a subtype with a static predicate.
2238
249e38a7 22392019-07-05 Javier Miranda <miranda@adacore.com>
2240
2241 * debug.adb (-gnatd.K): Leave available this switch.
2242 * contracts.adb (Build_And_Analyze_Contract_Only_Subprograms):
2243 Remove.
2244 * scil_ll.ads, scil_ll.adb (Contract_Only_Body_Flag,
2245 Contract_Only_Body_Nodes, Get_Contract_Only_Body,
2246 Is_Contract_Only_Body, Set_Contract_Only_Body): Remove.
2247
33ae0c9f 22482019-07-05 Pierre-Marie de Rodat <derodat@adacore.com>
2249
2250 * libgnat/a-strunb.ads: Import documentation from the RM
2251
70f9c8aa 22522019-07-05 Pierre-Marie de Rodat <derodat@adacore.com>
2253
2254 * libgnat/a-strfix.ads: Import documentation from the RM
2255
1bc68ac2 22562019-07-05 Yannick Moy <moy@adacore.com>
2257
2258 * adabkend.adb (Scan_Back_End_Switches): Accept -Og and -Ofast
2259 switches.
2260
2500be2f 22612019-07-05 Hristian Kirtchev <kirtchev@adacore.com>
2262
2263 * ali.adb: Relocate types Invocation_Construct_Record,
2264 Invocation_Relation_Record, and Invocation_Signature_Record to
2265 the body of ALI. Relocate tables Invocation_Constructs,
2266 Invocation_Relations, and Invocation_Signatures to the body of
2267 ALI. Remove type Body_Placement_Codes. Add new types
2268 Declaration_Placement_Codes, and
2269 Invocation_Graph_Encoding_Codes. Update the literals of type
2270 Invocation_Graph_Line_Codes.
2271 (Add_Invocation_Construct): Update the parameter profile. Add an
2272 invocation construct built from all attributes provided.
2273 (Add_Invocation_Relation): Update the parameter profile. Add an
2274 invocation relation built from all attributes provided.
2275 (Body_Placement): New routine.
2276 (Body_Placement_Kind_To_Code, Code_To_Body_Placement_Kind):
2277 Removed.
2278 (Code_To_Declaration_Placement_Kind,
2279 Code_To_Invocation_Graph_Encoding_Kind, Column,
2280 Declaration_Placement_Kind_To_Code, Extra,
2281 For_Each_Invocation_Construct, For_Each_Invocation_Relation,
2282 Invocation_Graph_Encoding,
2283 Invocation_Graph_Encoding_Kind_To_Code, Invoker, Kind, Line,
2284 Locations, Name): New routine.
2285 (Scan_Invocation_Construct_Line): Reimplement the scanning
2286 mechanism.
2287 (Scan_Invocation_Graph_Attributes_Line): New routine.
2288 (Scan_Invocation_Graph_Line): Use a case statement to dispatch.
2289 (Scan_Invocation_Relation_Line): Reimplement the scanning
2290 mechanism.
2291 (Scope): New routine.
2292 (Set_Invocation_Graph_Encoding, Signature, Spec_Placement,
2293 Target): New routine.
2294 * ali.ads: Add new type Invocation_Graph_Encoding_Kind. Add
2295 component Invocation_Graph_Encoding to type Unit_Record.
2296 Relocate various types and data structures to the body of ALI.
2297 (Add_Invocation_Construct, Add_Invocation_Relation): Update the
2298 parameter profile.
2299 (Body_Placement): New routine.
2300 (Body_Placement_Kind_To_Code, Code_To_Body_Placement_Kind):
2301 Removed.
2302 (Code_To_Declaration_Placement_Kind,
2303 Code_To_Invocation_Graph_Encoding_Kind, Column,
2304 Declaration_Placement_Kind_To_Code, Extra,
2305 For_Each_Invocation_Construct, For_Each_Invocation_Relation,
2306 Invocation_Graph_Encoding,
2307 Invocation_Graph_Encoding_Kind_To_Code, Invoker, Kind, Line,
2308 Locations, Name, Scope, Set_Invocation_Graph_Encoding,
2309 Signature, Spec_Placement, Target): New routine.
2310 * bindo.adb: Add with clause for Binde. Add with and use
2311 clauses for Debug. Update the documentation. Add new switches.
2312 (Find_Elaboration_Order): Dispatch to the proper elaboration
2313 mechanism.
2314 * bindo-augmentors.adb:
2315 Remove with and use clauses for GNAT and GNAT.Sets. Remove
2316 membership set VS. Update the parameter profiles of most
2317 routines to use better parameter names. Update the
2318 implementation of most routine to use the new parameter names.
2319 Remove various redundant assertions.
2320 * bindo-builders.adb: Use better names for instantiated data
2321 structures. Update all references to these names. Update the
2322 parameter profiles of most routines to use better parameter
2323 names. Update the implementation of most routine to use the new
2324 parameter names.
2325 (Build_Library_Graph): Update the parameter profile. Update the
2326 call to Create.
2327 (Create_Vertex): Reimplemented.
2328 (Declaration_Placement_Vertex): New routine.
2329 * bindo-builders.ads (Build_Library_Graph): Update the parameter
2330 profile and comment on usage.
2331 * bindo-diagnostics.adb: Almost a new unit.
2332 * bindo-diagnostics.ads: Add a use clause for
2333 Bindo.Graphs.Invocation_Graphs. Remove package
2334 Cycle_Diagnostics.
2335 (Diagnose_Circularities): New routine.
2336 * bindo-elaborators.adb: Remove the with and use clauses for
2337 Binderr and GNAT.Sets. Remove the use clause for
2338 Bindo.Diagnostics.Cycle_Diagnostics. Remove membership set VS.
2339 Update the parameter profiles of most routines to use better
2340 parameter names. Update the implementation of most routine to
2341 use the new parameter names. (Elaborate_Units_Common): Update
2342 the parameter profile. Pass an infication to the library graph
2343 builder whether the dynamic model is in effect.
2344 (Elaborate_Units_Dynamic, Elaborate_Units_Static): Use
2345 Diagnose_Circularities to provide diagnostics.
2346 (Update_Successor): Use routine In_Same_Component to determine
2347 whether the predecessor and successor reside in different
2348 components.
2349 * bindo-graphs.adb: Add with and use clauses for Butil, Debug,
2350 Output, and Bindo.Writers. Remove with and use clauses for
2351 GNAT.Lists. Update the parameter profiles of most routines to
2352 use better parameter names. Update the implementation of most
2353 routine to use the new parameter names. Remove various
2354 redundant assertions. Remove doubly linked list EL. Add new
2355 type Precedence_Kind.
2356 (Add_Cycle): New routine.
2357 (Add_Vertex): Update the parameter profile. Update the creation
2358 of vertex attributes.
2359 (Add_Vertex_And_Complement, Body_Vertex, Column,
2360 Complementary_Vertex, Copy_Cycle_Path, Cycle_Kind_Of): New
2361 routines.
2362 (Destroy_Invocation_Graph_Edge, Destroy_Library_Graph_Cycle,
2363 Destroy_Library_Graph_Edge, Extra, File_Name,
2364 Find_All_Cycles_Through_Vertex, Find_All_Cycles_With_Edge,
2365 Find_Cycles, Find_First_Lower_Precedence_Cycle,
2366 Get_LGC_Attributes, Has_Next, Hash_Library_Graph_Cycle,
2367 Hash_Library_Graph_Cycle_Attributes, Highest_Precedence_Cycle,
2368 Highest_Precedence_Edge, In_Same_Component, Insert_And_Sort,
2369 Invocation_Edge_Count, Invocation_Graph_Encoding,
2370 Is_Cycle_Initiating_Edge, Is_Cyclic_Edge,
2371 Is_Cyclic_Elaborate_All_Edge, Is_Cyclic_Elaborate_Body_Edge,
2372 Is_Cyclic_Elaborate_Edge, Is_Cyclic_Forced_Edge,
2373 Is_Cyclic_Invocation_Edge, Is_Cyclic_With_Edge,
2374 Is_Dynamically_Elaborated, Is_Elaborate_All_Edge,
2375 Is_Elaborate_Body_Edge, Is_Elaborate_Edge: New routines.
2376 (Is_Existing_Predecessor_Successor_Relation): Removed.
2377 (Is_Forced_Edge, Is_Invocation_Edge, Is_Recorded_Cycle,
2378 Is_Recorded_Edge, Is_With_Edge, Iterate_Edges_Of_Cycle, Kind,
2379 Length): New routine.
2380 (Lib_Vertex): Removed.
2381 (Line, Links_Vertices_In_Same_Component,
2382 Maximum_Invocation_Edge_Count, Next, Normalize_And_Add_Cycle,
2383 Normalize_Cycle_Path, Number_Of_Cycles, Path, Precedence,
2384 Remove_Vertex_And_Complement, Sequence_Next_Cycle): New routines.
2385 (Sequence_Next_IGE_Id): Renamed to Sequence_Next_Edge.
2386 (Sequence_Next_IGV_Id): Renamed to Sequence_Next_Vertex.
2387 (Sequence_Next_LGE_Id): Renamed to Sequence_Next_Edge.
2388 (Sequence_Next_LGV_Id): Renamed to Sequence_Next_Vertex.
2389 (Set_Is_Existing_Predecessor_Successor_Relation): Removed.
2390 (Set_Is_Recorded_Cycle, Set_Is_Recorded_Edge,
2391 Set_LGC_Attributes, Spec_Vertex, Trace_Cycle, Trace_Edge,
2392 Trace_Eol, Trace_Vertex): New routines.
2393 * bindo-graphs.ads: Add with and use clauses for Types and
2394 GNAT.Lists. Update the parameter profiles of most routines to
2395 use better parameter names. Update the implementation of most
2396 routine to use the new parameter names. Add the new
2397 instantiated data structures IGE_Lists, IGV_Sets, LGC_Lists,
2398 LGE_Lists, LGE_Sets, LGV_Sets, and RC_Sets. Add new type
2399 Library_Graph_Cycle_Id along with an empty and initial value.
2400 Remove component Lib_Vertex and add new components Body_Vertex
2401 and Spec_Vertex to type Invocation_Graph_Vertex_Attributes. Add
2402 new type Library_Graph_Cycle_Kind. Add new iterators
2403 All_Cycle_Iterator and Edges_Of_Cycle_Iterator. Add new type
2404 Library_Graph_Cycle_Attributes. Add new components
2405 Cycle_Attributes, Cycles, and Dynamically_Elaborated to type
2406 Library_Graph_Attributes.
2407 (Body_Vertex, Column, Destroy_Invocation_Graph_Edge,
2408 Destroy_Library_Graph_Cycle_Attributes,
2409 Destroy_Library_Graph_Edge, Extra, File_Name, Find_Cycles,
2410 Has_Elaborate_All_Cycle, Has_Next, Hash_Library_Graph_Cycle,
2411 Hash_Library_Graph_Cycle_Attributes, Highest_Precedence_Cycle,
2412 In_Same_Component, Invocation_Edge_Count,
2413 Invocation_Graph_Encoding, Is_Dynamically_Elaborated,
2414 Is_Elaborate_All_Edge, Is_Elaborate_Body_Edge,
2415 Is_Elaborate_Edge, Is_Forced_Edge, Is_Invocation_Edge,
2416 Is_With_Edge, Iterate_All_Cycles, Iterate_Edges_Of_Cycle, Kind):
2417 New routines.
2418 (Length, Lib_Vertex, (Line, Next, Number_Of_Cycles, Present,
2419 Same_Library_Graph_Cycle_Attributes, Spec_Vertex): New routines.
2420 * bindo-units.adb (File_Name, Invocation_Graph_Encoding): New
2421 routines.
2422 * bindo-units.ads: Add new instantiated data structure
2423 Unit_Sets.
2424 (File_Name, Invocation_Graph_Encoding): New routine.
2425 * bindo-validators.adb: Remove with and use clauses for GNAT and
2426 GNAT.Sets. Remove membership set US. Update the parameter
2427 profiles of most routines to use better parameter names. Update
2428 the implementation of most routine to use the new parameter
2429 names.
2430 (Validate_Cycle, Validate_Cycle_Path, Validate_Cycles,
2431 Validate_Invocation_Graph_Vertex): Remove the validation of
2432 component Lib_Vertex. Add the validation of components
2433 Body_Vertex and Spec_Vertex.
2434 (Write_Error): New routine.
2435 * bindo-validators.ads (Validate_Cycles): New routine.
2436 * bindo-writers.adb: Update the parameter profiles of most
2437 routines to use better parameter names. Update the
2438 implementation of most routine to use the new parameter names.
2439 (Write_Cycle, Write_Cyclic_Edge, Write_Cycles): New routines.
2440 (Write_Invocation_Graph_Vertex): Remove the output of component
2441 Lib_Vertex. Add the output of components Body_Vertex and
2442 Spec_Vertex.
2443 * bindo-writers.ads (Write_Cycles): New routine.
2444 * debug.adb: Use binder switches -d_C and -d_P, add
2445 documentation on their usage.
2446 * gnatbind.adb: Remove with and use clauses for Binde. Delegate
2447 the choice of elaboration mechanism to Bindo.
2448 * lib-writ.adb (Column, Extra, Invoker, Kind, Line, Locations,
2449 Name, Placement, Scope, Signature, Target): Removed.
2450 (Write_Invocation_Graph): Moved at the top level.
2451 (Write_Invocation_Graph_Attributes): New routine.
2452 (Write_Invocation_Relation, Write_Invocation_Signature): Moved
2453 at the top level.
2454 * lib-writ.ads: Add a documentation section on invocation graph
2455 attributes.
2456 * sem_elab.adb (Body_Placement_Of): New routine.
2457 (Declare_Invocation_Construct): Update the call to
2458 Add_Invocation_Construct.
2459 (Declaration_Placement_Of_Node): New routine.
2460 (Get_Invocation_Attributes): Correct the retrieval of the
2461 enclosing subprogram where the postcondition procedure lives.
2462 (Placement_Of, Placement_Of_Node): Removed.
2463 (Record_Invocation_Graph): Record the encoding format used.
2464 (Record_Invocation_Graph_Encoding): New routine.
2465 (Record_Invocation_Relation): Update the call to
2466 Add_Invocation_Relation.
2467 (Spec_Placement_Of): Removed.
2468 * libgnat/g-lists.ads, libgnat/g-lists.adb (Equal): New routine.
2469
164597c5 24702019-07-05 Ed Schonberg <schonberg@adacore.com>
2471
2472 * checks.adb (Apply_Predicate_Check): Except within the
2473 subprogram body that defines the formal, do not apply predicate
2474 check on a formal IN parameter: such a check is redundant and
2475 its expansion can lead to out-of-scope references when it is
2476 originates in a function call in a precondition,
2477
572a4bc5 24782019-07-05 Yannick Moy <moy@adacore.com>
2479
2480 * sem_res.adb (Resolve_Call): Cannot inline in quantified
2481 expressions.
2482 * sem_util.adb, sem_util.ads (In_Quantified_Expression): New
2483 function.
2484
2c3ad474 24852019-07-05 Bob Duff <duff@adacore.com>
2486
2487 * doc/gnat_rm/standard_and_implementation_defined_restrictions.rst:
2488 Fix typo.
2489 * gnat_rm.texi: Regenerate.
2490
2f67af4c 24912019-07-05 Bob Duff <duff@adacore.com>
2492
2493 * exp_attr.adb (Input): Take the No_Stream_Optimizations
2494 restriction into account.
2495
1cb1fd0f 24962019-07-05 Claire Dross <dross@adacore.com>
2497
2498 * libgnat/a-cofove.ads, libgnat/a-cofove.adb: Definite formal
2499 vectors are now always bounded so that they do not need to be
2500 limited anymore.
2501
d2d09f3e 25022019-07-05 Dmitriy Anisimkov <anisimko@adacore.com>
2503
2504 * libgnat/g-traceb.ads, libgnat/g-traceb.adb (Call_Chain): New
2505 function.
2506
c5c4ce6c 25072019-07-04 James Clarke <jrtc27@debian.org>
14e0bfed 2508
2509 * libgnarl/s-osinte__kfreebsd-gnu.ads (clockid_t): Make type
2510 definition public.
2511 (CLOCK_REALTIME): Make value public.
2512
ecd07d3b 25132019-07-04 Javier Miranda <miranda@adacore.com>
2514
2515 * exp_tss.adb (Init_Proc): Adding missing support for access to
2516 subprograms and access to protected subprograms of non-default
2517 C++ constructors.
2518
e0ff1639 25192019-07-04 Eric Botcazou <ebotcazou@adacore.com>
2520
2521 * gnat1drv.adb (Adjust_Global_Switches): Use proper interface to
2522 set the validity settings in CodePeer mode.
2523 * par-load.adb (Load): Remove all code dealing with validity
2524 settings.
2525 * validsw.ads (Validity_Check_Copies): Alphabetize.
2526 * validsw.adb (Reset_Validity_Check_Options): Set all options to
2527 off.
2528 (Save_Validity_Check_Options): Save all options.
2529
40bff3a0 25302019-07-04 Hristian Kirtchev <kirtchev@adacore.com>
2531
2532 * exp_ch3.adb, exp_ch4.adb, exp_ch4.ads, exp_ch5.adb,
2533 exp_ch7.adb, exp_ch9.adb, exp_ch11.adb, exp_unst.adb,
2534 rtsfind.ads, sem_attr.adb, sem_ch10.adb, sem_ch12.adb,
2535 sem_ch13.adb, sem_dim.adb, sem_disp.adb, xref_lib.adb: Minor
2536 reformatting.
2537
0ebaade4 25382019-07-04 Joffrey Huguet <huguet@adacore.com>
2539
2540 * libgnarl/a-taside.ads: Add assertion policy to ignore
2541 preconditions.
2542 (Abort_Task, Is_Terminated, Is_Callable): Add preconditions.
2543
f14a590b 25442019-07-04 Eric Botcazou <ebotcazou@adacore.com>
2545
2546 * doc/gnat_rm/implementation_defined_pragmas.rst: Fix
2547 capitalization and parenthesis glitches.
2548 * gnat_rm.texi: Regenerate.
2549
f5388f99 25502019-07-04 Ed Schonberg <schonberg@adacore.com>
2551
2552 * sem_ch10.adb (Remove_Context_Clauses): Handle properly the
2553 removal of a limited_with_clause which appears in the library
2554 unit oF the main unit, when some other unit in the context has a
2555 regular with_clause on the same unit, to prevent spurious
2556 visibility errors in the subsequent analysis of pending instance
2557 bodies.
2558
c930bc82 25592019-07-04 Hristian Kirtchev <kirtchev@adacore.com>
2560
2561 * sem_elab.adb: Add new type Elaboration_Phase_Status along with
2562 a global to keep track of the elaboration phase status.
2563 Initialize all internal data structures to Nil for services
2564 Elaborated_Units, Internal_Representation, and Scenario_Storage.
2565 (Build_Call_Marker): Do not create a call marker when the
2566 elaboration phase is not active.
2567 (Build_Variable_Reference_Marker): Do not create a call marker
2568 when the elaboration phase is not active.
2569 (Check_Elaboration_Scenarios): Destroy all internal structures
2570 when the elaboration phase does not have to run. Do not execute
2571 when the elaboration phase is not active.
2572 (Elaboration_Phase_Active): New routine.
2573 (Finalize_All_Data_Structures): New routine.
2574 (Initialize): Initialize all internal data structures and signal
2575 that the elaboration phase has started.
2576 (Initialize_All_Data_Structures): New routine.
2577 (Initialize_Elaborated_Units): Initialize all internal data
2578 structures.
2579 (Initialize_Internal_Representation): Initialize all internal
2580 data structures.
2581 (Initialize_Scenario_Storage): Initialize all internal data
2582 structures.
2583 (Kill_Elaboration_Scenario): Do not execute when the elaboration
2584 phase is not active.
2585 (Set_Elaboration_Phase): New routine.
2586 (Update_Elaboration_Scenario): Do not execute when the
2587 elaboration phase is not active.
2588
39dec7f4 25892019-07-04 Gary Dismukes <dismukes@adacore.com>
2590
2591 * sem_ch6.adb (Analyze_Subprogram_Body_Helper): The special
2592 treatment of calling Mask_Unfrozen_Types must also be done in
2593 the case of an Ignored_Ghost_Entity, because Expander_Active is
2594 False in that case.
2595
92b004be 25962019-07-04 Yannick Moy <moy@adacore.com>
2597
2598 * sem_prag.adb (Check_Library_Level_Entity): Update for new rule
2599 on SPARK_Mode.
2600
12795e1c 26012019-07-04 Justin Squirek <squirek@adacore.com>
2602
2603 * sem_disp.adb (Check_Controlling_Formals): Obtain the full view
2604 before type comparison.
2605
63fe3141 26062019-07-04 Ed Schonberg <schonberg@adacore.com>
2607
2608 * exp_ch4.ads, exp_ch4.adb (Build_Eq_Call): New visible
2609 subprogram, extracted from Expand_Composite_Equality, to handle
2610 properly the composition of equality for variant record types.
2611 * exp_ch3.adb (MAke_Eq_If): Use Build_Eq_Call for each
2612 component, to handle properly the case of a component with a
2613 user-defined equality. Revert to predefined equality if the
2614 user-defined operation is abstract, to maintain compatibility
2615 with older versions,
2616
17fa952a 26172019-07-04 Justin Squirek <squirek@adacore.com>
2618
2619 * exp_ch3.adb (Build_Initialization_Call): Fixup
2620 *_skip_null_excluding_check argument to handle new default.
2621 (Init_Formals): Make *_skip_null_excluding_check formal default
2622 to False
2623 * exp_ch4.adb (Expand_N_Allocator): Add comment to note heavy
2624 code duplication
2625
cf32543d 26262019-07-04 Bob Duff <duff@adacore.com>
2627
2628 * sem_ch3.adb (Access_Definition): Do not create a master unless
2629 Tasking_Allowed. Otherwise, this fails on restricted runtimes.
2630
eb4dbf20 26312019-07-04 Hristian Kirtchev <kirtchev@adacore.com>
2632
2633 * sem_util.adb (Propagate_DIC_Attributes): Do not propagate the
2634 Default_Initial_Condition attributes to an incomplete type.
2635
25ddc6ba 26362019-07-04 Ed Schonberg <schonberg@adacore.com>
2637
2638 * sem_attr.adb (Check_Array_Type): An array type attribute such
2639 as 'First can be applied to an unconstrained array tyope when
2640 the attribute reference appears within an aspect specification
2641 and the prefix is a current instance, given that the prefix of
2642 the attribute will become a formal of the subprogram that
2643 implements the aspect (typically a predicate check).
2644
74a5962a 26452019-07-04 Piotr Trojanek <trojanek@adacore.com>
2646
2647 * sem_util.adb (Yields_Synchronized_Object): Fix typos in
2648 comments.
2649
c65d33a8 26502019-07-04 Yannick Moy <moy@adacore.com>
2651
2652 * sem_util.adb (Yields_Synchronized_Object): Adapt to new SPARK
2653 rule.
2654
afd77d39 26552019-07-04 Yannick Moy <moy@adacore.com>
2656
2657 * sem_spark.adb (Check_Statement): Only check permission of
2658 object in extended return when it is of a deep type.
2659
2281b807 26602019-07-04 Justin Squirek <squirek@adacore.com>
2661
2662 * sem_ch12.adb (Perform_Appropriate_Analysis): Added for
2663 selecting which type of analysis based on wheither the
2664 instantiation is a generic at the library-level. In which case
2665 expansion during analysis.
2666 (Preanalyze_Actuals): Modify calls to Analyze to use the new
2667 routine.
2668
542b3e26 26692019-07-04 Ed Schonberg <schonberg@adacore.com>
2670
2671 * exp_unst.adb: Handle conditional expressions.
2672
7754aad4 26732019-07-04 Yannick Moy <moy@adacore.com>
2674
2675 * sem_spark.adb (Check_Package_Spec, Check_Package_Body): Only
2676 analyze parts of the code marked in SPARK.
2677
3843c1bd 26782019-07-04 Hristian Kirtchev <kirtchev@adacore.com>
2679
2680 * erroutc.adb, exp_aggr.adb, inline.adb, opt.adb, sem_ch3.adb:
2681 Minor reformatting.
2682
5bc0f990 26832019-07-04 Yannick Moy <moy@adacore.com>
2684
2685 * sem_spark.adb (Explanation, Get_Expl): New functions to get
2686 the explanation for a permission mismatch.
2687 (Perm_Error, Perm_Mismatch, Perm_Error_Loop_Exit): Take
2688 explanation into account for issuing a more precise error
2689 message.
2690 (Set_Perm_Prefixes, Set_Perm_Extensions,
2691 Set_Perm_Extensions_Move): Pass suitable argument for the
2692 explanation node.
2693
11903e68 26942019-07-04 Arnaud Charlet <charlet@adacore.com>
2695
2696 * exp_aggr.adb (In_Place_Assign_OK): Moved to top level and add
2697 support for record aggregates.
2698 (Component_Check): Use Is_CCG_Supported_Aggregate instead of a
2699 similar local predicate.
2700 (Convert_To_Assignments): Take advantage of In_Place_Assign_OK
2701 predicate when possible.
2702 (Is_CCG_Supported_Aggregate): Return False for records with
2703 representation clauses and fix the logic for dealing with nested
2704 aggregates.
2705
b0c19ea3 27062019-07-04 Piotr Trojanek <trojanek@adacore.com>
2707
2708 * opt.adb (Set_Config_Switches): Keep assertions policy as
2709 enabled when analysing internal units in GNATprove mode.
2710
90f2b146 27112019-07-04 Arnaud Charlet <charlet@adacore.com>
2712
2713 * exp_ch4.adb (Expand_Short_Circuit_Operator): Strip
2714 N_Variable_Reference_Marker when checking for the presence of
2715 actions.
2716
39ecad34 27172019-07-04 Arnaud Charlet <charlet@adacore.com>
2718
2719 * exp_aggr.adb (Check_Component): Take into account type
2720 conversions.
2721
c0e899f1 27222019-07-04 Dmitriy Anisimkov <anisimko@adacore.com>
2723
2724 * doc/gnat_ugn/platform_specific_information.rst: Document
2725 Windows socket timeout particularity.
2726 * gnat_ugn.texi: Regenerate.
2727 * gsocket.h: Include versionhelpers.h.
2728 * socket.c (__gnat_minus_500ms): New function.
2729 * libgnat/g-sothco.ads (Minus_500ms_Windows_Timeout): New
2730 imported function.
2731 * libgnat/g-socket.adb (Set_Socket_Option): Refactor to remove
2732 500ms from the requested timeout only on old Windows version.
2733
363b1a8e 27342019-07-04 Thomas Quinot <quinot@adacore.com>
2735
2736 * get_scos.adb: Remove bogus, dead code.
2737
4ae0a9ce 27382019-07-04 Ed Schonberg <schonberg@adacore.com>
2739
2740 * sem_dim.adb (Analyze_Dimension_Array_Aggregate): If the
2741 component is an entity name, its dimensions are those of its
2742 type.
2743
d60fa3c9 27442019-07-03 Bob Duff <duff@adacore.com>
2745
2746 * doc/gnat_ugn/gnat_utility_programs.rst: Document new flags in
2747 GNATpp.
2748
877ad320 27492019-07-03 Hristian Kirtchev <kirtchev@adacore.com>
2750
2751 * binde.adb: Remove with clause for System.OS_Lib.
2752 (Force_Elab_Order): Refactor the majority of the code in Butil.
2753 Use the new forced units iterator to obtain unit names.
2754 * bindo-builders.adb: Add with and use clauses for Binderr,
2755 Butil, Opt, Output, Types, GNAT, and GNAT.Dynamic_HTables. Add
2756 a hash table which maps units to line number in the forced
2757 elaboration order file.
2758 (Add_Unit): New routine.
2759 (Build_Library_Graph): Create forced edges between pairs of
2760 units listed in the forced elaboration order file.
2761 (Create_Forced_Edge, Create_Forced_Edges, Destroy_Line_Number,
2762 Duplicate_Unit_Error, Hash_Unit, Internal_Unit_Info,
2763 Is_Duplicate_Unit, Missing_Unit_Info): New routines.
2764 * bindo-graphs.adb (Is_Internal_Unit, Is_Predefined_Unit):
2765 Refactor some of the behavior to Bindo-Units.
2766 * bindo-graphs.ads: Enable the enumeration literal for forced
2767 edges.
2768 * bindo-units.adb, bindo-units.ads (Is_Internal_Unit,
2769 Is_Predefined_Unit): New routines.
2770 * butil.adb: Add with and use clauses for Opt, GNAT, and
2771 System.OS_Lib. Add with clause for Unchecked_Deallocation.
2772 (Has_Next, Iterate_Forced_Units, Next, Parse_Next_Unit_Name,
2773 Read_Forced_Elab_Order_File): New routines.
2774 * butil.ads: Add with and use clauses for Types. Add new
2775 iterator over the units listed in the forced elaboration order
2776 file.
2777 (Has_Next, Iterate_Forced_Units, Next): New routine.
2778 * namet.adb, namet.ads (Present): New routine.
2779
01e6eb2f 27802019-07-03 Bob Duff <duff@adacore.com>
2781
2782 * sem_ch3.adb (Access_Definition): The code was creating a
2783 master in the case where the designated type is a class-wide
2784 interface type. Create a master in the noninterface case as
2785 well. That is, create a master for all limited class-wide types.
2786
9ad42832 27872019-07-03 Yannick Moy <moy@adacore.com>
2788
2789 * erroutc.adb (Sloc_In_Range): New function to determine whether
2790 the range of a pragma Warnings covers a location, taking
2791 instantiations into account.
2792
f2a8d64e 27932019-07-03 Johannes Kanig <kanig@adacore.com>
2794
2795 * osint.ads, osint.adb (Get_First_Main_File_Name): New routine
2796 to access the first file provided on the command line.
2797
d4f28933 27982019-07-03 Ed Schonberg <schonberg@adacore.com>
2799
2800 * inline.adb (Process_Formals_In_Aspects): New procedure within
2801 Expand_Inlined_Call, to perform a replacement of references to
2802 formals that appear in aspect specifications within the body
2803 being inlined.
2804
23e7fc9b 28052019-07-03 Justin Squirek <squirek@adacore.com>
2806
2807 * sem_ch8.adb (Analyze_Object_Renaming): Add call to search for
2808 the appropriate actual subtype of the object renaming being
2809 analyzed.
2810 (Check_Constrained_Object): Minor cleanup.
2811
f8e6d133 28122019-07-03 Yannick Moy <moy@adacore.com>
2813
2814 * sem_spark.adb (Get_Observed_Or_Borrowed_Expr): New function to
2815 return go through traversal function call.
2816 (Check_Type): Consistently use underlying type.
2817 (Get_Perm): Adapt for case of elaboration code where variables
2818 are not declared in the environment. Remove incorrect handling
2819 of borrow and observe.
2820
d044ba5c 28212019-07-03 Hristian Kirtchev <kirtchev@adacore.com>
2822
2823 * inline.adb (Build_Return_Object_Formal): New routine.
2824 (Can_Split_Unconstrained_Function): Code clean up.
2825 (Copy_Formals,Copy_Return_Object): New routines.
2826 (Split_Unconstrained_Function): Code clean up and refactoring.
2827
8699de72 28282019-07-03 Gary Dismukes <dismukes@adacore.com>
2829
2830 * bindo-augmentors.adb, bindo-augmentors.ads,
2831 bindo-builders.ads, bindo-elaborators.adb, sem_ch12.adb,
2832 sem_ch13.adb, sem_spark.adb, sinfo.ads: Minor editorial
2833 corrections and reformatting.
2834
2ccf6539 28352019-07-03 Bob Duff <duff@adacore.com>
2836
2837 * sem_warn.adb (Check_Infinite_Loop_Warning): Avoid the warning
2838 if an Iterator_Specification is present.
2839
17b5260d 28402019-07-03 Bob Duff <duff@adacore.com>
2841
2842 * doc/gnat_ugn/gnat_utility_programs.rst: Document default
2843 new-line behavior.
2844
5f71d12c 28452019-07-03 Hristian Kirtchev <kirtchev@adacore.com>
2846
2847 * ali.adb: Add with and use clauses for GNAT,
2848 GNAT.Dynamic_HTables, and Snames. Add a map from invocation
2849 signature records to invocation signature ids. Add various
2850 encodings of invocation-related attributes. Sort and update
2851 table Known_ALI_Lines.
2852 (Add_Invocation_Construct, Add_Invocation_Relation,
2853 Body_Placement_Kind_To_Code, Code_To_Body_Placement_Kind,
2854 Code_To_Invocation_Construct_Kind, Code_To_Invocation_Kind,
2855 Code_To_Invocation_Graph_Line_Kind, Destroy, Hash): New
2856 routines.
2857 (Initialize_ALI): Sort the initialization sequence. Add
2858 initialization for all invocation-related tables.
2859 (Invocation_Construct_Kind_To_Code,
2860 Invocation_Graph_Line_Kind_To_Code, Invocation_Kind_To_Code,
2861 Invocation_Signature_Of, Present): New routines.
2862 (Scan_ALI): Add the default values for invocation-related ids.
2863 Scan invocation graph lines.
2864 (Scan_Invocation_Graph_Line): New routine.
2865 * ali.ads: Add with clause for GNAT.Dynamic_Tables. Add types
2866 for invocation constructs, relations, and signatures. Add
2867 tables for invocation constructs, relations, and signatures.
2868 Update Unit_Record to capture invocation-related ids. Relocate
2869 table Unit_Id_Tables and subtypes Unit_Id_Table, Unit_Id_Array
2870 from Binde.
2871 (Add_Invocation_Construct, Add_Invocation_Relation,
2872 Body_Placement_Kind_To_Code, Code_To_Body_Placement_Kind,
2873 Code_To_Invocation_Construct_Kind, Code_To_Invocation_Kind,
2874 Code_To_Invocation_Graph_Line_Kind,
2875 Invocation_Construct_Kind_To_Code,
2876 Invocation_Graph_Line_Kind_To_Code, Invocation_Kind_To_Code,
2877 Invocation_Signature_Of, Present): New routines.
2878 * binde.adb: Add with and use clause for Types. Add use clause
2879 for ALI.Unit_Id_Tables;
2880 * binde.ads: Relocate table Unit_Id_Tables and subtypes
2881 Unit_Id_Table, Unit_Id_Array to ALI.
2882 * bindgen.adb: Remove with and use clause for ALI.
2883 * bindgen.ads: Remove with and use clause for Binde. Add with
2884 and use clause for ALI.
2885 * bindo.adb, bindo.ads, bindo-augmentors.adb,
2886 bindo-augmentors.ads, bindo-builders.adb, bindo-builders.ads,
2887 bindo-diagnostics.adb, bindo-diagnostics.ads,
2888 bindo-elaborators.adb, bindo-elaborators.ads, bindo-graphs.adb,
2889 bindo-graphs.ads, bindo-units.adb, bindo-units.ads,
2890 bindo-validators.adb, bindo-validators.ads, bindo-writers.adb,
2891 bindo-writers.ads: New units.
2892 * debug.adb: Use and describe GNAT debug switches -gnatd_F and
2893 -gnatd_G. Add GNATbind debug switches in the ranges dA .. dZ,
2894 d.a .. d.z, d.A .. d.Z, d.1 .. d.9, d_a .. d_z, d_A .. d_Z, and
2895 d_1 .. d_9. Use and describe GNATbind debug switches -d_A,
2896 -d_I, -d_L, -d_N, -d_O, -d_T, and -d_V.
2897 * exp_util.adb, exp_util.ads (Exceptions_OK): Relocate to
2898 Sem_Util.
2899 * gnatbind.adb: Add with and use clause for Bindo. Use the new
2900 Bindo elaboration order only when -d_N is in effect.
2901 * lib-writ.adb
2902 (Column, Extra, Invoker, Kind, Line, Locations, Name, Placement,
2903 Scope, Signature, Target): New routines.
2904 (Write_ALI): Output all invocation-related data.
2905 (Write_Invocation_Graph): New routine.
2906 * lib-writ.ads: Document the invocation graph ALI line.
2907 * namet.adb, namet.ads (Present): New routines.
2908 * sem_ch8.adb (Find_Direct_Name): Capture the status of
2909 elaboration checks and warnings of an identifier.
2910 (Find_Expanded_Name): Capture the status of elaboration checks
2911 and warnings of an expanded name.
2912 * sem_ch12.adb (Analyze_Generic_Package_Declaration): Ensure
2913 that invocation graph-related data within the body of the main
2914 unit is encoded in the ALI file.
2915 (Analyze_Generic_Subprogram_Declaration): Ensure that invocation
2916 graph-related data within the body of the main unit is encoded
2917 in the ALI file.
2918 (Analyze_Package_Instantiation): Perform minimal decoration of
2919 the instance entity.
2920 (Analyze_Subprogram_Instantiation): Perform minimal decoration
2921 of the instance entity.
2922 * sem_elab.adb: Perform heavy refactoring of all code. The unit
2923 is now split into "services" which specialize in one area of ABE
2924 checks. Add processing in order to capture invocation-graph
2925 related attributes of the main unit, and encode them in the ALI
2926 file. The Processing phase can now operate in multiple modes,
2927 all described by type Processing_Kind. Scenarios and targets
2928 are now distinct at the higher level, and carry their own
2929 representations. This eliminates the need to constantly
2930 recompute their attributes, and offers the various processors a
2931 uniform interface. The various initial states of the Processing
2932 phase are now encoded using type Processing_In_State, and
2933 xxx_State constants.
2934 * sem_elab.ads: Update the literals of type
2935 Enclosing_Level_Kind. Add Inline pragmas on several routines.
2936 * sem_prag.adb (Process_Inline): Ensure that invocation
2937 graph-related data within the body of the main unit is encoded
2938 in the ALI file.
2939 * sem_util.adb (Enclosing_Generic_Body, Enclosing_Generic_Unit):
2940 Code clean up.
2941 (Exceptions_OK): Relocated from Sem_Util.
2942 (Mark_Save_Invocation_Graph_Of_Body): New routine.
2943 * sem_util.ads (Exceptions_OK): Relocated from Sem_Util.
2944 (Mark_Save_Invocation_Graph_Of_Body): New routine.
2945 * sinfo.adb (Is_Elaboration_Checks_OK_Node): Now applicable to
2946 N_Variable_Reference_Marker.
2947 (Is_Elaboration_Warnings_OK_Node): Now applicable to
2948 N_Expanded_Name, N_Identifier, N_Variable_Reference_Marker.
2949 (Is_Read): Use Flag4.
2950 (Is_SPARK_Mode_On_Node): New applicable to
2951 N_Variable_Reference_Marker.
2952 (Is_Write): Use Flag5.
2953 (Save_Invocation_Graph_Of_Body): New routine.
2954 (Set_Is_Elaboration_Checks_OK_Node): Now applicable to
2955 N_Variable_Reference_Marker.
2956 (Set_Is_Elaboration_Warnings_OK_Node): Now applicable to
2957 N_Expanded_Name, N_Identifier, N_Variable_Reference_Marker.
2958 (Set_Is_SPARK_Mode_On_Node): New applicable to
2959 N_Variable_Reference_Marker.
2960 (Set_Save_Invocation_Graph_Of_Body): New routine.
2961 * sinfo.ads: Update the documentation of attributes
2962 Is_Elaboration_Checks_OK_Node, Is_Elaboration_Warnings_OK_Node,
2963 Is_SPARK_Mode_On_Node. Update the flag usage of attributes
2964 Is_Read, Is_Write. Add attribute Save_Invocation_Graph_Of_Body
2965 and update its occurrence in nodes.
2966 (Save_Invocation_Graph_Of_Body): New routine along with pragma
2967 Inline.
2968 (Set_Save_Invocation_Graph_Of_Body): New routine along with
2969 pragma Inline.
2970 * switch-b.adb (Scan_Binder_Switches): Refactor the scanning of
2971 debug switches.
2972 (Scan_Debug_Switches): New routine.
2973 * libgnat/g-dynhta.adb, libgnat/g-dynhta.ads (Contains): New routine.
2974 * libgnat/g-graphs.adb (Associate_Vertices): Update the use of
2975 Component_Vertex_Iterator.
2976 (Contains_Component, Contains_Edge, Contains_Vertex, Has_Next):
2977 Reimplemented.
2978 (Iterate_Component_Vertices): New routine.
2979 (Iterate_Vertices): Removed.
2980 (Next): Update the parameter profile.
2981 (Number_Of_Component_Vertices, Number_Of_Outgoing_Edges): New
2982 routines.
2983 * libgnat/g-graphs.ads: Update the initialization of
2984 No_Component. Add type Component_Vertex_Iterator. Remove type
2985 Vertex_Iterator.
2986 (Has_Next): Add new versions and remove old ones.
2987 (Iterate_Component_Vertices): New routine.
2988 (Iterate_Vertices): Removed.
2989 (Next): Add new versions and remove old ones.
2990 (Number_Of_Component_Vertices, Number_Of_Outgoing_Edges): New
2991 routines.
2992 * libgnat/g-sets.adb (Contains): Reimplemented.
2993 * gcc-interface/Make-lang.in (GNATBIND_OBJS): Add
2994 GNAT.Dynamic_HTables, GNAT.Graphs and Bindo units.
2995 * rtsfind.ads: Remove extra space.
2996
df177848 29972019-07-03 Yannick Moy <moy@adacore.com>
2998
2999 * sem_spark.adb: Add support for locally borrowing and observing
3000 a path.
3001 (Get_Root_Object): Add parameter Through_Traversal to denote
3002 when we are interesting in getting to the traversed parameter.
3003 (Is_Prefix_Or_Almost): New function to support detection of
3004 illegal access to borrowed or observed paths.
3005 (Check_Pragma): Add analysis of assertion pragmas.
3006
f3f142ac 30072019-07-03 Ed Schonberg <schonberg@adacore.com>
3008
3009 * sem_ch13.adb (Build_Predicate_Functions): In a generic context
3010 we do not build the bodies of predicate fuctions, but the
3011 expression in a static predicate must be elaborated to allow
3012 case coverage checking within the generic unit.
3013 (Build_Discrete_Static_Predicate): In a generic context, return
3014 without building function body once the
3015 Static_Discrete_Predicate expression for the type has been
3016 constructed.
3017
99d90c85 30182019-07-03 Hristian Kirtchev <kirtchev@adacore.com>
3019
3020 * bindgen.adb, inline.adb, layout.adb, sem_ch12.adb,
3021 sem_ch13.adb, sem_ch7.adb, styleg.adb: Minor reformatting.
3022
800597f6 30232019-07-03 Bob Duff <duff@adacore.com>
3024
3025 * par-ch3.adb (P_Defining_Identifier): Call
3026 Check_Defining_Identifier_Casing.
3027 * style.ads, styleg.ads, styleg.adb
3028 (Check_Defining_Identifier_Casing): New procedure to check for
3029 mixed-case defining identifiers.
3030 * stylesw.ads, stylesw.adb (Style_Check_Mixed_Case_Decls): New
3031 flag for checking for mixed-case defining identifiers.
3032 * doc/gnat_ugn/building_executable_programs_with_gnat.rst:
3033 Document new feature.
3034 * gnat_ugn.texi: Regenerate.
3035
2c75027a 30362019-07-03 Eric Botcazou <ebotcazou@adacore.com>
3037
3038 * doc/gnat_ugn/building_executable_programs_with_gnat.rst
3039 (Warning message control): Document that -gnatw.z/Z apply to
3040 array types.
3041 * freeze.adb (Freeze_Entity): Give -gnatw.z warning for array
3042 types as well, but not if the specified alignment is the minimum
3043 one.
3044 * gnat_ugn.texi: Regenerate.
3045
08237d0d 30462019-07-03 Bob Duff <duff@adacore.com>
3047
3048 * einfo.ads, exp_util.adb, layout.ads, sinfo.ads: Spell "laid"
3049 correctly.
3050
0396441f 30512019-07-03 Ed Schonberg <schonberg@adacore.com>
3052
3053 * sem_ch13.adb (Analyze_Attribute_Definition_Clause): No error
3054 message on attribute applied to a renaming when the renamed
3055 object is an aggregate (from code reading).
3056 (Check_Aspect_At_End_Of_Declarations): In a generic context
3057 where freeze nodes are not generated, the original expression
3058 for an aspect may need to be analyzed to precent spurious
3059 conformance errors when compared with the expression that is
3060 anakyzed at the end of the current declarative list.
3061
c8406f30 30622019-07-03 Eric Botcazou <ebotcazou@adacore.com>
3063
3064 * layout.adb (Layout_Type): Do not set the component size of an
3065 array with a scalar component if the component type is
3066 overaligned.
3067
c38b32ea 30682019-07-03 Ed Schonberg <schonberg@adacore.com>
3069
c5c4ce6c 3070 * inline.adb (Make_Loop_Labels_Unique): New procedure to modify
c38b32ea 3071 the source code of subprograms that are inlined by the
3072 front-end, to prevent accidental duplication between loop labels
3073 in the inlined code and the code surrounding the inlined call.
3074
6d6f134e 30752019-07-03 Hristian Kirtchev <kirtchev@adacore.com>
3076
3077 * doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Update
3078 the section on resolving elaboration circularities to eliminate
3079 certain combinations of switches which together do not produce
3080 the desired effect and confuse users.
3081 * gnat_ugn.texi: Regenerate.
3082
f3e16ef4 30832019-07-03 Arnaud Charlet <charlet@adacore.com>
3084
3085 * bindgen.adb (Gen_Main): Disable generation of reference to
3086 Ada_Main_Program_Name for CCG.
3087 * bindusg.adb (Display): Add -G to the command-line usage for
3088 gnatbind.
3089 * opt.ads (Generate_C_Code): Update comment.
3090 * switch-b.adb (Scan_Binder_Switches): Add handling for -G.
3091
f4a31b16 30922019-07-03 Arnaud Charlet <charlet@adacore.com>
3093
3094 * sem_ch7.adb (Has_Referencer): Do not consider inlined
3095 subprograms when generating C code, which allows us to generate
3096 static inline subprograms.
3097
2f65e9f7 30982019-07-03 Justin Squirek <squirek@adacore.com>
3099
3100 * sem_ch6.adb (Check_Conformance): Add expression checking for
3101 constant modifiers in anonymous access types (in addition to
3102 "non-null" types) so that they are considered "matching" for
3103 subsequent conformance tests.
3104
c336ed70 31052019-07-03 Arnaud Charlet <charlet@adacore.com>
3106
3107 * doc/gnat_rm/standard_and_implementation_defined_restrictions.rst:
3108 Clarify wording on No_Multiple_Elaboration.
3109 * gnat_rm.texi: Regenerate.
3110
78611c86 31112019-07-03 Ed Schonberg <schonberg@adacore.com>
3112
3113 * sem_ch8.adb (Find_Selected_Component): If the prefix is the
3114 current instance of a type or subtype, complete the resolution
3115 of the name by finding the component of the type denoted by the
3116 selector name.
3117
5a87a4d9 31182019-07-03 Eric Botcazou <ebotcazou@adacore.com>
3119
3120 * doc/gnat_rm/interfacing_to_other_languages.rst (Interfacing to C):
3121 Document that boolean types with convention C now map to C99 bool.
3122 * gnat_rm.texi: Regenerate.
3123
371c539c 31242019-07-03 Javier Miranda <miranda@adacore.com>
3125
3126 * exp_attr.adb (Expand_Min_Max_Attribute): Code cleanup:
3127 removing code that it is now never executed in the CCG compiler
3128 (dead code).
3129
89d2d652 31302019-07-02 Iain Sandoe <iain@sandoe.co.uk>
3131
3132 * libgnat/system-darwin-ppc.ads: Set Stack_Check_Probes True for
3133 PPC Darwin.
3134
d21e66fb 31352019-07-01 Ed Schonberg <schonberg@adacore.com>
3136
3137 * sem_ch12.adb (Is_Defaulted): New predicate in
3138 Check_Formal_Package_Intance, to skip the conformance of checks
3139 on parameters of a formal package that are defaulted,
3140
7a42b778 31412019-07-01 Hristian Kirtchev <kirtchev@adacore.com>
3142
3143 * checks.adb, exp_ch9.adb, exp_unst.adb, sem_ch4.adb,
3144 sem_prag.adb, sem_spark.adb: Minor reformatting.
3145
fc8ae496 31462019-07-01 Ed Schonberg <schonberg@adacore.com>
3147
3148 * sem_attr.adb (Analyze_Attribute, case Enum_Rep): Allow prefix
3149 of attribute to be an attribute reference of a discrete type.
3150
9d27ea41 31512019-07-01 Eric Botcazou <ebotcazou@adacore.com>
3152
3153 * sem_ch12.adb (Analyze_Subprogram_Instantiation): Move up
3154 handling of Has_Pragma_Inline_Always and deal with
3155 Has_Pragma_No_Inline.
3156
bcb8dcf3 31572019-07-01 Ed Schonberg <schonberg@adacore.com>
3158
3159 * sem_ch3.adb (Build_Derived_Record_Type): If the parent type is
3160 declared as a subtype of a private type with an inherited
3161 discriminant constraint, its generated full base appears as a
3162 record subtype, so we need to retrieve its oen base type so that
3163 the inherited constraint can be applied to it.
3164
d087b9ca 31652019-07-01 Yannick Moy <moy@adacore.com>
3166
3167 * sem_spark.adb: Completely rework the algorithm for ownership
3168 checking, as the rules in SPARK RM have changed a lot.
3169 * sem_spark.ads: Update comments.
3170
fe48ee0a 31712019-07-01 Dmitriy Anisimkov <anisimko@adacore.com>
3172
3173 * gsocket.h (Has_Sockaddr_Len): Use the offset of sin_family offset in
3174 the sockaddr_in structure to determine the existence of length field
3175 before the sin_family.
3176
b20f7e2c 31772019-07-01 Ed Schonberg <schonberg@adacore.com>
3178
3179 * sem_prag.adb (Analyze_Pragma, case Weak_External): Pragma only
3180 applies to entities with run-time addresses, not to types.
3181
374fdf94 31822019-07-01 Piotr Trojanek <trojanek@adacore.com>
3183
3184 * einfo.adb, sem_ch7.adb, sem_prag.adb, sem_util.adb: Update
3185 references to the SPARK RM after the removal of Rule 7.1.4(5).
3186
bf13a79d 31872019-07-01 Piotr Trojanek <trojanek@adacore.com>
3188
3189 * sysdep.c: Cleanup references to LynuxWorks in docs and
3190 comments.
3191
866fa2d0 31922019-07-01 Ed Schonberg <schonberg@adacore.com>
3193
3194 * checks.adb (Insert_Valid_Check): Do not apply validity check
3195 to variable declared within a protected object that uses the
3196 Lock_Free implementation, to prevent unwarranted constant
3197 folding, because entities within such an object msut be treated
3198 as volatile.
3199
bcb5ab83 32002019-07-01 Eric Botcazou <ebotcazou@adacore.com>
3201
3202 * exp_ch9.adb (Check_Inlining): Deal with Has_Pragma_No_Inline.
3203
2db33bd6 32042019-07-01 Ed Schonberg <schonberg@adacore.com>
3205
3206 * exp_unst.adb (Visit_Node, Check_Static_Type): Improve the
3207 handling of private and incomplete types whose full view is an
3208 access type, to detect additional uplevel references in dynamic
3209 bounds. This is relevant to N_Free_Statement among others that
3210 manipulate types whose full viww may be an access type.
3211
6b4f0b7d 32122019-07-01 Pat Rogers <rogers@adacore.com>
3213
3214 * doc/gnat_rm/representation_clauses_and_pragmas.rst: Correct
3215 size indicated for R as a component of an array.
3216 * gnat_rm.texi: Regenerate.
3217
cdee70d7 32182019-07-01 Justin Squirek <squirek@adacore.com>
3219
3220 * libgnat/s-win32.ads: Add definition for ULONG, modify
3221 OVERLAPPED type, and add appropriate pragmas.
3222
2cf822b7 32232019-07-01 Bob Duff <duff@adacore.com>
3224
3225 * gnat1drv.adb (gnat1drv): Call Write_ALI if the main unit is
3226 ignored-ghost.
3227
0a1ece97 32282019-07-01 Yannick Moy <moy@adacore.com>
3229
3230 * sem_ch4.adb (Operator_Check): Refine error message.
3231
ee4279ef 32322019-07-01 Piotr Trojanek <trojanek@adacore.com>
3233
3234 * libgnat/a-calend.ads: Revert "Global => null" contracts on
3235 non-pure routines.
3236
2c6b4ada 32372019-07-01 Piotr Trojanek <trojanek@adacore.com>
3238
3239 * exp_attr.adb, libgnat/g-graphs.ads: Fix typos in comments:
3240 componant -> component.
3241
175c4526 32422019-07-01 Hristian Kirtchev <kirtchev@adacore.com>
3243
3244 * libgnat/g-graphs.adb: Use type Directed_Graph rather than
3245 Instance in various routines.
3246 * libgnat/g-graphs.ads: Change type Instance to Directed_Graph.
3247 Update various routines that mention the type.
3248
a0d15509 32492019-07-01 Hristian Kirtchev <kirtchev@adacore.com>
3250
3251 * libgnat/g-sets.adb: Use type Membership_Set rathern than
3252 Instance in various routines.
3253 * libgnat/g-sets.ads: Change type Instance to Membership_Set.
3254 Update various routines that mention the type.
3255
205a23a3 32562019-07-01 Hristian Kirtchev <kirtchev@adacore.com>
3257
3258 * libgnat/g-lists.adb: Use type Doubly_Linked_List rather than
3259 Instance in various routines.
3260 * libgnat/g-lists.ads: Change type Instance to
3261 Doubly_Linked_List. Update various routines that mention the
3262 type.
3263
17fdf8c2 32642019-07-01 Hristian Kirtchev <kirtchev@adacore.com>
3265
3266 * libgnat/g-dynhta.adb: Use type Dynamic_Hash_Table rather than
3267 Instance in various routines.
3268 * libgnat/g-dynhta.ads: Change type Instance to
3269 Dynamic_Hash_Table. Update various routines that mention the
3270 type.
3271
216ffc64 32722019-07-01 Hristian Kirtchev <kirtchev@adacore.com>
3273
3274 * exp_attr.adb, exp_ch7.adb, exp_unst.adb, sem_ch3.adb,
3275 sem_util.adb, uintp.adb, uintp.ads: Minor reformatting.
3276
5051fe35 32772019-07-01 Javier Miranda <miranda@adacore.com>
3278
3279 * exp_attr.adb (Expand_Min_Max_Attribute): Disable expansion of
3280 'Min/'Max on integer, enumeration, fixed point and floating
3281 point types since the CCG backend now provides in file
3282 standard.h routines to support it.
3283
830a2a71 32842019-07-01 Hristian Kirtchev <kirtchev@adacore.com>
3285
3286 * impunit.adb: Add GNAT.Graphs to list Non_Imp_File_Names_95.
3287 * Makefile.rtl, gcc-interface/Make-lang.in: Register unit
3288 GNAT.Graphs.
3289 * libgnat/g-dynhta.adb: Various minor cleanups (use Present
3290 rather than direct comparisons).
3291 (Delete): Reimplement to use Delete_Node.
3292 (Delete_Node): New routine.
3293 (Destroy_Bucket): Invoke the provided destructor.
3294 (Present): New routines.
3295 * libgnat/g-dynhta.ads: Add new generic formal Destroy_Value.
3296 Use better names for the components of iterators.
3297 * libgnat/g-graphs.adb, libgnat/g-graphs.ads: New unit.
3298 * libgnat/g-lists.adb: Various minor cleanups (use Present
3299 rather than direct comparisons).
3300 (Delete_Node): Invoke the provided destructor.
3301 (Present): New routine.
3302 * libgnat/g-lists.ads: Add new generic formal Destroy_Element.
3303 Use better names for the components of iterators.
3304 (Present): New routine.
3305 * libgnat/g-sets.adb, libgnat/g-sets.ads (Destroy, Preset,
3306 Reset): New routines.
3307
b0111d94 33082019-07-01 Dmitriy Anisimkov <anisimko@adacore.com>
3309
3310 * libgnat/g-sothco.adb (Get_Address): Fix the case when AF_INET6
3311 is not defined.
3312
7362896b 33132019-07-01 Ed Schonberg <schonberg@adacore.com>
3314
3315 * exp_attr.adb (Expand_Attribute_Reference, case Invalid_Value):
3316 Resolve result of call to Get_Simple_Init_Val, which may be a
3317 conversion of a literal.
3318
0dae8dc2 33192019-07-01 Hristian Kirtchev <kirtchev@adacore.com>
3320
3321 * freeze.adb (Freeze_Expression): Remove the horrible useless
3322 name hiding of N. Insert the freeze nodes generated by the
3323 expression prior to the expression when the nearest enclosing
3324 scope is transient.
3325
487da8ff 33262019-07-01 Pierre-Marie de Rodat <derodat@adacore.com>
3327
3328 * doc/gnat_ugn/building_executable_programs_with_gnat.rst: Fix
3329 formatting issues in the -gnatR section.
3330 * gnat_ugn.texi: Regenerate.
3331
1d79fa18 33322019-06-30 Iain Sandoe <iain@sandoe.co.uk>
3333
3334 * gnatlink.adb (Link_Step): Remove duplicate -static-libgcc switches.
3335 Push -shared-libgcc explicitly, when it is the target default (unless
3336 overidden by the static flag).
3337 When the user has put an instance of shared/static-libgcc do not push
3338 a duplicate of this.
3339
a850edcd 33402019-06-29 Eric Botcazou <ebotcazou@adacore.com>
3341
3342 * gcc-interface/decl.c (gnat_to_gnu_entity): Beep up comment on SAVED,
3343 and tweak comment on the assertion about the scopes of Itypes. Do not
3344 skip the regular processing for Itypes that are E_Record_Subtype with
3345 a Cloned_Subtype. Get the Cloned_Subtype for every E_Record_Subtype
3346 if the type is dummy and hasn't got its own freeze node.
3347 <E_Record_Subtype>: Save again the DECL of the Cloned_Subtype, if any.
3348 <E_Access_Subtype>: Save again the DECL of the equivalent type.
3349 (Gigi_Equivalent_Type) <E_Access_Subtype>: New case.
3350
b1e46fb1 33512019-06-29 Eric Botcazou <ebotcazou@adacore.com>
3352
3353 * gcc-interface/utils.c (unchecked_convert): Tweak comment. Only skip
3354 dereferences when padding to have the same size on both sides. Do it
3355 for destination types with self-referential size too.
3356
07e38949 33572019-06-29 Eric Botcazou <ebotcazou@adacore.com>
3358
3359 * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: If the
3360 type requires strict alignment, then set the RM size to the type size.
3361 Rework handling of alignment and sizes of tagged types in ASIS mode.
3362 (validate_size): Rename local variable and remove special handling for
3363 strict-alignment types.
3364 * gcc-interface/utils.c (finish_record_type): Constify local variables
3365 and use properly typed constants.
3366
f4409741 33672019-06-29 Eric Botcazou <ebotcazou@adacore.com>
3368
3369 * gcc-interface/decl.c (gnat_to_gnu_field): Rework error messages for
3370 fields requiring strict alignment, add explicit test on Storage_Unit
3371 for position and size, and mention type alignment for position.
3372
5882c515 33732019-06-29 Eric Botcazou <ebotcazou@adacore.com>
3374
3375 * gcc-interface/trans.c (mark_visited_r): Set TYPE_SIZES_GIMPLIFIED on
3376 the main variant of a type, if any.
3377
d0de0a27 33782019-06-29 Eric Botcazou <ebotcazou@adacore.com>
3379
3380 * gcc-interface/decl.c (set_nonaliased_component_on_array_type): Add
3381 missing guard for the presence of TYPE_CANONICAL.
3382 (set_reverse_storage_order_on_array_type): Likewise.
3383
2074c859 33842019-06-29 Eric Botcazou <ebotcazou@adacore.com>
3385
3386 * gcc-interface/gigi.h (make_packable_type): Remove default value.
3387 (value_factor_p): Tweak prototype.
3388 * gcc-interface/decl.c (gnat_to_gnu_entity): Add comment.
3389 (gnat_to_gnu_component_type): Likewise.
3390 (gnat_to_gnu_field): Likewise. Fetch the position of the field earlier
3391 and simplify the condition under which the type is packed. Declare
3392 local variable is_bitfield. Pass 1 as max_align to make_packable_type
3393 if it is set to true.
3394 (copy_and_substitute_in_layout): Pass 0 to make_packable_type.
3395 * gcc-interface/utils.c (make_packable_array_type): New function.
3396 (make_packable_type): Use it to rewrite the type of array field.
3397 (maybe_pad_type): Pass align parameter to make_packable_type.
3398 (create_field_decl): Minor tweaks.
3399 (value_factor_p): Assert that FACTOR is a power of 2 and replace the
3400 modulo computation by a masking operation.
3401
83c6da22 34022019-06-25 Eric Botcazou <ebotcazou@adacore.com>
3403
3404 * gcc-interface/decl.c (gnat_to_gnu_entity): Remove superfluous test
3405 in previous change.
3406 * gcc-interface/gigi.h (maybe_character_type): Fix formatting.
3407 (maybe_character_value): Likewise.
3408
aaabc7bc 34092019-06-24 Jan Hubicka <jh@suse.cz>
3410
3411 * gcc-interface/decl.c (gnat_to_gnu_entity): Check that
3412 type is array or integer prior checking string flag.
83c6da22 3413 * gcc-interface/gigi.h (maybe_character_type): Likewise.
3414 (maybe_character_value): Likewise.
aaabc7bc 3415
5fe09a56 34162019-06-24 Martin Sebor <msebor@redhat.com>
3417
3418 * gcc-interface/utils.c (handle_nonnull_attribute): Quote attribute
3419 name.
3420
bd9331d6 34212019-06-18 Arnaud Charlet <charlet@adacore.com>
3422
83c6da22 3423 PR ada/80590
bd9331d6 3424 * sem_ch5.adb (Analyze_Loop_Statement): Avoid exception propagation
3425 during normal processing.
3426
8a5a7d1c 34272019-06-17 Arnaud Charlet <charlet@adacore.com>
3428
83c6da22 3429 PR ada/80590
8a5a7d1c 3430 * exp_ch9.adb (Expand_N_Delay_Relative_Statement): Swap the two
3431 conditions to avoid a unnecessary exception propagation in the default
3432 case.
3433
580934f6 34342019-05-28 Eric Botcazou <ebotcazou@adacore.com>
3435
3436 * gcc-interface/utils.c (handle_stack_protect_attribute): Move around.
3437
c8956236 34382019-05-28 Eric Botcazou <ebotcazou@adacore.com>
3439
3440 * doc/gnat_rm/implementation_defined_pragmas.rst (Machine_Attribute):
3441 Document additional optional parameters.
3442 * sem_prag.adb (Analyze_Pragma) <Pragma_Machine_Attribute>: Accept
3443 more than one optional parameter.
3444 * gcc-interface/decl.c (prepend_one_attribute_pragma): Alphabetize
3445 the list of supported pragmas. Simplify the handling of parameters
3446 and add support for more than one optional parameter.
3447 * gcc-interface/utils.c (attr_cold_hot_exclusions): New constant.
3448 (gnat_internal_attribute_table): Add entry for no_icf, noipa, flatten,
3449 used, cold, hot, target and target_clones.
3450 (begin_subprog_body): Do not create the RTL for the subprogram here.
3451 (handle_noicf_attribute): New static function.
3452 (handle_noipa_attribute): Likewise.
3453 (handle_flatten_attribute): Likewise.
3454 (handle_used_attribute): Likewise.
3455 (handle_cold_attribute): Likewise.
3456 (handle_hot_attribute): Likewise.
3457 (handle_target_attribute): Likewise.
3458 (handle_target_clones_attribute): Likewise.
3459
62b762c2 34602019-05-28 Eric Botcazou <ebotcazou@adacore.com>
3461
3462 * gcc-interface/trans.c (lvalue_required_for_attribute_p): Return 0
3463 for 'Size too.
3464 (Identifier_to_gnu): Use the actual subtype for a reference to a
3465 packed array in a return statement.
3466 (Attribute_to_gnu) <Attr_Size>: Do not strip VIEW_CONVERT_EXPRs from
3467 the prefix in every case.
3468
336a61a3 34692019-05-28 Eric Botcazou <ebotcazou@adacore.com>
3470
3471 * gcc-interface/trans.c (gnat_to_gnu): Remove superfluous tests on
3472 Backend_Overflow_Checks_On_Target and rework comments.
3473
983c5b5e 34742019-05-28 Eric Botcazou <ebotcazou@adacore.com>
3475
3476 * gcc-interface/trans.c (walk_nesting_tree): New static function.
3477 (finalize_nrv): Use it to walk the entire nesting tree.
3478
96b4b84e 34792019-05-28 Eric Botcazou <ebotcazou@adacore.com>
3480
3481 * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Subtype>: Remove
3482 obsolete test on Is_For_Access_Subtype.
3483
0b74284e 34842019-05-28 Eric Botcazou <ebotcazou@adacore.com>
3485
3486 * gcc-interface/decl.c (components_to_record): Set a name on the type
3487 created for the REP part, if any.
3488 * gcc-interface/utils.c (finish_record_type): Only take the maximum
3489 when merging sizes for a variant part at offset 0.
3490 (merge_sizes): Rename has_rep parameter into max.
3491
689dab9d 34922019-05-28 Eric Botcazou <ebotcazou@adacore.com>
3493
3494 * gcc-interface/utils.c (gnat_internal_attribute_table): Add support
3495 for stack_protect attribute.
3496 (handle_stack_protect_attribute): New static function.
3497
804f7d39 34982019-05-28 Eric Botcazou <ebotcazou@adacore.com>
3499
3500 * gcc-interface/decl.c (intrin_arglists_compatible_p): Do not return
3501 false if the internal builtin uses a variable list.
3502
f07f94cc 35032019-05-27 Eric Botcazou <ebotcazou@adacore.com>
3504
3505 * gcc-interface/trans.c (Call_to_gnu): Do not initialize the temporary
3506 created out of addressability concerns if it's for the _Init parameter
3507 of an initialization procedure.
3508
abfd658b 35092019-05-27 Eric Botcazou <ebotcazou@adacore.com>
3510
3511 * gcc-interface/ada-builtin-types.def: New file.
3512 * gcc-interface/ada-builtins.def: Likewise.
3513 * gcc-interface/ada-tree.h (BUILT_IN_LIKELY): New macro.
3514 (BUILT_IN_UNLIKELY): Likewise.
3515 * gcc-interface/trans.c (independent_iterations_p): Initialize the
3516 auto-vector to 16 elements.
3517 (Call_to_gnu): Remove local variable and change the vector of actual
3518 parameters to an auto-vector. Do not convert actual parameters to
3519 the argument type for front-end built-in functions. Add support for
3520 front-end built-in functions.
3521 (build_noreturn_cond): Use internal instead of built-in function.
3522 * gcc-interface/utils.c (c_builtin_type): Include ada-builtin-types.def
3523 (install_builtin_function_types): Likewise.
3524 (install_builtin_functions): Include ada-builtins.def first.
3525
caab73a2 35262019-05-27 Eric Botcazou <ebotcazou@adacore.com>
3527
3528 * gcc-interface/utils.c (maybe_pad_type): Issue the warning for the
3529 specific case of component types preferably.
3530
f1ca2388 35312019-05-27 Eric Botcazou <ebotcazou@adacore.com>
3532
3533 * gcc-interface/trans.c (Identifier_to_gnu): Minor tweaks.
3534 (gnat_to_gnu): Do not convert the result if it is a reference to an
3535 unconstrained array used as the prefix of an attribute reference that
3536 requires an lvalue.
3537
e3f3573c 35382019-05-27 Eric Botcazou <ebotcazou@adacore.com>
3539
3540 * gcc-interface/trans.c (Gigi_Types_Compatible): New predicate.
3541 (Identifier_to_gnu): Use it to assert that the type of the identifier
3542 and that of its entity are compatible for gigi. Rename a couple of
3543 local variables and separate the processing of the result type.
3544
2306cd17 35452019-05-27 Eric Botcazou <ebotcazou@adacore.com>
3546
3547 * gcc-interface/trans.c (Call_to_gnu): Use the unpadded type when
3548 putting back an intermediate conversion the type of the actuals.
3549
6e4e9378 35502019-05-27 Eric Botcazou <ebotcazou@adacore.com>
3551
3552 * gcc-interface/trans.c (gnat_to_gnu) <Shift operations>: Convert the
3553 count to the unsigned version of its base type before proceeding.
3554
85b9be9b 35552019-05-16 Martin Sebor <msebor@redhat.com>
3556
3d6be0d5 3557 * gcc-interface/trans.c (check_inlining_for_nested_subprog): Quote
3558 reserved names.
85b9be9b 3559
65d973ca 35602019-05-08 Arnaud Charlet <charlet@adacore.com>
3561
3562 * standard.ads.h: New file.
3563
ff628b99 35642019-05-07 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
3565
3566 * gcc-interface/Makefile.in (install-gcc-specs): Use foreach.
3567 Honor DESTDIR.
3568
ebd761d4 35692019-04-29 Michael K. Darling <darlingm@gmail.com>
3570
3571 * gnatvsn.ads: Bump Library_Version to 10.
3572
5f260823 35732019-04-24 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
3574 Bernd Edlinger <bernd.edlinger@hotmail.de>
3575 Jakub Jelinek <jakub@redhat.com>
3576
3577 PR target/89093
3578 * raise-gcc.c (TARGET_ATTRIBUTE): Define.
3579 (continue_unwind, personality_body, PERSONALITY_FUNCTION): Add
3580 TARGET_ATTRIBUTE.
3581
d7ca95c0 35822019-04-07 Eric Botcazou <ebotcazou@adacore.com>
3583
3584 * libgnat/i-cexten.ads (CFloat_128): New type.
3585
26b21081 35862019-03-22 Dmitriy Anisimkov <anisimko@adacore.com>
3587
3588 PR ada/89583
3589 * libgnat/g-socket.adb (Bind_Socket, Connect_Socket,
3590 Send_Socket): Fix the computation of structure lengths passed to
3591 low level routines.
3592 (Is_IPv6_Address): Fix the number of expected colons.
3593
2f6d557f 35942019-03-11 Martin Liska <mliska@suse.cz>
3595
d325ee67 3596 * gcc-interface/misc.c (gnat_post_options): Wrap option name in string
3597 format message and fix GNU coding style.
2f6d557f 3598
c1ad6672 35992019-02-08 Eric Botcazou <ebotcazou@adacore.com>
3600
3601 * gcc-interface/trans.c (gnat_to_gnu) <N_Aggregate>: Minor tweak.
3602 * gcc-interface/utils.c (convert): Do not pad when doing an unchecked
3603 conversion here. Use TREE_CONSTANT throughout the function.
3604 (unchecked_convert): Also pad if the source is a CONSTRUCTOR and the
3605 destination is a more aligned array type or a larger aggregate type,
3606 but not between original and packable versions of a type.
3607
62a6ebbd 36082019-02-08 Eric Botcazou <ebotcazou@adacore.com>
3609
3610 * gcc-interface/utils.c (max_size) <tcc_unary>: Be prepared for an
3611 operand with VOID_TYPE.
3612
da383d19 36132019-02-08 Eric Botcazou <ebotcazou@adacore.com>
3614
3615 * gcc-interface/trans.c (elaborate_all_entities): Do not elaborate the
3616 entities of a package renaming another one.
3617
09c123a0 36182019-02-08 Eric Botcazou <ebotcazou@adacore.com>
3619
3620 * gcc-interface/trans.c (Regular_Loop_to_gnu): Replace tests on
3621 individual flag_unswitch_loops and flag_tree_loop_vectorize switches
3622 with test on global optimize switch.
3623 (Raise_Error_to_gnu): Likewise.
3624
a9dd7273 36252019-02-07 Eric Botcazou <ebotcazou@adacore.com>
3626
3627 * libgnarl/s-linux__sparc.ads (ETIMEDOUT): Set to correct value.
3628
4836c4f1 36292019-02-06 Arnaud Charlet <charlet@adacore.com>
3630
3631 * libgnarl/s-linux__x32.ads: Resync list of signals with s-linux.ads
3632
6b56937c 36332019-01-27 Eric Botcazou <ebotcazou@adacore.com>
3634
3635 * repinfo.adb (List_Component_Layout): Remove superfluous space for
3636 zero-sized field.
3637 * gcc-interface/ada-tree.h (TYPE_IS_EXTRA_SUBTYPE_P): New macro.
3638 * gcc-interface/gigi.h (create_extra_subtype): Declare.
3639 * gcc-interface/decl.c (TYPE_ARRAY_SIZE_LIMIT): Likewise.
3640 (update_n_elem): New function.
3641 (gnat_to_gnu_entity): Use create_extra_subtype to create extra subtypes
3642 instead of doing it manually.
3643 <E_Array_Type>: Use update_n_elem to compute the maximum size. Use the
3644 index type instead of base type for the bounds. Set TYPE_ARRAY_MAX_SIZE
3645 of the array to the maximum size.
3646 <E_Array_Subtype>: Create an extra subtype using the index type of the
3647 base array type for self-referential bounds. Use update_n_elem to
3648 compute the maximum size. Set TYPE_ARRAY_MAX_SIZE of the array to the
3649 maximum size.
3650 (gnat_to_gnu_field): Clear DECL_NONADDRESSABLE_P on discriminants.
3651 * gcc-interface/misc.c (gnat_get_alias_set): Return the alias set of
3652 the base type for an extra subtype.
3653 (gnat_type_max_size): Remove obsolete code.
3654 * gcc-interface/trans.c (Attribute_to_gnu): Minor tweak.
3655 (can_be_lower_p): Deal with pathological types.
3656 * gcc-interface/utils.c (create_extra_subtype): New function.
3657 (create_field_decl): Minor tweak.
3658 (max_size) <tcc_reference>: Compute a better value by using the extra
3659 subtypes on the self-referential bounds.
3660 <tcc_binary>: Rewrite. Deal with "negative value" in unsigned types.
3661 <tcc_expression>: Likewise.
3662 * gcc-interface/utils2.c (compare_arrays): Retrieve the original bounds
3663 of the arrays upfront. Swap only if the second length is not constant.
3664 Use comparisons on the original bounds consistently for the null tests.
3665 (build_binary_op): Use TYPE_IS_EXTRA_SUBTYPE_P macro.
3666 (build_allocator): Minor tweak.
3667
ecb2c722 36682019-01-27 Eric Botcazou <ebotcazou@adacore.com>
3669
3670 * gcc-interface/decl.c (array_type_has_nonaliased_component): Return
3671 the same value for every dimension of a multidimensional array type.
3672
10f25579 36732019-01-26 Eric Botcazou <ebotcazou@adacore.com>
3674
3675 * gcc-interface/trans.c (Regular_Loop_to_gnu): Use the SLOC of the
3676 iteration scheme, if present, throughout the translation.
3677
aced6683 36782019-01-26 Eric Botcazou <ebotcazou@adacore.com>
3679
3680 * gcc-interface/trans.c (gnat_to_gnu) <N_Assignment_Statement>: Use
3681 DECL_SIZE_UNIT instead of TYPE_SIZE_UNIT for the size to be assigned
3682 by a call to memset if the LHS is a DECL.
3683
18b4b30e 36842019-01-26 Eric Botcazou <ebotcazou@adacore.com>
3685
3686 * gcc-interface/trans.c (struct loop_info_d): Remove artificial field.
3687 (Loop_Statement_to_gnu): Do not set it.
3688
6dce35b7 36892019-01-26 Eric Botcazou <ebotcazou@adacore.com>
3690
3691 * gcc-interface/trans.c (Iterate_Acc_Clause_Arg): Fix formatting.
3692 (Acc_gnat_to_gnu): Likewise.
3693 (Acc_Data_to_gnu): Likewise.
3694 (Acc_Var_to_gnu): Likewise.
3695 (Acc_Reduc_to_gnu): Likewise.
3696 (Acc_Size_List_to_gnu): Likewise.
3697 (Pragma_to_gnu) <Pragma_Acc_Loop>: Likewise.
3698 <Pragma_Acc_Data>): Likewise.
3699 (find_loop_for): Remove default value for parameters.
3700 * gcc-interface/trans.c (gnat_to_gnu) <N_Op_And>: Merge into...
3701 <N_Op_Eq>): ...this.
3702
f8cd11ee 37032019-01-26 Eric Botcazou <ebotcazou@adacore.com>
3704
3705 * gcc-interface/decl.c (annotate_value) <INTEGER_CST>: Use test on
3706 the sign bit instead of on the sign of the value.
3707 <PLUS_EXPR>: Turn addition of negative constant into subtraction.
3708 <MULT_EXPR>: Add test for degenerate case.
3709 <BIT_AND_EXPR>: Simplify.
3710
9a3c51d9 37112019-01-18 Sebastian Huber <sebastian.huber@embedded-brains.de>
3712
3713 * s-oscons-tmplt.c (AF_INET6): Do not undefine for RTEMS.
3714
07c11f2b 37152019-01-09 Sandra Loosemore <sandra@codesourcery.com>
3716
3717 PR other/16615
07c11f2b 3718 * exp_ch11.adb: Change "can not" to "cannot".
3719 * sem_ch4.adb: Likewise.
3720
f4d3c071 37212019-01-09 Sandra Loosemore <sandra@codesourcery.com>
3722
3723 PR other/16615
f4d3c071 3724 * exp_ch9.adb: Mechanically replace "can not" with "cannot".
3725 * libgnat/s-regpat.ads: Likewise.
3726 * par-ch4.adb: Likewise.
3727 * set_targ.adb: Likewise.
3728 * types.ads: Likewise.
3729
902071d1 37302019-01-08 Justin Squirek <squirek@adacore.com>
3731
3732 Revert:
902071d1 3733 2018-07-31 Justin Squirek <squirek@adacore.com>
3734
76fb0465 3735 * lib-writ.adb (Write_With_Lines): Modfiy the generation
3736 of dependencies within ali files so that source unit
3737 bodies are properly listed even if said bodies are
3738 missing. Perform legacy behavior in GNATprove mode.
3739 * lib-writ.ads: Modify documentation to reflect current
3740 behavior.
902071d1 3741
3742 and:
902071d1 3743 2018-09-26 Justin Squirek <squirek@adacore.com>
3744
76fb0465 3745 * lib-writ.adb, lib-writ.ads (Write_With_Lines): Add
3746 documentation and an extra conditional check for RCI
3747 units so that generated ali files will list the spec
3748 only instead of a body when a body is not found.
902071d1 3749
65a33d4a 37502019-01-04 Eric Botcazou <ebotcazou@adacore.com>
3751
3752 * gnatvsn.ads: Bump copyright year.
3753
3d8932fd 37542019-01-01 Jakub Jelinek <jakub@redhat.com>
8e8f6434 3755
fbd26352 3756 Update copyright years.
3757
277184bc 3758 * gnat_ugn.texi: Bump @copying's copyright year.
3759 * gnat_rm.texi: Likewise.
7dfbd804 3760\f
3d8932fd 3761Copyright (C) 2019 Free Software Foundation, Inc.
7dfbd804 3762
3763Copying and distribution of this file, with or without modification,
3764are permitted in any medium without royalty provided the copyright
3765notice and this notice are preserved.