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