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