1 2019-08-14 Yannick Moy <moy@adacore.com>
3 * sem_disp.adb (Check_Dispatching_Operation): Update assertion
4 for the separate declarations created in GNATprove mode.
5 * sem_disp.ads (Is_Overriding_Subprogram): Update comment.
6 * sem_elab.adb (SPARK_Processor): Fix test for checking of
9 2019-08-14 Eric Botcazou <ebotcazou@adacore.com>
11 * inline.adb (Add_Inlined_Body): Tweak comments.
12 (List_Inlining_Info): Also list information about non-main
15 2019-08-14 Gary Dismukes <dismukes@adacore.com>
17 * sem_ch4.adb (Analyze_Selected_Component): In the case where
18 the prefix is of a concurrent type, and the selected entity
19 matching the selector is the first private declaration of the
20 type (such as the first local variable in a task's body), set
23 2019-08-14 Piotr Trojanek <trojanek@adacore.com>
25 * einfo.adb (Is_Generic_Actual_Subprogram): Replace repeated
26 calls to Ekind with Ekind_In.
28 2019-08-13 Richard Sandiford <richard.sandiford@arm.com>
31 * gcc-interface/trans.c (gigi): Call set_decl_buillt_in_function.
32 (Call_to_gnu): Use DECL_FE_FUNCTION_CODE instead of DECL_FUNCTION_CODE.
34 2019-08-13 Eric Botcazou <ebotcazou@adacore.com>
36 * ali.ads (Linker_Option_Record): Remove Original_Pos component.
37 * ali.adb (Scan_ALI): Do not set it.
39 2019-08-13 Eric Botcazou <ebotcazou@adacore.com>
41 * sem_ch3.adb (Build_Derived_Concurrent_Type): Add a couple of
42 local variables and use them. When the derived type fully
43 constrains the parent type, rewrite it as a subtype of an
44 implicit (unconstrained) derived type instead of the other way
46 (Copy_And_Build): Deal with concurrent types and use predicates.
47 (Build_Derived_Private_Type): Build the full derivation if
48 needed for concurrent types too.
49 (Build_Derived_Record_Type): Add marker comment.
50 (Complete_Private_Subtype): Use predicates.
52 2019-08-13 Ed Schonberg <schonberg@adacore.com>
54 * sem_ch3.adb (Check_Generic_Ancestor): New subprogram,
55 aubsidiary to Build_Derived_Record_Type. to enforce the rule
56 that a type extension declared in a generic body cznnot have an
57 ancestor that is a generic formal (RM 3.9.1 (4/2)). The rule
58 applies to all ancestors of the type, including interface
61 2019-08-13 Eric Botcazou <ebotcazou@adacore.com>
63 * sem_ch3.adb (Build_Underlying_Full_View): Delete.
64 (Complete_Private_Subtype): Do not set the full view on the
65 private subtype here. If the full base is itself derived from
66 private, do not re-derive the parent type but instead constrain
67 an existing underlying full view.
68 (Prepare_Private_Subtype_Completion): Do not get to the
69 underlying full view, if any. Set the full view on the private
71 (Process_Full_View): Likewise.
72 * sem_ch12.adb (Check_Generic_Actuals): Also set
73 Is_Generic_Actual_Type on the full view if the type of the
75 (Restore_Private_Views): Also reset Is_Generic_Actual_Type on
76 the full view if the type of the actual is private.
77 * sem_eval.adb (Subtypes_Statically_Match): Remove bypass for
80 2019-08-13 Javier Miranda <miranda@adacore.com>
82 * sem_res.adb (Resolve_Selected_Component): When the type of the
83 component is an access to a class-wide type and the type of the
84 context is an access to a tagged type the relevant type is that
85 of the component (since in such case we may need to generate
86 implicit type conversions or dispatching calls).
88 2019-08-13 Ed Schonberg <schonberg@adacore.com>
90 * exp_aggr.adb (Aggr_Assignment_OK_For_Backend): Preanalyze
91 expression, rather do a full analysis, to prevent unwanted
92 removal of side effects which mask the intent of the expression.
94 2019-08-13 Eric Botcazou <ebotcazou@adacore.com>
96 * impunit.adb (Non_Imp_File_Names_95): Add
97 GNAT.Branch_Prediction.
99 2019-08-13 Eric Botcazou <ebotcazou@adacore.com>
101 * exp_ch6.adb: Remove with and use clauses for Sem_Ch12.
102 (Expand_Call_Helper): Swap the back-end inlining case and the
103 special front-end expansion case. In back-end inlining mode, do
104 not invoke Add_Inlined_Body unless the call may be inlined.
105 * inline.ads (Add_Pending_Instantiation): New function moved
107 * inline.adb (Add_Inlined_Body): Simplify comment. Turn test on
108 the enclosing unit into assertion.
109 (Add_Pending_Instantiation): New function moved from...
110 * sem_ch12.ads (Add_Pending_Instantiation): ...here.
111 * sem_ch12.adb (Add_Pending_Instantiation): ...here.
113 2019-08-13 Eric Botcazou <ebotcazou@adacore.com>
115 * sem.adb (Do_Analyze): Recompute Style_Check_Max_Line_Length
116 after restoring Style_Max_Line_Length.
118 2019-08-13 Arnaud Charlet <charlet@adacore.com>
120 * sem_ch13.adb (Check_Iterator_Functions): Protect against
123 2019-08-13 Ed Schonberg <schonberg@adacore.com>
125 * sem_ch8.adb (Analyze_Subprogram_Renaming): Do no suppress mode
126 conformance checks on child unit instance that is a compilation
129 2019-08-13 Gary Dismukes <dismukes@adacore.com>
131 * exp_dbug.adb (Fully_Qualify_Name): Add full name qualification
132 for the E_Exception case.
134 2019-08-13 Gary Dismukes <dismukes@adacore.com>
136 * exp_aggr.adb (Aggr_Size_OK): Compute the aggregate size using
137 universal arithmetic, to avoid situations where the size
138 computation overflows.
140 2019-08-13 Justin Squirek <squirek@adacore.com>
142 * repinfo.adb (List_Scalar_Storage_Order): Modify conditionals
143 for displaying ordering to always be triggered when -gnatR4 is
146 2019-08-13 Justin Squirek <squirek@adacore.com>
148 * aspects.adb, aspects.ads: Register new aspect.
149 * par-prag.adb (Prag): Register new pragma
150 * sem_ch13.adb (Analyze_Aspect_Specifications): Add processing
151 for new aspect similar to Aspect_Max_Entry_Queue_Length.
152 * sem_prag.adb, sem_prag.ads (Analyze_Pragma): Register new
153 pragma and set it to use the same processing as
154 Pragma_Max_Queue_Length.
155 * snames.ads-tmpl: Move definition of
156 Name_Max_Entry_Queue_Length so that it can be processed as a
157 pragma in addition to a restriction and add an entry for the
160 2019-08-13 Yannick Moy <moy@adacore.com>
162 * sem_ch4.adb (Analyze_Allocator): Do not insert subtype
163 declaration for allocator inside a spec expression.
165 2019-08-13 Yannick Moy <moy@adacore.com>
167 * sem_res.adb (Resolve_Call): Do not inline calls inside record
170 2019-08-13 Eric Botcazou <ebotcazou@adacore.com>
172 * sem_ch4.adb (Analyze_One_Call): Remove bypass for type
173 mismatch in nested instantiations.
174 * sem_ch8.adb (Find_Nearer_Entity): New function.
175 (Find_Renamed_Entity): Use it to disambiguate the candidates for
176 the renaming generated for an instantiation when it is
179 2019-08-13 Eric Botcazou <ebotcazou@adacore.com>
181 * gnat1drv.adb (Adjust_Global_Switches): Do not set
182 Back_End_Inlining in ASIS mode either.
184 2019-08-13 Olivier Hainque <hainque@adacore.com>
186 * libgnat/s-win32.ads: Define size_t and fix the MapViewOfFile
187 binding to use it instead of DWORD for the dwNumberOfBytesToMap
189 * libgnat/g-sercom__mingw.adb (Read): State which definition of
190 size_t to fetch in call to Last_Index.
192 2019-08-13 Arnaud Charlet <charlet@adacore.com>
194 * gcc-interface/Make-lang.in: Remove unused TRACE variable. Pass
195 LN_S to relevant gnatlib targets.
196 * gcc-interface/Makefile.in: Systematically pass LN_S to
197 relevant gnatlib targets.
199 2019-08-13 Yannick Moy <moy@adacore.com>
201 * sem_dim.adb (Analyze_Dimension,
202 Analyze_Dimension_Array_Aggregate, Analyze_Dimension_Call,
203 Analyze_Dimension_Extension_Or_Record_Aggregate): Return
204 immediately when inside an inlined body.
205 * sem_res.adb (Resolve_Call): Remove special checking now done
206 inside Analyze_Dimension_Call.
208 2019-08-13 Justin Squirek <squirek@adacore.com>
210 * exp_ch4.adb (Expand_N_Allocator): Add condition to detect
211 library-level object declarations
213 2019-08-13 Eric Botcazou <ebotcazou@adacore.com>
215 * doc/gnat_ugn/building_executable_programs_with_gnat.rst
216 (-gnateT): Document Double_Float_Alignment parameter and fix
217 description of Double_Scalar_Alignment parameter.
218 * gnat_ugn.texi: Regenerate.
220 2019-08-13 Eric Botcazou <ebotcazou@adacore.com>
222 * exp_ch6.adb (Expand_Call_Helper): If back-end inlining is
223 enabled, also instantiate the body of a generic unit containing
224 a subprogram subject to aspect/pragma Inline_Always at
225 optimization level zero.
226 * sem_ch12.adb (Might_Inline_Subp): Minor tweak.
227 (Analyze_Package_Instantiation): Do not instantiate the package
228 body because of inlining considerations if the instantiation is
229 done in a generic unit. Move around similar condition involving
230 the main unit. Add test on Back_End_Inlining to processing for
233 2019-08-13 Javier Miranda <miranda@adacore.com>
235 * exp_disp.adb (Make_Secondary_DT): Handle record type
236 derivations that have interface components located at fixed
237 positions and interface components located at variable offset.
238 The offset of components located at fixed positions is computed
239 using the dummy object (similar to the case where all the
240 interface components are located at fixed positions).
241 (Make_DT): Build the dummy object for all tagged types that
242 implement interface types (that is, build it also for types with
243 variable size components), and use the dummy object to compute
244 the offset of all tag components located at fixed positions when
245 initializing the Interface_Table object.
247 2019-08-13 Justin Squirek <squirek@adacore.com>
249 * gnatcmd.adb (GNATCmd): Add constant for new compiler switch
250 --help-ada, and include usage subprogram. Add line to usage help
251 explaining the new flag.
252 (GNATCmd_Usage): Rename from locally declared Usage so as not to
253 confuse with the newly imported version. Add new argument case
254 for --help-ada and add bug report email to implicit display of
255 help without the --help flag so as to unify output between the
258 2019-08-13 Dmitriy Anisimkov <anisimko@adacore.com>
260 * libgnat/g-comlin.adb (Getopt): Quote unrecognized switch in
261 Invalid_Switch exception message.
263 2019-08-13 Yannick Moy <moy@adacore.com>
265 * sem_util.adb (Traverse_More_Func): Take into account
266 Loop_Actions inside N_Iterated_Component_Association nodes.
267 * sinfo.ads: Document correctly Loop_Actions as a field of nodes
268 of kind N_Iterated_Component_Association.
270 2019-08-13 Claire Dross <dross@adacore.com>
272 * libgnat/a-cfinve.adb, libgnat/a-cofove.adb (Find_Index,
273 Reverse_Find_Index): Use bigger type to avoid range check
274 failure at the last loop iteration.
276 2019-08-12 Dmitriy Anisimkov <anisimko@adacore.com>
278 * libgnat/g-socket.adb (Is_IPv6_Address): Check that no less
279 then 2 colons in IPv6 numeric address.
281 2019-08-12 Dmitriy Anisimkov <anisimko@adacore.com>
283 * libgnat/g-comlin.ads, libgnat/g-comlin.adb (Getopt): Add
284 parameter Quiet. Need to do not output error messages to
285 console. Invalid_Switch exception generation surrounded by an
288 2019-08-12 Ed Schonberg <schonberg@adacore.com>
290 * exp_ch6.adb (Expand_Actuals. Add_Call_By_Copy_Code): Add code
291 to generate proper checks when an actual for an in-out or out
292 parameter has a non-null access type. No constraints are
293 applied to an inbound access parameter, but on exit a not-null
294 check must be performed if the type of the actual requires it.
296 2019-08-12 Ed Schonberg <schonberg@adacore.com>
298 * sem_util.adb (Is_Expaned_Priority_Attribute): Check whether
299 call comes from a rewritten attribute before comparing name with
300 Get_Ceiling run-time subprogram.
302 2019-08-12 Eric Botcazou <ebotcazou@adacore.com>
304 * exp_util.ads (Component_May_Be_Bit_Aligned): Small comment
306 (Possible_Bit_Aligned_Component): Likewise.
307 (Type_May_Have_Bit_Aligned_Components): Likewise.
308 * exp_util.adb (Component_May_Be_Bit_Aligned): Likewise.
309 (Possible_Bit_Aligned_Component): Likewise.
310 (Type_May_Have_Bit_Aligned_Components): Likewise.
312 2019-08-12 Eric Botcazou <ebotcazou@adacore.com>
314 * exp_ch4.adb (Expand_N_Op_Eq): Expand the array equality if
315 either operand is a possibly unaligned slice.
316 * exp_ch6.adb (Expand_Simple_Function_Return): Do not generate a
317 copy for a possibly unaligned object if it is represented as a
319 * exp_util.adb (Is_Possibly_Unaligned_Slice): Do not always
320 return false if the target doesn't have strict alignment.
322 2019-08-12 Bob Duff <duff@adacore.com>
324 * sem_ch12.adb (Instantiate_Package_Body): Remove suppression of
325 checks in instances of internal units.
326 * sem_ch6.adb (Analyze_Function_Return): Do not generate a
327 constraint check on an extended_return_statement if the subtype
328 of the return object in the statement is identical to the return
329 subtype of the function.
331 2019-08-12 Bob Duff <duff@adacore.com>
333 * libgnat/a-cbmutr.adb (Is_Reachable): Declare Idx to be of the
334 base subtype. Clearly it makes no sense to loop "while Idx >=
335 0", if Idx is of a nonnegative subtype.
337 2019-08-12 Bob Duff <duff@adacore.com>
339 * libgnat/a-tifiio.adb (Put_Scaled): Prevent AA from being
340 negative, since Field is range 0 .. something.
342 2019-08-12 Bob Duff <duff@adacore.com>
344 * doc/gnat_ugn/gnat_utility_programs.rst (gnatmetric, gnatpp,
345 gnatstub): Remove documentation for Ada language version
346 switches, and note that they are no longer needed.
348 2019-08-12 Gary Dismukes <dismukes@adacore.com>
350 * sem_ch5.adb (Prepare_Param_Spec_Loop): Set the parents of the
351 copied low and high bounds in the case where the loop range is
352 given by a discrete_subtype_indication, to prevent hanging (or
353 Assert_Failure) in Insert_Actions.
355 2019-08-12 Ed Schonberg <schonberg@adacore.com>
357 * sem_ch6.adb (heck_Untagged_Equality): Verify that user-defined
358 equality has the same profile as the predefined equality before
359 applying legality rule in RM 4.5.2 (9.8).
361 2019-08-12 Bob Duff <duff@adacore.com>
363 * libgnat/a-except.ads: Update obsolete comment, still making
364 clear that this is a variant. Add explicit default for Id
365 component of Exception_Occurrence, because that value is used.
366 Define Null_Occurrence less redundantly.
367 * libgnat/a-einuoc.adb: Minor simplification of code.
369 2019-08-12 Justin Squirek <squirek@adacore.com>
371 * libgnat/a-dhfina.adb, libgnat/a-dhfina.ads (Is_Simple_Name,
372 Is_Root_Directory, Is_Parent_Directory,
373 Is_Current_Directory_Name, Is_Relative_Name, Initial_Directory,
374 Relative_Name, Compose): Add implementation and documentation.
375 * libgnat/a-direct.adb (Containing_Directory): Modify routine to
376 use routines from Ada.Directories.Hierarchical_File_Names and
377 remove incorrect special case for parent directories.
378 (Fetch_Next_Entry): Add check for current directory and parent
379 directory and ignore them under certain circumstances.
380 (Simple_Nmae): Add check for null result from
381 Simple_Name_Internal and raise Name_Error.
382 (Simple_Name_Internal): Add explicit check for root directories,
383 sanitize trailing directory separators, and modify behavior so
384 that current and parent directories are considered valid
386 * Makefile.rtl: Add entry to GNATRTL_NONTASKING_OBJS.
388 2019-08-12 Eric Botcazou <ebotcazou@adacore.com>
390 * freeze.adb (Freeze_Entity): Give the same error for an
391 Object_Size clause on a variable-sized type as for a Size
394 2019-08-12 Gary Dismukes <dismukes@adacore.com>
396 * sem_prag.adb (Analyze_Pragma, Pragma_Suppress_Initialization):
397 For private types, set the Suppress_Initialization flag on the
398 Full_View of the entity rather than the entity's base type.
400 2019-08-12 Yannick Moy <moy@adacore.com>
402 * aspects.adb, aspects.ads (Aspect_No_Caching): New aspect.
403 * contracts.adb, contracts.ads (Add_Contract_Item): Add handling
405 (Analyze_Object_Contract): Add handling of No_Caching.
406 * einfo.adb, einfo.ads
407 (Get_Pragma): Add handling of No_Caching.
408 * doc/gnat_rm/implementation_defined_aspects.rst,
409 doc/gnat_rm/implementation_defined_pragmas.rst: Document new
411 * gnat_rm.texi: Regenerate.
412 * par-prag.adb (Prag): New pragma Pragma_No_Caching.
413 * sem_ch13.adb (Analyze_Aspect_Specifications,
414 Check_Aspect_At_Freeze_Point): Add handling of No_Caching.
415 * sem_prag.adb (Analyze_Pragma): Deal with pragma No_Caching.
416 * sem_prag.ads (Analyze_External_Property_In_Decl_Part): Now
417 applies to No_Caching.
418 * sem_util.adb, sem_util.ads (Is_Effectively_Volatile): Add
419 handling of No_Caching.
420 (No_Caching_Enabled): New query function.
421 * snames.ads-tmpl: New names for pragma.
423 2019-08-12 Yannick Moy <moy@adacore.com>
425 * sem_util.adb, sem_util.ads (Traverse_More_Func,
426 Traverse_More_Proc): Add formal parameter for Itypes traversal.
428 2019-08-12 Yannick Moy <moy@adacore.com>
430 * exp_attr.adb, exp_attr.ads (Expand_Size_Attribute): New
431 procedure to share part of the attribute expansion with
433 (Expand_N_Attribute_Reference): Extract part of the
434 Size/Object_Size expansion in the new procedure
435 Expand_Size_Attribute.
436 * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Expand
437 Size/Object_Size attributes using the new procedure
438 Expand_Size_Attribute.
440 2019-08-12 Yannick Moy <moy@adacore.com>
442 * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Only
443 expand Enum_Rep attribute when its parameter is a literal.
445 2019-08-12 Justin Squirek <squirek@adacore.com>
447 * sem_eval.adb (Check_Non_Static_Context): Add a condition to
448 determine if a range violation constitues a warning or an error.
449 (Out_Of_Range): Add a condition to determine if a range
450 violation constitues a warning or an error.
452 2019-08-12 Eric Botcazou <ebotcazou@adacore.com>
454 * exp_ch4.adb (Real_Range_Check): Do not rewrite the conversion
455 node but its expression instead, after having fetched its
456 current value. Clear the Do_Range_Check flag on entry. Return
457 early for a rewritten float-to-float conversion. Remove
458 redundant local variable. Suppress all checks when inserting
459 the temporary and do not reanalyze the node.
461 2019-08-12 Eric Botcazou <ebotcazou@adacore.com>
463 * sprint.ads: Minor comment tweak.
465 2019-08-12 Eric Botcazou <ebotcazou@adacore.com>
467 * checks.adb (Insert_Valid_Check): Do not retrieve the
468 Do_Range_Check flag from the Original_Node but from the
469 Validated_Object. Remove useless bypass for floating-point
472 2019-08-12 Yannick Moy <moy@adacore.com>
474 * sem_util.adb, sem_util.ads (Traverse_More_Func,
475 Traverse_More_Proc): New traversal subprograms.
477 2019-08-12 Jerome Lambourg <lambourg@adacore.com>
479 * libgnarl/s-taprop__vxworks.adb (Abort_Handler): Only call
480 s-tpopsp.Self when actually needed.
482 2019-08-12 Eric Botcazou <ebotcazou@adacore.com>
484 * exp_ch4.adb (Discrete_Range_Check): Return if checks are
487 2019-08-12 Eric Botcazou <ebotcazou@adacore.com>
489 * sem_res.adb: Add with & use clause for Sem_Mech and
491 (Resolve_Actuals): Do not apply a scalar range check for the
492 source of a conversion whose result is passed by reference to a
495 2019-08-12 Eric Botcazou <ebotcazou@adacore.com>
497 * checks.adb (Insert_Valid_Check): Reset the Do_Range_Check flag
498 on the validated object.
499 * exp_ch6.adb (Add_Call_By_Copy_Code): Reset the Do_Range_Check
500 flag on the actual here, as well as on the Expression if the
501 actual is a N_Type_Conversion node.
502 (Add_Validation_Call_By_Copy_Code): Generate the incoming range
503 check if needed and reset the Do_Range_Check flag on the
504 Expression if the actual is a N_Type_Conversion node.
505 (Expand_Actuals): Do not reset the Do_Range_Check flag here.
506 Generate the incoming range check for In parameters here instead
508 (Expand_Call_Helper): ...here. Remove redudant condition.
509 * sem_res.adb (Resolve_Actuals): Use local variable A_Typ and
510 remove obsolete comments.
511 (Resolve_Type_Conversion): Do not force the Do_Range_Check flag
512 on the operand if range checks are suppressed.
514 2019-08-12 Eric Botcazou <ebotcazou@adacore.com>
516 * checks.adb (Activate_Range_Check): Remove redundant argument.
517 (Generate_Range_Check): Likewise.
518 (Apply_Float_Conversion_Check): Reset the Do_Range_Check flag on
519 entry and remove redundant condition.
521 2019-08-02 Alexandre Oliva <oliva@adacore.com>
523 * libgnat/a-exexpr.adb (Begin_Handler_v1, End_Handler_v1): New.
524 (Claimed_Cleanup): New.
525 (Begin_Handler, End_Handler): Document.
526 * gcc-interface/trans.c (gigi): Switch to exception handler
528 (Exception_Handler_to_gnu_gcc): Save the original cleanup
529 returned by begin handler, pass it to end handler, and use
530 EH_ELSE_EXPR to pass a propagating exception to end handler.
531 (gnat_to_gnu): Leave the exception pointer alone for reraise.
532 (add_cleanup): Handle EH_ELSE_EXPR, require it by itself.
534 2019-07-23 Ed Schonberg <schonberg@adacore.com>
536 * sem_ch13.adb (Check_Aspect_At_End_Of_Declarations,
537 Freeze_Entity_Checks): Include Aspect_CPU with other aspects
538 whose expresssion may depend on a discriminant, and thus require
539 that components of the type be made visible.
541 2019-07-23 Eric Botcazou <ebotcazou@adacore.com>
543 * checks.adb (Convert_And_Check_Range): Add Suppress parameter
544 and pass it in the call to Insert_Actions. Rename local
546 (Generate_Range_Check): Minor comment fixes. Pass Range_Check
547 in the first call to Convert_And_Check_Range and All_Checks in
549 * exp_ch4.adb (Expand_N_Type_Conversion): Reset the
550 Do_Overflow_Check flag in the float-to-float case too if there
551 is also a range check.
553 2019-07-23 Eric Botcazou <ebotcazou@adacore.com>
555 * checks.adb (Activate_Overflow_Check): Remove redundant
557 * exp_ch4.adb (Discrete_Range_Check): Reset the overflow flag.
558 (Expand_N_Type_Conversion): Do not reset it here.
560 2019-07-23 Eric Botcazou <ebotcazou@adacore.com>
562 * repinfo.adb (List_Component_Layout): Pass Decimal to UI_Write.
563 (Write_Val): Likewise.
565 2019-07-23 Ed Schonberg <schonberg@adacore.com>
567 * aspects.ads: New table Operational_Aspect, used to distinguish
568 between aspects that are view-specific, such as those related to
569 iterators, and representation aspects that apply to all views of
571 * aspects.adb (Find_Aspect): If the aspect being sought is
572 operational, do not ecamine the full view of a private type to
574 * sem_ch5.adb (Analyze_Iterator_Specification): Improve error
575 message when the intended domain of iteration does not implement
576 the required iterator aspects.
578 2019-07-23 Yannick Moy <moy@adacore.com>
580 * sem_spark.ads (Is_Local_Context): New function.
581 * sem_spark.adb (Check_Declaration): Issue errors on violations
583 (Process_Path): Do not issue error on borrow/observe during
584 elaboration, as these are caught by the new rule.
586 2019-07-23 Yannick Moy <moy@adacore.com>
588 * exp_ch7.adb (Create_Finalizer): Force finalizer not to be
590 * exp_dbug.adb (Get_External_Name): Explain special case of
593 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
595 * repinfo.adb (List_Entities): Also list compiled-generated
596 types present as Etype of objects.
598 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
600 * sinfo.ads: Update the documentation about the
601 Do_Division_Check, Do_Overflow_Check and Do_Range_Check flags.
603 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
605 * exp_ch4.adb (Expand_N_Type_Conversion): Beef up comment.
606 (Fixup_Universal_Fixed_Operation): Set the base type instead of
607 the type of the enclosing type conversion on the operation.
609 2019-07-22 Ed Schonberg <schonberg@adacore.com>
611 * exp_ch4.adb (Expand_N_In): Do not suggest the use of attribute
612 'Valid as a replacement for a range check on a discrete type
613 when the bounds of the range are given by type conversions,
614 because in such a case there are distinct types involved and the
615 subbested attribute replacement would be misplaced.
617 2019-07-22 Yannick Moy <moy@adacore.com>
619 * sem_spark.adb (Get_Root_Object, Is_Path_Expression,
620 Is_Subpath_Expression): Add parameter Is_Traversal to adapt
621 these functions to the case of paths returned from a traversal
623 (Read_Indexes): Handle the case of an if-expression or
625 (Check_Statement): Check Emit_Messages only when issuing an
626 error message. This is important as Emit_Messages may store the
627 information that an error was detected.
629 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
631 * checks.adb (Apply_Type_Conversion_Checks): Do not set
632 Do_Range_Check flag on conversions from fixed-point types
634 * exp_attr.adb: Add use and with clause for Expander.
635 (Expand_N_Attribute_Reference) <Fixed_Value, Integer_Value>: Set
636 the Conversion_OK flag and do not generate overflow/range checks
638 * exp_ch4.adb (Expand_N_Qualified_Expression): Remove
639 superfluous clearing of Do_Range_Check flag.
640 (Discrete_Range_Check): New procedure to generate a range check
642 (Real_Range_Check): Remove redundant local variable and adjust.
643 Remove useless shortcut. Clear Do_Range_Check flag on all
645 (Expand_N_Type_Conversion): Remove redundant test on
646 Conversion_OK. Call Discrete_Range_Check to generate range
647 checks on discrete types. Remove obsolete code for
648 float-to-integer conversions. Add code to generate range checks
649 for conversions involving fixed-point types.
651 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
653 * sprint.ads: Fix pasto in comment.
655 2019-07-22 Javier Miranda <miranda@adacore.com>
657 * sem_res.adb (Resolve_Actuals): Replace code that displaces the
658 pointer to an allocated object to reference its secondary
659 dispatch table by a type conversion (which takes care of
662 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
664 * sprint.adb (Sprint_Node_Actual)
665 <N_Decimal_Fixed_Point_Definition>: Swap a couple of spaces.
666 (Write_Itype): Minor consistency fixes throughout. Add support
667 for printing ordinary and decimal fixed-point types and
670 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
672 * exp_attr.adb (Expand_Loop_Entry_Attribute): Beef up comment.
674 2019-07-22 Ed Schonberg <schonberg@adacore.com>
676 * libgnat/s-valboo.ads, libgnat/s-valcha.ads,
677 libgnat/s-valdec.ads, libgnat/s-valenu.ads,
678 libgnat/s-valint.ads, libgnat/s-vallld.ads,
679 libgnat/s-vallli.ads, libgnat/s-valllu.ads,
680 libgnat/s-valrea.ads, libgnat/s-valuns.ads,
681 libgnat/s-valwch.ads: Change categorization of packages that
682 implement attribute 'Value from Pure to Preelaborate, to prevent
683 undesirable optimizations when the evaluation of the attribute
684 raises Constraint_Error, but subsequent use of the result of
685 this evsaluation is removed by a subsequent optimization.
687 2019-07-22 Ed Schonberg <schonberg@adacore.com>
689 * sem_warn.adb (Check_References): Do not emit s warning on a
690 referenced entity with no explicit assignment if the type of the
691 entity has Preelaborable_Initialixation, such as
692 Exception_Occurrence.
694 2019-07-22 Javier Miranda <miranda@adacore.com>
696 * exp_ch4.adb (Size_In_Storage_Elements): Improve the expansion
697 to handle array indexes that are modular type.
698 (Expand_N_Allocator): For 32-bit targets improve the generation
699 of the runtime check associated with large arrays supporting
700 arrays initialized with a qualified expression.
701 * libgnat/s-imenne.adb (Image_Enumeration_8,
702 Image_Enumeration_16, Image_Enumeration_32): Define the index of
703 Index_Table with range Natural'First .. Names'Length since in
704 the worst case all the literals of the enumeration type would be
705 single letter literals and the Table built by the frontend would
706 have as many components as the length of the names string. As a
707 result of this enhancement, the internal tables declared using
708 Index_Table have a length closer to the real needs, thus
709 avoiding the declaration of large arrays on 32-bit CCG targets.
711 2019-07-22 Yannick Moy <moy@adacore.com>
713 * sem_ch3.adb (Constrain_Access): Issue a message about ignored
716 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
718 * sem_ch8.adb (End_Use_Type): Reset the In_Use flag on the
719 class-wide type if the type is tagged.
720 (Use_One_Type): Add commentary on the handling of the class-wide
723 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
725 * einfo.ads (Is_For_Access_Subtype): Delete.
726 (Set_Is_For_Access_Subtype): Likewise.
727 * einfo.adb (Is_For_Access_Subtype): Likewise.
728 (Set_Is_For_Access_Subtype): Likewise.
729 (Write_Entity_Flags): Do not write Is_For_Access_Subtype.
730 * exp_ch4.adb (Expand_N_Selected_Component): Do not deal with
732 * exp_spark.adb (Expand_SPARK_N_Selected_Component): Likewise.
733 * sem_ch4.adb (Analyze_Explicit_Dereference): Likewise.
734 * sem_ch3.adb (Build_Discriminated_Subtype): Do not build a
735 special private subtype for access-to-record subtypes.
737 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
739 * sem_ch3.adb (Complete_Private_Subtype): Rework the setting of
740 the Etype of the full view for full base types that cannot
741 contain any discriminant. Remove code and comment about it in
744 2019-07-22 Ed Schonberg <schonberg@adacore.com>
746 * sem_ch3.adb (Convert_Bound): Subsidiary of
747 Floating_Point_Type_Declaration, to handle properly range
748 specifications with bounds that may include static constants of
749 a given type rather than real literals.
751 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
753 * sem_aggr.adb (Rewrite_Bound): Be prepared for discriminals
755 (Rewrite_Range;): Minor tweak.
756 (Resolve_Record_Aggregate): For a component with default
757 initialization whose expression is an array aggregate, also
758 rewrite the bounds of the component associations, if any.
760 2019-07-22 Gary Dismukes <dismukes@adacore.com>
762 * exp_ch5.adb (Expand_N_Case_Statement): In the case where a
763 case statement is rewritten as an equivalent if statement,
764 inherit the From_Condition_Expression flag from the case
767 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
769 * sem_ch8.adb (Check_Constrained_Object): Further extend the
770 special optimization to all limited types.
772 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
774 * exp_attr.adb (Expand_N_Attribute_Reference)
775 <Attribute_Enum_Val>: Set No_Truncation on the
776 N_Unchecked_Type_Conversion built around the argument passed to
779 2019-07-22 Nicolas Roche <roche@adacore.com>
781 * libgnat/s-valrea.adb (Scan_Real): Ignore non significative
782 digits to avoid converging to infinity in some cases.
784 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
786 * libgnat/g-encstr.adb (Encode_Wide_String): Fix oversight.
787 (Encode_Wide_Wide_String): Likewise.
789 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
791 * sem_warn.adb (Find_Var): Bail out for a function call with an
792 Out or In/Out parameter.
794 2019-07-22 Nicolas Roche <roche@adacore.com>
796 * terminals.c (__gnat_tty_waitpid): Support both blocking and
798 * libgnat/g-exptty.ads (Is_Process_Running): New function.
799 * libgnat/g-exptty.adb (Close): Don't try to interrupt/terminate
800 a process if it is already dead.
802 2019-07-22 Ed Schonberg <schonberg@adacore.com>
804 * freeze.adb (Freeze_Fixed_Point_Type): When freezing a
805 fixed-point subtype, check whether the parent type declarastion
806 includes an aspect specification for the 'Small type attribute,
807 and inherit the specified value.
809 2019-07-22 Javier Miranda <miranda@adacore.com>
811 * freeze.adb (Freeze_Subprogram): Check that C++ constructors
812 must have external or link name.
814 2019-07-22 Ed Schonberg <schonberg@adacore.com>
816 * sem_res.adb (Resolve_Selected_Component): If the prefix has a
817 deferred reference, generate the correct reference now, to
818 indicate that the previous assignment is used. This prevents
819 spurious warnings on useless assignments when compiling with all
820 warnings enabled. when there is a subsequent call in the same
821 stqtement list, in which the prefix of the selected component is
822 the actual for an out parameter.
824 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
826 * exp_attr.adb (Expand_Loop_Entry_Attribute): Copy the condition
827 of a while loop instead of simply relocating it.
829 2019-07-18 Arnaud Charlet <charlet@adacore.com>
831 * Makefile.rtl, expect.c, env.c, aux-io.c, mkdir.c, initialize.c,
832 cstreams.c, raise.c, tracebak.c, adadecode.c, init.c, raise-gcc.c,
833 argv.c, adaint.c, adaint.h, ctrl_c.c, sysdep.c, rtinit.c, cio.c,
834 seh_init.c, exit.c, targext.c: Introduce a "STANDALONE" mode where C
835 runtime files do not have any dependency on GCC include files.
836 Remove unnecessary includes.
837 Remove remaining references to VMS in runtime C file.
838 * runtime.h: new File.
840 2019-07-13 Andreas Schwab <schwab@linux-m68k.org>
842 * Makefile.rtl: Use g-sercom__linux.adb for all linuxes.
844 2019-07-11 Piotr Trojanek <trojanek@adacore.com>
846 * lib-writ.adb (Ensure_System_Dependency,
847 Up_To_Date_ALI_File_Exists, Write_ALI): Replace low-level access
848 to table with a high-level query.
850 2019-07-11 Piotr Trojanek <trojanek@adacore.com>
852 * checks.adb: Fix typo in comment.
853 * sem.adb (Semantics): Avoid repeated calls to
854 In_Extended_Main_Source_Unit by reusing an already-cached
856 * sem_util.adb (First_Global): Fix style.
858 2019-07-11 Yannick Moy <moy@adacore.com>
860 * sem_res.adb (Resolve_Call): Do not perform dimensionality
861 checking on inlined bodies.
863 2019-07-11 Yannick Moy <moy@adacore.com>
865 * debug.adb: Flip meaning of debug switch -gnatdF.
867 2019-07-11 Yannick Moy <moy@adacore.com>
869 * sem_eval.adb (Is_Same_Value): Add special case for rewritten
870 Loop_Entry attribute.
872 2019-07-11 Claire Dross <dross@adacore.com>
874 * gnat1drv.adb: SPARK checking rules for pointer aliasing are
875 moved to GNATprove backend.
876 * sem_spark.ads, sem_spark.adb (Sem_SPARK): Is now a generic
877 unit. Takes as parameters:
878 - Retysp which is used to query the most underlying type
879 visible in SPARK. We do not introduce aliasing checks for
880 types which are not visibly deep.
881 - Component_Is_Visible_In_SPARK is used to avoid doing pointer
882 aliasing checks on components which are not visible in SPARK.
883 - Emit_Messages returns True in the second phase of SPARK
884 analysis. Error messages for failed aliasing checks are only
886 Additionally, errors on constructs not supported in SPARK are
887 removed as duplicates of marking errors. Components are stored
888 in the permission map using their original component to avoid
889 inconsistencies between components of different views of the
891 (Check_Expression): Handle delta constraints.
892 (Is_Deep): Exported so that we can check for SPARK restrictions
893 on deep types inside SPARK semantic checkings.
894 (Is_Traversal_Function): Exported so that we can check for SPARK
895 restrictions on traversal functions inside SPARK semantic
897 (Check_Call_Statement, Read_Indexes): Check wether we are
898 dealing with a subprogram pointer type before querying called
900 (Is_Subpath_Expression): Image attribute can appear inside a
902 (Check_Loop_Statement): Correct order of statements in the loop.
903 (Check_Node): Ignore raise nodes.
904 (Check_Statement): Use Last_Non_Pragma to get the object
905 declaration in an extended return statement.
907 2019-07-11 Patrick Bernardi <bernardi@adacore.com>
909 * bindgen.adb (Gen_Main): Do not generate a reference to
910 Ada_Main_Program_Name when the Minimal_Binder flag is set.
911 (Gen_Output_File_Ada): Do not output GNAT_Version and
912 Ada_Main_Program_Name info if Minimal_Binder flag is set.
913 * bindusg.adb: Add documentation for new -minimal switch.
914 * gnatbind.adb (Scan_Bind_Arg): Scan -minimal switch.
915 * opt.ads: Add new global flag Minimal_Binder to indicate if the
916 binder should not produce global variables.
917 * doc/gnat_ugn/building_executable_programs_with_gnat.rst:
918 Update documentation with new binder -minimal switch.
919 * gnat_ugn.texi: Regenerate.
921 2019-07-11 Eric Botcazou <ebotcazou@adacore.com>
923 * Makefile.rtl: Add warning note about compilation flags and
926 2019-07-11 Ed Schonberg <schonberg@adacore.com>
928 * exp_ch9.adb (Expand_N_Protected_Type_Declaaration): New
929 subsidiary routine Replace_Access_Definition, to handle properly
930 a protected type PT one of whose private components is of type
933 2019-07-11 Dmitriy Anisimkov <anisimko@adacore.com>
935 * libgnat/g-socket.ads (Level_Type): Add enumerators for
936 IP_Protocol_For_ICMP, IP_Protocol_For_IGMP,
937 IP_Protocol_For_RAW_Level.
938 * libgnat/g-socket.adb (Levels): Handle them.
939 * s-oscons-tmplt.c: Import socket protocols defined in
942 2019-07-11 Claire Dross <dross@adacore.com>
944 * libgnat/a-cfhama.adb, libgnat/a-cfhase.adb (Free): Do not
945 reset the Has_Element flag if no element is freed.
947 2019-07-11 Arnaud Charlet <charlet@adacore.com>
949 * errno.c: Remove obsolete support for MaRTE OS.
951 2019-07-11 Ed Schonberg <schonberg@adacore.com>
953 * exp_ch4.adb (Expand_N_Type_Conversion): If a predicate check
954 is generated, analyze it with range check suppressed, because
955 that check has been previously applied.
956 * exp_ch5.adb (Expand_N_Assignment_Statement): If the RHS is a
957 type conversion to the type of the LHS, do not apply a predicate
958 check to the RHS because it will have been generated already
959 during its expansion.
960 * exp_ch6.adb (Can_Fold_Predicate_Call): Extend processing to
961 handle a predicate check on a constant entity whose value is
964 2019-07-11 Hristian Kirtchev <kirtchev@adacore.com>
966 * bindo.adb: Remove the documentation of switch -d_N because it
968 * bindo-graphs.ads, bindo-graphs.adb (Is_Spec_Before_Body_Edge):
970 * bindo-writers.adb (Write_Dependency_Edge): Add the missing
971 case of a spec-before-body edge.
973 2019-07-11 Dmitriy Anisimkov <anisimko@adacore.com>
975 * libgnat/g-socket.ads (Mode_Type): Add a Socket_Raw enumerator.
976 * libgnat/g-socket.adb (Modes): Handle Socket_Raw.
978 2019-07-11 Justin Squirek <squirek@adacore.com>
980 * exp_ch9.adb (Build_Private_Protected_Declaration): Add
981 exception for the moving of pragmas to internally generated
982 specs for pragma Unreferenced.
984 2019-07-11 Bob Duff <duff@adacore.com>
986 * doc/gnat_ugn/gnat_utility_programs.rst: Fix inconsistent
987 documentation for gnatmetric.
988 * gnat_ugn.texi: Regenerate.
990 2019-07-11 Bob Duff <duff@adacore.com>
992 * doc/gnat_ugn/gnat_utility_programs.rst: Document gnatpp's
993 --spaces-only switch.
995 2019-07-11 Hristian Kirtchev <kirtchev@adacore.com>
997 * sem_util.adb (Null_Status): Assume that an erroneous construct
998 has an undefined null status.
1000 2019-07-11 Hristian Kirtchev <kirtchev@adacore.com>
1002 * checks.adb, exp_ch6.adb, gnat1drv.adb, sem_aux.adb,
1003 sem_ch2.adb, sem_ch8.adb, sem_res.adb: Minor reformatting.
1005 2019-07-11 Hristian Kirtchev <kirtchev@adacore.com>
1007 * sem_ch8.adb (Analyze_Object_Renaming): Obtain the object being
1008 renamed using routine Get_Object_Name which takes care of
1010 (Get_Object_Name): New routine.
1012 2019-07-11 Ed Schonberg <schonberg@adacore.com>
1014 * exp_ch6.adb (Can_Fold_Predicate_Call): New function,
1015 subsidiary of Expand_Call_Helper, to compute statically a
1016 predicate check when the argument is a static integer.
1018 2019-07-11 Hristian Kirtchev <kirtchev@adacore.com>
1020 * sem_res.adb (Resolve_Op_Not): Do not rewrite an equality
1021 operator into a function call when the operator is intrinsic.
1023 2019-07-11 Thomas Quinot <quinot@adacore.com>
1025 * sem_prag.adb (Analyze_Pragma, case pragma Check): Do not call
1026 Set_SCO_Pragma_Enabled for the dynamic predicate case.
1028 2019-07-11 Hristian Kirtchev <kirtchev@adacore.com>
1030 * exp_util.ads, exp_util.adb (Needs_Finalization): Move to
1032 * sem_ch9.adb (Analyze_Protected_Definition): Code cleanup. Mark
1033 the protected type as having controlled components when it
1034 contains at least one such component.
1035 * sem_util.ads, sem_util.adb (Needs_Finalization): New
1038 2019-07-11 Eric Botcazou <ebotcazou@adacore.com>
1040 * alloc.ads (Rep_JSON_Table_Initial): New constant.
1041 (Rep_JSON_Table_Increment): Likewise.
1042 * debug.adb: Document -gnatd_j switch.
1043 * gcc-interface/Make-lang.in (GNAT_ADA_OBJS): Add
1045 * gnat1drv.adb: Add with clause for Repinfo.Input.
1046 Add with and use clauses for Sinput.
1047 (Read_JSON_Files_For_Repinfo): New procedure.
1048 (Gnat1drv1): Deal with -gnatd_j switch.
1049 * repinfo-input.ad[sb]: New unit.
1050 * snames.ads-tmpl (Name_Discriminant): New constant.
1051 (Name_Operands): Likewise.
1053 2019-07-11 Justin Squirek <squirek@adacore.com>
1055 * checks.adb (Apply_Accessibility_Check): Add check for constant
1056 folded conditions on accessibility checks.
1058 2019-07-11 Arnaud Charlet <charlet@adacore.com>
1060 * libgnarl/g-thread.ads, libgnarl/g-thread.adb (Get_Thread):
1061 Update comments. Add new version taking a Task_Id.
1063 2019-07-11 Hristian Kirtchev <kirtchev@adacore.com>
1065 * bindo.adb: Update the section of switches and debugging
1067 * bindo.ads: Add type Elaboration_Phase.
1068 * bindo-augmentors.adb: Add use clause for
1069 Bindo.Writers.Phase_Writers.
1070 (Augment_Library_Graph): Signal the start and end of the
1072 * bindo-builders.adb: Add with and use clause for Bindo.Writers.
1073 Add use clause for Bindo.Writers.Phase_Writers.
1074 (Build_Invocation_Graph): Signal the start and end of the
1075 invocation graph construction phase.
1076 (Build_Library_Graph): Signal the start and end of the library
1077 graph construction phase.
1078 * bindo-diagnostics.adb: Add use clause for
1079 Bindo.Writers.Phase_Writers.
1080 (Diagnose_Cycle): Signal the start and end of the cycle
1082 * bindo-elaborators.adb: Add use clause for
1083 Bindo.Writers.Phase_Writers.
1084 (Elaborate_Units): Signal the start and end of the unit
1086 * bindo-graphs.adb: Add use clause for
1087 Bindo.Writers.Phase_Writers.
1088 (Find_Components): Signal the start and end of the component
1090 (Find_Cycles): Signal the start and end of the cycle discovery
1092 * bindo-units.adb: Add with and use clause for Bindo.Writers.
1093 Add use clause for Bindo.Writers.Phase_Writers.
1094 (Collect_Elaborable_Units): Signal the start and end of the unit
1096 * bindo-validators.adb: Add with and use clause for
1097 Bindo.Writers. Add use clause for Bindo.Writers.Phase_Writers.
1098 (Validate_Cycles, Validate_Elaboration_Order,
1099 Validate_Invocation_Graph, Validate_Library_Graph): Signal the
1100 start and end of the libray graph validation phase.
1101 * bindo-writers.ads, bindo-writers.adb: Add new nested package
1103 * debug.adb: Update the documentation of switch d_S.
1105 2019-07-11 Yannick Moy <moy@adacore.com>
1107 * sem_res.adb (Check_Argument_Order): Special case calls to
1110 2019-07-10 Dmitriy Anisimkov <anisimko@adacore.com>
1112 * libgnat/s-ststop.adb: Remove System.Strings.Stream_Ops
1113 dependence on System.Streams.Stream_IO.
1115 2019-07-10 Ed Schonberg <schonberg@adacore.com>
1117 * sem_ch2.adb (Analyze_Integer_Literal): Preserve the type of
1118 the literal if prior analysis determined that its type is a
1119 modular integer type.
1121 2019-07-10 Doug Rupp <rupp@adacore.com>
1123 * init.c: Do not attempt to re-arm guard page on x86_64-vx7(r2).
1125 2019-07-10 Ed Schonberg <schonberg@adacore.com>
1127 * sem_ch8.adb (Check_Constrained_Object): A record that is
1128 limited because of the presence of a limited component is
1129 constrained, and no subtype indiciation needs to be created for
1130 it, just as is the case for declared limited records.
1132 2019-07-10 Yannick Moy <moy@adacore.com>
1134 * sem_aux.adb, sem_aux.ads (Is_Protected_Operation): New
1135 function to determine if a subprogram is protected.
1136 * sem_spark.adb (Setup_Protected_Components): New procedure to
1137 add protected components to the environment.
1138 (Check_Callable_Body): Call the new Setup_Protected_Components.
1139 (Check_Package_Spec): Merge local environment with enclosing one
1142 2019-07-10 Claire Dross <dross@adacore.com>
1144 * sem_spark.adb (Check_Expression): Allow digits constraints as
1146 (Illegal_Global_Usage): Pass in the entity.
1147 (Is_Subpath_Expression): New function to allow different nodes
1148 as inner parts of a path expression.
1149 (Read_Indexes): Allow concatenation and aggregates with box
1150 expressions. Allow attributes Update and Loop_Entry.
1151 (Check_Expression): Allow richer membership test.
1152 (Check_Node): Ignore bodies of generics.
1153 (Get_Root_Object): Allow concatenation and attributes.
1155 2019-07-10 Hristian Kirtchev <kirtchev@adacore.com>
1157 * sem_ch6.adb (Check_Discriminant_Conformance): Use Find_Type to
1158 discover the type of a full view discriminant.
1160 2019-07-10 Arnaud Charlet <charlet@adacore.com>
1162 * doc/gnat_ugn/gnat_and_program_execution.rst: Improve gnatmem's
1163 doc for the depth switch.
1165 2019-07-10 Bob Duff <duff@adacore.com>
1167 * doc/gnat_ugn/gnat_utility_programs.rst: Document gnatpp's
1168 --source-line-breaks switch.
1170 2019-07-10 Justin Squirek <squirek@adacore.com>
1172 * doc/gnat_rm/implementation_defined_attributes.rst: Add mention
1173 of 'Image attribute with 'Img's entry to mention additional
1174 added 2012 usage of Obj'Image.
1175 * doc/gnat_rm/implementation_defined_pragmas.rst: Correct
1176 mispelling of Async_Writers.
1177 * gnat_rm.texi: Regenerate.
1178 * sem_prag.adb (Analyze_Pragma): Correct mispelling of
1180 * sem_util.adb (State_Has_Enabled_Property): Correct mispelling
1183 2019-07-10 Simon Buist <buist@adacore.com>
1185 * sem_util.ads (Child_Prefix): New constant.
1186 * sem_util.adb (Unique_Name): Add a special prefix to child
1187 units that have a nested subprogram or package.
1189 2019-07-10 Arnaud Charlet <charlet@adacore.com>
1191 * sfn_scan.adb (Scan_SFN_Pragmas): Add pragma Assert.
1193 2019-07-10 Hristian Kirtchev <kirtchev@adacore.com>
1195 * sem_ch3.adb (Check_Nonoverridable_Aspects): Correct the
1196 spelling in certain error messages.
1197 (Check_Pragma_Implemented): Correct the spelling in certain
1200 2019-07-10 Eric Botcazou <ebotcazou@adacore.com>
1202 * Makefile.rtl (GNATRTL_NONTASKING_OBJS): Add g-brapre.
1203 * libgnat/g-brapre.ads: New package specification.
1204 * doc/gnat_rm/the_gnat_library.rst: Document it.
1205 * gnat_rm.texi: Regenerate.
1207 2019-07-10 Yannick Moy <moy@adacore.com>
1209 * osint-c.adb (Set_File_Name): Always add extension for multiple
1210 units per file mode.
1212 2019-07-10 Corentin Gay <gay@adacore.com>
1214 * sysdep.c: Put include directive for 'vxWorks.h' before any
1215 other VxWorks headers.
1217 2019-07-10 Eric Botcazou <ebotcazou@adacore.com>
1219 * doc/gnat_rm/implementation_defined_attributes.rst
1220 (Scalar_Storage_Order): Minor tweaks. Add note about debuggers.
1221 * gnat_rm.texi: Regenerate.
1223 2019-07-10 Hristian Kirtchev <kirtchev@adacore.com>
1225 * exp_ch4.adb (Expand_N_Case_Expression): Mark the generated
1226 assignments to the temporary result as being OK because the
1227 expansion of case expressions is correct by construction.
1228 (Is_Copy_Type): Update the predicate to match the comment
1231 2019-07-10 Hristian Kirtchev <kirtchev@adacore.com>
1233 * bindo-graphs.adb, bindo.adb, debug.adb, exp_ch6.adb,
1234 sem_ch10.adb, sem_ch13.adb, sem_ch3.adb, sem_ch4.adb,
1235 sem_ch6.adb, sem_ch7.adb, sem_res.adb, sem_spark.adb,
1236 sem_util.adb, warnsw.ads: Minor reformatting.
1238 2019-07-10 Joffrey Huguet <huguet@adacore.com>
1240 * libgnat/a-strbou.ads, libgnat/a-strfix.ads,
1241 libgnat/a-strunb.ads, libgnat/a-strunb__shared.ads: Add global
1242 contracts, contract cases, preconditions and postconditions to
1243 procedures and functions.
1245 2019-07-10 Doug Rupp <rupp@adacore.com>
1247 * sysdep.c (__gnat_is_file_not_found_error): Reformulate to also
1248 work for vxworks7r2 SR0610.
1250 2019-07-10 Doug Rupp <rupp@adacore.com>
1252 * env.c (__gnat_environ): Reformulate to also work for
1255 2019-07-10 Patrick Bernardi <bernardi@adacore.com>
1257 * Makefile.rtl: Handle vxworks7r2 ppc target
1259 2019-07-10 Hristian Kirtchev <kirtchev@adacore.com>
1261 * bindo.adb: Update the section on switches.
1263 (Add_Cycle, Add_Vertex_And_Complement): Remove.
1264 (Create): The graph no longer needs a set of recorded cycles
1265 because the cycles are not rediscovered in permuted forms.
1266 (Cycle_End_Vertices): New routine.
1267 (Destroy): The graph no longer needs a set of recorded cycles
1268 because the cycles are not rediscovered in permuted forms.
1269 (Destroy_Library_Graph_Vertex): Move to the library level.
1270 (Find_All_Cycles_Through_Vertex, Find_All_Cycles_With_Edge):
1272 (Find_Cycles_From_Successor, Find_Cycles_From_Vertex,
1273 Find_Cycles_In_Component, Has_Elaborate_All_Edge): New routines.
1274 (Insert_And_Sort): Remove.
1275 (Is_Elaborate_Body_Edge): Use predicate
1276 Is_Vertex_With_Elaborate_Body.
1277 (Is_Recorded_Cycle): Remove.
1278 (Is_Vertex_With_Elaborate_Body): New routine.
1279 (Normalize_And_Add_Cycle): Remove.
1280 (Precedence): Rename to xxx_Precedence, where xxx relates to the
1281 input. These versions better reflect the desired input
1283 (Record_Cycle): New routine.
1284 (Remove_Vertex_And_Complement, Set_Is_Recorded_Cycle): Remove.
1285 (Trace_xxx): Update all versions to use debug switch -d_t.
1286 (Trace_Component): New routine.
1287 (Trace_Eol): Removed.
1288 (Trace_Vertex): Do not output the component as this information
1289 is already available when the component is traced.
1290 (Unvisit, Visit): New routine.
1291 * bindo-graphs.ads: Add new instance LGV_Lists. Remove instance
1292 RC_Sets. Update the structure of type Library_Graph_Attributes
1293 to remove the set of recorded cycles.
1294 (Destroy_Library_Graph_Vertex): Move to the library level.
1295 * bindo-writers.adb (Write_Component_Vertices): Output
1296 information about the number of vertices.
1297 * debug.adb: Document the use of binder switch -d_t. Update the
1298 use of binder switch -d_T.
1300 2019-07-10 Yannick Moy <moy@adacore.com>
1302 * sem_spark.adb (Get_Root_Object): Replace precondition by error
1304 (Read_Indexes): Replace precondition by error message.
1305 (Check_Callable_Body): Check only traversal function returns an
1306 anonymous access type.
1307 (Check_Expression): Issue error on unexpected expression as
1309 * sem_util.adb (First_Global): Fix access to global on
1312 2019-07-10 Javier Miranda <miranda@adacore.com>
1314 * exp_ch6.adb (Is_Class_Wide_Interface_Type): New subprogram.
1315 (Expand_Call_Helper): Handle non-limited views when we check if
1316 any formal is a class-wide interface type.
1317 * exp_disp.adb (Expand_Interface_Actuals): Handle non-limited
1318 views when we look for interface type formals to force "this"
1321 2019-07-10 Ed Schonberg <schonberg@adacore.com>
1323 * sem_res.adb (Resolve_Equality_Op): Do not replace the resolved
1324 operator by its alias if expander is not active, because the
1325 operand type may not be frozen yet and its inherited operations
1326 have not yet been created.
1328 2019-07-10 Hristian Kirtchev <kirtchev@adacore.com>
1330 * bindo-elaborators.adb (Elaborate_Units): Set attribute
1331 Elab_Position of all elaborated units.
1332 (Set_Unit_Elaboration_Positions): New routine.
1334 2019-07-10 Gary Dismukes <dismukes@adacore.com>
1336 * exp_util.adb: Reformatting and a typo fix.
1338 2019-07-10 Yannick Moy <moy@adacore.com>
1340 * exp_util.adb (Remove_Side_Effects): Prefer renamings for
1341 objects of possible owning type in GNATprove mode.
1343 2019-07-09 Ed Schonberg <schonberg@adacore.com>
1345 * sem_ch3.adb (Analyze_Object_Declaration): If the object type
1346 is a composite type that has a dynamic predicate and, the
1347 expression in the declaration is an aggregate, the generated
1348 predicate check must appear after the expanded code for the
1349 aggregate, which will appear after the rewritten object
1352 2019-07-09 Justin Squirek <squirek@adacore.com>
1354 * sem_eval.adb (Expr_Value_E): Add conditional to correctly
1355 handle constant enumerated character types.
1357 2019-07-09 Eric Botcazou <ebotcazou@adacore.com>
1359 * libgnarl/s-osinte__mingw.ads (CRITICAL_SECTION): Use proper
1360 type for SpinCount component.
1362 2019-07-09 Justin Squirek <squirek@adacore.com>
1364 * exp_ch4.adb (Expand_N_Allocator): Add conditional to detect
1365 the presence of anoymous access type allocators and issue a
1366 warning if the appropriate warning flag is enabled.
1367 * warnsw.ads: Add new warning flag for anonymous allocators
1368 * warnsw.adb (All_Warnings, Restore_Warnings, Save_Warnings,
1369 Set_Underscore_Warning_Switch): Register new flags.
1370 (WA_Warnings): Register new flag as an "all warnings" switch
1372 doc/gnat_ugn/building_executable_programs_with_gnat.rst:
1373 Document new warning switches -gnatw_a and -gnatw_A.
1374 * gnat_ugn.texi: Regenerate.
1376 2019-07-09 Ed Schonberg <schonberg@adacore.com>
1378 * sem_ch4.adb (Diagnose_Call): Improve error recovery when a
1379 local subprogram name hides a possible candidate name declared
1380 in a child package in the context of the current unit.
1381 * sem_ch6.adb (Process_Formals): Protect against malformed
1382 formal types when the parameter type does not denote an entity.
1384 2019-07-09 Hristian Kirtchev <kirtchev@adacore.com>
1386 * bindo-augmentors.adb (Visit_Elaboration_Root): Do not start a
1387 DFS from an elaboration root whose corresponding unit lacks
1388 elaboration code. This behavior mimics that of the old
1389 elaboration order mechanism.
1390 * bindo-graphs.adb (Find_All_Cycles_Through_Vertex): Move the
1391 vertex tracing within the functional branches of the routine.
1392 This prevents spurious trace output.
1393 (Has_No_Elaboration_Code): New routine.
1394 (Trace_Cycle, Trace_Edge): Update the various Ids to use the
1395 "standard" trace format.
1396 * bindo-graphs.ads (Has_No_Elaboration_Code): New routine.
1397 * bindo-units.ads, bindo-units.adb (Has_No_Elaboration_Code):
1400 2019-07-09 Piotr Trojanek <trojanek@adacore.com>
1402 * ali.ads, bindo-graphs.adb, bindo-validators.adb, clean.adb,
1403 doc/gnat_ugn/elaboration_order_handling_in_gnat.rst, einfo.ads,
1404 exp_aggr.adb, exp_ch13.adb, exp_ch4.adb, exp_ch5.adb,
1405 exp_ch6.adb, exp_ch7.adb, exp_ch9.adb, exp_pakd.adb,
1406 fname-uf.ads, gnatlink.adb, inline.adb, lib.ads, make.adb,
1407 namet.ads, opt.ads, par-ch4.adb, par-ch6.adb, par-labl.adb,
1408 prep.adb, sem_aggr.adb, sem_ch13.adb, sem_ch4.adb, sem_ch5.adb,
1409 sem_ch6.adb, sem_ch6.ads, sem_ch7.adb, sem_ch8.adb, sem_dim.adb,
1410 sem_disp.adb, sem_prag.adb, sem_res.adb, sem_warn.adb,
1411 sinfo.ads: Replace ". " with ". ". Minor reformatting and typo
1413 * gnat_ugn.texi: Generate.
1415 2019-07-09 Hristian Kirtchev <kirtchev@adacore.com>
1417 * bindo.ads: Move type Precedence_Kind from the private to the
1418 visible part of the unit.
1419 * bindo-augmentors.adb: Remove the use of global data as it is
1421 (Augment_Library_Graph): Update the parameter profile.
1422 (Is_Visited, Set_Is_Visited): Remove.
1423 (Visit_Elaboration_Root, Visit_Elaboration_Roots): Update the
1424 parameter profile and comment on usage.
1425 (Visit_Vertex): Likewise. Also keep track of which invocation
1426 edge activates a task.
1427 * bindo-augmentors.ads (Augment_Library_Graph): Update the
1428 parameter profile and comment on usage.
1429 * bindo-builders.adb (Create_Forced_Edge,
1430 Create_Spec_And_Body_Edge, Create_With_Edge): Update the call to
1432 * bindo-diagnostics.adb: Add with end use clauses for Restrict
1434 (Output_Dynamic_Model_Suggestions): Remove.
1435 (Output_Invocation_Related_Suggestions): New routine.
1436 (Output_Suggestions): Output all invocation-related suggestions
1438 * bindo-elaborators.adb: Remove types Comparator_Ptr and
1440 (Find_Best_Vertex): Update the parameter profile.
1441 * bindo-graphs.adb (Activates_Task): New routine.
1442 (Add_Body_Before_Spec_Edge): Update the call to
1443 Add_Edge_With_Return.
1444 (Add_Edge): Update the parameter profile and the call to
1445 Add_Edge_With_Return.
1446 (Add_Edge_With_Return): Update the parameter profile and comment
1448 (At_Least_One_Edge_Satisfies): New routine.
1449 (Contains_Elaborate_All_Edge): Reimplement.
1450 (Contains_Static_Successor_Edge, Contains_Task_Activation): New
1452 (Contains_Weak_Static_Successor): Remove.
1453 (Is_Static_Successor_Edge): New routine.
1454 * bindo-graphs.ads: Add types LGE_Predicate_Ptr,
1455 LGV_Comparator_Ptr, and LGV_Predicate_Ptr. Update type
1456 Library_Graph_Edge_Attributes to capture whether an invocation
1457 edge activates a task. Update the value of
1458 No_Library_Graph_Edge_Attributes.
1459 (Activates_Task): Update the parameter profile and comment on
1461 (Contains_Static_Successor_Edge, Contains_Task_Activation): New
1463 (Contains_Weak_Static_Successor): Remove.
1464 * doc/gnat_ugn/elaboration_order_handling_in_gnat.rst:
1465 Update the documentation to reflect the new task-related advice.
1466 * gnat_ugn.texi: Regenerate.
1468 2019-07-09 Piotr Trojanek <trojanek@adacore.com>
1470 * exp_util.adb (Containing_Package_With_Ext_Axioms): Replace
1471 low-level Ekind test with a high-level wrapper.
1473 2019-07-09 Arnaud Charlet <charlet@adacore.com>
1475 * libgnat/s-memory.adb: Disable calls to Abort defer/undefer
1476 when ZCX_By_Default.
1478 2019-07-09 Javier Miranda <miranda@adacore.com>
1480 * sem_ch13.adb (Rep_Item_Too_Early): Representation clauses are
1481 not allowed for a derivation of a generic type. Extend the
1482 current test to check that none of the parents is a generic
1485 2019-07-09 Hristian Kirtchev <kirtchev@adacore.com>
1487 * exp_ch9.adb, exp_util.adb, repinfo.adb, sem_ch12.adb,
1488 sem_prag.adb, sem_res.adb, sem_spark.adb, sem_util.adb: Minor
1491 2019-07-09 Ed Schonberg <schonberg@adacore.com>
1493 * sem_res.adb (Resolve_Equality_Op): If the node was overloaded,
1494 set properly the entity to which the node has been resolved. The
1495 original entity is the first one found during analysis, and is
1496 not necessarily the resolved one.
1497 (Resolve_Op_Not): If the argument of negation is an overloaded
1498 equality operation, call its resolution directly given that the
1499 context type does not participate in overload resolution.
1501 2019-07-09 Hristian Kirtchev <kirtchev@adacore.com>
1503 * bindo.adb: Remove with and use clauses for Debug. Add with
1504 and use clauses for Opt.
1505 (Find_Elaboration_Order): Enable the v4.0 elaboration order. The
1506 v3.0 mechanism is now available under binder switch -H.
1507 * bindusg.adb (Display): Enable switch -H.
1508 * debug.adb: Free compiler switch -gnatd_G. Free binder switch
1510 * sem_elab.adb: Update the section on switches to remove
1512 (Invocation_Graph_Recording_OK): The invocation graph is now
1513 unconditionally recorded in ALI files.
1514 * switch-b.adb (Scan_Binder_Switches): Scan switch -H.
1515 * doc/gnat_ugn/building_executable_programs_with_gnat.rst:
1516 Update the documentation on compiler switches related to
1517 elaboration. Update the documentation on binder switches to
1519 * doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Update
1520 the documentation on elaboration order handling in GNAT.
1521 * gnat_ugn.texi: Regenerate.
1523 2019-07-09 Eric Botcazou <ebotcazou@adacore.com>
1525 * repinfo.adb (List_Entities): Disregard formals altogether.
1526 (List_Name): Properly escape the double quote in the JSON
1529 2019-07-09 Javier Miranda <miranda@adacore.com>
1531 * exp_util.adb (Remove_Side_Effects): Preserve the
1532 Do_Range_Check flag.
1534 2019-07-09 Yannick Moy <moy@adacore.com>
1536 * sinfo.ads: Refine comment for Do_Range_Check.
1538 2019-07-09 Yannick Moy <moy@adacore.com>
1540 * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Expand
1541 attribute reference on Enum_Rep.
1543 2019-07-09 Ed Schonberg <schonberg@adacore.com>
1545 * sem_ch12.adb (Instantiate_Formal_Package): Handle properly the
1546 case where the actual for a formal package in an instance is the
1547 current instance of an enclosing generic package.
1548 (Check_Formal_Packages): If the formal package declaration is
1549 box-initialized or lacks associations altogether, no internal
1550 instance was created to verify conformance, and there is no
1551 validating package to remove from tree.
1553 2019-07-09 Yannick Moy <moy@adacore.com>
1555 * freeze.adb (Build_Renamed_Body): Do not set body to inline in
1558 2019-07-09 Yannick Moy <moy@adacore.com>
1560 * exp_util.adb (Expand_Subtype_From_Expr): Still expand the type
1561 of static expressions in GNATprove_Mode.
1562 * sem_ch3.adb (Analyze_Object_Declaration): Remove obsolete
1563 special case for GNATprove_Mode.
1565 2019-07-09 Piotr Trojanek <trojanek@adacore.com>
1567 * doc/gnat_rm/the_gnat_library.rst,
1568 doc/gnat_ugn/building_executable_programs_with_gnat.rst,
1569 erroutc.adb, libgnat/g-comlin.adb, libgnat/g-comlin.ads,
1570 libgnat/g-regexp.ads, libgnat/g-regpat.ads,
1571 libgnat/g-spipat.ads, libgnat/s-os_lib.ads,
1572 libgnat/s-regexp.ads: Reword "wild card" to "wildcard".
1573 * gnat_rm.texi, gnat_ugn.texi: Regenerate.
1575 2019-07-09 Yannick Moy <moy@adacore.com>
1577 * sem_spark.adb (Check_Expression): Handle correctly implicit
1578 assignments as part of allocators and (extension) aggregates.
1579 (Get_Root_Object): Adapt for new path expressions.
1580 (Is_Path_Expression): Return True for (extension) aggregate.
1582 2019-07-09 Piotr Trojanek <trojanek@adacore.com>
1584 * einfo.ads: Fix a typo.
1586 2019-07-09 Ed Schonberg <schonberg@adacore.com>
1588 * sem_util.adb (Scope_Within_Or_Same): Handle properly task
1589 bodies and protected bodies, so that local variables within have
1590 their proper scopes after these constructs have been rewritten
1591 during expansion. This patch resembles but is not identical to
1592 the code in Scope_Within.
1594 2019-07-09 Arnaud Charlet <charlet@adacore.com>
1596 * gnat1drv.adb (Adjust_Global_Switches): Set
1597 Dynamic_Elaboration_Checks to True in CodePeer mode.
1599 2019-07-09 Yannick Moy <moy@adacore.com>
1601 * sem_spark.adb (Get_Perm_Or_Tree): Issue an error when
1602 encountering unknown global variable.
1604 2019-07-09 Yannick Moy <moy@adacore.com>
1606 * sem_spark.adb (Check_Expression): Change signature to take an
1607 Extended_Checking_Mode, for handling read permission checking of
1608 sub-expressions in an assignment.
1609 (Check_Parameter_Or_Global): Adapt to new behavior of
1610 Check_Expression for mode Assign.
1611 (Check_Safe_Pointers): Do not analyze generic bodies.
1612 (Check_Assignment): Separate checking of the target of an
1615 2019-07-09 Eric Botcazou <ebotcazou@adacore.com>
1617 * repinfo.ads (JSON format): Adjust.
1618 * repinfo.adb (Need_Blank_Line): Rename to...
1619 (Need_Separator): ...this.
1620 (Blank_Line): Rename to...
1621 (Write_Separator): ...this and add JSON specific handling.
1622 (List_Array_Info): Adjust to above renaming.
1623 (List_Object_Info): Likewise.
1624 (List_Record_Info): Likewise.
1625 (List_Subprogram_Info): Likewise.
1626 (List_Type_Info): Likewise.
1627 (List_Entities): Do not set Need_Blank_Line.
1628 (List_Rep_Info): Set Need_Separator and add JSON specific
1629 handling. Output a single JSON stream in the normal case.
1631 2019-07-09 Arnaud Charlet <charlet@adacore.com>
1633 * doc/gnat_ugn/the_gnat_compilation_model.rst: Update doc on
1634 -fdump-ada-spec now that we generate Ada 2012.
1635 * gnat_ugn.texi: Regenerate.
1637 2019-07-08 Eric Botcazou <ebotcazou@adacore.com>
1639 * repinfo.adb (List_Common_Type_Info): New procedure extracted
1641 (List_Type_Info): ...here. Call it for the common information,
1642 start with a blank line and output the linker section at the
1644 (List_Mechanisms): Rename to...
1645 (List_Subprogram_Info): ...this.
1646 (List_Array_Info): Call List_Common_Type_Info.
1647 (List_Entities): Adjust to above change and renaming.
1648 (List_Record_Info): Call List_Common_Type_Info.
1650 2019-07-08 Dmitriy Anisimkov <anisimko@adacore.com>
1652 * libgnat/g-sercom.ads
1653 (Serial_Port_Descriptor): New type.
1654 (Serial_Port): Add a comment, make it hold a
1655 Serial_Port_Descriptor.
1656 (To_Ada, To_C): New procedures.
1657 (Port_Data, Port_Data_Access): Remove types.
1658 * libgnat/g-sercom.adb (To_Ada): New stub.
1659 * libgnat/g-sercom__linux.adb, libgnat/g-sercom__mingw.adb:
1660 Update implementations accordingly.
1661 * s-oscons-tmplt.c: Bind Serial_Port_Descriptor to
1662 System.Win32.HANDLE on Windows, and to Interfaces.C.int on
1663 Linux. Add "Interfaces.C." prefix for other basic integer type
1665 * xoscons.adb (Output_Info): Remove the "Interfaces.C." prefix
1666 for subtypes generation.
1668 2019-07-08 Arnaud Charlet <charlet@adacore.com>
1670 * doc/gnat_rm/standard_and_implementation_defined_restrictions.rst:
1671 Update documentation on No_Exceptions restriction.
1672 * gnat_rm.texi: Regenerate.
1674 2019-07-08 Dmitriy Anisimkov <anisimko@adacore.com>
1676 * libgnat/s-os_lib.adb: Do not call __gnat_kill for Invalid_Pid.
1678 2019-07-08 Piotr Trojanek <trojanek@adacore.com>
1680 * sem_util.adb (Enclosing_Package_Or_Subprogram): Do not expect
1681 package and subprogram bodies.
1683 2019-07-08 Bob Duff <duff@adacore.com>
1685 * doc/gnat_ugn/gnat_utility_programs.rst: Remove documentation
1686 of ignored GNATpp switch.
1688 2019-07-08 Hristian Kirtchev <kirtchev@adacore.com>
1690 * doc/gnat_rm/implementation_defined_pragmas.rst:
1691 Update the documentation of pragma Initialize_Scalars.
1692 * gnat_rm.texi: Regenerate.
1694 2019-07-08 Javier Miranda <miranda@adacore.com>
1696 * exp_ch4.adb (Tagged_Membership): Fix regression silently
1697 introduced in r260738 that erroneouslusy causes the evaluation
1698 to True of the membership test when the left operand of the
1699 membership test is a class-wide interface object and the right
1700 operand is a type that implements such interface type.
1702 2019-07-08 Hristian Kirtchev <kirtchev@adacore.com>
1704 * sem_ch13.adb (Analyze_Attribute_Definition_Clause): Do not
1705 register an address clause when its prefix denotes a generic
1708 2019-07-08 Hristian Kirtchev <kirtchev@adacore.com>
1710 * bindo-diagnostics.adb (Diagnose_Cycle): Capture the presence
1711 of an Elaborate_All edge before iterating over the edges of the
1713 (Output_Elaborate_Body_Transition): Update the parameter profile
1714 and the comment on usage. Add a missing case where the edge is
1715 within the context of an Elaborate_All.
1716 (Output_Transition): Update the call to
1717 Output_Elaborate_Body_Transition.
1718 * bindo-graphs.ads, bindo-graphs.adb
1719 (Contains_Elaborate_All_Edge): New routine.
1721 2019-07-08 Piotr Trojanek <trojanek@adacore.com>
1723 * lib-xref-spark_specific.adb (Create_Heap): Set dummy Etype for
1724 the fake __HEAP entity.
1726 2019-07-08 Daniel Mercier <mercier@adacore.com>
1728 * gnat1drv.adb: Suppress warnings on memory representation in
1729 CodePeer compiler mode.
1731 2019-07-08 Nicolas Roche <roche@adacore.com>
1733 * rtinit.c (__gnat_runtime_initialize): Remove dependency on
1736 2019-07-08 Doug Rupp <rupp@adacore.com>
1738 * Makefile.rtl: Handle vxworks7r2 in x86_64 and x86 vxworks7.
1740 2019-07-08 Dmitriy Anisimkov <anisimko@adacore.com>
1742 * Makefile.rtl: Use g-sercom__linux.adb for all linuxes.
1744 2019-07-08 Yannick Moy <moy@adacore.com>
1746 * expander.adb (Expand): Do not reset Analyzed flag always.
1747 * sem_eval.adb (Fold_Ureal): Mark node as analyzed.
1749 2019-07-08 Ed Schonberg <schonberg@adacore.com>
1751 * exp_ch9.adb (Expand_N_Timed_Entry_Call): Do not insert twice
1752 the assignment statement that computes the delay value, to
1753 prevent improper tree sharing when the value is a type
1754 conversion and Float_Overflow checks are enabled.
1756 2019-07-08 Hristian Kirtchev <kirtchev@adacore.com>
1758 * bindo.adb: Update the section on terminology to include new
1759 concepts. Update the section on switches to include new
1761 * bindo.ads: Add type Precedence_Kind.
1762 * bindo-builders.adb: Add with and use clauses for Debug and
1763 Bindo.Validators. Add use clauses for
1764 Bindo.Validators.Invocation_Graph_Validators and
1765 Bindo.Validators.Library_Graph_Validators.
1766 (Build_Invocation_Graph): Validate the graph immediately after
1768 (Build_Library_Graph): Update the parameter profile. The
1769 creation of the graph is now elaboration model-agnostic.
1770 Validate the graph immediately after it was built.
1771 (Create_With_Edge): Create regular with edges for Elaborate and
1772 Elaborate_All edges when the appropriate debug switches are in
1774 * bindo-builders.ads (Build_Library_Graph): Update the parameter
1776 * bindo-diagnostics.adb (Diagnose_Cycle): Track the presence of
1777 an Elaborate_All edge throughout the inspection of the cycle's
1779 (Output_Dynamic_Model_Suggestions): Output the suggestion only
1780 when the cycle contains at least one weak edge where the
1781 successor was statically elaborated.
1782 (Output_Elaborate_Body_Transition, Output_Forced_Transition,
1783 Output_With_Transition): Update the assertions.
1784 * bindo-elaborators.adb: Remove use clauses for
1785 Bindo.Validators.Invocation_Graph_Validators and
1786 Bindo.Validators.Library_Graph_Validators. Remove strings
1787 Add_To_All_Candidates_Msg and Add_To_Comp_Candidates_Msg.
1788 Remove type String_Ptr.
1789 (Add_Vertex, Add_Vertex_If_Elaborable, Create_All_Candidates_Set
1790 Create_Component_Candidates_Set): Remove.
1791 (Create_Component_Vertex_Sets, Create_Vertex_Sets): New routine.
1792 (Elaborate_Component): Update the parameter profile and the
1793 comment on usage. Reimplement the elaboration of a component.
1794 The algorithm will now attempt to elaborate as many vertices
1795 possible. If this is not possible, and a weakly elaborable
1796 vertex is available use unit was compiled using the dynamic
1797 model, the algorithm will elaborate it.
1798 (Elaborate_Library_Graph): Reimplement the elaboration of the
1799 graph. The algorithm will now attempt to elaborate as many
1800 vertices along with their components as possible. If this is not
1801 possible, and a weakly elaborable vertex is available use unit
1802 was compiled using the dynamic model, the algorithm will
1803 elaborate it along with its component.
1804 (Elaborate_Units): Merge with the functionality of
1805 Elaborate_Units_Common.
1806 (Elaborate_Units_Common, Elaborate_Units_Dynamic,
1807 Elaborate_Units_Static): Remove.
1808 (Elaborate_Vertex): Update the parameter profile and the comment
1809 on usage. Reimplemented.
1810 (Find_Best_Candidate): Remove.
1811 (Find_Best_Elaborable_Vertex, Find_Best_Vertex,
1812 Find_Best_Weakly_Elaborable_Vertex, Has_Elaborable_Body,
1813 Insert_Elaborable_Successor, Insert_Vertex): New routines.
1814 (Is_Better_Candidate): Remove.
1815 (Is_Better_Elaborable_Vertex,
1816 Is_Better_Weakly_Elaborable_Vertex,
1817 Is_Suitable_Elaborable_Vertex,
1818 Is_Suitable_Weakly_Elaborable_Vertex): New routines.
1819 (Trace_Candidate_Vertices): Remove.
1820 (Trace_Component): Output the number of strong and weak
1822 (Trace_Unelaborated_Vertices): Remove.
1823 (Trace_Vertex): Output the number of strong and weak
1825 (Trace_Vertices): New routine.
1826 (Update_Successor, Update_Successors): Update the parameter
1827 profile and the comment on usage.
1828 * bindo-graphs.adb: Remove type Precedence_Kind.
1829 (Add_Edge_With_Return): Update the increment of pending
1831 (Add_Vertex): Provide default values for strong and weak
1833 (Complementary_Vertex): Move the initial declaration to the
1834 spec. Update the parameter profile and the comment on usage.
1835 (Contains_Weak_Static_Successor): New routine.
1836 (Create): Update the parameter profile. The creation of the
1837 graph is now elaboration model-agnostic.
1838 (Decrement_Pending_Predecessors): Update the parameter profile
1839 and the comment on usage. Reimplemented.
1840 (Delete_Edge): Update the decrement of pending predecesors.
1841 (Has_Elaborate_Body): Do not treat a vertex as being subject to
1842 Elaborate_Body when a debug switch is in effect.
1843 (Increment_Pending_Predecessors): Update the parameter profile
1844 and the comment on usage. Reimplemented.
1845 (Is_Elaborable_Component): Reimplemented.
1846 (Is_Elaborable_Vertex): Move the initial declaration to the
1847 spec. Reimplemented.
1848 (Is_Elaborate_Body_Pair): New routine.
1849 (Is_Dynamically_Elaborated): Update the parameter profile.
1851 (Is_Weakly_Elaborable_Vertex): New routine.
1852 (Pending_Predecessors): Removed.
1853 (Pending_Predecessors_For_Elaboration,
1854 Pending_Strong_Predecessors, Pending_Weak_Predecessors,
1855 Update_Pending_Predecessors): New routines.
1856 (Update_Pending_Predecessors_Of_Components): Update the
1857 increment of pending predecessors.
1858 * bindo-graphs.ads: Update the components of type
1859 Component_Attributes. Update the components of type
1860 Library_Graph_Attributes. Update the components of type
1861 Library_Graph_Vertex_Attributes. Update the initialization of
1862 No_Component_Attributes. Update the initialization of
1863 No_Library_Graph_Vertex_Attributes.
1864 (Complementary_Vertex, Contains_Weak_Static_Successor): New
1866 (Create): Update the parameter profile and the comment on usage.
1867 (Decrement_Pending_Predecessors, Is_Dynamically_Elaborated):
1868 Update the parameter profile and the comment on usage.
1869 (Is_Elaborate_Body_Pair, Is_Weakly_Elaborable_Vertex): New
1871 (Pending_Predecessors): Removed.
1872 (Pending_Predecessors_For_Elaboration,
1873 Pending_Strong_Predecessors, Pending_Weak_Predecessors): New
1875 * bindo-writers.adb (Write_Components): Moved from the spec.
1876 (Write_Component): Output the strong and weak predecessors.
1877 (Write_Library_Graph): Output the components as part of the
1879 (Write_Library_Graph_Vertex): Output the strong and weak
1881 * bindo-writers.ads (Write_Components): Moved to the body.
1882 * debug.adb: Add and document new GNATbind switches -d_a, -d_b,
1884 * bindo-validators.adb: Minor reformattings.
1886 2019-07-08 Bob Duff <duff@adacore.com>
1888 * libgnat/g-sercom.ads, libgnat/g-sercom__linux.adb (Data_Rate):
1889 Support additional data rates.
1891 2019-07-08 Olivier Hainque <hainque@adacore.com>
1893 * gcc-interface/trans.c (Compilation_Unit_to_gnu): Don't request
1894 DECL_ARTIFICIAL_P on elab proc declarations.
1896 2019-07-08 Eric Botcazou <ebotcazou@adacore.com>
1898 * repinfo.adb (List_Record_Info): Declare Incomplete_Layout and
1899 Not_In_Extended_Main local exceptions.
1900 (List_Structural_Record_Layout): For an extension, raise the
1901 former if the parent subtype has not been built and the latter
1902 if it is not declared in the main source unit. Fall back to the
1903 flat layout if either exception has been raised.
1905 2019-07-08 Ed Schonberg <schonberg@adacore.com>
1907 * libgnat/a-strfix.adb (Delete): The RM describes the semantics
1908 of Delete as equivalent to that of Replace_String with a null
1909 argument. As a result, deleting a null string that starts past
1910 the end of its argument is a noop and must not raise
1913 2019-07-08 Javier Miranda <miranda@adacore.com>
1915 * exp_disp.adb (Register_Primitive): When registering a
1916 primitive in the secondary dispatch table, handle primitive
1917 inherited through several levels of type derivation (required to
1918 properly handle inherited 'null' primitive).
1920 2019-07-08 Bob Duff <duff@adacore.com>
1922 * doc/gnat_ugn/gnat_utility_programs.rst: Document handling of
1923 preprocessor directives in GNATpp.
1925 2019-07-08 Javier Miranda <miranda@adacore.com>
1927 * gnat1drv.adb (Post_Compilation_Validation_Checks:
1928 Validate_Compile_Time_Warning_Errors is now located in sem_prag
1929 (instead of sem_ch13).
1930 * sem_ch13.ads (Validate_Compile_Time_Warning_Error,
1931 Validate_Compile_Time_Warning_Errors): Move to sem_prag.
1933 (Compile_Time_Warnings_Errors): Move to sem_prag.
1934 (Initialize): Remove initialization of table
1935 Compile_Time_Warning_Errors.
1936 (Validate_Compile_Time_Warning_Error,
1937 Validate_Compile_Time_Warning_Errors): Move to sem_prag.
1938 * sem_prag.ads (Validate_Compile_Time_Warning_Errors): New
1940 * sem_prag.adb (Initialize): Initialize table
1941 Compile_Time_Warning_Errors.
1943 2019-07-08 Ed Schonberg <schonberg@adacore.com>
1945 * sem_ch13.adb (Analyze_Aspect_Specifications): For a
1946 pre/postcondition of a generic subprogram declaration, do not
1947 use Relocate_Node on the aspect expression to construct the
1948 corresponding attribute specification, to prevent tree anomalies
1949 when the expression is a call with named actual parameters.
1951 2019-07-08 Javier Miranda <miranda@adacore.com>
1953 * sem_attr.adb (Analyze_Attribute [Attribute_Size]): For pragmas
1954 used to report user defined compile time warning or errors
1955 handle 'Size for types with known static RM size.
1957 2019-07-08 Justin Squirek <squirek@adacore.com>
1959 * exp_imgv.adb (Build_Enumeration_Image_Tables): Default SSO for
1960 the building of image tables.
1961 (Expand_Image_Attribute): Minor cleanup.
1963 2019-07-08 Dmitriy Anisimkov <anisimko@adacore.com>
1965 * libgnat/g-socket.ads, libgnat/g-socket.adb: Improve
1967 (Get_Socket_Option, Set_Socket_Option): Remove default value for
1970 2019-07-08 Ed Schonberg <schonberg@adacore.com>
1972 * sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): For an
1973 unanalized aspect in a generic context that has not been
1974 analyzed yet, if the aspect applies to a type, place the type on
1975 the scope stack to make its components visible, before checking
1976 conformance with the version of the expression analyzed at the
1979 2019-07-05 Justin Squirek <squirek@adacore.com>
1981 * checks.adb (Apply_Accessibility_Check): Add logic to fetch the
1982 function result accessibility level if one is required within
1983 the generated check.
1984 * exp_ch6.adb (Needs_Result_Accessibility_Level): Modify
1985 controlling elsif block to handle more cases such as anonymous
1986 access results and disable checking for coextensions.
1988 2019-07-05 Ed Schonberg <schonberg@adacore.com>
1990 * sem_ch9.adb (Analyze_Accept_Statement): If this is an illegal
1991 accept statement for an enclosing entry abandon analysis to
1992 prevent scope mismatches and potential infinite loops in
1995 2019-07-05 Hristian Kirtchev <kirtchev@adacore.com>
1997 * ali.adb (For_Each_Invocation_Construct,
1998 For_Each_Invocation_Relation): New version.
1999 (Scan_ALI): Initialize field Invocation_Graph_Encoding.
2000 (Set_Invocation_Graph_Encoding): Update the setting of the
2001 invocation graph encoding.
2002 * ali.ads: Move field Invocation_Graph_Encoding from Unit_Record
2003 to ALI_Record because the encoding applies to the whole ALI,
2004 rather than one of the units (spec or body) for which the ALI
2006 (For_Each_Invocation_Construct, For_Each_Invocation_Relation):
2008 * bindo.adb: Update the section on switches. Complete the
2009 section of debugging elaboration order issues.
2010 (Find_Elaboration_Order): Prepare the routine for the switch
2011 from the old to the new elaboration order mechanism.
2012 * bindo-diagnostics.adb (Find_And_Output_Invocation_Paths):
2013 Manage a visited set used by Visit_Vertex.
2014 (Output_All_Cycles_Suggestions,
2015 Output_Dynamic_Model_Suggestions): Clarify the nature of the
2017 (Output_Elaborate_Body_Transition): Update the diagnostic to
2018 emit a better message.
2019 (Output_Forced_Suggestions, Output_Full_Encoding_Suggestions):
2020 Clarify the nature of the suggested switch.
2021 (Visit_Vertex): Update the parameter profile to add a set of
2022 invokers visited during the transition. This set prevents
2023 infinite exploration of the graph in case the invocations are
2025 * bindo-elaborators.adb: Add a use clause for
2026 Bindo.Writers.Dependency_Writers.
2027 (Elaborate_Units_Common): Output the library graph after it has
2028 been augmented with invocation edges. Output just the components
2029 instead of outputting the whole library graph again.
2030 (Elaborate_Units_Dynamic, Elaborate_Units_Static): Output the
2031 dependencies as expressed in the library graph.
2032 * bindo-units.adb (Invocation_Graph_Encoding): Update the
2033 extraction of the invocation graph encoding.
2034 * bindo-writers.adb: Add with and use clauses for Binderr and
2036 (palgc, plgc): New debug routine.
2037 (Write_Components): Moved to the spec. Add a header for the
2039 (Write_Dependencies, Write_Dependencies_Of_Vertex,
2040 Write_Dependency_Edge): New routine.
2041 (Write_Elaboration_Order): Update the logic to follow the format
2042 of Binde's order output.
2043 (Write_Library_Graph): Do not output the components every time
2044 the graph is written.
2045 (Write_Unit): Output the invocation graph encoding of the unit.
2046 Output the invocation constructs and relations for the unit
2048 * bindo-writers.ads (Write_Components): Moved from the body.
2049 (Write_Dependencies): New routine.
2050 * bindusg.adb: Prepare the routine for the switch from the old
2051 to the new elaboration order mechanism.
2052 * debug.adb: Binder switch -d_O is now not associated with any
2054 * einfo.adb (Is_Elaboration_Target): The attribute applies to
2055 packages, as specified by the comment on the attribute usage.
2056 * opt.ads: Add a global flag which controls the choice between
2057 the new and the legacy elaboration order mechanism.
2058 * sem_elab.adb: Add Package_Target to type Target_Kind.
2059 (Build_Elaborate_Body_Procedure, Build_Elaborate_Procedure,
2060 Build_Elaborate_Spec_Procedure, Check_Elaboration_Scenarios,
2061 Check_SPARK_Model_In_Effect): Use Main_Unit_Entity to obtain the
2062 entity of the main unit.
2063 (Create_Package_Rep): New routine.
2064 (Create_Target_Rep): Add processing for packages.
2065 (Declaration_Placement_Of_Node, Has_Prior_Elaboration): Use
2066 Main_Unit_Entity to obtain the entity of the main
2068 (Invocation_Graph_Recording_OK): Prepare the routine for the
2069 switch from the old to the new elaboration order mechanism.
2070 (Main_Unit_Entity): New routine.
2071 (Meet_Elaboration_Requirement,
2072 Process_Conditional_ABE_Variable_Reference): Use
2073 Main_Unit_Entity to obtain the entity of the main unit.
2074 (Process_Invocation_Instantiation): New routine.
2075 (Process_Invocation_Scenario): Add processing for
2077 * switch-b.adb (Scan_Binder_Switches): Prepare the routine for
2078 the switch from the old to the new elaboration order mechanism.
2080 2019-07-05 Joffrey Huguet <huguet@adacore.com>
2082 * libgnat/a-textio.adb: Add abstract state refinment.
2083 * libgnat/a-textio.ads: Add File_System abstract state. Add
2084 global contracts, contract cases, preconditions and
2085 postconditions to procedures and functions.
2086 (Set_Input, Set_Output, Set_Error, Standard_Input,
2087 Standard_Output, Standard_Error, Current_Input, Current_Output,
2088 Current_Error): Turn SPARK_Mode off.
2089 (Get_Line): Turn SPARK_Mode off on Get_Line functions.
2090 * libgnat/a-tideio.ads, libgnat/a-tienio.ads,
2091 libgnat/a-tifiio.ads, libgnat/a-tiflio.ads,
2092 libgnat/a-tiinio.ads, libgnat/a-timoio.ads: Add global
2093 contracts, contract cases, preconditions and postconditions to
2094 procedures and functions.
2096 2019-07-05 Arnaud Charlet <charlet@adacore.com>
2098 * doc/gnat_ugn/platform_specific_information.rst: Refresh doc on
2099 installing from the command line on Windows. Remove obsolete
2101 * gnat_ugn.texi: Regenerate.
2103 2019-07-05 Vasiliy Fofanov <fofanov@adacore.com>
2105 * libgnat/a-wichha.ads (Is_Alphanumeric): Replace comment with
2106 the correct one. Also capitalize references to False
2109 2019-07-05 Eric Botcazou <ebotcazou@adacore.com>
2111 * exp_ch4.adb (Expand_N_Indexed_Component): Do not expand actual
2112 parameters of function calls here either.
2114 2019-07-05 Hristian Kirtchev <kirtchev@adacore.com>
2116 * bindo-units.adb, checks.adb, exp_attr.adb, exp_ch3.adb,
2117 exp_ch4.adb, exp_pakd.adb, lib-writ.adb, libgnat/g-traceb.adb,
2118 libgnat/g-traceb.ads, libgnat/s-stratt.ads, sem_aux.ads,
2119 sem_util.adb: Minor reformatting.
2121 2019-07-05 Ed Schonberg <schonberg@adacore.com>
2123 * sem_ch13.adb (Build_Predicate_Functions): If a subtype that
2124 carries a static predicate aspect is frozen immediately after
2125 its declaration, ensure that the generated function body created
2126 for predicate checking is inserted after the corresponding
2127 subprogram declaration, which is created at the point the
2128 declaration is elaborated.
2130 2019-07-05 Hristian Kirtchev <kirtchev@adacore.com>
2132 * exp_ch7.adb (Cleanup_Record): Use the underlying type when
2133 checking for components with tasks.
2135 2019-07-05 Arnaud Charlet <charlet@adacore.com>
2137 * libgnarl/s-osinte__linux.ads: Link with -lrt before -lpthread.
2139 2019-07-05 Ed Schonberg <schonberg@adacore.com>
2141 * exp_pakd.adb (Expand_Bit_Packed_Element_Set): Add explicit
2142 range checks when the index type of the bit-packed array is an
2143 enumeration type with a non-standard representation,
2145 2019-07-05 Hristian Kirtchev <kirtchev@adacore.com>
2147 * sem_res.adb (Is_Control_Flow_Statement): Delay statements
2148 contain an expression, which in turn may have side effects and
2149 affect the infinite recursion. As a result, delay statements
2150 should not be treated specially.
2152 2019-07-05 Arnaud Charlet <charlet@adacore.com>
2154 * libgnarl/s-linux.ads, libgnarl/s-linux__alpha.ads,
2155 libgnarl/s-linux__android.ads, libgnarl/s-linux__hppa.ads,
2156 libgnarl/s-linux__mips.ads, libgnarl/s-linux__riscv.ads,
2157 libgnarl/s-linux__sparc.ads: Fix typos in comments.
2159 2019-07-05 Hristian Kirtchev <kirtchev@adacore.com>
2161 * sem_res.adb (Check_Infinite_Recursion): Reimplemented.
2162 (Enclosing_Declaration_Or_Statement,
2163 Invoked_With_Different_Arguments, Is_Conditional_Statement,
2164 Is_Control_Flow_Statement, Is_Immediately_Within_Body,
2165 Is_Raise_Idiom, Is_Raise_Statement, Is_Sole_Statement,
2166 Preceded_By_Control_Flow_Statement,
2167 Within_Conditional_Statement): New routines.
2169 2019-07-05 Javier Miranda <miranda@adacore.com>
2171 * exp_ch4.adb (Expand_N_Type_Conversion): Do not apply an
2172 accessibility check when the conversion is an access to
2173 class-wide interface type and it is an actual parameter.
2174 * exp_ch6.adb (Expand_Call_Helper): Add documentation on the
2175 accessibility level of an anonymous allocator defining the value
2176 of an access parameter.
2177 * sem_util.ads, sem_util.adb (Dynamic_Accessibility_Level): Add
2178 support for an anonymous allocator whose type is that of a
2179 stand-alone object of an anonymous access to object type.
2181 2019-07-05 Piotr Trojanek <trojanek@adacore.com>
2183 * einfo.ads, sem_res.adb: Typo fixes in comments.
2185 2019-07-05 Bob Duff <duff@adacore.com>
2187 * exp_ch6.adb (Is_Build_In_Place_Function): Narrow the check for
2188 Has_Foreign_Convention to the imported case only. If a
2189 build-in-place function is exported, and called from Ada code,
2190 build-in-place protocols should be used.
2192 2019-07-05 Ed Schonberg <schonberg@adacore.com>
2194 * sem_util.adb (Encloing_Subprogram): If Enclosing_Dynamic_Scope
2195 is a loop, continue climbing the scope stack to find the
2196 enclosing subprogram.
2197 (Gather_Components): Handle properly a choice in a record
2198 aggregate that is given by a subtype with a static predicate.
2200 2019-07-05 Javier Miranda <miranda@adacore.com>
2202 * debug.adb (-gnatd.K): Leave available this switch.
2203 * contracts.adb (Build_And_Analyze_Contract_Only_Subprograms):
2205 * scil_ll.ads, scil_ll.adb (Contract_Only_Body_Flag,
2206 Contract_Only_Body_Nodes, Get_Contract_Only_Body,
2207 Is_Contract_Only_Body, Set_Contract_Only_Body): Remove.
2209 2019-07-05 Pierre-Marie de Rodat <derodat@adacore.com>
2211 * libgnat/a-strunb.ads: Import documentation from the RM
2213 2019-07-05 Pierre-Marie de Rodat <derodat@adacore.com>
2215 * libgnat/a-strfix.ads: Import documentation from the RM
2217 2019-07-05 Yannick Moy <moy@adacore.com>
2219 * adabkend.adb (Scan_Back_End_Switches): Accept -Og and -Ofast
2222 2019-07-05 Hristian Kirtchev <kirtchev@adacore.com>
2224 * ali.adb: Relocate types Invocation_Construct_Record,
2225 Invocation_Relation_Record, and Invocation_Signature_Record to
2226 the body of ALI. Relocate tables Invocation_Constructs,
2227 Invocation_Relations, and Invocation_Signatures to the body of
2228 ALI. Remove type Body_Placement_Codes. Add new types
2229 Declaration_Placement_Codes, and
2230 Invocation_Graph_Encoding_Codes. Update the literals of type
2231 Invocation_Graph_Line_Codes.
2232 (Add_Invocation_Construct): Update the parameter profile. Add an
2233 invocation construct built from all attributes provided.
2234 (Add_Invocation_Relation): Update the parameter profile. Add an
2235 invocation relation built from all attributes provided.
2236 (Body_Placement): New routine.
2237 (Body_Placement_Kind_To_Code, Code_To_Body_Placement_Kind):
2239 (Code_To_Declaration_Placement_Kind,
2240 Code_To_Invocation_Graph_Encoding_Kind, Column,
2241 Declaration_Placement_Kind_To_Code, Extra,
2242 For_Each_Invocation_Construct, For_Each_Invocation_Relation,
2243 Invocation_Graph_Encoding,
2244 Invocation_Graph_Encoding_Kind_To_Code, Invoker, Kind, Line,
2245 Locations, Name): New routine.
2246 (Scan_Invocation_Construct_Line): Reimplement the scanning
2248 (Scan_Invocation_Graph_Attributes_Line): New routine.
2249 (Scan_Invocation_Graph_Line): Use a case statement to dispatch.
2250 (Scan_Invocation_Relation_Line): Reimplement the scanning
2252 (Scope): New routine.
2253 (Set_Invocation_Graph_Encoding, Signature, Spec_Placement,
2254 Target): New routine.
2255 * ali.ads: Add new type Invocation_Graph_Encoding_Kind. Add
2256 component Invocation_Graph_Encoding to type Unit_Record.
2257 Relocate various types and data structures to the body of ALI.
2258 (Add_Invocation_Construct, Add_Invocation_Relation): Update the
2260 (Body_Placement): New routine.
2261 (Body_Placement_Kind_To_Code, Code_To_Body_Placement_Kind):
2263 (Code_To_Declaration_Placement_Kind,
2264 Code_To_Invocation_Graph_Encoding_Kind, Column,
2265 Declaration_Placement_Kind_To_Code, Extra,
2266 For_Each_Invocation_Construct, For_Each_Invocation_Relation,
2267 Invocation_Graph_Encoding,
2268 Invocation_Graph_Encoding_Kind_To_Code, Invoker, Kind, Line,
2269 Locations, Name, Scope, Set_Invocation_Graph_Encoding,
2270 Signature, Spec_Placement, Target): New routine.
2271 * bindo.adb: Add with clause for Binde. Add with and use
2272 clauses for Debug. Update the documentation. Add new switches.
2273 (Find_Elaboration_Order): Dispatch to the proper elaboration
2275 * bindo-augmentors.adb:
2276 Remove with and use clauses for GNAT and GNAT.Sets. Remove
2277 membership set VS. Update the parameter profiles of most
2278 routines to use better parameter names. Update the
2279 implementation of most routine to use the new parameter names.
2280 Remove various redundant assertions.
2281 * bindo-builders.adb: Use better names for instantiated data
2282 structures. Update all references to these names. Update the
2283 parameter profiles of most routines to use better parameter
2284 names. Update the implementation of most routine to use the new
2286 (Build_Library_Graph): Update the parameter profile. Update the
2288 (Create_Vertex): Reimplemented.
2289 (Declaration_Placement_Vertex): New routine.
2290 * bindo-builders.ads (Build_Library_Graph): Update the parameter
2291 profile and comment on usage.
2292 * bindo-diagnostics.adb: Almost a new unit.
2293 * bindo-diagnostics.ads: Add a use clause for
2294 Bindo.Graphs.Invocation_Graphs. Remove package
2296 (Diagnose_Circularities): New routine.
2297 * bindo-elaborators.adb: Remove the with and use clauses for
2298 Binderr and GNAT.Sets. Remove the use clause for
2299 Bindo.Diagnostics.Cycle_Diagnostics. Remove membership set VS.
2300 Update the parameter profiles of most routines to use better
2301 parameter names. Update the implementation of most routine to
2302 use the new parameter names. (Elaborate_Units_Common): Update
2303 the parameter profile. Pass an infication to the library graph
2304 builder whether the dynamic model is in effect.
2305 (Elaborate_Units_Dynamic, Elaborate_Units_Static): Use
2306 Diagnose_Circularities to provide diagnostics.
2307 (Update_Successor): Use routine In_Same_Component to determine
2308 whether the predecessor and successor reside in different
2310 * bindo-graphs.adb: Add with and use clauses for Butil, Debug,
2311 Output, and Bindo.Writers. Remove with and use clauses for
2312 GNAT.Lists. Update the parameter profiles of most routines to
2313 use better parameter names. Update the implementation of most
2314 routine to use the new parameter names. Remove various
2315 redundant assertions. Remove doubly linked list EL. Add new
2316 type Precedence_Kind.
2317 (Add_Cycle): New routine.
2318 (Add_Vertex): Update the parameter profile. Update the creation
2319 of vertex attributes.
2320 (Add_Vertex_And_Complement, Body_Vertex, Column,
2321 Complementary_Vertex, Copy_Cycle_Path, Cycle_Kind_Of): New
2323 (Destroy_Invocation_Graph_Edge, Destroy_Library_Graph_Cycle,
2324 Destroy_Library_Graph_Edge, Extra, File_Name,
2325 Find_All_Cycles_Through_Vertex, Find_All_Cycles_With_Edge,
2326 Find_Cycles, Find_First_Lower_Precedence_Cycle,
2327 Get_LGC_Attributes, Has_Next, Hash_Library_Graph_Cycle,
2328 Hash_Library_Graph_Cycle_Attributes, Highest_Precedence_Cycle,
2329 Highest_Precedence_Edge, In_Same_Component, Insert_And_Sort,
2330 Invocation_Edge_Count, Invocation_Graph_Encoding,
2331 Is_Cycle_Initiating_Edge, Is_Cyclic_Edge,
2332 Is_Cyclic_Elaborate_All_Edge, Is_Cyclic_Elaborate_Body_Edge,
2333 Is_Cyclic_Elaborate_Edge, Is_Cyclic_Forced_Edge,
2334 Is_Cyclic_Invocation_Edge, Is_Cyclic_With_Edge,
2335 Is_Dynamically_Elaborated, Is_Elaborate_All_Edge,
2336 Is_Elaborate_Body_Edge, Is_Elaborate_Edge: New routines.
2337 (Is_Existing_Predecessor_Successor_Relation): Removed.
2338 (Is_Forced_Edge, Is_Invocation_Edge, Is_Recorded_Cycle,
2339 Is_Recorded_Edge, Is_With_Edge, Iterate_Edges_Of_Cycle, Kind,
2340 Length): New routine.
2341 (Lib_Vertex): Removed.
2342 (Line, Links_Vertices_In_Same_Component,
2343 Maximum_Invocation_Edge_Count, Next, Normalize_And_Add_Cycle,
2344 Normalize_Cycle_Path, Number_Of_Cycles, Path, Precedence,
2345 Remove_Vertex_And_Complement, Sequence_Next_Cycle): New routines.
2346 (Sequence_Next_IGE_Id): Renamed to Sequence_Next_Edge.
2347 (Sequence_Next_IGV_Id): Renamed to Sequence_Next_Vertex.
2348 (Sequence_Next_LGE_Id): Renamed to Sequence_Next_Edge.
2349 (Sequence_Next_LGV_Id): Renamed to Sequence_Next_Vertex.
2350 (Set_Is_Existing_Predecessor_Successor_Relation): Removed.
2351 (Set_Is_Recorded_Cycle, Set_Is_Recorded_Edge,
2352 Set_LGC_Attributes, Spec_Vertex, Trace_Cycle, Trace_Edge,
2353 Trace_Eol, Trace_Vertex): New routines.
2354 * bindo-graphs.ads: Add with and use clauses for Types and
2355 GNAT.Lists. Update the parameter profiles of most routines to
2356 use better parameter names. Update the implementation of most
2357 routine to use the new parameter names. Add the new
2358 instantiated data structures IGE_Lists, IGV_Sets, LGC_Lists,
2359 LGE_Lists, LGE_Sets, LGV_Sets, and RC_Sets. Add new type
2360 Library_Graph_Cycle_Id along with an empty and initial value.
2361 Remove component Lib_Vertex and add new components Body_Vertex
2362 and Spec_Vertex to type Invocation_Graph_Vertex_Attributes. Add
2363 new type Library_Graph_Cycle_Kind. Add new iterators
2364 All_Cycle_Iterator and Edges_Of_Cycle_Iterator. Add new type
2365 Library_Graph_Cycle_Attributes. Add new components
2366 Cycle_Attributes, Cycles, and Dynamically_Elaborated to type
2367 Library_Graph_Attributes.
2368 (Body_Vertex, Column, Destroy_Invocation_Graph_Edge,
2369 Destroy_Library_Graph_Cycle_Attributes,
2370 Destroy_Library_Graph_Edge, Extra, File_Name, Find_Cycles,
2371 Has_Elaborate_All_Cycle, Has_Next, Hash_Library_Graph_Cycle,
2372 Hash_Library_Graph_Cycle_Attributes, Highest_Precedence_Cycle,
2373 In_Same_Component, Invocation_Edge_Count,
2374 Invocation_Graph_Encoding, Is_Dynamically_Elaborated,
2375 Is_Elaborate_All_Edge, Is_Elaborate_Body_Edge,
2376 Is_Elaborate_Edge, Is_Forced_Edge, Is_Invocation_Edge,
2377 Is_With_Edge, Iterate_All_Cycles, Iterate_Edges_Of_Cycle, Kind):
2379 (Length, Lib_Vertex, (Line, Next, Number_Of_Cycles, Present,
2380 Same_Library_Graph_Cycle_Attributes, Spec_Vertex): New routines.
2381 * bindo-units.adb (File_Name, Invocation_Graph_Encoding): New
2383 * bindo-units.ads: Add new instantiated data structure
2385 (File_Name, Invocation_Graph_Encoding): New routine.
2386 * bindo-validators.adb: Remove with and use clauses for GNAT and
2387 GNAT.Sets. Remove membership set US. Update the parameter
2388 profiles of most routines to use better parameter names. Update
2389 the implementation of most routine to use the new parameter
2391 (Validate_Cycle, Validate_Cycle_Path, Validate_Cycles,
2392 Validate_Invocation_Graph_Vertex): Remove the validation of
2393 component Lib_Vertex. Add the validation of components
2394 Body_Vertex and Spec_Vertex.
2395 (Write_Error): New routine.
2396 * bindo-validators.ads (Validate_Cycles): New routine.
2397 * bindo-writers.adb: Update the parameter profiles of most
2398 routines to use better parameter names. Update the
2399 implementation of most routine to use the new parameter names.
2400 (Write_Cycle, Write_Cyclic_Edge, Write_Cycles): New routines.
2401 (Write_Invocation_Graph_Vertex): Remove the output of component
2402 Lib_Vertex. Add the output of components Body_Vertex and
2404 * bindo-writers.ads (Write_Cycles): New routine.
2405 * debug.adb: Use binder switches -d_C and -d_P, add
2406 documentation on their usage.
2407 * gnatbind.adb: Remove with and use clauses for Binde. Delegate
2408 the choice of elaboration mechanism to Bindo.
2409 * lib-writ.adb (Column, Extra, Invoker, Kind, Line, Locations,
2410 Name, Placement, Scope, Signature, Target): Removed.
2411 (Write_Invocation_Graph): Moved at the top level.
2412 (Write_Invocation_Graph_Attributes): New routine.
2413 (Write_Invocation_Relation, Write_Invocation_Signature): Moved
2415 * lib-writ.ads: Add a documentation section on invocation graph
2417 * sem_elab.adb (Body_Placement_Of): New routine.
2418 (Declare_Invocation_Construct): Update the call to
2419 Add_Invocation_Construct.
2420 (Declaration_Placement_Of_Node): New routine.
2421 (Get_Invocation_Attributes): Correct the retrieval of the
2422 enclosing subprogram where the postcondition procedure lives.
2423 (Placement_Of, Placement_Of_Node): Removed.
2424 (Record_Invocation_Graph): Record the encoding format used.
2425 (Record_Invocation_Graph_Encoding): New routine.
2426 (Record_Invocation_Relation): Update the call to
2427 Add_Invocation_Relation.
2428 (Spec_Placement_Of): Removed.
2429 * libgnat/g-lists.ads, libgnat/g-lists.adb (Equal): New routine.
2431 2019-07-05 Ed Schonberg <schonberg@adacore.com>
2433 * checks.adb (Apply_Predicate_Check): Except within the
2434 subprogram body that defines the formal, do not apply predicate
2435 check on a formal IN parameter: such a check is redundant and
2436 its expansion can lead to out-of-scope references when it is
2437 originates in a function call in a precondition,
2439 2019-07-05 Yannick Moy <moy@adacore.com>
2441 * sem_res.adb (Resolve_Call): Cannot inline in quantified
2443 * sem_util.adb, sem_util.ads (In_Quantified_Expression): New
2446 2019-07-05 Bob Duff <duff@adacore.com>
2448 * doc/gnat_rm/standard_and_implementation_defined_restrictions.rst:
2450 * gnat_rm.texi: Regenerate.
2452 2019-07-05 Bob Duff <duff@adacore.com>
2454 * exp_attr.adb (Input): Take the No_Stream_Optimizations
2455 restriction into account.
2457 2019-07-05 Claire Dross <dross@adacore.com>
2459 * libgnat/a-cofove.ads, libgnat/a-cofove.adb: Definite formal
2460 vectors are now always bounded so that they do not need to be
2463 2019-07-05 Dmitriy Anisimkov <anisimko@adacore.com>
2465 * libgnat/g-traceb.ads, libgnat/g-traceb.adb (Call_Chain): New
2468 2019-07-04 James Clarke <jrtc27@debian.org>
2470 * libgnarl/s-osinte__kfreebsd-gnu.ads (clockid_t): Make type
2472 (CLOCK_REALTIME): Make value public.
2474 2019-07-04 Javier Miranda <miranda@adacore.com>
2476 * exp_tss.adb (Init_Proc): Adding missing support for access to
2477 subprograms and access to protected subprograms of non-default
2480 2019-07-04 Eric Botcazou <ebotcazou@adacore.com>
2482 * gnat1drv.adb (Adjust_Global_Switches): Use proper interface to
2483 set the validity settings in CodePeer mode.
2484 * par-load.adb (Load): Remove all code dealing with validity
2486 * validsw.ads (Validity_Check_Copies): Alphabetize.
2487 * validsw.adb (Reset_Validity_Check_Options): Set all options to
2489 (Save_Validity_Check_Options): Save all options.
2491 2019-07-04 Hristian Kirtchev <kirtchev@adacore.com>
2493 * exp_ch3.adb, exp_ch4.adb, exp_ch4.ads, exp_ch5.adb,
2494 exp_ch7.adb, exp_ch9.adb, exp_ch11.adb, exp_unst.adb,
2495 rtsfind.ads, sem_attr.adb, sem_ch10.adb, sem_ch12.adb,
2496 sem_ch13.adb, sem_dim.adb, sem_disp.adb, xref_lib.adb: Minor
2499 2019-07-04 Joffrey Huguet <huguet@adacore.com>
2501 * libgnarl/a-taside.ads: Add assertion policy to ignore
2503 (Abort_Task, Is_Terminated, Is_Callable): Add preconditions.
2505 2019-07-04 Eric Botcazou <ebotcazou@adacore.com>
2507 * doc/gnat_rm/implementation_defined_pragmas.rst: Fix
2508 capitalization and parenthesis glitches.
2509 * gnat_rm.texi: Regenerate.
2511 2019-07-04 Ed Schonberg <schonberg@adacore.com>
2513 * sem_ch10.adb (Remove_Context_Clauses): Handle properly the
2514 removal of a limited_with_clause which appears in the library
2515 unit oF the main unit, when some other unit in the context has a
2516 regular with_clause on the same unit, to prevent spurious
2517 visibility errors in the subsequent analysis of pending instance
2520 2019-07-04 Hristian Kirtchev <kirtchev@adacore.com>
2522 * sem_elab.adb: Add new type Elaboration_Phase_Status along with
2523 a global to keep track of the elaboration phase status.
2524 Initialize all internal data structures to Nil for services
2525 Elaborated_Units, Internal_Representation, and Scenario_Storage.
2526 (Build_Call_Marker): Do not create a call marker when the
2527 elaboration phase is not active.
2528 (Build_Variable_Reference_Marker): Do not create a call marker
2529 when the elaboration phase is not active.
2530 (Check_Elaboration_Scenarios): Destroy all internal structures
2531 when the elaboration phase does not have to run. Do not execute
2532 when the elaboration phase is not active.
2533 (Elaboration_Phase_Active): New routine.
2534 (Finalize_All_Data_Structures): New routine.
2535 (Initialize): Initialize all internal data structures and signal
2536 that the elaboration phase has started.
2537 (Initialize_All_Data_Structures): New routine.
2538 (Initialize_Elaborated_Units): Initialize all internal data
2540 (Initialize_Internal_Representation): Initialize all internal
2542 (Initialize_Scenario_Storage): Initialize all internal data
2544 (Kill_Elaboration_Scenario): Do not execute when the elaboration
2545 phase is not active.
2546 (Set_Elaboration_Phase): New routine.
2547 (Update_Elaboration_Scenario): Do not execute when the
2548 elaboration phase is not active.
2550 2019-07-04 Gary Dismukes <dismukes@adacore.com>
2552 * sem_ch6.adb (Analyze_Subprogram_Body_Helper): The special
2553 treatment of calling Mask_Unfrozen_Types must also be done in
2554 the case of an Ignored_Ghost_Entity, because Expander_Active is
2557 2019-07-04 Yannick Moy <moy@adacore.com>
2559 * sem_prag.adb (Check_Library_Level_Entity): Update for new rule
2562 2019-07-04 Justin Squirek <squirek@adacore.com>
2564 * sem_disp.adb (Check_Controlling_Formals): Obtain the full view
2565 before type comparison.
2567 2019-07-04 Ed Schonberg <schonberg@adacore.com>
2569 * exp_ch4.ads, exp_ch4.adb (Build_Eq_Call): New visible
2570 subprogram, extracted from Expand_Composite_Equality, to handle
2571 properly the composition of equality for variant record types.
2572 * exp_ch3.adb (MAke_Eq_If): Use Build_Eq_Call for each
2573 component, to handle properly the case of a component with a
2574 user-defined equality. Revert to predefined equality if the
2575 user-defined operation is abstract, to maintain compatibility
2576 with older versions,
2578 2019-07-04 Justin Squirek <squirek@adacore.com>
2580 * exp_ch3.adb (Build_Initialization_Call): Fixup
2581 *_skip_null_excluding_check argument to handle new default.
2582 (Init_Formals): Make *_skip_null_excluding_check formal default
2584 * exp_ch4.adb (Expand_N_Allocator): Add comment to note heavy
2587 2019-07-04 Bob Duff <duff@adacore.com>
2589 * sem_ch3.adb (Access_Definition): Do not create a master unless
2590 Tasking_Allowed. Otherwise, this fails on restricted runtimes.
2592 2019-07-04 Hristian Kirtchev <kirtchev@adacore.com>
2594 * sem_util.adb (Propagate_DIC_Attributes): Do not propagate the
2595 Default_Initial_Condition attributes to an incomplete type.
2597 2019-07-04 Ed Schonberg <schonberg@adacore.com>
2599 * sem_attr.adb (Check_Array_Type): An array type attribute such
2600 as 'First can be applied to an unconstrained array tyope when
2601 the attribute reference appears within an aspect specification
2602 and the prefix is a current instance, given that the prefix of
2603 the attribute will become a formal of the subprogram that
2604 implements the aspect (typically a predicate check).
2606 2019-07-04 Piotr Trojanek <trojanek@adacore.com>
2608 * sem_util.adb (Yields_Synchronized_Object): Fix typos in
2611 2019-07-04 Yannick Moy <moy@adacore.com>
2613 * sem_util.adb (Yields_Synchronized_Object): Adapt to new SPARK
2616 2019-07-04 Yannick Moy <moy@adacore.com>
2618 * sem_spark.adb (Check_Statement): Only check permission of
2619 object in extended return when it is of a deep type.
2621 2019-07-04 Justin Squirek <squirek@adacore.com>
2623 * sem_ch12.adb (Perform_Appropriate_Analysis): Added for
2624 selecting which type of analysis based on wheither the
2625 instantiation is a generic at the library-level. In which case
2626 expansion during analysis.
2627 (Preanalyze_Actuals): Modify calls to Analyze to use the new
2630 2019-07-04 Ed Schonberg <schonberg@adacore.com>
2632 * exp_unst.adb: Handle conditional expressions.
2634 2019-07-04 Yannick Moy <moy@adacore.com>
2636 * sem_spark.adb (Check_Package_Spec, Check_Package_Body): Only
2637 analyze parts of the code marked in SPARK.
2639 2019-07-04 Hristian Kirtchev <kirtchev@adacore.com>
2641 * erroutc.adb, exp_aggr.adb, inline.adb, opt.adb, sem_ch3.adb:
2644 2019-07-04 Yannick Moy <moy@adacore.com>
2646 * sem_spark.adb (Explanation, Get_Expl): New functions to get
2647 the explanation for a permission mismatch.
2648 (Perm_Error, Perm_Mismatch, Perm_Error_Loop_Exit): Take
2649 explanation into account for issuing a more precise error
2651 (Set_Perm_Prefixes, Set_Perm_Extensions,
2652 Set_Perm_Extensions_Move): Pass suitable argument for the
2655 2019-07-04 Arnaud Charlet <charlet@adacore.com>
2657 * exp_aggr.adb (In_Place_Assign_OK): Moved to top level and add
2658 support for record aggregates.
2659 (Component_Check): Use Is_CCG_Supported_Aggregate instead of a
2660 similar local predicate.
2661 (Convert_To_Assignments): Take advantage of In_Place_Assign_OK
2662 predicate when possible.
2663 (Is_CCG_Supported_Aggregate): Return False for records with
2664 representation clauses and fix the logic for dealing with nested
2667 2019-07-04 Piotr Trojanek <trojanek@adacore.com>
2669 * opt.adb (Set_Config_Switches): Keep assertions policy as
2670 enabled when analysing internal units in GNATprove mode.
2672 2019-07-04 Arnaud Charlet <charlet@adacore.com>
2674 * exp_ch4.adb (Expand_Short_Circuit_Operator): Strip
2675 N_Variable_Reference_Marker when checking for the presence of
2678 2019-07-04 Arnaud Charlet <charlet@adacore.com>
2680 * exp_aggr.adb (Check_Component): Take into account type
2683 2019-07-04 Dmitriy Anisimkov <anisimko@adacore.com>
2685 * doc/gnat_ugn/platform_specific_information.rst: Document
2686 Windows socket timeout particularity.
2687 * gnat_ugn.texi: Regenerate.
2688 * gsocket.h: Include versionhelpers.h.
2689 * socket.c (__gnat_minus_500ms): New function.
2690 * libgnat/g-sothco.ads (Minus_500ms_Windows_Timeout): New
2692 * libgnat/g-socket.adb (Set_Socket_Option): Refactor to remove
2693 500ms from the requested timeout only on old Windows version.
2695 2019-07-04 Thomas Quinot <quinot@adacore.com>
2697 * get_scos.adb: Remove bogus, dead code.
2699 2019-07-04 Ed Schonberg <schonberg@adacore.com>
2701 * sem_dim.adb (Analyze_Dimension_Array_Aggregate): If the
2702 component is an entity name, its dimensions are those of its
2705 2019-07-03 Bob Duff <duff@adacore.com>
2707 * doc/gnat_ugn/gnat_utility_programs.rst: Document new flags in
2710 2019-07-03 Hristian Kirtchev <kirtchev@adacore.com>
2712 * binde.adb: Remove with clause for System.OS_Lib.
2713 (Force_Elab_Order): Refactor the majority of the code in Butil.
2714 Use the new forced units iterator to obtain unit names.
2715 * bindo-builders.adb: Add with and use clauses for Binderr,
2716 Butil, Opt, Output, Types, GNAT, and GNAT.Dynamic_HTables. Add
2717 a hash table which maps units to line number in the forced
2718 elaboration order file.
2719 (Add_Unit): New routine.
2720 (Build_Library_Graph): Create forced edges between pairs of
2721 units listed in the forced elaboration order file.
2722 (Create_Forced_Edge, Create_Forced_Edges, Destroy_Line_Number,
2723 Duplicate_Unit_Error, Hash_Unit, Internal_Unit_Info,
2724 Is_Duplicate_Unit, Missing_Unit_Info): New routines.
2725 * bindo-graphs.adb (Is_Internal_Unit, Is_Predefined_Unit):
2726 Refactor some of the behavior to Bindo-Units.
2727 * bindo-graphs.ads: Enable the enumeration literal for forced
2729 * bindo-units.adb, bindo-units.ads (Is_Internal_Unit,
2730 Is_Predefined_Unit): New routines.
2731 * butil.adb: Add with and use clauses for Opt, GNAT, and
2732 System.OS_Lib. Add with clause for Unchecked_Deallocation.
2733 (Has_Next, Iterate_Forced_Units, Next, Parse_Next_Unit_Name,
2734 Read_Forced_Elab_Order_File): New routines.
2735 * butil.ads: Add with and use clauses for Types. Add new
2736 iterator over the units listed in the forced elaboration order
2738 (Has_Next, Iterate_Forced_Units, Next): New routine.
2739 * namet.adb, namet.ads (Present): New routine.
2741 2019-07-03 Bob Duff <duff@adacore.com>
2743 * sem_ch3.adb (Access_Definition): The code was creating a
2744 master in the case where the designated type is a class-wide
2745 interface type. Create a master in the noninterface case as
2746 well. That is, create a master for all limited class-wide types.
2748 2019-07-03 Yannick Moy <moy@adacore.com>
2750 * erroutc.adb (Sloc_In_Range): New function to determine whether
2751 the range of a pragma Warnings covers a location, taking
2752 instantiations into account.
2754 2019-07-03 Johannes Kanig <kanig@adacore.com>
2756 * osint.ads, osint.adb (Get_First_Main_File_Name): New routine
2757 to access the first file provided on the command line.
2759 2019-07-03 Ed Schonberg <schonberg@adacore.com>
2761 * inline.adb (Process_Formals_In_Aspects): New procedure within
2762 Expand_Inlined_Call, to perform a replacement of references to
2763 formals that appear in aspect specifications within the body
2766 2019-07-03 Justin Squirek <squirek@adacore.com>
2768 * sem_ch8.adb (Analyze_Object_Renaming): Add call to search for
2769 the appropriate actual subtype of the object renaming being
2771 (Check_Constrained_Object): Minor cleanup.
2773 2019-07-03 Yannick Moy <moy@adacore.com>
2775 * sem_spark.adb (Get_Observed_Or_Borrowed_Expr): New function to
2776 return go through traversal function call.
2777 (Check_Type): Consistently use underlying type.
2778 (Get_Perm): Adapt for case of elaboration code where variables
2779 are not declared in the environment. Remove incorrect handling
2780 of borrow and observe.
2782 2019-07-03 Hristian Kirtchev <kirtchev@adacore.com>
2784 * inline.adb (Build_Return_Object_Formal): New routine.
2785 (Can_Split_Unconstrained_Function): Code clean up.
2786 (Copy_Formals,Copy_Return_Object): New routines.
2787 (Split_Unconstrained_Function): Code clean up and refactoring.
2789 2019-07-03 Gary Dismukes <dismukes@adacore.com>
2791 * bindo-augmentors.adb, bindo-augmentors.ads,
2792 bindo-builders.ads, bindo-elaborators.adb, sem_ch12.adb,
2793 sem_ch13.adb, sem_spark.adb, sinfo.ads: Minor editorial
2794 corrections and reformatting.
2796 2019-07-03 Bob Duff <duff@adacore.com>
2798 * sem_warn.adb (Check_Infinite_Loop_Warning): Avoid the warning
2799 if an Iterator_Specification is present.
2801 2019-07-03 Bob Duff <duff@adacore.com>
2803 * doc/gnat_ugn/gnat_utility_programs.rst: Document default
2806 2019-07-03 Hristian Kirtchev <kirtchev@adacore.com>
2808 * ali.adb: Add with and use clauses for GNAT,
2809 GNAT.Dynamic_HTables, and Snames. Add a map from invocation
2810 signature records to invocation signature ids. Add various
2811 encodings of invocation-related attributes. Sort and update
2812 table Known_ALI_Lines.
2813 (Add_Invocation_Construct, Add_Invocation_Relation,
2814 Body_Placement_Kind_To_Code, Code_To_Body_Placement_Kind,
2815 Code_To_Invocation_Construct_Kind, Code_To_Invocation_Kind,
2816 Code_To_Invocation_Graph_Line_Kind, Destroy, Hash): New
2818 (Initialize_ALI): Sort the initialization sequence. Add
2819 initialization for all invocation-related tables.
2820 (Invocation_Construct_Kind_To_Code,
2821 Invocation_Graph_Line_Kind_To_Code, Invocation_Kind_To_Code,
2822 Invocation_Signature_Of, Present): New routines.
2823 (Scan_ALI): Add the default values for invocation-related ids.
2824 Scan invocation graph lines.
2825 (Scan_Invocation_Graph_Line): New routine.
2826 * ali.ads: Add with clause for GNAT.Dynamic_Tables. Add types
2827 for invocation constructs, relations, and signatures. Add
2828 tables for invocation constructs, relations, and signatures.
2829 Update Unit_Record to capture invocation-related ids. Relocate
2830 table Unit_Id_Tables and subtypes Unit_Id_Table, Unit_Id_Array
2832 (Add_Invocation_Construct, Add_Invocation_Relation,
2833 Body_Placement_Kind_To_Code, Code_To_Body_Placement_Kind,
2834 Code_To_Invocation_Construct_Kind, Code_To_Invocation_Kind,
2835 Code_To_Invocation_Graph_Line_Kind,
2836 Invocation_Construct_Kind_To_Code,
2837 Invocation_Graph_Line_Kind_To_Code, Invocation_Kind_To_Code,
2838 Invocation_Signature_Of, Present): New routines.
2839 * binde.adb: Add with and use clause for Types. Add use clause
2840 for ALI.Unit_Id_Tables;
2841 * binde.ads: Relocate table Unit_Id_Tables and subtypes
2842 Unit_Id_Table, Unit_Id_Array to ALI.
2843 * bindgen.adb: Remove with and use clause for ALI.
2844 * bindgen.ads: Remove with and use clause for Binde. Add with
2845 and use clause for ALI.
2846 * bindo.adb, bindo.ads, bindo-augmentors.adb,
2847 bindo-augmentors.ads, bindo-builders.adb, bindo-builders.ads,
2848 bindo-diagnostics.adb, bindo-diagnostics.ads,
2849 bindo-elaborators.adb, bindo-elaborators.ads, bindo-graphs.adb,
2850 bindo-graphs.ads, bindo-units.adb, bindo-units.ads,
2851 bindo-validators.adb, bindo-validators.ads, bindo-writers.adb,
2852 bindo-writers.ads: New units.
2853 * debug.adb: Use and describe GNAT debug switches -gnatd_F and
2854 -gnatd_G. Add GNATbind debug switches in the ranges dA .. dZ,
2855 d.a .. d.z, d.A .. d.Z, d.1 .. d.9, d_a .. d_z, d_A .. d_Z, and
2856 d_1 .. d_9. Use and describe GNATbind debug switches -d_A,
2857 -d_I, -d_L, -d_N, -d_O, -d_T, and -d_V.
2858 * exp_util.adb, exp_util.ads (Exceptions_OK): Relocate to
2860 * gnatbind.adb: Add with and use clause for Bindo. Use the new
2861 Bindo elaboration order only when -d_N is in effect.
2863 (Column, Extra, Invoker, Kind, Line, Locations, Name, Placement,
2864 Scope, Signature, Target): New routines.
2865 (Write_ALI): Output all invocation-related data.
2866 (Write_Invocation_Graph): New routine.
2867 * lib-writ.ads: Document the invocation graph ALI line.
2868 * namet.adb, namet.ads (Present): New routines.
2869 * sem_ch8.adb (Find_Direct_Name): Capture the status of
2870 elaboration checks and warnings of an identifier.
2871 (Find_Expanded_Name): Capture the status of elaboration checks
2872 and warnings of an expanded name.
2873 * sem_ch12.adb (Analyze_Generic_Package_Declaration): Ensure
2874 that invocation graph-related data within the body of the main
2875 unit is encoded in the ALI file.
2876 (Analyze_Generic_Subprogram_Declaration): Ensure that invocation
2877 graph-related data within the body of the main unit is encoded
2879 (Analyze_Package_Instantiation): Perform minimal decoration of
2880 the instance entity.
2881 (Analyze_Subprogram_Instantiation): Perform minimal decoration
2882 of the instance entity.
2883 * sem_elab.adb: Perform heavy refactoring of all code. The unit
2884 is now split into "services" which specialize in one area of ABE
2885 checks. Add processing in order to capture invocation-graph
2886 related attributes of the main unit, and encode them in the ALI
2887 file. The Processing phase can now operate in multiple modes,
2888 all described by type Processing_Kind. Scenarios and targets
2889 are now distinct at the higher level, and carry their own
2890 representations. This eliminates the need to constantly
2891 recompute their attributes, and offers the various processors a
2892 uniform interface. The various initial states of the Processing
2893 phase are now encoded using type Processing_In_State, and
2894 xxx_State constants.
2895 * sem_elab.ads: Update the literals of type
2896 Enclosing_Level_Kind. Add Inline pragmas on several routines.
2897 * sem_prag.adb (Process_Inline): Ensure that invocation
2898 graph-related data within the body of the main unit is encoded
2900 * sem_util.adb (Enclosing_Generic_Body, Enclosing_Generic_Unit):
2902 (Exceptions_OK): Relocated from Sem_Util.
2903 (Mark_Save_Invocation_Graph_Of_Body): New routine.
2904 * sem_util.ads (Exceptions_OK): Relocated from Sem_Util.
2905 (Mark_Save_Invocation_Graph_Of_Body): New routine.
2906 * sinfo.adb (Is_Elaboration_Checks_OK_Node): Now applicable to
2907 N_Variable_Reference_Marker.
2908 (Is_Elaboration_Warnings_OK_Node): Now applicable to
2909 N_Expanded_Name, N_Identifier, N_Variable_Reference_Marker.
2910 (Is_Read): Use Flag4.
2911 (Is_SPARK_Mode_On_Node): New applicable to
2912 N_Variable_Reference_Marker.
2913 (Is_Write): Use Flag5.
2914 (Save_Invocation_Graph_Of_Body): New routine.
2915 (Set_Is_Elaboration_Checks_OK_Node): Now applicable to
2916 N_Variable_Reference_Marker.
2917 (Set_Is_Elaboration_Warnings_OK_Node): Now applicable to
2918 N_Expanded_Name, N_Identifier, N_Variable_Reference_Marker.
2919 (Set_Is_SPARK_Mode_On_Node): New applicable to
2920 N_Variable_Reference_Marker.
2921 (Set_Save_Invocation_Graph_Of_Body): New routine.
2922 * sinfo.ads: Update the documentation of attributes
2923 Is_Elaboration_Checks_OK_Node, Is_Elaboration_Warnings_OK_Node,
2924 Is_SPARK_Mode_On_Node. Update the flag usage of attributes
2925 Is_Read, Is_Write. Add attribute Save_Invocation_Graph_Of_Body
2926 and update its occurrence in nodes.
2927 (Save_Invocation_Graph_Of_Body): New routine along with pragma
2929 (Set_Save_Invocation_Graph_Of_Body): New routine along with
2931 * switch-b.adb (Scan_Binder_Switches): Refactor the scanning of
2933 (Scan_Debug_Switches): New routine.
2934 * libgnat/g-dynhta.adb, libgnat/g-dynhta.ads (Contains): New routine.
2935 * libgnat/g-graphs.adb (Associate_Vertices): Update the use of
2936 Component_Vertex_Iterator.
2937 (Contains_Component, Contains_Edge, Contains_Vertex, Has_Next):
2939 (Iterate_Component_Vertices): New routine.
2940 (Iterate_Vertices): Removed.
2941 (Next): Update the parameter profile.
2942 (Number_Of_Component_Vertices, Number_Of_Outgoing_Edges): New
2944 * libgnat/g-graphs.ads: Update the initialization of
2945 No_Component. Add type Component_Vertex_Iterator. Remove type
2947 (Has_Next): Add new versions and remove old ones.
2948 (Iterate_Component_Vertices): New routine.
2949 (Iterate_Vertices): Removed.
2950 (Next): Add new versions and remove old ones.
2951 (Number_Of_Component_Vertices, Number_Of_Outgoing_Edges): New
2953 * libgnat/g-sets.adb (Contains): Reimplemented.
2954 * gcc-interface/Make-lang.in (GNATBIND_OBJS): Add
2955 GNAT.Dynamic_HTables, GNAT.Graphs and Bindo units.
2956 * rtsfind.ads: Remove extra space.
2958 2019-07-03 Yannick Moy <moy@adacore.com>
2960 * sem_spark.adb: Add support for locally borrowing and observing
2962 (Get_Root_Object): Add parameter Through_Traversal to denote
2963 when we are interesting in getting to the traversed parameter.
2964 (Is_Prefix_Or_Almost): New function to support detection of
2965 illegal access to borrowed or observed paths.
2966 (Check_Pragma): Add analysis of assertion pragmas.
2968 2019-07-03 Ed Schonberg <schonberg@adacore.com>
2970 * sem_ch13.adb (Build_Predicate_Functions): In a generic context
2971 we do not build the bodies of predicate fuctions, but the
2972 expression in a static predicate must be elaborated to allow
2973 case coverage checking within the generic unit.
2974 (Build_Discrete_Static_Predicate): In a generic context, return
2975 without building function body once the
2976 Static_Discrete_Predicate expression for the type has been
2979 2019-07-03 Hristian Kirtchev <kirtchev@adacore.com>
2981 * bindgen.adb, inline.adb, layout.adb, sem_ch12.adb,
2982 sem_ch13.adb, sem_ch7.adb, styleg.adb: Minor reformatting.
2984 2019-07-03 Bob Duff <duff@adacore.com>
2986 * par-ch3.adb (P_Defining_Identifier): Call
2987 Check_Defining_Identifier_Casing.
2988 * style.ads, styleg.ads, styleg.adb
2989 (Check_Defining_Identifier_Casing): New procedure to check for
2990 mixed-case defining identifiers.
2991 * stylesw.ads, stylesw.adb (Style_Check_Mixed_Case_Decls): New
2992 flag for checking for mixed-case defining identifiers.
2993 * doc/gnat_ugn/building_executable_programs_with_gnat.rst:
2994 Document new feature.
2995 * gnat_ugn.texi: Regenerate.
2997 2019-07-03 Eric Botcazou <ebotcazou@adacore.com>
2999 * doc/gnat_ugn/building_executable_programs_with_gnat.rst
3000 (Warning message control): Document that -gnatw.z/Z apply to
3002 * freeze.adb (Freeze_Entity): Give -gnatw.z warning for array
3003 types as well, but not if the specified alignment is the minimum
3005 * gnat_ugn.texi: Regenerate.
3007 2019-07-03 Bob Duff <duff@adacore.com>
3009 * einfo.ads, exp_util.adb, layout.ads, sinfo.ads: Spell "laid"
3012 2019-07-03 Ed Schonberg <schonberg@adacore.com>
3014 * sem_ch13.adb (Analyze_Attribute_Definition_Clause): No error
3015 message on attribute applied to a renaming when the renamed
3016 object is an aggregate (from code reading).
3017 (Check_Aspect_At_End_Of_Declarations): In a generic context
3018 where freeze nodes are not generated, the original expression
3019 for an aspect may need to be analyzed to precent spurious
3020 conformance errors when compared with the expression that is
3021 anakyzed at the end of the current declarative list.
3023 2019-07-03 Eric Botcazou <ebotcazou@adacore.com>
3025 * layout.adb (Layout_Type): Do not set the component size of an
3026 array with a scalar component if the component type is
3029 2019-07-03 Ed Schonberg <schonberg@adacore.com>
3031 * inline.adb (Make_Loop_Labels_Unique): New procedure to modify
3032 the source code of subprograms that are inlined by the
3033 front-end, to prevent accidental duplication between loop labels
3034 in the inlined code and the code surrounding the inlined call.
3036 2019-07-03 Hristian Kirtchev <kirtchev@adacore.com>
3038 * doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Update
3039 the section on resolving elaboration circularities to eliminate
3040 certain combinations of switches which together do not produce
3041 the desired effect and confuse users.
3042 * gnat_ugn.texi: Regenerate.
3044 2019-07-03 Arnaud Charlet <charlet@adacore.com>
3046 * bindgen.adb (Gen_Main): Disable generation of reference to
3047 Ada_Main_Program_Name for CCG.
3048 * bindusg.adb (Display): Add -G to the command-line usage for
3050 * opt.ads (Generate_C_Code): Update comment.
3051 * switch-b.adb (Scan_Binder_Switches): Add handling for -G.
3053 2019-07-03 Arnaud Charlet <charlet@adacore.com>
3055 * sem_ch7.adb (Has_Referencer): Do not consider inlined
3056 subprograms when generating C code, which allows us to generate
3057 static inline subprograms.
3059 2019-07-03 Justin Squirek <squirek@adacore.com>
3061 * sem_ch6.adb (Check_Conformance): Add expression checking for
3062 constant modifiers in anonymous access types (in addition to
3063 "non-null" types) so that they are considered "matching" for
3064 subsequent conformance tests.
3066 2019-07-03 Arnaud Charlet <charlet@adacore.com>
3068 * doc/gnat_rm/standard_and_implementation_defined_restrictions.rst:
3069 Clarify wording on No_Multiple_Elaboration.
3070 * gnat_rm.texi: Regenerate.
3072 2019-07-03 Ed Schonberg <schonberg@adacore.com>
3074 * sem_ch8.adb (Find_Selected_Component): If the prefix is the
3075 current instance of a type or subtype, complete the resolution
3076 of the name by finding the component of the type denoted by the
3079 2019-07-03 Eric Botcazou <ebotcazou@adacore.com>
3081 * doc/gnat_rm/interfacing_to_other_languages.rst (Interfacing to C):
3082 Document that boolean types with convention C now map to C99 bool.
3083 * gnat_rm.texi: Regenerate.
3085 2019-07-03 Javier Miranda <miranda@adacore.com>
3087 * exp_attr.adb (Expand_Min_Max_Attribute): Code cleanup:
3088 removing code that it is now never executed in the CCG compiler
3091 2019-07-02 Iain Sandoe <iain@sandoe.co.uk>
3093 * libgnat/system-darwin-ppc.ads: Set Stack_Check_Probes True for
3096 2019-07-01 Ed Schonberg <schonberg@adacore.com>
3098 * sem_ch12.adb (Is_Defaulted): New predicate in
3099 Check_Formal_Package_Intance, to skip the conformance of checks
3100 on parameters of a formal package that are defaulted,
3102 2019-07-01 Hristian Kirtchev <kirtchev@adacore.com>
3104 * checks.adb, exp_ch9.adb, exp_unst.adb, sem_ch4.adb,
3105 sem_prag.adb, sem_spark.adb: Minor reformatting.
3107 2019-07-01 Ed Schonberg <schonberg@adacore.com>
3109 * sem_attr.adb (Analyze_Attribute, case Enum_Rep): Allow prefix
3110 of attribute to be an attribute reference of a discrete type.
3112 2019-07-01 Eric Botcazou <ebotcazou@adacore.com>
3114 * sem_ch12.adb (Analyze_Subprogram_Instantiation): Move up
3115 handling of Has_Pragma_Inline_Always and deal with
3116 Has_Pragma_No_Inline.
3118 2019-07-01 Ed Schonberg <schonberg@adacore.com>
3120 * sem_ch3.adb (Build_Derived_Record_Type): If the parent type is
3121 declared as a subtype of a private type with an inherited
3122 discriminant constraint, its generated full base appears as a
3123 record subtype, so we need to retrieve its oen base type so that
3124 the inherited constraint can be applied to it.
3126 2019-07-01 Yannick Moy <moy@adacore.com>
3128 * sem_spark.adb: Completely rework the algorithm for ownership
3129 checking, as the rules in SPARK RM have changed a lot.
3130 * sem_spark.ads: Update comments.
3132 2019-07-01 Dmitriy Anisimkov <anisimko@adacore.com>
3134 * gsocket.h (Has_Sockaddr_Len): Use the offset of sin_family offset in
3135 the sockaddr_in structure to determine the existence of length field
3136 before the sin_family.
3138 2019-07-01 Ed Schonberg <schonberg@adacore.com>
3140 * sem_prag.adb (Analyze_Pragma, case Weak_External): Pragma only
3141 applies to entities with run-time addresses, not to types.
3143 2019-07-01 Piotr Trojanek <trojanek@adacore.com>
3145 * einfo.adb, sem_ch7.adb, sem_prag.adb, sem_util.adb: Update
3146 references to the SPARK RM after the removal of Rule 7.1.4(5).
3148 2019-07-01 Piotr Trojanek <trojanek@adacore.com>
3150 * sysdep.c: Cleanup references to LynuxWorks in docs and
3153 2019-07-01 Ed Schonberg <schonberg@adacore.com>
3155 * checks.adb (Insert_Valid_Check): Do not apply validity check
3156 to variable declared within a protected object that uses the
3157 Lock_Free implementation, to prevent unwarranted constant
3158 folding, because entities within such an object msut be treated
3161 2019-07-01 Eric Botcazou <ebotcazou@adacore.com>
3163 * exp_ch9.adb (Check_Inlining): Deal with Has_Pragma_No_Inline.
3165 2019-07-01 Ed Schonberg <schonberg@adacore.com>
3167 * exp_unst.adb (Visit_Node, Check_Static_Type): Improve the
3168 handling of private and incomplete types whose full view is an
3169 access type, to detect additional uplevel references in dynamic
3170 bounds. This is relevant to N_Free_Statement among others that
3171 manipulate types whose full viww may be an access type.
3173 2019-07-01 Pat Rogers <rogers@adacore.com>
3175 * doc/gnat_rm/representation_clauses_and_pragmas.rst: Correct
3176 size indicated for R as a component of an array.
3177 * gnat_rm.texi: Regenerate.
3179 2019-07-01 Justin Squirek <squirek@adacore.com>
3181 * libgnat/s-win32.ads: Add definition for ULONG, modify
3182 OVERLAPPED type, and add appropriate pragmas.
3184 2019-07-01 Bob Duff <duff@adacore.com>
3186 * gnat1drv.adb (gnat1drv): Call Write_ALI if the main unit is
3189 2019-07-01 Yannick Moy <moy@adacore.com>
3191 * sem_ch4.adb (Operator_Check): Refine error message.
3193 2019-07-01 Piotr Trojanek <trojanek@adacore.com>
3195 * libgnat/a-calend.ads: Revert "Global => null" contracts on
3198 2019-07-01 Piotr Trojanek <trojanek@adacore.com>
3200 * exp_attr.adb, libgnat/g-graphs.ads: Fix typos in comments:
3201 componant -> component.
3203 2019-07-01 Hristian Kirtchev <kirtchev@adacore.com>
3205 * libgnat/g-graphs.adb: Use type Directed_Graph rather than
3206 Instance in various routines.
3207 * libgnat/g-graphs.ads: Change type Instance to Directed_Graph.
3208 Update various routines that mention the type.
3210 2019-07-01 Hristian Kirtchev <kirtchev@adacore.com>
3212 * libgnat/g-sets.adb: Use type Membership_Set rathern than
3213 Instance in various routines.
3214 * libgnat/g-sets.ads: Change type Instance to Membership_Set.
3215 Update various routines that mention the type.
3217 2019-07-01 Hristian Kirtchev <kirtchev@adacore.com>
3219 * libgnat/g-lists.adb: Use type Doubly_Linked_List rather than
3220 Instance in various routines.
3221 * libgnat/g-lists.ads: Change type Instance to
3222 Doubly_Linked_List. Update various routines that mention the
3225 2019-07-01 Hristian Kirtchev <kirtchev@adacore.com>
3227 * libgnat/g-dynhta.adb: Use type Dynamic_Hash_Table rather than
3228 Instance in various routines.
3229 * libgnat/g-dynhta.ads: Change type Instance to
3230 Dynamic_Hash_Table. Update various routines that mention the
3233 2019-07-01 Hristian Kirtchev <kirtchev@adacore.com>
3235 * exp_attr.adb, exp_ch7.adb, exp_unst.adb, sem_ch3.adb,
3236 sem_util.adb, uintp.adb, uintp.ads: Minor reformatting.
3238 2019-07-01 Javier Miranda <miranda@adacore.com>
3240 * exp_attr.adb (Expand_Min_Max_Attribute): Disable expansion of
3241 'Min/'Max on integer, enumeration, fixed point and floating
3242 point types since the CCG backend now provides in file
3243 standard.h routines to support it.
3245 2019-07-01 Hristian Kirtchev <kirtchev@adacore.com>
3247 * impunit.adb: Add GNAT.Graphs to list Non_Imp_File_Names_95.
3248 * Makefile.rtl, gcc-interface/Make-lang.in: Register unit
3250 * libgnat/g-dynhta.adb: Various minor cleanups (use Present
3251 rather than direct comparisons).
3252 (Delete): Reimplement to use Delete_Node.
3253 (Delete_Node): New routine.
3254 (Destroy_Bucket): Invoke the provided destructor.
3255 (Present): New routines.
3256 * libgnat/g-dynhta.ads: Add new generic formal Destroy_Value.
3257 Use better names for the components of iterators.
3258 * libgnat/g-graphs.adb, libgnat/g-graphs.ads: New unit.
3259 * libgnat/g-lists.adb: Various minor cleanups (use Present
3260 rather than direct comparisons).
3261 (Delete_Node): Invoke the provided destructor.
3262 (Present): New routine.
3263 * libgnat/g-lists.ads: Add new generic formal Destroy_Element.
3264 Use better names for the components of iterators.
3265 (Present): New routine.
3266 * libgnat/g-sets.adb, libgnat/g-sets.ads (Destroy, Preset,
3267 Reset): New routines.
3269 2019-07-01 Dmitriy Anisimkov <anisimko@adacore.com>
3271 * libgnat/g-sothco.adb (Get_Address): Fix the case when AF_INET6
3274 2019-07-01 Ed Schonberg <schonberg@adacore.com>
3276 * exp_attr.adb (Expand_Attribute_Reference, case Invalid_Value):
3277 Resolve result of call to Get_Simple_Init_Val, which may be a
3278 conversion of a literal.
3280 2019-07-01 Hristian Kirtchev <kirtchev@adacore.com>
3282 * freeze.adb (Freeze_Expression): Remove the horrible useless
3283 name hiding of N. Insert the freeze nodes generated by the
3284 expression prior to the expression when the nearest enclosing
3287 2019-07-01 Pierre-Marie de Rodat <derodat@adacore.com>
3289 * doc/gnat_ugn/building_executable_programs_with_gnat.rst: Fix
3290 formatting issues in the -gnatR section.
3291 * gnat_ugn.texi: Regenerate.
3293 2019-06-30 Iain Sandoe <iain@sandoe.co.uk>
3295 * gnatlink.adb (Link_Step): Remove duplicate -static-libgcc switches.
3296 Push -shared-libgcc explicitly, when it is the target default (unless
3297 overidden by the static flag).
3298 When the user has put an instance of shared/static-libgcc do not push
3299 a duplicate of this.
3301 2019-06-29 Eric Botcazou <ebotcazou@adacore.com>
3303 * gcc-interface/decl.c (gnat_to_gnu_entity): Beep up comment on SAVED,
3304 and tweak comment on the assertion about the scopes of Itypes. Do not
3305 skip the regular processing for Itypes that are E_Record_Subtype with
3306 a Cloned_Subtype. Get the Cloned_Subtype for every E_Record_Subtype
3307 if the type is dummy and hasn't got its own freeze node.
3308 <E_Record_Subtype>: Save again the DECL of the Cloned_Subtype, if any.
3309 <E_Access_Subtype>: Save again the DECL of the equivalent type.
3310 (Gigi_Equivalent_Type) <E_Access_Subtype>: New case.
3312 2019-06-29 Eric Botcazou <ebotcazou@adacore.com>
3314 * gcc-interface/utils.c (unchecked_convert): Tweak comment. Only skip
3315 dereferences when padding to have the same size on both sides. Do it
3316 for destination types with self-referential size too.
3318 2019-06-29 Eric Botcazou <ebotcazou@adacore.com>
3320 * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: If the
3321 type requires strict alignment, then set the RM size to the type size.
3322 Rework handling of alignment and sizes of tagged types in ASIS mode.
3323 (validate_size): Rename local variable and remove special handling for
3324 strict-alignment types.
3325 * gcc-interface/utils.c (finish_record_type): Constify local variables
3326 and use properly typed constants.
3328 2019-06-29 Eric Botcazou <ebotcazou@adacore.com>
3330 * gcc-interface/decl.c (gnat_to_gnu_field): Rework error messages for
3331 fields requiring strict alignment, add explicit test on Storage_Unit
3332 for position and size, and mention type alignment for position.
3334 2019-06-29 Eric Botcazou <ebotcazou@adacore.com>
3336 * gcc-interface/trans.c (mark_visited_r): Set TYPE_SIZES_GIMPLIFIED on
3337 the main variant of a type, if any.
3339 2019-06-29 Eric Botcazou <ebotcazou@adacore.com>
3341 * gcc-interface/decl.c (set_nonaliased_component_on_array_type): Add
3342 missing guard for the presence of TYPE_CANONICAL.
3343 (set_reverse_storage_order_on_array_type): Likewise.
3345 2019-06-29 Eric Botcazou <ebotcazou@adacore.com>
3347 * gcc-interface/gigi.h (make_packable_type): Remove default value.
3348 (value_factor_p): Tweak prototype.
3349 * gcc-interface/decl.c (gnat_to_gnu_entity): Add comment.
3350 (gnat_to_gnu_component_type): Likewise.
3351 (gnat_to_gnu_field): Likewise. Fetch the position of the field earlier
3352 and simplify the condition under which the type is packed. Declare
3353 local variable is_bitfield. Pass 1 as max_align to make_packable_type
3354 if it is set to true.
3355 (copy_and_substitute_in_layout): Pass 0 to make_packable_type.
3356 * gcc-interface/utils.c (make_packable_array_type): New function.
3357 (make_packable_type): Use it to rewrite the type of array field.
3358 (maybe_pad_type): Pass align parameter to make_packable_type.
3359 (create_field_decl): Minor tweaks.
3360 (value_factor_p): Assert that FACTOR is a power of 2 and replace the
3361 modulo computation by a masking operation.
3363 2019-06-25 Eric Botcazou <ebotcazou@adacore.com>
3365 * gcc-interface/decl.c (gnat_to_gnu_entity): Remove superfluous test
3367 * gcc-interface/gigi.h (maybe_character_type): Fix formatting.
3368 (maybe_character_value): Likewise.
3370 2019-06-24 Jan Hubicka <jh@suse.cz>
3372 * gcc-interface/decl.c (gnat_to_gnu_entity): Check that
3373 type is array or integer prior checking string flag.
3374 * gcc-interface/gigi.h (maybe_character_type): Likewise.
3375 (maybe_character_value): Likewise.
3377 2019-06-24 Martin Sebor <msebor@redhat.com>
3379 * gcc-interface/utils.c (handle_nonnull_attribute): Quote attribute
3382 2019-06-18 Arnaud Charlet <charlet@adacore.com>
3385 * sem_ch5.adb (Analyze_Loop_Statement): Avoid exception propagation
3386 during normal processing.
3388 2019-06-17 Arnaud Charlet <charlet@adacore.com>
3391 * exp_ch9.adb (Expand_N_Delay_Relative_Statement): Swap the two
3392 conditions to avoid a unnecessary exception propagation in the default
3395 2019-05-28 Eric Botcazou <ebotcazou@adacore.com>
3397 * gcc-interface/utils.c (handle_stack_protect_attribute): Move around.
3399 2019-05-28 Eric Botcazou <ebotcazou@adacore.com>
3401 * doc/gnat_rm/implementation_defined_pragmas.rst (Machine_Attribute):
3402 Document additional optional parameters.
3403 * sem_prag.adb (Analyze_Pragma) <Pragma_Machine_Attribute>: Accept
3404 more than one optional parameter.
3405 * gcc-interface/decl.c (prepend_one_attribute_pragma): Alphabetize
3406 the list of supported pragmas. Simplify the handling of parameters
3407 and add support for more than one optional parameter.
3408 * gcc-interface/utils.c (attr_cold_hot_exclusions): New constant.
3409 (gnat_internal_attribute_table): Add entry for no_icf, noipa, flatten,
3410 used, cold, hot, target and target_clones.
3411 (begin_subprog_body): Do not create the RTL for the subprogram here.
3412 (handle_noicf_attribute): New static function.
3413 (handle_noipa_attribute): Likewise.
3414 (handle_flatten_attribute): Likewise.
3415 (handle_used_attribute): Likewise.
3416 (handle_cold_attribute): Likewise.
3417 (handle_hot_attribute): Likewise.
3418 (handle_target_attribute): Likewise.
3419 (handle_target_clones_attribute): Likewise.
3421 2019-05-28 Eric Botcazou <ebotcazou@adacore.com>
3423 * gcc-interface/trans.c (lvalue_required_for_attribute_p): Return 0
3425 (Identifier_to_gnu): Use the actual subtype for a reference to a
3426 packed array in a return statement.
3427 (Attribute_to_gnu) <Attr_Size>: Do not strip VIEW_CONVERT_EXPRs from
3428 the prefix in every case.
3430 2019-05-28 Eric Botcazou <ebotcazou@adacore.com>
3432 * gcc-interface/trans.c (gnat_to_gnu): Remove superfluous tests on
3433 Backend_Overflow_Checks_On_Target and rework comments.
3435 2019-05-28 Eric Botcazou <ebotcazou@adacore.com>
3437 * gcc-interface/trans.c (walk_nesting_tree): New static function.
3438 (finalize_nrv): Use it to walk the entire nesting tree.
3440 2019-05-28 Eric Botcazou <ebotcazou@adacore.com>
3442 * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Subtype>: Remove
3443 obsolete test on Is_For_Access_Subtype.
3445 2019-05-28 Eric Botcazou <ebotcazou@adacore.com>
3447 * gcc-interface/decl.c (components_to_record): Set a name on the type
3448 created for the REP part, if any.
3449 * gcc-interface/utils.c (finish_record_type): Only take the maximum
3450 when merging sizes for a variant part at offset 0.
3451 (merge_sizes): Rename has_rep parameter into max.
3453 2019-05-28 Eric Botcazou <ebotcazou@adacore.com>
3455 * gcc-interface/utils.c (gnat_internal_attribute_table): Add support
3456 for stack_protect attribute.
3457 (handle_stack_protect_attribute): New static function.
3459 2019-05-28 Eric Botcazou <ebotcazou@adacore.com>
3461 * gcc-interface/decl.c (intrin_arglists_compatible_p): Do not return
3462 false if the internal builtin uses a variable list.
3464 2019-05-27 Eric Botcazou <ebotcazou@adacore.com>
3466 * gcc-interface/trans.c (Call_to_gnu): Do not initialize the temporary
3467 created out of addressability concerns if it's for the _Init parameter
3468 of an initialization procedure.
3470 2019-05-27 Eric Botcazou <ebotcazou@adacore.com>
3472 * gcc-interface/ada-builtin-types.def: New file.
3473 * gcc-interface/ada-builtins.def: Likewise.
3474 * gcc-interface/ada-tree.h (BUILT_IN_LIKELY): New macro.
3475 (BUILT_IN_UNLIKELY): Likewise.
3476 * gcc-interface/trans.c (independent_iterations_p): Initialize the
3477 auto-vector to 16 elements.
3478 (Call_to_gnu): Remove local variable and change the vector of actual
3479 parameters to an auto-vector. Do not convert actual parameters to
3480 the argument type for front-end built-in functions. Add support for
3481 front-end built-in functions.
3482 (build_noreturn_cond): Use internal instead of built-in function.
3483 * gcc-interface/utils.c (c_builtin_type): Include ada-builtin-types.def
3484 (install_builtin_function_types): Likewise.
3485 (install_builtin_functions): Include ada-builtins.def first.
3487 2019-05-27 Eric Botcazou <ebotcazou@adacore.com>
3489 * gcc-interface/utils.c (maybe_pad_type): Issue the warning for the
3490 specific case of component types preferably.
3492 2019-05-27 Eric Botcazou <ebotcazou@adacore.com>
3494 * gcc-interface/trans.c (Identifier_to_gnu): Minor tweaks.
3495 (gnat_to_gnu): Do not convert the result if it is a reference to an
3496 unconstrained array used as the prefix of an attribute reference that
3499 2019-05-27 Eric Botcazou <ebotcazou@adacore.com>
3501 * gcc-interface/trans.c (Gigi_Types_Compatible): New predicate.
3502 (Identifier_to_gnu): Use it to assert that the type of the identifier
3503 and that of its entity are compatible for gigi. Rename a couple of
3504 local variables and separate the processing of the result type.
3506 2019-05-27 Eric Botcazou <ebotcazou@adacore.com>
3508 * gcc-interface/trans.c (Call_to_gnu): Use the unpadded type when
3509 putting back an intermediate conversion the type of the actuals.
3511 2019-05-27 Eric Botcazou <ebotcazou@adacore.com>
3513 * gcc-interface/trans.c (gnat_to_gnu) <Shift operations>: Convert the
3514 count to the unsigned version of its base type before proceeding.
3516 2019-05-16 Martin Sebor <msebor@redhat.com>
3518 * gcc-interface/trans.c (check_inlining_for_nested_subprog): Quote
3521 2019-05-08 Arnaud Charlet <charlet@adacore.com>
3523 * standard.ads.h: New file.
3525 2019-05-07 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
3527 * gcc-interface/Makefile.in (install-gcc-specs): Use foreach.
3530 2019-04-29 Michael K. Darling <darlingm@gmail.com>
3532 * gnatvsn.ads: Bump Library_Version to 10.
3534 2019-04-24 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
3535 Bernd Edlinger <bernd.edlinger@hotmail.de>
3536 Jakub Jelinek <jakub@redhat.com>
3539 * raise-gcc.c (TARGET_ATTRIBUTE): Define.
3540 (continue_unwind, personality_body, PERSONALITY_FUNCTION): Add
3543 2019-04-07 Eric Botcazou <ebotcazou@adacore.com>
3545 * libgnat/i-cexten.ads (CFloat_128): New type.
3547 2019-03-22 Dmitriy Anisimkov <anisimko@adacore.com>
3550 * libgnat/g-socket.adb (Bind_Socket, Connect_Socket,
3551 Send_Socket): Fix the computation of structure lengths passed to
3553 (Is_IPv6_Address): Fix the number of expected colons.
3555 2019-03-11 Martin Liska <mliska@suse.cz>
3557 * gcc-interface/misc.c (gnat_post_options): Wrap option name in string
3558 format message and fix GNU coding style.
3560 2019-02-08 Eric Botcazou <ebotcazou@adacore.com>
3562 * gcc-interface/trans.c (gnat_to_gnu) <N_Aggregate>: Minor tweak.
3563 * gcc-interface/utils.c (convert): Do not pad when doing an unchecked
3564 conversion here. Use TREE_CONSTANT throughout the function.
3565 (unchecked_convert): Also pad if the source is a CONSTRUCTOR and the
3566 destination is a more aligned array type or a larger aggregate type,
3567 but not between original and packable versions of a type.
3569 2019-02-08 Eric Botcazou <ebotcazou@adacore.com>
3571 * gcc-interface/utils.c (max_size) <tcc_unary>: Be prepared for an
3572 operand with VOID_TYPE.
3574 2019-02-08 Eric Botcazou <ebotcazou@adacore.com>
3576 * gcc-interface/trans.c (elaborate_all_entities): Do not elaborate the
3577 entities of a package renaming another one.
3579 2019-02-08 Eric Botcazou <ebotcazou@adacore.com>
3581 * gcc-interface/trans.c (Regular_Loop_to_gnu): Replace tests on
3582 individual flag_unswitch_loops and flag_tree_loop_vectorize switches
3583 with test on global optimize switch.
3584 (Raise_Error_to_gnu): Likewise.
3586 2019-02-07 Eric Botcazou <ebotcazou@adacore.com>
3588 * libgnarl/s-linux__sparc.ads (ETIMEDOUT): Set to correct value.
3590 2019-02-06 Arnaud Charlet <charlet@adacore.com>
3592 * libgnarl/s-linux__x32.ads: Resync list of signals with s-linux.ads
3594 2019-01-27 Eric Botcazou <ebotcazou@adacore.com>
3596 * repinfo.adb (List_Component_Layout): Remove superfluous space for
3598 * gcc-interface/ada-tree.h (TYPE_IS_EXTRA_SUBTYPE_P): New macro.
3599 * gcc-interface/gigi.h (create_extra_subtype): Declare.
3600 * gcc-interface/decl.c (TYPE_ARRAY_SIZE_LIMIT): Likewise.
3601 (update_n_elem): New function.
3602 (gnat_to_gnu_entity): Use create_extra_subtype to create extra subtypes
3603 instead of doing it manually.
3604 <E_Array_Type>: Use update_n_elem to compute the maximum size. Use the
3605 index type instead of base type for the bounds. Set TYPE_ARRAY_MAX_SIZE
3606 of the array to the maximum size.
3607 <E_Array_Subtype>: Create an extra subtype using the index type of the
3608 base array type for self-referential bounds. Use update_n_elem to
3609 compute the maximum size. Set TYPE_ARRAY_MAX_SIZE of the array to the
3611 (gnat_to_gnu_field): Clear DECL_NONADDRESSABLE_P on discriminants.
3612 * gcc-interface/misc.c (gnat_get_alias_set): Return the alias set of
3613 the base type for an extra subtype.
3614 (gnat_type_max_size): Remove obsolete code.
3615 * gcc-interface/trans.c (Attribute_to_gnu): Minor tweak.
3616 (can_be_lower_p): Deal with pathological types.
3617 * gcc-interface/utils.c (create_extra_subtype): New function.
3618 (create_field_decl): Minor tweak.
3619 (max_size) <tcc_reference>: Compute a better value by using the extra
3620 subtypes on the self-referential bounds.
3621 <tcc_binary>: Rewrite. Deal with "negative value" in unsigned types.
3622 <tcc_expression>: Likewise.
3623 * gcc-interface/utils2.c (compare_arrays): Retrieve the original bounds
3624 of the arrays upfront. Swap only if the second length is not constant.
3625 Use comparisons on the original bounds consistently for the null tests.
3626 (build_binary_op): Use TYPE_IS_EXTRA_SUBTYPE_P macro.
3627 (build_allocator): Minor tweak.
3629 2019-01-27 Eric Botcazou <ebotcazou@adacore.com>
3631 * gcc-interface/decl.c (array_type_has_nonaliased_component): Return
3632 the same value for every dimension of a multidimensional array type.
3634 2019-01-26 Eric Botcazou <ebotcazou@adacore.com>
3636 * gcc-interface/trans.c (Regular_Loop_to_gnu): Use the SLOC of the
3637 iteration scheme, if present, throughout the translation.
3639 2019-01-26 Eric Botcazou <ebotcazou@adacore.com>
3641 * gcc-interface/trans.c (gnat_to_gnu) <N_Assignment_Statement>: Use
3642 DECL_SIZE_UNIT instead of TYPE_SIZE_UNIT for the size to be assigned
3643 by a call to memset if the LHS is a DECL.
3645 2019-01-26 Eric Botcazou <ebotcazou@adacore.com>
3647 * gcc-interface/trans.c (struct loop_info_d): Remove artificial field.
3648 (Loop_Statement_to_gnu): Do not set it.
3650 2019-01-26 Eric Botcazou <ebotcazou@adacore.com>
3652 * gcc-interface/trans.c (Iterate_Acc_Clause_Arg): Fix formatting.
3653 (Acc_gnat_to_gnu): Likewise.
3654 (Acc_Data_to_gnu): Likewise.
3655 (Acc_Var_to_gnu): Likewise.
3656 (Acc_Reduc_to_gnu): Likewise.
3657 (Acc_Size_List_to_gnu): Likewise.
3658 (Pragma_to_gnu) <Pragma_Acc_Loop>: Likewise.
3659 <Pragma_Acc_Data>): Likewise.
3660 (find_loop_for): Remove default value for parameters.
3661 * gcc-interface/trans.c (gnat_to_gnu) <N_Op_And>: Merge into...
3662 <N_Op_Eq>): ...this.
3664 2019-01-26 Eric Botcazou <ebotcazou@adacore.com>
3666 * gcc-interface/decl.c (annotate_value) <INTEGER_CST>: Use test on
3667 the sign bit instead of on the sign of the value.
3668 <PLUS_EXPR>: Turn addition of negative constant into subtraction.
3669 <MULT_EXPR>: Add test for degenerate case.
3670 <BIT_AND_EXPR>: Simplify.
3672 2019-01-18 Sebastian Huber <sebastian.huber@embedded-brains.de>
3674 * s-oscons-tmplt.c (AF_INET6): Do not undefine for RTEMS.
3676 2019-01-09 Sandra Loosemore <sandra@codesourcery.com>
3679 * exp_ch11.adb: Change "can not" to "cannot".
3680 * sem_ch4.adb: Likewise.
3682 2019-01-09 Sandra Loosemore <sandra@codesourcery.com>
3685 * exp_ch9.adb: Mechanically replace "can not" with "cannot".
3686 * libgnat/s-regpat.ads: Likewise.
3687 * par-ch4.adb: Likewise.
3688 * set_targ.adb: Likewise.
3689 * types.ads: Likewise.
3691 2019-01-08 Justin Squirek <squirek@adacore.com>
3694 2018-07-31 Justin Squirek <squirek@adacore.com>
3696 * lib-writ.adb (Write_With_Lines): Modfiy the generation
3697 of dependencies within ali files so that source unit
3698 bodies are properly listed even if said bodies are
3699 missing. Perform legacy behavior in GNATprove mode.
3700 * lib-writ.ads: Modify documentation to reflect current
3704 2018-09-26 Justin Squirek <squirek@adacore.com>
3706 * lib-writ.adb, lib-writ.ads (Write_With_Lines): Add
3707 documentation and an extra conditional check for RCI
3708 units so that generated ali files will list the spec
3709 only instead of a body when a body is not found.
3711 2019-01-04 Eric Botcazou <ebotcazou@adacore.com>
3713 * gnatvsn.ads: Bump copyright year.
3715 2019-01-01 Jakub Jelinek <jakub@redhat.com>
3717 Update copyright years.
3719 * gnat_ugn.texi: Bump @copying's copyright year.
3720 * gnat_rm.texi: Likewise.
3722 Copyright (C) 2019 Free Software Foundation, Inc.
3724 Copying and distribution of this file, with or without modification,
3725 are permitted in any medium without royalty provided the copyright
3726 notice and this notice are preserved.