1 2019-08-20 Bob Duff <duff@adacore.com>
3 * libgnat/g-comlin.ads (Exit_From_Command_Line): Fix
4 documentation for GNAT.Command_Line.
6 2019-08-20 Pierre-Marie de Rodat <derodat@adacore.com>
9 * gcc-interface/lang.opt (-fdump-scos): Add missing dot at the
10 end of the documentation.
12 2019-08-20 Richard Sandiford <richard.sandiford@arm.com>
14 * gcc-interface/misc.c (default_pass_by_ref): Update call to
17 2019-08-19 Bob Duff <duff@adacore.com>
19 * doc/gnat_rm/implementation_advice.rst: Fix documentation for
20 stream oriented attributes.
21 * gnat_rm.texi: Regenerate.
23 2019-08-19 Gary Dismukes <dismukes@adacore.com>
25 * einfo.ads (E_Function, E_Procedure): Update comments to
26 reflect that Renamed_Entity is also used for nongeneric
29 2019-08-19 Eric Botcazou <ebotcazou@adacore.com>
31 * sem_prag.adb (Is_Before_First_Decl): Deal with rewritten
34 2019-08-19 Bob Duff <duff@adacore.com>
36 * sem_warn.adb (Warn_On_Unreferenced_Entity): Suppress warning
37 on formal parameters of dispatching operations.
39 2019-08-19 Ed Schonberg <schonberg@adacore.com>
41 * sem_res.adb (Resolve_Call): A call to an expression function
42 freezes when expander is active, unless the call appears within
43 the body of another expression function,
45 2019-08-19 Dmitriy Anisimkov <anisimko@adacore.com>
47 * libgnat/s-os_lib.ads, libgnat/s-os_lib.adb (To_Ada, To_C): New
50 2019-08-19 Bob Duff <duff@adacore.com>
52 * exp_attr.adb (Attribute_Valid): Correct the handling of
53 private types where the full type is modular. System.Address is
54 an example. Otherwise, we convert uncheckedly to a signed type,
55 so we get an incorrect range 0 .. -1, for which all values will
56 fail. The 'Valid attribute is illegal for such types, but we
57 generate such illegal attribute_references for 'Valid_Scalars,
58 and we generate 'Valid_Scalars when the -gnateV switch is used.
59 Rename Btyp --> PBtyp to avoid hiding the outer Btyp, which was
61 * libgnat/a-except.adb: Set the Exception_Raised component.
62 Otherwise, we have incorrect reads of invalid data.
64 2019-08-19 Pierre-Marie de Rodat <derodat@adacore.com>
66 * libgnat/a-cgaaso.ads, libgnat/a-cgarso.ads,
67 libgnat/a-cogeso.ads, libgnat/a-contai.ads,
68 libgnat/a-locale.ads: Import documentation from the RM.
70 2019-08-19 Jerome Guitton <guitton@adacore.com>
72 * Makefile.rtl (system.o): New target to add generation of
74 * gcc-interface/Makefile.in (install-gnatlib): Install
75 ada_target_properties.
77 2019-08-19 Eric Botcazou <ebotcazou@adacore.com>
79 * inline.adb (Add_Inlined_Body): Do not special-case instances
80 that are compilation units.
81 (Add_Pending_Instantiation): Likewise.
82 (Instantiate_Body): Skip instantiations that are compilation
83 units and have already been performed.
84 * sem_ch12.adb (Needs_Body_Instantiated): Do not special-case
85 instances that are compilation units.
86 (Load_Parent_Of_Generic): Be prepared for parent that is a
87 compilation unit but whose instantiation node has not been
90 2019-08-19 Eric Botcazou <ebotcazou@adacore.com>
92 * inline.adb (Initialize, Lock): Deal with
93 Called_Pending_Instantiations.
95 2019-08-19 Ed Schonberg <schonberg@adacore.com>
97 * sem_ch6.adb (Check_Synchronized_Overriding): Complete
98 predicate that applies legality check in 9.4 (11.9/2): if an
99 inherited subprogram is implemented by a protected procedure or
100 entry, its first paarameter must be out, in_out or
103 2019-08-19 Javier Miranda <miranda@adacore.com>
106 * exp_atag.ads, exp_atag.adb (Build_Inherit_Predefined_Prims):
107 Adding formal to specify how many predefined primitives are
108 inherited from the parent type.
109 * exp_disp.adb (Number_Of_Predefined_Prims): New subprogram.
110 (Make_Secondary_DT): Compute the number of predefined primitives
111 of all tagged types (including tagged types not defined at
112 library level). Previously we unconditionally relied on the
113 Max_Predef_Prims constant value when building the dispatch
114 tables of tagged types not defined at library level (thus
115 consuming more memory for their dispatch tables than required).
116 (Make_DT): Compute the number of predefined primitives that must
117 be inherited from their parent type when building the dispatch
118 tables of tagged types not defined at library level. Previously
119 we unconditionally relied on the Max_Predef_Prims constant value
120 when building the dispatch tables of tagged types not defined at
121 library level (thus copying more data than required from the
124 2019-08-19 Bob Duff <duff@adacore.com>
126 * sem_ch13.adb (Record_Hole_Check): Procedure to check for holes
127 that incudes processing type extensions. A type extension is
128 processed by first calling Record_Hole_Check recursively on the
129 parent type to compute the bit number after the last component
132 2019-08-19 Gary Dismukes <dismukes@adacore.com>
134 * checks.adb (Length_Mismatch_Info_Message): New function in
135 Selected_Length_Checks to return a message indicating the
136 element counts for the mismatched lengths for a failed
137 compile-time length check.
138 (Plural_Or_Singular_Ending): Support function in
139 Length_Mismatch_Info_Message to return either "" or "s", for
140 concatenating to the end of words.
141 (Selected_Length_Checks): Pass the result of
142 Length_Mismatch_Info_Message as an extra warning message to
143 Compile_Time_Constraint_Error to indicate the mismatched lengths
144 for a failed compile-time length check.
145 * sem_util.ads (Compile_Time_Constraint_Error): Add an optional
146 message formal (Extra_Msg), defaulted to the empty string.
147 * sem_util.adb (Compile_Time_Constraint_Error): Output an extra
148 message following the main warning message (when Extra_Msg is
149 not the empty string).
151 2019-08-19 Patrick Bernardi <bernardi@adacore.com>
153 * socket.c: Removed the redefinition of getaddrinfo, getnameinfo
154 and freeaddrinfo to internal VxWorks kernel calls because they
155 are, well, internal kernel calls and cannot be called from RTPs.
156 VxWorks provides the necessary components to call these routines
159 2019-08-19 Eric Botcazou <ebotcazou@adacore.com>
161 * exp_dist.adb (Is_Generic_Actual_Subtype): New predicate.
162 (Build_From_Any_Call, Build_To_Any_Call, Build_TypeCode_Call):
163 Use it instead of Is_Generic_Actual_Type flag to detect subtypes
164 representing generic actual types.
166 2019-08-19 Ed Schonberg <schonberg@adacore.com>
168 * sem_warn.adb (Check_References, Generic_Body_Formal): When a
169 formal parameter of a generic subprogram is not referenced in
170 the body, place the corresponding warning on the corresponding
171 entity in the specification of the generic body, as is done for
172 non-generic subprograms.
174 2019-08-19 Bob Duff <duff@adacore.com>
176 * errout.ads (Size_Too_Small_Message): New constant.
177 * errout.adb, freeze.adb, sem_ch13.adb: Use it.
179 2019-08-19 Eric Botcazou <ebotcazou@adacore.com>
181 * exp_dist.adb (Build_Package_Stubs): Do not specifically visit
182 the declarations of an N_Subprogram_Instantiation node.
184 2019-08-19 Bob Duff <duff@adacore.com>
186 * doc/gnat_ugn/gnat_utility_programs.rst: Document missing
189 2019-08-19 Piotr Trojanek <trojanek@adacore.com>
191 * sem_ch12.adb (Get_Unit_Instantiation_Node): Simplify Nkind_In
193 * sem.adb (Depends_On_Main): Whitespace cleanup; only assign a
194 local variable if needed.
196 2019-08-19 Claire Dross <dross@adacore.com>
198 * sem_spark.ads, sem_spark.adb (Is_Pledge_Function): New
199 parameter of the generic. Function used to decide whether a
200 function is a pledge function.
201 (Check_Not_Borrowed): Disable check inside the second parameter
202 of a pledge function for the path borrowed by the first
203 parameter. Also disable checks for entities inside a Global
206 2019-08-19 Joffrey Huguet <huguet@adacore.com>
208 * libgnat/a-cfdlli.ads, libgnat/a-cfhama.ads,
209 libgnat/a-cfinve.ads, libgnat/a-cforma.ads,
210 libgnat/a-cofove.ads, libgnat/a-cofuma.ads,
211 libgnat/a-cofuve.ads: Add formal function parameter "=" (L, R :
212 Element_Type) to the generic packages.
214 2019-08-19 Eric Botcazou <ebotcazou@adacore.com>
216 * opt.ads: Clean up left-overs of earlier implementation in
219 2019-08-19 Ed Schonberg <schonberg@adacore.com>
221 * sem_ch3.adb (Derived_Enumeration_Type): Do no freeze anonymous
222 base type if the bounds in the derived type declaration are
223 literals of the type.
225 2019-08-19 Yannick Moy <moy@adacore.com>
227 * sem_res.adb (Resolve_Call): Check non-aliasing rules before
230 2019-08-19 Eric Botcazou <ebotcazou@adacore.com>
232 * inline.adb (Add_Inlined_Body): Do not add pending
234 * sem_ch12.adb (Needs_Body_Instantiated): New predicate.
235 (Analyze_Package_Instantiation): Use it to decide whether to add
236 a pending instantiation for the body of the package.
238 2019-08-19 Olivier Hainque <hainque@adacore.com>
240 * gcc-interface/trans.c (Acc_Loop_to_gnu): Return the openacc
241 BIND_EXPR node we have constructed on purpose. Remove unused
244 2019-08-19 Pierre-Marie de Rodat <derodat@adacore.com>
246 * gcc-interface/lang.opt (fdump-scos): Define.
247 * gcc-interface/misc.c (gnat_handle_option): Handle
250 2019-08-14 Joffrey Huguet <huguet@adacore.com>
252 * libgnat/a-cofuba.ads: Add a Length attribute to type
253 Container. Add a type Array_Base which replaces the previous
254 Elements attribute of Container.
255 (Content_Init): New subprogram. It is used to initialize the
256 Base attribute of Container.
257 * libgnat/a-cofuba.adb (Resize): New subprogram. It is used to
258 resize the underlying array of a container if necessary.
259 (=, <=, Find, Get, Intersection, Length, Num_Overlaps, Set,
260 Union): Update to match changes in type declarations.
261 (Add): Modify body to damp the time and space cost in a specific
263 (Content_Init): New subprogram. It is used to initialize the
264 Base attribute of Container.
265 (Remove): Modify body to damp the time and space cost in a
268 2019-08-14 Bob Duff <duff@adacore.com>
270 * sem_ch13.adb (Get_Alignment_Value): Return 1 for Alignment 0,
271 and do not give an error.
272 * doc/gnat_rm/representation_clauses_and_pragmas.rst: Update the
273 corresponding documentation.
274 * gnat_rm.texi: Regenerate.
276 2019-08-14 Eric Botcazou <ebotcazou@adacore.com>
278 * inline.adb (Add_Pending_Instantiation): Fix off-by-one error
279 in the comparison against the maximum number of instantiations.
281 2019-08-14 Eric Botcazou <ebotcazou@adacore.com>
283 * inline.adb (Add_Pending_Instantiation): Use greater-or-equal
284 in the comparison against the maximum number of instantiations.
286 2019-08-14 Ed Schonberg <schonberg@adacore.com>
288 * sem_aux.adb (Next_Rep_Item): If a node in the rep chain
289 involves a Ghost aspect it may have been replaced by a null
290 statement; use the original node to find next Rep_Item.
291 * repinfo.adb (List_Entities): Do not list an Ignored
292 Ghost_Entity, for which information may have been deleted.
294 2019-08-14 Bob Duff <duff@adacore.com>
296 * sem_prag.ads, sem_prag.adb
297 (Process_Compile_Time_Warning_Or_Error): In parameterless
298 version, improve detection of whether we are in a generic unit
299 to cover the case of an instance within a generic unit.
300 (Process_Compile_Time_Warning_Or_Error): Rename the
301 two-parameter version to be
302 Validate_Compile_Time_Warning_Or_Error, and do not export it.
303 Issue a warning if the condition is not known at compile time.
304 The key point is that the warning must be given only for pragmas
305 deferred to the back end, because the back end discovers
306 additional values that are known at compile time. Previous
307 changes in this ticket have enabled this by deferring to the
308 back end without checking for special cases such as 'Size.
309 (Validate_Compile_Time_Warning_Or_Error): Rename to be
310 Defer_Compile_Time_Warning_Error_To_BE.
311 * warnsw.ads, warnsw.adb (Warn_On_Unknown_Compile_Time_Warning):
312 Add new switches -gnatw_c and -gnatw_C to control the above
314 * doc/gnat_ugn/building_executable_programs_with_gnat.rst:
315 Document new switches.
316 * gnat_ugn.texi: Regenerate.
318 2019-08-14 Eric Botcazou <ebotcazou@adacore.com>
320 * sem_ch12.adb (Might_Inline_Subp): Rework comment and restrict
321 the shortcut based on Is_Inlined to the back-end inlining case.
323 2019-08-14 Bob Duff <duff@adacore.com>
325 * inline.adb (Check_And_Split_Unconstrained_Function): Ignore
326 protected functions to get rid of spurious error. The
327 transformation done by this procedure triggers legality errors
328 in the generated code in this case.
330 2019-08-14 Bob Duff <duff@adacore.com>
332 * sem_prag.adb (Process_Compile_Time_Warning_Or_Error): Defer
333 processing to the back end in all cases where the pragma's
334 condition is not known at compile time during the front end
335 (except in generics), as opposed to detecting 'Size attributes
336 and the like. This ensures that we take advantage of whatever
337 can be compile-time known after running the back end, as opposed
338 to having the front end guess what the back end can do. Remove
339 a little duplicated code at the call site.
340 * gnat1drv.adb (Post_Compilation_Validation_Checks): Unlock the
341 Elists while in Validate_Compile_Time_Warning_Errors, because it
342 does analysis and name resolution, which sometimes involves
345 2019-08-14 Eric Botcazou <ebotcazou@adacore.com>
347 * einfo.ads (Is_Called): Document new usage on E_Package
349 * einfo.adb (Is_Called): Accept E_Package entities.
350 (Set_Is_Called): Likewise.
351 * exp_ch6.adb (Expand_Call_Helper): Move code dealing with
352 instances for back-end inlining to Add_Inlined_Body.
353 * inline.ads: Remove with clauses for Alloc and Table.
354 (Pending_Instantiations): Move to...
355 * inline.adb: Add with clauses for Alloc, Uintp, Table and
357 (Backend_Instances): New variable.
358 (Pending_Instantiations): ...here.
359 (Called_Pending_Instantiations): New table.
360 (Node_Table_Size): New constant.
361 (Node_Header_Num): New subtype.
362 (Node_Hash): New function.
363 (To_Pending_Instantiations): New hash table.
364 (Add_Inlined_Body): Bail out early for subprograms in the main
365 unit or subunit. Likewise if the Is_Called flag is set. If the
366 subprogram is an instance, invoke Add_Inlined_Instance. Call
367 Set_Is_Called earlier. If the subrogram is within an instance,
368 invoke Add_Inlined_Instance. Also deal with the case where the
369 call itself is within an instance.
370 (Add_Inlined_Instance): New procedure.
371 (Add_Inlined_Subprogram): Remove conditions always fulfilled.
372 (Add_Pending_Instantiation): Move the defence against ludicruous
373 number of instantiations to here. When back-end inlining is
374 enabled, associate an instantiation with its index in table and
375 mark a few selected kinds of instantiations as always needed.
376 (Initialize): Set Backend_Instances to No_Elist.
377 (Instantiate_Body): New procedure doing the work extracted
379 (Instantiate_Bodies): ...here. When back-end inlining is
380 enabled, loop over Called_Pending_Instantiations instead of
381 Pending_Instantiations.
382 (Is_Nested): Minor tweak.
383 (List_Inlining_Info): Also list the contents of
385 * sem_ch12.adb (Might_Inline_Subp): Return early if Is_Inlined
386 is set and otherwise set it before returning true.
387 (Analyze_Package_Instantiation): Remove the defence against
388 ludicruous number of instantiations. Invoke
389 Remove_Dead_Instance instead of doing the removal manually if
390 there is a guaranteed ABE.
392 2019-08-14 Gary Dismukes <dismukes@adacore.com>
394 * exp_ch3.adb (Predef_Spec_Or_Body): For an equality operation
395 of an interface type, create an expression function (that
396 returns False) rather than declaring an abstract function.
397 * freeze.adb (Check_Inherited_Conditions): Set Needs_Wrapper to
398 False unconditionally at the start of the loop creating wrappers
399 for inherited operations.
401 2019-08-14 Bob Duff <duff@adacore.com>
403 * table.adb: Assert that the table is not locked when increasing
404 Last, even if it doesn't cause reallocation. In other words,
405 assert that on operations that MIGHT cause reallocation.
406 * table.ads: Fix comment accordingly.
408 2019-08-14 Arnaud Charlet <charlet@adacore.com>
410 * doc/gnat_ugn/gnat_and_program_execution.rst: Remove
411 documentation of gnatelim.
413 2019-08-14 Bob Duff <duff@adacore.com>
415 * sem_prag.adb (Validate_Compile_Time_Warning_Error): Attach the
416 warning to the Sloc of the first pragma argument, rather than to
417 the pragma itself. This is to make pragmas processed after the
418 back end use the same Sloc as pragmas processed earlier, in the
419 front end. There's no reason for this discrepancy, and it
420 hinders further work on this ticket.
422 2019-08-14 Bob Duff <duff@adacore.com>
424 * sem.ads (Inside_A_Generic): Remove the ??? comment.
426 2019-08-14 Eric Botcazou <ebotcazou@adacore.com>
428 * inline.ads (Pending_Descriptor): Delete.
429 * inline.adb (Initialize): Do not initialize it.
430 * sem_ch12.adb (Delay_Descriptors): Delete.
431 (Analyze_Package_Instantiation): Call
432 Set_Delay_Subprogram_Descriptors instead of Delay_Descriptors
435 2019-08-14 Bob Duff <duff@adacore.com>
437 * exp_aggr.adb (Init_Hidden_Discriminants): Avoid processing the
438 wrong discriminant, which could be of the wrong type.
440 2019-08-14 Eric Botcazou <ebotcazou@adacore.com>
442 * sem_ch12.adb (Analyze_Instance_And_Renamings): Do not reset
443 the Is_Generic_Instance flag previously set on the package
444 generated for the instantiation of a generic subprogram.
446 2019-08-14 Ed Schonberg <schonberg@adacore.com>
448 * exp_ch4.adb (Expand_N_Quantified_Expression): Freeze
449 explicitly the type of the loop parameter.
451 2019-08-14 Javier Miranda <miranda@adacore.com>
453 * sem_util.adb (New_Copy_Tree.Copy_Node_With_Replacement):
454 Update the Chars attribute of identifiers.
456 2019-08-14 Yannick Moy <moy@adacore.com>
458 * sem_spark.adb, sem_spark.ads (Is_Legal): New function exposed
459 for use in GNATprove, to test legality rules not related to
461 (Check_Declaration_Legality): Extract the part of
462 Check_Declaration that checks rules not related to permissions.
463 (Check_Declaration): Call the new Check_Declaration_Legality.
464 (Check_Type_Legality): Rename of Check_Type. Introduce
465 parameters to force or not checking, and update a flag detecting
467 (Check_Node): Ignore attribute references in statement position.
469 2019-08-14 Yannick Moy <moy@adacore.com>
471 * sem_spark.adb (Check_Old_Loop_Entry): New procedure to check
472 correct use of Old and Loop_Entry.
473 (Check_Node): Check subprogram contracts.
474 (Check_Pragma): Check Loop_Variant.
475 (Check_Safe_Pointers): Apply checking to library-level
476 subprogram declarations as well, in order to check their
479 2019-08-14 Yannick Moy <moy@adacore.com>
481 * sem_spark.adb (Is_Subpath_Expression): Take into account
482 conversion and qualification.
484 2019-08-14 Eric Botcazou <ebotcazou@adacore.com>
486 * sem_ch7.adb (Install_Private_Declarations)
487 <Swap_Private_Dependents>: Do not rely solely on the
488 Is_Child_Unit flag on the unit to recurse.
489 (Uninstall_Declarations) <Swap_Private_Dependents>: New
490 function. Use it to recurse on the private dependent entities
493 2019-08-14 Javier Miranda <miranda@adacore.com>
495 * exp_aggr.adb (Is_CCG_Supported_Aggregate): Return False for
496 arrays with bounds not known at compile time.
498 2019-08-14 Ed Schonberg <schonberg@adacore.com>
500 * sem_util.adb (New_Copy_Tree, Visit_Entity): A quantified
501 expression includes the implicit declaration of the loop
502 parameter. When a quantified expression is copied during
503 expansion, for example when building the precondition code from
504 the generated pragma, a new loop parameter must be created for
505 the new tree, to prevent duplicate declarations for the same
508 2019-08-14 Yannick Moy <moy@adacore.com>
510 * sem_disp.adb (Check_Dispatching_Operation): Update assertion
511 for the separate declarations created in GNATprove mode.
512 * sem_disp.ads (Is_Overriding_Subprogram): Update comment.
513 * sem_elab.adb (SPARK_Processor): Fix test for checking of
514 overriding primitives.
516 2019-08-14 Eric Botcazou <ebotcazou@adacore.com>
518 * inline.adb (Add_Inlined_Body): Tweak comments.
519 (List_Inlining_Info): Also list information about non-main
522 2019-08-14 Gary Dismukes <dismukes@adacore.com>
524 * sem_ch4.adb (Analyze_Selected_Component): In the case where
525 the prefix is of a concurrent type, and the selected entity
526 matching the selector is the first private declaration of the
527 type (such as the first local variable in a task's body), set
530 2019-08-14 Piotr Trojanek <trojanek@adacore.com>
532 * einfo.adb (Is_Generic_Actual_Subprogram): Replace repeated
533 calls to Ekind with Ekind_In.
535 2019-08-13 Richard Sandiford <richard.sandiford@arm.com>
538 * gcc-interface/trans.c (gigi): Call set_decl_buillt_in_function.
539 (Call_to_gnu): Use DECL_FE_FUNCTION_CODE instead of DECL_FUNCTION_CODE.
541 2019-08-13 Eric Botcazou <ebotcazou@adacore.com>
543 * ali.ads (Linker_Option_Record): Remove Original_Pos component.
544 * ali.adb (Scan_ALI): Do not set it.
546 2019-08-13 Eric Botcazou <ebotcazou@adacore.com>
548 * sem_ch3.adb (Build_Derived_Concurrent_Type): Add a couple of
549 local variables and use them. When the derived type fully
550 constrains the parent type, rewrite it as a subtype of an
551 implicit (unconstrained) derived type instead of the other way
553 (Copy_And_Build): Deal with concurrent types and use predicates.
554 (Build_Derived_Private_Type): Build the full derivation if
555 needed for concurrent types too.
556 (Build_Derived_Record_Type): Add marker comment.
557 (Complete_Private_Subtype): Use predicates.
559 2019-08-13 Ed Schonberg <schonberg@adacore.com>
561 * sem_ch3.adb (Check_Generic_Ancestor): New subprogram,
562 aubsidiary to Build_Derived_Record_Type. to enforce the rule
563 that a type extension declared in a generic body cznnot have an
564 ancestor that is a generic formal (RM 3.9.1 (4/2)). The rule
565 applies to all ancestors of the type, including interface
568 2019-08-13 Eric Botcazou <ebotcazou@adacore.com>
570 * sem_ch3.adb (Build_Underlying_Full_View): Delete.
571 (Complete_Private_Subtype): Do not set the full view on the
572 private subtype here. If the full base is itself derived from
573 private, do not re-derive the parent type but instead constrain
574 an existing underlying full view.
575 (Prepare_Private_Subtype_Completion): Do not get to the
576 underlying full view, if any. Set the full view on the private
578 (Process_Full_View): Likewise.
579 * sem_ch12.adb (Check_Generic_Actuals): Also set
580 Is_Generic_Actual_Type on the full view if the type of the
582 (Restore_Private_Views): Also reset Is_Generic_Actual_Type on
583 the full view if the type of the actual is private.
584 * sem_eval.adb (Subtypes_Statically_Match): Remove bypass for
585 generic actual types.
587 2019-08-13 Javier Miranda <miranda@adacore.com>
589 * sem_res.adb (Resolve_Selected_Component): When the type of the
590 component is an access to a class-wide type and the type of the
591 context is an access to a tagged type the relevant type is that
592 of the component (since in such case we may need to generate
593 implicit type conversions or dispatching calls).
595 2019-08-13 Ed Schonberg <schonberg@adacore.com>
597 * exp_aggr.adb (Aggr_Assignment_OK_For_Backend): Preanalyze
598 expression, rather do a full analysis, to prevent unwanted
599 removal of side effects which mask the intent of the expression.
601 2019-08-13 Eric Botcazou <ebotcazou@adacore.com>
603 * impunit.adb (Non_Imp_File_Names_95): Add
604 GNAT.Branch_Prediction.
606 2019-08-13 Eric Botcazou <ebotcazou@adacore.com>
608 * exp_ch6.adb: Remove with and use clauses for Sem_Ch12.
609 (Expand_Call_Helper): Swap the back-end inlining case and the
610 special front-end expansion case. In back-end inlining mode, do
611 not invoke Add_Inlined_Body unless the call may be inlined.
612 * inline.ads (Add_Pending_Instantiation): New function moved
614 * inline.adb (Add_Inlined_Body): Simplify comment. Turn test on
615 the enclosing unit into assertion.
616 (Add_Pending_Instantiation): New function moved from...
617 * sem_ch12.ads (Add_Pending_Instantiation): ...here.
618 * sem_ch12.adb (Add_Pending_Instantiation): ...here.
620 2019-08-13 Eric Botcazou <ebotcazou@adacore.com>
622 * sem.adb (Do_Analyze): Recompute Style_Check_Max_Line_Length
623 after restoring Style_Max_Line_Length.
625 2019-08-13 Arnaud Charlet <charlet@adacore.com>
627 * sem_ch13.adb (Check_Iterator_Functions): Protect against
630 2019-08-13 Ed Schonberg <schonberg@adacore.com>
632 * sem_ch8.adb (Analyze_Subprogram_Renaming): Do no suppress mode
633 conformance checks on child unit instance that is a compilation
636 2019-08-13 Gary Dismukes <dismukes@adacore.com>
638 * exp_dbug.adb (Fully_Qualify_Name): Add full name qualification
639 for the E_Exception case.
641 2019-08-13 Gary Dismukes <dismukes@adacore.com>
643 * exp_aggr.adb (Aggr_Size_OK): Compute the aggregate size using
644 universal arithmetic, to avoid situations where the size
645 computation overflows.
647 2019-08-13 Justin Squirek <squirek@adacore.com>
649 * repinfo.adb (List_Scalar_Storage_Order): Modify conditionals
650 for displaying ordering to always be triggered when -gnatR4 is
653 2019-08-13 Justin Squirek <squirek@adacore.com>
655 * aspects.adb, aspects.ads: Register new aspect.
656 * par-prag.adb (Prag): Register new pragma
657 * sem_ch13.adb (Analyze_Aspect_Specifications): Add processing
658 for new aspect similar to Aspect_Max_Entry_Queue_Length.
659 * sem_prag.adb, sem_prag.ads (Analyze_Pragma): Register new
660 pragma and set it to use the same processing as
661 Pragma_Max_Queue_Length.
662 * snames.ads-tmpl: Move definition of
663 Name_Max_Entry_Queue_Length so that it can be processed as a
664 pragma in addition to a restriction and add an entry for the
667 2019-08-13 Yannick Moy <moy@adacore.com>
669 * sem_ch4.adb (Analyze_Allocator): Do not insert subtype
670 declaration for allocator inside a spec expression.
672 2019-08-13 Yannick Moy <moy@adacore.com>
674 * sem_res.adb (Resolve_Call): Do not inline calls inside record
677 2019-08-13 Eric Botcazou <ebotcazou@adacore.com>
679 * sem_ch4.adb (Analyze_One_Call): Remove bypass for type
680 mismatch in nested instantiations.
681 * sem_ch8.adb (Find_Nearer_Entity): New function.
682 (Find_Renamed_Entity): Use it to disambiguate the candidates for
683 the renaming generated for an instantiation when it is
686 2019-08-13 Eric Botcazou <ebotcazou@adacore.com>
688 * gnat1drv.adb (Adjust_Global_Switches): Do not set
689 Back_End_Inlining in ASIS mode either.
691 2019-08-13 Olivier Hainque <hainque@adacore.com>
693 * libgnat/s-win32.ads: Define size_t and fix the MapViewOfFile
694 binding to use it instead of DWORD for the dwNumberOfBytesToMap
696 * libgnat/g-sercom__mingw.adb (Read): State which definition of
697 size_t to fetch in call to Last_Index.
699 2019-08-13 Arnaud Charlet <charlet@adacore.com>
701 * gcc-interface/Make-lang.in: Remove unused TRACE variable. Pass
702 LN_S to relevant gnatlib targets.
703 * gcc-interface/Makefile.in: Systematically pass LN_S to
704 relevant gnatlib targets.
706 2019-08-13 Yannick Moy <moy@adacore.com>
708 * sem_dim.adb (Analyze_Dimension,
709 Analyze_Dimension_Array_Aggregate, Analyze_Dimension_Call,
710 Analyze_Dimension_Extension_Or_Record_Aggregate): Return
711 immediately when inside an inlined body.
712 * sem_res.adb (Resolve_Call): Remove special checking now done
713 inside Analyze_Dimension_Call.
715 2019-08-13 Justin Squirek <squirek@adacore.com>
717 * exp_ch4.adb (Expand_N_Allocator): Add condition to detect
718 library-level object declarations
720 2019-08-13 Eric Botcazou <ebotcazou@adacore.com>
722 * doc/gnat_ugn/building_executable_programs_with_gnat.rst
723 (-gnateT): Document Double_Float_Alignment parameter and fix
724 description of Double_Scalar_Alignment parameter.
725 * gnat_ugn.texi: Regenerate.
727 2019-08-13 Eric Botcazou <ebotcazou@adacore.com>
729 * exp_ch6.adb (Expand_Call_Helper): If back-end inlining is
730 enabled, also instantiate the body of a generic unit containing
731 a subprogram subject to aspect/pragma Inline_Always at
732 optimization level zero.
733 * sem_ch12.adb (Might_Inline_Subp): Minor tweak.
734 (Analyze_Package_Instantiation): Do not instantiate the package
735 body because of inlining considerations if the instantiation is
736 done in a generic unit. Move around similar condition involving
737 the main unit. Add test on Back_End_Inlining to processing for
740 2019-08-13 Javier Miranda <miranda@adacore.com>
742 * exp_disp.adb (Make_Secondary_DT): Handle record type
743 derivations that have interface components located at fixed
744 positions and interface components located at variable offset.
745 The offset of components located at fixed positions is computed
746 using the dummy object (similar to the case where all the
747 interface components are located at fixed positions).
748 (Make_DT): Build the dummy object for all tagged types that
749 implement interface types (that is, build it also for types with
750 variable size components), and use the dummy object to compute
751 the offset of all tag components located at fixed positions when
752 initializing the Interface_Table object.
754 2019-08-13 Justin Squirek <squirek@adacore.com>
756 * gnatcmd.adb (GNATCmd): Add constant for new compiler switch
757 --help-ada, and include usage subprogram. Add line to usage help
758 explaining the new flag.
759 (GNATCmd_Usage): Rename from locally declared Usage so as not to
760 confuse with the newly imported version. Add new argument case
761 for --help-ada and add bug report email to implicit display of
762 help without the --help flag so as to unify output between the
765 2019-08-13 Dmitriy Anisimkov <anisimko@adacore.com>
767 * libgnat/g-comlin.adb (Getopt): Quote unrecognized switch in
768 Invalid_Switch exception message.
770 2019-08-13 Yannick Moy <moy@adacore.com>
772 * sem_util.adb (Traverse_More_Func): Take into account
773 Loop_Actions inside N_Iterated_Component_Association nodes.
774 * sinfo.ads: Document correctly Loop_Actions as a field of nodes
775 of kind N_Iterated_Component_Association.
777 2019-08-13 Claire Dross <dross@adacore.com>
779 * libgnat/a-cfinve.adb, libgnat/a-cofove.adb (Find_Index,
780 Reverse_Find_Index): Use bigger type to avoid range check
781 failure at the last loop iteration.
783 2019-08-12 Dmitriy Anisimkov <anisimko@adacore.com>
785 * libgnat/g-socket.adb (Is_IPv6_Address): Check that no less
786 then 2 colons in IPv6 numeric address.
788 2019-08-12 Dmitriy Anisimkov <anisimko@adacore.com>
790 * libgnat/g-comlin.ads, libgnat/g-comlin.adb (Getopt): Add
791 parameter Quiet. Need to do not output error messages to
792 console. Invalid_Switch exception generation surrounded by an
795 2019-08-12 Ed Schonberg <schonberg@adacore.com>
797 * exp_ch6.adb (Expand_Actuals. Add_Call_By_Copy_Code): Add code
798 to generate proper checks when an actual for an in-out or out
799 parameter has a non-null access type. No constraints are
800 applied to an inbound access parameter, but on exit a not-null
801 check must be performed if the type of the actual requires it.
803 2019-08-12 Ed Schonberg <schonberg@adacore.com>
805 * sem_util.adb (Is_Expaned_Priority_Attribute): Check whether
806 call comes from a rewritten attribute before comparing name with
807 Get_Ceiling run-time subprogram.
809 2019-08-12 Eric Botcazou <ebotcazou@adacore.com>
811 * exp_util.ads (Component_May_Be_Bit_Aligned): Small comment
813 (Possible_Bit_Aligned_Component): Likewise.
814 (Type_May_Have_Bit_Aligned_Components): Likewise.
815 * exp_util.adb (Component_May_Be_Bit_Aligned): Likewise.
816 (Possible_Bit_Aligned_Component): Likewise.
817 (Type_May_Have_Bit_Aligned_Components): Likewise.
819 2019-08-12 Eric Botcazou <ebotcazou@adacore.com>
821 * exp_ch4.adb (Expand_N_Op_Eq): Expand the array equality if
822 either operand is a possibly unaligned slice.
823 * exp_ch6.adb (Expand_Simple_Function_Return): Do not generate a
824 copy for a possibly unaligned object if it is represented as a
826 * exp_util.adb (Is_Possibly_Unaligned_Slice): Do not always
827 return false if the target doesn't have strict alignment.
829 2019-08-12 Bob Duff <duff@adacore.com>
831 * sem_ch12.adb (Instantiate_Package_Body): Remove suppression of
832 checks in instances of internal units.
833 * sem_ch6.adb (Analyze_Function_Return): Do not generate a
834 constraint check on an extended_return_statement if the subtype
835 of the return object in the statement is identical to the return
836 subtype of the function.
838 2019-08-12 Bob Duff <duff@adacore.com>
840 * libgnat/a-cbmutr.adb (Is_Reachable): Declare Idx to be of the
841 base subtype. Clearly it makes no sense to loop "while Idx >=
842 0", if Idx is of a nonnegative subtype.
844 2019-08-12 Bob Duff <duff@adacore.com>
846 * libgnat/a-tifiio.adb (Put_Scaled): Prevent AA from being
847 negative, since Field is range 0 .. something.
849 2019-08-12 Bob Duff <duff@adacore.com>
851 * doc/gnat_ugn/gnat_utility_programs.rst (gnatmetric, gnatpp,
852 gnatstub): Remove documentation for Ada language version
853 switches, and note that they are no longer needed.
855 2019-08-12 Gary Dismukes <dismukes@adacore.com>
857 * sem_ch5.adb (Prepare_Param_Spec_Loop): Set the parents of the
858 copied low and high bounds in the case where the loop range is
859 given by a discrete_subtype_indication, to prevent hanging (or
860 Assert_Failure) in Insert_Actions.
862 2019-08-12 Ed Schonberg <schonberg@adacore.com>
864 * sem_ch6.adb (heck_Untagged_Equality): Verify that user-defined
865 equality has the same profile as the predefined equality before
866 applying legality rule in RM 4.5.2 (9.8).
868 2019-08-12 Bob Duff <duff@adacore.com>
870 * libgnat/a-except.ads: Update obsolete comment, still making
871 clear that this is a variant. Add explicit default for Id
872 component of Exception_Occurrence, because that value is used.
873 Define Null_Occurrence less redundantly.
874 * libgnat/a-einuoc.adb: Minor simplification of code.
876 2019-08-12 Justin Squirek <squirek@adacore.com>
878 * libgnat/a-dhfina.adb, libgnat/a-dhfina.ads (Is_Simple_Name,
879 Is_Root_Directory, Is_Parent_Directory,
880 Is_Current_Directory_Name, Is_Relative_Name, Initial_Directory,
881 Relative_Name, Compose): Add implementation and documentation.
882 * libgnat/a-direct.adb (Containing_Directory): Modify routine to
883 use routines from Ada.Directories.Hierarchical_File_Names and
884 remove incorrect special case for parent directories.
885 (Fetch_Next_Entry): Add check for current directory and parent
886 directory and ignore them under certain circumstances.
887 (Simple_Nmae): Add check for null result from
888 Simple_Name_Internal and raise Name_Error.
889 (Simple_Name_Internal): Add explicit check for root directories,
890 sanitize trailing directory separators, and modify behavior so
891 that current and parent directories are considered valid
893 * Makefile.rtl: Add entry to GNATRTL_NONTASKING_OBJS.
895 2019-08-12 Eric Botcazou <ebotcazou@adacore.com>
897 * freeze.adb (Freeze_Entity): Give the same error for an
898 Object_Size clause on a variable-sized type as for a Size
901 2019-08-12 Gary Dismukes <dismukes@adacore.com>
903 * sem_prag.adb (Analyze_Pragma, Pragma_Suppress_Initialization):
904 For private types, set the Suppress_Initialization flag on the
905 Full_View of the entity rather than the entity's base type.
907 2019-08-12 Yannick Moy <moy@adacore.com>
909 * aspects.adb, aspects.ads (Aspect_No_Caching): New aspect.
910 * contracts.adb, contracts.ads (Add_Contract_Item): Add handling
912 (Analyze_Object_Contract): Add handling of No_Caching.
913 * einfo.adb, einfo.ads
914 (Get_Pragma): Add handling of No_Caching.
915 * doc/gnat_rm/implementation_defined_aspects.rst,
916 doc/gnat_rm/implementation_defined_pragmas.rst: Document new
918 * gnat_rm.texi: Regenerate.
919 * par-prag.adb (Prag): New pragma Pragma_No_Caching.
920 * sem_ch13.adb (Analyze_Aspect_Specifications,
921 Check_Aspect_At_Freeze_Point): Add handling of No_Caching.
922 * sem_prag.adb (Analyze_Pragma): Deal with pragma No_Caching.
923 * sem_prag.ads (Analyze_External_Property_In_Decl_Part): Now
924 applies to No_Caching.
925 * sem_util.adb, sem_util.ads (Is_Effectively_Volatile): Add
926 handling of No_Caching.
927 (No_Caching_Enabled): New query function.
928 * snames.ads-tmpl: New names for pragma.
930 2019-08-12 Yannick Moy <moy@adacore.com>
932 * sem_util.adb, sem_util.ads (Traverse_More_Func,
933 Traverse_More_Proc): Add formal parameter for Itypes traversal.
935 2019-08-12 Yannick Moy <moy@adacore.com>
937 * exp_attr.adb, exp_attr.ads (Expand_Size_Attribute): New
938 procedure to share part of the attribute expansion with
940 (Expand_N_Attribute_Reference): Extract part of the
941 Size/Object_Size expansion in the new procedure
942 Expand_Size_Attribute.
943 * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Expand
944 Size/Object_Size attributes using the new procedure
945 Expand_Size_Attribute.
947 2019-08-12 Yannick Moy <moy@adacore.com>
949 * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Only
950 expand Enum_Rep attribute when its parameter is a literal.
952 2019-08-12 Justin Squirek <squirek@adacore.com>
954 * sem_eval.adb (Check_Non_Static_Context): Add a condition to
955 determine if a range violation constitues a warning or an error.
956 (Out_Of_Range): Add a condition to determine if a range
957 violation constitues a warning or an error.
959 2019-08-12 Eric Botcazou <ebotcazou@adacore.com>
961 * exp_ch4.adb (Real_Range_Check): Do not rewrite the conversion
962 node but its expression instead, after having fetched its
963 current value. Clear the Do_Range_Check flag on entry. Return
964 early for a rewritten float-to-float conversion. Remove
965 redundant local variable. Suppress all checks when inserting
966 the temporary and do not reanalyze the node.
968 2019-08-12 Eric Botcazou <ebotcazou@adacore.com>
970 * sprint.ads: Minor comment tweak.
972 2019-08-12 Eric Botcazou <ebotcazou@adacore.com>
974 * checks.adb (Insert_Valid_Check): Do not retrieve the
975 Do_Range_Check flag from the Original_Node but from the
976 Validated_Object. Remove useless bypass for floating-point
979 2019-08-12 Yannick Moy <moy@adacore.com>
981 * sem_util.adb, sem_util.ads (Traverse_More_Func,
982 Traverse_More_Proc): New traversal subprograms.
984 2019-08-12 Jerome Lambourg <lambourg@adacore.com>
986 * libgnarl/s-taprop__vxworks.adb (Abort_Handler): Only call
987 s-tpopsp.Self when actually needed.
989 2019-08-12 Eric Botcazou <ebotcazou@adacore.com>
991 * exp_ch4.adb (Discrete_Range_Check): Return if checks are
994 2019-08-12 Eric Botcazou <ebotcazou@adacore.com>
996 * sem_res.adb: Add with & use clause for Sem_Mech and
998 (Resolve_Actuals): Do not apply a scalar range check for the
999 source of a conversion whose result is passed by reference to a
1002 2019-08-12 Eric Botcazou <ebotcazou@adacore.com>
1004 * checks.adb (Insert_Valid_Check): Reset the Do_Range_Check flag
1005 on the validated object.
1006 * exp_ch6.adb (Add_Call_By_Copy_Code): Reset the Do_Range_Check
1007 flag on the actual here, as well as on the Expression if the
1008 actual is a N_Type_Conversion node.
1009 (Add_Validation_Call_By_Copy_Code): Generate the incoming range
1010 check if needed and reset the Do_Range_Check flag on the
1011 Expression if the actual is a N_Type_Conversion node.
1012 (Expand_Actuals): Do not reset the Do_Range_Check flag here.
1013 Generate the incoming range check for In parameters here instead
1015 (Expand_Call_Helper): ...here. Remove redudant condition.
1016 * sem_res.adb (Resolve_Actuals): Use local variable A_Typ and
1017 remove obsolete comments.
1018 (Resolve_Type_Conversion): Do not force the Do_Range_Check flag
1019 on the operand if range checks are suppressed.
1021 2019-08-12 Eric Botcazou <ebotcazou@adacore.com>
1023 * checks.adb (Activate_Range_Check): Remove redundant argument.
1024 (Generate_Range_Check): Likewise.
1025 (Apply_Float_Conversion_Check): Reset the Do_Range_Check flag on
1026 entry and remove redundant condition.
1028 2019-08-02 Alexandre Oliva <oliva@adacore.com>
1030 * libgnat/a-exexpr.adb (Begin_Handler_v1, End_Handler_v1): New.
1031 (Claimed_Cleanup): New.
1032 (Begin_Handler, End_Handler): Document.
1033 * gcc-interface/trans.c (gigi): Switch to exception handler
1035 (Exception_Handler_to_gnu_gcc): Save the original cleanup
1036 returned by begin handler, pass it to end handler, and use
1037 EH_ELSE_EXPR to pass a propagating exception to end handler.
1038 (gnat_to_gnu): Leave the exception pointer alone for reraise.
1039 (add_cleanup): Handle EH_ELSE_EXPR, require it by itself.
1041 2019-07-23 Ed Schonberg <schonberg@adacore.com>
1043 * sem_ch13.adb (Check_Aspect_At_End_Of_Declarations,
1044 Freeze_Entity_Checks): Include Aspect_CPU with other aspects
1045 whose expresssion may depend on a discriminant, and thus require
1046 that components of the type be made visible.
1048 2019-07-23 Eric Botcazou <ebotcazou@adacore.com>
1050 * checks.adb (Convert_And_Check_Range): Add Suppress parameter
1051 and pass it in the call to Insert_Actions. Rename local
1053 (Generate_Range_Check): Minor comment fixes. Pass Range_Check
1054 in the first call to Convert_And_Check_Range and All_Checks in
1056 * exp_ch4.adb (Expand_N_Type_Conversion): Reset the
1057 Do_Overflow_Check flag in the float-to-float case too if there
1058 is also a range check.
1060 2019-07-23 Eric Botcazou <ebotcazou@adacore.com>
1062 * checks.adb (Activate_Overflow_Check): Remove redundant
1064 * exp_ch4.adb (Discrete_Range_Check): Reset the overflow flag.
1065 (Expand_N_Type_Conversion): Do not reset it here.
1067 2019-07-23 Eric Botcazou <ebotcazou@adacore.com>
1069 * repinfo.adb (List_Component_Layout): Pass Decimal to UI_Write.
1070 (Write_Val): Likewise.
1072 2019-07-23 Ed Schonberg <schonberg@adacore.com>
1074 * aspects.ads: New table Operational_Aspect, used to distinguish
1075 between aspects that are view-specific, such as those related to
1076 iterators, and representation aspects that apply to all views of
1078 * aspects.adb (Find_Aspect): If the aspect being sought is
1079 operational, do not ecamine the full view of a private type to
1081 * sem_ch5.adb (Analyze_Iterator_Specification): Improve error
1082 message when the intended domain of iteration does not implement
1083 the required iterator aspects.
1085 2019-07-23 Yannick Moy <moy@adacore.com>
1087 * sem_spark.ads (Is_Local_Context): New function.
1088 * sem_spark.adb (Check_Declaration): Issue errors on violations
1090 (Process_Path): Do not issue error on borrow/observe during
1091 elaboration, as these are caught by the new rule.
1093 2019-07-23 Yannick Moy <moy@adacore.com>
1095 * exp_ch7.adb (Create_Finalizer): Force finalizer not to be
1097 * exp_dbug.adb (Get_External_Name): Explain special case of
1100 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
1102 * repinfo.adb (List_Entities): Also list compiled-generated
1103 types present as Etype of objects.
1105 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
1107 * sinfo.ads: Update the documentation about the
1108 Do_Division_Check, Do_Overflow_Check and Do_Range_Check flags.
1110 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
1112 * exp_ch4.adb (Expand_N_Type_Conversion): Beef up comment.
1113 (Fixup_Universal_Fixed_Operation): Set the base type instead of
1114 the type of the enclosing type conversion on the operation.
1116 2019-07-22 Ed Schonberg <schonberg@adacore.com>
1118 * exp_ch4.adb (Expand_N_In): Do not suggest the use of attribute
1119 'Valid as a replacement for a range check on a discrete type
1120 when the bounds of the range are given by type conversions,
1121 because in such a case there are distinct types involved and the
1122 subbested attribute replacement would be misplaced.
1124 2019-07-22 Yannick Moy <moy@adacore.com>
1126 * sem_spark.adb (Get_Root_Object, Is_Path_Expression,
1127 Is_Subpath_Expression): Add parameter Is_Traversal to adapt
1128 these functions to the case of paths returned from a traversal
1130 (Read_Indexes): Handle the case of an if-expression or
1132 (Check_Statement): Check Emit_Messages only when issuing an
1133 error message. This is important as Emit_Messages may store the
1134 information that an error was detected.
1136 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
1138 * checks.adb (Apply_Type_Conversion_Checks): Do not set
1139 Do_Range_Check flag on conversions from fixed-point types
1141 * exp_attr.adb: Add use and with clause for Expander.
1142 (Expand_N_Attribute_Reference) <Fixed_Value, Integer_Value>: Set
1143 the Conversion_OK flag and do not generate overflow/range checks
1145 * exp_ch4.adb (Expand_N_Qualified_Expression): Remove
1146 superfluous clearing of Do_Range_Check flag.
1147 (Discrete_Range_Check): New procedure to generate a range check
1149 (Real_Range_Check): Remove redundant local variable and adjust.
1150 Remove useless shortcut. Clear Do_Range_Check flag on all
1152 (Expand_N_Type_Conversion): Remove redundant test on
1153 Conversion_OK. Call Discrete_Range_Check to generate range
1154 checks on discrete types. Remove obsolete code for
1155 float-to-integer conversions. Add code to generate range checks
1156 for conversions involving fixed-point types.
1158 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
1160 * sprint.ads: Fix pasto in comment.
1162 2019-07-22 Javier Miranda <miranda@adacore.com>
1164 * sem_res.adb (Resolve_Actuals): Replace code that displaces the
1165 pointer to an allocated object to reference its secondary
1166 dispatch table by a type conversion (which takes care of
1167 handling all cases).
1169 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
1171 * sprint.adb (Sprint_Node_Actual)
1172 <N_Decimal_Fixed_Point_Definition>: Swap a couple of spaces.
1173 (Write_Itype): Minor consistency fixes throughout. Add support
1174 for printing ordinary and decimal fixed-point types and
1177 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
1179 * exp_attr.adb (Expand_Loop_Entry_Attribute): Beef up comment.
1181 2019-07-22 Ed Schonberg <schonberg@adacore.com>
1183 * libgnat/s-valboo.ads, libgnat/s-valcha.ads,
1184 libgnat/s-valdec.ads, libgnat/s-valenu.ads,
1185 libgnat/s-valint.ads, libgnat/s-vallld.ads,
1186 libgnat/s-vallli.ads, libgnat/s-valllu.ads,
1187 libgnat/s-valrea.ads, libgnat/s-valuns.ads,
1188 libgnat/s-valwch.ads: Change categorization of packages that
1189 implement attribute 'Value from Pure to Preelaborate, to prevent
1190 undesirable optimizations when the evaluation of the attribute
1191 raises Constraint_Error, but subsequent use of the result of
1192 this evsaluation is removed by a subsequent optimization.
1194 2019-07-22 Ed Schonberg <schonberg@adacore.com>
1196 * sem_warn.adb (Check_References): Do not emit s warning on a
1197 referenced entity with no explicit assignment if the type of the
1198 entity has Preelaborable_Initialixation, such as
1199 Exception_Occurrence.
1201 2019-07-22 Javier Miranda <miranda@adacore.com>
1203 * exp_ch4.adb (Size_In_Storage_Elements): Improve the expansion
1204 to handle array indexes that are modular type.
1205 (Expand_N_Allocator): For 32-bit targets improve the generation
1206 of the runtime check associated with large arrays supporting
1207 arrays initialized with a qualified expression.
1208 * libgnat/s-imenne.adb (Image_Enumeration_8,
1209 Image_Enumeration_16, Image_Enumeration_32): Define the index of
1210 Index_Table with range Natural'First .. Names'Length since in
1211 the worst case all the literals of the enumeration type would be
1212 single letter literals and the Table built by the frontend would
1213 have as many components as the length of the names string. As a
1214 result of this enhancement, the internal tables declared using
1215 Index_Table have a length closer to the real needs, thus
1216 avoiding the declaration of large arrays on 32-bit CCG targets.
1218 2019-07-22 Yannick Moy <moy@adacore.com>
1220 * sem_ch3.adb (Constrain_Access): Issue a message about ignored
1223 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
1225 * sem_ch8.adb (End_Use_Type): Reset the In_Use flag on the
1226 class-wide type if the type is tagged.
1227 (Use_One_Type): Add commentary on the handling of the class-wide
1230 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
1232 * einfo.ads (Is_For_Access_Subtype): Delete.
1233 (Set_Is_For_Access_Subtype): Likewise.
1234 * einfo.adb (Is_For_Access_Subtype): Likewise.
1235 (Set_Is_For_Access_Subtype): Likewise.
1236 (Write_Entity_Flags): Do not write Is_For_Access_Subtype.
1237 * exp_ch4.adb (Expand_N_Selected_Component): Do not deal with
1239 * exp_spark.adb (Expand_SPARK_N_Selected_Component): Likewise.
1240 * sem_ch4.adb (Analyze_Explicit_Dereference): Likewise.
1241 * sem_ch3.adb (Build_Discriminated_Subtype): Do not build a
1242 special private subtype for access-to-record subtypes.
1244 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
1246 * sem_ch3.adb (Complete_Private_Subtype): Rework the setting of
1247 the Etype of the full view for full base types that cannot
1248 contain any discriminant. Remove code and comment about it in
1251 2019-07-22 Ed Schonberg <schonberg@adacore.com>
1253 * sem_ch3.adb (Convert_Bound): Subsidiary of
1254 Floating_Point_Type_Declaration, to handle properly range
1255 specifications with bounds that may include static constants of
1256 a given type rather than real literals.
1258 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
1260 * sem_aggr.adb (Rewrite_Bound): Be prepared for discriminals
1262 (Rewrite_Range;): Minor tweak.
1263 (Resolve_Record_Aggregate): For a component with default
1264 initialization whose expression is an array aggregate, also
1265 rewrite the bounds of the component associations, if any.
1267 2019-07-22 Gary Dismukes <dismukes@adacore.com>
1269 * exp_ch5.adb (Expand_N_Case_Statement): In the case where a
1270 case statement is rewritten as an equivalent if statement,
1271 inherit the From_Condition_Expression flag from the case
1274 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
1276 * sem_ch8.adb (Check_Constrained_Object): Further extend the
1277 special optimization to all limited types.
1279 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
1281 * exp_attr.adb (Expand_N_Attribute_Reference)
1282 <Attribute_Enum_Val>: Set No_Truncation on the
1283 N_Unchecked_Type_Conversion built around the argument passed to
1286 2019-07-22 Nicolas Roche <roche@adacore.com>
1288 * libgnat/s-valrea.adb (Scan_Real): Ignore non significative
1289 digits to avoid converging to infinity in some cases.
1291 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
1293 * libgnat/g-encstr.adb (Encode_Wide_String): Fix oversight.
1294 (Encode_Wide_Wide_String): Likewise.
1296 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
1298 * sem_warn.adb (Find_Var): Bail out for a function call with an
1299 Out or In/Out parameter.
1301 2019-07-22 Nicolas Roche <roche@adacore.com>
1303 * terminals.c (__gnat_tty_waitpid): Support both blocking and
1305 * libgnat/g-exptty.ads (Is_Process_Running): New function.
1306 * libgnat/g-exptty.adb (Close): Don't try to interrupt/terminate
1307 a process if it is already dead.
1309 2019-07-22 Ed Schonberg <schonberg@adacore.com>
1311 * freeze.adb (Freeze_Fixed_Point_Type): When freezing a
1312 fixed-point subtype, check whether the parent type declarastion
1313 includes an aspect specification for the 'Small type attribute,
1314 and inherit the specified value.
1316 2019-07-22 Javier Miranda <miranda@adacore.com>
1318 * freeze.adb (Freeze_Subprogram): Check that C++ constructors
1319 must have external or link name.
1321 2019-07-22 Ed Schonberg <schonberg@adacore.com>
1323 * sem_res.adb (Resolve_Selected_Component): If the prefix has a
1324 deferred reference, generate the correct reference now, to
1325 indicate that the previous assignment is used. This prevents
1326 spurious warnings on useless assignments when compiling with all
1327 warnings enabled. when there is a subsequent call in the same
1328 stqtement list, in which the prefix of the selected component is
1329 the actual for an out parameter.
1331 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
1333 * exp_attr.adb (Expand_Loop_Entry_Attribute): Copy the condition
1334 of a while loop instead of simply relocating it.
1336 2019-07-18 Arnaud Charlet <charlet@adacore.com>
1338 * Makefile.rtl, expect.c, env.c, aux-io.c, mkdir.c, initialize.c,
1339 cstreams.c, raise.c, tracebak.c, adadecode.c, init.c, raise-gcc.c,
1340 argv.c, adaint.c, adaint.h, ctrl_c.c, sysdep.c, rtinit.c, cio.c,
1341 seh_init.c, exit.c, targext.c: Introduce a "STANDALONE" mode where C
1342 runtime files do not have any dependency on GCC include files.
1343 Remove unnecessary includes.
1344 Remove remaining references to VMS in runtime C file.
1345 * runtime.h: new File.
1347 2019-07-13 Andreas Schwab <schwab@linux-m68k.org>
1349 * Makefile.rtl: Use g-sercom__linux.adb for all linuxes.
1351 2019-07-11 Piotr Trojanek <trojanek@adacore.com>
1353 * lib-writ.adb (Ensure_System_Dependency,
1354 Up_To_Date_ALI_File_Exists, Write_ALI): Replace low-level access
1355 to table with a high-level query.
1357 2019-07-11 Piotr Trojanek <trojanek@adacore.com>
1359 * checks.adb: Fix typo in comment.
1360 * sem.adb (Semantics): Avoid repeated calls to
1361 In_Extended_Main_Source_Unit by reusing an already-cached
1363 * sem_util.adb (First_Global): Fix style.
1365 2019-07-11 Yannick Moy <moy@adacore.com>
1367 * sem_res.adb (Resolve_Call): Do not perform dimensionality
1368 checking on inlined bodies.
1370 2019-07-11 Yannick Moy <moy@adacore.com>
1372 * debug.adb: Flip meaning of debug switch -gnatdF.
1374 2019-07-11 Yannick Moy <moy@adacore.com>
1376 * sem_eval.adb (Is_Same_Value): Add special case for rewritten
1377 Loop_Entry attribute.
1379 2019-07-11 Claire Dross <dross@adacore.com>
1381 * gnat1drv.adb: SPARK checking rules for pointer aliasing are
1382 moved to GNATprove backend.
1383 * sem_spark.ads, sem_spark.adb (Sem_SPARK): Is now a generic
1384 unit. Takes as parameters:
1385 - Retysp which is used to query the most underlying type
1386 visible in SPARK. We do not introduce aliasing checks for
1387 types which are not visibly deep.
1388 - Component_Is_Visible_In_SPARK is used to avoid doing pointer
1389 aliasing checks on components which are not visible in SPARK.
1390 - Emit_Messages returns True in the second phase of SPARK
1391 analysis. Error messages for failed aliasing checks are only
1392 output in this case.
1393 Additionally, errors on constructs not supported in SPARK are
1394 removed as duplicates of marking errors. Components are stored
1395 in the permission map using their original component to avoid
1396 inconsistencies between components of different views of the
1398 (Check_Expression): Handle delta constraints.
1399 (Is_Deep): Exported so that we can check for SPARK restrictions
1400 on deep types inside SPARK semantic checkings.
1401 (Is_Traversal_Function): Exported so that we can check for SPARK
1402 restrictions on traversal functions inside SPARK semantic
1404 (Check_Call_Statement, Read_Indexes): Check wether we are
1405 dealing with a subprogram pointer type before querying called
1407 (Is_Subpath_Expression): Image attribute can appear inside a
1409 (Check_Loop_Statement): Correct order of statements in the loop.
1410 (Check_Node): Ignore raise nodes.
1411 (Check_Statement): Use Last_Non_Pragma to get the object
1412 declaration in an extended return statement.
1414 2019-07-11 Patrick Bernardi <bernardi@adacore.com>
1416 * bindgen.adb (Gen_Main): Do not generate a reference to
1417 Ada_Main_Program_Name when the Minimal_Binder flag is set.
1418 (Gen_Output_File_Ada): Do not output GNAT_Version and
1419 Ada_Main_Program_Name info if Minimal_Binder flag is set.
1420 * bindusg.adb: Add documentation for new -minimal switch.
1421 * gnatbind.adb (Scan_Bind_Arg): Scan -minimal switch.
1422 * opt.ads: Add new global flag Minimal_Binder to indicate if the
1423 binder should not produce global variables.
1424 * doc/gnat_ugn/building_executable_programs_with_gnat.rst:
1425 Update documentation with new binder -minimal switch.
1426 * gnat_ugn.texi: Regenerate.
1428 2019-07-11 Eric Botcazou <ebotcazou@adacore.com>
1430 * Makefile.rtl: Add warning note about compilation flags and
1433 2019-07-11 Ed Schonberg <schonberg@adacore.com>
1435 * exp_ch9.adb (Expand_N_Protected_Type_Declaaration): New
1436 subsidiary routine Replace_Access_Definition, to handle properly
1437 a protected type PT one of whose private components is of type
1440 2019-07-11 Dmitriy Anisimkov <anisimko@adacore.com>
1442 * libgnat/g-socket.ads (Level_Type): Add enumerators for
1443 IP_Protocol_For_ICMP, IP_Protocol_For_IGMP,
1444 IP_Protocol_For_RAW_Level.
1445 * libgnat/g-socket.adb (Levels): Handle them.
1446 * s-oscons-tmplt.c: Import socket protocols defined in
1449 2019-07-11 Claire Dross <dross@adacore.com>
1451 * libgnat/a-cfhama.adb, libgnat/a-cfhase.adb (Free): Do not
1452 reset the Has_Element flag if no element is freed.
1454 2019-07-11 Arnaud Charlet <charlet@adacore.com>
1456 * errno.c: Remove obsolete support for MaRTE OS.
1458 2019-07-11 Ed Schonberg <schonberg@adacore.com>
1460 * exp_ch4.adb (Expand_N_Type_Conversion): If a predicate check
1461 is generated, analyze it with range check suppressed, because
1462 that check has been previously applied.
1463 * exp_ch5.adb (Expand_N_Assignment_Statement): If the RHS is a
1464 type conversion to the type of the LHS, do not apply a predicate
1465 check to the RHS because it will have been generated already
1466 during its expansion.
1467 * exp_ch6.adb (Can_Fold_Predicate_Call): Extend processing to
1468 handle a predicate check on a constant entity whose value is
1471 2019-07-11 Hristian Kirtchev <kirtchev@adacore.com>
1473 * bindo.adb: Remove the documentation of switch -d_N because it
1474 is no longer in use.
1475 * bindo-graphs.ads, bindo-graphs.adb (Is_Spec_Before_Body_Edge):
1477 * bindo-writers.adb (Write_Dependency_Edge): Add the missing
1478 case of a spec-before-body edge.
1480 2019-07-11 Dmitriy Anisimkov <anisimko@adacore.com>
1482 * libgnat/g-socket.ads (Mode_Type): Add a Socket_Raw enumerator.
1483 * libgnat/g-socket.adb (Modes): Handle Socket_Raw.
1485 2019-07-11 Justin Squirek <squirek@adacore.com>
1487 * exp_ch9.adb (Build_Private_Protected_Declaration): Add
1488 exception for the moving of pragmas to internally generated
1489 specs for pragma Unreferenced.
1491 2019-07-11 Bob Duff <duff@adacore.com>
1493 * doc/gnat_ugn/gnat_utility_programs.rst: Fix inconsistent
1494 documentation for gnatmetric.
1495 * gnat_ugn.texi: Regenerate.
1497 2019-07-11 Bob Duff <duff@adacore.com>
1499 * doc/gnat_ugn/gnat_utility_programs.rst: Document gnatpp's
1500 --spaces-only switch.
1502 2019-07-11 Hristian Kirtchev <kirtchev@adacore.com>
1504 * sem_util.adb (Null_Status): Assume that an erroneous construct
1505 has an undefined null status.
1507 2019-07-11 Hristian Kirtchev <kirtchev@adacore.com>
1509 * checks.adb, exp_ch6.adb, gnat1drv.adb, sem_aux.adb,
1510 sem_ch2.adb, sem_ch8.adb, sem_res.adb: Minor reformatting.
1512 2019-07-11 Hristian Kirtchev <kirtchev@adacore.com>
1514 * sem_ch8.adb (Analyze_Object_Renaming): Obtain the object being
1515 renamed using routine Get_Object_Name which takes care of
1517 (Get_Object_Name): New routine.
1519 2019-07-11 Ed Schonberg <schonberg@adacore.com>
1521 * exp_ch6.adb (Can_Fold_Predicate_Call): New function,
1522 subsidiary of Expand_Call_Helper, to compute statically a
1523 predicate check when the argument is a static integer.
1525 2019-07-11 Hristian Kirtchev <kirtchev@adacore.com>
1527 * sem_res.adb (Resolve_Op_Not): Do not rewrite an equality
1528 operator into a function call when the operator is intrinsic.
1530 2019-07-11 Thomas Quinot <quinot@adacore.com>
1532 * sem_prag.adb (Analyze_Pragma, case pragma Check): Do not call
1533 Set_SCO_Pragma_Enabled for the dynamic predicate case.
1535 2019-07-11 Hristian Kirtchev <kirtchev@adacore.com>
1537 * exp_util.ads, exp_util.adb (Needs_Finalization): Move to
1539 * sem_ch9.adb (Analyze_Protected_Definition): Code cleanup. Mark
1540 the protected type as having controlled components when it
1541 contains at least one such component.
1542 * sem_util.ads, sem_util.adb (Needs_Finalization): New
1545 2019-07-11 Eric Botcazou <ebotcazou@adacore.com>
1547 * alloc.ads (Rep_JSON_Table_Initial): New constant.
1548 (Rep_JSON_Table_Increment): Likewise.
1549 * debug.adb: Document -gnatd_j switch.
1550 * gcc-interface/Make-lang.in (GNAT_ADA_OBJS): Add
1552 * gnat1drv.adb: Add with clause for Repinfo.Input.
1553 Add with and use clauses for Sinput.
1554 (Read_JSON_Files_For_Repinfo): New procedure.
1555 (Gnat1drv1): Deal with -gnatd_j switch.
1556 * repinfo-input.ad[sb]: New unit.
1557 * snames.ads-tmpl (Name_Discriminant): New constant.
1558 (Name_Operands): Likewise.
1560 2019-07-11 Justin Squirek <squirek@adacore.com>
1562 * checks.adb (Apply_Accessibility_Check): Add check for constant
1563 folded conditions on accessibility checks.
1565 2019-07-11 Arnaud Charlet <charlet@adacore.com>
1567 * libgnarl/g-thread.ads, libgnarl/g-thread.adb (Get_Thread):
1568 Update comments. Add new version taking a Task_Id.
1570 2019-07-11 Hristian Kirtchev <kirtchev@adacore.com>
1572 * bindo.adb: Update the section of switches and debugging
1574 * bindo.ads: Add type Elaboration_Phase.
1575 * bindo-augmentors.adb: Add use clause for
1576 Bindo.Writers.Phase_Writers.
1577 (Augment_Library_Graph): Signal the start and end of the
1579 * bindo-builders.adb: Add with and use clause for Bindo.Writers.
1580 Add use clause for Bindo.Writers.Phase_Writers.
1581 (Build_Invocation_Graph): Signal the start and end of the
1582 invocation graph construction phase.
1583 (Build_Library_Graph): Signal the start and end of the library
1584 graph construction phase.
1585 * bindo-diagnostics.adb: Add use clause for
1586 Bindo.Writers.Phase_Writers.
1587 (Diagnose_Cycle): Signal the start and end of the cycle
1589 * bindo-elaborators.adb: Add use clause for
1590 Bindo.Writers.Phase_Writers.
1591 (Elaborate_Units): Signal the start and end of the unit
1593 * bindo-graphs.adb: Add use clause for
1594 Bindo.Writers.Phase_Writers.
1595 (Find_Components): Signal the start and end of the component
1597 (Find_Cycles): Signal the start and end of the cycle discovery
1599 * bindo-units.adb: Add with and use clause for Bindo.Writers.
1600 Add use clause for Bindo.Writers.Phase_Writers.
1601 (Collect_Elaborable_Units): Signal the start and end of the unit
1603 * bindo-validators.adb: Add with and use clause for
1604 Bindo.Writers. Add use clause for Bindo.Writers.Phase_Writers.
1605 (Validate_Cycles, Validate_Elaboration_Order,
1606 Validate_Invocation_Graph, Validate_Library_Graph): Signal the
1607 start and end of the libray graph validation phase.
1608 * bindo-writers.ads, bindo-writers.adb: Add new nested package
1610 * debug.adb: Update the documentation of switch d_S.
1612 2019-07-11 Yannick Moy <moy@adacore.com>
1614 * sem_res.adb (Check_Argument_Order): Special case calls to
1617 2019-07-10 Dmitriy Anisimkov <anisimko@adacore.com>
1619 * libgnat/s-ststop.adb: Remove System.Strings.Stream_Ops
1620 dependence on System.Streams.Stream_IO.
1622 2019-07-10 Ed Schonberg <schonberg@adacore.com>
1624 * sem_ch2.adb (Analyze_Integer_Literal): Preserve the type of
1625 the literal if prior analysis determined that its type is a
1626 modular integer type.
1628 2019-07-10 Doug Rupp <rupp@adacore.com>
1630 * init.c: Do not attempt to re-arm guard page on x86_64-vx7(r2).
1632 2019-07-10 Ed Schonberg <schonberg@adacore.com>
1634 * sem_ch8.adb (Check_Constrained_Object): A record that is
1635 limited because of the presence of a limited component is
1636 constrained, and no subtype indiciation needs to be created for
1637 it, just as is the case for declared limited records.
1639 2019-07-10 Yannick Moy <moy@adacore.com>
1641 * sem_aux.adb, sem_aux.ads (Is_Protected_Operation): New
1642 function to determine if a subprogram is protected.
1643 * sem_spark.adb (Setup_Protected_Components): New procedure to
1644 add protected components to the environment.
1645 (Check_Callable_Body): Call the new Setup_Protected_Components.
1646 (Check_Package_Spec): Merge local environment with enclosing one
1649 2019-07-10 Claire Dross <dross@adacore.com>
1651 * sem_spark.adb (Check_Expression): Allow digits constraints as
1653 (Illegal_Global_Usage): Pass in the entity.
1654 (Is_Subpath_Expression): New function to allow different nodes
1655 as inner parts of a path expression.
1656 (Read_Indexes): Allow concatenation and aggregates with box
1657 expressions. Allow attributes Update and Loop_Entry.
1658 (Check_Expression): Allow richer membership test.
1659 (Check_Node): Ignore bodies of generics.
1660 (Get_Root_Object): Allow concatenation and attributes.
1662 2019-07-10 Hristian Kirtchev <kirtchev@adacore.com>
1664 * sem_ch6.adb (Check_Discriminant_Conformance): Use Find_Type to
1665 discover the type of a full view discriminant.
1667 2019-07-10 Arnaud Charlet <charlet@adacore.com>
1669 * doc/gnat_ugn/gnat_and_program_execution.rst: Improve gnatmem's
1670 doc for the depth switch.
1672 2019-07-10 Bob Duff <duff@adacore.com>
1674 * doc/gnat_ugn/gnat_utility_programs.rst: Document gnatpp's
1675 --source-line-breaks switch.
1677 2019-07-10 Justin Squirek <squirek@adacore.com>
1679 * doc/gnat_rm/implementation_defined_attributes.rst: Add mention
1680 of 'Image attribute with 'Img's entry to mention additional
1681 added 2012 usage of Obj'Image.
1682 * doc/gnat_rm/implementation_defined_pragmas.rst: Correct
1683 mispelling of Async_Writers.
1684 * gnat_rm.texi: Regenerate.
1685 * sem_prag.adb (Analyze_Pragma): Correct mispelling of
1687 * sem_util.adb (State_Has_Enabled_Property): Correct mispelling
1690 2019-07-10 Simon Buist <buist@adacore.com>
1692 * sem_util.ads (Child_Prefix): New constant.
1693 * sem_util.adb (Unique_Name): Add a special prefix to child
1694 units that have a nested subprogram or package.
1696 2019-07-10 Arnaud Charlet <charlet@adacore.com>
1698 * sfn_scan.adb (Scan_SFN_Pragmas): Add pragma Assert.
1700 2019-07-10 Hristian Kirtchev <kirtchev@adacore.com>
1702 * sem_ch3.adb (Check_Nonoverridable_Aspects): Correct the
1703 spelling in certain error messages.
1704 (Check_Pragma_Implemented): Correct the spelling in certain
1707 2019-07-10 Eric Botcazou <ebotcazou@adacore.com>
1709 * Makefile.rtl (GNATRTL_NONTASKING_OBJS): Add g-brapre.
1710 * libgnat/g-brapre.ads: New package specification.
1711 * doc/gnat_rm/the_gnat_library.rst: Document it.
1712 * gnat_rm.texi: Regenerate.
1714 2019-07-10 Yannick Moy <moy@adacore.com>
1716 * osint-c.adb (Set_File_Name): Always add extension for multiple
1717 units per file mode.
1719 2019-07-10 Corentin Gay <gay@adacore.com>
1721 * sysdep.c: Put include directive for 'vxWorks.h' before any
1722 other VxWorks headers.
1724 2019-07-10 Eric Botcazou <ebotcazou@adacore.com>
1726 * doc/gnat_rm/implementation_defined_attributes.rst
1727 (Scalar_Storage_Order): Minor tweaks. Add note about debuggers.
1728 * gnat_rm.texi: Regenerate.
1730 2019-07-10 Hristian Kirtchev <kirtchev@adacore.com>
1732 * exp_ch4.adb (Expand_N_Case_Expression): Mark the generated
1733 assignments to the temporary result as being OK because the
1734 expansion of case expressions is correct by construction.
1735 (Is_Copy_Type): Update the predicate to match the comment
1738 2019-07-10 Hristian Kirtchev <kirtchev@adacore.com>
1740 * bindo-graphs.adb, bindo.adb, debug.adb, exp_ch6.adb,
1741 sem_ch10.adb, sem_ch13.adb, sem_ch3.adb, sem_ch4.adb,
1742 sem_ch6.adb, sem_ch7.adb, sem_res.adb, sem_spark.adb,
1743 sem_util.adb, warnsw.ads: Minor reformatting.
1745 2019-07-10 Joffrey Huguet <huguet@adacore.com>
1747 * libgnat/a-strbou.ads, libgnat/a-strfix.ads,
1748 libgnat/a-strunb.ads, libgnat/a-strunb__shared.ads: Add global
1749 contracts, contract cases, preconditions and postconditions to
1750 procedures and functions.
1752 2019-07-10 Doug Rupp <rupp@adacore.com>
1754 * sysdep.c (__gnat_is_file_not_found_error): Reformulate to also
1755 work for vxworks7r2 SR0610.
1757 2019-07-10 Doug Rupp <rupp@adacore.com>
1759 * env.c (__gnat_environ): Reformulate to also work for
1762 2019-07-10 Patrick Bernardi <bernardi@adacore.com>
1764 * Makefile.rtl: Handle vxworks7r2 ppc target
1766 2019-07-10 Hristian Kirtchev <kirtchev@adacore.com>
1768 * bindo.adb: Update the section on switches.
1770 (Add_Cycle, Add_Vertex_And_Complement): Remove.
1771 (Create): The graph no longer needs a set of recorded cycles
1772 because the cycles are not rediscovered in permuted forms.
1773 (Cycle_End_Vertices): New routine.
1774 (Destroy): The graph no longer needs a set of recorded cycles
1775 because the cycles are not rediscovered in permuted forms.
1776 (Destroy_Library_Graph_Vertex): Move to the library level.
1777 (Find_All_Cycles_Through_Vertex, Find_All_Cycles_With_Edge):
1779 (Find_Cycles_From_Successor, Find_Cycles_From_Vertex,
1780 Find_Cycles_In_Component, Has_Elaborate_All_Edge): New routines.
1781 (Insert_And_Sort): Remove.
1782 (Is_Elaborate_Body_Edge): Use predicate
1783 Is_Vertex_With_Elaborate_Body.
1784 (Is_Recorded_Cycle): Remove.
1785 (Is_Vertex_With_Elaborate_Body): New routine.
1786 (Normalize_And_Add_Cycle): Remove.
1787 (Precedence): Rename to xxx_Precedence, where xxx relates to the
1788 input. These versions better reflect the desired input
1790 (Record_Cycle): New routine.
1791 (Remove_Vertex_And_Complement, Set_Is_Recorded_Cycle): Remove.
1792 (Trace_xxx): Update all versions to use debug switch -d_t.
1793 (Trace_Component): New routine.
1794 (Trace_Eol): Removed.
1795 (Trace_Vertex): Do not output the component as this information
1796 is already available when the component is traced.
1797 (Unvisit, Visit): New routine.
1798 * bindo-graphs.ads: Add new instance LGV_Lists. Remove instance
1799 RC_Sets. Update the structure of type Library_Graph_Attributes
1800 to remove the set of recorded cycles.
1801 (Destroy_Library_Graph_Vertex): Move to the library level.
1802 * bindo-writers.adb (Write_Component_Vertices): Output
1803 information about the number of vertices.
1804 * debug.adb: Document the use of binder switch -d_t. Update the
1805 use of binder switch -d_T.
1807 2019-07-10 Yannick Moy <moy@adacore.com>
1809 * sem_spark.adb (Get_Root_Object): Replace precondition by error
1811 (Read_Indexes): Replace precondition by error message.
1812 (Check_Callable_Body): Check only traversal function returns an
1813 anonymous access type.
1814 (Check_Expression): Issue error on unexpected expression as
1816 * sem_util.adb (First_Global): Fix access to global on
1819 2019-07-10 Javier Miranda <miranda@adacore.com>
1821 * exp_ch6.adb (Is_Class_Wide_Interface_Type): New subprogram.
1822 (Expand_Call_Helper): Handle non-limited views when we check if
1823 any formal is a class-wide interface type.
1824 * exp_disp.adb (Expand_Interface_Actuals): Handle non-limited
1825 views when we look for interface type formals to force "this"
1828 2019-07-10 Ed Schonberg <schonberg@adacore.com>
1830 * sem_res.adb (Resolve_Equality_Op): Do not replace the resolved
1831 operator by its alias if expander is not active, because the
1832 operand type may not be frozen yet and its inherited operations
1833 have not yet been created.
1835 2019-07-10 Hristian Kirtchev <kirtchev@adacore.com>
1837 * bindo-elaborators.adb (Elaborate_Units): Set attribute
1838 Elab_Position of all elaborated units.
1839 (Set_Unit_Elaboration_Positions): New routine.
1841 2019-07-10 Gary Dismukes <dismukes@adacore.com>
1843 * exp_util.adb: Reformatting and a typo fix.
1845 2019-07-10 Yannick Moy <moy@adacore.com>
1847 * exp_util.adb (Remove_Side_Effects): Prefer renamings for
1848 objects of possible owning type in GNATprove mode.
1850 2019-07-09 Ed Schonberg <schonberg@adacore.com>
1852 * sem_ch3.adb (Analyze_Object_Declaration): If the object type
1853 is a composite type that has a dynamic predicate and, the
1854 expression in the declaration is an aggregate, the generated
1855 predicate check must appear after the expanded code for the
1856 aggregate, which will appear after the rewritten object
1859 2019-07-09 Justin Squirek <squirek@adacore.com>
1861 * sem_eval.adb (Expr_Value_E): Add conditional to correctly
1862 handle constant enumerated character types.
1864 2019-07-09 Eric Botcazou <ebotcazou@adacore.com>
1866 * libgnarl/s-osinte__mingw.ads (CRITICAL_SECTION): Use proper
1867 type for SpinCount component.
1869 2019-07-09 Justin Squirek <squirek@adacore.com>
1871 * exp_ch4.adb (Expand_N_Allocator): Add conditional to detect
1872 the presence of anoymous access type allocators and issue a
1873 warning if the appropriate warning flag is enabled.
1874 * warnsw.ads: Add new warning flag for anonymous allocators
1875 * warnsw.adb (All_Warnings, Restore_Warnings, Save_Warnings,
1876 Set_Underscore_Warning_Switch): Register new flags.
1877 (WA_Warnings): Register new flag as an "all warnings" switch
1879 doc/gnat_ugn/building_executable_programs_with_gnat.rst:
1880 Document new warning switches -gnatw_a and -gnatw_A.
1881 * gnat_ugn.texi: Regenerate.
1883 2019-07-09 Ed Schonberg <schonberg@adacore.com>
1885 * sem_ch4.adb (Diagnose_Call): Improve error recovery when a
1886 local subprogram name hides a possible candidate name declared
1887 in a child package in the context of the current unit.
1888 * sem_ch6.adb (Process_Formals): Protect against malformed
1889 formal types when the parameter type does not denote an entity.
1891 2019-07-09 Hristian Kirtchev <kirtchev@adacore.com>
1893 * bindo-augmentors.adb (Visit_Elaboration_Root): Do not start a
1894 DFS from an elaboration root whose corresponding unit lacks
1895 elaboration code. This behavior mimics that of the old
1896 elaboration order mechanism.
1897 * bindo-graphs.adb (Find_All_Cycles_Through_Vertex): Move the
1898 vertex tracing within the functional branches of the routine.
1899 This prevents spurious trace output.
1900 (Has_No_Elaboration_Code): New routine.
1901 (Trace_Cycle, Trace_Edge): Update the various Ids to use the
1902 "standard" trace format.
1903 * bindo-graphs.ads (Has_No_Elaboration_Code): New routine.
1904 * bindo-units.ads, bindo-units.adb (Has_No_Elaboration_Code):
1907 2019-07-09 Piotr Trojanek <trojanek@adacore.com>
1909 * ali.ads, bindo-graphs.adb, bindo-validators.adb, clean.adb,
1910 doc/gnat_ugn/elaboration_order_handling_in_gnat.rst, einfo.ads,
1911 exp_aggr.adb, exp_ch13.adb, exp_ch4.adb, exp_ch5.adb,
1912 exp_ch6.adb, exp_ch7.adb, exp_ch9.adb, exp_pakd.adb,
1913 fname-uf.ads, gnatlink.adb, inline.adb, lib.ads, make.adb,
1914 namet.ads, opt.ads, par-ch4.adb, par-ch6.adb, par-labl.adb,
1915 prep.adb, sem_aggr.adb, sem_ch13.adb, sem_ch4.adb, sem_ch5.adb,
1916 sem_ch6.adb, sem_ch6.ads, sem_ch7.adb, sem_ch8.adb, sem_dim.adb,
1917 sem_disp.adb, sem_prag.adb, sem_res.adb, sem_warn.adb,
1918 sinfo.ads: Replace ". " with ". ". Minor reformatting and typo
1920 * gnat_ugn.texi: Generate.
1922 2019-07-09 Hristian Kirtchev <kirtchev@adacore.com>
1924 * bindo.ads: Move type Precedence_Kind from the private to the
1925 visible part of the unit.
1926 * bindo-augmentors.adb: Remove the use of global data as it is
1928 (Augment_Library_Graph): Update the parameter profile.
1929 (Is_Visited, Set_Is_Visited): Remove.
1930 (Visit_Elaboration_Root, Visit_Elaboration_Roots): Update the
1931 parameter profile and comment on usage.
1932 (Visit_Vertex): Likewise. Also keep track of which invocation
1933 edge activates a task.
1934 * bindo-augmentors.ads (Augment_Library_Graph): Update the
1935 parameter profile and comment on usage.
1936 * bindo-builders.adb (Create_Forced_Edge,
1937 Create_Spec_And_Body_Edge, Create_With_Edge): Update the call to
1939 * bindo-diagnostics.adb: Add with end use clauses for Restrict
1941 (Output_Dynamic_Model_Suggestions): Remove.
1942 (Output_Invocation_Related_Suggestions): New routine.
1943 (Output_Suggestions): Output all invocation-related suggestions
1945 * bindo-elaborators.adb: Remove types Comparator_Ptr and
1947 (Find_Best_Vertex): Update the parameter profile.
1948 * bindo-graphs.adb (Activates_Task): New routine.
1949 (Add_Body_Before_Spec_Edge): Update the call to
1950 Add_Edge_With_Return.
1951 (Add_Edge): Update the parameter profile and the call to
1952 Add_Edge_With_Return.
1953 (Add_Edge_With_Return): Update the parameter profile and comment
1955 (At_Least_One_Edge_Satisfies): New routine.
1956 (Contains_Elaborate_All_Edge): Reimplement.
1957 (Contains_Static_Successor_Edge, Contains_Task_Activation): New
1959 (Contains_Weak_Static_Successor): Remove.
1960 (Is_Static_Successor_Edge): New routine.
1961 * bindo-graphs.ads: Add types LGE_Predicate_Ptr,
1962 LGV_Comparator_Ptr, and LGV_Predicate_Ptr. Update type
1963 Library_Graph_Edge_Attributes to capture whether an invocation
1964 edge activates a task. Update the value of
1965 No_Library_Graph_Edge_Attributes.
1966 (Activates_Task): Update the parameter profile and comment on
1968 (Contains_Static_Successor_Edge, Contains_Task_Activation): New
1970 (Contains_Weak_Static_Successor): Remove.
1971 * doc/gnat_ugn/elaboration_order_handling_in_gnat.rst:
1972 Update the documentation to reflect the new task-related advice.
1973 * gnat_ugn.texi: Regenerate.
1975 2019-07-09 Piotr Trojanek <trojanek@adacore.com>
1977 * exp_util.adb (Containing_Package_With_Ext_Axioms): Replace
1978 low-level Ekind test with a high-level wrapper.
1980 2019-07-09 Arnaud Charlet <charlet@adacore.com>
1982 * libgnat/s-memory.adb: Disable calls to Abort defer/undefer
1983 when ZCX_By_Default.
1985 2019-07-09 Javier Miranda <miranda@adacore.com>
1987 * sem_ch13.adb (Rep_Item_Too_Early): Representation clauses are
1988 not allowed for a derivation of a generic type. Extend the
1989 current test to check that none of the parents is a generic
1992 2019-07-09 Hristian Kirtchev <kirtchev@adacore.com>
1994 * exp_ch9.adb, exp_util.adb, repinfo.adb, sem_ch12.adb,
1995 sem_prag.adb, sem_res.adb, sem_spark.adb, sem_util.adb: Minor
1998 2019-07-09 Ed Schonberg <schonberg@adacore.com>
2000 * sem_res.adb (Resolve_Equality_Op): If the node was overloaded,
2001 set properly the entity to which the node has been resolved. The
2002 original entity is the first one found during analysis, and is
2003 not necessarily the resolved one.
2004 (Resolve_Op_Not): If the argument of negation is an overloaded
2005 equality operation, call its resolution directly given that the
2006 context type does not participate in overload resolution.
2008 2019-07-09 Hristian Kirtchev <kirtchev@adacore.com>
2010 * bindo.adb: Remove with and use clauses for Debug. Add with
2011 and use clauses for Opt.
2012 (Find_Elaboration_Order): Enable the v4.0 elaboration order. The
2013 v3.0 mechanism is now available under binder switch -H.
2014 * bindusg.adb (Display): Enable switch -H.
2015 * debug.adb: Free compiler switch -gnatd_G. Free binder switch
2017 * sem_elab.adb: Update the section on switches to remove
2019 (Invocation_Graph_Recording_OK): The invocation graph is now
2020 unconditionally recorded in ALI files.
2021 * switch-b.adb (Scan_Binder_Switches): Scan switch -H.
2022 * doc/gnat_ugn/building_executable_programs_with_gnat.rst:
2023 Update the documentation on compiler switches related to
2024 elaboration. Update the documentation on binder switches to
2026 * doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Update
2027 the documentation on elaboration order handling in GNAT.
2028 * gnat_ugn.texi: Regenerate.
2030 2019-07-09 Eric Botcazou <ebotcazou@adacore.com>
2032 * repinfo.adb (List_Entities): Disregard formals altogether.
2033 (List_Name): Properly escape the double quote in the JSON
2036 2019-07-09 Javier Miranda <miranda@adacore.com>
2038 * exp_util.adb (Remove_Side_Effects): Preserve the
2039 Do_Range_Check flag.
2041 2019-07-09 Yannick Moy <moy@adacore.com>
2043 * sinfo.ads: Refine comment for Do_Range_Check.
2045 2019-07-09 Yannick Moy <moy@adacore.com>
2047 * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Expand
2048 attribute reference on Enum_Rep.
2050 2019-07-09 Ed Schonberg <schonberg@adacore.com>
2052 * sem_ch12.adb (Instantiate_Formal_Package): Handle properly the
2053 case where the actual for a formal package in an instance is the
2054 current instance of an enclosing generic package.
2055 (Check_Formal_Packages): If the formal package declaration is
2056 box-initialized or lacks associations altogether, no internal
2057 instance was created to verify conformance, and there is no
2058 validating package to remove from tree.
2060 2019-07-09 Yannick Moy <moy@adacore.com>
2062 * freeze.adb (Build_Renamed_Body): Do not set body to inline in
2065 2019-07-09 Yannick Moy <moy@adacore.com>
2067 * exp_util.adb (Expand_Subtype_From_Expr): Still expand the type
2068 of static expressions in GNATprove_Mode.
2069 * sem_ch3.adb (Analyze_Object_Declaration): Remove obsolete
2070 special case for GNATprove_Mode.
2072 2019-07-09 Piotr Trojanek <trojanek@adacore.com>
2074 * doc/gnat_rm/the_gnat_library.rst,
2075 doc/gnat_ugn/building_executable_programs_with_gnat.rst,
2076 erroutc.adb, libgnat/g-comlin.adb, libgnat/g-comlin.ads,
2077 libgnat/g-regexp.ads, libgnat/g-regpat.ads,
2078 libgnat/g-spipat.ads, libgnat/s-os_lib.ads,
2079 libgnat/s-regexp.ads: Reword "wild card" to "wildcard".
2080 * gnat_rm.texi, gnat_ugn.texi: Regenerate.
2082 2019-07-09 Yannick Moy <moy@adacore.com>
2084 * sem_spark.adb (Check_Expression): Handle correctly implicit
2085 assignments as part of allocators and (extension) aggregates.
2086 (Get_Root_Object): Adapt for new path expressions.
2087 (Is_Path_Expression): Return True for (extension) aggregate.
2089 2019-07-09 Piotr Trojanek <trojanek@adacore.com>
2091 * einfo.ads: Fix a typo.
2093 2019-07-09 Ed Schonberg <schonberg@adacore.com>
2095 * sem_util.adb (Scope_Within_Or_Same): Handle properly task
2096 bodies and protected bodies, so that local variables within have
2097 their proper scopes after these constructs have been rewritten
2098 during expansion. This patch resembles but is not identical to
2099 the code in Scope_Within.
2101 2019-07-09 Arnaud Charlet <charlet@adacore.com>
2103 * gnat1drv.adb (Adjust_Global_Switches): Set
2104 Dynamic_Elaboration_Checks to True in CodePeer mode.
2106 2019-07-09 Yannick Moy <moy@adacore.com>
2108 * sem_spark.adb (Get_Perm_Or_Tree): Issue an error when
2109 encountering unknown global variable.
2111 2019-07-09 Yannick Moy <moy@adacore.com>
2113 * sem_spark.adb (Check_Expression): Change signature to take an
2114 Extended_Checking_Mode, for handling read permission checking of
2115 sub-expressions in an assignment.
2116 (Check_Parameter_Or_Global): Adapt to new behavior of
2117 Check_Expression for mode Assign.
2118 (Check_Safe_Pointers): Do not analyze generic bodies.
2119 (Check_Assignment): Separate checking of the target of an
2122 2019-07-09 Eric Botcazou <ebotcazou@adacore.com>
2124 * repinfo.ads (JSON format): Adjust.
2125 * repinfo.adb (Need_Blank_Line): Rename to...
2126 (Need_Separator): ...this.
2127 (Blank_Line): Rename to...
2128 (Write_Separator): ...this and add JSON specific handling.
2129 (List_Array_Info): Adjust to above renaming.
2130 (List_Object_Info): Likewise.
2131 (List_Record_Info): Likewise.
2132 (List_Subprogram_Info): Likewise.
2133 (List_Type_Info): Likewise.
2134 (List_Entities): Do not set Need_Blank_Line.
2135 (List_Rep_Info): Set Need_Separator and add JSON specific
2136 handling. Output a single JSON stream in the normal case.
2138 2019-07-09 Arnaud Charlet <charlet@adacore.com>
2140 * doc/gnat_ugn/the_gnat_compilation_model.rst: Update doc on
2141 -fdump-ada-spec now that we generate Ada 2012.
2142 * gnat_ugn.texi: Regenerate.
2144 2019-07-08 Eric Botcazou <ebotcazou@adacore.com>
2146 * repinfo.adb (List_Common_Type_Info): New procedure extracted
2148 (List_Type_Info): ...here. Call it for the common information,
2149 start with a blank line and output the linker section at the
2151 (List_Mechanisms): Rename to...
2152 (List_Subprogram_Info): ...this.
2153 (List_Array_Info): Call List_Common_Type_Info.
2154 (List_Entities): Adjust to above change and renaming.
2155 (List_Record_Info): Call List_Common_Type_Info.
2157 2019-07-08 Dmitriy Anisimkov <anisimko@adacore.com>
2159 * libgnat/g-sercom.ads
2160 (Serial_Port_Descriptor): New type.
2161 (Serial_Port): Add a comment, make it hold a
2162 Serial_Port_Descriptor.
2163 (To_Ada, To_C): New procedures.
2164 (Port_Data, Port_Data_Access): Remove types.
2165 * libgnat/g-sercom.adb (To_Ada): New stub.
2166 * libgnat/g-sercom__linux.adb, libgnat/g-sercom__mingw.adb:
2167 Update implementations accordingly.
2168 * s-oscons-tmplt.c: Bind Serial_Port_Descriptor to
2169 System.Win32.HANDLE on Windows, and to Interfaces.C.int on
2170 Linux. Add "Interfaces.C." prefix for other basic integer type
2172 * xoscons.adb (Output_Info): Remove the "Interfaces.C." prefix
2173 for subtypes generation.
2175 2019-07-08 Arnaud Charlet <charlet@adacore.com>
2177 * doc/gnat_rm/standard_and_implementation_defined_restrictions.rst:
2178 Update documentation on No_Exceptions restriction.
2179 * gnat_rm.texi: Regenerate.
2181 2019-07-08 Dmitriy Anisimkov <anisimko@adacore.com>
2183 * libgnat/s-os_lib.adb: Do not call __gnat_kill for Invalid_Pid.
2185 2019-07-08 Piotr Trojanek <trojanek@adacore.com>
2187 * sem_util.adb (Enclosing_Package_Or_Subprogram): Do not expect
2188 package and subprogram bodies.
2190 2019-07-08 Bob Duff <duff@adacore.com>
2192 * doc/gnat_ugn/gnat_utility_programs.rst: Remove documentation
2193 of ignored GNATpp switch.
2195 2019-07-08 Hristian Kirtchev <kirtchev@adacore.com>
2197 * doc/gnat_rm/implementation_defined_pragmas.rst:
2198 Update the documentation of pragma Initialize_Scalars.
2199 * gnat_rm.texi: Regenerate.
2201 2019-07-08 Javier Miranda <miranda@adacore.com>
2203 * exp_ch4.adb (Tagged_Membership): Fix regression silently
2204 introduced in r260738 that erroneouslusy causes the evaluation
2205 to True of the membership test when the left operand of the
2206 membership test is a class-wide interface object and the right
2207 operand is a type that implements such interface type.
2209 2019-07-08 Hristian Kirtchev <kirtchev@adacore.com>
2211 * sem_ch13.adb (Analyze_Attribute_Definition_Clause): Do not
2212 register an address clause when its prefix denotes a generic
2215 2019-07-08 Hristian Kirtchev <kirtchev@adacore.com>
2217 * bindo-diagnostics.adb (Diagnose_Cycle): Capture the presence
2218 of an Elaborate_All edge before iterating over the edges of the
2220 (Output_Elaborate_Body_Transition): Update the parameter profile
2221 and the comment on usage. Add a missing case where the edge is
2222 within the context of an Elaborate_All.
2223 (Output_Transition): Update the call to
2224 Output_Elaborate_Body_Transition.
2225 * bindo-graphs.ads, bindo-graphs.adb
2226 (Contains_Elaborate_All_Edge): New routine.
2228 2019-07-08 Piotr Trojanek <trojanek@adacore.com>
2230 * lib-xref-spark_specific.adb (Create_Heap): Set dummy Etype for
2231 the fake __HEAP entity.
2233 2019-07-08 Daniel Mercier <mercier@adacore.com>
2235 * gnat1drv.adb: Suppress warnings on memory representation in
2236 CodePeer compiler mode.
2238 2019-07-08 Nicolas Roche <roche@adacore.com>
2240 * rtinit.c (__gnat_runtime_initialize): Remove dependency on
2243 2019-07-08 Doug Rupp <rupp@adacore.com>
2245 * Makefile.rtl: Handle vxworks7r2 in x86_64 and x86 vxworks7.
2247 2019-07-08 Dmitriy Anisimkov <anisimko@adacore.com>
2249 * Makefile.rtl: Use g-sercom__linux.adb for all linuxes.
2251 2019-07-08 Yannick Moy <moy@adacore.com>
2253 * expander.adb (Expand): Do not reset Analyzed flag always.
2254 * sem_eval.adb (Fold_Ureal): Mark node as analyzed.
2256 2019-07-08 Ed Schonberg <schonberg@adacore.com>
2258 * exp_ch9.adb (Expand_N_Timed_Entry_Call): Do not insert twice
2259 the assignment statement that computes the delay value, to
2260 prevent improper tree sharing when the value is a type
2261 conversion and Float_Overflow checks are enabled.
2263 2019-07-08 Hristian Kirtchev <kirtchev@adacore.com>
2265 * bindo.adb: Update the section on terminology to include new
2266 concepts. Update the section on switches to include new
2268 * bindo.ads: Add type Precedence_Kind.
2269 * bindo-builders.adb: Add with and use clauses for Debug and
2270 Bindo.Validators. Add use clauses for
2271 Bindo.Validators.Invocation_Graph_Validators and
2272 Bindo.Validators.Library_Graph_Validators.
2273 (Build_Invocation_Graph): Validate the graph immediately after
2275 (Build_Library_Graph): Update the parameter profile. The
2276 creation of the graph is now elaboration model-agnostic.
2277 Validate the graph immediately after it was built.
2278 (Create_With_Edge): Create regular with edges for Elaborate and
2279 Elaborate_All edges when the appropriate debug switches are in
2281 * bindo-builders.ads (Build_Library_Graph): Update the parameter
2283 * bindo-diagnostics.adb (Diagnose_Cycle): Track the presence of
2284 an Elaborate_All edge throughout the inspection of the cycle's
2286 (Output_Dynamic_Model_Suggestions): Output the suggestion only
2287 when the cycle contains at least one weak edge where the
2288 successor was statically elaborated.
2289 (Output_Elaborate_Body_Transition, Output_Forced_Transition,
2290 Output_With_Transition): Update the assertions.
2291 * bindo-elaborators.adb: Remove use clauses for
2292 Bindo.Validators.Invocation_Graph_Validators and
2293 Bindo.Validators.Library_Graph_Validators. Remove strings
2294 Add_To_All_Candidates_Msg and Add_To_Comp_Candidates_Msg.
2295 Remove type String_Ptr.
2296 (Add_Vertex, Add_Vertex_If_Elaborable, Create_All_Candidates_Set
2297 Create_Component_Candidates_Set): Remove.
2298 (Create_Component_Vertex_Sets, Create_Vertex_Sets): New routine.
2299 (Elaborate_Component): Update the parameter profile and the
2300 comment on usage. Reimplement the elaboration of a component.
2301 The algorithm will now attempt to elaborate as many vertices
2302 possible. If this is not possible, and a weakly elaborable
2303 vertex is available use unit was compiled using the dynamic
2304 model, the algorithm will elaborate it.
2305 (Elaborate_Library_Graph): Reimplement the elaboration of the
2306 graph. The algorithm will now attempt to elaborate as many
2307 vertices along with their components as possible. If this is not
2308 possible, and a weakly elaborable vertex is available use unit
2309 was compiled using the dynamic model, the algorithm will
2310 elaborate it along with its component.
2311 (Elaborate_Units): Merge with the functionality of
2312 Elaborate_Units_Common.
2313 (Elaborate_Units_Common, Elaborate_Units_Dynamic,
2314 Elaborate_Units_Static): Remove.
2315 (Elaborate_Vertex): Update the parameter profile and the comment
2316 on usage. Reimplemented.
2317 (Find_Best_Candidate): Remove.
2318 (Find_Best_Elaborable_Vertex, Find_Best_Vertex,
2319 Find_Best_Weakly_Elaborable_Vertex, Has_Elaborable_Body,
2320 Insert_Elaborable_Successor, Insert_Vertex): New routines.
2321 (Is_Better_Candidate): Remove.
2322 (Is_Better_Elaborable_Vertex,
2323 Is_Better_Weakly_Elaborable_Vertex,
2324 Is_Suitable_Elaborable_Vertex,
2325 Is_Suitable_Weakly_Elaborable_Vertex): New routines.
2326 (Trace_Candidate_Vertices): Remove.
2327 (Trace_Component): Output the number of strong and weak
2329 (Trace_Unelaborated_Vertices): Remove.
2330 (Trace_Vertex): Output the number of strong and weak
2332 (Trace_Vertices): New routine.
2333 (Update_Successor, Update_Successors): Update the parameter
2334 profile and the comment on usage.
2335 * bindo-graphs.adb: Remove type Precedence_Kind.
2336 (Add_Edge_With_Return): Update the increment of pending
2338 (Add_Vertex): Provide default values for strong and weak
2340 (Complementary_Vertex): Move the initial declaration to the
2341 spec. Update the parameter profile and the comment on usage.
2342 (Contains_Weak_Static_Successor): New routine.
2343 (Create): Update the parameter profile. The creation of the
2344 graph is now elaboration model-agnostic.
2345 (Decrement_Pending_Predecessors): Update the parameter profile
2346 and the comment on usage. Reimplemented.
2347 (Delete_Edge): Update the decrement of pending predecesors.
2348 (Has_Elaborate_Body): Do not treat a vertex as being subject to
2349 Elaborate_Body when a debug switch is in effect.
2350 (Increment_Pending_Predecessors): Update the parameter profile
2351 and the comment on usage. Reimplemented.
2352 (Is_Elaborable_Component): Reimplemented.
2353 (Is_Elaborable_Vertex): Move the initial declaration to the
2354 spec. Reimplemented.
2355 (Is_Elaborate_Body_Pair): New routine.
2356 (Is_Dynamically_Elaborated): Update the parameter profile.
2358 (Is_Weakly_Elaborable_Vertex): New routine.
2359 (Pending_Predecessors): Removed.
2360 (Pending_Predecessors_For_Elaboration,
2361 Pending_Strong_Predecessors, Pending_Weak_Predecessors,
2362 Update_Pending_Predecessors): New routines.
2363 (Update_Pending_Predecessors_Of_Components): Update the
2364 increment of pending predecessors.
2365 * bindo-graphs.ads: Update the components of type
2366 Component_Attributes. Update the components of type
2367 Library_Graph_Attributes. Update the components of type
2368 Library_Graph_Vertex_Attributes. Update the initialization of
2369 No_Component_Attributes. Update the initialization of
2370 No_Library_Graph_Vertex_Attributes.
2371 (Complementary_Vertex, Contains_Weak_Static_Successor): New
2373 (Create): Update the parameter profile and the comment on usage.
2374 (Decrement_Pending_Predecessors, Is_Dynamically_Elaborated):
2375 Update the parameter profile and the comment on usage.
2376 (Is_Elaborate_Body_Pair, Is_Weakly_Elaborable_Vertex): New
2378 (Pending_Predecessors): Removed.
2379 (Pending_Predecessors_For_Elaboration,
2380 Pending_Strong_Predecessors, Pending_Weak_Predecessors): New
2382 * bindo-writers.adb (Write_Components): Moved from the spec.
2383 (Write_Component): Output the strong and weak predecessors.
2384 (Write_Library_Graph): Output the components as part of the
2386 (Write_Library_Graph_Vertex): Output the strong and weak
2388 * bindo-writers.ads (Write_Components): Moved to the body.
2389 * debug.adb: Add and document new GNATbind switches -d_a, -d_b,
2391 * bindo-validators.adb: Minor reformattings.
2393 2019-07-08 Bob Duff <duff@adacore.com>
2395 * libgnat/g-sercom.ads, libgnat/g-sercom__linux.adb (Data_Rate):
2396 Support additional data rates.
2398 2019-07-08 Olivier Hainque <hainque@adacore.com>
2400 * gcc-interface/trans.c (Compilation_Unit_to_gnu): Don't request
2401 DECL_ARTIFICIAL_P on elab proc declarations.
2403 2019-07-08 Eric Botcazou <ebotcazou@adacore.com>
2405 * repinfo.adb (List_Record_Info): Declare Incomplete_Layout and
2406 Not_In_Extended_Main local exceptions.
2407 (List_Structural_Record_Layout): For an extension, raise the
2408 former if the parent subtype has not been built and the latter
2409 if it is not declared in the main source unit. Fall back to the
2410 flat layout if either exception has been raised.
2412 2019-07-08 Ed Schonberg <schonberg@adacore.com>
2414 * libgnat/a-strfix.adb (Delete): The RM describes the semantics
2415 of Delete as equivalent to that of Replace_String with a null
2416 argument. As a result, deleting a null string that starts past
2417 the end of its argument is a noop and must not raise
2420 2019-07-08 Javier Miranda <miranda@adacore.com>
2422 * exp_disp.adb (Register_Primitive): When registering a
2423 primitive in the secondary dispatch table, handle primitive
2424 inherited through several levels of type derivation (required to
2425 properly handle inherited 'null' primitive).
2427 2019-07-08 Bob Duff <duff@adacore.com>
2429 * doc/gnat_ugn/gnat_utility_programs.rst: Document handling of
2430 preprocessor directives in GNATpp.
2432 2019-07-08 Javier Miranda <miranda@adacore.com>
2434 * gnat1drv.adb (Post_Compilation_Validation_Checks:
2435 Validate_Compile_Time_Warning_Errors is now located in sem_prag
2436 (instead of sem_ch13).
2437 * sem_ch13.ads (Validate_Compile_Time_Warning_Error,
2438 Validate_Compile_Time_Warning_Errors): Move to sem_prag.
2440 (Compile_Time_Warnings_Errors): Move to sem_prag.
2441 (Initialize): Remove initialization of table
2442 Compile_Time_Warning_Errors.
2443 (Validate_Compile_Time_Warning_Error,
2444 Validate_Compile_Time_Warning_Errors): Move to sem_prag.
2445 * sem_prag.ads (Validate_Compile_Time_Warning_Errors): New
2447 * sem_prag.adb (Initialize): Initialize table
2448 Compile_Time_Warning_Errors.
2450 2019-07-08 Ed Schonberg <schonberg@adacore.com>
2452 * sem_ch13.adb (Analyze_Aspect_Specifications): For a
2453 pre/postcondition of a generic subprogram declaration, do not
2454 use Relocate_Node on the aspect expression to construct the
2455 corresponding attribute specification, to prevent tree anomalies
2456 when the expression is a call with named actual parameters.
2458 2019-07-08 Javier Miranda <miranda@adacore.com>
2460 * sem_attr.adb (Analyze_Attribute [Attribute_Size]): For pragmas
2461 used to report user defined compile time warning or errors
2462 handle 'Size for types with known static RM size.
2464 2019-07-08 Justin Squirek <squirek@adacore.com>
2466 * exp_imgv.adb (Build_Enumeration_Image_Tables): Default SSO for
2467 the building of image tables.
2468 (Expand_Image_Attribute): Minor cleanup.
2470 2019-07-08 Dmitriy Anisimkov <anisimko@adacore.com>
2472 * libgnat/g-socket.ads, libgnat/g-socket.adb: Improve
2474 (Get_Socket_Option, Set_Socket_Option): Remove default value for
2477 2019-07-08 Ed Schonberg <schonberg@adacore.com>
2479 * sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): For an
2480 unanalized aspect in a generic context that has not been
2481 analyzed yet, if the aspect applies to a type, place the type on
2482 the scope stack to make its components visible, before checking
2483 conformance with the version of the expression analyzed at the
2486 2019-07-05 Justin Squirek <squirek@adacore.com>
2488 * checks.adb (Apply_Accessibility_Check): Add logic to fetch the
2489 function result accessibility level if one is required within
2490 the generated check.
2491 * exp_ch6.adb (Needs_Result_Accessibility_Level): Modify
2492 controlling elsif block to handle more cases such as anonymous
2493 access results and disable checking for coextensions.
2495 2019-07-05 Ed Schonberg <schonberg@adacore.com>
2497 * sem_ch9.adb (Analyze_Accept_Statement): If this is an illegal
2498 accept statement for an enclosing entry abandon analysis to
2499 prevent scope mismatches and potential infinite loops in
2502 2019-07-05 Hristian Kirtchev <kirtchev@adacore.com>
2504 * ali.adb (For_Each_Invocation_Construct,
2505 For_Each_Invocation_Relation): New version.
2506 (Scan_ALI): Initialize field Invocation_Graph_Encoding.
2507 (Set_Invocation_Graph_Encoding): Update the setting of the
2508 invocation graph encoding.
2509 * ali.ads: Move field Invocation_Graph_Encoding from Unit_Record
2510 to ALI_Record because the encoding applies to the whole ALI,
2511 rather than one of the units (spec or body) for which the ALI
2513 (For_Each_Invocation_Construct, For_Each_Invocation_Relation):
2515 * bindo.adb: Update the section on switches. Complete the
2516 section of debugging elaboration order issues.
2517 (Find_Elaboration_Order): Prepare the routine for the switch
2518 from the old to the new elaboration order mechanism.
2519 * bindo-diagnostics.adb (Find_And_Output_Invocation_Paths):
2520 Manage a visited set used by Visit_Vertex.
2521 (Output_All_Cycles_Suggestions,
2522 Output_Dynamic_Model_Suggestions): Clarify the nature of the
2524 (Output_Elaborate_Body_Transition): Update the diagnostic to
2525 emit a better message.
2526 (Output_Forced_Suggestions, Output_Full_Encoding_Suggestions):
2527 Clarify the nature of the suggested switch.
2528 (Visit_Vertex): Update the parameter profile to add a set of
2529 invokers visited during the transition. This set prevents
2530 infinite exploration of the graph in case the invocations are
2532 * bindo-elaborators.adb: Add a use clause for
2533 Bindo.Writers.Dependency_Writers.
2534 (Elaborate_Units_Common): Output the library graph after it has
2535 been augmented with invocation edges. Output just the components
2536 instead of outputting the whole library graph again.
2537 (Elaborate_Units_Dynamic, Elaborate_Units_Static): Output the
2538 dependencies as expressed in the library graph.
2539 * bindo-units.adb (Invocation_Graph_Encoding): Update the
2540 extraction of the invocation graph encoding.
2541 * bindo-writers.adb: Add with and use clauses for Binderr and
2543 (palgc, plgc): New debug routine.
2544 (Write_Components): Moved to the spec. Add a header for the
2546 (Write_Dependencies, Write_Dependencies_Of_Vertex,
2547 Write_Dependency_Edge): New routine.
2548 (Write_Elaboration_Order): Update the logic to follow the format
2549 of Binde's order output.
2550 (Write_Library_Graph): Do not output the components every time
2551 the graph is written.
2552 (Write_Unit): Output the invocation graph encoding of the unit.
2553 Output the invocation constructs and relations for the unit
2555 * bindo-writers.ads (Write_Components): Moved from the body.
2556 (Write_Dependencies): New routine.
2557 * bindusg.adb: Prepare the routine for the switch from the old
2558 to the new elaboration order mechanism.
2559 * debug.adb: Binder switch -d_O is now not associated with any
2561 * einfo.adb (Is_Elaboration_Target): The attribute applies to
2562 packages, as specified by the comment on the attribute usage.
2563 * opt.ads: Add a global flag which controls the choice between
2564 the new and the legacy elaboration order mechanism.
2565 * sem_elab.adb: Add Package_Target to type Target_Kind.
2566 (Build_Elaborate_Body_Procedure, Build_Elaborate_Procedure,
2567 Build_Elaborate_Spec_Procedure, Check_Elaboration_Scenarios,
2568 Check_SPARK_Model_In_Effect): Use Main_Unit_Entity to obtain the
2569 entity of the main unit.
2570 (Create_Package_Rep): New routine.
2571 (Create_Target_Rep): Add processing for packages.
2572 (Declaration_Placement_Of_Node, Has_Prior_Elaboration): Use
2573 Main_Unit_Entity to obtain the entity of the main
2575 (Invocation_Graph_Recording_OK): Prepare the routine for the
2576 switch from the old to the new elaboration order mechanism.
2577 (Main_Unit_Entity): New routine.
2578 (Meet_Elaboration_Requirement,
2579 Process_Conditional_ABE_Variable_Reference): Use
2580 Main_Unit_Entity to obtain the entity of the main unit.
2581 (Process_Invocation_Instantiation): New routine.
2582 (Process_Invocation_Scenario): Add processing for
2584 * switch-b.adb (Scan_Binder_Switches): Prepare the routine for
2585 the switch from the old to the new elaboration order mechanism.
2587 2019-07-05 Joffrey Huguet <huguet@adacore.com>
2589 * libgnat/a-textio.adb: Add abstract state refinment.
2590 * libgnat/a-textio.ads: Add File_System abstract state. Add
2591 global contracts, contract cases, preconditions and
2592 postconditions to procedures and functions.
2593 (Set_Input, Set_Output, Set_Error, Standard_Input,
2594 Standard_Output, Standard_Error, Current_Input, Current_Output,
2595 Current_Error): Turn SPARK_Mode off.
2596 (Get_Line): Turn SPARK_Mode off on Get_Line functions.
2597 * libgnat/a-tideio.ads, libgnat/a-tienio.ads,
2598 libgnat/a-tifiio.ads, libgnat/a-tiflio.ads,
2599 libgnat/a-tiinio.ads, libgnat/a-timoio.ads: Add global
2600 contracts, contract cases, preconditions and postconditions to
2601 procedures and functions.
2603 2019-07-05 Arnaud Charlet <charlet@adacore.com>
2605 * doc/gnat_ugn/platform_specific_information.rst: Refresh doc on
2606 installing from the command line on Windows. Remove obsolete
2608 * gnat_ugn.texi: Regenerate.
2610 2019-07-05 Vasiliy Fofanov <fofanov@adacore.com>
2612 * libgnat/a-wichha.ads (Is_Alphanumeric): Replace comment with
2613 the correct one. Also capitalize references to False
2616 2019-07-05 Eric Botcazou <ebotcazou@adacore.com>
2618 * exp_ch4.adb (Expand_N_Indexed_Component): Do not expand actual
2619 parameters of function calls here either.
2621 2019-07-05 Hristian Kirtchev <kirtchev@adacore.com>
2623 * bindo-units.adb, checks.adb, exp_attr.adb, exp_ch3.adb,
2624 exp_ch4.adb, exp_pakd.adb, lib-writ.adb, libgnat/g-traceb.adb,
2625 libgnat/g-traceb.ads, libgnat/s-stratt.ads, sem_aux.ads,
2626 sem_util.adb: Minor reformatting.
2628 2019-07-05 Ed Schonberg <schonberg@adacore.com>
2630 * sem_ch13.adb (Build_Predicate_Functions): If a subtype that
2631 carries a static predicate aspect is frozen immediately after
2632 its declaration, ensure that the generated function body created
2633 for predicate checking is inserted after the corresponding
2634 subprogram declaration, which is created at the point the
2635 declaration is elaborated.
2637 2019-07-05 Hristian Kirtchev <kirtchev@adacore.com>
2639 * exp_ch7.adb (Cleanup_Record): Use the underlying type when
2640 checking for components with tasks.
2642 2019-07-05 Arnaud Charlet <charlet@adacore.com>
2644 * libgnarl/s-osinte__linux.ads: Link with -lrt before -lpthread.
2646 2019-07-05 Ed Schonberg <schonberg@adacore.com>
2648 * exp_pakd.adb (Expand_Bit_Packed_Element_Set): Add explicit
2649 range checks when the index type of the bit-packed array is an
2650 enumeration type with a non-standard representation,
2652 2019-07-05 Hristian Kirtchev <kirtchev@adacore.com>
2654 * sem_res.adb (Is_Control_Flow_Statement): Delay statements
2655 contain an expression, which in turn may have side effects and
2656 affect the infinite recursion. As a result, delay statements
2657 should not be treated specially.
2659 2019-07-05 Arnaud Charlet <charlet@adacore.com>
2661 * libgnarl/s-linux.ads, libgnarl/s-linux__alpha.ads,
2662 libgnarl/s-linux__android.ads, libgnarl/s-linux__hppa.ads,
2663 libgnarl/s-linux__mips.ads, libgnarl/s-linux__riscv.ads,
2664 libgnarl/s-linux__sparc.ads: Fix typos in comments.
2666 2019-07-05 Hristian Kirtchev <kirtchev@adacore.com>
2668 * sem_res.adb (Check_Infinite_Recursion): Reimplemented.
2669 (Enclosing_Declaration_Or_Statement,
2670 Invoked_With_Different_Arguments, Is_Conditional_Statement,
2671 Is_Control_Flow_Statement, Is_Immediately_Within_Body,
2672 Is_Raise_Idiom, Is_Raise_Statement, Is_Sole_Statement,
2673 Preceded_By_Control_Flow_Statement,
2674 Within_Conditional_Statement): New routines.
2676 2019-07-05 Javier Miranda <miranda@adacore.com>
2678 * exp_ch4.adb (Expand_N_Type_Conversion): Do not apply an
2679 accessibility check when the conversion is an access to
2680 class-wide interface type and it is an actual parameter.
2681 * exp_ch6.adb (Expand_Call_Helper): Add documentation on the
2682 accessibility level of an anonymous allocator defining the value
2683 of an access parameter.
2684 * sem_util.ads, sem_util.adb (Dynamic_Accessibility_Level): Add
2685 support for an anonymous allocator whose type is that of a
2686 stand-alone object of an anonymous access to object type.
2688 2019-07-05 Piotr Trojanek <trojanek@adacore.com>
2690 * einfo.ads, sem_res.adb: Typo fixes in comments.
2692 2019-07-05 Bob Duff <duff@adacore.com>
2694 * exp_ch6.adb (Is_Build_In_Place_Function): Narrow the check for
2695 Has_Foreign_Convention to the imported case only. If a
2696 build-in-place function is exported, and called from Ada code,
2697 build-in-place protocols should be used.
2699 2019-07-05 Ed Schonberg <schonberg@adacore.com>
2701 * sem_util.adb (Encloing_Subprogram): If Enclosing_Dynamic_Scope
2702 is a loop, continue climbing the scope stack to find the
2703 enclosing subprogram.
2704 (Gather_Components): Handle properly a choice in a record
2705 aggregate that is given by a subtype with a static predicate.
2707 2019-07-05 Javier Miranda <miranda@adacore.com>
2709 * debug.adb (-gnatd.K): Leave available this switch.
2710 * contracts.adb (Build_And_Analyze_Contract_Only_Subprograms):
2712 * scil_ll.ads, scil_ll.adb (Contract_Only_Body_Flag,
2713 Contract_Only_Body_Nodes, Get_Contract_Only_Body,
2714 Is_Contract_Only_Body, Set_Contract_Only_Body): Remove.
2716 2019-07-05 Pierre-Marie de Rodat <derodat@adacore.com>
2718 * libgnat/a-strunb.ads: Import documentation from the RM
2720 2019-07-05 Pierre-Marie de Rodat <derodat@adacore.com>
2722 * libgnat/a-strfix.ads: Import documentation from the RM
2724 2019-07-05 Yannick Moy <moy@adacore.com>
2726 * adabkend.adb (Scan_Back_End_Switches): Accept -Og and -Ofast
2729 2019-07-05 Hristian Kirtchev <kirtchev@adacore.com>
2731 * ali.adb: Relocate types Invocation_Construct_Record,
2732 Invocation_Relation_Record, and Invocation_Signature_Record to
2733 the body of ALI. Relocate tables Invocation_Constructs,
2734 Invocation_Relations, and Invocation_Signatures to the body of
2735 ALI. Remove type Body_Placement_Codes. Add new types
2736 Declaration_Placement_Codes, and
2737 Invocation_Graph_Encoding_Codes. Update the literals of type
2738 Invocation_Graph_Line_Codes.
2739 (Add_Invocation_Construct): Update the parameter profile. Add an
2740 invocation construct built from all attributes provided.
2741 (Add_Invocation_Relation): Update the parameter profile. Add an
2742 invocation relation built from all attributes provided.
2743 (Body_Placement): New routine.
2744 (Body_Placement_Kind_To_Code, Code_To_Body_Placement_Kind):
2746 (Code_To_Declaration_Placement_Kind,
2747 Code_To_Invocation_Graph_Encoding_Kind, Column,
2748 Declaration_Placement_Kind_To_Code, Extra,
2749 For_Each_Invocation_Construct, For_Each_Invocation_Relation,
2750 Invocation_Graph_Encoding,
2751 Invocation_Graph_Encoding_Kind_To_Code, Invoker, Kind, Line,
2752 Locations, Name): New routine.
2753 (Scan_Invocation_Construct_Line): Reimplement the scanning
2755 (Scan_Invocation_Graph_Attributes_Line): New routine.
2756 (Scan_Invocation_Graph_Line): Use a case statement to dispatch.
2757 (Scan_Invocation_Relation_Line): Reimplement the scanning
2759 (Scope): New routine.
2760 (Set_Invocation_Graph_Encoding, Signature, Spec_Placement,
2761 Target): New routine.
2762 * ali.ads: Add new type Invocation_Graph_Encoding_Kind. Add
2763 component Invocation_Graph_Encoding to type Unit_Record.
2764 Relocate various types and data structures to the body of ALI.
2765 (Add_Invocation_Construct, Add_Invocation_Relation): Update the
2767 (Body_Placement): New routine.
2768 (Body_Placement_Kind_To_Code, Code_To_Body_Placement_Kind):
2770 (Code_To_Declaration_Placement_Kind,
2771 Code_To_Invocation_Graph_Encoding_Kind, Column,
2772 Declaration_Placement_Kind_To_Code, Extra,
2773 For_Each_Invocation_Construct, For_Each_Invocation_Relation,
2774 Invocation_Graph_Encoding,
2775 Invocation_Graph_Encoding_Kind_To_Code, Invoker, Kind, Line,
2776 Locations, Name, Scope, Set_Invocation_Graph_Encoding,
2777 Signature, Spec_Placement, Target): New routine.
2778 * bindo.adb: Add with clause for Binde. Add with and use
2779 clauses for Debug. Update the documentation. Add new switches.
2780 (Find_Elaboration_Order): Dispatch to the proper elaboration
2782 * bindo-augmentors.adb:
2783 Remove with and use clauses for GNAT and GNAT.Sets. Remove
2784 membership set VS. Update the parameter profiles of most
2785 routines to use better parameter names. Update the
2786 implementation of most routine to use the new parameter names.
2787 Remove various redundant assertions.
2788 * bindo-builders.adb: Use better names for instantiated data
2789 structures. Update all references to these names. Update the
2790 parameter profiles of most routines to use better parameter
2791 names. Update the implementation of most routine to use the new
2793 (Build_Library_Graph): Update the parameter profile. Update the
2795 (Create_Vertex): Reimplemented.
2796 (Declaration_Placement_Vertex): New routine.
2797 * bindo-builders.ads (Build_Library_Graph): Update the parameter
2798 profile and comment on usage.
2799 * bindo-diagnostics.adb: Almost a new unit.
2800 * bindo-diagnostics.ads: Add a use clause for
2801 Bindo.Graphs.Invocation_Graphs. Remove package
2803 (Diagnose_Circularities): New routine.
2804 * bindo-elaborators.adb: Remove the with and use clauses for
2805 Binderr and GNAT.Sets. Remove the use clause for
2806 Bindo.Diagnostics.Cycle_Diagnostics. Remove membership set VS.
2807 Update the parameter profiles of most routines to use better
2808 parameter names. Update the implementation of most routine to
2809 use the new parameter names. (Elaborate_Units_Common): Update
2810 the parameter profile. Pass an infication to the library graph
2811 builder whether the dynamic model is in effect.
2812 (Elaborate_Units_Dynamic, Elaborate_Units_Static): Use
2813 Diagnose_Circularities to provide diagnostics.
2814 (Update_Successor): Use routine In_Same_Component to determine
2815 whether the predecessor and successor reside in different
2817 * bindo-graphs.adb: Add with and use clauses for Butil, Debug,
2818 Output, and Bindo.Writers. Remove with and use clauses for
2819 GNAT.Lists. Update the parameter profiles of most routines to
2820 use better parameter names. Update the implementation of most
2821 routine to use the new parameter names. Remove various
2822 redundant assertions. Remove doubly linked list EL. Add new
2823 type Precedence_Kind.
2824 (Add_Cycle): New routine.
2825 (Add_Vertex): Update the parameter profile. Update the creation
2826 of vertex attributes.
2827 (Add_Vertex_And_Complement, Body_Vertex, Column,
2828 Complementary_Vertex, Copy_Cycle_Path, Cycle_Kind_Of): New
2830 (Destroy_Invocation_Graph_Edge, Destroy_Library_Graph_Cycle,
2831 Destroy_Library_Graph_Edge, Extra, File_Name,
2832 Find_All_Cycles_Through_Vertex, Find_All_Cycles_With_Edge,
2833 Find_Cycles, Find_First_Lower_Precedence_Cycle,
2834 Get_LGC_Attributes, Has_Next, Hash_Library_Graph_Cycle,
2835 Hash_Library_Graph_Cycle_Attributes, Highest_Precedence_Cycle,
2836 Highest_Precedence_Edge, In_Same_Component, Insert_And_Sort,
2837 Invocation_Edge_Count, Invocation_Graph_Encoding,
2838 Is_Cycle_Initiating_Edge, Is_Cyclic_Edge,
2839 Is_Cyclic_Elaborate_All_Edge, Is_Cyclic_Elaborate_Body_Edge,
2840 Is_Cyclic_Elaborate_Edge, Is_Cyclic_Forced_Edge,
2841 Is_Cyclic_Invocation_Edge, Is_Cyclic_With_Edge,
2842 Is_Dynamically_Elaborated, Is_Elaborate_All_Edge,
2843 Is_Elaborate_Body_Edge, Is_Elaborate_Edge: New routines.
2844 (Is_Existing_Predecessor_Successor_Relation): Removed.
2845 (Is_Forced_Edge, Is_Invocation_Edge, Is_Recorded_Cycle,
2846 Is_Recorded_Edge, Is_With_Edge, Iterate_Edges_Of_Cycle, Kind,
2847 Length): New routine.
2848 (Lib_Vertex): Removed.
2849 (Line, Links_Vertices_In_Same_Component,
2850 Maximum_Invocation_Edge_Count, Next, Normalize_And_Add_Cycle,
2851 Normalize_Cycle_Path, Number_Of_Cycles, Path, Precedence,
2852 Remove_Vertex_And_Complement, Sequence_Next_Cycle): New routines.
2853 (Sequence_Next_IGE_Id): Renamed to Sequence_Next_Edge.
2854 (Sequence_Next_IGV_Id): Renamed to Sequence_Next_Vertex.
2855 (Sequence_Next_LGE_Id): Renamed to Sequence_Next_Edge.
2856 (Sequence_Next_LGV_Id): Renamed to Sequence_Next_Vertex.
2857 (Set_Is_Existing_Predecessor_Successor_Relation): Removed.
2858 (Set_Is_Recorded_Cycle, Set_Is_Recorded_Edge,
2859 Set_LGC_Attributes, Spec_Vertex, Trace_Cycle, Trace_Edge,
2860 Trace_Eol, Trace_Vertex): New routines.
2861 * bindo-graphs.ads: Add with and use clauses for Types and
2862 GNAT.Lists. Update the parameter profiles of most routines to
2863 use better parameter names. Update the implementation of most
2864 routine to use the new parameter names. Add the new
2865 instantiated data structures IGE_Lists, IGV_Sets, LGC_Lists,
2866 LGE_Lists, LGE_Sets, LGV_Sets, and RC_Sets. Add new type
2867 Library_Graph_Cycle_Id along with an empty and initial value.
2868 Remove component Lib_Vertex and add new components Body_Vertex
2869 and Spec_Vertex to type Invocation_Graph_Vertex_Attributes. Add
2870 new type Library_Graph_Cycle_Kind. Add new iterators
2871 All_Cycle_Iterator and Edges_Of_Cycle_Iterator. Add new type
2872 Library_Graph_Cycle_Attributes. Add new components
2873 Cycle_Attributes, Cycles, and Dynamically_Elaborated to type
2874 Library_Graph_Attributes.
2875 (Body_Vertex, Column, Destroy_Invocation_Graph_Edge,
2876 Destroy_Library_Graph_Cycle_Attributes,
2877 Destroy_Library_Graph_Edge, Extra, File_Name, Find_Cycles,
2878 Has_Elaborate_All_Cycle, Has_Next, Hash_Library_Graph_Cycle,
2879 Hash_Library_Graph_Cycle_Attributes, Highest_Precedence_Cycle,
2880 In_Same_Component, Invocation_Edge_Count,
2881 Invocation_Graph_Encoding, Is_Dynamically_Elaborated,
2882 Is_Elaborate_All_Edge, Is_Elaborate_Body_Edge,
2883 Is_Elaborate_Edge, Is_Forced_Edge, Is_Invocation_Edge,
2884 Is_With_Edge, Iterate_All_Cycles, Iterate_Edges_Of_Cycle, Kind):
2886 (Length, Lib_Vertex, (Line, Next, Number_Of_Cycles, Present,
2887 Same_Library_Graph_Cycle_Attributes, Spec_Vertex): New routines.
2888 * bindo-units.adb (File_Name, Invocation_Graph_Encoding): New
2890 * bindo-units.ads: Add new instantiated data structure
2892 (File_Name, Invocation_Graph_Encoding): New routine.
2893 * bindo-validators.adb: Remove with and use clauses for GNAT and
2894 GNAT.Sets. Remove membership set US. Update the parameter
2895 profiles of most routines to use better parameter names. Update
2896 the implementation of most routine to use the new parameter
2898 (Validate_Cycle, Validate_Cycle_Path, Validate_Cycles,
2899 Validate_Invocation_Graph_Vertex): Remove the validation of
2900 component Lib_Vertex. Add the validation of components
2901 Body_Vertex and Spec_Vertex.
2902 (Write_Error): New routine.
2903 * bindo-validators.ads (Validate_Cycles): New routine.
2904 * bindo-writers.adb: Update the parameter profiles of most
2905 routines to use better parameter names. Update the
2906 implementation of most routine to use the new parameter names.
2907 (Write_Cycle, Write_Cyclic_Edge, Write_Cycles): New routines.
2908 (Write_Invocation_Graph_Vertex): Remove the output of component
2909 Lib_Vertex. Add the output of components Body_Vertex and
2911 * bindo-writers.ads (Write_Cycles): New routine.
2912 * debug.adb: Use binder switches -d_C and -d_P, add
2913 documentation on their usage.
2914 * gnatbind.adb: Remove with and use clauses for Binde. Delegate
2915 the choice of elaboration mechanism to Bindo.
2916 * lib-writ.adb (Column, Extra, Invoker, Kind, Line, Locations,
2917 Name, Placement, Scope, Signature, Target): Removed.
2918 (Write_Invocation_Graph): Moved at the top level.
2919 (Write_Invocation_Graph_Attributes): New routine.
2920 (Write_Invocation_Relation, Write_Invocation_Signature): Moved
2922 * lib-writ.ads: Add a documentation section on invocation graph
2924 * sem_elab.adb (Body_Placement_Of): New routine.
2925 (Declare_Invocation_Construct): Update the call to
2926 Add_Invocation_Construct.
2927 (Declaration_Placement_Of_Node): New routine.
2928 (Get_Invocation_Attributes): Correct the retrieval of the
2929 enclosing subprogram where the postcondition procedure lives.
2930 (Placement_Of, Placement_Of_Node): Removed.
2931 (Record_Invocation_Graph): Record the encoding format used.
2932 (Record_Invocation_Graph_Encoding): New routine.
2933 (Record_Invocation_Relation): Update the call to
2934 Add_Invocation_Relation.
2935 (Spec_Placement_Of): Removed.
2936 * libgnat/g-lists.ads, libgnat/g-lists.adb (Equal): New routine.
2938 2019-07-05 Ed Schonberg <schonberg@adacore.com>
2940 * checks.adb (Apply_Predicate_Check): Except within the
2941 subprogram body that defines the formal, do not apply predicate
2942 check on a formal IN parameter: such a check is redundant and
2943 its expansion can lead to out-of-scope references when it is
2944 originates in a function call in a precondition,
2946 2019-07-05 Yannick Moy <moy@adacore.com>
2948 * sem_res.adb (Resolve_Call): Cannot inline in quantified
2950 * sem_util.adb, sem_util.ads (In_Quantified_Expression): New
2953 2019-07-05 Bob Duff <duff@adacore.com>
2955 * doc/gnat_rm/standard_and_implementation_defined_restrictions.rst:
2957 * gnat_rm.texi: Regenerate.
2959 2019-07-05 Bob Duff <duff@adacore.com>
2961 * exp_attr.adb (Input): Take the No_Stream_Optimizations
2962 restriction into account.
2964 2019-07-05 Claire Dross <dross@adacore.com>
2966 * libgnat/a-cofove.ads, libgnat/a-cofove.adb: Definite formal
2967 vectors are now always bounded so that they do not need to be
2970 2019-07-05 Dmitriy Anisimkov <anisimko@adacore.com>
2972 * libgnat/g-traceb.ads, libgnat/g-traceb.adb (Call_Chain): New
2975 2019-07-04 James Clarke <jrtc27@debian.org>
2977 * libgnarl/s-osinte__kfreebsd-gnu.ads (clockid_t): Make type
2979 (CLOCK_REALTIME): Make value public.
2981 2019-07-04 Javier Miranda <miranda@adacore.com>
2983 * exp_tss.adb (Init_Proc): Adding missing support for access to
2984 subprograms and access to protected subprograms of non-default
2987 2019-07-04 Eric Botcazou <ebotcazou@adacore.com>
2989 * gnat1drv.adb (Adjust_Global_Switches): Use proper interface to
2990 set the validity settings in CodePeer mode.
2991 * par-load.adb (Load): Remove all code dealing with validity
2993 * validsw.ads (Validity_Check_Copies): Alphabetize.
2994 * validsw.adb (Reset_Validity_Check_Options): Set all options to
2996 (Save_Validity_Check_Options): Save all options.
2998 2019-07-04 Hristian Kirtchev <kirtchev@adacore.com>
3000 * exp_ch3.adb, exp_ch4.adb, exp_ch4.ads, exp_ch5.adb,
3001 exp_ch7.adb, exp_ch9.adb, exp_ch11.adb, exp_unst.adb,
3002 rtsfind.ads, sem_attr.adb, sem_ch10.adb, sem_ch12.adb,
3003 sem_ch13.adb, sem_dim.adb, sem_disp.adb, xref_lib.adb: Minor
3006 2019-07-04 Joffrey Huguet <huguet@adacore.com>
3008 * libgnarl/a-taside.ads: Add assertion policy to ignore
3010 (Abort_Task, Is_Terminated, Is_Callable): Add preconditions.
3012 2019-07-04 Eric Botcazou <ebotcazou@adacore.com>
3014 * doc/gnat_rm/implementation_defined_pragmas.rst: Fix
3015 capitalization and parenthesis glitches.
3016 * gnat_rm.texi: Regenerate.
3018 2019-07-04 Ed Schonberg <schonberg@adacore.com>
3020 * sem_ch10.adb (Remove_Context_Clauses): Handle properly the
3021 removal of a limited_with_clause which appears in the library
3022 unit oF the main unit, when some other unit in the context has a
3023 regular with_clause on the same unit, to prevent spurious
3024 visibility errors in the subsequent analysis of pending instance
3027 2019-07-04 Hristian Kirtchev <kirtchev@adacore.com>
3029 * sem_elab.adb: Add new type Elaboration_Phase_Status along with
3030 a global to keep track of the elaboration phase status.
3031 Initialize all internal data structures to Nil for services
3032 Elaborated_Units, Internal_Representation, and Scenario_Storage.
3033 (Build_Call_Marker): Do not create a call marker when the
3034 elaboration phase is not active.
3035 (Build_Variable_Reference_Marker): Do not create a call marker
3036 when the elaboration phase is not active.
3037 (Check_Elaboration_Scenarios): Destroy all internal structures
3038 when the elaboration phase does not have to run. Do not execute
3039 when the elaboration phase is not active.
3040 (Elaboration_Phase_Active): New routine.
3041 (Finalize_All_Data_Structures): New routine.
3042 (Initialize): Initialize all internal data structures and signal
3043 that the elaboration phase has started.
3044 (Initialize_All_Data_Structures): New routine.
3045 (Initialize_Elaborated_Units): Initialize all internal data
3047 (Initialize_Internal_Representation): Initialize all internal
3049 (Initialize_Scenario_Storage): Initialize all internal data
3051 (Kill_Elaboration_Scenario): Do not execute when the elaboration
3052 phase is not active.
3053 (Set_Elaboration_Phase): New routine.
3054 (Update_Elaboration_Scenario): Do not execute when the
3055 elaboration phase is not active.
3057 2019-07-04 Gary Dismukes <dismukes@adacore.com>
3059 * sem_ch6.adb (Analyze_Subprogram_Body_Helper): The special
3060 treatment of calling Mask_Unfrozen_Types must also be done in
3061 the case of an Ignored_Ghost_Entity, because Expander_Active is
3064 2019-07-04 Yannick Moy <moy@adacore.com>
3066 * sem_prag.adb (Check_Library_Level_Entity): Update for new rule
3069 2019-07-04 Justin Squirek <squirek@adacore.com>
3071 * sem_disp.adb (Check_Controlling_Formals): Obtain the full view
3072 before type comparison.
3074 2019-07-04 Ed Schonberg <schonberg@adacore.com>
3076 * exp_ch4.ads, exp_ch4.adb (Build_Eq_Call): New visible
3077 subprogram, extracted from Expand_Composite_Equality, to handle
3078 properly the composition of equality for variant record types.
3079 * exp_ch3.adb (MAke_Eq_If): Use Build_Eq_Call for each
3080 component, to handle properly the case of a component with a
3081 user-defined equality. Revert to predefined equality if the
3082 user-defined operation is abstract, to maintain compatibility
3083 with older versions,
3085 2019-07-04 Justin Squirek <squirek@adacore.com>
3087 * exp_ch3.adb (Build_Initialization_Call): Fixup
3088 *_skip_null_excluding_check argument to handle new default.
3089 (Init_Formals): Make *_skip_null_excluding_check formal default
3091 * exp_ch4.adb (Expand_N_Allocator): Add comment to note heavy
3094 2019-07-04 Bob Duff <duff@adacore.com>
3096 * sem_ch3.adb (Access_Definition): Do not create a master unless
3097 Tasking_Allowed. Otherwise, this fails on restricted runtimes.
3099 2019-07-04 Hristian Kirtchev <kirtchev@adacore.com>
3101 * sem_util.adb (Propagate_DIC_Attributes): Do not propagate the
3102 Default_Initial_Condition attributes to an incomplete type.
3104 2019-07-04 Ed Schonberg <schonberg@adacore.com>
3106 * sem_attr.adb (Check_Array_Type): An array type attribute such
3107 as 'First can be applied to an unconstrained array tyope when
3108 the attribute reference appears within an aspect specification
3109 and the prefix is a current instance, given that the prefix of
3110 the attribute will become a formal of the subprogram that
3111 implements the aspect (typically a predicate check).
3113 2019-07-04 Piotr Trojanek <trojanek@adacore.com>
3115 * sem_util.adb (Yields_Synchronized_Object): Fix typos in
3118 2019-07-04 Yannick Moy <moy@adacore.com>
3120 * sem_util.adb (Yields_Synchronized_Object): Adapt to new SPARK
3123 2019-07-04 Yannick Moy <moy@adacore.com>
3125 * sem_spark.adb (Check_Statement): Only check permission of
3126 object in extended return when it is of a deep type.
3128 2019-07-04 Justin Squirek <squirek@adacore.com>
3130 * sem_ch12.adb (Perform_Appropriate_Analysis): Added for
3131 selecting which type of analysis based on wheither the
3132 instantiation is a generic at the library-level. In which case
3133 expansion during analysis.
3134 (Preanalyze_Actuals): Modify calls to Analyze to use the new
3137 2019-07-04 Ed Schonberg <schonberg@adacore.com>
3139 * exp_unst.adb: Handle conditional expressions.
3141 2019-07-04 Yannick Moy <moy@adacore.com>
3143 * sem_spark.adb (Check_Package_Spec, Check_Package_Body): Only
3144 analyze parts of the code marked in SPARK.
3146 2019-07-04 Hristian Kirtchev <kirtchev@adacore.com>
3148 * erroutc.adb, exp_aggr.adb, inline.adb, opt.adb, sem_ch3.adb:
3151 2019-07-04 Yannick Moy <moy@adacore.com>
3153 * sem_spark.adb (Explanation, Get_Expl): New functions to get
3154 the explanation for a permission mismatch.
3155 (Perm_Error, Perm_Mismatch, Perm_Error_Loop_Exit): Take
3156 explanation into account for issuing a more precise error
3158 (Set_Perm_Prefixes, Set_Perm_Extensions,
3159 Set_Perm_Extensions_Move): Pass suitable argument for the
3162 2019-07-04 Arnaud Charlet <charlet@adacore.com>
3164 * exp_aggr.adb (In_Place_Assign_OK): Moved to top level and add
3165 support for record aggregates.
3166 (Component_Check): Use Is_CCG_Supported_Aggregate instead of a
3167 similar local predicate.
3168 (Convert_To_Assignments): Take advantage of In_Place_Assign_OK
3169 predicate when possible.
3170 (Is_CCG_Supported_Aggregate): Return False for records with
3171 representation clauses and fix the logic for dealing with nested
3174 2019-07-04 Piotr Trojanek <trojanek@adacore.com>
3176 * opt.adb (Set_Config_Switches): Keep assertions policy as
3177 enabled when analysing internal units in GNATprove mode.
3179 2019-07-04 Arnaud Charlet <charlet@adacore.com>
3181 * exp_ch4.adb (Expand_Short_Circuit_Operator): Strip
3182 N_Variable_Reference_Marker when checking for the presence of
3185 2019-07-04 Arnaud Charlet <charlet@adacore.com>
3187 * exp_aggr.adb (Check_Component): Take into account type
3190 2019-07-04 Dmitriy Anisimkov <anisimko@adacore.com>
3192 * doc/gnat_ugn/platform_specific_information.rst: Document
3193 Windows socket timeout particularity.
3194 * gnat_ugn.texi: Regenerate.
3195 * gsocket.h: Include versionhelpers.h.
3196 * socket.c (__gnat_minus_500ms): New function.
3197 * libgnat/g-sothco.ads (Minus_500ms_Windows_Timeout): New
3199 * libgnat/g-socket.adb (Set_Socket_Option): Refactor to remove
3200 500ms from the requested timeout only on old Windows version.
3202 2019-07-04 Thomas Quinot <quinot@adacore.com>
3204 * get_scos.adb: Remove bogus, dead code.
3206 2019-07-04 Ed Schonberg <schonberg@adacore.com>
3208 * sem_dim.adb (Analyze_Dimension_Array_Aggregate): If the
3209 component is an entity name, its dimensions are those of its
3212 2019-07-03 Bob Duff <duff@adacore.com>
3214 * doc/gnat_ugn/gnat_utility_programs.rst: Document new flags in
3217 2019-07-03 Hristian Kirtchev <kirtchev@adacore.com>
3219 * binde.adb: Remove with clause for System.OS_Lib.
3220 (Force_Elab_Order): Refactor the majority of the code in Butil.
3221 Use the new forced units iterator to obtain unit names.
3222 * bindo-builders.adb: Add with and use clauses for Binderr,
3223 Butil, Opt, Output, Types, GNAT, and GNAT.Dynamic_HTables. Add
3224 a hash table which maps units to line number in the forced
3225 elaboration order file.
3226 (Add_Unit): New routine.
3227 (Build_Library_Graph): Create forced edges between pairs of
3228 units listed in the forced elaboration order file.
3229 (Create_Forced_Edge, Create_Forced_Edges, Destroy_Line_Number,
3230 Duplicate_Unit_Error, Hash_Unit, Internal_Unit_Info,
3231 Is_Duplicate_Unit, Missing_Unit_Info): New routines.
3232 * bindo-graphs.adb (Is_Internal_Unit, Is_Predefined_Unit):
3233 Refactor some of the behavior to Bindo-Units.
3234 * bindo-graphs.ads: Enable the enumeration literal for forced
3236 * bindo-units.adb, bindo-units.ads (Is_Internal_Unit,
3237 Is_Predefined_Unit): New routines.
3238 * butil.adb: Add with and use clauses for Opt, GNAT, and
3239 System.OS_Lib. Add with clause for Unchecked_Deallocation.
3240 (Has_Next, Iterate_Forced_Units, Next, Parse_Next_Unit_Name,
3241 Read_Forced_Elab_Order_File): New routines.
3242 * butil.ads: Add with and use clauses for Types. Add new
3243 iterator over the units listed in the forced elaboration order
3245 (Has_Next, Iterate_Forced_Units, Next): New routine.
3246 * namet.adb, namet.ads (Present): New routine.
3248 2019-07-03 Bob Duff <duff@adacore.com>
3250 * sem_ch3.adb (Access_Definition): The code was creating a
3251 master in the case where the designated type is a class-wide
3252 interface type. Create a master in the noninterface case as
3253 well. That is, create a master for all limited class-wide types.
3255 2019-07-03 Yannick Moy <moy@adacore.com>
3257 * erroutc.adb (Sloc_In_Range): New function to determine whether
3258 the range of a pragma Warnings covers a location, taking
3259 instantiations into account.
3261 2019-07-03 Johannes Kanig <kanig@adacore.com>
3263 * osint.ads, osint.adb (Get_First_Main_File_Name): New routine
3264 to access the first file provided on the command line.
3266 2019-07-03 Ed Schonberg <schonberg@adacore.com>
3268 * inline.adb (Process_Formals_In_Aspects): New procedure within
3269 Expand_Inlined_Call, to perform a replacement of references to
3270 formals that appear in aspect specifications within the body
3273 2019-07-03 Justin Squirek <squirek@adacore.com>
3275 * sem_ch8.adb (Analyze_Object_Renaming): Add call to search for
3276 the appropriate actual subtype of the object renaming being
3278 (Check_Constrained_Object): Minor cleanup.
3280 2019-07-03 Yannick Moy <moy@adacore.com>
3282 * sem_spark.adb (Get_Observed_Or_Borrowed_Expr): New function to
3283 return go through traversal function call.
3284 (Check_Type): Consistently use underlying type.
3285 (Get_Perm): Adapt for case of elaboration code where variables
3286 are not declared in the environment. Remove incorrect handling
3287 of borrow and observe.
3289 2019-07-03 Hristian Kirtchev <kirtchev@adacore.com>
3291 * inline.adb (Build_Return_Object_Formal): New routine.
3292 (Can_Split_Unconstrained_Function): Code clean up.
3293 (Copy_Formals,Copy_Return_Object): New routines.
3294 (Split_Unconstrained_Function): Code clean up and refactoring.
3296 2019-07-03 Gary Dismukes <dismukes@adacore.com>
3298 * bindo-augmentors.adb, bindo-augmentors.ads,
3299 bindo-builders.ads, bindo-elaborators.adb, sem_ch12.adb,
3300 sem_ch13.adb, sem_spark.adb, sinfo.ads: Minor editorial
3301 corrections and reformatting.
3303 2019-07-03 Bob Duff <duff@adacore.com>
3305 * sem_warn.adb (Check_Infinite_Loop_Warning): Avoid the warning
3306 if an Iterator_Specification is present.
3308 2019-07-03 Bob Duff <duff@adacore.com>
3310 * doc/gnat_ugn/gnat_utility_programs.rst: Document default
3313 2019-07-03 Hristian Kirtchev <kirtchev@adacore.com>
3315 * ali.adb: Add with and use clauses for GNAT,
3316 GNAT.Dynamic_HTables, and Snames. Add a map from invocation
3317 signature records to invocation signature ids. Add various
3318 encodings of invocation-related attributes. Sort and update
3319 table Known_ALI_Lines.
3320 (Add_Invocation_Construct, Add_Invocation_Relation,
3321 Body_Placement_Kind_To_Code, Code_To_Body_Placement_Kind,
3322 Code_To_Invocation_Construct_Kind, Code_To_Invocation_Kind,
3323 Code_To_Invocation_Graph_Line_Kind, Destroy, Hash): New
3325 (Initialize_ALI): Sort the initialization sequence. Add
3326 initialization for all invocation-related tables.
3327 (Invocation_Construct_Kind_To_Code,
3328 Invocation_Graph_Line_Kind_To_Code, Invocation_Kind_To_Code,
3329 Invocation_Signature_Of, Present): New routines.
3330 (Scan_ALI): Add the default values for invocation-related ids.
3331 Scan invocation graph lines.
3332 (Scan_Invocation_Graph_Line): New routine.
3333 * ali.ads: Add with clause for GNAT.Dynamic_Tables. Add types
3334 for invocation constructs, relations, and signatures. Add
3335 tables for invocation constructs, relations, and signatures.
3336 Update Unit_Record to capture invocation-related ids. Relocate
3337 table Unit_Id_Tables and subtypes Unit_Id_Table, Unit_Id_Array
3339 (Add_Invocation_Construct, Add_Invocation_Relation,
3340 Body_Placement_Kind_To_Code, Code_To_Body_Placement_Kind,
3341 Code_To_Invocation_Construct_Kind, Code_To_Invocation_Kind,
3342 Code_To_Invocation_Graph_Line_Kind,
3343 Invocation_Construct_Kind_To_Code,
3344 Invocation_Graph_Line_Kind_To_Code, Invocation_Kind_To_Code,
3345 Invocation_Signature_Of, Present): New routines.
3346 * binde.adb: Add with and use clause for Types. Add use clause
3347 for ALI.Unit_Id_Tables;
3348 * binde.ads: Relocate table Unit_Id_Tables and subtypes
3349 Unit_Id_Table, Unit_Id_Array to ALI.
3350 * bindgen.adb: Remove with and use clause for ALI.
3351 * bindgen.ads: Remove with and use clause for Binde. Add with
3352 and use clause for ALI.
3353 * bindo.adb, bindo.ads, bindo-augmentors.adb,
3354 bindo-augmentors.ads, bindo-builders.adb, bindo-builders.ads,
3355 bindo-diagnostics.adb, bindo-diagnostics.ads,
3356 bindo-elaborators.adb, bindo-elaborators.ads, bindo-graphs.adb,
3357 bindo-graphs.ads, bindo-units.adb, bindo-units.ads,
3358 bindo-validators.adb, bindo-validators.ads, bindo-writers.adb,
3359 bindo-writers.ads: New units.
3360 * debug.adb: Use and describe GNAT debug switches -gnatd_F and
3361 -gnatd_G. Add GNATbind debug switches in the ranges dA .. dZ,
3362 d.a .. d.z, d.A .. d.Z, d.1 .. d.9, d_a .. d_z, d_A .. d_Z, and
3363 d_1 .. d_9. Use and describe GNATbind debug switches -d_A,
3364 -d_I, -d_L, -d_N, -d_O, -d_T, and -d_V.
3365 * exp_util.adb, exp_util.ads (Exceptions_OK): Relocate to
3367 * gnatbind.adb: Add with and use clause for Bindo. Use the new
3368 Bindo elaboration order only when -d_N is in effect.
3370 (Column, Extra, Invoker, Kind, Line, Locations, Name, Placement,
3371 Scope, Signature, Target): New routines.
3372 (Write_ALI): Output all invocation-related data.
3373 (Write_Invocation_Graph): New routine.
3374 * lib-writ.ads: Document the invocation graph ALI line.
3375 * namet.adb, namet.ads (Present): New routines.
3376 * sem_ch8.adb (Find_Direct_Name): Capture the status of
3377 elaboration checks and warnings of an identifier.
3378 (Find_Expanded_Name): Capture the status of elaboration checks
3379 and warnings of an expanded name.
3380 * sem_ch12.adb (Analyze_Generic_Package_Declaration): Ensure
3381 that invocation graph-related data within the body of the main
3382 unit is encoded in the ALI file.
3383 (Analyze_Generic_Subprogram_Declaration): Ensure that invocation
3384 graph-related data within the body of the main unit is encoded
3386 (Analyze_Package_Instantiation): Perform minimal decoration of
3387 the instance entity.
3388 (Analyze_Subprogram_Instantiation): Perform minimal decoration
3389 of the instance entity.
3390 * sem_elab.adb: Perform heavy refactoring of all code. The unit
3391 is now split into "services" which specialize in one area of ABE
3392 checks. Add processing in order to capture invocation-graph
3393 related attributes of the main unit, and encode them in the ALI
3394 file. The Processing phase can now operate in multiple modes,
3395 all described by type Processing_Kind. Scenarios and targets
3396 are now distinct at the higher level, and carry their own
3397 representations. This eliminates the need to constantly
3398 recompute their attributes, and offers the various processors a
3399 uniform interface. The various initial states of the Processing
3400 phase are now encoded using type Processing_In_State, and
3401 xxx_State constants.
3402 * sem_elab.ads: Update the literals of type
3403 Enclosing_Level_Kind. Add Inline pragmas on several routines.
3404 * sem_prag.adb (Process_Inline): Ensure that invocation
3405 graph-related data within the body of the main unit is encoded
3407 * sem_util.adb (Enclosing_Generic_Body, Enclosing_Generic_Unit):
3409 (Exceptions_OK): Relocated from Sem_Util.
3410 (Mark_Save_Invocation_Graph_Of_Body): New routine.
3411 * sem_util.ads (Exceptions_OK): Relocated from Sem_Util.
3412 (Mark_Save_Invocation_Graph_Of_Body): New routine.
3413 * sinfo.adb (Is_Elaboration_Checks_OK_Node): Now applicable to
3414 N_Variable_Reference_Marker.
3415 (Is_Elaboration_Warnings_OK_Node): Now applicable to
3416 N_Expanded_Name, N_Identifier, N_Variable_Reference_Marker.
3417 (Is_Read): Use Flag4.
3418 (Is_SPARK_Mode_On_Node): New applicable to
3419 N_Variable_Reference_Marker.
3420 (Is_Write): Use Flag5.
3421 (Save_Invocation_Graph_Of_Body): New routine.
3422 (Set_Is_Elaboration_Checks_OK_Node): Now applicable to
3423 N_Variable_Reference_Marker.
3424 (Set_Is_Elaboration_Warnings_OK_Node): Now applicable to
3425 N_Expanded_Name, N_Identifier, N_Variable_Reference_Marker.
3426 (Set_Is_SPARK_Mode_On_Node): New applicable to
3427 N_Variable_Reference_Marker.
3428 (Set_Save_Invocation_Graph_Of_Body): New routine.
3429 * sinfo.ads: Update the documentation of attributes
3430 Is_Elaboration_Checks_OK_Node, Is_Elaboration_Warnings_OK_Node,
3431 Is_SPARK_Mode_On_Node. Update the flag usage of attributes
3432 Is_Read, Is_Write. Add attribute Save_Invocation_Graph_Of_Body
3433 and update its occurrence in nodes.
3434 (Save_Invocation_Graph_Of_Body): New routine along with pragma
3436 (Set_Save_Invocation_Graph_Of_Body): New routine along with
3438 * switch-b.adb (Scan_Binder_Switches): Refactor the scanning of
3440 (Scan_Debug_Switches): New routine.
3441 * libgnat/g-dynhta.adb, libgnat/g-dynhta.ads (Contains): New routine.
3442 * libgnat/g-graphs.adb (Associate_Vertices): Update the use of
3443 Component_Vertex_Iterator.
3444 (Contains_Component, Contains_Edge, Contains_Vertex, Has_Next):
3446 (Iterate_Component_Vertices): New routine.
3447 (Iterate_Vertices): Removed.
3448 (Next): Update the parameter profile.
3449 (Number_Of_Component_Vertices, Number_Of_Outgoing_Edges): New
3451 * libgnat/g-graphs.ads: Update the initialization of
3452 No_Component. Add type Component_Vertex_Iterator. Remove type
3454 (Has_Next): Add new versions and remove old ones.
3455 (Iterate_Component_Vertices): New routine.
3456 (Iterate_Vertices): Removed.
3457 (Next): Add new versions and remove old ones.
3458 (Number_Of_Component_Vertices, Number_Of_Outgoing_Edges): New
3460 * libgnat/g-sets.adb (Contains): Reimplemented.
3461 * gcc-interface/Make-lang.in (GNATBIND_OBJS): Add
3462 GNAT.Dynamic_HTables, GNAT.Graphs and Bindo units.
3463 * rtsfind.ads: Remove extra space.
3465 2019-07-03 Yannick Moy <moy@adacore.com>
3467 * sem_spark.adb: Add support for locally borrowing and observing
3469 (Get_Root_Object): Add parameter Through_Traversal to denote
3470 when we are interesting in getting to the traversed parameter.
3471 (Is_Prefix_Or_Almost): New function to support detection of
3472 illegal access to borrowed or observed paths.
3473 (Check_Pragma): Add analysis of assertion pragmas.
3475 2019-07-03 Ed Schonberg <schonberg@adacore.com>
3477 * sem_ch13.adb (Build_Predicate_Functions): In a generic context
3478 we do not build the bodies of predicate fuctions, but the
3479 expression in a static predicate must be elaborated to allow
3480 case coverage checking within the generic unit.
3481 (Build_Discrete_Static_Predicate): In a generic context, return
3482 without building function body once the
3483 Static_Discrete_Predicate expression for the type has been
3486 2019-07-03 Hristian Kirtchev <kirtchev@adacore.com>
3488 * bindgen.adb, inline.adb, layout.adb, sem_ch12.adb,
3489 sem_ch13.adb, sem_ch7.adb, styleg.adb: Minor reformatting.
3491 2019-07-03 Bob Duff <duff@adacore.com>
3493 * par-ch3.adb (P_Defining_Identifier): Call
3494 Check_Defining_Identifier_Casing.
3495 * style.ads, styleg.ads, styleg.adb
3496 (Check_Defining_Identifier_Casing): New procedure to check for
3497 mixed-case defining identifiers.
3498 * stylesw.ads, stylesw.adb (Style_Check_Mixed_Case_Decls): New
3499 flag for checking for mixed-case defining identifiers.
3500 * doc/gnat_ugn/building_executable_programs_with_gnat.rst:
3501 Document new feature.
3502 * gnat_ugn.texi: Regenerate.
3504 2019-07-03 Eric Botcazou <ebotcazou@adacore.com>
3506 * doc/gnat_ugn/building_executable_programs_with_gnat.rst
3507 (Warning message control): Document that -gnatw.z/Z apply to
3509 * freeze.adb (Freeze_Entity): Give -gnatw.z warning for array
3510 types as well, but not if the specified alignment is the minimum
3512 * gnat_ugn.texi: Regenerate.
3514 2019-07-03 Bob Duff <duff@adacore.com>
3516 * einfo.ads, exp_util.adb, layout.ads, sinfo.ads: Spell "laid"
3519 2019-07-03 Ed Schonberg <schonberg@adacore.com>
3521 * sem_ch13.adb (Analyze_Attribute_Definition_Clause): No error
3522 message on attribute applied to a renaming when the renamed
3523 object is an aggregate (from code reading).
3524 (Check_Aspect_At_End_Of_Declarations): In a generic context
3525 where freeze nodes are not generated, the original expression
3526 for an aspect may need to be analyzed to precent spurious
3527 conformance errors when compared with the expression that is
3528 anakyzed at the end of the current declarative list.
3530 2019-07-03 Eric Botcazou <ebotcazou@adacore.com>
3532 * layout.adb (Layout_Type): Do not set the component size of an
3533 array with a scalar component if the component type is
3536 2019-07-03 Ed Schonberg <schonberg@adacore.com>
3538 * inline.adb (Make_Loop_Labels_Unique): New procedure to modify
3539 the source code of subprograms that are inlined by the
3540 front-end, to prevent accidental duplication between loop labels
3541 in the inlined code and the code surrounding the inlined call.
3543 2019-07-03 Hristian Kirtchev <kirtchev@adacore.com>
3545 * doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Update
3546 the section on resolving elaboration circularities to eliminate
3547 certain combinations of switches which together do not produce
3548 the desired effect and confuse users.
3549 * gnat_ugn.texi: Regenerate.
3551 2019-07-03 Arnaud Charlet <charlet@adacore.com>
3553 * bindgen.adb (Gen_Main): Disable generation of reference to
3554 Ada_Main_Program_Name for CCG.
3555 * bindusg.adb (Display): Add -G to the command-line usage for
3557 * opt.ads (Generate_C_Code): Update comment.
3558 * switch-b.adb (Scan_Binder_Switches): Add handling for -G.
3560 2019-07-03 Arnaud Charlet <charlet@adacore.com>
3562 * sem_ch7.adb (Has_Referencer): Do not consider inlined
3563 subprograms when generating C code, which allows us to generate
3564 static inline subprograms.
3566 2019-07-03 Justin Squirek <squirek@adacore.com>
3568 * sem_ch6.adb (Check_Conformance): Add expression checking for
3569 constant modifiers in anonymous access types (in addition to
3570 "non-null" types) so that they are considered "matching" for
3571 subsequent conformance tests.
3573 2019-07-03 Arnaud Charlet <charlet@adacore.com>
3575 * doc/gnat_rm/standard_and_implementation_defined_restrictions.rst:
3576 Clarify wording on No_Multiple_Elaboration.
3577 * gnat_rm.texi: Regenerate.
3579 2019-07-03 Ed Schonberg <schonberg@adacore.com>
3581 * sem_ch8.adb (Find_Selected_Component): If the prefix is the
3582 current instance of a type or subtype, complete the resolution
3583 of the name by finding the component of the type denoted by the
3586 2019-07-03 Eric Botcazou <ebotcazou@adacore.com>
3588 * doc/gnat_rm/interfacing_to_other_languages.rst (Interfacing to C):
3589 Document that boolean types with convention C now map to C99 bool.
3590 * gnat_rm.texi: Regenerate.
3592 2019-07-03 Javier Miranda <miranda@adacore.com>
3594 * exp_attr.adb (Expand_Min_Max_Attribute): Code cleanup:
3595 removing code that it is now never executed in the CCG compiler
3598 2019-07-02 Iain Sandoe <iain@sandoe.co.uk>
3600 * libgnat/system-darwin-ppc.ads: Set Stack_Check_Probes True for
3603 2019-07-01 Ed Schonberg <schonberg@adacore.com>
3605 * sem_ch12.adb (Is_Defaulted): New predicate in
3606 Check_Formal_Package_Intance, to skip the conformance of checks
3607 on parameters of a formal package that are defaulted,
3609 2019-07-01 Hristian Kirtchev <kirtchev@adacore.com>
3611 * checks.adb, exp_ch9.adb, exp_unst.adb, sem_ch4.adb,
3612 sem_prag.adb, sem_spark.adb: Minor reformatting.
3614 2019-07-01 Ed Schonberg <schonberg@adacore.com>
3616 * sem_attr.adb (Analyze_Attribute, case Enum_Rep): Allow prefix
3617 of attribute to be an attribute reference of a discrete type.
3619 2019-07-01 Eric Botcazou <ebotcazou@adacore.com>
3621 * sem_ch12.adb (Analyze_Subprogram_Instantiation): Move up
3622 handling of Has_Pragma_Inline_Always and deal with
3623 Has_Pragma_No_Inline.
3625 2019-07-01 Ed Schonberg <schonberg@adacore.com>
3627 * sem_ch3.adb (Build_Derived_Record_Type): If the parent type is
3628 declared as a subtype of a private type with an inherited
3629 discriminant constraint, its generated full base appears as a
3630 record subtype, so we need to retrieve its oen base type so that
3631 the inherited constraint can be applied to it.
3633 2019-07-01 Yannick Moy <moy@adacore.com>
3635 * sem_spark.adb: Completely rework the algorithm for ownership
3636 checking, as the rules in SPARK RM have changed a lot.
3637 * sem_spark.ads: Update comments.
3639 2019-07-01 Dmitriy Anisimkov <anisimko@adacore.com>
3641 * gsocket.h (Has_Sockaddr_Len): Use the offset of sin_family offset in
3642 the sockaddr_in structure to determine the existence of length field
3643 before the sin_family.
3645 2019-07-01 Ed Schonberg <schonberg@adacore.com>
3647 * sem_prag.adb (Analyze_Pragma, case Weak_External): Pragma only
3648 applies to entities with run-time addresses, not to types.
3650 2019-07-01 Piotr Trojanek <trojanek@adacore.com>
3652 * einfo.adb, sem_ch7.adb, sem_prag.adb, sem_util.adb: Update
3653 references to the SPARK RM after the removal of Rule 7.1.4(5).
3655 2019-07-01 Piotr Trojanek <trojanek@adacore.com>
3657 * sysdep.c: Cleanup references to LynuxWorks in docs and
3660 2019-07-01 Ed Schonberg <schonberg@adacore.com>
3662 * checks.adb (Insert_Valid_Check): Do not apply validity check
3663 to variable declared within a protected object that uses the
3664 Lock_Free implementation, to prevent unwarranted constant
3665 folding, because entities within such an object msut be treated
3668 2019-07-01 Eric Botcazou <ebotcazou@adacore.com>
3670 * exp_ch9.adb (Check_Inlining): Deal with Has_Pragma_No_Inline.
3672 2019-07-01 Ed Schonberg <schonberg@adacore.com>
3674 * exp_unst.adb (Visit_Node, Check_Static_Type): Improve the
3675 handling of private and incomplete types whose full view is an
3676 access type, to detect additional uplevel references in dynamic
3677 bounds. This is relevant to N_Free_Statement among others that
3678 manipulate types whose full viww may be an access type.
3680 2019-07-01 Pat Rogers <rogers@adacore.com>
3682 * doc/gnat_rm/representation_clauses_and_pragmas.rst: Correct
3683 size indicated for R as a component of an array.
3684 * gnat_rm.texi: Regenerate.
3686 2019-07-01 Justin Squirek <squirek@adacore.com>
3688 * libgnat/s-win32.ads: Add definition for ULONG, modify
3689 OVERLAPPED type, and add appropriate pragmas.
3691 2019-07-01 Bob Duff <duff@adacore.com>
3693 * gnat1drv.adb (gnat1drv): Call Write_ALI if the main unit is
3696 2019-07-01 Yannick Moy <moy@adacore.com>
3698 * sem_ch4.adb (Operator_Check): Refine error message.
3700 2019-07-01 Piotr Trojanek <trojanek@adacore.com>
3702 * libgnat/a-calend.ads: Revert "Global => null" contracts on
3705 2019-07-01 Piotr Trojanek <trojanek@adacore.com>
3707 * exp_attr.adb, libgnat/g-graphs.ads: Fix typos in comments:
3708 componant -> component.
3710 2019-07-01 Hristian Kirtchev <kirtchev@adacore.com>
3712 * libgnat/g-graphs.adb: Use type Directed_Graph rather than
3713 Instance in various routines.
3714 * libgnat/g-graphs.ads: Change type Instance to Directed_Graph.
3715 Update various routines that mention the type.
3717 2019-07-01 Hristian Kirtchev <kirtchev@adacore.com>
3719 * libgnat/g-sets.adb: Use type Membership_Set rathern than
3720 Instance in various routines.
3721 * libgnat/g-sets.ads: Change type Instance to Membership_Set.
3722 Update various routines that mention the type.
3724 2019-07-01 Hristian Kirtchev <kirtchev@adacore.com>
3726 * libgnat/g-lists.adb: Use type Doubly_Linked_List rather than
3727 Instance in various routines.
3728 * libgnat/g-lists.ads: Change type Instance to
3729 Doubly_Linked_List. Update various routines that mention the
3732 2019-07-01 Hristian Kirtchev <kirtchev@adacore.com>
3734 * libgnat/g-dynhta.adb: Use type Dynamic_Hash_Table rather than
3735 Instance in various routines.
3736 * libgnat/g-dynhta.ads: Change type Instance to
3737 Dynamic_Hash_Table. Update various routines that mention the
3740 2019-07-01 Hristian Kirtchev <kirtchev@adacore.com>
3742 * exp_attr.adb, exp_ch7.adb, exp_unst.adb, sem_ch3.adb,
3743 sem_util.adb, uintp.adb, uintp.ads: Minor reformatting.
3745 2019-07-01 Javier Miranda <miranda@adacore.com>
3747 * exp_attr.adb (Expand_Min_Max_Attribute): Disable expansion of
3748 'Min/'Max on integer, enumeration, fixed point and floating
3749 point types since the CCG backend now provides in file
3750 standard.h routines to support it.
3752 2019-07-01 Hristian Kirtchev <kirtchev@adacore.com>
3754 * impunit.adb: Add GNAT.Graphs to list Non_Imp_File_Names_95.
3755 * Makefile.rtl, gcc-interface/Make-lang.in: Register unit
3757 * libgnat/g-dynhta.adb: Various minor cleanups (use Present
3758 rather than direct comparisons).
3759 (Delete): Reimplement to use Delete_Node.
3760 (Delete_Node): New routine.
3761 (Destroy_Bucket): Invoke the provided destructor.
3762 (Present): New routines.
3763 * libgnat/g-dynhta.ads: Add new generic formal Destroy_Value.
3764 Use better names for the components of iterators.
3765 * libgnat/g-graphs.adb, libgnat/g-graphs.ads: New unit.
3766 * libgnat/g-lists.adb: Various minor cleanups (use Present
3767 rather than direct comparisons).
3768 (Delete_Node): Invoke the provided destructor.
3769 (Present): New routine.
3770 * libgnat/g-lists.ads: Add new generic formal Destroy_Element.
3771 Use better names for the components of iterators.
3772 (Present): New routine.
3773 * libgnat/g-sets.adb, libgnat/g-sets.ads (Destroy, Preset,
3774 Reset): New routines.
3776 2019-07-01 Dmitriy Anisimkov <anisimko@adacore.com>
3778 * libgnat/g-sothco.adb (Get_Address): Fix the case when AF_INET6
3781 2019-07-01 Ed Schonberg <schonberg@adacore.com>
3783 * exp_attr.adb (Expand_Attribute_Reference, case Invalid_Value):
3784 Resolve result of call to Get_Simple_Init_Val, which may be a
3785 conversion of a literal.
3787 2019-07-01 Hristian Kirtchev <kirtchev@adacore.com>
3789 * freeze.adb (Freeze_Expression): Remove the horrible useless
3790 name hiding of N. Insert the freeze nodes generated by the
3791 expression prior to the expression when the nearest enclosing
3794 2019-07-01 Pierre-Marie de Rodat <derodat@adacore.com>
3796 * doc/gnat_ugn/building_executable_programs_with_gnat.rst: Fix
3797 formatting issues in the -gnatR section.
3798 * gnat_ugn.texi: Regenerate.
3800 2019-06-30 Iain Sandoe <iain@sandoe.co.uk>
3802 * gnatlink.adb (Link_Step): Remove duplicate -static-libgcc switches.
3803 Push -shared-libgcc explicitly, when it is the target default (unless
3804 overidden by the static flag).
3805 When the user has put an instance of shared/static-libgcc do not push
3806 a duplicate of this.
3808 2019-06-29 Eric Botcazou <ebotcazou@adacore.com>
3810 * gcc-interface/decl.c (gnat_to_gnu_entity): Beep up comment on SAVED,
3811 and tweak comment on the assertion about the scopes of Itypes. Do not
3812 skip the regular processing for Itypes that are E_Record_Subtype with
3813 a Cloned_Subtype. Get the Cloned_Subtype for every E_Record_Subtype
3814 if the type is dummy and hasn't got its own freeze node.
3815 <E_Record_Subtype>: Save again the DECL of the Cloned_Subtype, if any.
3816 <E_Access_Subtype>: Save again the DECL of the equivalent type.
3817 (Gigi_Equivalent_Type) <E_Access_Subtype>: New case.
3819 2019-06-29 Eric Botcazou <ebotcazou@adacore.com>
3821 * gcc-interface/utils.c (unchecked_convert): Tweak comment. Only skip
3822 dereferences when padding to have the same size on both sides. Do it
3823 for destination types with self-referential size too.
3825 2019-06-29 Eric Botcazou <ebotcazou@adacore.com>
3827 * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: If the
3828 type requires strict alignment, then set the RM size to the type size.
3829 Rework handling of alignment and sizes of tagged types in ASIS mode.
3830 (validate_size): Rename local variable and remove special handling for
3831 strict-alignment types.
3832 * gcc-interface/utils.c (finish_record_type): Constify local variables
3833 and use properly typed constants.
3835 2019-06-29 Eric Botcazou <ebotcazou@adacore.com>
3837 * gcc-interface/decl.c (gnat_to_gnu_field): Rework error messages for
3838 fields requiring strict alignment, add explicit test on Storage_Unit
3839 for position and size, and mention type alignment for position.
3841 2019-06-29 Eric Botcazou <ebotcazou@adacore.com>
3843 * gcc-interface/trans.c (mark_visited_r): Set TYPE_SIZES_GIMPLIFIED on
3844 the main variant of a type, if any.
3846 2019-06-29 Eric Botcazou <ebotcazou@adacore.com>
3848 * gcc-interface/decl.c (set_nonaliased_component_on_array_type): Add
3849 missing guard for the presence of TYPE_CANONICAL.
3850 (set_reverse_storage_order_on_array_type): Likewise.
3852 2019-06-29 Eric Botcazou <ebotcazou@adacore.com>
3854 * gcc-interface/gigi.h (make_packable_type): Remove default value.
3855 (value_factor_p): Tweak prototype.
3856 * gcc-interface/decl.c (gnat_to_gnu_entity): Add comment.
3857 (gnat_to_gnu_component_type): Likewise.
3858 (gnat_to_gnu_field): Likewise. Fetch the position of the field earlier
3859 and simplify the condition under which the type is packed. Declare
3860 local variable is_bitfield. Pass 1 as max_align to make_packable_type
3861 if it is set to true.
3862 (copy_and_substitute_in_layout): Pass 0 to make_packable_type.
3863 * gcc-interface/utils.c (make_packable_array_type): New function.
3864 (make_packable_type): Use it to rewrite the type of array field.
3865 (maybe_pad_type): Pass align parameter to make_packable_type.
3866 (create_field_decl): Minor tweaks.
3867 (value_factor_p): Assert that FACTOR is a power of 2 and replace the
3868 modulo computation by a masking operation.
3870 2019-06-25 Eric Botcazou <ebotcazou@adacore.com>
3872 * gcc-interface/decl.c (gnat_to_gnu_entity): Remove superfluous test
3874 * gcc-interface/gigi.h (maybe_character_type): Fix formatting.
3875 (maybe_character_value): Likewise.
3877 2019-06-24 Jan Hubicka <jh@suse.cz>
3879 * gcc-interface/decl.c (gnat_to_gnu_entity): Check that
3880 type is array or integer prior checking string flag.
3881 * gcc-interface/gigi.h (maybe_character_type): Likewise.
3882 (maybe_character_value): Likewise.
3884 2019-06-24 Martin Sebor <msebor@redhat.com>
3886 * gcc-interface/utils.c (handle_nonnull_attribute): Quote attribute
3889 2019-06-18 Arnaud Charlet <charlet@adacore.com>
3892 * sem_ch5.adb (Analyze_Loop_Statement): Avoid exception propagation
3893 during normal processing.
3895 2019-06-17 Arnaud Charlet <charlet@adacore.com>
3898 * exp_ch9.adb (Expand_N_Delay_Relative_Statement): Swap the two
3899 conditions to avoid a unnecessary exception propagation in the default
3902 2019-05-28 Eric Botcazou <ebotcazou@adacore.com>
3904 * gcc-interface/utils.c (handle_stack_protect_attribute): Move around.
3906 2019-05-28 Eric Botcazou <ebotcazou@adacore.com>
3908 * doc/gnat_rm/implementation_defined_pragmas.rst (Machine_Attribute):
3909 Document additional optional parameters.
3910 * sem_prag.adb (Analyze_Pragma) <Pragma_Machine_Attribute>: Accept
3911 more than one optional parameter.
3912 * gcc-interface/decl.c (prepend_one_attribute_pragma): Alphabetize
3913 the list of supported pragmas. Simplify the handling of parameters
3914 and add support for more than one optional parameter.
3915 * gcc-interface/utils.c (attr_cold_hot_exclusions): New constant.
3916 (gnat_internal_attribute_table): Add entry for no_icf, noipa, flatten,
3917 used, cold, hot, target and target_clones.
3918 (begin_subprog_body): Do not create the RTL for the subprogram here.
3919 (handle_noicf_attribute): New static function.
3920 (handle_noipa_attribute): Likewise.
3921 (handle_flatten_attribute): Likewise.
3922 (handle_used_attribute): Likewise.
3923 (handle_cold_attribute): Likewise.
3924 (handle_hot_attribute): Likewise.
3925 (handle_target_attribute): Likewise.
3926 (handle_target_clones_attribute): Likewise.
3928 2019-05-28 Eric Botcazou <ebotcazou@adacore.com>
3930 * gcc-interface/trans.c (lvalue_required_for_attribute_p): Return 0
3932 (Identifier_to_gnu): Use the actual subtype for a reference to a
3933 packed array in a return statement.
3934 (Attribute_to_gnu) <Attr_Size>: Do not strip VIEW_CONVERT_EXPRs from
3935 the prefix in every case.
3937 2019-05-28 Eric Botcazou <ebotcazou@adacore.com>
3939 * gcc-interface/trans.c (gnat_to_gnu): Remove superfluous tests on
3940 Backend_Overflow_Checks_On_Target and rework comments.
3942 2019-05-28 Eric Botcazou <ebotcazou@adacore.com>
3944 * gcc-interface/trans.c (walk_nesting_tree): New static function.
3945 (finalize_nrv): Use it to walk the entire nesting tree.
3947 2019-05-28 Eric Botcazou <ebotcazou@adacore.com>
3949 * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Subtype>: Remove
3950 obsolete test on Is_For_Access_Subtype.
3952 2019-05-28 Eric Botcazou <ebotcazou@adacore.com>
3954 * gcc-interface/decl.c (components_to_record): Set a name on the type
3955 created for the REP part, if any.
3956 * gcc-interface/utils.c (finish_record_type): Only take the maximum
3957 when merging sizes for a variant part at offset 0.
3958 (merge_sizes): Rename has_rep parameter into max.
3960 2019-05-28 Eric Botcazou <ebotcazou@adacore.com>
3962 * gcc-interface/utils.c (gnat_internal_attribute_table): Add support
3963 for stack_protect attribute.
3964 (handle_stack_protect_attribute): New static function.
3966 2019-05-28 Eric Botcazou <ebotcazou@adacore.com>
3968 * gcc-interface/decl.c (intrin_arglists_compatible_p): Do not return
3969 false if the internal builtin uses a variable list.
3971 2019-05-27 Eric Botcazou <ebotcazou@adacore.com>
3973 * gcc-interface/trans.c (Call_to_gnu): Do not initialize the temporary
3974 created out of addressability concerns if it's for the _Init parameter
3975 of an initialization procedure.
3977 2019-05-27 Eric Botcazou <ebotcazou@adacore.com>
3979 * gcc-interface/ada-builtin-types.def: New file.
3980 * gcc-interface/ada-builtins.def: Likewise.
3981 * gcc-interface/ada-tree.h (BUILT_IN_LIKELY): New macro.
3982 (BUILT_IN_UNLIKELY): Likewise.
3983 * gcc-interface/trans.c (independent_iterations_p): Initialize the
3984 auto-vector to 16 elements.
3985 (Call_to_gnu): Remove local variable and change the vector of actual
3986 parameters to an auto-vector. Do not convert actual parameters to
3987 the argument type for front-end built-in functions. Add support for
3988 front-end built-in functions.
3989 (build_noreturn_cond): Use internal instead of built-in function.
3990 * gcc-interface/utils.c (c_builtin_type): Include ada-builtin-types.def
3991 (install_builtin_function_types): Likewise.
3992 (install_builtin_functions): Include ada-builtins.def first.
3994 2019-05-27 Eric Botcazou <ebotcazou@adacore.com>
3996 * gcc-interface/utils.c (maybe_pad_type): Issue the warning for the
3997 specific case of component types preferably.
3999 2019-05-27 Eric Botcazou <ebotcazou@adacore.com>
4001 * gcc-interface/trans.c (Identifier_to_gnu): Minor tweaks.
4002 (gnat_to_gnu): Do not convert the result if it is a reference to an
4003 unconstrained array used as the prefix of an attribute reference that
4006 2019-05-27 Eric Botcazou <ebotcazou@adacore.com>
4008 * gcc-interface/trans.c (Gigi_Types_Compatible): New predicate.
4009 (Identifier_to_gnu): Use it to assert that the type of the identifier
4010 and that of its entity are compatible for gigi. Rename a couple of
4011 local variables and separate the processing of the result type.
4013 2019-05-27 Eric Botcazou <ebotcazou@adacore.com>
4015 * gcc-interface/trans.c (Call_to_gnu): Use the unpadded type when
4016 putting back an intermediate conversion the type of the actuals.
4018 2019-05-27 Eric Botcazou <ebotcazou@adacore.com>
4020 * gcc-interface/trans.c (gnat_to_gnu) <Shift operations>: Convert the
4021 count to the unsigned version of its base type before proceeding.
4023 2019-05-16 Martin Sebor <msebor@redhat.com>
4025 * gcc-interface/trans.c (check_inlining_for_nested_subprog): Quote
4028 2019-05-08 Arnaud Charlet <charlet@adacore.com>
4030 * standard.ads.h: New file.
4032 2019-05-07 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
4034 * gcc-interface/Makefile.in (install-gcc-specs): Use foreach.
4037 2019-04-29 Michael K. Darling <darlingm@gmail.com>
4039 * gnatvsn.ads: Bump Library_Version to 10.
4041 2019-04-24 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
4042 Bernd Edlinger <bernd.edlinger@hotmail.de>
4043 Jakub Jelinek <jakub@redhat.com>
4046 * raise-gcc.c (TARGET_ATTRIBUTE): Define.
4047 (continue_unwind, personality_body, PERSONALITY_FUNCTION): Add
4050 2019-04-07 Eric Botcazou <ebotcazou@adacore.com>
4052 * libgnat/i-cexten.ads (CFloat_128): New type.
4054 2019-03-22 Dmitriy Anisimkov <anisimko@adacore.com>
4057 * libgnat/g-socket.adb (Bind_Socket, Connect_Socket,
4058 Send_Socket): Fix the computation of structure lengths passed to
4060 (Is_IPv6_Address): Fix the number of expected colons.
4062 2019-03-11 Martin Liska <mliska@suse.cz>
4064 * gcc-interface/misc.c (gnat_post_options): Wrap option name in string
4065 format message and fix GNU coding style.
4067 2019-02-08 Eric Botcazou <ebotcazou@adacore.com>
4069 * gcc-interface/trans.c (gnat_to_gnu) <N_Aggregate>: Minor tweak.
4070 * gcc-interface/utils.c (convert): Do not pad when doing an unchecked
4071 conversion here. Use TREE_CONSTANT throughout the function.
4072 (unchecked_convert): Also pad if the source is a CONSTRUCTOR and the
4073 destination is a more aligned array type or a larger aggregate type,
4074 but not between original and packable versions of a type.
4076 2019-02-08 Eric Botcazou <ebotcazou@adacore.com>
4078 * gcc-interface/utils.c (max_size) <tcc_unary>: Be prepared for an
4079 operand with VOID_TYPE.
4081 2019-02-08 Eric Botcazou <ebotcazou@adacore.com>
4083 * gcc-interface/trans.c (elaborate_all_entities): Do not elaborate the
4084 entities of a package renaming another one.
4086 2019-02-08 Eric Botcazou <ebotcazou@adacore.com>
4088 * gcc-interface/trans.c (Regular_Loop_to_gnu): Replace tests on
4089 individual flag_unswitch_loops and flag_tree_loop_vectorize switches
4090 with test on global optimize switch.
4091 (Raise_Error_to_gnu): Likewise.
4093 2019-02-07 Eric Botcazou <ebotcazou@adacore.com>
4095 * libgnarl/s-linux__sparc.ads (ETIMEDOUT): Set to correct value.
4097 2019-02-06 Arnaud Charlet <charlet@adacore.com>
4099 * libgnarl/s-linux__x32.ads: Resync list of signals with s-linux.ads
4101 2019-01-27 Eric Botcazou <ebotcazou@adacore.com>
4103 * repinfo.adb (List_Component_Layout): Remove superfluous space for
4105 * gcc-interface/ada-tree.h (TYPE_IS_EXTRA_SUBTYPE_P): New macro.
4106 * gcc-interface/gigi.h (create_extra_subtype): Declare.
4107 * gcc-interface/decl.c (TYPE_ARRAY_SIZE_LIMIT): Likewise.
4108 (update_n_elem): New function.
4109 (gnat_to_gnu_entity): Use create_extra_subtype to create extra subtypes
4110 instead of doing it manually.
4111 <E_Array_Type>: Use update_n_elem to compute the maximum size. Use the
4112 index type instead of base type for the bounds. Set TYPE_ARRAY_MAX_SIZE
4113 of the array to the maximum size.
4114 <E_Array_Subtype>: Create an extra subtype using the index type of the
4115 base array type for self-referential bounds. Use update_n_elem to
4116 compute the maximum size. Set TYPE_ARRAY_MAX_SIZE of the array to the
4118 (gnat_to_gnu_field): Clear DECL_NONADDRESSABLE_P on discriminants.
4119 * gcc-interface/misc.c (gnat_get_alias_set): Return the alias set of
4120 the base type for an extra subtype.
4121 (gnat_type_max_size): Remove obsolete code.
4122 * gcc-interface/trans.c (Attribute_to_gnu): Minor tweak.
4123 (can_be_lower_p): Deal with pathological types.
4124 * gcc-interface/utils.c (create_extra_subtype): New function.
4125 (create_field_decl): Minor tweak.
4126 (max_size) <tcc_reference>: Compute a better value by using the extra
4127 subtypes on the self-referential bounds.
4128 <tcc_binary>: Rewrite. Deal with "negative value" in unsigned types.
4129 <tcc_expression>: Likewise.
4130 * gcc-interface/utils2.c (compare_arrays): Retrieve the original bounds
4131 of the arrays upfront. Swap only if the second length is not constant.
4132 Use comparisons on the original bounds consistently for the null tests.
4133 (build_binary_op): Use TYPE_IS_EXTRA_SUBTYPE_P macro.
4134 (build_allocator): Minor tweak.
4136 2019-01-27 Eric Botcazou <ebotcazou@adacore.com>
4138 * gcc-interface/decl.c (array_type_has_nonaliased_component): Return
4139 the same value for every dimension of a multidimensional array type.
4141 2019-01-26 Eric Botcazou <ebotcazou@adacore.com>
4143 * gcc-interface/trans.c (Regular_Loop_to_gnu): Use the SLOC of the
4144 iteration scheme, if present, throughout the translation.
4146 2019-01-26 Eric Botcazou <ebotcazou@adacore.com>
4148 * gcc-interface/trans.c (gnat_to_gnu) <N_Assignment_Statement>: Use
4149 DECL_SIZE_UNIT instead of TYPE_SIZE_UNIT for the size to be assigned
4150 by a call to memset if the LHS is a DECL.
4152 2019-01-26 Eric Botcazou <ebotcazou@adacore.com>
4154 * gcc-interface/trans.c (struct loop_info_d): Remove artificial field.
4155 (Loop_Statement_to_gnu): Do not set it.
4157 2019-01-26 Eric Botcazou <ebotcazou@adacore.com>
4159 * gcc-interface/trans.c (Iterate_Acc_Clause_Arg): Fix formatting.
4160 (Acc_gnat_to_gnu): Likewise.
4161 (Acc_Data_to_gnu): Likewise.
4162 (Acc_Var_to_gnu): Likewise.
4163 (Acc_Reduc_to_gnu): Likewise.
4164 (Acc_Size_List_to_gnu): Likewise.
4165 (Pragma_to_gnu) <Pragma_Acc_Loop>: Likewise.
4166 <Pragma_Acc_Data>): Likewise.
4167 (find_loop_for): Remove default value for parameters.
4168 * gcc-interface/trans.c (gnat_to_gnu) <N_Op_And>: Merge into...
4169 <N_Op_Eq>): ...this.
4171 2019-01-26 Eric Botcazou <ebotcazou@adacore.com>
4173 * gcc-interface/decl.c (annotate_value) <INTEGER_CST>: Use test on
4174 the sign bit instead of on the sign of the value.
4175 <PLUS_EXPR>: Turn addition of negative constant into subtraction.
4176 <MULT_EXPR>: Add test for degenerate case.
4177 <BIT_AND_EXPR>: Simplify.
4179 2019-01-18 Sebastian Huber <sebastian.huber@embedded-brains.de>
4181 * s-oscons-tmplt.c (AF_INET6): Do not undefine for RTEMS.
4183 2019-01-09 Sandra Loosemore <sandra@codesourcery.com>
4186 * exp_ch11.adb: Change "can not" to "cannot".
4187 * sem_ch4.adb: Likewise.
4189 2019-01-09 Sandra Loosemore <sandra@codesourcery.com>
4192 * exp_ch9.adb: Mechanically replace "can not" with "cannot".
4193 * libgnat/s-regpat.ads: Likewise.
4194 * par-ch4.adb: Likewise.
4195 * set_targ.adb: Likewise.
4196 * types.ads: Likewise.
4198 2019-01-08 Justin Squirek <squirek@adacore.com>
4201 2018-07-31 Justin Squirek <squirek@adacore.com>
4203 * lib-writ.adb (Write_With_Lines): Modfiy the generation
4204 of dependencies within ali files so that source unit
4205 bodies are properly listed even if said bodies are
4206 missing. Perform legacy behavior in GNATprove mode.
4207 * lib-writ.ads: Modify documentation to reflect current
4211 2018-09-26 Justin Squirek <squirek@adacore.com>
4213 * lib-writ.adb, lib-writ.ads (Write_With_Lines): Add
4214 documentation and an extra conditional check for RCI
4215 units so that generated ali files will list the spec
4216 only instead of a body when a body is not found.
4218 2019-01-04 Eric Botcazou <ebotcazou@adacore.com>
4220 * gnatvsn.ads: Bump copyright year.
4222 2019-01-01 Jakub Jelinek <jakub@redhat.com>
4224 Update copyright years.
4226 * gnat_ugn.texi: Bump @copying's copyright year.
4227 * gnat_rm.texi: Likewise.
4229 Copyright (C) 2019 Free Software Foundation, Inc.
4231 Copying and distribution of this file, with or without modification,
4232 are permitted in any medium without royalty provided the copyright
4233 notice and this notice are preserved.