fc1eb946533ef0888602f167a201bdac4ac35579
[platform/upstream/gcc.git] / gcc / ada / ChangeLog
1 2019-08-21  Piotr Trojanek  <trojanek@adacore.com>
2
3         * exp_util.adb (Corresponding_Runtime_Package): Use high-level
4         Is_Protected_Type.
5         * sem_ch8.adb (Analyze_Renamed_Entry): Likewise.
6         * sem_ch9.adb (Analyze_Requeue): Likewise.
7
8 2019-08-21  Javier Miranda  <miranda@adacore.com>
9
10         * sem_util.adb (Update_Named_Associations): Update
11         First_Named_Actual when the subprogram call has a single named
12         actual.
13
14 2019-08-21  Joel Brobecker  <brobecker@adacore.com>
15
16         * doc/Makefile (mk_empty_dirs): New (PHONY) rule.
17         (%.html, %.pdf, %.txt, %.info, %.texinfo): Add dependencies on
18         mk_empty_dirs.
19
20 2019-08-21  Justin Squirek  <squirek@adacore.com>
21
22         * doc/gnat_rm/implementation_defined_pragmas.rst: Modify
23         documentation to reflect expected behavior.
24         * gnat_rm.texi: Regenerate.
25         * sem_prag.adb (Analyze_Pragma): Modify handling of pragma
26         Max_Entry_Queue_Length to not reject integer values of negative
27         one.
28         * sem_util.adb (Get_Max_Queue_Length): Add processing for values
29         of negative one to fit within the current scheme.
30
31 2019-08-20  Arnaud Charlet  <charlet@adacore.com>
32
33         * exp_unst.adb (Unnest_Subprograms, Unnest_Subprogram): Take
34         inlining (-gnatn) into account.
35
36 2019-08-20  Ed Schonberg  <schonberg@adacore.com>
37
38         * exp_ch13.adb (Expand_N_Attribute_Definition_Clause, case
39         Storage_Size): If the expression for Storage_Size is not static
40         it may depend on characterstics of another type that may bot be
41         frozen yet, so the elaboration of the expression for the aspect
42         must be attached directly to the freeze actions of the type to
43         which it applies.
44
45 2019-08-20  Piotr Trojanek  <trojanek@adacore.com>
46
47         * exp_util.adb (Build_DIC_Procedure_Declaration): Set the last
48         entity of the generated Default_Initial_Condition procedure in
49         order to construct a proper entity chain.
50
51 2019-08-20  Yannick Moy  <moy@adacore.com>
52
53         * exp_spark.adb (Expand_SPARK_N_Slice_Or_Indexed_Component):
54         Renaming of function to apply to slices as well.
55         (Expand_SPARK): Expand prefix of slices of access type.
56
57 2019-08-20  Bob Duff  <duff@adacore.com>
58
59         * exp_aggr.adb (Expand_Array_Aggregate): Use build-in-place in
60         the nonlimited case in STEP 4. This improves the efficiency of
61         things like (1 .. 1000 => <>).  We still generate some code for
62         that, unfortunately, but it is much improved.
63         (Aggr_Assignment_OK_For_Backend): Return false if <> components
64         are present.
65
66 2019-08-20  Bob Duff  <duff@adacore.com>
67
68         * exp_ch6.adb (Needs_BIP_Alloc_Form): Call
69         Requires_Transient_Scope rather than checking constrainedness
70         and so forth.  We have previously improved
71         Requires_Transient_Scope to return False in various cases,
72         notably a limited record with an access discriminant. This
73         change takes advantage of that to avoid using the secondary
74         stack for functions returning such types.
75         (Make_Build_In_Place_Call_In_Allocator): Be consistent by
76         calling Needs_BIP_Alloc_Form rather than Is_Constrained and so
77         forth.
78         * sem_ch4.adb (Analyze_Allocator): The above change causes the
79         compiler to generate code that is not legal Ada, in particular
80         an uninitialized allocator for indefinite subtype.  This is
81         harmless, so we suppress the error message in this case.
82
83 2019-08-20  Gary Dismukes  <dismukes@adacore.com>
84
85         * ali.adb, ali.ads, aspects.adb, checks.ads, checks.adb,
86         doc/gnat_rm/implementation_defined_pragmas.rst,
87         doc/gnat_ugn/building_executable_programs_with_gnat.rst,
88         einfo.ads, exp_aggr.adb, exp_ch11.adb, exp_ch3.ads, exp_ch4.adb,
89         exp_disp.adb, inline.adb, libgnat/a-locale.ads,
90         libgnat/s-soflin.ads, par_sco.adb, repinfo.adb, sem_ch5.adb,
91         sem_disp.adb, sem_elab.adb, sem_eval.adb, sem_spark.adb,
92         sem_spark.ads, sinfo.ads: Minor reformattings, typo fixes and
93         and rewordings.
94
95 2019-08-20  Dmitriy Anisimkov  <anisimko@adacore.com>
96
97         * adaint.c (__gnat_to_gm_time): On _WIN32, don't round time up
98         to even second.
99
100 2019-08-20  Ed Schonberg  <schonberg@adacore.com>
101
102         * sem_ch3.adb (Analyze_Object_Declaration): If actual type is
103         private and distinct from nominal type in declaration, propagate
104         flags Is_Constr_Subt_For_U_Nominal and _UN_Aliased to full view
105         of private type.
106
107 2019-08-20  Ed Schonberg  <schonberg@adacore.com>
108
109         * exp_attr.adb (Expand_Loop_Entry_Attribute): When expanding a
110         loop entry attribute for a while_loop we construct a function
111         that incorporates the expanded condition of the loop. The itypes
112         that may be generated in that expansion must carry the scope of
113         the constructed function for proper handling in gigi.
114
115 2019-08-20  Ed Schonberg  <schonberg@adacore.com>
116
117         * exp_disp.adb (Build_Class_Wide_Check, Replace_Formals): When a
118         dispatching call tp a subprogram with a class-wide precondition
119         occurrs in the same declarative part as the ancestor subprogram
120         being called, the`expression for the precondition has not been
121         analyzed yet. Such a call may appear, e.g. in an expression
122         function. In that case, the replacement of formals by actuals in
123         the call cannot use the formal entities of the subprogram being
124         called, and the occurrence of the formals in the expression must
125         be located by name (Chars fields) as would be done at a later
126         freeze point, when the expression is resolved in the context of
127         the subprogram itself.
128
129 2019-08-20  Bob Duff  <duff@adacore.com>
130
131         * sem_prag.adb (Persistent_BSS): If an initialization is present
132         because of Initialize_Scalars or Normalize_Scalars, generate an
133         implicit pragma Suppress_Initialization to remove that, because
134         initialization is not allowed for these variables. Other
135         initializations remain illegal.
136
137 2019-08-20  Gary Dismukes  <dismukes@adacore.com>
138
139         * sem_ch3.adb (OK_For_Limited_Init_In_05): In the case of type
140         conversions, apply the recursive call to the Original_Node of
141         the expression Exp rather than the Expression of the
142         Original_Node, in the case where Exp has been rewritten;
143         otherwise, when Original_Node is the same as Exp, apply the
144         recursive call to the Expression.
145         (Check_Initialization): Revise condition for special check on
146         type conversions of limited function calls to test Original_Node
147         (avoiding spurious errors on expanded unchecked conversions
148         applied to build-in-place dispatching calls).
149
150 2019-08-20  Patrick Bernardi  <bernardi@adacore.com>
151
152         * exp_aggr.adb (Expand_Record_Aggregate): Always convert a
153         record Aggregate to assignment statements if the option
154         Aggregate_Individually_Assign is set.
155         * opt.ads (Aggregate_Individually_Assign): New option.
156         * par-prag.adb (Prag): Add Pragma_Aggregate_Individually_Assign.
157         * sem_prag.adb (Analyze_Pragma): Likewise.
158         * snames.ads-tmpl: Add Pragma_Aggregate_Individually_Assign and
159         Name_Aggregate_Individually_Assign.
160         * doc/gnat_rm/implementation_defined_pragmas.rst: Document
161         pragma Aggregate_Individually_Assign.
162         * gnat_rm.texi: Regenerate.
163
164 2019-08-20  Bob Duff  <duff@adacore.com>
165
166         * par-ch4.adb: Minor wording change in error messages.
167         * sem_aggr.adb (Resolve_Delta_Aggregate): Emit an error for Ada
168         versions prior to Ada 2020.
169
170 2019-08-20  Bob Duff  <duff@adacore.com>
171
172         * freeze.adb (Is_Atomic_VFA_Aggregate): Make the temp for
173         initialization of the atomic variable be constant. This is
174         cleaner, and might improve efficiency.
175
176 2019-08-20  Eric Botcazou  <ebotcazou@adacore.com>
177
178         * repinfo.adb (List_Record_Info): In -gnatR4 mode, set the
179         relevant flag on the implicit base type of a record subtype.
180
181 2019-08-20  Bob Duff  <duff@adacore.com>
182
183         * sem_eval.adb (Expr_Value): Implement the case of an unchecked
184         conversion of a static expression.
185
186 2019-08-20  Bob Duff  <duff@adacore.com>
187
188         * sem_ch13.adb (Is_Null_Array): New function, used to detect the
189         null array case; used to warn about uncheckedly converting to a
190         zero-sized array.  It is unfortunate that we can't just check
191         the size, and warn on all cases of converting from a
192         nonzero-sized type to a zero-sized one. That's because "0" means
193         two different things: "size is zero" and "size is unknown".
194         Until we fix that design flaw, we need this more targeted fix.
195
196 2019-08-20  Bob Duff  <duff@adacore.com>
197
198         * libgnat/a-cborma.adb, libgnat/a-cborse.adb (Clear): Repeatedly
199         call Delete. This avoids clearing the free list, which
200         substantially speeds up future Delete operations.
201
202 2019-08-20  Bob Duff  <duff@adacore.com>
203
204         * sem_ch13.adb (Component_Order_Check): New procedure to check
205         for out-of-order clauses.
206         * warnsw.ads, warnsw.adb: New -gnatw_r switch.
207         * doc/gnat_ugn/building_executable_programs_with_gnat.rst:
208         Document new switch.
209         * gnat_ugn.texi: Regenerate.
210
211 2019-08-20  Bob Duff  <duff@adacore.com>
212
213         * sem_ch13.adb (Object_Size): Give an error for zero. It really
214         rubs me the wrong way that we don't honor "for T'Object_Size use
215         0;", but it's not important enough to fix. In any case, if we're
216         not going to obey the clause, we should give an error.
217
218 2019-08-20  Bob Duff  <duff@adacore.com>
219
220         * errout.adb (Error_Msg_Internal): Set Warn_Err in case of
221         Is_Style_Msg.
222         * erroutc.adb (Output_Msg_Text): Do Warnings_Treated_As_Errors
223         processing and [warning-as-error] modification for style
224         messages.  Clean up code, simplify, remove unnecessary block
225         statement, add renaming of table entry.
226         * erroutc.ads (Warning_Treated_As_Error): Fix comment: no such
227         thing as Set_Warning_As_Error.
228         * opt.ads: Clean up comments and move related declarations near
229         each other.
230         * par-prag.adb: Process Warning_As_Error. This is necessary
231         because many style warning happen during parsing.
232         * sem_prag.adb: Use new Acquire_Warning_Match_String.
233         * sem_util.ads, sem_util.adb (Acquire_Warning_Match_String): New
234         function shared by par-prag.adb and sem_prag.adb. Replaces the
235         procedure in sem_prag.adb. Avoid use of global variables.
236         * stringt.ads, stringt.adb (To_String): New function to convert
237         String_Id to String.
238         * doc/gnat_rm/implementation_defined_pragmas.rst: Document the
239         new feature.
240         * gnat_rm.texi: Regenerate.
241
242 2019-08-20  Eric Botcazou  <ebotcazou@adacore.com>
243
244         * lib.ads: Add with clause for GNAT.HTable.
245         Add pragma Inline for Is_Loaded and alphabetize the list.
246         (Unit_Name_Table_Size): New constant.
247         (Unit_Name_Header_Num): New subtype.
248         (Unit_Name_Hash): New function declaration.
249         (Unit_Names): New simple hash table.
250         (Init_Unit_Name): New procedure declaration.
251         * lib.adb (Set_Unit_Name): Unregister the old name in the table,
252         if any, and then register the new name.
253         (Init_Unit_Name): New procedure.
254         (Is_Loaded): Reimplement using a lookup in the names table.
255         (Remove_Unit): Unregister the name.
256         (Unit_Name_Hash): New function.
257         * lib-load.adb (Create_Dummy_Package_Unit): Call Init_Unit_Name.
258         (Load_Unit): Use a lookup in the names table to find out whether
259         the unit has already been loaded.  Call Init_Unit_Name and then
260         Remove_Unit if the loading has failed.
261         (Make_Child_Decl_Unit): Call Init_Unit_Name.
262         (Make_Instance_Unit): Likewise.
263         * lib-writ.adb (Ensure_System_Dependency): Likewise.
264
265 2019-08-20  Bob Duff  <duff@adacore.com>
266
267         * sem_ch13.adb (Record_Hole_Check): Initialize After_Last.
268
269 2019-08-20  Piotr Trojanek  <trojanek@adacore.com>
270
271         * impunit.adb (Get_Kind_Of_Unit): Revert change for adapting
272         this routine for gnatprove.
273
274 2019-08-20  Arnaud Charlet  <charlet@adacore.com>
275
276         * doc/gnat_rm/implementation_defined_pragmas.rst: Document
277         requirements for Pragma Lock_Free.
278         * gnat_rm.texi: Regenerate.
279
280 2019-08-20  Philippe Gil  <gil@adacore.com>
281
282         * bindgen.adb (Gen_Main): Set gnat_argc/gnat_argv to argc/argv
283         only when still uninitialized.
284
285 2019-08-20  Bob Duff  <duff@adacore.com>
286
287         * libgnat/g-comlin.ads (Exit_From_Command_Line): Fix
288         documentation for GNAT.Command_Line.
289
290 2019-08-20  Pierre-Marie de Rodat  <derodat@adacore.com>
291
292         PR ada/91492
293         * gcc-interface/lang.opt (-fdump-scos): Add missing dot at the
294         end of the documentation.
295
296 2019-08-20  Richard Sandiford  <richard.sandiford@arm.com>
297
298         * gcc-interface/misc.c (default_pass_by_ref): Update call to
299         pass_by_reference.
300
301 2019-08-19  Bob Duff  <duff@adacore.com>
302
303         * doc/gnat_rm/implementation_advice.rst: Fix documentation for
304         stream oriented attributes.
305         * gnat_rm.texi: Regenerate.
306
307 2019-08-19  Gary Dismukes  <dismukes@adacore.com>
308
309         * einfo.ads (E_Function, E_Procedure): Update comments to
310         reflect that Renamed_Entity is also used for nongeneric
311         subprograms.
312
313 2019-08-19  Eric Botcazou  <ebotcazou@adacore.com>
314
315         * sem_prag.adb (Is_Before_First_Decl): Deal with rewritten
316         pragmas.
317
318 2019-08-19  Bob Duff  <duff@adacore.com>
319
320         * sem_warn.adb (Warn_On_Unreferenced_Entity): Suppress warning
321         on formal parameters of dispatching operations.
322
323 2019-08-19  Ed Schonberg  <schonberg@adacore.com>
324
325         * sem_res.adb (Resolve_Call): A call to an expression function
326         freezes when expander is active, unless the call appears within
327         the body of another expression function,
328
329 2019-08-19  Dmitriy Anisimkov  <anisimko@adacore.com>
330
331         * libgnat/s-os_lib.ads, libgnat/s-os_lib.adb (To_Ada, To_C): New
332         routines.
333
334 2019-08-19  Bob Duff  <duff@adacore.com>
335
336         * exp_attr.adb (Attribute_Valid): Correct the handling of
337         private types where the full type is modular. System.Address is
338         an example. Otherwise, we convert uncheckedly to a signed type,
339         so we get an incorrect range 0 .. -1, for which all values will
340         fail.  The 'Valid attribute is illegal for such types, but we
341         generate such illegal attribute_references for 'Valid_Scalars,
342         and we generate 'Valid_Scalars when the -gnateV switch is used.
343         Rename Btyp --> PBtyp to avoid hiding the outer Btyp, which was
344         confusing.
345         * libgnat/a-except.adb: Set the Exception_Raised component.
346         Otherwise, we have incorrect reads of invalid data.
347
348 2019-08-19  Pierre-Marie de Rodat  <derodat@adacore.com>
349
350         * libgnat/a-cgaaso.ads, libgnat/a-cgarso.ads,
351         libgnat/a-cogeso.ads, libgnat/a-contai.ads,
352         libgnat/a-locale.ads: Import documentation from the RM.
353
354 2019-08-19  Jerome Guitton  <guitton@adacore.com>
355
356         * Makefile.rtl (system.o): New target to add generation of
357         target properties.
358         * gcc-interface/Makefile.in (install-gnatlib): Install
359         ada_target_properties.
360
361 2019-08-19  Eric Botcazou  <ebotcazou@adacore.com>
362
363         * inline.adb (Add_Inlined_Body): Do not special-case instances
364         that are compilation units.
365         (Add_Pending_Instantiation): Likewise.
366         (Instantiate_Body): Skip instantiations that are compilation
367         units and have already been performed.
368         * sem_ch12.adb (Needs_Body_Instantiated): Do not special-case
369         instances that are compilation units.
370         (Load_Parent_Of_Generic): Be prepared for parent that is a
371         compilation unit but whose instantiation node has not been
372         replaced.
373
374 2019-08-19  Eric Botcazou  <ebotcazou@adacore.com>
375
376         * inline.adb (Initialize, Lock): Deal with
377         Called_Pending_Instantiations.
378
379 2019-08-19  Ed Schonberg  <schonberg@adacore.com>
380
381         * sem_ch6.adb (Check_Synchronized_Overriding): Complete
382         predicate that applies legality check in 9.4 (11.9/2): if an
383         inherited subprogram is implemented by a protected procedure or
384         entry, its first paarameter must be out, in_out or
385         access_to_varible.
386
387 2019-08-19  Javier Miranda  <miranda@adacore.com>
388
389         PR ada/65696
390         * exp_atag.ads, exp_atag.adb (Build_Inherit_Predefined_Prims):
391         Adding formal to specify how many predefined primitives are
392         inherited from the parent type.
393         * exp_disp.adb (Number_Of_Predefined_Prims): New subprogram.
394         (Make_Secondary_DT): Compute the number of predefined primitives
395         of all tagged types (including tagged types not defined at
396         library level).  Previously we unconditionally relied on the
397         Max_Predef_Prims constant value when building the dispatch
398         tables of tagged types not defined at library level (thus
399         consuming more memory for their dispatch tables than required).
400         (Make_DT): Compute the number of predefined primitives that must
401         be inherited from their parent type when building the dispatch
402         tables of tagged types not defined at library level. Previously
403         we unconditionally relied on the Max_Predef_Prims constant value
404         when building the dispatch tables of tagged types not defined at
405         library level (thus copying more data than required from the
406         parent type).
407
408 2019-08-19  Bob Duff  <duff@adacore.com>
409
410         * sem_ch13.adb (Record_Hole_Check): Procedure to check for holes
411         that incudes processing type extensions. A type extension is
412         processed by first calling Record_Hole_Check recursively on the
413         parent type to compute the bit number after the last component
414         of the parent.
415
416 2019-08-19  Gary Dismukes  <dismukes@adacore.com>
417
418         * checks.adb (Length_Mismatch_Info_Message): New function in
419         Selected_Length_Checks to return a message indicating the
420         element counts for the mismatched lengths for a failed
421         compile-time length check.
422         (Plural_Or_Singular_Ending): Support function in
423         Length_Mismatch_Info_Message to return either "" or "s", for
424         concatenating to the end of words.
425         (Selected_Length_Checks): Pass the result of
426         Length_Mismatch_Info_Message as an extra warning message to
427         Compile_Time_Constraint_Error to indicate the mismatched lengths
428         for a failed compile-time length check.
429         * sem_util.ads (Compile_Time_Constraint_Error): Add an optional
430         message formal (Extra_Msg), defaulted to the empty string.
431         * sem_util.adb (Compile_Time_Constraint_Error): Output an extra
432         message following the main warning message (when Extra_Msg is
433         not the empty string).
434
435 2019-08-19  Patrick Bernardi  <bernardi@adacore.com>
436
437         * socket.c: Removed the redefinition of getaddrinfo, getnameinfo
438         and freeaddrinfo to internal VxWorks kernel calls because they
439         are, well, internal kernel calls and cannot be called from RTPs.
440         VxWorks provides the necessary components to call these routines
441         directly.
442
443 2019-08-19  Eric Botcazou  <ebotcazou@adacore.com>
444
445         * exp_dist.adb (Is_Generic_Actual_Subtype): New predicate.
446         (Build_From_Any_Call, Build_To_Any_Call, Build_TypeCode_Call):
447         Use it instead of Is_Generic_Actual_Type flag to detect subtypes
448         representing generic actual types.
449
450 2019-08-19  Ed Schonberg  <schonberg@adacore.com>
451
452         * sem_warn.adb (Check_References, Generic_Body_Formal): When a
453         formal parameter of a generic subprogram is not referenced in
454         the body, place the corresponding warning on the corresponding
455         entity in the specification of the generic body, as is done for
456         non-generic subprograms.
457
458 2019-08-19  Bob Duff  <duff@adacore.com>
459
460         * errout.ads (Size_Too_Small_Message): New constant.
461         * errout.adb, freeze.adb, sem_ch13.adb: Use it.
462
463 2019-08-19  Eric Botcazou  <ebotcazou@adacore.com>
464
465         * exp_dist.adb (Build_Package_Stubs): Do not specifically visit
466         the declarations of an N_Subprogram_Instantiation node.
467
468 2019-08-19  Bob Duff  <duff@adacore.com>
469
470         * doc/gnat_ugn/gnat_utility_programs.rst: Document missing
471         metrics switches.
472
473 2019-08-19  Piotr Trojanek  <trojanek@adacore.com>
474
475         * sem_ch12.adb (Get_Unit_Instantiation_Node): Simplify Nkind_In
476         membership test.
477         * sem.adb (Depends_On_Main): Whitespace cleanup; only assign a
478         local variable if needed.
479
480 2019-08-19  Claire Dross  <dross@adacore.com>
481
482         * sem_spark.ads, sem_spark.adb (Is_Pledge_Function): New
483         parameter of the generic. Function used to decide whether a
484         function is a pledge function.
485         (Check_Not_Borrowed): Disable check inside the second parameter
486         of a pledge function for the path borrowed by the first
487         parameter. Also disable checks for entities inside a Global
488         contract.
489
490 2019-08-19  Joffrey Huguet  <huguet@adacore.com>
491
492         * libgnat/a-cfdlli.ads, libgnat/a-cfhama.ads,
493         libgnat/a-cfinve.ads, libgnat/a-cforma.ads,
494         libgnat/a-cofove.ads, libgnat/a-cofuma.ads,
495         libgnat/a-cofuve.ads: Add formal function parameter "=" (L, R :
496         Element_Type) to the generic packages.
497
498 2019-08-19  Eric Botcazou  <ebotcazou@adacore.com>
499
500         * opt.ads: Clean up left-overs of earlier implementation in
501         comment:
502
503 2019-08-19  Ed Schonberg  <schonberg@adacore.com>
504
505         * sem_ch3.adb (Derived_Enumeration_Type): Do no freeze anonymous
506         base type if the bounds in the derived type declaration are
507         literals of the type.
508
509 2019-08-19  Yannick Moy  <moy@adacore.com>
510
511         * sem_res.adb (Resolve_Call): Check non-aliasing rules before
512         GNATprove inlining.
513
514 2019-08-19  Eric Botcazou  <ebotcazou@adacore.com>
515
516         * inline.adb (Add_Inlined_Body): Do not add pending
517         instantiations.
518         * sem_ch12.adb (Needs_Body_Instantiated): New predicate.
519         (Analyze_Package_Instantiation): Use it to decide whether to add
520         a pending instantiation for the body of the package.
521
522 2019-08-19  Olivier Hainque  <hainque@adacore.com>
523
524         * gcc-interface/trans.c (Acc_Loop_to_gnu): Return the openacc
525         BIND_EXPR node we have constructed on purpose.  Remove unused
526         variable.
527
528 2019-08-19  Pierre-Marie de Rodat  <derodat@adacore.com>
529
530         * gcc-interface/lang.opt (fdump-scos): Define.
531         * gcc-interface/misc.c (gnat_handle_option): Handle
532         OPT_fdump_scos.
533
534 2019-08-14  Joffrey Huguet  <huguet@adacore.com>
535
536         * libgnat/a-cofuba.ads: Add a Length attribute to type
537         Container. Add a type Array_Base which replaces the previous
538         Elements attribute of Container.
539         (Content_Init): New subprogram. It is used to initialize the
540         Base attribute of Container.
541         * libgnat/a-cofuba.adb (Resize): New subprogram. It is used to
542         resize the underlying array of a container if necessary.
543         (=, <=, Find, Get, Intersection, Length, Num_Overlaps, Set,
544         Union): Update to match changes in type declarations.
545         (Add): Modify body to damp the time and space cost in a specific
546         case.
547         (Content_Init): New subprogram. It is used to initialize the
548         Base attribute of Container.
549         (Remove): Modify body to damp the time and space cost in a
550         specific case.
551
552 2019-08-14  Bob Duff  <duff@adacore.com>
553
554         * sem_ch13.adb (Get_Alignment_Value): Return 1 for Alignment 0,
555         and do not give an error.
556         * doc/gnat_rm/representation_clauses_and_pragmas.rst: Update the
557         corresponding documentation.
558         * gnat_rm.texi: Regenerate.
559
560 2019-08-14  Eric Botcazou  <ebotcazou@adacore.com>
561
562         * inline.adb (Add_Pending_Instantiation): Fix off-by-one error
563         in the comparison against the maximum number of instantiations.
564
565 2019-08-14  Eric Botcazou  <ebotcazou@adacore.com>
566
567         * inline.adb (Add_Pending_Instantiation): Use greater-or-equal
568         in the comparison against the maximum number of instantiations.
569
570 2019-08-14  Ed Schonberg  <schonberg@adacore.com>
571
572         * sem_aux.adb (Next_Rep_Item): If a node in the rep chain
573         involves a Ghost aspect it may have been replaced by a null
574         statement; use the original node to find next Rep_Item.
575         * repinfo.adb (List_Entities): Do not list an Ignored
576         Ghost_Entity, for which information may have been deleted.
577
578 2019-08-14  Bob Duff  <duff@adacore.com>
579
580         * sem_prag.ads, sem_prag.adb
581         (Process_Compile_Time_Warning_Or_Error): In parameterless
582         version, improve detection of whether we are in a generic unit
583         to cover the case of an instance within a generic unit.
584         (Process_Compile_Time_Warning_Or_Error): Rename the
585         two-parameter version to be
586         Validate_Compile_Time_Warning_Or_Error, and do not export it.
587         Issue a warning if the condition is not known at compile time.
588         The key point is that the warning must be given only for pragmas
589         deferred to the back end, because the back end discovers
590         additional values that are known at compile time.  Previous
591         changes in this ticket have enabled this by deferring to the
592         back end without checking for special cases such as 'Size.
593         (Validate_Compile_Time_Warning_Or_Error): Rename to be
594         Defer_Compile_Time_Warning_Error_To_BE.
595         * warnsw.ads, warnsw.adb (Warn_On_Unknown_Compile_Time_Warning):
596         Add new switches -gnatw_c and -gnatw_C to control the above
597         warning.
598         * doc/gnat_ugn/building_executable_programs_with_gnat.rst:
599         Document new switches.
600         * gnat_ugn.texi: Regenerate.
601
602 2019-08-14  Eric Botcazou  <ebotcazou@adacore.com>
603
604         * sem_ch12.adb (Might_Inline_Subp): Rework comment and restrict
605         the shortcut based on Is_Inlined to the back-end inlining case.
606
607 2019-08-14  Bob Duff  <duff@adacore.com>
608
609         * inline.adb (Check_And_Split_Unconstrained_Function): Ignore
610         protected functions to get rid of spurious error. The
611         transformation done by this procedure triggers legality errors
612         in the generated code in this case.
613
614 2019-08-14  Bob Duff  <duff@adacore.com>
615
616         * sem_prag.adb (Process_Compile_Time_Warning_Or_Error): Defer
617         processing to the back end in all cases where the pragma's
618         condition is not known at compile time during the front end
619         (except in generics), as opposed to detecting 'Size attributes
620         and the like. This ensures that we take advantage of whatever
621         can be compile-time known after running the back end, as opposed
622         to having the front end guess what the back end can do.  Remove
623         a little duplicated code at the call site.
624         * gnat1drv.adb (Post_Compilation_Validation_Checks): Unlock the
625         Elists while in Validate_Compile_Time_Warning_Errors, because it
626         does analysis and name resolution, which sometimes involves
627         adding Elists.
628
629 2019-08-14  Eric Botcazou  <ebotcazou@adacore.com>
630
631         * einfo.ads (Is_Called): Document new usage on E_Package
632         entities.
633         * einfo.adb (Is_Called): Accept E_Package entities.
634         (Set_Is_Called): Likewise.
635         * exp_ch6.adb (Expand_Call_Helper): Move code dealing with
636         instances for back-end inlining to Add_Inlined_Body.
637         * inline.ads: Remove with clauses for Alloc and Table.
638         (Pending_Instantiations): Move to...
639         * inline.adb: Add with clauses for Alloc, Uintp, Table and
640         GNAT.HTable.
641         (Backend_Instances): New variable.
642         (Pending_Instantiations): ...here.
643         (Called_Pending_Instantiations): New table.
644         (Node_Table_Size): New constant.
645         (Node_Header_Num): New subtype.
646         (Node_Hash): New function.
647         (To_Pending_Instantiations): New hash table.
648         (Add_Inlined_Body): Bail out early for subprograms in the main
649         unit or subunit.  Likewise if the Is_Called flag is set.  If the
650         subprogram is an instance, invoke Add_Inlined_Instance.  Call
651         Set_Is_Called earlier.  If the subrogram is within an instance,
652         invoke Add_Inlined_Instance.  Also deal with the case where the
653         call itself is within an instance.
654         (Add_Inlined_Instance): New procedure.
655         (Add_Inlined_Subprogram): Remove conditions always fulfilled.
656         (Add_Pending_Instantiation): Move the defence against ludicruous
657         number of instantiations to here. When back-end inlining is
658         enabled, associate an instantiation with its index in table and
659         mark a few selected kinds of instantiations as always needed.
660         (Initialize): Set Backend_Instances to No_Elist.
661         (Instantiate_Body): New procedure doing the work extracted
662         from...
663         (Instantiate_Bodies): ...here.  When back-end inlining is
664         enabled, loop over Called_Pending_Instantiations instead of
665         Pending_Instantiations.
666         (Is_Nested): Minor tweak.
667         (List_Inlining_Info): Also list the contents of
668         Backend_Instances.
669         * sem_ch12.adb (Might_Inline_Subp): Return early if Is_Inlined
670         is set and otherwise set it before returning true.
671         (Analyze_Package_Instantiation): Remove the defence against
672         ludicruous number of instantiations.  Invoke
673         Remove_Dead_Instance instead of doing the removal manually if
674         there is a guaranteed ABE.
675
676 2019-08-14  Gary Dismukes  <dismukes@adacore.com>
677
678         * exp_ch3.adb (Predef_Spec_Or_Body): For an equality operation
679         of an interface type, create an expression function (that
680         returns False) rather than declaring an abstract function.
681         * freeze.adb (Check_Inherited_Conditions): Set Needs_Wrapper to
682         False unconditionally at the start of the loop creating wrappers
683         for inherited operations.
684
685 2019-08-14  Bob Duff  <duff@adacore.com>
686
687         * table.adb: Assert that the table is not locked when increasing
688         Last, even if it doesn't cause reallocation.  In other words,
689         assert that on operations that MIGHT cause reallocation.
690         * table.ads: Fix comment accordingly.
691
692 2019-08-14  Arnaud Charlet  <charlet@adacore.com>
693
694         * doc/gnat_ugn/gnat_and_program_execution.rst: Remove
695         documentation of gnatelim.
696
697 2019-08-14  Bob Duff  <duff@adacore.com>
698
699         * sem_prag.adb (Validate_Compile_Time_Warning_Error): Attach the
700         warning to the Sloc of the first pragma argument, rather than to
701         the pragma itself. This is to make pragmas processed after the
702         back end use the same Sloc as pragmas processed earlier, in the
703         front end. There's no reason for this discrepancy, and it
704         hinders further work on this ticket.
705
706 2019-08-14  Bob Duff  <duff@adacore.com>
707
708         * sem.ads (Inside_A_Generic): Remove the ??? comment.
709
710 2019-08-14  Eric Botcazou  <ebotcazou@adacore.com>
711
712         * inline.ads (Pending_Descriptor): Delete.
713         * inline.adb (Initialize): Do not initialize it.
714         * sem_ch12.adb (Delay_Descriptors): Delete.
715         (Analyze_Package_Instantiation): Call
716         Set_Delay_Subprogram_Descriptors instead of Delay_Descriptors
717         throughout.
718
719 2019-08-14  Bob Duff  <duff@adacore.com>
720
721         * exp_aggr.adb (Init_Hidden_Discriminants): Avoid processing the
722         wrong discriminant, which could be of the wrong type.
723
724 2019-08-14  Eric Botcazou  <ebotcazou@adacore.com>
725
726         * sem_ch12.adb (Analyze_Instance_And_Renamings): Do not reset
727         the Is_Generic_Instance flag previously set on the package
728         generated for the instantiation of a generic subprogram.
729
730 2019-08-14  Ed Schonberg  <schonberg@adacore.com>
731
732         * exp_ch4.adb (Expand_N_Quantified_Expression): Freeze
733         explicitly the type of the loop parameter.
734
735 2019-08-14  Javier Miranda  <miranda@adacore.com>
736
737         * sem_util.adb (New_Copy_Tree.Copy_Node_With_Replacement):
738         Update the Chars attribute of identifiers.
739
740 2019-08-14  Yannick Moy  <moy@adacore.com>
741
742         * sem_spark.adb, sem_spark.ads (Is_Legal): New function exposed
743         for use in GNATprove, to test legality rules not related to
744         permissions.
745         (Check_Declaration_Legality): Extract the part of
746         Check_Declaration that checks rules not related to permissions.
747         (Check_Declaration): Call the new Check_Declaration_Legality.
748         (Check_Type_Legality): Rename of Check_Type. Introduce
749         parameters to force or not checking, and update a flag detecting
750         illegalities.
751         (Check_Node): Ignore attribute references in statement position.
752
753 2019-08-14  Yannick Moy  <moy@adacore.com>
754
755         * sem_spark.adb (Check_Old_Loop_Entry): New procedure to check
756         correct use of Old  and Loop_Entry.
757         (Check_Node): Check subprogram contracts.
758         (Check_Pragma): Check Loop_Variant.
759         (Check_Safe_Pointers): Apply checking to library-level
760         subprogram  declarations as well, in order to check their
761         contract.
762
763 2019-08-14  Yannick Moy  <moy@adacore.com>
764
765         * sem_spark.adb (Is_Subpath_Expression): Take into account
766         conversion and qualification.
767
768 2019-08-14  Eric Botcazou  <ebotcazou@adacore.com>
769
770         * sem_ch7.adb (Install_Private_Declarations)
771         <Swap_Private_Dependents>: Do not rely solely on the
772         Is_Child_Unit flag on the unit to recurse.
773         (Uninstall_Declarations) <Swap_Private_Dependents>: New
774         function.  Use it to recurse on the private dependent entities
775         for child units.
776
777 2019-08-14  Javier Miranda  <miranda@adacore.com>
778
779         * exp_aggr.adb (Is_CCG_Supported_Aggregate): Return False for
780         arrays with bounds not known at compile time.
781
782 2019-08-14  Ed Schonberg  <schonberg@adacore.com>
783
784         * sem_util.adb (New_Copy_Tree, Visit_Entity): A quantified
785         expression includes the implicit declaration of the loop
786         parameter. When a quantified expression is copied during
787         expansion, for example when building the precondition code from
788         the generated pragma, a new loop parameter must be created for
789         the new tree, to prevent duplicate declarations for the same
790         symbol.
791
792 2019-08-14  Yannick Moy  <moy@adacore.com>
793
794         * sem_disp.adb (Check_Dispatching_Operation): Update assertion
795         for the separate declarations created in GNATprove mode.
796         * sem_disp.ads (Is_Overriding_Subprogram): Update comment.
797         * sem_elab.adb (SPARK_Processor): Fix test for checking of
798         overriding primitives.
799
800 2019-08-14  Eric Botcazou  <ebotcazou@adacore.com>
801
802         * inline.adb (Add_Inlined_Body): Tweak comments.
803         (List_Inlining_Info): Also list information about non-main
804         units.
805
806 2019-08-14  Gary Dismukes  <dismukes@adacore.com>
807
808         * sem_ch4.adb (Analyze_Selected_Component): In the case where
809         the prefix is of a concurrent type, and the selected entity
810         matching the selector is the first private declaration of the
811         type (such as the first local variable in a task's body), set
812         Is_Private_Op.
813
814 2019-08-14  Piotr Trojanek  <trojanek@adacore.com>
815
816         * einfo.adb (Is_Generic_Actual_Subprogram): Replace repeated
817         calls to Ekind with Ekind_In.
818
819 2019-08-13  Richard Sandiford  <richard.sandiford@arm.com>
820
821         PR middle-end/91421
822         * gcc-interface/trans.c (gigi): Call set_decl_buillt_in_function.
823         (Call_to_gnu): Use DECL_FE_FUNCTION_CODE instead of DECL_FUNCTION_CODE.
824
825 2019-08-13  Eric Botcazou  <ebotcazou@adacore.com>
826
827         * ali.ads (Linker_Option_Record): Remove Original_Pos component.
828         * ali.adb (Scan_ALI): Do not set it.
829
830 2019-08-13  Eric Botcazou  <ebotcazou@adacore.com>
831
832         * sem_ch3.adb (Build_Derived_Concurrent_Type): Add a couple of
833         local variables and use them.  When the derived type fully
834         constrains the parent type, rewrite it as a subtype of an
835         implicit (unconstrained) derived type instead of the other way
836         around.
837         (Copy_And_Build): Deal with concurrent types and use predicates.
838         (Build_Derived_Private_Type): Build the full derivation if
839         needed for concurrent types too.
840         (Build_Derived_Record_Type): Add marker comment.
841         (Complete_Private_Subtype): Use predicates.
842
843 2019-08-13  Ed Schonberg  <schonberg@adacore.com>
844
845         * sem_ch3.adb (Check_Generic_Ancestor): New subprogram,
846         aubsidiary to Build_Derived_Record_Type. to enforce the rule
847         that a type extension declared in a generic body cznnot have an
848         ancestor that is a generic formal (RM 3.9.1 (4/2)). The rule
849         applies to all ancestors of the type, including interface
850         progenitors.
851
852 2019-08-13  Eric Botcazou  <ebotcazou@adacore.com>
853
854         * sem_ch3.adb (Build_Underlying_Full_View): Delete.
855         (Complete_Private_Subtype): Do not set the full view on the
856         private subtype here.  If the full base is itself derived from
857         private, do not re-derive the parent type but instead constrain
858         an existing underlying full view.
859         (Prepare_Private_Subtype_Completion): Do not get to the
860         underlying full view, if any.  Set the full view on the private
861         subtype here.
862         (Process_Full_View): Likewise.
863         * sem_ch12.adb (Check_Generic_Actuals): Also set
864         Is_Generic_Actual_Type on the full view if the type of the
865         actual is private.
866         (Restore_Private_Views): Also reset Is_Generic_Actual_Type on
867         the full view if the type of the actual is private.
868         * sem_eval.adb (Subtypes_Statically_Match): Remove bypass for
869         generic actual types.
870
871 2019-08-13  Javier Miranda  <miranda@adacore.com>
872
873         * sem_res.adb (Resolve_Selected_Component): When the type of the
874         component is an access to a class-wide type and the type of the
875         context is an access to a tagged type the relevant type is that
876         of the component (since in such case we may need to generate
877         implicit type conversions or dispatching calls).
878
879 2019-08-13  Ed Schonberg  <schonberg@adacore.com>
880
881         * exp_aggr.adb (Aggr_Assignment_OK_For_Backend):  Preanalyze
882         expression, rather do a full analysis, to prevent unwanted
883         removal of side effects which mask the intent of the expression.
884
885 2019-08-13  Eric Botcazou  <ebotcazou@adacore.com>
886
887         * impunit.adb (Non_Imp_File_Names_95): Add
888         GNAT.Branch_Prediction.
889
890 2019-08-13  Eric Botcazou  <ebotcazou@adacore.com>
891
892         * exp_ch6.adb: Remove with and use clauses for Sem_Ch12.
893         (Expand_Call_Helper): Swap the back-end inlining case and the
894         special front-end expansion case.  In back-end inlining mode, do
895         not invoke Add_Inlined_Body unless the call may be inlined.
896         * inline.ads (Add_Pending_Instantiation): New function moved
897         from...
898         * inline.adb (Add_Inlined_Body): Simplify comment.  Turn test on
899         the enclosing unit into assertion.
900         (Add_Pending_Instantiation): New function moved from...
901         * sem_ch12.ads (Add_Pending_Instantiation): ...here.
902         * sem_ch12.adb (Add_Pending_Instantiation): ...here.
903
904 2019-08-13  Eric Botcazou  <ebotcazou@adacore.com>
905
906         * sem.adb (Do_Analyze): Recompute Style_Check_Max_Line_Length
907         after restoring Style_Max_Line_Length.
908
909 2019-08-13  Arnaud Charlet  <charlet@adacore.com>
910
911         * sem_ch13.adb (Check_Iterator_Functions): Protect against
912         cascaded errors.
913
914 2019-08-13  Ed Schonberg  <schonberg@adacore.com>
915
916         * sem_ch8.adb (Analyze_Subprogram_Renaming): Do no suppress mode
917         conformance checks on child unit instance that is a compilation
918         unit.
919
920 2019-08-13  Gary Dismukes  <dismukes@adacore.com>
921
922         * exp_dbug.adb (Fully_Qualify_Name): Add full name qualification
923         for the E_Exception case.
924
925 2019-08-13  Gary Dismukes  <dismukes@adacore.com>
926
927         * exp_aggr.adb (Aggr_Size_OK): Compute the aggregate size using
928         universal arithmetic, to avoid situations where the size
929         computation overflows.
930
931 2019-08-13  Justin Squirek  <squirek@adacore.com>
932
933         * repinfo.adb (List_Scalar_Storage_Order): Modify conditionals
934         for displaying ordering to always be triggered when -gnatR4 is
935         in effect.
936
937 2019-08-13  Justin Squirek  <squirek@adacore.com>
938
939         * aspects.adb, aspects.ads: Register new aspect.
940         * par-prag.adb (Prag): Register new pragma
941         * sem_ch13.adb (Analyze_Aspect_Specifications): Add processing
942         for new aspect similar to Aspect_Max_Entry_Queue_Length.
943         * sem_prag.adb, sem_prag.ads (Analyze_Pragma): Register new
944         pragma and set it to use the same processing as
945         Pragma_Max_Queue_Length.
946         * snames.ads-tmpl: Move definition of
947         Name_Max_Entry_Queue_Length so that it can be processed as a
948         pragma in addition to a restriction and add an entry for the
949         pragma itself.
950
951 2019-08-13  Yannick Moy  <moy@adacore.com>
952
953         * sem_ch4.adb (Analyze_Allocator): Do not insert subtype
954         declaration for allocator inside a spec expression.
955
956 2019-08-13  Yannick Moy  <moy@adacore.com>
957
958         * sem_res.adb (Resolve_Call): Do not inline calls inside record
959         types.
960
961 2019-08-13  Eric Botcazou  <ebotcazou@adacore.com>
962
963         * sem_ch4.adb (Analyze_One_Call): Remove bypass for type
964         mismatch in nested instantiations.
965         * sem_ch8.adb (Find_Nearer_Entity): New function.
966         (Find_Renamed_Entity): Use it to disambiguate the candidates for
967         the renaming generated for an instantiation when it is
968         ambiguous.
969
970 2019-08-13  Eric Botcazou  <ebotcazou@adacore.com>
971
972         * gnat1drv.adb (Adjust_Global_Switches): Do not set
973         Back_End_Inlining in ASIS mode either.
974
975 2019-08-13  Olivier Hainque  <hainque@adacore.com>
976
977         * libgnat/s-win32.ads: Define size_t and fix the MapViewOfFile
978         binding to use it instead of DWORD for the dwNumberOfBytesToMap
979         argument.
980         * libgnat/g-sercom__mingw.adb (Read): State which definition of
981         size_t to fetch in call to Last_Index.
982
983 2019-08-13  Arnaud Charlet  <charlet@adacore.com>
984
985         * gcc-interface/Make-lang.in: Remove unused TRACE variable. Pass
986         LN_S to relevant gnatlib targets.
987         * gcc-interface/Makefile.in: Systematically pass LN_S to
988         relevant gnatlib targets.
989
990 2019-08-13  Yannick Moy  <moy@adacore.com>
991
992         * sem_dim.adb (Analyze_Dimension,
993         Analyze_Dimension_Array_Aggregate, Analyze_Dimension_Call,
994         Analyze_Dimension_Extension_Or_Record_Aggregate): Return
995         immediately when inside an inlined body.
996         * sem_res.adb (Resolve_Call): Remove special checking now done
997         inside Analyze_Dimension_Call.
998
999 2019-08-13  Justin Squirek  <squirek@adacore.com>
1000
1001         * exp_ch4.adb (Expand_N_Allocator): Add condition to detect
1002         library-level object declarations
1003
1004 2019-08-13  Eric Botcazou  <ebotcazou@adacore.com>
1005
1006         * doc/gnat_ugn/building_executable_programs_with_gnat.rst
1007         (-gnateT): Document Double_Float_Alignment parameter and fix
1008         description of Double_Scalar_Alignment parameter.
1009         * gnat_ugn.texi: Regenerate.
1010
1011 2019-08-13  Eric Botcazou  <ebotcazou@adacore.com>
1012
1013         * exp_ch6.adb (Expand_Call_Helper): If back-end inlining is
1014         enabled, also instantiate the body of a generic unit containing
1015         a subprogram subject to aspect/pragma Inline_Always at
1016         optimization level zero.
1017         * sem_ch12.adb (Might_Inline_Subp): Minor tweak.
1018         (Analyze_Package_Instantiation): Do not instantiate the package
1019         body because of inlining considerations if the instantiation is
1020         done in a generic unit.  Move around similar condition involving
1021         the main unit.  Add test on Back_End_Inlining to processing for
1022         front-end inlining.
1023
1024 2019-08-13  Javier Miranda  <miranda@adacore.com>
1025
1026         * exp_disp.adb (Make_Secondary_DT): Handle record type
1027         derivations that have interface components located at fixed
1028         positions and interface components located at variable offset.
1029         The offset of components located at fixed positions is computed
1030         using the dummy object (similar to the case where all the
1031         interface components are located at fixed positions).
1032         (Make_DT): Build the dummy object for all tagged types that
1033         implement interface types (that is, build it also for types with
1034         variable size components), and use the dummy object to compute
1035         the offset of all tag components located at fixed positions when
1036         initializing the Interface_Table object.
1037
1038 2019-08-13  Justin Squirek  <squirek@adacore.com>
1039
1040         * gnatcmd.adb (GNATCmd): Add constant for new compiler switch
1041         --help-ada, and include usage subprogram. Add line to usage help
1042         explaining the new flag.
1043         (GNATCmd_Usage): Rename from locally declared Usage so as not to
1044         confuse with the newly imported version. Add new argument case
1045         for --help-ada and add bug report email to implicit display of
1046         help without the --help flag so as to unify output between the
1047         two cases.
1048
1049 2019-08-13  Dmitriy Anisimkov  <anisimko@adacore.com>
1050
1051         * libgnat/g-comlin.adb (Getopt): Quote unrecognized switch in
1052         Invalid_Switch exception message.
1053
1054 2019-08-13  Yannick Moy  <moy@adacore.com>
1055
1056         * sem_util.adb (Traverse_More_Func): Take into account
1057         Loop_Actions inside N_Iterated_Component_Association nodes.
1058         * sinfo.ads: Document correctly Loop_Actions as a field of nodes
1059         of kind N_Iterated_Component_Association.
1060
1061 2019-08-13  Claire Dross  <dross@adacore.com>
1062
1063         * libgnat/a-cfinve.adb, libgnat/a-cofove.adb (Find_Index,
1064         Reverse_Find_Index): Use bigger type to avoid range check
1065         failure at the last loop iteration.
1066
1067 2019-08-12  Dmitriy Anisimkov  <anisimko@adacore.com>
1068
1069         * libgnat/g-socket.adb (Is_IPv6_Address): Check that no less
1070         then 2 colons in IPv6 numeric address.
1071
1072 2019-08-12  Dmitriy Anisimkov  <anisimko@adacore.com>
1073
1074         * libgnat/g-comlin.ads, libgnat/g-comlin.adb (Getopt): Add
1075         parameter Quiet. Need to do not output error messages to
1076         console. Invalid_Switch exception generation surrounded by an
1077         error message.
1078
1079 2019-08-12  Ed Schonberg  <schonberg@adacore.com>
1080
1081         * exp_ch6.adb (Expand_Actuals. Add_Call_By_Copy_Code): Add code
1082         to generate proper checks when an actual for an in-out or out
1083         parameter has a non-null access type.  No constraints are
1084         applied to an inbound access parameter, but on exit a not-null
1085         check must be performed if the type of the actual requires it.
1086
1087 2019-08-12  Ed Schonberg  <schonberg@adacore.com>
1088
1089         * sem_util.adb (Is_Expaned_Priority_Attribute): Check whether
1090         call comes from a rewritten attribute before comparing name with
1091         Get_Ceiling run-time subprogram.
1092
1093 2019-08-12  Eric Botcazou  <ebotcazou@adacore.com>
1094
1095         * exp_util.ads (Component_May_Be_Bit_Aligned): Small comment
1096         tweaks.
1097         (Possible_Bit_Aligned_Component): Likewise.
1098         (Type_May_Have_Bit_Aligned_Components): Likewise.
1099         * exp_util.adb (Component_May_Be_Bit_Aligned): Likewise.
1100         (Possible_Bit_Aligned_Component): Likewise.
1101         (Type_May_Have_Bit_Aligned_Components): Likewise.
1102
1103 2019-08-12  Eric Botcazou  <ebotcazou@adacore.com>
1104
1105         * exp_ch4.adb (Expand_N_Op_Eq): Expand the array equality if
1106         either operand is a possibly unaligned slice.
1107         * exp_ch6.adb (Expand_Simple_Function_Return): Do not generate a
1108         copy for a possibly unaligned object if it is represented as a
1109         scalar.
1110         * exp_util.adb (Is_Possibly_Unaligned_Slice): Do not always
1111         return false if the target doesn't have strict alignment.
1112
1113 2019-08-12  Bob Duff  <duff@adacore.com>
1114
1115         * sem_ch12.adb (Instantiate_Package_Body): Remove suppression of
1116         checks in instances of internal units.
1117         * sem_ch6.adb (Analyze_Function_Return): Do not generate a
1118         constraint check on an extended_return_statement if the subtype
1119         of the return object in the statement is identical to the return
1120         subtype of the function.
1121
1122 2019-08-12  Bob Duff  <duff@adacore.com>
1123
1124         * libgnat/a-cbmutr.adb (Is_Reachable): Declare Idx to be of the
1125         base subtype.  Clearly it makes no sense to loop "while Idx >=
1126         0", if Idx is of a nonnegative subtype.
1127
1128 2019-08-12  Bob Duff  <duff@adacore.com>
1129
1130         * libgnat/a-tifiio.adb (Put_Scaled): Prevent AA from being
1131         negative, since Field is range 0 .. something.
1132
1133 2019-08-12  Bob Duff  <duff@adacore.com>
1134
1135         * doc/gnat_ugn/gnat_utility_programs.rst (gnatmetric, gnatpp,
1136         gnatstub): Remove documentation for Ada language version
1137         switches, and note that they are no longer needed.
1138
1139 2019-08-12  Gary Dismukes  <dismukes@adacore.com>
1140
1141         * sem_ch5.adb (Prepare_Param_Spec_Loop): Set the parents of the
1142         copied low and high bounds in the case where the loop range is
1143         given by a discrete_subtype_indication, to prevent hanging (or
1144         Assert_Failure) in Insert_Actions.
1145
1146 2019-08-12  Ed Schonberg  <schonberg@adacore.com>
1147
1148         * sem_ch6.adb (heck_Untagged_Equality): Verify that user-defined
1149         equality has the same profile as the predefined equality before
1150         applying legality rule in RM 4.5.2 (9.8).
1151
1152 2019-08-12  Bob Duff  <duff@adacore.com>
1153
1154         * libgnat/a-except.ads: Update obsolete comment, still making
1155         clear that this is a variant.  Add explicit default for Id
1156         component of Exception_Occurrence, because that value is used.
1157         Define Null_Occurrence less redundantly.
1158         * libgnat/a-einuoc.adb: Minor simplification of code.
1159
1160 2019-08-12  Justin Squirek  <squirek@adacore.com>
1161
1162         * libgnat/a-dhfina.adb, libgnat/a-dhfina.ads (Is_Simple_Name,
1163         Is_Root_Directory, Is_Parent_Directory,
1164         Is_Current_Directory_Name, Is_Relative_Name, Initial_Directory,
1165         Relative_Name, Compose): Add implementation and documentation.
1166         * libgnat/a-direct.adb (Containing_Directory): Modify routine to
1167         use routines from Ada.Directories.Hierarchical_File_Names and
1168         remove incorrect special case for parent directories.
1169         (Fetch_Next_Entry): Add check for current directory and parent
1170         directory and ignore them under certain circumstances.
1171         (Simple_Nmae): Add check for null result from
1172         Simple_Name_Internal and raise Name_Error.
1173         (Simple_Name_Internal): Add explicit check for root directories,
1174         sanitize trailing directory separators, and modify behavior so
1175         that current and parent directories are considered valid
1176         results.
1177         * Makefile.rtl: Add entry to GNATRTL_NONTASKING_OBJS.
1178
1179 2019-08-12  Eric Botcazou  <ebotcazou@adacore.com>
1180
1181         * freeze.adb (Freeze_Entity): Give the same error for an
1182         Object_Size clause on a variable-sized type as for a Size
1183         clause.
1184
1185 2019-08-12  Gary Dismukes  <dismukes@adacore.com>
1186
1187         * sem_prag.adb (Analyze_Pragma, Pragma_Suppress_Initialization):
1188         For private types, set the Suppress_Initialization flag on the
1189         Full_View of the entity rather than the entity's base type.
1190
1191 2019-08-12  Yannick Moy  <moy@adacore.com>
1192
1193         * aspects.adb, aspects.ads (Aspect_No_Caching): New aspect.
1194         * contracts.adb, contracts.ads (Add_Contract_Item): Add handling
1195         of No_Caching.
1196         (Analyze_Object_Contract): Add handling of No_Caching.
1197         * einfo.adb, einfo.ads
1198         (Get_Pragma): Add handling of No_Caching.
1199         * doc/gnat_rm/implementation_defined_aspects.rst,
1200         doc/gnat_rm/implementation_defined_pragmas.rst: Document new
1201         aspect/pragma.
1202         * gnat_rm.texi: Regenerate.
1203         * par-prag.adb (Prag): New pragma Pragma_No_Caching.
1204         * sem_ch13.adb (Analyze_Aspect_Specifications,
1205         Check_Aspect_At_Freeze_Point): Add handling of No_Caching.
1206         * sem_prag.adb (Analyze_Pragma): Deal with pragma No_Caching.
1207         * sem_prag.ads (Analyze_External_Property_In_Decl_Part): Now
1208         applies to No_Caching.
1209         * sem_util.adb, sem_util.ads (Is_Effectively_Volatile): Add
1210         handling of No_Caching.
1211         (No_Caching_Enabled): New query function.
1212         * snames.ads-tmpl: New names for pragma.
1213
1214 2019-08-12  Yannick Moy  <moy@adacore.com>
1215
1216         * sem_util.adb, sem_util.ads (Traverse_More_Func,
1217         Traverse_More_Proc): Add formal parameter for Itypes traversal.
1218
1219 2019-08-12  Yannick Moy  <moy@adacore.com>
1220
1221         * exp_attr.adb, exp_attr.ads (Expand_Size_Attribute): New
1222         procedure to share part of the attribute expansion with
1223         GNATprove mode.
1224         (Expand_N_Attribute_Reference): Extract part of the
1225         Size/Object_Size expansion in the new procedure
1226         Expand_Size_Attribute.
1227         * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Expand
1228         Size/Object_Size attributes using the new procedure
1229         Expand_Size_Attribute.
1230
1231 2019-08-12  Yannick Moy  <moy@adacore.com>
1232
1233         * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Only
1234         expand Enum_Rep attribute when its parameter is a literal.
1235
1236 2019-08-12  Justin Squirek  <squirek@adacore.com>
1237
1238         * sem_eval.adb (Check_Non_Static_Context): Add a condition to
1239         determine if a range violation constitues a warning or an error.
1240         (Out_Of_Range): Add a condition to determine if a range
1241         violation constitues a warning or an error.
1242
1243 2019-08-12  Eric Botcazou  <ebotcazou@adacore.com>
1244
1245         * exp_ch4.adb (Real_Range_Check): Do not rewrite the conversion
1246         node but its expression instead, after having fetched its
1247         current value.  Clear the Do_Range_Check flag on entry.  Return
1248         early for a rewritten float-to-float conversion.  Remove
1249         redundant local variable.  Suppress all checks when inserting
1250         the temporary and do not reanalyze the node.
1251
1252 2019-08-12  Eric Botcazou  <ebotcazou@adacore.com>
1253
1254         * sprint.ads: Minor comment tweak.
1255
1256 2019-08-12  Eric Botcazou  <ebotcazou@adacore.com>
1257
1258         * checks.adb (Insert_Valid_Check): Do not retrieve the
1259         Do_Range_Check flag from the Original_Node but from the
1260         Validated_Object.  Remove useless bypass for floating-point
1261         types.
1262
1263 2019-08-12  Yannick Moy  <moy@adacore.com>
1264
1265         * sem_util.adb, sem_util.ads (Traverse_More_Func,
1266         Traverse_More_Proc): New traversal subprograms.
1267
1268 2019-08-12  Jerome Lambourg  <lambourg@adacore.com>
1269
1270         * libgnarl/s-taprop__vxworks.adb (Abort_Handler): Only call
1271         s-tpopsp.Self when actually needed.
1272
1273 2019-08-12  Eric Botcazou  <ebotcazou@adacore.com>
1274
1275         * exp_ch4.adb (Discrete_Range_Check): Return if checks are
1276         suppressed.
1277
1278 2019-08-12  Eric Botcazou  <ebotcazou@adacore.com>
1279
1280         * sem_res.adb: Add with & use clause for Sem_Mech and
1281         alphabetize.
1282         (Resolve_Actuals): Do not apply a scalar range check for the
1283         source of a conversion whose result is passed by reference to a
1284         valued procedure.
1285
1286 2019-08-12  Eric Botcazou  <ebotcazou@adacore.com>
1287
1288         * checks.adb (Insert_Valid_Check): Reset the Do_Range_Check flag
1289         on the validated object.
1290         * exp_ch6.adb (Add_Call_By_Copy_Code): Reset the Do_Range_Check
1291         flag on the actual here, as well as on the Expression if the
1292         actual is a N_Type_Conversion node.
1293         (Add_Validation_Call_By_Copy_Code): Generate the incoming range
1294         check if needed and reset the Do_Range_Check flag on the
1295         Expression if the actual is a N_Type_Conversion node.
1296         (Expand_Actuals): Do not reset the Do_Range_Check flag here.
1297         Generate the incoming range check for In parameters here instead
1298         of...
1299         (Expand_Call_Helper): ...here.  Remove redudant condition.
1300         * sem_res.adb (Resolve_Actuals): Use local variable A_Typ and
1301         remove obsolete comments.
1302         (Resolve_Type_Conversion): Do not force the Do_Range_Check flag
1303         on the operand if range checks are suppressed.
1304
1305 2019-08-12  Eric Botcazou  <ebotcazou@adacore.com>
1306
1307         * checks.adb (Activate_Range_Check): Remove redundant argument.
1308         (Generate_Range_Check): Likewise.
1309         (Apply_Float_Conversion_Check): Reset the Do_Range_Check flag on
1310         entry and remove redundant condition.
1311
1312 2019-08-02  Alexandre Oliva  <oliva@adacore.com>
1313
1314         * libgnat/a-exexpr.adb (Begin_Handler_v1, End_Handler_v1): New.
1315         (Claimed_Cleanup): New.
1316         (Begin_Handler, End_Handler): Document.
1317         * gcc-interface/trans.c (gigi): Switch to exception handler
1318         ABI #1.
1319         (Exception_Handler_to_gnu_gcc): Save the original cleanup
1320         returned by begin handler, pass it to end handler, and use
1321         EH_ELSE_EXPR to pass a propagating exception to end handler.
1322         (gnat_to_gnu): Leave the exception pointer alone for reraise.
1323         (add_cleanup): Handle EH_ELSE_EXPR, require it by itself.
1324
1325 2019-07-23  Ed Schonberg  <schonberg@adacore.com>
1326
1327         * sem_ch13.adb (Check_Aspect_At_End_Of_Declarations,
1328         Freeze_Entity_Checks): Include Aspect_CPU with other aspects
1329         whose expresssion may depend on a discriminant, and thus require
1330         that components of the type be made visible.
1331
1332 2019-07-23  Eric Botcazou  <ebotcazou@adacore.com>
1333
1334         * checks.adb (Convert_And_Check_Range): Add Suppress parameter
1335         and pass it in the call to Insert_Actions.  Rename local
1336         variable.
1337         (Generate_Range_Check): Minor comment fixes.  Pass Range_Check
1338         in the first call to Convert_And_Check_Range and All_Checks in
1339         the second call.
1340         * exp_ch4.adb (Expand_N_Type_Conversion): Reset the
1341         Do_Overflow_Check flag in the float-to-float case too if there
1342         is also a range check.
1343
1344 2019-07-23  Eric Botcazou  <ebotcazou@adacore.com>
1345
1346         * checks.adb (Activate_Overflow_Check): Remove redundant
1347         argument.
1348         * exp_ch4.adb (Discrete_Range_Check): Reset the overflow flag.
1349         (Expand_N_Type_Conversion): Do not reset it here.
1350
1351 2019-07-23  Eric Botcazou  <ebotcazou@adacore.com>
1352
1353         * repinfo.adb (List_Component_Layout): Pass Decimal to UI_Write.
1354         (Write_Val): Likewise.
1355
1356 2019-07-23  Ed Schonberg  <schonberg@adacore.com>
1357
1358         * aspects.ads: New table Operational_Aspect, used to distinguish
1359         between aspects that are view-specific, such as those related to
1360         iterators, and representation aspects that apply to all views of
1361         a type.
1362         * aspects.adb (Find_Aspect): If the aspect being sought is
1363         operational, do not ecamine the full view of a private type to
1364         retrieve it.
1365         * sem_ch5.adb (Analyze_Iterator_Specification): Improve error
1366         message when the intended domain of iteration does not implement
1367         the required iterator aspects.
1368
1369 2019-07-23  Yannick Moy  <moy@adacore.com>
1370
1371         * sem_spark.ads (Is_Local_Context): New function.
1372         * sem_spark.adb (Check_Declaration): Issue errors on violations
1373         of SPARK RM 3.10(4)
1374         (Process_Path): Do not issue error on borrow/observe during
1375         elaboration, as these are caught by the new rule.
1376
1377 2019-07-23  Yannick Moy  <moy@adacore.com>
1378
1379         * exp_ch7.adb (Create_Finalizer): Force finalizer not to be
1380         Ghost enabled.
1381         * exp_dbug.adb (Get_External_Name): Explain special case of
1382         Ghost finalizer.
1383
1384 2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>
1385
1386         * repinfo.adb (List_Entities): Also list compiled-generated
1387         types present as Etype of objects.
1388
1389 2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>
1390
1391         * sinfo.ads: Update the documentation about the
1392         Do_Division_Check, Do_Overflow_Check and Do_Range_Check flags.
1393
1394 2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>
1395
1396         * exp_ch4.adb (Expand_N_Type_Conversion): Beef up comment.
1397         (Fixup_Universal_Fixed_Operation): Set the base type instead of
1398         the type of the enclosing type conversion on the operation.
1399
1400 2019-07-22  Ed Schonberg  <schonberg@adacore.com>
1401
1402         * exp_ch4.adb (Expand_N_In): Do not suggest the use of attribute
1403         'Valid as a replacement for a range check on a discrete type
1404         when the bounds of the range are given by type conversions,
1405         because in such a case there are distinct types involved and the
1406         subbested attribute replacement would be misplaced.
1407
1408 2019-07-22  Yannick Moy  <moy@adacore.com>
1409
1410         * sem_spark.adb (Get_Root_Object, Is_Path_Expression,
1411         Is_Subpath_Expression): Add parameter Is_Traversal to adapt
1412         these functions to the case of paths returned from a traversal
1413         function.
1414         (Read_Indexes): Handle the case of an if-expression or
1415         case-expression.
1416         (Check_Statement): Check Emit_Messages only when issuing an
1417         error message. This is important as Emit_Messages may store the
1418         information that an error was detected.
1419
1420 2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>
1421
1422         * checks.adb (Apply_Type_Conversion_Checks): Do not set
1423         Do_Range_Check flag on conversions from fixed-point types
1424         either.
1425         * exp_attr.adb: Add use and with clause for Expander.
1426         (Expand_N_Attribute_Reference) <Fixed_Value, Integer_Value>: Set
1427         the Conversion_OK flag and do not generate overflow/range checks
1428         manually.
1429         * exp_ch4.adb (Expand_N_Qualified_Expression): Remove
1430         superfluous clearing of Do_Range_Check flag.
1431         (Discrete_Range_Check): New procedure to generate a range check
1432         for discrete types.
1433         (Real_Range_Check): Remove redundant local variable and adjust.
1434         Remove useless shortcut.  Clear Do_Range_Check flag on all
1435         paths.
1436         (Expand_N_Type_Conversion): Remove redundant test on
1437         Conversion_OK.  Call Discrete_Range_Check to generate range
1438         checks on discrete types.  Remove obsolete code for
1439         float-to-integer conversions.  Add code to generate range checks
1440         for conversions involving fixed-point types.
1441
1442 2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>
1443
1444         * sprint.ads: Fix pasto in comment.
1445
1446 2019-07-22  Javier Miranda  <miranda@adacore.com>
1447
1448         * sem_res.adb (Resolve_Actuals): Replace code that displaces the
1449         pointer to an allocated object to reference its secondary
1450         dispatch table by a type conversion (which takes care of
1451         handling all cases).
1452
1453 2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>
1454
1455         * sprint.adb (Sprint_Node_Actual)
1456         <N_Decimal_Fixed_Point_Definition>: Swap a couple of spaces.
1457         (Write_Itype): Minor consistency fixes throughout.  Add support
1458         for printing ordinary and decimal fixed-point types and
1459         subtypes.
1460
1461 2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>
1462
1463         * exp_attr.adb (Expand_Loop_Entry_Attribute): Beef up comment.
1464
1465 2019-07-22  Ed Schonberg  <schonberg@adacore.com>
1466
1467         * libgnat/s-valboo.ads, libgnat/s-valcha.ads,
1468         libgnat/s-valdec.ads, libgnat/s-valenu.ads,
1469         libgnat/s-valint.ads, libgnat/s-vallld.ads,
1470         libgnat/s-vallli.ads, libgnat/s-valllu.ads,
1471         libgnat/s-valrea.ads, libgnat/s-valuns.ads,
1472         libgnat/s-valwch.ads: Change categorization of packages that
1473         implement attribute 'Value from Pure to Preelaborate, to prevent
1474         undesirable optimizations when the evaluation of the attribute
1475         raises Constraint_Error, but subsequent use of the result of
1476         this evsaluation is removed by a subsequent optimization.
1477
1478 2019-07-22  Ed Schonberg  <schonberg@adacore.com>
1479
1480         * sem_warn.adb (Check_References): Do not emit s warning on a
1481         referenced entity with no explicit assignment if the type of the
1482         entity has Preelaborable_Initialixation, such as
1483         Exception_Occurrence.
1484
1485 2019-07-22  Javier Miranda  <miranda@adacore.com>
1486
1487         * exp_ch4.adb (Size_In_Storage_Elements): Improve the expansion
1488         to handle array indexes that are modular type.
1489         (Expand_N_Allocator): For 32-bit targets improve the generation
1490         of the runtime check associated with large arrays supporting
1491         arrays initialized with a qualified expression.
1492         * libgnat/s-imenne.adb (Image_Enumeration_8,
1493         Image_Enumeration_16, Image_Enumeration_32): Define the index of
1494         Index_Table with range Natural'First .. Names'Length since in
1495         the worst case all the literals of the enumeration type would be
1496         single letter literals and the Table built by the frontend would
1497         have as many components as the length of the names string. As a
1498         result of this enhancement, the internal tables declared using
1499         Index_Table have a length closer to the real needs, thus
1500         avoiding the declaration of large arrays on 32-bit CCG targets.
1501
1502 2019-07-22  Yannick Moy  <moy@adacore.com>
1503
1504         * sem_ch3.adb (Constrain_Access): Issue a message about ignored
1505         constraint.
1506
1507 2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>
1508
1509         * sem_ch8.adb (End_Use_Type): Reset the In_Use flag on the
1510         class-wide type if the type is tagged.
1511         (Use_One_Type): Add commentary on the handling of the class-wide
1512         type.
1513
1514 2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>
1515
1516         * einfo.ads (Is_For_Access_Subtype): Delete.
1517         (Set_Is_For_Access_Subtype): Likewise.
1518         * einfo.adb (Is_For_Access_Subtype): Likewise.
1519         (Set_Is_For_Access_Subtype): Likewise.
1520         (Write_Entity_Flags): Do not write Is_For_Access_Subtype.
1521         * exp_ch4.adb (Expand_N_Selected_Component): Do not deal with
1522         it.
1523         * exp_spark.adb (Expand_SPARK_N_Selected_Component): Likewise.
1524         * sem_ch4.adb (Analyze_Explicit_Dereference): Likewise.
1525         * sem_ch3.adb (Build_Discriminated_Subtype): Do not build a
1526         special private subtype for access-to-record subtypes.
1527
1528 2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>
1529
1530         * sem_ch3.adb (Complete_Private_Subtype): Rework the setting of
1531         the Etype of the full view for full base types that cannot
1532         contain any discriminant.  Remove code and comment about it in
1533         the main path.
1534
1535 2019-07-22  Ed Schonberg  <schonberg@adacore.com>
1536
1537         * sem_ch3.adb (Convert_Bound): Subsidiary of
1538         Floating_Point_Type_Declaration, to handle properly range
1539         specifications with bounds that may include static constants of
1540         a given type rather than real literals.
1541
1542 2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>
1543
1544         * sem_aggr.adb (Rewrite_Bound): Be prepared for discriminals
1545         too.
1546         (Rewrite_Range;): Minor tweak.
1547         (Resolve_Record_Aggregate): For a component with default
1548         initialization whose expression is an array aggregate, also
1549         rewrite the bounds of the component associations, if any.
1550
1551 2019-07-22  Gary Dismukes  <dismukes@adacore.com>
1552
1553         * exp_ch5.adb (Expand_N_Case_Statement): In the case where a
1554         case statement is rewritten as an equivalent if statement,
1555         inherit the From_Condition_Expression flag from the case
1556         statement.
1557
1558 2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>
1559
1560         * sem_ch8.adb (Check_Constrained_Object): Further extend the
1561         special optimization to all limited types.
1562
1563 2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>
1564
1565         * exp_attr.adb (Expand_N_Attribute_Reference)
1566         <Attribute_Enum_Val>: Set No_Truncation on the
1567         N_Unchecked_Type_Conversion built around the argument passed to
1568         the attribute.
1569
1570 2019-07-22  Nicolas Roche  <roche@adacore.com>
1571
1572         * libgnat/s-valrea.adb (Scan_Real): Ignore non significative
1573         digits to avoid converging to infinity in some cases.
1574
1575 2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>
1576
1577         * libgnat/g-encstr.adb (Encode_Wide_String): Fix oversight.
1578         (Encode_Wide_Wide_String): Likewise.
1579
1580 2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>
1581
1582         * sem_warn.adb (Find_Var): Bail out for a function call with an
1583         Out or In/Out parameter.
1584
1585 2019-07-22  Nicolas Roche  <roche@adacore.com>
1586
1587         * terminals.c (__gnat_tty_waitpid): Support both blocking and
1588         not blocking mode.
1589         * libgnat/g-exptty.ads (Is_Process_Running): New function.
1590         * libgnat/g-exptty.adb (Close): Don't try to interrupt/terminate
1591         a process if it is already dead.
1592
1593 2019-07-22  Ed Schonberg  <schonberg@adacore.com>
1594
1595         * freeze.adb (Freeze_Fixed_Point_Type): When freezing a
1596         fixed-point subtype, check whether the parent type declarastion
1597         includes an aspect specification for the 'Small type attribute,
1598         and inherit the specified value.
1599
1600 2019-07-22  Javier Miranda  <miranda@adacore.com>
1601
1602         * freeze.adb (Freeze_Subprogram): Check that C++ constructors
1603         must have external or link name.
1604
1605 2019-07-22  Ed Schonberg  <schonberg@adacore.com>
1606
1607         * sem_res.adb (Resolve_Selected_Component): If the prefix has a
1608         deferred reference, generate the correct reference now, to
1609         indicate that the previous assignment is used.  This prevents
1610         spurious warnings on useless assignments when compiling with all
1611         warnings enabled. when there is a subsequent call in the same
1612         stqtement list, in which the prefix of the selected component is
1613         the actual for an out parameter.
1614
1615 2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>
1616
1617         * exp_attr.adb (Expand_Loop_Entry_Attribute): Copy the condition
1618         of a while loop instead of simply relocating it.
1619
1620 2019-07-18  Arnaud Charlet  <charlet@adacore.com>
1621
1622         * Makefile.rtl, expect.c, env.c, aux-io.c, mkdir.c, initialize.c,
1623         cstreams.c, raise.c, tracebak.c, adadecode.c, init.c, raise-gcc.c,
1624         argv.c, adaint.c, adaint.h, ctrl_c.c, sysdep.c, rtinit.c, cio.c,
1625         seh_init.c, exit.c, targext.c: Introduce a "STANDALONE" mode where C
1626         runtime files do not have any dependency on GCC include files.
1627         Remove unnecessary includes.
1628         Remove remaining references to VMS in runtime C file.
1629         * runtime.h: new File.
1630
1631 2019-07-13  Andreas Schwab  <schwab@linux-m68k.org>
1632
1633         * Makefile.rtl: Use g-sercom__linux.adb for all linuxes.
1634
1635 2019-07-11  Piotr Trojanek  <trojanek@adacore.com>
1636
1637         * lib-writ.adb (Ensure_System_Dependency,
1638         Up_To_Date_ALI_File_Exists, Write_ALI): Replace low-level access
1639         to table with a high-level query.
1640
1641 2019-07-11  Piotr Trojanek  <trojanek@adacore.com>
1642
1643         * checks.adb: Fix typo in comment.
1644         * sem.adb (Semantics): Avoid repeated calls to
1645         In_Extended_Main_Source_Unit by reusing an already-cached
1646         result.
1647         * sem_util.adb (First_Global): Fix style.
1648
1649 2019-07-11  Yannick Moy  <moy@adacore.com>
1650
1651         * sem_res.adb (Resolve_Call): Do not perform dimensionality
1652         checking on inlined bodies.
1653
1654 2019-07-11  Yannick Moy  <moy@adacore.com>
1655
1656         * debug.adb: Flip meaning of debug switch -gnatdF.
1657
1658 2019-07-11  Yannick Moy  <moy@adacore.com>
1659
1660         * sem_eval.adb (Is_Same_Value): Add special case for rewritten
1661         Loop_Entry attribute.
1662
1663 2019-07-11  Claire Dross  <dross@adacore.com>
1664
1665         * gnat1drv.adb: SPARK checking rules for pointer aliasing are
1666         moved to GNATprove backend.
1667         * sem_spark.ads, sem_spark.adb (Sem_SPARK): Is now a generic
1668         unit. Takes as parameters:
1669          - Retysp which is used to query the most underlying type
1670            visible in SPARK. We do not introduce aliasing checks for
1671            types which are not visibly deep.
1672          - Component_Is_Visible_In_SPARK is used to avoid doing pointer
1673            aliasing checks on components which are not visible in SPARK.
1674          - Emit_Messages returns True in the second phase of SPARK
1675            analysis. Error messages for failed aliasing checks are only
1676            output in this case.
1677         Additionally, errors on constructs not supported in SPARK are
1678         removed as duplicates of marking errors. Components are stored
1679         in the permission map using their original component to avoid
1680         inconsistencies between components of different views of the
1681         same type.
1682         (Check_Expression): Handle delta constraints.
1683         (Is_Deep): Exported so that we can check for SPARK restrictions
1684         on deep types inside SPARK semantic checkings.
1685         (Is_Traversal_Function): Exported so that we can check for SPARK
1686         restrictions on traversal functions inside SPARK semantic
1687         checkings.
1688         (Check_Call_Statement, Read_Indexes): Check wether we are
1689         dealing with a subprogram pointer type before querying called
1690         entity.
1691         (Is_Subpath_Expression): Image attribute can appear inside a
1692         path.
1693         (Check_Loop_Statement): Correct order of statements in the loop.
1694         (Check_Node): Ignore raise nodes.
1695         (Check_Statement): Use Last_Non_Pragma to get the object
1696         declaration in an extended return statement.
1697
1698 2019-07-11  Patrick Bernardi  <bernardi@adacore.com>
1699
1700         * bindgen.adb (Gen_Main): Do not generate a reference to
1701         Ada_Main_Program_Name when the Minimal_Binder flag is set.
1702         (Gen_Output_File_Ada): Do not output GNAT_Version and
1703         Ada_Main_Program_Name info if Minimal_Binder flag is set.
1704         * bindusg.adb: Add documentation for new -minimal switch.
1705         * gnatbind.adb (Scan_Bind_Arg): Scan -minimal switch.
1706         * opt.ads: Add new global flag Minimal_Binder to indicate if the
1707         binder should not produce global variables.
1708         * doc/gnat_ugn/building_executable_programs_with_gnat.rst:
1709         Update documentation with new binder -minimal switch.
1710         * gnat_ugn.texi: Regenerate.
1711
1712 2019-07-11  Eric Botcazou  <ebotcazou@adacore.com>
1713
1714         * Makefile.rtl: Add warning note about compilation flags and
1715         capitalize.
1716
1717 2019-07-11  Ed Schonberg  <schonberg@adacore.com>
1718
1719         * exp_ch9.adb (Expand_N_Protected_Type_Declaaration): New
1720         subsidiary routine Replace_Access_Definition, to handle properly
1721         a protected type PT one of whose private components is of type
1722         access PT.
1723
1724 2019-07-11  Dmitriy Anisimkov  <anisimko@adacore.com>
1725
1726         * libgnat/g-socket.ads (Level_Type): Add enumerators for
1727         IP_Protocol_For_ICMP, IP_Protocol_For_IGMP,
1728         IP_Protocol_For_RAW_Level.
1729         * libgnat/g-socket.adb (Levels): Handle them.
1730         * s-oscons-tmplt.c: Import socket protocols defined in
1731         netinet/in.h.
1732
1733 2019-07-11  Claire Dross  <dross@adacore.com>
1734
1735         * libgnat/a-cfhama.adb, libgnat/a-cfhase.adb (Free): Do not
1736         reset the Has_Element flag if no element is freed.
1737
1738 2019-07-11  Arnaud Charlet  <charlet@adacore.com>
1739
1740         * errno.c: Remove obsolete support for MaRTE OS.
1741
1742 2019-07-11  Ed Schonberg  <schonberg@adacore.com>
1743
1744         * exp_ch4.adb (Expand_N_Type_Conversion): If a predicate check
1745         is generated, analyze it with range check suppressed, because
1746         that check has been previously applied.
1747         * exp_ch5.adb (Expand_N_Assignment_Statement): If the RHS is a
1748         type conversion to the type of the LHS, do not apply a predicate
1749         check to the RHS because it will have been generated already
1750         during its expansion.
1751         * exp_ch6.adb (Can_Fold_Predicate_Call): Extend processing to
1752         handle a predicate check on a constant entity whose value is
1753         static.
1754
1755 2019-07-11  Hristian Kirtchev  <kirtchev@adacore.com>
1756
1757         * bindo.adb: Remove the documentation of switch -d_N because it
1758         is no longer in use.
1759         * bindo-graphs.ads, bindo-graphs.adb (Is_Spec_Before_Body_Edge):
1760         New routine.
1761         * bindo-writers.adb (Write_Dependency_Edge): Add the missing
1762         case of a spec-before-body edge.
1763
1764 2019-07-11  Dmitriy Anisimkov  <anisimko@adacore.com>
1765
1766         * libgnat/g-socket.ads (Mode_Type): Add a Socket_Raw enumerator.
1767         * libgnat/g-socket.adb (Modes): Handle Socket_Raw.
1768
1769 2019-07-11  Justin Squirek  <squirek@adacore.com>
1770
1771         * exp_ch9.adb (Build_Private_Protected_Declaration): Add
1772         exception for the moving of pragmas to internally generated
1773         specs for pragma Unreferenced.
1774
1775 2019-07-11  Bob Duff  <duff@adacore.com>
1776
1777         * doc/gnat_ugn/gnat_utility_programs.rst: Fix inconsistent
1778         documentation for gnatmetric.
1779         * gnat_ugn.texi: Regenerate.
1780
1781 2019-07-11  Bob Duff  <duff@adacore.com>
1782
1783         * doc/gnat_ugn/gnat_utility_programs.rst: Document gnatpp's
1784         --spaces-only switch.
1785
1786 2019-07-11  Hristian Kirtchev  <kirtchev@adacore.com>
1787
1788         * sem_util.adb (Null_Status): Assume that an erroneous construct
1789         has an undefined null status.
1790
1791 2019-07-11  Hristian Kirtchev  <kirtchev@adacore.com>
1792
1793         * checks.adb, exp_ch6.adb, gnat1drv.adb, sem_aux.adb,
1794         sem_ch2.adb, sem_ch8.adb, sem_res.adb: Minor reformatting.
1795
1796 2019-07-11  Hristian Kirtchev  <kirtchev@adacore.com>
1797
1798         * sem_ch8.adb (Analyze_Object_Renaming): Obtain the object being
1799         renamed using routine Get_Object_Name which takes care of
1800         various name forms.
1801         (Get_Object_Name): New routine.
1802
1803 2019-07-11  Ed Schonberg  <schonberg@adacore.com>
1804
1805         * exp_ch6.adb (Can_Fold_Predicate_Call): New function,
1806         subsidiary of Expand_Call_Helper, to compute statically a
1807         predicate check when the argument is a static integer.
1808
1809 2019-07-11  Hristian Kirtchev  <kirtchev@adacore.com>
1810
1811         * sem_res.adb (Resolve_Op_Not): Do not rewrite an equality
1812         operator into a function call when the operator is intrinsic.
1813
1814 2019-07-11  Thomas Quinot  <quinot@adacore.com>
1815
1816         * sem_prag.adb (Analyze_Pragma, case pragma Check): Do not call
1817         Set_SCO_Pragma_Enabled for the dynamic predicate case.
1818
1819 2019-07-11  Hristian Kirtchev  <kirtchev@adacore.com>
1820
1821         * exp_util.ads, exp_util.adb (Needs_Finalization): Move to
1822         Sem_Util.
1823         * sem_ch9.adb (Analyze_Protected_Definition): Code cleanup. Mark
1824         the protected type as having controlled components when it
1825         contains at least one such component.
1826         * sem_util.ads, sem_util.adb (Needs_Finalization): New
1827         function.
1828
1829 2019-07-11  Eric Botcazou  <ebotcazou@adacore.com>
1830
1831         * alloc.ads (Rep_JSON_Table_Initial): New constant.
1832         (Rep_JSON_Table_Increment): Likewise.
1833         * debug.adb: Document -gnatd_j switch.
1834         * gcc-interface/Make-lang.in (GNAT_ADA_OBJS): Add
1835         repinfo-input.o.
1836         * gnat1drv.adb: Add with clause for Repinfo.Input.
1837         Add with and use clauses for Sinput.
1838         (Read_JSON_Files_For_Repinfo): New procedure.
1839         (Gnat1drv1): Deal with -gnatd_j switch.
1840         * repinfo-input.ad[sb]: New unit.
1841         * snames.ads-tmpl (Name_Discriminant): New constant.
1842         (Name_Operands): Likewise.
1843
1844 2019-07-11  Justin Squirek  <squirek@adacore.com>
1845
1846         * checks.adb (Apply_Accessibility_Check): Add check for constant
1847         folded conditions on accessibility checks.
1848
1849 2019-07-11  Arnaud Charlet  <charlet@adacore.com>
1850
1851         * libgnarl/g-thread.ads, libgnarl/g-thread.adb (Get_Thread):
1852         Update comments. Add new version taking a Task_Id.
1853
1854 2019-07-11  Hristian Kirtchev  <kirtchev@adacore.com>
1855
1856         * bindo.adb: Update the section of switches and debugging
1857         elaboration issues.
1858         * bindo.ads: Add type Elaboration_Phase.
1859         * bindo-augmentors.adb: Add use clause for
1860         Bindo.Writers.Phase_Writers.
1861         (Augment_Library_Graph): Signal the start and end of the
1862         aubmentation phase.
1863         * bindo-builders.adb: Add with and use clause for Bindo.Writers.
1864         Add use clause for Bindo.Writers.Phase_Writers.
1865         (Build_Invocation_Graph): Signal the start and end of the
1866         invocation graph construction phase.
1867         (Build_Library_Graph): Signal the start and end of the library
1868         graph construction phase.
1869         * bindo-diagnostics.adb: Add use clause for
1870         Bindo.Writers.Phase_Writers.
1871         (Diagnose_Cycle): Signal the start and end of the cycle
1872         diagnostic phase.
1873         * bindo-elaborators.adb: Add use clause for
1874         Bindo.Writers.Phase_Writers.
1875         (Elaborate_Units): Signal the start and end of the unit
1876         elaboration phase.
1877         * bindo-graphs.adb: Add use clause for
1878         Bindo.Writers.Phase_Writers.
1879         (Find_Components): Signal the start and end of the component
1880         discovery phase.
1881         (Find_Cycles): Signal the start and end of the cycle discovery
1882         phase.
1883         * bindo-units.adb: Add with and use clause for Bindo.Writers.
1884         Add use clause for Bindo.Writers.Phase_Writers.
1885         (Collect_Elaborable_Units): Signal the start and end of the unit
1886         collection phase.
1887         * bindo-validators.adb: Add with and use clause for
1888         Bindo.Writers.  Add use clause for Bindo.Writers.Phase_Writers.
1889         (Validate_Cycles, Validate_Elaboration_Order,
1890         Validate_Invocation_Graph, Validate_Library_Graph): Signal the
1891         start and end of the libray graph validation phase.
1892         * bindo-writers.ads, bindo-writers.adb: Add new nested package
1893         Phase_Writers.
1894         * debug.adb: Update the documentation of switch d_S.
1895
1896 2019-07-11  Yannick Moy  <moy@adacore.com>
1897
1898         * sem_res.adb (Check_Argument_Order): Special case calls to
1899         operators.
1900
1901 2019-07-10  Dmitriy Anisimkov  <anisimko@adacore.com>
1902
1903         * libgnat/s-ststop.adb: Remove System.Strings.Stream_Ops
1904         dependence on System.Streams.Stream_IO.
1905
1906 2019-07-10  Ed Schonberg  <schonberg@adacore.com>
1907
1908         * sem_ch2.adb (Analyze_Integer_Literal): Preserve the type of
1909         the literal if prior analysis determined that its type is a
1910         modular integer type.
1911
1912 2019-07-10  Doug Rupp  <rupp@adacore.com>
1913
1914         * init.c: Do not attempt to re-arm guard page on x86_64-vx7(r2).
1915
1916 2019-07-10  Ed Schonberg  <schonberg@adacore.com>
1917
1918         * sem_ch8.adb (Check_Constrained_Object): A record that is
1919         limited because of the presence of a limited component is
1920         constrained, and no subtype indiciation needs to be created for
1921         it, just as is the case for declared limited records.
1922
1923 2019-07-10  Yannick Moy  <moy@adacore.com>
1924
1925         * sem_aux.adb, sem_aux.ads (Is_Protected_Operation): New
1926         function to determine if a subprogram is protected.
1927         * sem_spark.adb (Setup_Protected_Components): New procedure to
1928         add protected components to the environment.
1929         (Check_Callable_Body): Call the new Setup_Protected_Components.
1930         (Check_Package_Spec): Merge local environment with enclosing one
1931         when done.
1932
1933 2019-07-10  Claire Dross  <dross@adacore.com>
1934
1935         * sem_spark.adb (Check_Expression): Allow digits constraints as
1936         input.
1937         (Illegal_Global_Usage): Pass in the entity.
1938         (Is_Subpath_Expression): New function to allow different nodes
1939         as inner parts of a path expression.
1940         (Read_Indexes): Allow concatenation and aggregates with box
1941         expressions.  Allow attributes Update and Loop_Entry.
1942         (Check_Expression): Allow richer membership test.
1943         (Check_Node): Ignore bodies of generics.
1944         (Get_Root_Object): Allow concatenation and attributes.
1945
1946 2019-07-10  Hristian Kirtchev  <kirtchev@adacore.com>
1947
1948         * sem_ch6.adb (Check_Discriminant_Conformance): Use Find_Type to
1949         discover the type of a full view discriminant.
1950
1951 2019-07-10  Arnaud Charlet  <charlet@adacore.com>
1952
1953         * doc/gnat_ugn/gnat_and_program_execution.rst: Improve gnatmem's
1954         doc for the depth switch.
1955
1956 2019-07-10  Bob Duff  <duff@adacore.com>
1957
1958         * doc/gnat_ugn/gnat_utility_programs.rst: Document gnatpp's
1959         --source-line-breaks switch.
1960
1961 2019-07-10  Justin Squirek  <squirek@adacore.com>
1962
1963         * doc/gnat_rm/implementation_defined_attributes.rst: Add mention
1964         of 'Image attribute with 'Img's entry to mention additional
1965         added 2012 usage of Obj'Image.
1966         * doc/gnat_rm/implementation_defined_pragmas.rst: Correct
1967         mispelling of Async_Writers.
1968         * gnat_rm.texi: Regenerate.
1969         * sem_prag.adb (Analyze_Pragma): Correct mispelling of
1970         Async_Writers.
1971         * sem_util.adb (State_Has_Enabled_Property): Correct mispelling
1972         of Async_Writers.
1973
1974 2019-07-10  Simon Buist  <buist@adacore.com>
1975
1976         * sem_util.ads (Child_Prefix): New constant.
1977         * sem_util.adb (Unique_Name): Add a special prefix to child
1978         units that have a nested subprogram or package.
1979
1980 2019-07-10  Arnaud Charlet  <charlet@adacore.com>
1981
1982         * sfn_scan.adb (Scan_SFN_Pragmas): Add pragma Assert.
1983
1984 2019-07-10  Hristian Kirtchev  <kirtchev@adacore.com>
1985
1986         * sem_ch3.adb (Check_Nonoverridable_Aspects): Correct the
1987         spelling in certain error messages.
1988         (Check_Pragma_Implemented): Correct the spelling in certain
1989         error messages.
1990
1991 2019-07-10  Eric Botcazou  <ebotcazou@adacore.com>
1992
1993         * Makefile.rtl (GNATRTL_NONTASKING_OBJS): Add g-brapre.
1994         * libgnat/g-brapre.ads: New package specification.
1995         * doc/gnat_rm/the_gnat_library.rst: Document it.
1996         * gnat_rm.texi: Regenerate.
1997
1998 2019-07-10  Yannick Moy  <moy@adacore.com>
1999
2000         * osint-c.adb (Set_File_Name): Always add extension for multiple
2001         units per file mode.
2002
2003 2019-07-10  Corentin Gay  <gay@adacore.com>
2004
2005         * sysdep.c: Put include directive for 'vxWorks.h' before any
2006         other VxWorks headers.
2007
2008 2019-07-10  Eric Botcazou  <ebotcazou@adacore.com>
2009
2010         * doc/gnat_rm/implementation_defined_attributes.rst
2011         (Scalar_Storage_Order): Minor tweaks.  Add note about debuggers.
2012         * gnat_rm.texi: Regenerate.
2013
2014 2019-07-10  Hristian Kirtchev  <kirtchev@adacore.com>
2015
2016         * exp_ch4.adb (Expand_N_Case_Expression): Mark the generated
2017         assignments to the temporary result as being OK because the
2018         expansion of case expressions is correct by construction.
2019         (Is_Copy_Type): Update the predicate to match the comment
2020         within.
2021
2022 2019-07-10  Hristian Kirtchev  <kirtchev@adacore.com>
2023
2024         * bindo-graphs.adb, bindo.adb, debug.adb, exp_ch6.adb,
2025         sem_ch10.adb, sem_ch13.adb, sem_ch3.adb, sem_ch4.adb,
2026         sem_ch6.adb, sem_ch7.adb, sem_res.adb, sem_spark.adb,
2027         sem_util.adb, warnsw.ads: Minor reformatting.
2028
2029 2019-07-10  Joffrey Huguet  <huguet@adacore.com>
2030
2031         * libgnat/a-strbou.ads, libgnat/a-strfix.ads,
2032         libgnat/a-strunb.ads, libgnat/a-strunb__shared.ads: Add global
2033         contracts, contract cases, preconditions and postconditions to
2034         procedures and functions.
2035
2036 2019-07-10  Doug Rupp  <rupp@adacore.com>
2037
2038         * sysdep.c (__gnat_is_file_not_found_error): Reformulate to also
2039         work for vxworks7r2 SR0610.
2040
2041 2019-07-10  Doug Rupp  <rupp@adacore.com>
2042
2043         * env.c (__gnat_environ): Reformulate to also work for
2044         vxworks7r2 SR0610.
2045
2046 2019-07-10  Patrick Bernardi  <bernardi@adacore.com>
2047
2048         * Makefile.rtl: Handle vxworks7r2 ppc target
2049
2050 2019-07-10  Hristian Kirtchev  <kirtchev@adacore.com>
2051
2052         * bindo.adb: Update the section on switches.
2053         * bindo-graphs.adb
2054         (Add_Cycle, Add_Vertex_And_Complement): Remove.
2055         (Create): The graph no longer needs a set of recorded cycles
2056         because the cycles are not rediscovered in permuted forms.
2057         (Cycle_End_Vertices): New routine.
2058         (Destroy): The graph no longer needs a set of recorded cycles
2059         because the cycles are not rediscovered in permuted forms.
2060         (Destroy_Library_Graph_Vertex): Move to the library level.
2061         (Find_All_Cycles_Through_Vertex, Find_All_Cycles_With_Edge):
2062         Remove.
2063         (Find_Cycles_From_Successor, Find_Cycles_From_Vertex,
2064         Find_Cycles_In_Component, Has_Elaborate_All_Edge): New routines.
2065         (Insert_And_Sort): Remove.
2066         (Is_Elaborate_Body_Edge): Use predicate
2067         Is_Vertex_With_Elaborate_Body.
2068         (Is_Recorded_Cycle): Remove.
2069         (Is_Vertex_With_Elaborate_Body): New routine.
2070         (Normalize_And_Add_Cycle): Remove.
2071         (Precedence): Rename to xxx_Precedence, where xxx relates to the
2072         input.  These versions better reflect the desired input
2073         precedence.
2074         (Record_Cycle): New routine.
2075         (Remove_Vertex_And_Complement, Set_Is_Recorded_Cycle): Remove.
2076         (Trace_xxx): Update all versions to use debug switch -d_t.
2077         (Trace_Component): New routine.
2078         (Trace_Eol): Removed.
2079         (Trace_Vertex): Do not output the component as this information
2080         is already available when the component is traced.
2081         (Unvisit, Visit): New routine.
2082         * bindo-graphs.ads: Add new instance LGV_Lists.  Remove instance
2083         RC_Sets.  Update the structure of type Library_Graph_Attributes
2084         to remove the set of recorded cycles.
2085         (Destroy_Library_Graph_Vertex): Move to the library level.
2086         * bindo-writers.adb (Write_Component_Vertices): Output
2087         information about the number of vertices.
2088         * debug.adb: Document the use of binder switch -d_t.  Update the
2089         use of binder switch -d_T.
2090
2091 2019-07-10  Yannick Moy  <moy@adacore.com>
2092
2093         * sem_spark.adb (Get_Root_Object): Replace precondition by error
2094         message.
2095         (Read_Indexes): Replace precondition by error message.
2096         (Check_Callable_Body): Check only traversal function returns an
2097         anonymous access type.
2098         (Check_Expression): Issue error on unexpected expression as
2099         path.
2100         * sem_util.adb (First_Global): Fix access to global on
2101         entry/task.
2102
2103 2019-07-10  Javier Miranda  <miranda@adacore.com>
2104
2105         * exp_ch6.adb (Is_Class_Wide_Interface_Type): New subprogram.
2106         (Expand_Call_Helper): Handle non-limited views when we check if
2107         any formal is a class-wide interface type.
2108         * exp_disp.adb (Expand_Interface_Actuals): Handle non-limited
2109         views when we look for interface type formals to force "this"
2110         displacement.
2111
2112 2019-07-10  Ed Schonberg  <schonberg@adacore.com>
2113
2114         * sem_res.adb (Resolve_Equality_Op): Do not replace the resolved
2115         operator by its alias if expander is not active, because the
2116         operand type may not be frozen yet and its inherited operations
2117         have not yet been created.
2118
2119 2019-07-10  Hristian Kirtchev  <kirtchev@adacore.com>
2120
2121         * bindo-elaborators.adb (Elaborate_Units): Set attribute
2122         Elab_Position of all elaborated units.
2123         (Set_Unit_Elaboration_Positions): New routine.
2124
2125 2019-07-10  Gary Dismukes  <dismukes@adacore.com>
2126
2127         * exp_util.adb: Reformatting and a typo fix.
2128
2129 2019-07-10  Yannick Moy  <moy@adacore.com>
2130
2131         * exp_util.adb (Remove_Side_Effects): Prefer renamings for
2132         objects of possible owning type in GNATprove mode.
2133
2134 2019-07-09  Ed Schonberg  <schonberg@adacore.com>
2135
2136         * sem_ch3.adb (Analyze_Object_Declaration): If the object type
2137         is a composite type that has a dynamic predicate and, the
2138         expression in the declaration is an aggregate, the generated
2139         predicate check must appear after the expanded code for the
2140         aggregate, which will appear after the rewritten object
2141         declarastion.
2142
2143 2019-07-09  Justin Squirek  <squirek@adacore.com>
2144
2145         * sem_eval.adb (Expr_Value_E): Add conditional to correctly
2146         handle constant enumerated character types.
2147
2148 2019-07-09  Eric Botcazou  <ebotcazou@adacore.com>
2149
2150         * libgnarl/s-osinte__mingw.ads (CRITICAL_SECTION): Use proper
2151         type for SpinCount component.
2152
2153 2019-07-09  Justin Squirek  <squirek@adacore.com>
2154
2155         * exp_ch4.adb (Expand_N_Allocator): Add conditional to detect
2156         the presence of anoymous access type allocators and issue a
2157         warning if the appropriate warning flag is enabled.
2158         * warnsw.ads: Add new warning flag for anonymous allocators
2159         * warnsw.adb (All_Warnings, Restore_Warnings, Save_Warnings,
2160         Set_Underscore_Warning_Switch): Register new flags.
2161         (WA_Warnings): Register new flag as an "all warnings" switch
2162         * usage.adb,
2163         doc/gnat_ugn/building_executable_programs_with_gnat.rst:
2164         Document new warning switches -gnatw_a and -gnatw_A.
2165         * gnat_ugn.texi: Regenerate.
2166
2167 2019-07-09  Ed Schonberg  <schonberg@adacore.com>
2168
2169         * sem_ch4.adb (Diagnose_Call): Improve error recovery when a
2170         local subprogram name hides a possible candidate name declared
2171         in a child package in the context of the current unit.
2172         * sem_ch6.adb (Process_Formals): Protect against malformed
2173         formal types when the parameter type does not denote an entity.
2174
2175 2019-07-09  Hristian Kirtchev  <kirtchev@adacore.com>
2176
2177         * bindo-augmentors.adb (Visit_Elaboration_Root): Do not start a
2178         DFS from an elaboration root whose corresponding unit lacks
2179         elaboration code. This behavior mimics that of the old
2180         elaboration order mechanism.
2181         * bindo-graphs.adb (Find_All_Cycles_Through_Vertex): Move the
2182         vertex tracing within the functional branches of the routine.
2183         This prevents spurious trace output.
2184         (Has_No_Elaboration_Code): New routine.
2185         (Trace_Cycle, Trace_Edge): Update the various Ids to use the
2186         "standard" trace format.
2187         * bindo-graphs.ads (Has_No_Elaboration_Code): New routine.
2188         * bindo-units.ads, bindo-units.adb (Has_No_Elaboration_Code):
2189         New routine.
2190
2191 2019-07-09  Piotr Trojanek  <trojanek@adacore.com>
2192
2193         * ali.ads, bindo-graphs.adb, bindo-validators.adb, clean.adb,
2194         doc/gnat_ugn/elaboration_order_handling_in_gnat.rst, einfo.ads,
2195         exp_aggr.adb, exp_ch13.adb, exp_ch4.adb, exp_ch5.adb,
2196         exp_ch6.adb, exp_ch7.adb, exp_ch9.adb, exp_pakd.adb,
2197         fname-uf.ads, gnatlink.adb, inline.adb, lib.ads, make.adb,
2198         namet.ads, opt.ads, par-ch4.adb, par-ch6.adb, par-labl.adb,
2199         prep.adb, sem_aggr.adb, sem_ch13.adb, sem_ch4.adb, sem_ch5.adb,
2200         sem_ch6.adb, sem_ch6.ads, sem_ch7.adb, sem_ch8.adb, sem_dim.adb,
2201         sem_disp.adb, sem_prag.adb, sem_res.adb, sem_warn.adb,
2202         sinfo.ads: Replace ".  " with ". ". Minor reformatting and typo
2203         corrections.
2204         * gnat_ugn.texi: Generate.
2205
2206 2019-07-09  Hristian Kirtchev  <kirtchev@adacore.com>
2207
2208         * bindo.ads: Move type Precedence_Kind from the private to the
2209         visible part of the unit.
2210         * bindo-augmentors.adb: Remove the use of global data as it is
2211         bad practice.
2212         (Augment_Library_Graph): Update the parameter profile.
2213         (Is_Visited, Set_Is_Visited): Remove.
2214         (Visit_Elaboration_Root, Visit_Elaboration_Roots): Update the
2215         parameter profile and comment on usage.
2216         (Visit_Vertex): Likewise.  Also keep track of which invocation
2217         edge activates a task.
2218         * bindo-augmentors.ads (Augment_Library_Graph): Update the
2219         parameter profile and comment on usage.
2220         * bindo-builders.adb (Create_Forced_Edge,
2221         Create_Spec_And_Body_Edge, Create_With_Edge): Update the call to
2222         Add_Edge.
2223         * bindo-diagnostics.adb: Add with end use clauses for Restrict
2224         and Rident.
2225         (Output_Dynamic_Model_Suggestions): Remove.
2226         (Output_Invocation_Related_Suggestions): New routine.
2227         (Output_Suggestions): Output all invocation-related suggestions
2228         together.
2229         * bindo-elaborators.adb: Remove types Comparator_Ptr and
2230         Predicate_Ptr.
2231         (Find_Best_Vertex): Update the parameter profile.
2232         * bindo-graphs.adb (Activates_Task): New routine.
2233         (Add_Body_Before_Spec_Edge): Update the call to
2234         Add_Edge_With_Return.
2235         (Add_Edge): Update the parameter profile and the call to
2236         Add_Edge_With_Return.
2237         (Add_Edge_With_Return): Update the parameter profile and comment
2238         on usage.
2239         (At_Least_One_Edge_Satisfies): New routine.
2240         (Contains_Elaborate_All_Edge): Reimplement.
2241         (Contains_Static_Successor_Edge, Contains_Task_Activation): New
2242         routine.
2243         (Contains_Weak_Static_Successor): Remove.
2244         (Is_Static_Successor_Edge): New routine.
2245         * bindo-graphs.ads: Add types LGE_Predicate_Ptr,
2246         LGV_Comparator_Ptr, and LGV_Predicate_Ptr.  Update type
2247         Library_Graph_Edge_Attributes to capture whether an invocation
2248         edge activates a task.  Update the value of
2249         No_Library_Graph_Edge_Attributes.
2250         (Activates_Task): Update the parameter profile and comment on
2251         usage.
2252         (Contains_Static_Successor_Edge, Contains_Task_Activation): New
2253         routines.
2254         (Contains_Weak_Static_Successor): Remove.
2255         * doc/gnat_ugn/elaboration_order_handling_in_gnat.rst:
2256         Update the documentation to reflect the new task-related advice.
2257         * gnat_ugn.texi: Regenerate.
2258
2259 2019-07-09  Piotr Trojanek  <trojanek@adacore.com>
2260
2261         * exp_util.adb (Containing_Package_With_Ext_Axioms): Replace
2262         low-level Ekind test with a high-level wrapper.
2263
2264 2019-07-09  Arnaud Charlet  <charlet@adacore.com>
2265
2266         * libgnat/s-memory.adb: Disable calls to Abort defer/undefer
2267         when ZCX_By_Default.
2268
2269 2019-07-09  Javier Miranda  <miranda@adacore.com>
2270
2271         * sem_ch13.adb (Rep_Item_Too_Early): Representation clauses are
2272         not allowed for a derivation of a generic type. Extend the
2273         current test to check that none of the parents is a generic
2274         type.
2275
2276 2019-07-09  Hristian Kirtchev  <kirtchev@adacore.com>
2277
2278         * exp_ch9.adb, exp_util.adb, repinfo.adb, sem_ch12.adb,
2279         sem_prag.adb, sem_res.adb, sem_spark.adb, sem_util.adb: Minor
2280         reformatting.
2281
2282 2019-07-09  Ed Schonberg  <schonberg@adacore.com>
2283
2284         * sem_res.adb (Resolve_Equality_Op): If the node was overloaded,
2285         set properly the entity to which the node has been resolved. The
2286         original entity is the first one found during analysis, and is
2287         not necessarily the resolved one.
2288         (Resolve_Op_Not): If the argument of negation is an overloaded
2289         equality operation, call its resolution directly given that the
2290         context type does not participate in overload resolution.
2291
2292 2019-07-09  Hristian Kirtchev  <kirtchev@adacore.com>
2293
2294         * bindo.adb: Remove with and use clauses for Debug.  Add with
2295         and use clauses for Opt.
2296         (Find_Elaboration_Order): Enable the v4.0 elaboration order. The
2297         v3.0 mechanism is now available under binder switch -H.
2298         * bindusg.adb (Display): Enable switch -H.
2299         * debug.adb: Free compiler switch -gnatd_G.  Free binder switch
2300         -d_N.
2301         * sem_elab.adb: Update the section on switches to remove
2302         -gnatd_G.
2303         (Invocation_Graph_Recording_OK): The invocation graph is now
2304         unconditionally recorded in ALI files.
2305         * switch-b.adb (Scan_Binder_Switches): Scan switch -H.
2306         * doc/gnat_ugn/building_executable_programs_with_gnat.rst:
2307         Update the documentation on compiler switches related to
2308         elaboration.  Update the documentation on binder switches to
2309         include switch -H.
2310         * doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Update
2311         the documentation on elaboration order handling in GNAT.
2312         * gnat_ugn.texi: Regenerate.
2313
2314 2019-07-09  Eric Botcazou  <ebotcazou@adacore.com>
2315
2316         * repinfo.adb (List_Entities): Disregard formals altogether.
2317         (List_Name): Properly escape the double quote in the JSON
2318         output.
2319
2320 2019-07-09  Javier Miranda  <miranda@adacore.com>
2321
2322         * exp_util.adb (Remove_Side_Effects): Preserve the
2323         Do_Range_Check flag.
2324
2325 2019-07-09  Yannick Moy  <moy@adacore.com>
2326
2327         * sinfo.ads: Refine comment for Do_Range_Check.
2328
2329 2019-07-09  Yannick Moy  <moy@adacore.com>
2330
2331         * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Expand
2332         attribute reference on Enum_Rep.
2333
2334 2019-07-09  Ed Schonberg  <schonberg@adacore.com>
2335
2336         * sem_ch12.adb (Instantiate_Formal_Package): Handle properly the
2337         case where the actual for a formal package in an instance is the
2338         current instance of an enclosing generic package.
2339         (Check_Formal_Packages): If the formal package declaration is
2340         box-initialized or lacks associations altogether, no internal
2341         instance was created to verify conformance, and there is no
2342         validating package to remove from tree.
2343
2344 2019-07-09  Yannick Moy  <moy@adacore.com>
2345
2346         * freeze.adb (Build_Renamed_Body): Do not set body to inline in
2347         GNATprove mode.
2348
2349 2019-07-09  Yannick Moy  <moy@adacore.com>
2350
2351         * exp_util.adb (Expand_Subtype_From_Expr): Still expand the type
2352         of static expressions in GNATprove_Mode.
2353         * sem_ch3.adb (Analyze_Object_Declaration): Remove obsolete
2354         special case for GNATprove_Mode.
2355
2356 2019-07-09  Piotr Trojanek  <trojanek@adacore.com>
2357
2358         * doc/gnat_rm/the_gnat_library.rst,
2359         doc/gnat_ugn/building_executable_programs_with_gnat.rst,
2360         erroutc.adb, libgnat/g-comlin.adb, libgnat/g-comlin.ads,
2361         libgnat/g-regexp.ads, libgnat/g-regpat.ads,
2362         libgnat/g-spipat.ads, libgnat/s-os_lib.ads,
2363         libgnat/s-regexp.ads: Reword "wild card" to "wildcard".
2364         * gnat_rm.texi, gnat_ugn.texi: Regenerate.
2365
2366 2019-07-09  Yannick Moy  <moy@adacore.com>
2367
2368         * sem_spark.adb (Check_Expression): Handle correctly implicit
2369         assignments as part of allocators and (extension) aggregates.
2370         (Get_Root_Object): Adapt for new path expressions.
2371         (Is_Path_Expression): Return True for (extension) aggregate.
2372
2373 2019-07-09  Piotr Trojanek  <trojanek@adacore.com>
2374
2375         * einfo.ads: Fix a typo.
2376
2377 2019-07-09  Ed Schonberg  <schonberg@adacore.com>
2378
2379         * sem_util.adb (Scope_Within_Or_Same): Handle properly task
2380         bodies and protected bodies, so that local variables within have
2381         their proper scopes after these constructs have been rewritten
2382         during expansion. This patch resembles but is not identical to
2383         the code in Scope_Within.
2384
2385 2019-07-09  Arnaud Charlet  <charlet@adacore.com>
2386
2387         * gnat1drv.adb (Adjust_Global_Switches): Set
2388         Dynamic_Elaboration_Checks to True in CodePeer mode.
2389
2390 2019-07-09  Yannick Moy  <moy@adacore.com>
2391
2392         * sem_spark.adb (Get_Perm_Or_Tree): Issue an error when
2393         encountering unknown global variable.
2394
2395 2019-07-09  Yannick Moy  <moy@adacore.com>
2396
2397         * sem_spark.adb (Check_Expression): Change signature to take an
2398         Extended_Checking_Mode, for handling read permission checking of
2399         sub-expressions in an assignment.
2400         (Check_Parameter_Or_Global): Adapt to new behavior of
2401         Check_Expression for mode Assign.
2402         (Check_Safe_Pointers): Do not analyze generic bodies.
2403         (Check_Assignment): Separate checking of the target of an
2404         assignment.
2405
2406 2019-07-09  Eric Botcazou  <ebotcazou@adacore.com>
2407
2408         * repinfo.ads (JSON format): Adjust.
2409         * repinfo.adb (Need_Blank_Line): Rename to...
2410         (Need_Separator): ...this.
2411         (Blank_Line): Rename to...
2412         (Write_Separator): ...this and add JSON specific handling.
2413         (List_Array_Info): Adjust to above renaming.
2414         (List_Object_Info): Likewise.
2415         (List_Record_Info): Likewise.
2416         (List_Subprogram_Info): Likewise.
2417         (List_Type_Info): Likewise.
2418         (List_Entities): Do not set Need_Blank_Line.
2419         (List_Rep_Info): Set Need_Separator and add JSON specific
2420         handling. Output a single JSON stream in the  normal case.
2421
2422 2019-07-09  Arnaud Charlet  <charlet@adacore.com>
2423
2424         * doc/gnat_ugn/the_gnat_compilation_model.rst: Update doc on
2425         -fdump-ada-spec now that we generate Ada 2012.
2426         * gnat_ugn.texi: Regenerate.
2427
2428 2019-07-08  Eric Botcazou  <ebotcazou@adacore.com>
2429
2430         * repinfo.adb (List_Common_Type_Info): New procedure extracted
2431         from...
2432         (List_Type_Info): ...here.  Call it for the common information,
2433         start with a blank line and output the linker section at the
2434         end, if any.
2435         (List_Mechanisms): Rename to...
2436         (List_Subprogram_Info): ...this.
2437         (List_Array_Info): Call List_Common_Type_Info.
2438         (List_Entities): Adjust to above change and renaming.
2439         (List_Record_Info): Call List_Common_Type_Info.
2440
2441 2019-07-08  Dmitriy Anisimkov  <anisimko@adacore.com>
2442
2443         * libgnat/g-sercom.ads
2444         (Serial_Port_Descriptor): New type.
2445         (Serial_Port): Add a comment, make it hold a
2446         Serial_Port_Descriptor.
2447         (To_Ada, To_C): New procedures.
2448         (Port_Data, Port_Data_Access): Remove types.
2449         * libgnat/g-sercom.adb (To_Ada): New stub.
2450         * libgnat/g-sercom__linux.adb, libgnat/g-sercom__mingw.adb:
2451         Update implementations accordingly.
2452         * s-oscons-tmplt.c: Bind Serial_Port_Descriptor to
2453         System.Win32.HANDLE on Windows, and to Interfaces.C.int on
2454         Linux. Add "Interfaces.C." prefix for other basic integer type
2455         bindings.
2456         * xoscons.adb (Output_Info): Remove the "Interfaces.C." prefix
2457         for subtypes generation.
2458
2459 2019-07-08  Arnaud Charlet  <charlet@adacore.com>
2460
2461         * doc/gnat_rm/standard_and_implementation_defined_restrictions.rst:
2462         Update documentation on No_Exceptions restriction.
2463         * gnat_rm.texi: Regenerate.
2464
2465 2019-07-08  Dmitriy Anisimkov  <anisimko@adacore.com>
2466
2467         * libgnat/s-os_lib.adb: Do not call __gnat_kill for Invalid_Pid.
2468
2469 2019-07-08  Piotr Trojanek  <trojanek@adacore.com>
2470
2471         * sem_util.adb (Enclosing_Package_Or_Subprogram): Do not expect
2472         package and subprogram bodies.
2473
2474 2019-07-08  Bob Duff  <duff@adacore.com>
2475
2476         * doc/gnat_ugn/gnat_utility_programs.rst: Remove documentation
2477         of ignored GNATpp switch.
2478
2479 2019-07-08  Hristian Kirtchev  <kirtchev@adacore.com>
2480
2481         * doc/gnat_rm/implementation_defined_pragmas.rst:
2482         Update the documentation of pragma Initialize_Scalars.
2483         * gnat_rm.texi: Regenerate.
2484
2485 2019-07-08  Javier Miranda  <miranda@adacore.com>
2486
2487         * exp_ch4.adb (Tagged_Membership): Fix regression silently
2488         introduced in r260738 that erroneouslusy causes the evaluation
2489         to True of the membership test when the left operand of the
2490         membership test is a class-wide interface object and the right
2491         operand is a type that implements such interface type.
2492
2493 2019-07-08  Hristian Kirtchev  <kirtchev@adacore.com>
2494
2495         * sem_ch13.adb (Analyze_Attribute_Definition_Clause): Do not
2496         register an address clause when its prefix denotes a generic
2497         formal object.
2498
2499 2019-07-08  Hristian Kirtchev  <kirtchev@adacore.com>
2500
2501         * bindo-diagnostics.adb (Diagnose_Cycle): Capture the presence
2502         of an Elaborate_All edge before iterating over the edges of the
2503         cycle.
2504         (Output_Elaborate_Body_Transition): Update the parameter profile
2505         and the comment on usage. Add a missing case where the edge is
2506         within the context of an Elaborate_All.
2507         (Output_Transition): Update the call to
2508         Output_Elaborate_Body_Transition.
2509         * bindo-graphs.ads, bindo-graphs.adb
2510         (Contains_Elaborate_All_Edge): New routine.
2511
2512 2019-07-08  Piotr Trojanek  <trojanek@adacore.com>
2513
2514         * lib-xref-spark_specific.adb (Create_Heap): Set dummy Etype for
2515         the fake __HEAP entity.
2516
2517 2019-07-08  Daniel Mercier  <mercier@adacore.com>
2518
2519         * gnat1drv.adb: Suppress warnings on memory representation in
2520         CodePeer compiler mode.
2521
2522 2019-07-08  Nicolas Roche  <roche@adacore.com>
2523
2524         * rtinit.c (__gnat_runtime_initialize): Remove dependency on
2525         CommandLineToArgvW.
2526
2527 2019-07-08  Doug Rupp  <rupp@adacore.com>
2528
2529         * Makefile.rtl: Handle vxworks7r2 in x86_64 and x86 vxworks7.
2530
2531 2019-07-08  Dmitriy Anisimkov  <anisimko@adacore.com>
2532
2533         * Makefile.rtl: Use g-sercom__linux.adb for all linuxes.
2534
2535 2019-07-08  Yannick Moy  <moy@adacore.com>
2536
2537         * expander.adb (Expand): Do not reset Analyzed flag always.
2538         * sem_eval.adb (Fold_Ureal): Mark node as analyzed.
2539
2540 2019-07-08  Ed Schonberg  <schonberg@adacore.com>
2541
2542         * exp_ch9.adb (Expand_N_Timed_Entry_Call): Do not insert twice
2543         the assignment statement that computes the delay value, to
2544         prevent improper tree sharing when the value is a type
2545         conversion and Float_Overflow checks are enabled.
2546
2547 2019-07-08  Hristian Kirtchev  <kirtchev@adacore.com>
2548
2549         * bindo.adb: Update the section on terminology to include new
2550         concepts.  Update the section on switches to include new
2551         entries.
2552         * bindo.ads: Add type Precedence_Kind.
2553         * bindo-builders.adb: Add with and use clauses for Debug and
2554         Bindo.Validators.  Add use clauses for
2555         Bindo.Validators.Invocation_Graph_Validators and
2556         Bindo.Validators.Library_Graph_Validators.
2557         (Build_Invocation_Graph): Validate the graph immediately after
2558         it was built.
2559         (Build_Library_Graph): Update the parameter profile. The
2560         creation of the graph is now elaboration model-agnostic.
2561         Validate the graph immediately after it was built.
2562         (Create_With_Edge): Create regular with edges for Elaborate and
2563         Elaborate_All edges when the appropriate debug switches are in
2564         effect.
2565         * bindo-builders.ads (Build_Library_Graph): Update the parameter
2566         profile.
2567         * bindo-diagnostics.adb (Diagnose_Cycle): Track the presence of
2568         an Elaborate_All edge throughout the inspection of the cycle's
2569         edges.
2570         (Output_Dynamic_Model_Suggestions): Output the suggestion only
2571         when the cycle contains at least one weak edge where the
2572         successor was statically elaborated.
2573         (Output_Elaborate_Body_Transition, Output_Forced_Transition,
2574         Output_With_Transition): Update the assertions.
2575         * bindo-elaborators.adb: Remove use clauses for
2576         Bindo.Validators.Invocation_Graph_Validators and
2577         Bindo.Validators.Library_Graph_Validators.  Remove strings
2578         Add_To_All_Candidates_Msg and Add_To_Comp_Candidates_Msg.
2579         Remove type String_Ptr.
2580         (Add_Vertex, Add_Vertex_If_Elaborable, Create_All_Candidates_Set
2581         Create_Component_Candidates_Set): Remove.
2582         (Create_Component_Vertex_Sets, Create_Vertex_Sets): New routine.
2583         (Elaborate_Component): Update the parameter profile and the
2584         comment on usage.  Reimplement the elaboration of a component.
2585         The algorithm will now attempt to elaborate as many vertices
2586         possible. If this is not possible, and a weakly elaborable
2587         vertex is available use unit was compiled using the dynamic
2588         model, the algorithm will elaborate it.
2589         (Elaborate_Library_Graph): Reimplement the elaboration of the
2590         graph. The algorithm will now attempt to elaborate as many
2591         vertices along with their components as possible. If this is not
2592         possible, and a weakly elaborable vertex is available use unit
2593         was compiled using the dynamic model, the algorithm will
2594         elaborate it along with its component.
2595         (Elaborate_Units): Merge with the functionality of
2596         Elaborate_Units_Common.
2597         (Elaborate_Units_Common, Elaborate_Units_Dynamic,
2598         Elaborate_Units_Static): Remove.
2599         (Elaborate_Vertex): Update the parameter profile and the comment
2600         on usage.  Reimplemented.
2601         (Find_Best_Candidate): Remove.
2602         (Find_Best_Elaborable_Vertex, Find_Best_Vertex,
2603         Find_Best_Weakly_Elaborable_Vertex, Has_Elaborable_Body,
2604         Insert_Elaborable_Successor, Insert_Vertex): New routines.
2605         (Is_Better_Candidate): Remove.
2606         (Is_Better_Elaborable_Vertex,
2607         Is_Better_Weakly_Elaborable_Vertex,
2608         Is_Suitable_Elaborable_Vertex,
2609         Is_Suitable_Weakly_Elaborable_Vertex): New routines.
2610         (Trace_Candidate_Vertices): Remove.
2611         (Trace_Component): Output the number of strong and weak
2612         predecessors.
2613         (Trace_Unelaborated_Vertices): Remove.
2614         (Trace_Vertex): Output the number of strong and weak
2615         predecessors.
2616         (Trace_Vertices): New routine.
2617         (Update_Successor, Update_Successors): Update the parameter
2618         profile and the comment on usage.
2619         * bindo-graphs.adb: Remove type Precedence_Kind.
2620         (Add_Edge_With_Return): Update the increment of pending
2621         predecessors.
2622         (Add_Vertex): Provide default values for strong and weak
2623         predecessors.
2624         (Complementary_Vertex): Move the initial declaration to the
2625         spec. Update the parameter profile and the comment on usage.
2626         (Contains_Weak_Static_Successor): New routine.
2627         (Create): Update the parameter profile. The creation of the
2628         graph is now elaboration model-agnostic.
2629         (Decrement_Pending_Predecessors): Update the parameter profile
2630         and the comment on usage. Reimplemented.
2631         (Delete_Edge): Update the decrement of pending predecesors.
2632         (Has_Elaborate_Body): Do not treat a vertex as being subject to
2633         Elaborate_Body when a debug switch is in effect.
2634         (Increment_Pending_Predecessors): Update the parameter profile
2635         and the comment on usage. Reimplemented.
2636         (Is_Elaborable_Component): Reimplemented.
2637         (Is_Elaborable_Vertex): Move the initial declaration to the
2638         spec.  Reimplemented.
2639         (Is_Elaborate_Body_Pair): New routine.
2640         (Is_Dynamically_Elaborated): Update the parameter profile.
2641         Reimplemented.
2642         (Is_Weakly_Elaborable_Vertex): New routine.
2643         (Pending_Predecessors): Removed.
2644         (Pending_Predecessors_For_Elaboration,
2645         Pending_Strong_Predecessors, Pending_Weak_Predecessors,
2646         Update_Pending_Predecessors): New routines.
2647         (Update_Pending_Predecessors_Of_Components): Update the
2648         increment of pending predecessors.
2649         * bindo-graphs.ads: Update the components of type
2650         Component_Attributes.  Update the components of type
2651         Library_Graph_Attributes.  Update the components of type
2652         Library_Graph_Vertex_Attributes.  Update the initialization of
2653         No_Component_Attributes.  Update the initialization of
2654         No_Library_Graph_Vertex_Attributes.
2655         (Complementary_Vertex, Contains_Weak_Static_Successor): New
2656         routines.
2657         (Create): Update the parameter profile and the comment on usage.
2658         (Decrement_Pending_Predecessors, Is_Dynamically_Elaborated):
2659         Update the parameter profile and the comment on usage.
2660         (Is_Elaborate_Body_Pair, Is_Weakly_Elaborable_Vertex): New
2661         routines.
2662         (Pending_Predecessors): Removed.
2663         (Pending_Predecessors_For_Elaboration,
2664         Pending_Strong_Predecessors, Pending_Weak_Predecessors): New
2665         routines.
2666         * bindo-writers.adb (Write_Components): Moved from the spec.
2667         (Write_Component): Output the strong and weak predecessors.
2668         (Write_Library_Graph): Output the components as part of the
2669         graph.
2670         (Write_Library_Graph_Vertex): Output the strong and weak
2671         predecessors.
2672         * bindo-writers.ads (Write_Components): Moved to the body.
2673         * debug.adb: Add and document new GNATbind switches -d_a, -d_b,
2674         -d_e.
2675         * bindo-validators.adb: Minor reformattings.
2676
2677 2019-07-08  Bob Duff  <duff@adacore.com>
2678
2679         * libgnat/g-sercom.ads, libgnat/g-sercom__linux.adb (Data_Rate):
2680         Support additional data rates.
2681
2682 2019-07-08  Olivier Hainque  <hainque@adacore.com>
2683
2684         * gcc-interface/trans.c (Compilation_Unit_to_gnu): Don't request
2685         DECL_ARTIFICIAL_P on elab proc declarations.
2686
2687 2019-07-08  Eric Botcazou  <ebotcazou@adacore.com>
2688
2689         * repinfo.adb (List_Record_Info): Declare Incomplete_Layout and
2690         Not_In_Extended_Main local exceptions.
2691         (List_Structural_Record_Layout): For an extension, raise the
2692         former if the parent subtype has not been built and the latter
2693         if it is not declared in the main source unit.  Fall back to the
2694         flat layout if either exception has been raised.
2695
2696 2019-07-08  Ed Schonberg  <schonberg@adacore.com>
2697
2698         * libgnat/a-strfix.adb (Delete): The RM describes the semantics
2699         of Delete as equivalent to that of Replace_String with a null
2700         argument. As a result, deleting a null string that starts past
2701         the end of its argument is a noop and must not raise
2702         Index_Error.
2703
2704 2019-07-08  Javier Miranda  <miranda@adacore.com>
2705
2706         * exp_disp.adb (Register_Primitive): When registering a
2707         primitive in the secondary dispatch table, handle primitive
2708         inherited through several levels of type derivation (required to
2709         properly handle inherited 'null' primitive).
2710
2711 2019-07-08  Bob Duff  <duff@adacore.com>
2712
2713         * doc/gnat_ugn/gnat_utility_programs.rst: Document handling of
2714         preprocessor directives in GNATpp.
2715
2716 2019-07-08  Javier Miranda  <miranda@adacore.com>
2717
2718         * gnat1drv.adb (Post_Compilation_Validation_Checks:
2719         Validate_Compile_Time_Warning_Errors is now located in sem_prag
2720         (instead of sem_ch13).
2721         * sem_ch13.ads (Validate_Compile_Time_Warning_Error,
2722         Validate_Compile_Time_Warning_Errors): Move to sem_prag.
2723         * sem_ch13.adb
2724         (Compile_Time_Warnings_Errors): Move to sem_prag.
2725         (Initialize): Remove initialization of table
2726         Compile_Time_Warning_Errors.
2727         (Validate_Compile_Time_Warning_Error,
2728         Validate_Compile_Time_Warning_Errors): Move to sem_prag.
2729         * sem_prag.ads (Validate_Compile_Time_Warning_Errors): New
2730         procedure.
2731         * sem_prag.adb (Initialize): Initialize table
2732         Compile_Time_Warning_Errors.
2733
2734 2019-07-08  Ed Schonberg  <schonberg@adacore.com>
2735
2736         * sem_ch13.adb (Analyze_Aspect_Specifications): For a
2737         pre/postcondition of a generic subprogram declaration, do not
2738         use Relocate_Node on the aspect expression to construct the
2739         corresponding attribute specification, to prevent tree anomalies
2740         when the expression is a call with named actual parameters.
2741
2742 2019-07-08  Javier Miranda  <miranda@adacore.com>
2743
2744         * sem_attr.adb (Analyze_Attribute [Attribute_Size]): For pragmas
2745         used to report user defined compile time warning or errors
2746         handle 'Size for types with known static RM size.
2747
2748 2019-07-08  Justin Squirek  <squirek@adacore.com>
2749
2750         * exp_imgv.adb (Build_Enumeration_Image_Tables): Default SSO for
2751         the building of image tables.
2752         (Expand_Image_Attribute): Minor cleanup.
2753
2754 2019-07-08  Dmitriy Anisimkov  <anisimko@adacore.com>
2755
2756         * libgnat/g-socket.ads, libgnat/g-socket.adb: Improve
2757         documentation.
2758         (Get_Socket_Option, Set_Socket_Option): Remove default value for
2759         the Level formal.
2760
2761 2019-07-08  Ed Schonberg  <schonberg@adacore.com>
2762
2763         * sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): For an
2764         unanalized aspect in a generic context that has not been
2765         analyzed yet, if the aspect applies to a type, place the type on
2766         the scope stack to make its components visible, before checking
2767         conformance with the version of the expression analyzed at the
2768         freeze point.
2769
2770 2019-07-05  Justin Squirek  <squirek@adacore.com>
2771
2772         * checks.adb (Apply_Accessibility_Check): Add logic to fetch the
2773         function result accessibility level if one is required within
2774         the generated check.
2775         * exp_ch6.adb (Needs_Result_Accessibility_Level): Modify
2776         controlling elsif block to handle more cases such as anonymous
2777         access results and disable checking for coextensions.
2778
2779 2019-07-05  Ed Schonberg  <schonberg@adacore.com>
2780
2781         * sem_ch9.adb (Analyze_Accept_Statement): If this is an illegal
2782         accept statement for an enclosing entry abandon analysis to
2783         prevent scope mismatches and potential infinite loops in
2784         compiler.
2785
2786 2019-07-05  Hristian Kirtchev  <kirtchev@adacore.com>
2787
2788         * ali.adb (For_Each_Invocation_Construct,
2789         For_Each_Invocation_Relation): New version.
2790         (Scan_ALI): Initialize field Invocation_Graph_Encoding.
2791         (Set_Invocation_Graph_Encoding): Update the setting of the
2792         invocation graph encoding.
2793         * ali.ads: Move field Invocation_Graph_Encoding from Unit_Record
2794         to ALI_Record because the encoding applies to the whole ALI,
2795         rather than one of the units (spec or body) for which the ALI
2796         file was created.
2797         (For_Each_Invocation_Construct, For_Each_Invocation_Relation):
2798         New version.
2799         * bindo.adb: Update the section on switches.  Complete the
2800         section of debugging elaboration order issues.
2801         (Find_Elaboration_Order): Prepare the routine for the switch
2802         from the old to the new elaboration order mechanism.
2803         * bindo-diagnostics.adb (Find_And_Output_Invocation_Paths):
2804         Manage a visited set used by Visit_Vertex.
2805         (Output_All_Cycles_Suggestions,
2806         Output_Dynamic_Model_Suggestions): Clarify the nature of the
2807         suggested switch.
2808         (Output_Elaborate_Body_Transition): Update the diagnostic to
2809         emit a better message.
2810         (Output_Forced_Suggestions, Output_Full_Encoding_Suggestions):
2811         Clarify the nature of the suggested switch.
2812         (Visit_Vertex): Update the parameter profile to add a set of
2813         invokers visited during the transition. This set prevents
2814         infinite exploration of the graph in case the invocations are
2815         recursive.
2816         * bindo-elaborators.adb: Add a use clause for
2817         Bindo.Writers.Dependency_Writers.
2818         (Elaborate_Units_Common): Output the library graph after it has
2819         been augmented with invocation edges. Output just the components
2820         instead of outputting the whole library graph again.
2821         (Elaborate_Units_Dynamic, Elaborate_Units_Static): Output the
2822         dependencies as expressed in the library graph.
2823         * bindo-units.adb (Invocation_Graph_Encoding): Update the
2824         extraction of the invocation graph encoding.
2825         * bindo-writers.adb: Add with and use clauses for Binderr and
2826         Butil.
2827         (palgc, plgc): New debug routine.
2828         (Write_Components): Moved to the spec. Add a header for the
2829         output.
2830         (Write_Dependencies, Write_Dependencies_Of_Vertex,
2831         Write_Dependency_Edge): New routine.
2832         (Write_Elaboration_Order): Update the logic to follow the format
2833         of Binde's order output.
2834         (Write_Library_Graph): Do not output the components every time
2835         the graph is written.
2836         (Write_Unit): Output the invocation graph encoding of the unit.
2837         Output the invocation constructs and relations for the unit
2838         only.
2839         * bindo-writers.ads (Write_Components): Moved from the body.
2840         (Write_Dependencies): New routine.
2841         * bindusg.adb: Prepare the routine for the switch from the old
2842         to the new elaboration order mechanism.
2843         * debug.adb: Binder switch -d_O is now not associated with any
2844         functionality.
2845         * einfo.adb (Is_Elaboration_Target): The attribute applies to
2846         packages, as specified by the comment on the attribute usage.
2847         * opt.ads: Add a global flag which controls the choice between
2848         the new and the legacy elaboration order mechanism.
2849         * sem_elab.adb: Add Package_Target to type Target_Kind.
2850         (Build_Elaborate_Body_Procedure, Build_Elaborate_Procedure,
2851         Build_Elaborate_Spec_Procedure, Check_Elaboration_Scenarios,
2852         Check_SPARK_Model_In_Effect): Use Main_Unit_Entity to obtain the
2853         entity of the main unit.
2854         (Create_Package_Rep): New routine.
2855         (Create_Target_Rep): Add processing for packages.
2856         (Declaration_Placement_Of_Node, Has_Prior_Elaboration): Use
2857         Main_Unit_Entity to obtain the entity of the main
2858          unit.
2859         (Invocation_Graph_Recording_OK): Prepare the routine for the
2860         switch from the old to the new elaboration order mechanism.
2861         (Main_Unit_Entity): New routine.
2862         (Meet_Elaboration_Requirement,
2863         Process_Conditional_ABE_Variable_Reference): Use
2864         Main_Unit_Entity to obtain the entity of the main unit.
2865         (Process_Invocation_Instantiation): New routine.
2866         (Process_Invocation_Scenario): Add processing for
2867         instantiations.
2868         * switch-b.adb (Scan_Binder_Switches): Prepare the routine for
2869         the switch from the old to the new elaboration order mechanism.
2870
2871 2019-07-05  Joffrey Huguet  <huguet@adacore.com>
2872
2873         * libgnat/a-textio.adb: Add abstract state refinment.
2874         * libgnat/a-textio.ads: Add File_System abstract state.  Add
2875         global contracts, contract cases, preconditions and
2876         postconditions to procedures and functions.
2877         (Set_Input, Set_Output, Set_Error, Standard_Input,
2878         Standard_Output, Standard_Error, Current_Input, Current_Output,
2879         Current_Error): Turn SPARK_Mode off.
2880         (Get_Line): Turn SPARK_Mode off on Get_Line functions.
2881         * libgnat/a-tideio.ads, libgnat/a-tienio.ads,
2882         libgnat/a-tifiio.ads, libgnat/a-tiflio.ads,
2883         libgnat/a-tiinio.ads, libgnat/a-timoio.ads: Add global
2884         contracts, contract cases, preconditions and postconditions to
2885         procedures and functions.
2886
2887 2019-07-05  Arnaud Charlet  <charlet@adacore.com>
2888
2889         * doc/gnat_ugn/platform_specific_information.rst: Refresh doc on
2890         installing from the command line on Windows.  Remove obsolete
2891         part.
2892         * gnat_ugn.texi: Regenerate.
2893
2894 2019-07-05  Vasiliy Fofanov  <fofanov@adacore.com>
2895
2896         * libgnat/a-wichha.ads (Is_Alphanumeric): Replace comment with
2897         the correct one.  Also capitalize references to False
2898         throughout.
2899
2900 2019-07-05  Eric Botcazou  <ebotcazou@adacore.com>
2901
2902         * exp_ch4.adb (Expand_N_Indexed_Component): Do not expand actual
2903         parameters of function calls here either.
2904
2905 2019-07-05  Hristian Kirtchev  <kirtchev@adacore.com>
2906
2907         * bindo-units.adb, checks.adb, exp_attr.adb, exp_ch3.adb,
2908         exp_ch4.adb, exp_pakd.adb, lib-writ.adb, libgnat/g-traceb.adb,
2909         libgnat/g-traceb.ads, libgnat/s-stratt.ads, sem_aux.ads,
2910         sem_util.adb: Minor reformatting.
2911
2912 2019-07-05  Ed Schonberg  <schonberg@adacore.com>
2913
2914         * sem_ch13.adb (Build_Predicate_Functions): If a subtype that
2915         carries a static predicate aspect is frozen immediately after
2916         its declaration, ensure that the generated function body created
2917         for predicate checking is inserted after the corresponding
2918         subprogram declaration, which is created at the point the
2919         declaration is elaborated.
2920
2921 2019-07-05  Hristian Kirtchev  <kirtchev@adacore.com>
2922
2923         * exp_ch7.adb (Cleanup_Record): Use the underlying type when
2924         checking for components with tasks.
2925
2926 2019-07-05  Arnaud Charlet  <charlet@adacore.com>
2927
2928         * libgnarl/s-osinte__linux.ads: Link with -lrt before -lpthread.
2929
2930 2019-07-05  Ed Schonberg  <schonberg@adacore.com>
2931
2932         * exp_pakd.adb (Expand_Bit_Packed_Element_Set): Add explicit
2933         range checks when the index type of the bit-packed array is an
2934         enumeration type with a non-standard representation,
2935
2936 2019-07-05  Hristian Kirtchev  <kirtchev@adacore.com>
2937
2938         * sem_res.adb (Is_Control_Flow_Statement): Delay statements
2939         contain an expression, which in turn may have side effects and
2940         affect the infinite recursion. As a result, delay statements
2941         should not be treated specially.
2942
2943 2019-07-05  Arnaud Charlet  <charlet@adacore.com>
2944
2945         * libgnarl/s-linux.ads, libgnarl/s-linux__alpha.ads,
2946         libgnarl/s-linux__android.ads, libgnarl/s-linux__hppa.ads,
2947         libgnarl/s-linux__mips.ads, libgnarl/s-linux__riscv.ads,
2948         libgnarl/s-linux__sparc.ads: Fix typos in comments.
2949
2950 2019-07-05  Hristian Kirtchev  <kirtchev@adacore.com>
2951
2952         * sem_res.adb (Check_Infinite_Recursion): Reimplemented.
2953         (Enclosing_Declaration_Or_Statement,
2954         Invoked_With_Different_Arguments, Is_Conditional_Statement,
2955         Is_Control_Flow_Statement, Is_Immediately_Within_Body,
2956         Is_Raise_Idiom, Is_Raise_Statement, Is_Sole_Statement,
2957         Preceded_By_Control_Flow_Statement,
2958         Within_Conditional_Statement): New routines.
2959
2960 2019-07-05  Javier Miranda  <miranda@adacore.com>
2961
2962         * exp_ch4.adb (Expand_N_Type_Conversion): Do not apply an
2963         accessibility check when the conversion is an access to
2964         class-wide interface type and it is an actual parameter.
2965         * exp_ch6.adb (Expand_Call_Helper): Add documentation on the
2966         accessibility level of an anonymous allocator defining the value
2967         of an access parameter.
2968         * sem_util.ads, sem_util.adb (Dynamic_Accessibility_Level): Add
2969         support for an anonymous allocator whose type is that of a
2970         stand-alone object of an anonymous access to object type.
2971
2972 2019-07-05  Piotr Trojanek  <trojanek@adacore.com>
2973
2974         * einfo.ads, sem_res.adb: Typo fixes in comments.
2975
2976 2019-07-05  Bob Duff  <duff@adacore.com>
2977
2978         * exp_ch6.adb (Is_Build_In_Place_Function): Narrow the check for
2979         Has_Foreign_Convention to the imported case only.  If a
2980         build-in-place function is exported, and called from Ada code,
2981         build-in-place protocols should be used.
2982
2983 2019-07-05  Ed Schonberg  <schonberg@adacore.com>
2984
2985         * sem_util.adb (Encloing_Subprogram): If Enclosing_Dynamic_Scope
2986         is a loop, continue climbing the scope stack to find the
2987         enclosing subprogram.
2988         (Gather_Components): Handle properly a choice in a record
2989         aggregate that is given by a subtype with a static predicate.
2990
2991 2019-07-05  Javier Miranda  <miranda@adacore.com>
2992
2993         * debug.adb (-gnatd.K): Leave available this switch.
2994         * contracts.adb (Build_And_Analyze_Contract_Only_Subprograms):
2995         Remove.
2996         * scil_ll.ads, scil_ll.adb (Contract_Only_Body_Flag,
2997         Contract_Only_Body_Nodes, Get_Contract_Only_Body,
2998         Is_Contract_Only_Body, Set_Contract_Only_Body): Remove.
2999
3000 2019-07-05  Pierre-Marie de Rodat  <derodat@adacore.com>
3001
3002         * libgnat/a-strunb.ads: Import documentation from the RM
3003
3004 2019-07-05  Pierre-Marie de Rodat  <derodat@adacore.com>
3005
3006         * libgnat/a-strfix.ads: Import documentation from the RM
3007
3008 2019-07-05  Yannick Moy  <moy@adacore.com>
3009
3010         * adabkend.adb (Scan_Back_End_Switches): Accept -Og and -Ofast
3011         switches.
3012
3013 2019-07-05  Hristian Kirtchev  <kirtchev@adacore.com>
3014
3015         * ali.adb: Relocate types Invocation_Construct_Record,
3016         Invocation_Relation_Record, and Invocation_Signature_Record to
3017         the body of ALI.  Relocate tables Invocation_Constructs,
3018         Invocation_Relations, and Invocation_Signatures to the body of
3019         ALI.  Remove type Body_Placement_Codes.  Add new types
3020         Declaration_Placement_Codes, and
3021         Invocation_Graph_Encoding_Codes.  Update the literals of type
3022         Invocation_Graph_Line_Codes.
3023         (Add_Invocation_Construct): Update the parameter profile. Add an
3024         invocation construct built from all attributes provided.
3025         (Add_Invocation_Relation): Update the parameter profile. Add an
3026         invocation relation built from all attributes provided.
3027         (Body_Placement): New routine.
3028         (Body_Placement_Kind_To_Code, Code_To_Body_Placement_Kind):
3029         Removed.
3030         (Code_To_Declaration_Placement_Kind,
3031         Code_To_Invocation_Graph_Encoding_Kind, Column,
3032         Declaration_Placement_Kind_To_Code, Extra,
3033         For_Each_Invocation_Construct, For_Each_Invocation_Relation,
3034         Invocation_Graph_Encoding,
3035         Invocation_Graph_Encoding_Kind_To_Code, Invoker, Kind, Line,
3036         Locations, Name): New routine.
3037         (Scan_Invocation_Construct_Line): Reimplement the scanning
3038         mechanism.
3039         (Scan_Invocation_Graph_Attributes_Line): New routine.
3040         (Scan_Invocation_Graph_Line): Use a case statement to dispatch.
3041         (Scan_Invocation_Relation_Line): Reimplement the scanning
3042         mechanism.
3043         (Scope): New routine.
3044         (Set_Invocation_Graph_Encoding, Signature, Spec_Placement,
3045         Target): New routine.
3046         * ali.ads: Add new type Invocation_Graph_Encoding_Kind.  Add
3047         component Invocation_Graph_Encoding to type Unit_Record.
3048         Relocate various types and data structures to the body of ALI.
3049         (Add_Invocation_Construct, Add_Invocation_Relation): Update the
3050         parameter profile.
3051         (Body_Placement): New routine.
3052         (Body_Placement_Kind_To_Code, Code_To_Body_Placement_Kind):
3053         Removed.
3054         (Code_To_Declaration_Placement_Kind,
3055         Code_To_Invocation_Graph_Encoding_Kind, Column,
3056         Declaration_Placement_Kind_To_Code, Extra,
3057         For_Each_Invocation_Construct, For_Each_Invocation_Relation,
3058         Invocation_Graph_Encoding,
3059         Invocation_Graph_Encoding_Kind_To_Code, Invoker, Kind, Line,
3060         Locations, Name, Scope, Set_Invocation_Graph_Encoding,
3061         Signature, Spec_Placement, Target): New routine.
3062         * bindo.adb: Add with clause for Binde.  Add with and use
3063         clauses for Debug.  Update the documentation.  Add new switches.
3064         (Find_Elaboration_Order): Dispatch to the proper elaboration
3065         mechanism.
3066         * bindo-augmentors.adb:
3067         Remove with and use clauses for GNAT and GNAT.Sets.  Remove
3068         membership set VS.  Update the parameter profiles of most
3069         routines to use better parameter names.  Update the
3070         implementation of most routine to use the new parameter names.
3071         Remove various redundant assertions.
3072         * bindo-builders.adb: Use better names for instantiated data
3073         structures. Update all references to these names.  Update the
3074         parameter profiles of most routines to use better parameter
3075         names.  Update the implementation of most routine to use the new
3076         parameter names.
3077         (Build_Library_Graph): Update the parameter profile. Update the
3078         call to Create.
3079         (Create_Vertex): Reimplemented.
3080         (Declaration_Placement_Vertex): New routine.
3081         * bindo-builders.ads (Build_Library_Graph): Update the parameter
3082         profile and comment on usage.
3083         * bindo-diagnostics.adb: Almost a new unit.
3084         * bindo-diagnostics.ads: Add a use clause for
3085         Bindo.Graphs.Invocation_Graphs.  Remove package
3086         Cycle_Diagnostics.
3087         (Diagnose_Circularities): New routine.
3088         * bindo-elaborators.adb: Remove the with and use clauses for
3089         Binderr and GNAT.Sets.  Remove the use clause for
3090         Bindo.Diagnostics.Cycle_Diagnostics.  Remove membership set VS.
3091         Update the parameter profiles of most routines to use better
3092         parameter names.  Update the implementation of most routine to
3093         use the new parameter names.  (Elaborate_Units_Common): Update
3094         the parameter profile. Pass an infication to the library graph
3095         builder whether the dynamic model is in effect.
3096         (Elaborate_Units_Dynamic, Elaborate_Units_Static): Use
3097         Diagnose_Circularities to provide diagnostics.
3098         (Update_Successor): Use routine In_Same_Component to determine
3099         whether the predecessor and successor reside in different
3100         components.
3101         * bindo-graphs.adb: Add with and use clauses for Butil, Debug,
3102         Output, and Bindo.Writers.  Remove with and use clauses for
3103         GNAT.Lists.  Update the parameter profiles of most routines to
3104         use better parameter names.  Update the implementation of most
3105         routine to use the new parameter names.  Remove various
3106         redundant assertions.  Remove doubly linked list EL.  Add new
3107         type Precedence_Kind.
3108         (Add_Cycle): New routine.
3109         (Add_Vertex): Update the parameter profile. Update the creation
3110         of vertex attributes.
3111         (Add_Vertex_And_Complement, Body_Vertex, Column,
3112         Complementary_Vertex, Copy_Cycle_Path, Cycle_Kind_Of): New
3113         routines.
3114         (Destroy_Invocation_Graph_Edge, Destroy_Library_Graph_Cycle,
3115         Destroy_Library_Graph_Edge, Extra, File_Name,
3116         Find_All_Cycles_Through_Vertex, Find_All_Cycles_With_Edge,
3117         Find_Cycles, Find_First_Lower_Precedence_Cycle,
3118         Get_LGC_Attributes, Has_Next, Hash_Library_Graph_Cycle,
3119         Hash_Library_Graph_Cycle_Attributes, Highest_Precedence_Cycle,
3120         Highest_Precedence_Edge, In_Same_Component, Insert_And_Sort,
3121         Invocation_Edge_Count, Invocation_Graph_Encoding,
3122         Is_Cycle_Initiating_Edge, Is_Cyclic_Edge,
3123         Is_Cyclic_Elaborate_All_Edge, Is_Cyclic_Elaborate_Body_Edge,
3124         Is_Cyclic_Elaborate_Edge, Is_Cyclic_Forced_Edge,
3125         Is_Cyclic_Invocation_Edge, Is_Cyclic_With_Edge,
3126         Is_Dynamically_Elaborated, Is_Elaborate_All_Edge,
3127         Is_Elaborate_Body_Edge, Is_Elaborate_Edge: New routines.
3128         (Is_Existing_Predecessor_Successor_Relation): Removed.
3129         (Is_Forced_Edge, Is_Invocation_Edge, Is_Recorded_Cycle,
3130         Is_Recorded_Edge, Is_With_Edge, Iterate_Edges_Of_Cycle, Kind,
3131         Length): New routine.
3132         (Lib_Vertex): Removed.
3133         (Line, Links_Vertices_In_Same_Component,
3134         Maximum_Invocation_Edge_Count, Next, Normalize_And_Add_Cycle,
3135         Normalize_Cycle_Path, Number_Of_Cycles, Path, Precedence,
3136         Remove_Vertex_And_Complement, Sequence_Next_Cycle): New routines.
3137         (Sequence_Next_IGE_Id): Renamed to Sequence_Next_Edge.
3138         (Sequence_Next_IGV_Id): Renamed to Sequence_Next_Vertex.
3139         (Sequence_Next_LGE_Id): Renamed to Sequence_Next_Edge.
3140         (Sequence_Next_LGV_Id): Renamed to Sequence_Next_Vertex.
3141         (Set_Is_Existing_Predecessor_Successor_Relation): Removed.
3142         (Set_Is_Recorded_Cycle, Set_Is_Recorded_Edge,
3143         Set_LGC_Attributes, Spec_Vertex, Trace_Cycle, Trace_Edge,
3144         Trace_Eol, Trace_Vertex): New routines.
3145         * bindo-graphs.ads: Add with and use clauses for Types and
3146         GNAT.Lists.  Update the parameter profiles of most routines to
3147         use better parameter names.  Update the implementation of most
3148         routine to use the new parameter names.  Add the new
3149         instantiated data structures IGE_Lists, IGV_Sets, LGC_Lists,
3150         LGE_Lists, LGE_Sets, LGV_Sets, and RC_Sets.  Add new type
3151         Library_Graph_Cycle_Id along with an empty and initial value.
3152         Remove component Lib_Vertex and add new components Body_Vertex
3153         and Spec_Vertex to type Invocation_Graph_Vertex_Attributes.  Add
3154         new type Library_Graph_Cycle_Kind.  Add new iterators
3155         All_Cycle_Iterator and Edges_Of_Cycle_Iterator.  Add new type
3156         Library_Graph_Cycle_Attributes.  Add new components
3157         Cycle_Attributes, Cycles, and Dynamically_Elaborated to type
3158         Library_Graph_Attributes.
3159         (Body_Vertex, Column, Destroy_Invocation_Graph_Edge,
3160         Destroy_Library_Graph_Cycle_Attributes,
3161         Destroy_Library_Graph_Edge, Extra, File_Name, Find_Cycles,
3162         Has_Elaborate_All_Cycle, Has_Next, Hash_Library_Graph_Cycle,
3163         Hash_Library_Graph_Cycle_Attributes, Highest_Precedence_Cycle,
3164         In_Same_Component, Invocation_Edge_Count,
3165         Invocation_Graph_Encoding, Is_Dynamically_Elaborated,
3166         Is_Elaborate_All_Edge, Is_Elaborate_Body_Edge,
3167         Is_Elaborate_Edge, Is_Forced_Edge, Is_Invocation_Edge,
3168         Is_With_Edge, Iterate_All_Cycles, Iterate_Edges_Of_Cycle, Kind):
3169         New routines.
3170         (Length, Lib_Vertex, (Line, Next, Number_Of_Cycles, Present,
3171         Same_Library_Graph_Cycle_Attributes, Spec_Vertex): New routines.
3172         * bindo-units.adb (File_Name, Invocation_Graph_Encoding): New
3173         routines.
3174         * bindo-units.ads: Add new instantiated data structure
3175         Unit_Sets.
3176         (File_Name, Invocation_Graph_Encoding): New routine.
3177         * bindo-validators.adb: Remove with and use clauses for GNAT and
3178         GNAT.Sets.  Remove membership set US.  Update the parameter
3179         profiles of most routines to use better parameter names.  Update
3180         the implementation of most routine to use the new parameter
3181         names.
3182         (Validate_Cycle, Validate_Cycle_Path, Validate_Cycles,
3183         Validate_Invocation_Graph_Vertex): Remove the validation of
3184         component Lib_Vertex. Add the validation of components
3185         Body_Vertex and Spec_Vertex.
3186         (Write_Error): New routine.
3187         * bindo-validators.ads (Validate_Cycles): New routine.
3188         * bindo-writers.adb: Update the parameter profiles of most
3189         routines to use better parameter names.  Update the
3190         implementation of most routine to use the new parameter names.
3191         (Write_Cycle, Write_Cyclic_Edge, Write_Cycles): New routines.
3192         (Write_Invocation_Graph_Vertex): Remove the output of component
3193         Lib_Vertex. Add the output of components Body_Vertex and
3194         Spec_Vertex.
3195         * bindo-writers.ads (Write_Cycles): New routine.
3196         * debug.adb: Use binder switches -d_C and -d_P, add
3197         documentation on their usage.
3198         * gnatbind.adb: Remove with and use clauses for Binde.  Delegate
3199         the choice of elaboration mechanism to Bindo.
3200         * lib-writ.adb (Column, Extra, Invoker, Kind, Line, Locations,
3201         Name, Placement, Scope, Signature, Target): Removed.
3202         (Write_Invocation_Graph): Moved at the top level.
3203         (Write_Invocation_Graph_Attributes): New routine.
3204         (Write_Invocation_Relation, Write_Invocation_Signature): Moved
3205         at the top level.
3206         * lib-writ.ads: Add a documentation section on invocation graph
3207         attributes.
3208         * sem_elab.adb (Body_Placement_Of): New routine.
3209         (Declare_Invocation_Construct): Update the call to
3210         Add_Invocation_Construct.
3211         (Declaration_Placement_Of_Node): New routine.
3212         (Get_Invocation_Attributes): Correct the retrieval of the
3213         enclosing subprogram where the postcondition procedure lives.
3214         (Placement_Of, Placement_Of_Node): Removed.
3215         (Record_Invocation_Graph): Record the encoding format used.
3216         (Record_Invocation_Graph_Encoding): New routine.
3217         (Record_Invocation_Relation): Update the call to
3218         Add_Invocation_Relation.
3219         (Spec_Placement_Of): Removed.
3220         * libgnat/g-lists.ads, libgnat/g-lists.adb (Equal): New routine.
3221
3222 2019-07-05  Ed Schonberg  <schonberg@adacore.com>
3223
3224         * checks.adb (Apply_Predicate_Check): Except within the
3225         subprogram body that defines the formal, do not apply predicate
3226         check on a formal IN parameter: such a check is redundant and
3227         its expansion can lead to out-of-scope references when it is
3228         originates in a function call in a precondition,
3229
3230 2019-07-05  Yannick Moy  <moy@adacore.com>
3231
3232         * sem_res.adb (Resolve_Call): Cannot inline in quantified
3233         expressions.
3234         * sem_util.adb, sem_util.ads (In_Quantified_Expression): New
3235         function.
3236
3237 2019-07-05  Bob Duff  <duff@adacore.com>
3238
3239         * doc/gnat_rm/standard_and_implementation_defined_restrictions.rst:
3240         Fix typo.
3241         * gnat_rm.texi: Regenerate.
3242
3243 2019-07-05  Bob Duff  <duff@adacore.com>
3244
3245         * exp_attr.adb (Input): Take the No_Stream_Optimizations
3246         restriction into account.
3247
3248 2019-07-05  Claire Dross  <dross@adacore.com>
3249
3250         * libgnat/a-cofove.ads, libgnat/a-cofove.adb: Definite formal
3251         vectors are now always bounded so that they do not need to be
3252         limited anymore.
3253
3254 2019-07-05  Dmitriy Anisimkov  <anisimko@adacore.com>
3255
3256         * libgnat/g-traceb.ads, libgnat/g-traceb.adb (Call_Chain): New
3257         function.
3258
3259 2019-07-04  James Clarke  <jrtc27@debian.org>
3260
3261         * libgnarl/s-osinte__kfreebsd-gnu.ads (clockid_t): Make type
3262         definition public.
3263         (CLOCK_REALTIME): Make value public.
3264
3265 2019-07-04  Javier Miranda  <miranda@adacore.com>
3266
3267         * exp_tss.adb (Init_Proc): Adding missing support for access to
3268         subprograms and access to protected subprograms of non-default
3269         C++ constructors.
3270
3271 2019-07-04  Eric Botcazou  <ebotcazou@adacore.com>
3272
3273         * gnat1drv.adb (Adjust_Global_Switches): Use proper interface to
3274         set the validity settings in CodePeer mode.
3275         * par-load.adb (Load): Remove all code dealing with validity
3276         settings.
3277         * validsw.ads (Validity_Check_Copies): Alphabetize.
3278         * validsw.adb (Reset_Validity_Check_Options): Set all options to
3279         off.
3280         (Save_Validity_Check_Options): Save all options.
3281
3282 2019-07-04  Hristian Kirtchev  <kirtchev@adacore.com>
3283
3284         * exp_ch3.adb, exp_ch4.adb, exp_ch4.ads, exp_ch5.adb,
3285         exp_ch7.adb, exp_ch9.adb, exp_ch11.adb, exp_unst.adb,
3286         rtsfind.ads, sem_attr.adb, sem_ch10.adb, sem_ch12.adb,
3287         sem_ch13.adb, sem_dim.adb, sem_disp.adb, xref_lib.adb: Minor
3288         reformatting.
3289
3290 2019-07-04  Joffrey Huguet  <huguet@adacore.com>
3291
3292         * libgnarl/a-taside.ads: Add assertion policy to ignore
3293         preconditions.
3294         (Abort_Task, Is_Terminated, Is_Callable): Add preconditions.
3295
3296 2019-07-04  Eric Botcazou  <ebotcazou@adacore.com>
3297
3298         * doc/gnat_rm/implementation_defined_pragmas.rst: Fix
3299         capitalization and parenthesis glitches.
3300         * gnat_rm.texi: Regenerate.
3301
3302 2019-07-04  Ed Schonberg  <schonberg@adacore.com>
3303
3304         * sem_ch10.adb (Remove_Context_Clauses): Handle properly the
3305         removal of a limited_with_clause which appears in the library
3306         unit oF the main unit, when some other unit in the context has a
3307         regular with_clause on the same unit, to prevent spurious
3308         visibility errors in the subsequent analysis of pending instance
3309         bodies.
3310
3311 2019-07-04  Hristian Kirtchev  <kirtchev@adacore.com>
3312
3313         * sem_elab.adb: Add new type Elaboration_Phase_Status along with
3314         a global to keep track of the elaboration phase status.
3315         Initialize all internal data structures to Nil for services
3316         Elaborated_Units, Internal_Representation, and Scenario_Storage.
3317         (Build_Call_Marker): Do not create a call marker when the
3318         elaboration phase is not active.
3319         (Build_Variable_Reference_Marker): Do not create a call marker
3320         when the elaboration phase is not active.
3321         (Check_Elaboration_Scenarios): Destroy all internal structures
3322         when the elaboration phase does not have to run. Do not execute
3323         when the elaboration phase is not active.
3324         (Elaboration_Phase_Active): New routine.
3325         (Finalize_All_Data_Structures): New routine.
3326         (Initialize): Initialize all internal data structures and signal
3327         that the elaboration phase has started.
3328         (Initialize_All_Data_Structures): New routine.
3329         (Initialize_Elaborated_Units): Initialize all internal data
3330         structures.
3331         (Initialize_Internal_Representation): Initialize all internal
3332         data structures.
3333         (Initialize_Scenario_Storage): Initialize all internal data
3334         structures.
3335         (Kill_Elaboration_Scenario): Do not execute when the elaboration
3336         phase is not active.
3337         (Set_Elaboration_Phase): New routine.
3338         (Update_Elaboration_Scenario): Do not execute when the
3339         elaboration phase is not active.
3340
3341 2019-07-04  Gary Dismukes  <dismukes@adacore.com>
3342
3343         * sem_ch6.adb (Analyze_Subprogram_Body_Helper): The special
3344         treatment of calling Mask_Unfrozen_Types must also be done in
3345         the case of an Ignored_Ghost_Entity, because Expander_Active is
3346         False in that case.
3347
3348 2019-07-04  Yannick Moy  <moy@adacore.com>
3349
3350         * sem_prag.adb (Check_Library_Level_Entity): Update for new rule
3351         on SPARK_Mode.
3352
3353 2019-07-04  Justin Squirek  <squirek@adacore.com>
3354
3355         * sem_disp.adb (Check_Controlling_Formals): Obtain the full view
3356         before type comparison.
3357
3358 2019-07-04  Ed Schonberg  <schonberg@adacore.com>
3359
3360         * exp_ch4.ads, exp_ch4.adb (Build_Eq_Call): New visible
3361         subprogram, extracted from Expand_Composite_Equality, to handle
3362         properly the composition of equality for variant record types.
3363         * exp_ch3.adb (MAke_Eq_If): Use Build_Eq_Call for each
3364         component, to handle properly the case of a component with a
3365         user-defined equality. Revert to predefined equality if the
3366         user-defined operation is abstract, to maintain compatibility
3367         with older versions,
3368
3369 2019-07-04  Justin Squirek  <squirek@adacore.com>
3370
3371         * exp_ch3.adb (Build_Initialization_Call): Fixup
3372         *_skip_null_excluding_check argument to handle new default.
3373         (Init_Formals): Make *_skip_null_excluding_check formal default
3374         to False
3375         * exp_ch4.adb (Expand_N_Allocator): Add comment to note heavy
3376         code duplication
3377
3378 2019-07-04  Bob Duff  <duff@adacore.com>
3379
3380         * sem_ch3.adb (Access_Definition): Do not create a master unless
3381         Tasking_Allowed. Otherwise, this fails on restricted runtimes.
3382
3383 2019-07-04  Hristian Kirtchev  <kirtchev@adacore.com>
3384
3385         * sem_util.adb (Propagate_DIC_Attributes): Do not propagate the
3386         Default_Initial_Condition attributes to an incomplete type.
3387
3388 2019-07-04  Ed Schonberg  <schonberg@adacore.com>
3389
3390         * sem_attr.adb (Check_Array_Type): An array type attribute such
3391         as 'First can be applied to an unconstrained array tyope when
3392         the attribute reference appears within an aspect specification
3393         and the prefix is a current instance, given that the prefix of
3394         the attribute will become a formal of the subprogram that
3395         implements the aspect (typically a predicate check).
3396
3397 2019-07-04  Piotr Trojanek  <trojanek@adacore.com>
3398
3399         * sem_util.adb (Yields_Synchronized_Object): Fix typos in
3400         comments.
3401
3402 2019-07-04  Yannick Moy  <moy@adacore.com>
3403
3404         * sem_util.adb (Yields_Synchronized_Object): Adapt to new SPARK
3405         rule.
3406
3407 2019-07-04  Yannick Moy  <moy@adacore.com>
3408
3409         * sem_spark.adb (Check_Statement): Only check permission of
3410         object in extended return when it is of a deep type.
3411
3412 2019-07-04  Justin Squirek  <squirek@adacore.com>
3413
3414         * sem_ch12.adb (Perform_Appropriate_Analysis): Added for
3415         selecting which type of analysis based on wheither the
3416         instantiation is a generic at the library-level. In which case
3417         expansion during analysis.
3418         (Preanalyze_Actuals): Modify calls to Analyze to use the new
3419         routine.
3420
3421 2019-07-04  Ed Schonberg  <schonberg@adacore.com>
3422
3423         * exp_unst.adb: Handle conditional expressions.
3424
3425 2019-07-04  Yannick Moy  <moy@adacore.com>
3426
3427         * sem_spark.adb (Check_Package_Spec, Check_Package_Body): Only
3428         analyze parts of the code marked in SPARK.
3429
3430 2019-07-04  Hristian Kirtchev  <kirtchev@adacore.com>
3431
3432         * erroutc.adb, exp_aggr.adb, inline.adb, opt.adb, sem_ch3.adb:
3433         Minor reformatting.
3434
3435 2019-07-04  Yannick Moy  <moy@adacore.com>
3436
3437         * sem_spark.adb (Explanation, Get_Expl): New functions to get
3438         the explanation for a permission mismatch.
3439         (Perm_Error, Perm_Mismatch, Perm_Error_Loop_Exit): Take
3440         explanation into account for issuing a more precise error
3441         message.
3442         (Set_Perm_Prefixes, Set_Perm_Extensions,
3443         Set_Perm_Extensions_Move): Pass suitable argument for the
3444         explanation node.
3445
3446 2019-07-04  Arnaud Charlet  <charlet@adacore.com>
3447
3448         * exp_aggr.adb (In_Place_Assign_OK): Moved to top level and add
3449         support for record aggregates.
3450         (Component_Check): Use Is_CCG_Supported_Aggregate instead of a
3451         similar local predicate.
3452         (Convert_To_Assignments): Take advantage of In_Place_Assign_OK
3453         predicate when possible.
3454         (Is_CCG_Supported_Aggregate): Return False for records with
3455         representation clauses and fix the logic for dealing with nested
3456         aggregates.
3457
3458 2019-07-04  Piotr Trojanek  <trojanek@adacore.com>
3459
3460         * opt.adb (Set_Config_Switches): Keep assertions policy as
3461         enabled when analysing internal units in GNATprove mode.
3462
3463 2019-07-04  Arnaud Charlet  <charlet@adacore.com>
3464
3465         * exp_ch4.adb (Expand_Short_Circuit_Operator): Strip
3466         N_Variable_Reference_Marker when checking for the presence of
3467         actions.
3468
3469 2019-07-04  Arnaud Charlet  <charlet@adacore.com>
3470
3471         * exp_aggr.adb (Check_Component): Take into account type
3472         conversions.
3473
3474 2019-07-04  Dmitriy Anisimkov  <anisimko@adacore.com>
3475
3476         * doc/gnat_ugn/platform_specific_information.rst: Document
3477         Windows socket timeout particularity.
3478         * gnat_ugn.texi: Regenerate.
3479         * gsocket.h: Include versionhelpers.h.
3480         * socket.c (__gnat_minus_500ms): New function.
3481         * libgnat/g-sothco.ads (Minus_500ms_Windows_Timeout): New
3482         imported function.
3483         * libgnat/g-socket.adb (Set_Socket_Option): Refactor to remove
3484         500ms from the requested timeout only on old Windows version.
3485
3486 2019-07-04  Thomas Quinot  <quinot@adacore.com>
3487
3488         * get_scos.adb: Remove bogus, dead code.
3489
3490 2019-07-04  Ed Schonberg  <schonberg@adacore.com>
3491
3492         * sem_dim.adb (Analyze_Dimension_Array_Aggregate): If the
3493         component is an entity name, its dimensions are those of its
3494         type.
3495
3496 2019-07-03  Bob Duff  <duff@adacore.com>
3497
3498         * doc/gnat_ugn/gnat_utility_programs.rst: Document new flags in
3499         GNATpp.
3500
3501 2019-07-03  Hristian Kirtchev  <kirtchev@adacore.com>
3502
3503         * binde.adb: Remove with clause for System.OS_Lib.
3504         (Force_Elab_Order): Refactor the majority of the code in Butil.
3505         Use the new forced units iterator to obtain unit names.
3506         * bindo-builders.adb: Add with and use clauses for Binderr,
3507         Butil, Opt, Output, Types, GNAT, and GNAT.Dynamic_HTables.  Add
3508         a hash table which maps units to line number in the forced
3509         elaboration order file.
3510         (Add_Unit): New routine.
3511         (Build_Library_Graph): Create forced edges between pairs of
3512         units listed in the forced elaboration order file.
3513         (Create_Forced_Edge, Create_Forced_Edges, Destroy_Line_Number,
3514         Duplicate_Unit_Error, Hash_Unit, Internal_Unit_Info,
3515         Is_Duplicate_Unit, Missing_Unit_Info): New routines.
3516         * bindo-graphs.adb (Is_Internal_Unit, Is_Predefined_Unit):
3517         Refactor some of the behavior to Bindo-Units.
3518         * bindo-graphs.ads: Enable the enumeration literal for forced
3519         edges.
3520         * bindo-units.adb, bindo-units.ads (Is_Internal_Unit,
3521         Is_Predefined_Unit): New routines.
3522         * butil.adb: Add with and use clauses for Opt, GNAT, and
3523         System.OS_Lib.  Add with clause for Unchecked_Deallocation.
3524         (Has_Next, Iterate_Forced_Units, Next, Parse_Next_Unit_Name,
3525         Read_Forced_Elab_Order_File): New routines.
3526         * butil.ads: Add with and use clauses for Types.  Add new
3527         iterator over the units listed in the forced elaboration order
3528         file.
3529         (Has_Next, Iterate_Forced_Units, Next): New routine.
3530         * namet.adb, namet.ads (Present): New routine.
3531
3532 2019-07-03  Bob Duff  <duff@adacore.com>
3533
3534         * sem_ch3.adb (Access_Definition): The code was creating a
3535         master in the case where the designated type is a class-wide
3536         interface type. Create a master in the noninterface case as
3537         well. That is, create a master for all limited class-wide types.
3538
3539 2019-07-03  Yannick Moy  <moy@adacore.com>
3540
3541         * erroutc.adb (Sloc_In_Range): New function to determine whether
3542         the range of a pragma Warnings covers a location, taking
3543         instantiations into account.
3544
3545 2019-07-03  Johannes Kanig  <kanig@adacore.com>
3546
3547         * osint.ads, osint.adb (Get_First_Main_File_Name): New routine
3548         to access the first file provided on the command line.
3549
3550 2019-07-03  Ed Schonberg  <schonberg@adacore.com>
3551
3552         * inline.adb (Process_Formals_In_Aspects): New procedure within
3553         Expand_Inlined_Call, to perform a replacement of references to
3554         formals that appear in aspect specifications within the body
3555         being inlined.
3556
3557 2019-07-03  Justin Squirek  <squirek@adacore.com>
3558
3559         * sem_ch8.adb (Analyze_Object_Renaming): Add call to search for
3560         the appropriate actual subtype of the object renaming being
3561         analyzed.
3562         (Check_Constrained_Object): Minor cleanup.
3563
3564 2019-07-03  Yannick Moy  <moy@adacore.com>
3565
3566         * sem_spark.adb (Get_Observed_Or_Borrowed_Expr): New function to
3567         return go through traversal function call.
3568         (Check_Type): Consistently use underlying type.
3569         (Get_Perm): Adapt for case of elaboration code where variables
3570         are not declared in the environment. Remove incorrect handling
3571         of borrow and observe.
3572
3573 2019-07-03  Hristian Kirtchev  <kirtchev@adacore.com>
3574
3575         * inline.adb (Build_Return_Object_Formal): New routine.
3576         (Can_Split_Unconstrained_Function): Code clean up.
3577         (Copy_Formals,Copy_Return_Object): New routines.
3578         (Split_Unconstrained_Function): Code clean up and refactoring.
3579
3580 2019-07-03  Gary Dismukes  <dismukes@adacore.com>
3581
3582         * bindo-augmentors.adb, bindo-augmentors.ads,
3583         bindo-builders.ads, bindo-elaborators.adb, sem_ch12.adb,
3584         sem_ch13.adb, sem_spark.adb, sinfo.ads: Minor editorial
3585         corrections and reformatting.
3586
3587 2019-07-03  Bob Duff  <duff@adacore.com>
3588
3589         * sem_warn.adb (Check_Infinite_Loop_Warning): Avoid the warning
3590         if an Iterator_Specification is present.
3591
3592 2019-07-03  Bob Duff  <duff@adacore.com>
3593
3594         * doc/gnat_ugn/gnat_utility_programs.rst: Document default
3595         new-line behavior.
3596
3597 2019-07-03  Hristian Kirtchev  <kirtchev@adacore.com>
3598
3599         * ali.adb: Add with and use clauses for GNAT,
3600         GNAT.Dynamic_HTables, and Snames.  Add a map from invocation
3601         signature records to invocation signature ids.  Add various
3602         encodings of invocation-related attributes.  Sort and update
3603         table Known_ALI_Lines.
3604         (Add_Invocation_Construct, Add_Invocation_Relation,
3605         Body_Placement_Kind_To_Code, Code_To_Body_Placement_Kind,
3606         Code_To_Invocation_Construct_Kind, Code_To_Invocation_Kind,
3607         Code_To_Invocation_Graph_Line_Kind, Destroy, Hash): New
3608         routines.
3609         (Initialize_ALI): Sort the initialization sequence. Add
3610         initialization for all invocation-related tables.
3611         (Invocation_Construct_Kind_To_Code,
3612         Invocation_Graph_Line_Kind_To_Code, Invocation_Kind_To_Code,
3613         Invocation_Signature_Of, Present): New routines.
3614         (Scan_ALI): Add the default values for invocation-related ids.
3615         Scan invocation graph lines.
3616         (Scan_Invocation_Graph_Line): New routine.
3617         * ali.ads: Add with clause for GNAT.Dynamic_Tables.  Add types
3618         for invocation constructs, relations, and signatures.  Add
3619         tables for invocation constructs, relations, and signatures.
3620         Update Unit_Record to capture invocation-related ids.  Relocate
3621         table Unit_Id_Tables and subtypes Unit_Id_Table, Unit_Id_Array
3622         from Binde.
3623         (Add_Invocation_Construct, Add_Invocation_Relation,
3624         Body_Placement_Kind_To_Code, Code_To_Body_Placement_Kind,
3625         Code_To_Invocation_Construct_Kind, Code_To_Invocation_Kind,
3626         Code_To_Invocation_Graph_Line_Kind,
3627         Invocation_Construct_Kind_To_Code,
3628         Invocation_Graph_Line_Kind_To_Code, Invocation_Kind_To_Code,
3629         Invocation_Signature_Of, Present): New routines.
3630         * binde.adb: Add with and use clause for Types.  Add use clause
3631         for ALI.Unit_Id_Tables;
3632         * binde.ads: Relocate table Unit_Id_Tables and subtypes
3633         Unit_Id_Table, Unit_Id_Array to ALI.
3634         * bindgen.adb: Remove with and use clause for ALI.
3635         * bindgen.ads: Remove with and use clause for Binde.  Add with
3636         and use clause for ALI.
3637         * bindo.adb,  bindo.ads, bindo-augmentors.adb,
3638         bindo-augmentors.ads, bindo-builders.adb, bindo-builders.ads,
3639         bindo-diagnostics.adb, bindo-diagnostics.ads,
3640         bindo-elaborators.adb, bindo-elaborators.ads, bindo-graphs.adb,
3641         bindo-graphs.ads, bindo-units.adb, bindo-units.ads,
3642         bindo-validators.adb, bindo-validators.ads, bindo-writers.adb,
3643         bindo-writers.ads: New units.
3644         * debug.adb: Use and describe GNAT debug switches -gnatd_F and
3645         -gnatd_G.  Add GNATbind debug switches in the ranges dA .. dZ,
3646         d.a .. d.z, d.A .. d.Z, d.1 .. d.9, d_a .. d_z, d_A .. d_Z, and
3647         d_1 .. d_9.  Use and describe GNATbind debug switches -d_A,
3648         -d_I, -d_L, -d_N, -d_O, -d_T, and -d_V.
3649         * exp_util.adb, exp_util.ads (Exceptions_OK): Relocate to
3650         Sem_Util.
3651         * gnatbind.adb: Add with and use clause for Bindo.  Use the new
3652         Bindo elaboration order only when -d_N is in effect.
3653         * lib-writ.adb
3654         (Column, Extra, Invoker, Kind, Line, Locations, Name, Placement,
3655         Scope, Signature, Target): New routines.
3656         (Write_ALI): Output all invocation-related data.
3657         (Write_Invocation_Graph): New routine.
3658         * lib-writ.ads: Document the invocation graph ALI line.
3659         * namet.adb, namet.ads (Present): New routines.
3660         * sem_ch8.adb (Find_Direct_Name): Capture the status of
3661         elaboration checks and warnings of an identifier.
3662         (Find_Expanded_Name): Capture the status of elaboration checks
3663         and warnings of an expanded name.
3664         * sem_ch12.adb (Analyze_Generic_Package_Declaration): Ensure
3665         that invocation graph-related data within the body of the main
3666         unit is encoded in the ALI file.
3667         (Analyze_Generic_Subprogram_Declaration): Ensure that invocation
3668         graph-related data within the body of the main unit is encoded
3669         in the ALI file.
3670         (Analyze_Package_Instantiation): Perform minimal decoration of
3671         the instance entity.
3672         (Analyze_Subprogram_Instantiation): Perform minimal decoration
3673         of the instance entity.
3674         * sem_elab.adb: Perform heavy refactoring of all code. The unit
3675         is now split into "services" which specialize in one area of ABE
3676         checks.  Add processing in order to capture invocation-graph
3677         related attributes of the main unit, and encode them in the ALI
3678         file.  The Processing phase can now operate in multiple modes,
3679         all described by type Processing_Kind.  Scenarios and targets
3680         are now distinct at the higher level, and carry their own
3681         representations. This eliminates the need to constantly
3682         recompute their attributes, and offers the various processors a
3683         uniform interface.  The various initial states of the Processing
3684         phase are now encoded using type Processing_In_State, and
3685         xxx_State constants.
3686         * sem_elab.ads: Update the literals of type
3687         Enclosing_Level_Kind.  Add Inline pragmas on several routines.
3688         * sem_prag.adb (Process_Inline): Ensure that invocation
3689         graph-related data within the body of the main unit is encoded
3690         in the ALI file.
3691         * sem_util.adb (Enclosing_Generic_Body, Enclosing_Generic_Unit):
3692         Code clean up.
3693         (Exceptions_OK): Relocated from Sem_Util.
3694         (Mark_Save_Invocation_Graph_Of_Body): New routine.
3695         * sem_util.ads (Exceptions_OK): Relocated from Sem_Util.
3696         (Mark_Save_Invocation_Graph_Of_Body): New routine.
3697         * sinfo.adb (Is_Elaboration_Checks_OK_Node): Now applicable to
3698         N_Variable_Reference_Marker.
3699         (Is_Elaboration_Warnings_OK_Node): Now applicable to
3700         N_Expanded_Name, N_Identifier, N_Variable_Reference_Marker.
3701         (Is_Read): Use Flag4.
3702         (Is_SPARK_Mode_On_Node): New applicable to
3703         N_Variable_Reference_Marker.
3704         (Is_Write): Use Flag5.
3705         (Save_Invocation_Graph_Of_Body): New routine.
3706         (Set_Is_Elaboration_Checks_OK_Node): Now applicable to
3707         N_Variable_Reference_Marker.
3708         (Set_Is_Elaboration_Warnings_OK_Node): Now applicable to
3709         N_Expanded_Name, N_Identifier, N_Variable_Reference_Marker.
3710         (Set_Is_SPARK_Mode_On_Node): New applicable to
3711         N_Variable_Reference_Marker.
3712         (Set_Save_Invocation_Graph_Of_Body): New routine.
3713         * sinfo.ads: Update the documentation of attributes
3714         Is_Elaboration_Checks_OK_Node, Is_Elaboration_Warnings_OK_Node,
3715         Is_SPARK_Mode_On_Node.  Update the flag usage of attributes
3716         Is_Read, Is_Write.  Add attribute Save_Invocation_Graph_Of_Body
3717         and update its occurrence in nodes.
3718         (Save_Invocation_Graph_Of_Body): New routine along with pragma
3719         Inline.
3720         (Set_Save_Invocation_Graph_Of_Body): New routine along with
3721         pragma Inline.
3722         * switch-b.adb (Scan_Binder_Switches): Refactor the scanning of
3723         debug switches.
3724         (Scan_Debug_Switches): New routine.
3725         * libgnat/g-dynhta.adb, libgnat/g-dynhta.ads (Contains): New routine.
3726         * libgnat/g-graphs.adb (Associate_Vertices): Update the use of
3727         Component_Vertex_Iterator.
3728         (Contains_Component, Contains_Edge, Contains_Vertex, Has_Next):
3729         Reimplemented.
3730         (Iterate_Component_Vertices): New routine.
3731         (Iterate_Vertices): Removed.
3732         (Next): Update the parameter profile.
3733         (Number_Of_Component_Vertices, Number_Of_Outgoing_Edges): New
3734         routines.
3735         * libgnat/g-graphs.ads: Update the initialization of
3736         No_Component.  Add type Component_Vertex_Iterator.  Remove type
3737         Vertex_Iterator.
3738         (Has_Next): Add new versions and remove old ones.
3739         (Iterate_Component_Vertices): New routine.
3740         (Iterate_Vertices): Removed.
3741         (Next): Add new versions and remove old ones.
3742         (Number_Of_Component_Vertices, Number_Of_Outgoing_Edges): New
3743         routines.
3744         * libgnat/g-sets.adb (Contains): Reimplemented.
3745         * gcc-interface/Make-lang.in (GNATBIND_OBJS): Add
3746         GNAT.Dynamic_HTables, GNAT.Graphs and Bindo units.
3747         * rtsfind.ads: Remove extra space.
3748
3749 2019-07-03  Yannick Moy  <moy@adacore.com>
3750
3751         * sem_spark.adb: Add support for locally borrowing and observing
3752         a path.
3753         (Get_Root_Object): Add parameter Through_Traversal to denote
3754         when we are interesting in getting to the traversed parameter.
3755         (Is_Prefix_Or_Almost): New function to support detection of
3756         illegal access to borrowed or observed paths.
3757         (Check_Pragma): Add analysis of assertion pragmas.
3758
3759 2019-07-03  Ed Schonberg  <schonberg@adacore.com>
3760
3761         * sem_ch13.adb (Build_Predicate_Functions): In a generic context
3762         we do not build the bodies of predicate fuctions, but the
3763         expression in a static predicate must be elaborated to allow
3764         case coverage checking within the generic unit.
3765         (Build_Discrete_Static_Predicate): In a generic context, return
3766         without building function body once the
3767         Static_Discrete_Predicate expression for the type has been
3768         constructed.
3769
3770 2019-07-03  Hristian Kirtchev  <kirtchev@adacore.com>
3771
3772         * bindgen.adb, inline.adb, layout.adb, sem_ch12.adb,
3773         sem_ch13.adb, sem_ch7.adb, styleg.adb: Minor reformatting.
3774
3775 2019-07-03  Bob Duff  <duff@adacore.com>
3776
3777         * par-ch3.adb (P_Defining_Identifier): Call
3778         Check_Defining_Identifier_Casing.
3779         * style.ads, styleg.ads, styleg.adb
3780         (Check_Defining_Identifier_Casing): New procedure to check for
3781         mixed-case defining identifiers.
3782         * stylesw.ads, stylesw.adb (Style_Check_Mixed_Case_Decls): New
3783         flag for checking for mixed-case defining identifiers.
3784         * doc/gnat_ugn/building_executable_programs_with_gnat.rst:
3785         Document new feature.
3786         * gnat_ugn.texi: Regenerate.
3787
3788 2019-07-03  Eric Botcazou  <ebotcazou@adacore.com>
3789
3790         * doc/gnat_ugn/building_executable_programs_with_gnat.rst
3791         (Warning message control): Document that -gnatw.z/Z apply to
3792         array types.
3793         * freeze.adb (Freeze_Entity): Give -gnatw.z warning for array
3794         types as well, but not if the specified alignment is the minimum
3795         one.
3796         * gnat_ugn.texi: Regenerate.
3797
3798 2019-07-03  Bob Duff  <duff@adacore.com>
3799
3800         * einfo.ads, exp_util.adb, layout.ads, sinfo.ads: Spell "laid"
3801         correctly.
3802
3803 2019-07-03  Ed Schonberg  <schonberg@adacore.com>
3804
3805         * sem_ch13.adb (Analyze_Attribute_Definition_Clause): No error
3806         message on attribute applied to a renaming when the renamed
3807         object is an aggregate (from code reading).
3808         (Check_Aspect_At_End_Of_Declarations): In a generic context
3809         where freeze nodes are not generated, the original expression
3810         for an aspect may need to be analyzed to precent spurious
3811         conformance errors when compared with the expression that is
3812         anakyzed at the end of the current declarative list.
3813
3814 2019-07-03  Eric Botcazou  <ebotcazou@adacore.com>
3815
3816         * layout.adb (Layout_Type): Do not set the component size of an
3817         array with a scalar component if the component type is
3818         overaligned.
3819
3820 2019-07-03  Ed Schonberg  <schonberg@adacore.com>
3821
3822         * inline.adb (Make_Loop_Labels_Unique): New procedure to modify
3823         the source code of subprograms that are inlined by the
3824         front-end, to prevent accidental duplication between loop labels
3825         in the inlined code and the code surrounding the inlined call.
3826
3827 2019-07-03  Hristian Kirtchev  <kirtchev@adacore.com>
3828
3829         * doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Update
3830         the section on resolving elaboration circularities to eliminate
3831         certain combinations of switches which together do not produce
3832         the desired effect and confuse users.
3833         * gnat_ugn.texi: Regenerate.
3834
3835 2019-07-03  Arnaud Charlet  <charlet@adacore.com>
3836
3837         * bindgen.adb (Gen_Main): Disable generation of reference to
3838         Ada_Main_Program_Name for CCG.
3839         * bindusg.adb (Display): Add -G to the command-line usage for
3840         gnatbind.
3841         * opt.ads (Generate_C_Code): Update comment.
3842         * switch-b.adb (Scan_Binder_Switches): Add handling for -G.
3843
3844 2019-07-03  Arnaud Charlet  <charlet@adacore.com>
3845
3846         * sem_ch7.adb (Has_Referencer): Do not consider inlined
3847         subprograms when generating C code, which allows us to generate
3848         static inline subprograms.
3849
3850 2019-07-03  Justin Squirek  <squirek@adacore.com>
3851
3852         * sem_ch6.adb (Check_Conformance): Add expression checking for
3853         constant modifiers in anonymous access types (in addition to
3854         "non-null" types) so that they are considered "matching" for
3855         subsequent conformance tests.
3856
3857 2019-07-03  Arnaud Charlet  <charlet@adacore.com>
3858
3859         * doc/gnat_rm/standard_and_implementation_defined_restrictions.rst:
3860         Clarify wording on No_Multiple_Elaboration.
3861         * gnat_rm.texi: Regenerate.
3862
3863 2019-07-03  Ed Schonberg  <schonberg@adacore.com>
3864
3865         * sem_ch8.adb (Find_Selected_Component): If the prefix is the
3866         current instance of a type or subtype, complete the resolution
3867         of the name by finding the component of the type denoted by the
3868         selector name.
3869
3870 2019-07-03  Eric Botcazou  <ebotcazou@adacore.com>
3871
3872         * doc/gnat_rm/interfacing_to_other_languages.rst (Interfacing to C):
3873         Document that boolean types with convention C now map to C99 bool.
3874         * gnat_rm.texi: Regenerate.
3875
3876 2019-07-03  Javier Miranda  <miranda@adacore.com>
3877
3878         * exp_attr.adb (Expand_Min_Max_Attribute): Code cleanup:
3879         removing code that it is now never executed in the CCG compiler
3880         (dead code).
3881
3882 2019-07-02  Iain Sandoe  <iain@sandoe.co.uk>
3883
3884         * libgnat/system-darwin-ppc.ads: Set Stack_Check_Probes True for
3885         PPC Darwin.
3886
3887 2019-07-01  Ed Schonberg  <schonberg@adacore.com>
3888
3889         * sem_ch12.adb (Is_Defaulted): New predicate in
3890         Check_Formal_Package_Intance, to skip the conformance of checks
3891         on parameters of a formal package that are defaulted,
3892
3893 2019-07-01  Hristian Kirtchev  <kirtchev@adacore.com>
3894
3895         * checks.adb, exp_ch9.adb, exp_unst.adb, sem_ch4.adb,
3896         sem_prag.adb, sem_spark.adb: Minor reformatting.
3897
3898 2019-07-01  Ed Schonberg  <schonberg@adacore.com>
3899
3900         * sem_attr.adb (Analyze_Attribute, case Enum_Rep): Allow prefix
3901         of attribute to be an attribute reference of a discrete type.
3902
3903 2019-07-01  Eric Botcazou  <ebotcazou@adacore.com>
3904
3905         * sem_ch12.adb (Analyze_Subprogram_Instantiation): Move up
3906         handling of Has_Pragma_Inline_Always and deal with
3907         Has_Pragma_No_Inline.
3908
3909 2019-07-01  Ed Schonberg  <schonberg@adacore.com>
3910
3911         * sem_ch3.adb (Build_Derived_Record_Type): If the parent type is
3912         declared as a subtype of a private type with an inherited
3913         discriminant constraint, its generated full base appears as a
3914         record subtype, so we need to retrieve its oen base type so that
3915         the inherited constraint can be applied to it.
3916
3917 2019-07-01  Yannick Moy  <moy@adacore.com>
3918
3919         * sem_spark.adb: Completely rework the algorithm for ownership
3920         checking, as the rules in SPARK RM have changed a lot.
3921         * sem_spark.ads: Update comments.
3922
3923 2019-07-01  Dmitriy Anisimkov  <anisimko@adacore.com>
3924
3925         * gsocket.h (Has_Sockaddr_Len): Use the offset of sin_family offset in
3926         the sockaddr_in structure to determine the existence of length field
3927         before the sin_family.
3928
3929 2019-07-01  Ed Schonberg  <schonberg@adacore.com>
3930
3931         * sem_prag.adb (Analyze_Pragma, case Weak_External): Pragma only
3932         applies to entities with run-time addresses, not to types.
3933
3934 2019-07-01  Piotr Trojanek  <trojanek@adacore.com>
3935
3936         * einfo.adb, sem_ch7.adb, sem_prag.adb, sem_util.adb: Update
3937         references to the SPARK RM after the removal of Rule 7.1.4(5).
3938
3939 2019-07-01  Piotr Trojanek  <trojanek@adacore.com>
3940
3941         * sysdep.c: Cleanup references to LynuxWorks in docs and
3942         comments.
3943
3944 2019-07-01  Ed Schonberg  <schonberg@adacore.com>
3945
3946         * checks.adb (Insert_Valid_Check): Do not apply validity check
3947         to variable declared within a protected object that uses the
3948         Lock_Free implementation, to prevent unwarranted constant
3949         folding, because entities within such an object msut be treated
3950         as volatile.
3951
3952 2019-07-01  Eric Botcazou  <ebotcazou@adacore.com>
3953
3954         * exp_ch9.adb (Check_Inlining): Deal with Has_Pragma_No_Inline.
3955
3956 2019-07-01  Ed Schonberg  <schonberg@adacore.com>
3957
3958         * exp_unst.adb (Visit_Node, Check_Static_Type): Improve the
3959         handling of private and incomplete types whose full view is an
3960         access type, to detect additional uplevel references in dynamic
3961         bounds. This is relevant to N_Free_Statement among others that
3962         manipulate types whose full viww may be an access type.
3963
3964 2019-07-01  Pat Rogers  <rogers@adacore.com>
3965
3966         * doc/gnat_rm/representation_clauses_and_pragmas.rst: Correct
3967         size indicated for R as a component of an array.
3968         * gnat_rm.texi: Regenerate.
3969
3970 2019-07-01  Justin Squirek  <squirek@adacore.com>
3971
3972         * libgnat/s-win32.ads: Add definition for ULONG, modify
3973         OVERLAPPED type, and add appropriate pragmas.
3974
3975 2019-07-01  Bob Duff  <duff@adacore.com>
3976
3977         * gnat1drv.adb (gnat1drv): Call Write_ALI if the main unit is
3978         ignored-ghost.
3979
3980 2019-07-01  Yannick Moy  <moy@adacore.com>
3981
3982         * sem_ch4.adb (Operator_Check): Refine error message.
3983
3984 2019-07-01  Piotr Trojanek  <trojanek@adacore.com>
3985
3986         * libgnat/a-calend.ads: Revert "Global => null" contracts on
3987         non-pure routines.
3988
3989 2019-07-01  Piotr Trojanek  <trojanek@adacore.com>
3990
3991         * exp_attr.adb, libgnat/g-graphs.ads: Fix typos in comments:
3992         componant -> component.
3993
3994 2019-07-01  Hristian Kirtchev  <kirtchev@adacore.com>
3995
3996         * libgnat/g-graphs.adb: Use type Directed_Graph rather than
3997         Instance in various routines.
3998         * libgnat/g-graphs.ads: Change type Instance to Directed_Graph.
3999         Update various routines that mention the type.
4000
4001 2019-07-01  Hristian Kirtchev  <kirtchev@adacore.com>
4002
4003         * libgnat/g-sets.adb: Use type Membership_Set rathern than
4004         Instance in various routines.
4005         * libgnat/g-sets.ads: Change type Instance to Membership_Set.
4006         Update various routines that mention the type.
4007
4008 2019-07-01  Hristian Kirtchev  <kirtchev@adacore.com>
4009
4010         * libgnat/g-lists.adb: Use type Doubly_Linked_List rather than
4011         Instance in various routines.
4012         * libgnat/g-lists.ads: Change type Instance to
4013         Doubly_Linked_List. Update various routines that mention the
4014         type.
4015
4016 2019-07-01  Hristian Kirtchev  <kirtchev@adacore.com>
4017
4018         * libgnat/g-dynhta.adb: Use type Dynamic_Hash_Table rather than
4019         Instance in various routines.
4020         * libgnat/g-dynhta.ads: Change type Instance to
4021         Dynamic_Hash_Table. Update various routines that mention the
4022         type.
4023
4024 2019-07-01  Hristian Kirtchev  <kirtchev@adacore.com>
4025
4026         * exp_attr.adb, exp_ch7.adb, exp_unst.adb, sem_ch3.adb,
4027         sem_util.adb, uintp.adb, uintp.ads: Minor reformatting.
4028
4029 2019-07-01  Javier Miranda  <miranda@adacore.com>
4030
4031         * exp_attr.adb (Expand_Min_Max_Attribute): Disable expansion of
4032         'Min/'Max on integer, enumeration, fixed point and floating
4033         point types since the CCG backend now provides in file
4034         standard.h routines to support it.
4035
4036 2019-07-01  Hristian Kirtchev  <kirtchev@adacore.com>
4037
4038         * impunit.adb: Add GNAT.Graphs to list Non_Imp_File_Names_95.
4039         * Makefile.rtl, gcc-interface/Make-lang.in: Register unit
4040         GNAT.Graphs.
4041         * libgnat/g-dynhta.adb: Various minor cleanups (use Present
4042         rather than direct comparisons).
4043         (Delete): Reimplement to use Delete_Node.
4044         (Delete_Node): New routine.
4045         (Destroy_Bucket): Invoke the provided destructor.
4046         (Present): New routines.
4047         * libgnat/g-dynhta.ads: Add new generic formal Destroy_Value.
4048         Use better names for the components of iterators.
4049         * libgnat/g-graphs.adb, libgnat/g-graphs.ads: New unit.
4050         * libgnat/g-lists.adb: Various minor cleanups (use Present
4051         rather than direct comparisons).
4052         (Delete_Node): Invoke the provided destructor.
4053         (Present): New routine.
4054         * libgnat/g-lists.ads: Add new generic formal Destroy_Element.
4055         Use better names for the components of iterators.
4056         (Present): New routine.
4057         * libgnat/g-sets.adb, libgnat/g-sets.ads (Destroy, Preset,
4058         Reset): New routines.
4059
4060 2019-07-01  Dmitriy Anisimkov  <anisimko@adacore.com>
4061
4062         * libgnat/g-sothco.adb (Get_Address): Fix the case when AF_INET6
4063         is not defined.
4064
4065 2019-07-01  Ed Schonberg  <schonberg@adacore.com>
4066
4067         * exp_attr.adb (Expand_Attribute_Reference, case Invalid_Value):
4068         Resolve result of call to Get_Simple_Init_Val, which may be a
4069         conversion of a literal.
4070
4071 2019-07-01  Hristian Kirtchev  <kirtchev@adacore.com>
4072
4073         * freeze.adb (Freeze_Expression): Remove the horrible useless
4074         name hiding of N. Insert the freeze nodes generated by the
4075         expression prior to the expression when the nearest enclosing
4076         scope is transient.
4077
4078 2019-07-01  Pierre-Marie de Rodat  <derodat@adacore.com>
4079
4080         * doc/gnat_ugn/building_executable_programs_with_gnat.rst: Fix
4081         formatting issues in the -gnatR section.
4082         * gnat_ugn.texi: Regenerate.
4083
4084 2019-06-30  Iain Sandoe  <iain@sandoe.co.uk>
4085
4086         * gnatlink.adb (Link_Step): Remove duplicate -static-libgcc switches.
4087         Push -shared-libgcc explicitly, when it is the target default (unless
4088         overidden by the static flag).
4089         When the user has put an instance of shared/static-libgcc do not push
4090         a duplicate of this.
4091
4092 2019-06-29  Eric Botcazou  <ebotcazou@adacore.com>
4093
4094         * gcc-interface/decl.c (gnat_to_gnu_entity): Beep up comment on SAVED,
4095         and tweak comment on the assertion about the scopes of Itypes.  Do not
4096         skip the regular processing for Itypes that are E_Record_Subtype with
4097         a Cloned_Subtype.  Get the Cloned_Subtype for every E_Record_Subtype
4098         if the type is dummy and hasn't got its own freeze node.
4099         <E_Record_Subtype>: Save again the DECL of the Cloned_Subtype, if any.
4100         <E_Access_Subtype>: Save again the DECL of the equivalent type.
4101         (Gigi_Equivalent_Type) <E_Access_Subtype>: New case.
4102
4103 2019-06-29  Eric Botcazou  <ebotcazou@adacore.com>
4104
4105         * gcc-interface/utils.c (unchecked_convert): Tweak comment.  Only skip
4106         dereferences when padding to have the same size on both sides.  Do it
4107         for destination types with self-referential size too.
4108
4109 2019-06-29  Eric Botcazou  <ebotcazou@adacore.com>
4110
4111         * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: If the
4112         type requires strict alignment, then set the RM size to the type size.
4113         Rework handling of alignment and sizes of tagged types in ASIS mode.
4114         (validate_size): Rename local variable and remove special handling for
4115         strict-alignment types.
4116         * gcc-interface/utils.c (finish_record_type): Constify local variables
4117         and use properly typed constants.
4118
4119 2019-06-29  Eric Botcazou  <ebotcazou@adacore.com>
4120
4121         * gcc-interface/decl.c (gnat_to_gnu_field): Rework error messages for
4122         fields requiring strict alignment, add explicit test on Storage_Unit
4123         for position and size, and mention type alignment for position.
4124
4125 2019-06-29  Eric Botcazou  <ebotcazou@adacore.com>
4126
4127         * gcc-interface/trans.c (mark_visited_r): Set TYPE_SIZES_GIMPLIFIED on
4128         the main variant of a type, if any.
4129
4130 2019-06-29  Eric Botcazou  <ebotcazou@adacore.com>
4131
4132         * gcc-interface/decl.c (set_nonaliased_component_on_array_type): Add
4133         missing guard for the presence of TYPE_CANONICAL.
4134         (set_reverse_storage_order_on_array_type): Likewise.
4135
4136 2019-06-29  Eric Botcazou  <ebotcazou@adacore.com>
4137
4138         * gcc-interface/gigi.h (make_packable_type): Remove default value.
4139         (value_factor_p): Tweak prototype.
4140         * gcc-interface/decl.c (gnat_to_gnu_entity): Add comment.
4141         (gnat_to_gnu_component_type): Likewise.
4142         (gnat_to_gnu_field): Likewise.  Fetch the position of the field earlier
4143         and simplify the condition under which the type is packed.  Declare
4144         local variable is_bitfield.  Pass 1 as max_align to make_packable_type
4145         if it is set to true.
4146         (copy_and_substitute_in_layout): Pass 0 to make_packable_type.
4147         * gcc-interface/utils.c (make_packable_array_type): New function.
4148         (make_packable_type): Use it to rewrite the type of array field.
4149         (maybe_pad_type): Pass align parameter to make_packable_type.
4150         (create_field_decl): Minor tweaks.
4151         (value_factor_p): Assert that FACTOR is a power of 2 and replace the
4152         modulo computation by a masking operation.
4153
4154 2019-06-25  Eric Botcazou  <ebotcazou@adacore.com>
4155
4156         * gcc-interface/decl.c (gnat_to_gnu_entity): Remove superfluous test
4157         in previous change.
4158         * gcc-interface/gigi.h (maybe_character_type): Fix formatting.
4159         (maybe_character_value): Likewise.
4160
4161 2019-06-24  Jan Hubicka  <jh@suse.cz>
4162
4163         * gcc-interface/decl.c (gnat_to_gnu_entity): Check that
4164         type is array or integer prior checking string flag.
4165         * gcc-interface/gigi.h (maybe_character_type): Likewise.
4166         (maybe_character_value): Likewise.
4167
4168 2019-06-24  Martin Sebor  <msebor@redhat.com>
4169
4170         * gcc-interface/utils.c (handle_nonnull_attribute): Quote attribute
4171         name.
4172
4173 2019-06-18  Arnaud Charlet  <charlet@adacore.com>
4174
4175         PR ada/80590
4176         * sem_ch5.adb (Analyze_Loop_Statement): Avoid exception propagation
4177         during normal processing.
4178
4179 2019-06-17  Arnaud Charlet  <charlet@adacore.com>
4180
4181         PR ada/80590
4182         * exp_ch9.adb (Expand_N_Delay_Relative_Statement): Swap the two
4183         conditions to avoid a unnecessary exception propagation in the default
4184         case.
4185
4186 2019-05-28  Eric Botcazou  <ebotcazou@adacore.com>
4187
4188         * gcc-interface/utils.c (handle_stack_protect_attribute): Move around.
4189
4190 2019-05-28  Eric Botcazou  <ebotcazou@adacore.com>
4191
4192         * doc/gnat_rm/implementation_defined_pragmas.rst (Machine_Attribute):
4193         Document additional optional parameters.
4194         * sem_prag.adb (Analyze_Pragma) <Pragma_Machine_Attribute>: Accept
4195         more than one optional parameter.
4196         * gcc-interface/decl.c (prepend_one_attribute_pragma): Alphabetize
4197         the list of supported pragmas.  Simplify the handling of parameters
4198         and add support for more than one optional parameter.
4199         * gcc-interface/utils.c (attr_cold_hot_exclusions): New constant.
4200         (gnat_internal_attribute_table): Add entry for no_icf, noipa, flatten,
4201         used, cold, hot, target and target_clones.
4202         (begin_subprog_body): Do not create the RTL for the subprogram here.
4203         (handle_noicf_attribute): New static function.
4204         (handle_noipa_attribute): Likewise.
4205         (handle_flatten_attribute): Likewise.
4206         (handle_used_attribute): Likewise.
4207         (handle_cold_attribute): Likewise.
4208         (handle_hot_attribute): Likewise.
4209         (handle_target_attribute): Likewise.
4210         (handle_target_clones_attribute): Likewise.
4211
4212 2019-05-28  Eric Botcazou  <ebotcazou@adacore.com>
4213
4214         * gcc-interface/trans.c (lvalue_required_for_attribute_p): Return 0
4215         for 'Size too.
4216         (Identifier_to_gnu): Use the actual subtype for a reference to a
4217         packed array in a return statement.
4218         (Attribute_to_gnu) <Attr_Size>: Do not strip VIEW_CONVERT_EXPRs from
4219         the prefix in every case.
4220
4221 2019-05-28  Eric Botcazou  <ebotcazou@adacore.com>
4222
4223         * gcc-interface/trans.c (gnat_to_gnu): Remove superfluous tests on
4224         Backend_Overflow_Checks_On_Target and rework comments.
4225
4226 2019-05-28  Eric Botcazou  <ebotcazou@adacore.com>
4227
4228         * gcc-interface/trans.c (walk_nesting_tree): New static function.
4229         (finalize_nrv): Use it to walk the entire nesting tree.
4230
4231 2019-05-28  Eric Botcazou  <ebotcazou@adacore.com>
4232
4233         * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Subtype>: Remove
4234         obsolete test on Is_For_Access_Subtype.
4235
4236 2019-05-28  Eric Botcazou  <ebotcazou@adacore.com>
4237
4238         * gcc-interface/decl.c (components_to_record): Set a name on the type
4239         created for the REP part, if any.
4240         * gcc-interface/utils.c (finish_record_type): Only take the maximum
4241         when merging sizes for a variant part at offset 0.
4242         (merge_sizes): Rename has_rep parameter into max.
4243
4244 2019-05-28  Eric Botcazou  <ebotcazou@adacore.com>
4245
4246         * gcc-interface/utils.c (gnat_internal_attribute_table): Add support
4247         for stack_protect attribute.
4248         (handle_stack_protect_attribute): New static function.
4249
4250 2019-05-28  Eric Botcazou  <ebotcazou@adacore.com>
4251
4252         * gcc-interface/decl.c (intrin_arglists_compatible_p): Do not return
4253         false if the internal builtin uses a variable list.
4254
4255 2019-05-27  Eric Botcazou  <ebotcazou@adacore.com>
4256
4257         * gcc-interface/trans.c (Call_to_gnu): Do not initialize the temporary
4258         created out of addressability concerns if it's for the _Init parameter
4259         of an initialization procedure.
4260
4261 2019-05-27  Eric Botcazou  <ebotcazou@adacore.com>
4262
4263         * gcc-interface/ada-builtin-types.def: New file.
4264         * gcc-interface/ada-builtins.def: Likewise.
4265         * gcc-interface/ada-tree.h (BUILT_IN_LIKELY): New macro.
4266         (BUILT_IN_UNLIKELY): Likewise.
4267         * gcc-interface/trans.c (independent_iterations_p): Initialize the
4268         auto-vector to 16 elements.
4269         (Call_to_gnu): Remove local variable and change the vector of actual
4270         parameters to an auto-vector.  Do not convert actual parameters to
4271         the argument type for front-end built-in functions.  Add support for
4272         front-end built-in functions.
4273         (build_noreturn_cond): Use internal instead of built-in function.
4274         * gcc-interface/utils.c (c_builtin_type): Include ada-builtin-types.def
4275         (install_builtin_function_types): Likewise.
4276         (install_builtin_functions): Include ada-builtins.def first.
4277
4278 2019-05-27  Eric Botcazou  <ebotcazou@adacore.com>
4279
4280         * gcc-interface/utils.c (maybe_pad_type): Issue the warning for the
4281         specific case of component types preferably.
4282
4283 2019-05-27  Eric Botcazou  <ebotcazou@adacore.com>
4284
4285         * gcc-interface/trans.c (Identifier_to_gnu): Minor tweaks.
4286         (gnat_to_gnu): Do not convert the result if it is a reference to an
4287         unconstrained array used as the prefix of an attribute reference that
4288         requires an lvalue.
4289
4290 2019-05-27  Eric Botcazou  <ebotcazou@adacore.com>
4291
4292         * gcc-interface/trans.c (Gigi_Types_Compatible): New predicate.
4293         (Identifier_to_gnu): Use it to assert that the type of the identifier
4294         and that of its entity are compatible for gigi.  Rename a couple of
4295         local variables and separate the processing of the result type.
4296
4297 2019-05-27  Eric Botcazou  <ebotcazou@adacore.com>
4298
4299         * gcc-interface/trans.c (Call_to_gnu): Use the unpadded type when
4300         putting back an intermediate conversion the type of the actuals.
4301
4302 2019-05-27  Eric Botcazou  <ebotcazou@adacore.com>
4303
4304         * gcc-interface/trans.c (gnat_to_gnu) <Shift operations>: Convert the
4305         count to the unsigned version of its base type before proceeding.
4306
4307 2019-05-16  Martin Sebor  <msebor@redhat.com>
4308
4309         * gcc-interface/trans.c (check_inlining_for_nested_subprog): Quote
4310         reserved names.
4311
4312 2019-05-08  Arnaud Charlet  <charlet@adacore.com>
4313
4314         * standard.ads.h: New file.
4315
4316 2019-05-07  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
4317
4318         * gcc-interface/Makefile.in (install-gcc-specs): Use foreach.
4319         Honor DESTDIR.
4320
4321 2019-04-29  Michael K. Darling  <darlingm@gmail.com>
4322
4323         * gnatvsn.ads: Bump Library_Version to 10.
4324
4325 2019-04-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4326             Bernd Edlinger  <bernd.edlinger@hotmail.de>
4327             Jakub Jelinek  <jakub@redhat.com>
4328
4329         PR target/89093
4330         * raise-gcc.c (TARGET_ATTRIBUTE): Define.
4331         (continue_unwind, personality_body, PERSONALITY_FUNCTION): Add
4332         TARGET_ATTRIBUTE.
4333
4334 2019-04-07  Eric Botcazou  <ebotcazou@adacore.com>
4335
4336         * libgnat/i-cexten.ads (CFloat_128): New type.
4337
4338 2019-03-22  Dmitriy Anisimkov  <anisimko@adacore.com>
4339
4340         PR ada/89583
4341         * libgnat/g-socket.adb (Bind_Socket, Connect_Socket,
4342         Send_Socket): Fix the computation of structure lengths passed to
4343         low level routines.
4344         (Is_IPv6_Address): Fix the number of expected colons.
4345
4346 2019-03-11  Martin Liska  <mliska@suse.cz>
4347
4348         * gcc-interface/misc.c (gnat_post_options): Wrap option name in string
4349         format message and fix GNU coding style.
4350
4351 2019-02-08  Eric Botcazou  <ebotcazou@adacore.com>
4352
4353         * gcc-interface/trans.c (gnat_to_gnu) <N_Aggregate>: Minor tweak.
4354         * gcc-interface/utils.c (convert): Do not pad when doing an unchecked
4355         conversion here.  Use TREE_CONSTANT throughout the function.
4356         (unchecked_convert): Also pad if the source is a CONSTRUCTOR and the
4357         destination is a more aligned array type or a larger aggregate type,
4358         but not between original and packable versions of a type.
4359
4360 2019-02-08  Eric Botcazou  <ebotcazou@adacore.com>
4361
4362         * gcc-interface/utils.c (max_size) <tcc_unary>: Be prepared for an
4363         operand with VOID_TYPE.
4364
4365 2019-02-08  Eric Botcazou  <ebotcazou@adacore.com>
4366
4367         * gcc-interface/trans.c (elaborate_all_entities): Do not elaborate the
4368         entities of a package renaming another one.
4369
4370 2019-02-08  Eric Botcazou  <ebotcazou@adacore.com>
4371
4372         * gcc-interface/trans.c (Regular_Loop_to_gnu): Replace tests on
4373         individual flag_unswitch_loops and flag_tree_loop_vectorize switches
4374         with test on global optimize switch.
4375         (Raise_Error_to_gnu): Likewise.
4376
4377 2019-02-07  Eric Botcazou  <ebotcazou@adacore.com>
4378
4379         * libgnarl/s-linux__sparc.ads (ETIMEDOUT): Set to correct value.
4380
4381 2019-02-06  Arnaud Charlet  <charlet@adacore.com>
4382
4383         * libgnarl/s-linux__x32.ads: Resync list of signals with s-linux.ads
4384
4385 2019-01-27  Eric Botcazou  <ebotcazou@adacore.com>
4386
4387         * repinfo.adb (List_Component_Layout): Remove superfluous space for
4388         zero-sized field.
4389         * gcc-interface/ada-tree.h (TYPE_IS_EXTRA_SUBTYPE_P): New macro.
4390         * gcc-interface/gigi.h (create_extra_subtype): Declare.
4391         * gcc-interface/decl.c (TYPE_ARRAY_SIZE_LIMIT): Likewise.
4392         (update_n_elem): New function.
4393         (gnat_to_gnu_entity): Use create_extra_subtype to create extra subtypes
4394         instead of doing it manually.
4395         <E_Array_Type>: Use update_n_elem to compute the maximum size.  Use the
4396         index type instead of base type for the bounds. Set TYPE_ARRAY_MAX_SIZE
4397         of the array to the maximum size.
4398         <E_Array_Subtype>: Create an extra subtype using the index type of the
4399         base array type for self-referential bounds.  Use update_n_elem to
4400         compute the maximum size.  Set TYPE_ARRAY_MAX_SIZE of the array to the
4401         maximum size.
4402         (gnat_to_gnu_field): Clear DECL_NONADDRESSABLE_P on discriminants.
4403         * gcc-interface/misc.c (gnat_get_alias_set): Return the alias set of
4404         the base type for an extra subtype.
4405         (gnat_type_max_size): Remove obsolete code.
4406         * gcc-interface/trans.c (Attribute_to_gnu): Minor tweak.
4407         (can_be_lower_p): Deal with pathological types.
4408         * gcc-interface/utils.c (create_extra_subtype): New function.
4409         (create_field_decl): Minor tweak.
4410         (max_size) <tcc_reference>: Compute a better value by using the extra
4411         subtypes on the self-referential bounds.
4412         <tcc_binary>: Rewrite.  Deal with "negative value" in unsigned types.
4413         <tcc_expression>: Likewise.
4414         * gcc-interface/utils2.c (compare_arrays): Retrieve the original bounds
4415         of the arrays upfront.  Swap only if the second length is not constant.
4416         Use comparisons on the original bounds consistently for the null tests.
4417         (build_binary_op): Use TYPE_IS_EXTRA_SUBTYPE_P macro.
4418         (build_allocator): Minor tweak.
4419
4420 2019-01-27  Eric Botcazou  <ebotcazou@adacore.com>
4421
4422         * gcc-interface/decl.c (array_type_has_nonaliased_component): Return
4423         the same value for every dimension of a multidimensional array type.
4424
4425 2019-01-26  Eric Botcazou  <ebotcazou@adacore.com>
4426
4427         * gcc-interface/trans.c (Regular_Loop_to_gnu): Use the SLOC of the
4428         iteration scheme, if present, throughout the translation.
4429
4430 2019-01-26  Eric Botcazou  <ebotcazou@adacore.com>
4431
4432         * gcc-interface/trans.c (gnat_to_gnu) <N_Assignment_Statement>: Use
4433         DECL_SIZE_UNIT instead of TYPE_SIZE_UNIT for the size to be assigned
4434         by a call to memset if the LHS is a DECL.
4435
4436 2019-01-26  Eric Botcazou  <ebotcazou@adacore.com>
4437
4438         * gcc-interface/trans.c (struct loop_info_d): Remove artificial field.
4439         (Loop_Statement_to_gnu): Do not set it.
4440
4441 2019-01-26  Eric Botcazou  <ebotcazou@adacore.com>
4442
4443         * gcc-interface/trans.c (Iterate_Acc_Clause_Arg): Fix formatting.
4444         (Acc_gnat_to_gnu): Likewise.
4445         (Acc_Data_to_gnu): Likewise.
4446         (Acc_Var_to_gnu): Likewise.
4447         (Acc_Reduc_to_gnu): Likewise.
4448         (Acc_Size_List_to_gnu): Likewise.
4449         (Pragma_to_gnu) <Pragma_Acc_Loop>: Likewise.
4450         <Pragma_Acc_Data>): Likewise.
4451         (find_loop_for): Remove default value for parameters.
4452         * gcc-interface/trans.c (gnat_to_gnu) <N_Op_And>: Merge into...
4453         <N_Op_Eq>): ...this.
4454
4455 2019-01-26  Eric Botcazou  <ebotcazou@adacore.com>
4456
4457         * gcc-interface/decl.c (annotate_value) <INTEGER_CST>: Use test on
4458         the sign bit instead of on the sign of the value.
4459         <PLUS_EXPR>: Turn addition of negative constant into subtraction.
4460         <MULT_EXPR>: Add test for degenerate case.
4461         <BIT_AND_EXPR>: Simplify.
4462
4463 2019-01-18  Sebastian Huber  <sebastian.huber@embedded-brains.de>
4464
4465         * s-oscons-tmplt.c (AF_INET6): Do not undefine for RTEMS.
4466
4467 2019-01-09  Sandra Loosemore  <sandra@codesourcery.com>
4468
4469         PR other/16615
4470         * exp_ch11.adb: Change "can not" to "cannot".
4471         * sem_ch4.adb: Likewise.
4472
4473 2019-01-09  Sandra Loosemore  <sandra@codesourcery.com>
4474
4475         PR other/16615
4476         * exp_ch9.adb: Mechanically replace "can not" with "cannot".
4477         * libgnat/s-regpat.ads: Likewise.
4478         * par-ch4.adb: Likewise.
4479         * set_targ.adb: Likewise.
4480         * types.ads: Likewise.
4481
4482 2019-01-08  Justin Squirek  <squirek@adacore.com>
4483
4484         Revert:
4485         2018-07-31  Justin Squirek  <squirek@adacore.com>
4486
4487         * lib-writ.adb (Write_With_Lines): Modfiy the generation
4488         of dependencies within ali files so that source unit
4489         bodies are properly listed even if said bodies are
4490         missing.  Perform legacy behavior in GNATprove mode.
4491         * lib-writ.ads: Modify documentation to reflect current
4492         behavior.
4493
4494         and:
4495         2018-09-26  Justin Squirek  <squirek@adacore.com>
4496
4497         * lib-writ.adb, lib-writ.ads (Write_With_Lines): Add
4498         documentation and an extra conditional check for RCI
4499         units so that generated ali files will list the spec
4500         only instead of a body when a body is not found.
4501
4502 2019-01-04  Eric Botcazou  <ebotcazou@adacore.com>
4503
4504         * gnatvsn.ads: Bump copyright year.
4505
4506 2019-01-01  Jakub Jelinek  <jakub@redhat.com>
4507
4508         Update copyright years.
4509
4510         * gnat_ugn.texi: Bump @copying's copyright year.
4511         * gnat_rm.texi: Likewise.
4512 \f
4513 Copyright (C) 2019 Free Software Foundation, Inc.
4514
4515 Copying and distribution of this file, with or without modification,
4516 are permitted in any medium without royalty provided the copyright
4517 notice and this notice are preserved.