1 2019-08-12 Eric Botcazou <ebotcazou@adacore.com>
3 * checks.adb (Activate_Range_Check): Remove redundant argument.
4 (Generate_Range_Check): Likewise.
5 (Apply_Float_Conversion_Check): Reset the Do_Range_Check flag on
6 entry and remove redundant condition.
8 2019-08-02 Alexandre Oliva <oliva@adacore.com>
10 * libgnat/a-exexpr.adb (Begin_Handler_v1, End_Handler_v1): New.
11 (Claimed_Cleanup): New.
12 (Begin_Handler, End_Handler): Document.
13 * gcc-interface/trans.c (gigi): Switch to exception handler
15 (Exception_Handler_to_gnu_gcc): Save the original cleanup
16 returned by begin handler, pass it to end handler, and use
17 EH_ELSE_EXPR to pass a propagating exception to end handler.
18 (gnat_to_gnu): Leave the exception pointer alone for reraise.
19 (add_cleanup): Handle EH_ELSE_EXPR, require it by itself.
21 2019-07-23 Ed Schonberg <schonberg@adacore.com>
23 * sem_ch13.adb (Check_Aspect_At_End_Of_Declarations,
24 Freeze_Entity_Checks): Include Aspect_CPU with other aspects
25 whose expresssion may depend on a discriminant, and thus require
26 that components of the type be made visible.
28 2019-07-23 Eric Botcazou <ebotcazou@adacore.com>
30 * checks.adb (Convert_And_Check_Range): Add Suppress parameter
31 and pass it in the call to Insert_Actions. Rename local
33 (Generate_Range_Check): Minor comment fixes. Pass Range_Check
34 in the first call to Convert_And_Check_Range and All_Checks in
36 * exp_ch4.adb (Expand_N_Type_Conversion): Reset the
37 Do_Overflow_Check flag in the float-to-float case too if there
38 is also a range check.
40 2019-07-23 Eric Botcazou <ebotcazou@adacore.com>
42 * checks.adb (Activate_Overflow_Check): Remove redundant
44 * exp_ch4.adb (Discrete_Range_Check): Reset the overflow flag.
45 (Expand_N_Type_Conversion): Do not reset it here.
47 2019-07-23 Eric Botcazou <ebotcazou@adacore.com>
49 * repinfo.adb (List_Component_Layout): Pass Decimal to UI_Write.
50 (Write_Val): Likewise.
52 2019-07-23 Ed Schonberg <schonberg@adacore.com>
54 * aspects.ads: New table Operational_Aspect, used to distinguish
55 between aspects that are view-specific, such as those related to
56 iterators, and representation aspects that apply to all views of
58 * aspects.adb (Find_Aspect): If the aspect being sought is
59 operational, do not ecamine the full view of a private type to
61 * sem_ch5.adb (Analyze_Iterator_Specification): Improve error
62 message when the intended domain of iteration does not implement
63 the required iterator aspects.
65 2019-07-23 Yannick Moy <moy@adacore.com>
67 * sem_spark.ads (Is_Local_Context): New function.
68 * sem_spark.adb (Check_Declaration): Issue errors on violations
70 (Process_Path): Do not issue error on borrow/observe during
71 elaboration, as these are caught by the new rule.
73 2019-07-23 Yannick Moy <moy@adacore.com>
75 * exp_ch7.adb (Create_Finalizer): Force finalizer not to be
77 * exp_dbug.adb (Get_External_Name): Explain special case of
80 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
82 * repinfo.adb (List_Entities): Also list compiled-generated
83 types present as Etype of objects.
85 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
87 * sinfo.ads: Update the documentation about the
88 Do_Division_Check, Do_Overflow_Check and Do_Range_Check flags.
90 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
92 * exp_ch4.adb (Expand_N_Type_Conversion): Beef up comment.
93 (Fixup_Universal_Fixed_Operation): Set the base type instead of
94 the type of the enclosing type conversion on the operation.
96 2019-07-22 Ed Schonberg <schonberg@adacore.com>
98 * exp_ch4.adb (Expand_N_In): Do not suggest the use of attribute
99 'Valid as a replacement for a range check on a discrete type
100 when the bounds of the range are given by type conversions,
101 because in such a case there are distinct types involved and the
102 subbested attribute replacement would be misplaced.
104 2019-07-22 Yannick Moy <moy@adacore.com>
106 * sem_spark.adb (Get_Root_Object, Is_Path_Expression,
107 Is_Subpath_Expression): Add parameter Is_Traversal to adapt
108 these functions to the case of paths returned from a traversal
110 (Read_Indexes): Handle the case of an if-expression or
112 (Check_Statement): Check Emit_Messages only when issuing an
113 error message. This is important as Emit_Messages may store the
114 information that an error was detected.
116 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
118 * checks.adb (Apply_Type_Conversion_Checks): Do not set
119 Do_Range_Check flag on conversions from fixed-point types
121 * exp_attr.adb: Add use and with clause for Expander.
122 (Expand_N_Attribute_Reference) <Fixed_Value, Integer_Value>: Set
123 the Conversion_OK flag and do not generate overflow/range checks
125 * exp_ch4.adb (Expand_N_Qualified_Expression): Remove
126 superfluous clearing of Do_Range_Check flag.
127 (Discrete_Range_Check): New procedure to generate a range check
129 (Real_Range_Check): Remove redundant local variable and adjust.
130 Remove useless shortcut. Clear Do_Range_Check flag on all
132 (Expand_N_Type_Conversion): Remove redundant test on
133 Conversion_OK. Call Discrete_Range_Check to generate range
134 checks on discrete types. Remove obsolete code for
135 float-to-integer conversions. Add code to generate range checks
136 for conversions involving fixed-point types.
138 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
140 * sprint.ads: Fix pasto in comment.
142 2019-07-22 Javier Miranda <miranda@adacore.com>
144 * sem_res.adb (Resolve_Actuals): Replace code that displaces the
145 pointer to an allocated object to reference its secondary
146 dispatch table by a type conversion (which takes care of
149 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
151 * sprint.adb (Sprint_Node_Actual)
152 <N_Decimal_Fixed_Point_Definition>: Swap a couple of spaces.
153 (Write_Itype): Minor consistency fixes throughout. Add support
154 for printing ordinary and decimal fixed-point types and
157 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
159 * exp_attr.adb (Expand_Loop_Entry_Attribute): Beef up comment.
161 2019-07-22 Ed Schonberg <schonberg@adacore.com>
163 * libgnat/s-valboo.ads, libgnat/s-valcha.ads,
164 libgnat/s-valdec.ads, libgnat/s-valenu.ads,
165 libgnat/s-valint.ads, libgnat/s-vallld.ads,
166 libgnat/s-vallli.ads, libgnat/s-valllu.ads,
167 libgnat/s-valrea.ads, libgnat/s-valuns.ads,
168 libgnat/s-valwch.ads: Change categorization of packages that
169 implement attribute 'Value from Pure to Preelaborate, to prevent
170 undesirable optimizations when the evaluation of the attribute
171 raises Constraint_Error, but subsequent use of the result of
172 this evsaluation is removed by a subsequent optimization.
174 2019-07-22 Ed Schonberg <schonberg@adacore.com>
176 * sem_warn.adb (Check_References): Do not emit s warning on a
177 referenced entity with no explicit assignment if the type of the
178 entity has Preelaborable_Initialixation, such as
179 Exception_Occurrence.
181 2019-07-22 Javier Miranda <miranda@adacore.com>
183 * exp_ch4.adb (Size_In_Storage_Elements): Improve the expansion
184 to handle array indexes that are modular type.
185 (Expand_N_Allocator): For 32-bit targets improve the generation
186 of the runtime check associated with large arrays supporting
187 arrays initialized with a qualified expression.
188 * libgnat/s-imenne.adb (Image_Enumeration_8,
189 Image_Enumeration_16, Image_Enumeration_32): Define the index of
190 Index_Table with range Natural'First .. Names'Length since in
191 the worst case all the literals of the enumeration type would be
192 single letter literals and the Table built by the frontend would
193 have as many components as the length of the names string. As a
194 result of this enhancement, the internal tables declared using
195 Index_Table have a length closer to the real needs, thus
196 avoiding the declaration of large arrays on 32-bit CCG targets.
198 2019-07-22 Yannick Moy <moy@adacore.com>
200 * sem_ch3.adb (Constrain_Access): Issue a message about ignored
203 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
205 * sem_ch8.adb (End_Use_Type): Reset the In_Use flag on the
206 class-wide type if the type is tagged.
207 (Use_One_Type): Add commentary on the handling of the class-wide
210 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
212 * einfo.ads (Is_For_Access_Subtype): Delete.
213 (Set_Is_For_Access_Subtype): Likewise.
214 * einfo.adb (Is_For_Access_Subtype): Likewise.
215 (Set_Is_For_Access_Subtype): Likewise.
216 (Write_Entity_Flags): Do not write Is_For_Access_Subtype.
217 * exp_ch4.adb (Expand_N_Selected_Component): Do not deal with
219 * exp_spark.adb (Expand_SPARK_N_Selected_Component): Likewise.
220 * sem_ch4.adb (Analyze_Explicit_Dereference): Likewise.
221 * sem_ch3.adb (Build_Discriminated_Subtype): Do not build a
222 special private subtype for access-to-record subtypes.
224 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
226 * sem_ch3.adb (Complete_Private_Subtype): Rework the setting of
227 the Etype of the full view for full base types that cannot
228 contain any discriminant. Remove code and comment about it in
231 2019-07-22 Ed Schonberg <schonberg@adacore.com>
233 * sem_ch3.adb (Convert_Bound): Subsidiary of
234 Floating_Point_Type_Declaration, to handle properly range
235 specifications with bounds that may include static constants of
236 a given type rather than real literals.
238 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
240 * sem_aggr.adb (Rewrite_Bound): Be prepared for discriminals
242 (Rewrite_Range;): Minor tweak.
243 (Resolve_Record_Aggregate): For a component with default
244 initialization whose expression is an array aggregate, also
245 rewrite the bounds of the component associations, if any.
247 2019-07-22 Gary Dismukes <dismukes@adacore.com>
249 * exp_ch5.adb (Expand_N_Case_Statement): In the case where a
250 case statement is rewritten as an equivalent if statement,
251 inherit the From_Condition_Expression flag from the case
254 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
256 * sem_ch8.adb (Check_Constrained_Object): Further extend the
257 special optimization to all limited types.
259 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
261 * exp_attr.adb (Expand_N_Attribute_Reference)
262 <Attribute_Enum_Val>: Set No_Truncation on the
263 N_Unchecked_Type_Conversion built around the argument passed to
266 2019-07-22 Nicolas Roche <roche@adacore.com>
268 * libgnat/s-valrea.adb (Scan_Real): Ignore non significative
269 digits to avoid converging to infinity in some cases.
271 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
273 * libgnat/g-encstr.adb (Encode_Wide_String): Fix oversight.
274 (Encode_Wide_Wide_String): Likewise.
276 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
278 * sem_warn.adb (Find_Var): Bail out for a function call with an
279 Out or In/Out parameter.
281 2019-07-22 Nicolas Roche <roche@adacore.com>
283 * terminals.c (__gnat_tty_waitpid): Support both blocking and
285 * libgnat/g-exptty.ads (Is_Process_Running): New function.
286 * libgnat/g-exptty.adb (Close): Don't try to interrupt/terminate
287 a process if it is already dead.
289 2019-07-22 Ed Schonberg <schonberg@adacore.com>
291 * freeze.adb (Freeze_Fixed_Point_Type): When freezing a
292 fixed-point subtype, check whether the parent type declarastion
293 includes an aspect specification for the 'Small type attribute,
294 and inherit the specified value.
296 2019-07-22 Javier Miranda <miranda@adacore.com>
298 * freeze.adb (Freeze_Subprogram): Check that C++ constructors
299 must have external or link name.
301 2019-07-22 Ed Schonberg <schonberg@adacore.com>
303 * sem_res.adb (Resolve_Selected_Component): If the prefix has a
304 deferred reference, generate the correct reference now, to
305 indicate that the previous assignment is used. This prevents
306 spurious warnings on useless assignments when compiling with all
307 warnings enabled. when there is a subsequent call in the same
308 stqtement list, in which the prefix of the selected component is
309 the actual for an out parameter.
311 2019-07-22 Eric Botcazou <ebotcazou@adacore.com>
313 * exp_attr.adb (Expand_Loop_Entry_Attribute): Copy the condition
314 of a while loop instead of simply relocating it.
316 2019-07-18 Arnaud Charlet <charlet@adacore.com>
318 * Makefile.rtl, expect.c, env.c, aux-io.c, mkdir.c, initialize.c,
319 cstreams.c, raise.c, tracebak.c, adadecode.c, init.c, raise-gcc.c,
320 argv.c, adaint.c, adaint.h, ctrl_c.c, sysdep.c, rtinit.c, cio.c,
321 seh_init.c, exit.c, targext.c: Introduce a "STANDALONE" mode where C
322 runtime files do not have any dependency on GCC include files.
323 Remove unnecessary includes.
324 Remove remaining references to VMS in runtime C file.
325 * runtime.h: new File.
327 2019-07-13 Andreas Schwab <schwab@linux-m68k.org>
329 * Makefile.rtl: Use g-sercom__linux.adb for all linuxes.
331 2019-07-11 Piotr Trojanek <trojanek@adacore.com>
333 * lib-writ.adb (Ensure_System_Dependency,
334 Up_To_Date_ALI_File_Exists, Write_ALI): Replace low-level access
335 to table with a high-level query.
337 2019-07-11 Piotr Trojanek <trojanek@adacore.com>
339 * checks.adb: Fix typo in comment.
340 * sem.adb (Semantics): Avoid repeated calls to
341 In_Extended_Main_Source_Unit by reusing an already-cached
343 * sem_util.adb (First_Global): Fix style.
345 2019-07-11 Yannick Moy <moy@adacore.com>
347 * sem_res.adb (Resolve_Call): Do not perform dimensionality
348 checking on inlined bodies.
350 2019-07-11 Yannick Moy <moy@adacore.com>
352 * debug.adb: Flip meaning of debug switch -gnatdF.
354 2019-07-11 Yannick Moy <moy@adacore.com>
356 * sem_eval.adb (Is_Same_Value): Add special case for rewritten
357 Loop_Entry attribute.
359 2019-07-11 Claire Dross <dross@adacore.com>
361 * gnat1drv.adb: SPARK checking rules for pointer aliasing are
362 moved to GNATprove backend.
363 * sem_spark.ads, sem_spark.adb (Sem_SPARK): Is now a generic
364 unit. Takes as parameters:
365 - Retysp which is used to query the most underlying type
366 visible in SPARK. We do not introduce aliasing checks for
367 types which are not visibly deep.
368 - Component_Is_Visible_In_SPARK is used to avoid doing pointer
369 aliasing checks on components which are not visible in SPARK.
370 - Emit_Messages returns True in the second phase of SPARK
371 analysis. Error messages for failed aliasing checks are only
373 Additionally, errors on constructs not supported in SPARK are
374 removed as duplicates of marking errors. Components are stored
375 in the permission map using their original component to avoid
376 inconsistencies between components of different views of the
378 (Check_Expression): Handle delta constraints.
379 (Is_Deep): Exported so that we can check for SPARK restrictions
380 on deep types inside SPARK semantic checkings.
381 (Is_Traversal_Function): Exported so that we can check for SPARK
382 restrictions on traversal functions inside SPARK semantic
384 (Check_Call_Statement, Read_Indexes): Check wether we are
385 dealing with a subprogram pointer type before querying called
387 (Is_Subpath_Expression): Image attribute can appear inside a
389 (Check_Loop_Statement): Correct order of statements in the loop.
390 (Check_Node): Ignore raise nodes.
391 (Check_Statement): Use Last_Non_Pragma to get the object
392 declaration in an extended return statement.
394 2019-07-11 Patrick Bernardi <bernardi@adacore.com>
396 * bindgen.adb (Gen_Main): Do not generate a reference to
397 Ada_Main_Program_Name when the Minimal_Binder flag is set.
398 (Gen_Output_File_Ada): Do not output GNAT_Version and
399 Ada_Main_Program_Name info if Minimal_Binder flag is set.
400 * bindusg.adb: Add documentation for new -minimal switch.
401 * gnatbind.adb (Scan_Bind_Arg): Scan -minimal switch.
402 * opt.ads: Add new global flag Minimal_Binder to indicate if the
403 binder should not produce global variables.
404 * doc/gnat_ugn/building_executable_programs_with_gnat.rst:
405 Update documentation with new binder -minimal switch.
406 * gnat_ugn.texi: Regenerate.
408 2019-07-11 Eric Botcazou <ebotcazou@adacore.com>
410 * Makefile.rtl: Add warning note about compilation flags and
413 2019-07-11 Ed Schonberg <schonberg@adacore.com>
415 * exp_ch9.adb (Expand_N_Protected_Type_Declaaration): New
416 subsidiary routine Replace_Access_Definition, to handle properly
417 a protected type PT one of whose private components is of type
420 2019-07-11 Dmitriy Anisimkov <anisimko@adacore.com>
422 * libgnat/g-socket.ads (Level_Type): Add enumerators for
423 IP_Protocol_For_ICMP, IP_Protocol_For_IGMP,
424 IP_Protocol_For_RAW_Level.
425 * libgnat/g-socket.adb (Levels): Handle them.
426 * s-oscons-tmplt.c: Import socket protocols defined in
429 2019-07-11 Claire Dross <dross@adacore.com>
431 * libgnat/a-cfhama.adb, libgnat/a-cfhase.adb (Free): Do not
432 reset the Has_Element flag if no element is freed.
434 2019-07-11 Arnaud Charlet <charlet@adacore.com>
436 * errno.c: Remove obsolete support for MaRTE OS.
438 2019-07-11 Ed Schonberg <schonberg@adacore.com>
440 * exp_ch4.adb (Expand_N_Type_Conversion): If a predicate check
441 is generated, analyze it with range check suppressed, because
442 that check has been previously applied.
443 * exp_ch5.adb (Expand_N_Assignment_Statement): If the RHS is a
444 type conversion to the type of the LHS, do not apply a predicate
445 check to the RHS because it will have been generated already
446 during its expansion.
447 * exp_ch6.adb (Can_Fold_Predicate_Call): Extend processing to
448 handle a predicate check on a constant entity whose value is
451 2019-07-11 Hristian Kirtchev <kirtchev@adacore.com>
453 * bindo.adb: Remove the documentation of switch -d_N because it
455 * bindo-graphs.ads, bindo-graphs.adb (Is_Spec_Before_Body_Edge):
457 * bindo-writers.adb (Write_Dependency_Edge): Add the missing
458 case of a spec-before-body edge.
460 2019-07-11 Dmitriy Anisimkov <anisimko@adacore.com>
462 * libgnat/g-socket.ads (Mode_Type): Add a Socket_Raw enumerator.
463 * libgnat/g-socket.adb (Modes): Handle Socket_Raw.
465 2019-07-11 Justin Squirek <squirek@adacore.com>
467 * exp_ch9.adb (Build_Private_Protected_Declaration): Add
468 exception for the moving of pragmas to internally generated
469 specs for pragma Unreferenced.
471 2019-07-11 Bob Duff <duff@adacore.com>
473 * doc/gnat_ugn/gnat_utility_programs.rst: Fix inconsistent
474 documentation for gnatmetric.
475 * gnat_ugn.texi: Regenerate.
477 2019-07-11 Bob Duff <duff@adacore.com>
479 * doc/gnat_ugn/gnat_utility_programs.rst: Document gnatpp's
480 --spaces-only switch.
482 2019-07-11 Hristian Kirtchev <kirtchev@adacore.com>
484 * sem_util.adb (Null_Status): Assume that an erroneous construct
485 has an undefined null status.
487 2019-07-11 Hristian Kirtchev <kirtchev@adacore.com>
489 * checks.adb, exp_ch6.adb, gnat1drv.adb, sem_aux.adb,
490 sem_ch2.adb, sem_ch8.adb, sem_res.adb: Minor reformatting.
492 2019-07-11 Hristian Kirtchev <kirtchev@adacore.com>
494 * sem_ch8.adb (Analyze_Object_Renaming): Obtain the object being
495 renamed using routine Get_Object_Name which takes care of
497 (Get_Object_Name): New routine.
499 2019-07-11 Ed Schonberg <schonberg@adacore.com>
501 * exp_ch6.adb (Can_Fold_Predicate_Call): New function,
502 subsidiary of Expand_Call_Helper, to compute statically a
503 predicate check when the argument is a static integer.
505 2019-07-11 Hristian Kirtchev <kirtchev@adacore.com>
507 * sem_res.adb (Resolve_Op_Not): Do not rewrite an equality
508 operator into a function call when the operator is intrinsic.
510 2019-07-11 Thomas Quinot <quinot@adacore.com>
512 * sem_prag.adb (Analyze_Pragma, case pragma Check): Do not call
513 Set_SCO_Pragma_Enabled for the dynamic predicate case.
515 2019-07-11 Hristian Kirtchev <kirtchev@adacore.com>
517 * exp_util.ads, exp_util.adb (Needs_Finalization): Move to
519 * sem_ch9.adb (Analyze_Protected_Definition): Code cleanup. Mark
520 the protected type as having controlled components when it
521 contains at least one such component.
522 * sem_util.ads, sem_util.adb (Needs_Finalization): New
525 2019-07-11 Eric Botcazou <ebotcazou@adacore.com>
527 * alloc.ads (Rep_JSON_Table_Initial): New constant.
528 (Rep_JSON_Table_Increment): Likewise.
529 * debug.adb: Document -gnatd_j switch.
530 * gcc-interface/Make-lang.in (GNAT_ADA_OBJS): Add
532 * gnat1drv.adb: Add with clause for Repinfo.Input.
533 Add with and use clauses for Sinput.
534 (Read_JSON_Files_For_Repinfo): New procedure.
535 (Gnat1drv1): Deal with -gnatd_j switch.
536 * repinfo-input.ad[sb]: New unit.
537 * snames.ads-tmpl (Name_Discriminant): New constant.
538 (Name_Operands): Likewise.
540 2019-07-11 Justin Squirek <squirek@adacore.com>
542 * checks.adb (Apply_Accessibility_Check): Add check for constant
543 folded conditions on accessibility checks.
545 2019-07-11 Arnaud Charlet <charlet@adacore.com>
547 * libgnarl/g-thread.ads, libgnarl/g-thread.adb (Get_Thread):
548 Update comments. Add new version taking a Task_Id.
550 2019-07-11 Hristian Kirtchev <kirtchev@adacore.com>
552 * bindo.adb: Update the section of switches and debugging
554 * bindo.ads: Add type Elaboration_Phase.
555 * bindo-augmentors.adb: Add use clause for
556 Bindo.Writers.Phase_Writers.
557 (Augment_Library_Graph): Signal the start and end of the
559 * bindo-builders.adb: Add with and use clause for Bindo.Writers.
560 Add use clause for Bindo.Writers.Phase_Writers.
561 (Build_Invocation_Graph): Signal the start and end of the
562 invocation graph construction phase.
563 (Build_Library_Graph): Signal the start and end of the library
564 graph construction phase.
565 * bindo-diagnostics.adb: Add use clause for
566 Bindo.Writers.Phase_Writers.
567 (Diagnose_Cycle): Signal the start and end of the cycle
569 * bindo-elaborators.adb: Add use clause for
570 Bindo.Writers.Phase_Writers.
571 (Elaborate_Units): Signal the start and end of the unit
573 * bindo-graphs.adb: Add use clause for
574 Bindo.Writers.Phase_Writers.
575 (Find_Components): Signal the start and end of the component
577 (Find_Cycles): Signal the start and end of the cycle discovery
579 * bindo-units.adb: Add with and use clause for Bindo.Writers.
580 Add use clause for Bindo.Writers.Phase_Writers.
581 (Collect_Elaborable_Units): Signal the start and end of the unit
583 * bindo-validators.adb: Add with and use clause for
584 Bindo.Writers. Add use clause for Bindo.Writers.Phase_Writers.
585 (Validate_Cycles, Validate_Elaboration_Order,
586 Validate_Invocation_Graph, Validate_Library_Graph): Signal the
587 start and end of the libray graph validation phase.
588 * bindo-writers.ads, bindo-writers.adb: Add new nested package
590 * debug.adb: Update the documentation of switch d_S.
592 2019-07-11 Yannick Moy <moy@adacore.com>
594 * sem_res.adb (Check_Argument_Order): Special case calls to
597 2019-07-10 Dmitriy Anisimkov <anisimko@adacore.com>
599 * libgnat/s-ststop.adb: Remove System.Strings.Stream_Ops
600 dependence on System.Streams.Stream_IO.
602 2019-07-10 Ed Schonberg <schonberg@adacore.com>
604 * sem_ch2.adb (Analyze_Integer_Literal): Preserve the type of
605 the literal if prior analysis determined that its type is a
606 modular integer type.
608 2019-07-10 Doug Rupp <rupp@adacore.com>
610 * init.c: Do not attempt to re-arm guard page on x86_64-vx7(r2).
612 2019-07-10 Ed Schonberg <schonberg@adacore.com>
614 * sem_ch8.adb (Check_Constrained_Object): A record that is
615 limited because of the presence of a limited component is
616 constrained, and no subtype indiciation needs to be created for
617 it, just as is the case for declared limited records.
619 2019-07-10 Yannick Moy <moy@adacore.com>
621 * sem_aux.adb, sem_aux.ads (Is_Protected_Operation): New
622 function to determine if a subprogram is protected.
623 * sem_spark.adb (Setup_Protected_Components): New procedure to
624 add protected components to the environment.
625 (Check_Callable_Body): Call the new Setup_Protected_Components.
626 (Check_Package_Spec): Merge local environment with enclosing one
629 2019-07-10 Claire Dross <dross@adacore.com>
631 * sem_spark.adb (Check_Expression): Allow digits constraints as
633 (Illegal_Global_Usage): Pass in the entity.
634 (Is_Subpath_Expression): New function to allow different nodes
635 as inner parts of a path expression.
636 (Read_Indexes): Allow concatenation and aggregates with box
637 expressions. Allow attributes Update and Loop_Entry.
638 (Check_Expression): Allow richer membership test.
639 (Check_Node): Ignore bodies of generics.
640 (Get_Root_Object): Allow concatenation and attributes.
642 2019-07-10 Hristian Kirtchev <kirtchev@adacore.com>
644 * sem_ch6.adb (Check_Discriminant_Conformance): Use Find_Type to
645 discover the type of a full view discriminant.
647 2019-07-10 Arnaud Charlet <charlet@adacore.com>
649 * doc/gnat_ugn/gnat_and_program_execution.rst: Improve gnatmem's
650 doc for the depth switch.
652 2019-07-10 Bob Duff <duff@adacore.com>
654 * doc/gnat_ugn/gnat_utility_programs.rst: Document gnatpp's
655 --source-line-breaks switch.
657 2019-07-10 Justin Squirek <squirek@adacore.com>
659 * doc/gnat_rm/implementation_defined_attributes.rst: Add mention
660 of 'Image attribute with 'Img's entry to mention additional
661 added 2012 usage of Obj'Image.
662 * doc/gnat_rm/implementation_defined_pragmas.rst: Correct
663 mispelling of Async_Writers.
664 * gnat_rm.texi: Regenerate.
665 * sem_prag.adb (Analyze_Pragma): Correct mispelling of
667 * sem_util.adb (State_Has_Enabled_Property): Correct mispelling
670 2019-07-10 Simon Buist <buist@adacore.com>
672 * sem_util.ads (Child_Prefix): New constant.
673 * sem_util.adb (Unique_Name): Add a special prefix to child
674 units that have a nested subprogram or package.
676 2019-07-10 Arnaud Charlet <charlet@adacore.com>
678 * sfn_scan.adb (Scan_SFN_Pragmas): Add pragma Assert.
680 2019-07-10 Hristian Kirtchev <kirtchev@adacore.com>
682 * sem_ch3.adb (Check_Nonoverridable_Aspects): Correct the
683 spelling in certain error messages.
684 (Check_Pragma_Implemented): Correct the spelling in certain
687 2019-07-10 Eric Botcazou <ebotcazou@adacore.com>
689 * Makefile.rtl (GNATRTL_NONTASKING_OBJS): Add g-brapre.
690 * libgnat/g-brapre.ads: New package specification.
691 * doc/gnat_rm/the_gnat_library.rst: Document it.
692 * gnat_rm.texi: Regenerate.
694 2019-07-10 Yannick Moy <moy@adacore.com>
696 * osint-c.adb (Set_File_Name): Always add extension for multiple
699 2019-07-10 Corentin Gay <gay@adacore.com>
701 * sysdep.c: Put include directive for 'vxWorks.h' before any
702 other VxWorks headers.
704 2019-07-10 Eric Botcazou <ebotcazou@adacore.com>
706 * doc/gnat_rm/implementation_defined_attributes.rst
707 (Scalar_Storage_Order): Minor tweaks. Add note about debuggers.
708 * gnat_rm.texi: Regenerate.
710 2019-07-10 Hristian Kirtchev <kirtchev@adacore.com>
712 * exp_ch4.adb (Expand_N_Case_Expression): Mark the generated
713 assignments to the temporary result as being OK because the
714 expansion of case expressions is correct by construction.
715 (Is_Copy_Type): Update the predicate to match the comment
718 2019-07-10 Hristian Kirtchev <kirtchev@adacore.com>
720 * bindo-graphs.adb, bindo.adb, debug.adb, exp_ch6.adb,
721 sem_ch10.adb, sem_ch13.adb, sem_ch3.adb, sem_ch4.adb,
722 sem_ch6.adb, sem_ch7.adb, sem_res.adb, sem_spark.adb,
723 sem_util.adb, warnsw.ads: Minor reformatting.
725 2019-07-10 Joffrey Huguet <huguet@adacore.com>
727 * libgnat/a-strbou.ads, libgnat/a-strfix.ads,
728 libgnat/a-strunb.ads, libgnat/a-strunb__shared.ads: Add global
729 contracts, contract cases, preconditions and postconditions to
730 procedures and functions.
732 2019-07-10 Doug Rupp <rupp@adacore.com>
734 * sysdep.c (__gnat_is_file_not_found_error): Reformulate to also
735 work for vxworks7r2 SR0610.
737 2019-07-10 Doug Rupp <rupp@adacore.com>
739 * env.c (__gnat_environ): Reformulate to also work for
742 2019-07-10 Patrick Bernardi <bernardi@adacore.com>
744 * Makefile.rtl: Handle vxworks7r2 ppc target
746 2019-07-10 Hristian Kirtchev <kirtchev@adacore.com>
748 * bindo.adb: Update the section on switches.
750 (Add_Cycle, Add_Vertex_And_Complement): Remove.
751 (Create): The graph no longer needs a set of recorded cycles
752 because the cycles are not rediscovered in permuted forms.
753 (Cycle_End_Vertices): New routine.
754 (Destroy): The graph no longer needs a set of recorded cycles
755 because the cycles are not rediscovered in permuted forms.
756 (Destroy_Library_Graph_Vertex): Move to the library level.
757 (Find_All_Cycles_Through_Vertex, Find_All_Cycles_With_Edge):
759 (Find_Cycles_From_Successor, Find_Cycles_From_Vertex,
760 Find_Cycles_In_Component, Has_Elaborate_All_Edge): New routines.
761 (Insert_And_Sort): Remove.
762 (Is_Elaborate_Body_Edge): Use predicate
763 Is_Vertex_With_Elaborate_Body.
764 (Is_Recorded_Cycle): Remove.
765 (Is_Vertex_With_Elaborate_Body): New routine.
766 (Normalize_And_Add_Cycle): Remove.
767 (Precedence): Rename to xxx_Precedence, where xxx relates to the
768 input. These versions better reflect the desired input
770 (Record_Cycle): New routine.
771 (Remove_Vertex_And_Complement, Set_Is_Recorded_Cycle): Remove.
772 (Trace_xxx): Update all versions to use debug switch -d_t.
773 (Trace_Component): New routine.
774 (Trace_Eol): Removed.
775 (Trace_Vertex): Do not output the component as this information
776 is already available when the component is traced.
777 (Unvisit, Visit): New routine.
778 * bindo-graphs.ads: Add new instance LGV_Lists. Remove instance
779 RC_Sets. Update the structure of type Library_Graph_Attributes
780 to remove the set of recorded cycles.
781 (Destroy_Library_Graph_Vertex): Move to the library level.
782 * bindo-writers.adb (Write_Component_Vertices): Output
783 information about the number of vertices.
784 * debug.adb: Document the use of binder switch -d_t. Update the
785 use of binder switch -d_T.
787 2019-07-10 Yannick Moy <moy@adacore.com>
789 * sem_spark.adb (Get_Root_Object): Replace precondition by error
791 (Read_Indexes): Replace precondition by error message.
792 (Check_Callable_Body): Check only traversal function returns an
793 anonymous access type.
794 (Check_Expression): Issue error on unexpected expression as
796 * sem_util.adb (First_Global): Fix access to global on
799 2019-07-10 Javier Miranda <miranda@adacore.com>
801 * exp_ch6.adb (Is_Class_Wide_Interface_Type): New subprogram.
802 (Expand_Call_Helper): Handle non-limited views when we check if
803 any formal is a class-wide interface type.
804 * exp_disp.adb (Expand_Interface_Actuals): Handle non-limited
805 views when we look for interface type formals to force "this"
808 2019-07-10 Ed Schonberg <schonberg@adacore.com>
810 * sem_res.adb (Resolve_Equality_Op): Do not replace the resolved
811 operator by its alias if expander is not active, because the
812 operand type may not be frozen yet and its inherited operations
813 have not yet been created.
815 2019-07-10 Hristian Kirtchev <kirtchev@adacore.com>
817 * bindo-elaborators.adb (Elaborate_Units): Set attribute
818 Elab_Position of all elaborated units.
819 (Set_Unit_Elaboration_Positions): New routine.
821 2019-07-10 Gary Dismukes <dismukes@adacore.com>
823 * exp_util.adb: Reformatting and a typo fix.
825 2019-07-10 Yannick Moy <moy@adacore.com>
827 * exp_util.adb (Remove_Side_Effects): Prefer renamings for
828 objects of possible owning type in GNATprove mode.
830 2019-07-09 Ed Schonberg <schonberg@adacore.com>
832 * sem_ch3.adb (Analyze_Object_Declaration): If the object type
833 is a composite type that has a dynamic predicate and, the
834 expression in the declaration is an aggregate, the generated
835 predicate check must appear after the expanded code for the
836 aggregate, which will appear after the rewritten object
839 2019-07-09 Justin Squirek <squirek@adacore.com>
841 * sem_eval.adb (Expr_Value_E): Add conditional to correctly
842 handle constant enumerated character types.
844 2019-07-09 Eric Botcazou <ebotcazou@adacore.com>
846 * libgnarl/s-osinte__mingw.ads (CRITICAL_SECTION): Use proper
847 type for SpinCount component.
849 2019-07-09 Justin Squirek <squirek@adacore.com>
851 * exp_ch4.adb (Expand_N_Allocator): Add conditional to detect
852 the presence of anoymous access type allocators and issue a
853 warning if the appropriate warning flag is enabled.
854 * warnsw.ads: Add new warning flag for anonymous allocators
855 * warnsw.adb (All_Warnings, Restore_Warnings, Save_Warnings,
856 Set_Underscore_Warning_Switch): Register new flags.
857 (WA_Warnings): Register new flag as an "all warnings" switch
859 doc/gnat_ugn/building_executable_programs_with_gnat.rst:
860 Document new warning switches -gnatw_a and -gnatw_A.
861 * gnat_ugn.texi: Regenerate.
863 2019-07-09 Ed Schonberg <schonberg@adacore.com>
865 * sem_ch4.adb (Diagnose_Call): Improve error recovery when a
866 local subprogram name hides a possible candidate name declared
867 in a child package in the context of the current unit.
868 * sem_ch6.adb (Process_Formals): Protect against malformed
869 formal types when the parameter type does not denote an entity.
871 2019-07-09 Hristian Kirtchev <kirtchev@adacore.com>
873 * bindo-augmentors.adb (Visit_Elaboration_Root): Do not start a
874 DFS from an elaboration root whose corresponding unit lacks
875 elaboration code. This behavior mimics that of the old
876 elaboration order mechanism.
877 * bindo-graphs.adb (Find_All_Cycles_Through_Vertex): Move the
878 vertex tracing within the functional branches of the routine.
879 This prevents spurious trace output.
880 (Has_No_Elaboration_Code): New routine.
881 (Trace_Cycle, Trace_Edge): Update the various Ids to use the
882 "standard" trace format.
883 * bindo-graphs.ads (Has_No_Elaboration_Code): New routine.
884 * bindo-units.ads, bindo-units.adb (Has_No_Elaboration_Code):
887 2019-07-09 Piotr Trojanek <trojanek@adacore.com>
889 * ali.ads, bindo-graphs.adb, bindo-validators.adb, clean.adb,
890 doc/gnat_ugn/elaboration_order_handling_in_gnat.rst, einfo.ads,
891 exp_aggr.adb, exp_ch13.adb, exp_ch4.adb, exp_ch5.adb,
892 exp_ch6.adb, exp_ch7.adb, exp_ch9.adb, exp_pakd.adb,
893 fname-uf.ads, gnatlink.adb, inline.adb, lib.ads, make.adb,
894 namet.ads, opt.ads, par-ch4.adb, par-ch6.adb, par-labl.adb,
895 prep.adb, sem_aggr.adb, sem_ch13.adb, sem_ch4.adb, sem_ch5.adb,
896 sem_ch6.adb, sem_ch6.ads, sem_ch7.adb, sem_ch8.adb, sem_dim.adb,
897 sem_disp.adb, sem_prag.adb, sem_res.adb, sem_warn.adb,
898 sinfo.ads: Replace ". " with ". ". Minor reformatting and typo
900 * gnat_ugn.texi: Generate.
902 2019-07-09 Hristian Kirtchev <kirtchev@adacore.com>
904 * bindo.ads: Move type Precedence_Kind from the private to the
905 visible part of the unit.
906 * bindo-augmentors.adb: Remove the use of global data as it is
908 (Augment_Library_Graph): Update the parameter profile.
909 (Is_Visited, Set_Is_Visited): Remove.
910 (Visit_Elaboration_Root, Visit_Elaboration_Roots): Update the
911 parameter profile and comment on usage.
912 (Visit_Vertex): Likewise. Also keep track of which invocation
913 edge activates a task.
914 * bindo-augmentors.ads (Augment_Library_Graph): Update the
915 parameter profile and comment on usage.
916 * bindo-builders.adb (Create_Forced_Edge,
917 Create_Spec_And_Body_Edge, Create_With_Edge): Update the call to
919 * bindo-diagnostics.adb: Add with end use clauses for Restrict
921 (Output_Dynamic_Model_Suggestions): Remove.
922 (Output_Invocation_Related_Suggestions): New routine.
923 (Output_Suggestions): Output all invocation-related suggestions
925 * bindo-elaborators.adb: Remove types Comparator_Ptr and
927 (Find_Best_Vertex): Update the parameter profile.
928 * bindo-graphs.adb (Activates_Task): New routine.
929 (Add_Body_Before_Spec_Edge): Update the call to
930 Add_Edge_With_Return.
931 (Add_Edge): Update the parameter profile and the call to
932 Add_Edge_With_Return.
933 (Add_Edge_With_Return): Update the parameter profile and comment
935 (At_Least_One_Edge_Satisfies): New routine.
936 (Contains_Elaborate_All_Edge): Reimplement.
937 (Contains_Static_Successor_Edge, Contains_Task_Activation): New
939 (Contains_Weak_Static_Successor): Remove.
940 (Is_Static_Successor_Edge): New routine.
941 * bindo-graphs.ads: Add types LGE_Predicate_Ptr,
942 LGV_Comparator_Ptr, and LGV_Predicate_Ptr. Update type
943 Library_Graph_Edge_Attributes to capture whether an invocation
944 edge activates a task. Update the value of
945 No_Library_Graph_Edge_Attributes.
946 (Activates_Task): Update the parameter profile and comment on
948 (Contains_Static_Successor_Edge, Contains_Task_Activation): New
950 (Contains_Weak_Static_Successor): Remove.
951 * doc/gnat_ugn/elaboration_order_handling_in_gnat.rst:
952 Update the documentation to reflect the new task-related advice.
953 * gnat_ugn.texi: Regenerate.
955 2019-07-09 Piotr Trojanek <trojanek@adacore.com>
957 * exp_util.adb (Containing_Package_With_Ext_Axioms): Replace
958 low-level Ekind test with a high-level wrapper.
960 2019-07-09 Arnaud Charlet <charlet@adacore.com>
962 * libgnat/s-memory.adb: Disable calls to Abort defer/undefer
965 2019-07-09 Javier Miranda <miranda@adacore.com>
967 * sem_ch13.adb (Rep_Item_Too_Early): Representation clauses are
968 not allowed for a derivation of a generic type. Extend the
969 current test to check that none of the parents is a generic
972 2019-07-09 Hristian Kirtchev <kirtchev@adacore.com>
974 * exp_ch9.adb, exp_util.adb, repinfo.adb, sem_ch12.adb,
975 sem_prag.adb, sem_res.adb, sem_spark.adb, sem_util.adb: Minor
978 2019-07-09 Ed Schonberg <schonberg@adacore.com>
980 * sem_res.adb (Resolve_Equality_Op): If the node was overloaded,
981 set properly the entity to which the node has been resolved. The
982 original entity is the first one found during analysis, and is
983 not necessarily the resolved one.
984 (Resolve_Op_Not): If the argument of negation is an overloaded
985 equality operation, call its resolution directly given that the
986 context type does not participate in overload resolution.
988 2019-07-09 Hristian Kirtchev <kirtchev@adacore.com>
990 * bindo.adb: Remove with and use clauses for Debug. Add with
991 and use clauses for Opt.
992 (Find_Elaboration_Order): Enable the v4.0 elaboration order. The
993 v3.0 mechanism is now available under binder switch -H.
994 * bindusg.adb (Display): Enable switch -H.
995 * debug.adb: Free compiler switch -gnatd_G. Free binder switch
997 * sem_elab.adb: Update the section on switches to remove
999 (Invocation_Graph_Recording_OK): The invocation graph is now
1000 unconditionally recorded in ALI files.
1001 * switch-b.adb (Scan_Binder_Switches): Scan switch -H.
1002 * doc/gnat_ugn/building_executable_programs_with_gnat.rst:
1003 Update the documentation on compiler switches related to
1004 elaboration. Update the documentation on binder switches to
1006 * doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Update
1007 the documentation on elaboration order handling in GNAT.
1008 * gnat_ugn.texi: Regenerate.
1010 2019-07-09 Eric Botcazou <ebotcazou@adacore.com>
1012 * repinfo.adb (List_Entities): Disregard formals altogether.
1013 (List_Name): Properly escape the double quote in the JSON
1016 2019-07-09 Javier Miranda <miranda@adacore.com>
1018 * exp_util.adb (Remove_Side_Effects): Preserve the
1019 Do_Range_Check flag.
1021 2019-07-09 Yannick Moy <moy@adacore.com>
1023 * sinfo.ads: Refine comment for Do_Range_Check.
1025 2019-07-09 Yannick Moy <moy@adacore.com>
1027 * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Expand
1028 attribute reference on Enum_Rep.
1030 2019-07-09 Ed Schonberg <schonberg@adacore.com>
1032 * sem_ch12.adb (Instantiate_Formal_Package): Handle properly the
1033 case where the actual for a formal package in an instance is the
1034 current instance of an enclosing generic package.
1035 (Check_Formal_Packages): If the formal package declaration is
1036 box-initialized or lacks associations altogether, no internal
1037 instance was created to verify conformance, and there is no
1038 validating package to remove from tree.
1040 2019-07-09 Yannick Moy <moy@adacore.com>
1042 * freeze.adb (Build_Renamed_Body): Do not set body to inline in
1045 2019-07-09 Yannick Moy <moy@adacore.com>
1047 * exp_util.adb (Expand_Subtype_From_Expr): Still expand the type
1048 of static expressions in GNATprove_Mode.
1049 * sem_ch3.adb (Analyze_Object_Declaration): Remove obsolete
1050 special case for GNATprove_Mode.
1052 2019-07-09 Piotr Trojanek <trojanek@adacore.com>
1054 * doc/gnat_rm/the_gnat_library.rst,
1055 doc/gnat_ugn/building_executable_programs_with_gnat.rst,
1056 erroutc.adb, libgnat/g-comlin.adb, libgnat/g-comlin.ads,
1057 libgnat/g-regexp.ads, libgnat/g-regpat.ads,
1058 libgnat/g-spipat.ads, libgnat/s-os_lib.ads,
1059 libgnat/s-regexp.ads: Reword "wild card" to "wildcard".
1060 * gnat_rm.texi, gnat_ugn.texi: Regenerate.
1062 2019-07-09 Yannick Moy <moy@adacore.com>
1064 * sem_spark.adb (Check_Expression): Handle correctly implicit
1065 assignments as part of allocators and (extension) aggregates.
1066 (Get_Root_Object): Adapt for new path expressions.
1067 (Is_Path_Expression): Return True for (extension) aggregate.
1069 2019-07-09 Piotr Trojanek <trojanek@adacore.com>
1071 * einfo.ads: Fix a typo.
1073 2019-07-09 Ed Schonberg <schonberg@adacore.com>
1075 * sem_util.adb (Scope_Within_Or_Same): Handle properly task
1076 bodies and protected bodies, so that local variables within have
1077 their proper scopes after these constructs have been rewritten
1078 during expansion. This patch resembles but is not identical to
1079 the code in Scope_Within.
1081 2019-07-09 Arnaud Charlet <charlet@adacore.com>
1083 * gnat1drv.adb (Adjust_Global_Switches): Set
1084 Dynamic_Elaboration_Checks to True in CodePeer mode.
1086 2019-07-09 Yannick Moy <moy@adacore.com>
1088 * sem_spark.adb (Get_Perm_Or_Tree): Issue an error when
1089 encountering unknown global variable.
1091 2019-07-09 Yannick Moy <moy@adacore.com>
1093 * sem_spark.adb (Check_Expression): Change signature to take an
1094 Extended_Checking_Mode, for handling read permission checking of
1095 sub-expressions in an assignment.
1096 (Check_Parameter_Or_Global): Adapt to new behavior of
1097 Check_Expression for mode Assign.
1098 (Check_Safe_Pointers): Do not analyze generic bodies.
1099 (Check_Assignment): Separate checking of the target of an
1102 2019-07-09 Eric Botcazou <ebotcazou@adacore.com>
1104 * repinfo.ads (JSON format): Adjust.
1105 * repinfo.adb (Need_Blank_Line): Rename to...
1106 (Need_Separator): ...this.
1107 (Blank_Line): Rename to...
1108 (Write_Separator): ...this and add JSON specific handling.
1109 (List_Array_Info): Adjust to above renaming.
1110 (List_Object_Info): Likewise.
1111 (List_Record_Info): Likewise.
1112 (List_Subprogram_Info): Likewise.
1113 (List_Type_Info): Likewise.
1114 (List_Entities): Do not set Need_Blank_Line.
1115 (List_Rep_Info): Set Need_Separator and add JSON specific
1116 handling. Output a single JSON stream in the normal case.
1118 2019-07-09 Arnaud Charlet <charlet@adacore.com>
1120 * doc/gnat_ugn/the_gnat_compilation_model.rst: Update doc on
1121 -fdump-ada-spec now that we generate Ada 2012.
1122 * gnat_ugn.texi: Regenerate.
1124 2019-07-08 Eric Botcazou <ebotcazou@adacore.com>
1126 * repinfo.adb (List_Common_Type_Info): New procedure extracted
1128 (List_Type_Info): ...here. Call it for the common information,
1129 start with a blank line and output the linker section at the
1131 (List_Mechanisms): Rename to...
1132 (List_Subprogram_Info): ...this.
1133 (List_Array_Info): Call List_Common_Type_Info.
1134 (List_Entities): Adjust to above change and renaming.
1135 (List_Record_Info): Call List_Common_Type_Info.
1137 2019-07-08 Dmitriy Anisimkov <anisimko@adacore.com>
1139 * libgnat/g-sercom.ads
1140 (Serial_Port_Descriptor): New type.
1141 (Serial_Port): Add a comment, make it hold a
1142 Serial_Port_Descriptor.
1143 (To_Ada, To_C): New procedures.
1144 (Port_Data, Port_Data_Access): Remove types.
1145 * libgnat/g-sercom.adb (To_Ada): New stub.
1146 * libgnat/g-sercom__linux.adb, libgnat/g-sercom__mingw.adb:
1147 Update implementations accordingly.
1148 * s-oscons-tmplt.c: Bind Serial_Port_Descriptor to
1149 System.Win32.HANDLE on Windows, and to Interfaces.C.int on
1150 Linux. Add "Interfaces.C." prefix for other basic integer type
1152 * xoscons.adb (Output_Info): Remove the "Interfaces.C." prefix
1153 for subtypes generation.
1155 2019-07-08 Arnaud Charlet <charlet@adacore.com>
1157 * doc/gnat_rm/standard_and_implementation_defined_restrictions.rst:
1158 Update documentation on No_Exceptions restriction.
1159 * gnat_rm.texi: Regenerate.
1161 2019-07-08 Dmitriy Anisimkov <anisimko@adacore.com>
1163 * libgnat/s-os_lib.adb: Do not call __gnat_kill for Invalid_Pid.
1165 2019-07-08 Piotr Trojanek <trojanek@adacore.com>
1167 * sem_util.adb (Enclosing_Package_Or_Subprogram): Do not expect
1168 package and subprogram bodies.
1170 2019-07-08 Bob Duff <duff@adacore.com>
1172 * doc/gnat_ugn/gnat_utility_programs.rst: Remove documentation
1173 of ignored GNATpp switch.
1175 2019-07-08 Hristian Kirtchev <kirtchev@adacore.com>
1177 * doc/gnat_rm/implementation_defined_pragmas.rst:
1178 Update the documentation of pragma Initialize_Scalars.
1179 * gnat_rm.texi: Regenerate.
1181 2019-07-08 Javier Miranda <miranda@adacore.com>
1183 * exp_ch4.adb (Tagged_Membership): Fix regression silently
1184 introduced in r260738 that erroneouslusy causes the evaluation
1185 to True of the membership test when the left operand of the
1186 membership test is a class-wide interface object and the right
1187 operand is a type that implements such interface type.
1189 2019-07-08 Hristian Kirtchev <kirtchev@adacore.com>
1191 * sem_ch13.adb (Analyze_Attribute_Definition_Clause): Do not
1192 register an address clause when its prefix denotes a generic
1195 2019-07-08 Hristian Kirtchev <kirtchev@adacore.com>
1197 * bindo-diagnostics.adb (Diagnose_Cycle): Capture the presence
1198 of an Elaborate_All edge before iterating over the edges of the
1200 (Output_Elaborate_Body_Transition): Update the parameter profile
1201 and the comment on usage. Add a missing case where the edge is
1202 within the context of an Elaborate_All.
1203 (Output_Transition): Update the call to
1204 Output_Elaborate_Body_Transition.
1205 * bindo-graphs.ads, bindo-graphs.adb
1206 (Contains_Elaborate_All_Edge): New routine.
1208 2019-07-08 Piotr Trojanek <trojanek@adacore.com>
1210 * lib-xref-spark_specific.adb (Create_Heap): Set dummy Etype for
1211 the fake __HEAP entity.
1213 2019-07-08 Daniel Mercier <mercier@adacore.com>
1215 * gnat1drv.adb: Suppress warnings on memory representation in
1216 CodePeer compiler mode.
1218 2019-07-08 Nicolas Roche <roche@adacore.com>
1220 * rtinit.c (__gnat_runtime_initialize): Remove dependency on
1223 2019-07-08 Doug Rupp <rupp@adacore.com>
1225 * Makefile.rtl: Handle vxworks7r2 in x86_64 and x86 vxworks7.
1227 2019-07-08 Dmitriy Anisimkov <anisimko@adacore.com>
1229 * Makefile.rtl: Use g-sercom__linux.adb for all linuxes.
1231 2019-07-08 Yannick Moy <moy@adacore.com>
1233 * expander.adb (Expand): Do not reset Analyzed flag always.
1234 * sem_eval.adb (Fold_Ureal): Mark node as analyzed.
1236 2019-07-08 Ed Schonberg <schonberg@adacore.com>
1238 * exp_ch9.adb (Expand_N_Timed_Entry_Call): Do not insert twice
1239 the assignment statement that computes the delay value, to
1240 prevent improper tree sharing when the value is a type
1241 conversion and Float_Overflow checks are enabled.
1243 2019-07-08 Hristian Kirtchev <kirtchev@adacore.com>
1245 * bindo.adb: Update the section on terminology to include new
1246 concepts. Update the section on switches to include new
1248 * bindo.ads: Add type Precedence_Kind.
1249 * bindo-builders.adb: Add with and use clauses for Debug and
1250 Bindo.Validators. Add use clauses for
1251 Bindo.Validators.Invocation_Graph_Validators and
1252 Bindo.Validators.Library_Graph_Validators.
1253 (Build_Invocation_Graph): Validate the graph immediately after
1255 (Build_Library_Graph): Update the parameter profile. The
1256 creation of the graph is now elaboration model-agnostic.
1257 Validate the graph immediately after it was built.
1258 (Create_With_Edge): Create regular with edges for Elaborate and
1259 Elaborate_All edges when the appropriate debug switches are in
1261 * bindo-builders.ads (Build_Library_Graph): Update the parameter
1263 * bindo-diagnostics.adb (Diagnose_Cycle): Track the presence of
1264 an Elaborate_All edge throughout the inspection of the cycle's
1266 (Output_Dynamic_Model_Suggestions): Output the suggestion only
1267 when the cycle contains at least one weak edge where the
1268 successor was statically elaborated.
1269 (Output_Elaborate_Body_Transition, Output_Forced_Transition,
1270 Output_With_Transition): Update the assertions.
1271 * bindo-elaborators.adb: Remove use clauses for
1272 Bindo.Validators.Invocation_Graph_Validators and
1273 Bindo.Validators.Library_Graph_Validators. Remove strings
1274 Add_To_All_Candidates_Msg and Add_To_Comp_Candidates_Msg.
1275 Remove type String_Ptr.
1276 (Add_Vertex, Add_Vertex_If_Elaborable, Create_All_Candidates_Set
1277 Create_Component_Candidates_Set): Remove.
1278 (Create_Component_Vertex_Sets, Create_Vertex_Sets): New routine.
1279 (Elaborate_Component): Update the parameter profile and the
1280 comment on usage. Reimplement the elaboration of a component.
1281 The algorithm will now attempt to elaborate as many vertices
1282 possible. If this is not possible, and a weakly elaborable
1283 vertex is available use unit was compiled using the dynamic
1284 model, the algorithm will elaborate it.
1285 (Elaborate_Library_Graph): Reimplement the elaboration of the
1286 graph. The algorithm will now attempt to elaborate as many
1287 vertices along with their components as possible. If this is not
1288 possible, and a weakly elaborable vertex is available use unit
1289 was compiled using the dynamic model, the algorithm will
1290 elaborate it along with its component.
1291 (Elaborate_Units): Merge with the functionality of
1292 Elaborate_Units_Common.
1293 (Elaborate_Units_Common, Elaborate_Units_Dynamic,
1294 Elaborate_Units_Static): Remove.
1295 (Elaborate_Vertex): Update the parameter profile and the comment
1296 on usage. Reimplemented.
1297 (Find_Best_Candidate): Remove.
1298 (Find_Best_Elaborable_Vertex, Find_Best_Vertex,
1299 Find_Best_Weakly_Elaborable_Vertex, Has_Elaborable_Body,
1300 Insert_Elaborable_Successor, Insert_Vertex): New routines.
1301 (Is_Better_Candidate): Remove.
1302 (Is_Better_Elaborable_Vertex,
1303 Is_Better_Weakly_Elaborable_Vertex,
1304 Is_Suitable_Elaborable_Vertex,
1305 Is_Suitable_Weakly_Elaborable_Vertex): New routines.
1306 (Trace_Candidate_Vertices): Remove.
1307 (Trace_Component): Output the number of strong and weak
1309 (Trace_Unelaborated_Vertices): Remove.
1310 (Trace_Vertex): Output the number of strong and weak
1312 (Trace_Vertices): New routine.
1313 (Update_Successor, Update_Successors): Update the parameter
1314 profile and the comment on usage.
1315 * bindo-graphs.adb: Remove type Precedence_Kind.
1316 (Add_Edge_With_Return): Update the increment of pending
1318 (Add_Vertex): Provide default values for strong and weak
1320 (Complementary_Vertex): Move the initial declaration to the
1321 spec. Update the parameter profile and the comment on usage.
1322 (Contains_Weak_Static_Successor): New routine.
1323 (Create): Update the parameter profile. The creation of the
1324 graph is now elaboration model-agnostic.
1325 (Decrement_Pending_Predecessors): Update the parameter profile
1326 and the comment on usage. Reimplemented.
1327 (Delete_Edge): Update the decrement of pending predecesors.
1328 (Has_Elaborate_Body): Do not treat a vertex as being subject to
1329 Elaborate_Body when a debug switch is in effect.
1330 (Increment_Pending_Predecessors): Update the parameter profile
1331 and the comment on usage. Reimplemented.
1332 (Is_Elaborable_Component): Reimplemented.
1333 (Is_Elaborable_Vertex): Move the initial declaration to the
1334 spec. Reimplemented.
1335 (Is_Elaborate_Body_Pair): New routine.
1336 (Is_Dynamically_Elaborated): Update the parameter profile.
1338 (Is_Weakly_Elaborable_Vertex): New routine.
1339 (Pending_Predecessors): Removed.
1340 (Pending_Predecessors_For_Elaboration,
1341 Pending_Strong_Predecessors, Pending_Weak_Predecessors,
1342 Update_Pending_Predecessors): New routines.
1343 (Update_Pending_Predecessors_Of_Components): Update the
1344 increment of pending predecessors.
1345 * bindo-graphs.ads: Update the components of type
1346 Component_Attributes. Update the components of type
1347 Library_Graph_Attributes. Update the components of type
1348 Library_Graph_Vertex_Attributes. Update the initialization of
1349 No_Component_Attributes. Update the initialization of
1350 No_Library_Graph_Vertex_Attributes.
1351 (Complementary_Vertex, Contains_Weak_Static_Successor): New
1353 (Create): Update the parameter profile and the comment on usage.
1354 (Decrement_Pending_Predecessors, Is_Dynamically_Elaborated):
1355 Update the parameter profile and the comment on usage.
1356 (Is_Elaborate_Body_Pair, Is_Weakly_Elaborable_Vertex): New
1358 (Pending_Predecessors): Removed.
1359 (Pending_Predecessors_For_Elaboration,
1360 Pending_Strong_Predecessors, Pending_Weak_Predecessors): New
1362 * bindo-writers.adb (Write_Components): Moved from the spec.
1363 (Write_Component): Output the strong and weak predecessors.
1364 (Write_Library_Graph): Output the components as part of the
1366 (Write_Library_Graph_Vertex): Output the strong and weak
1368 * bindo-writers.ads (Write_Components): Moved to the body.
1369 * debug.adb: Add and document new GNATbind switches -d_a, -d_b,
1371 * bindo-validators.adb: Minor reformattings.
1373 2019-07-08 Bob Duff <duff@adacore.com>
1375 * libgnat/g-sercom.ads, libgnat/g-sercom__linux.adb (Data_Rate):
1376 Support additional data rates.
1378 2019-07-08 Olivier Hainque <hainque@adacore.com>
1380 * gcc-interface/trans.c (Compilation_Unit_to_gnu): Don't request
1381 DECL_ARTIFICIAL_P on elab proc declarations.
1383 2019-07-08 Eric Botcazou <ebotcazou@adacore.com>
1385 * repinfo.adb (List_Record_Info): Declare Incomplete_Layout and
1386 Not_In_Extended_Main local exceptions.
1387 (List_Structural_Record_Layout): For an extension, raise the
1388 former if the parent subtype has not been built and the latter
1389 if it is not declared in the main source unit. Fall back to the
1390 flat layout if either exception has been raised.
1392 2019-07-08 Ed Schonberg <schonberg@adacore.com>
1394 * libgnat/a-strfix.adb (Delete): The RM describes the semantics
1395 of Delete as equivalent to that of Replace_String with a null
1396 argument. As a result, deleting a null string that starts past
1397 the end of its argument is a noop and must not raise
1400 2019-07-08 Javier Miranda <miranda@adacore.com>
1402 * exp_disp.adb (Register_Primitive): When registering a
1403 primitive in the secondary dispatch table, handle primitive
1404 inherited through several levels of type derivation (required to
1405 properly handle inherited 'null' primitive).
1407 2019-07-08 Bob Duff <duff@adacore.com>
1409 * doc/gnat_ugn/gnat_utility_programs.rst: Document handling of
1410 preprocessor directives in GNATpp.
1412 2019-07-08 Javier Miranda <miranda@adacore.com>
1414 * gnat1drv.adb (Post_Compilation_Validation_Checks:
1415 Validate_Compile_Time_Warning_Errors is now located in sem_prag
1416 (instead of sem_ch13).
1417 * sem_ch13.ads (Validate_Compile_Time_Warning_Error,
1418 Validate_Compile_Time_Warning_Errors): Move to sem_prag.
1420 (Compile_Time_Warnings_Errors): Move to sem_prag.
1421 (Initialize): Remove initialization of table
1422 Compile_Time_Warning_Errors.
1423 (Validate_Compile_Time_Warning_Error,
1424 Validate_Compile_Time_Warning_Errors): Move to sem_prag.
1425 * sem_prag.ads (Validate_Compile_Time_Warning_Errors): New
1427 * sem_prag.adb (Initialize): Initialize table
1428 Compile_Time_Warning_Errors.
1430 2019-07-08 Ed Schonberg <schonberg@adacore.com>
1432 * sem_ch13.adb (Analyze_Aspect_Specifications): For a
1433 pre/postcondition of a generic subprogram declaration, do not
1434 use Relocate_Node on the aspect expression to construct the
1435 corresponding attribute specification, to prevent tree anomalies
1436 when the expression is a call with named actual parameters.
1438 2019-07-08 Javier Miranda <miranda@adacore.com>
1440 * sem_attr.adb (Analyze_Attribute [Attribute_Size]): For pragmas
1441 used to report user defined compile time warning or errors
1442 handle 'Size for types with known static RM size.
1444 2019-07-08 Justin Squirek <squirek@adacore.com>
1446 * exp_imgv.adb (Build_Enumeration_Image_Tables): Default SSO for
1447 the building of image tables.
1448 (Expand_Image_Attribute): Minor cleanup.
1450 2019-07-08 Dmitriy Anisimkov <anisimko@adacore.com>
1452 * libgnat/g-socket.ads, libgnat/g-socket.adb: Improve
1454 (Get_Socket_Option, Set_Socket_Option): Remove default value for
1457 2019-07-08 Ed Schonberg <schonberg@adacore.com>
1459 * sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): For an
1460 unanalized aspect in a generic context that has not been
1461 analyzed yet, if the aspect applies to a type, place the type on
1462 the scope stack to make its components visible, before checking
1463 conformance with the version of the expression analyzed at the
1466 2019-07-05 Justin Squirek <squirek@adacore.com>
1468 * checks.adb (Apply_Accessibility_Check): Add logic to fetch the
1469 function result accessibility level if one is required within
1470 the generated check.
1471 * exp_ch6.adb (Needs_Result_Accessibility_Level): Modify
1472 controlling elsif block to handle more cases such as anonymous
1473 access results and disable checking for coextensions.
1475 2019-07-05 Ed Schonberg <schonberg@adacore.com>
1477 * sem_ch9.adb (Analyze_Accept_Statement): If this is an illegal
1478 accept statement for an enclosing entry abandon analysis to
1479 prevent scope mismatches and potential infinite loops in
1482 2019-07-05 Hristian Kirtchev <kirtchev@adacore.com>
1484 * ali.adb (For_Each_Invocation_Construct,
1485 For_Each_Invocation_Relation): New version.
1486 (Scan_ALI): Initialize field Invocation_Graph_Encoding.
1487 (Set_Invocation_Graph_Encoding): Update the setting of the
1488 invocation graph encoding.
1489 * ali.ads: Move field Invocation_Graph_Encoding from Unit_Record
1490 to ALI_Record because the encoding applies to the whole ALI,
1491 rather than one of the units (spec or body) for which the ALI
1493 (For_Each_Invocation_Construct, For_Each_Invocation_Relation):
1495 * bindo.adb: Update the section on switches. Complete the
1496 section of debugging elaboration order issues.
1497 (Find_Elaboration_Order): Prepare the routine for the switch
1498 from the old to the new elaboration order mechanism.
1499 * bindo-diagnostics.adb (Find_And_Output_Invocation_Paths):
1500 Manage a visited set used by Visit_Vertex.
1501 (Output_All_Cycles_Suggestions,
1502 Output_Dynamic_Model_Suggestions): Clarify the nature of the
1504 (Output_Elaborate_Body_Transition): Update the diagnostic to
1505 emit a better message.
1506 (Output_Forced_Suggestions, Output_Full_Encoding_Suggestions):
1507 Clarify the nature of the suggested switch.
1508 (Visit_Vertex): Update the parameter profile to add a set of
1509 invokers visited during the transition. This set prevents
1510 infinite exploration of the graph in case the invocations are
1512 * bindo-elaborators.adb: Add a use clause for
1513 Bindo.Writers.Dependency_Writers.
1514 (Elaborate_Units_Common): Output the library graph after it has
1515 been augmented with invocation edges. Output just the components
1516 instead of outputting the whole library graph again.
1517 (Elaborate_Units_Dynamic, Elaborate_Units_Static): Output the
1518 dependencies as expressed in the library graph.
1519 * bindo-units.adb (Invocation_Graph_Encoding): Update the
1520 extraction of the invocation graph encoding.
1521 * bindo-writers.adb: Add with and use clauses for Binderr and
1523 (palgc, plgc): New debug routine.
1524 (Write_Components): Moved to the spec. Add a header for the
1526 (Write_Dependencies, Write_Dependencies_Of_Vertex,
1527 Write_Dependency_Edge): New routine.
1528 (Write_Elaboration_Order): Update the logic to follow the format
1529 of Binde's order output.
1530 (Write_Library_Graph): Do not output the components every time
1531 the graph is written.
1532 (Write_Unit): Output the invocation graph encoding of the unit.
1533 Output the invocation constructs and relations for the unit
1535 * bindo-writers.ads (Write_Components): Moved from the body.
1536 (Write_Dependencies): New routine.
1537 * bindusg.adb: Prepare the routine for the switch from the old
1538 to the new elaboration order mechanism.
1539 * debug.adb: Binder switch -d_O is now not associated with any
1541 * einfo.adb (Is_Elaboration_Target): The attribute applies to
1542 packages, as specified by the comment on the attribute usage.
1543 * opt.ads: Add a global flag which controls the choice between
1544 the new and the legacy elaboration order mechanism.
1545 * sem_elab.adb: Add Package_Target to type Target_Kind.
1546 (Build_Elaborate_Body_Procedure, Build_Elaborate_Procedure,
1547 Build_Elaborate_Spec_Procedure, Check_Elaboration_Scenarios,
1548 Check_SPARK_Model_In_Effect): Use Main_Unit_Entity to obtain the
1549 entity of the main unit.
1550 (Create_Package_Rep): New routine.
1551 (Create_Target_Rep): Add processing for packages.
1552 (Declaration_Placement_Of_Node, Has_Prior_Elaboration): Use
1553 Main_Unit_Entity to obtain the entity of the main
1555 (Invocation_Graph_Recording_OK): Prepare the routine for the
1556 switch from the old to the new elaboration order mechanism.
1557 (Main_Unit_Entity): New routine.
1558 (Meet_Elaboration_Requirement,
1559 Process_Conditional_ABE_Variable_Reference): Use
1560 Main_Unit_Entity to obtain the entity of the main unit.
1561 (Process_Invocation_Instantiation): New routine.
1562 (Process_Invocation_Scenario): Add processing for
1564 * switch-b.adb (Scan_Binder_Switches): Prepare the routine for
1565 the switch from the old to the new elaboration order mechanism.
1567 2019-07-05 Joffrey Huguet <huguet@adacore.com>
1569 * libgnat/a-textio.adb: Add abstract state refinment.
1570 * libgnat/a-textio.ads: Add File_System abstract state. Add
1571 global contracts, contract cases, preconditions and
1572 postconditions to procedures and functions.
1573 (Set_Input, Set_Output, Set_Error, Standard_Input,
1574 Standard_Output, Standard_Error, Current_Input, Current_Output,
1575 Current_Error): Turn SPARK_Mode off.
1576 (Get_Line): Turn SPARK_Mode off on Get_Line functions.
1577 * libgnat/a-tideio.ads, libgnat/a-tienio.ads,
1578 libgnat/a-tifiio.ads, libgnat/a-tiflio.ads,
1579 libgnat/a-tiinio.ads, libgnat/a-timoio.ads: Add global
1580 contracts, contract cases, preconditions and postconditions to
1581 procedures and functions.
1583 2019-07-05 Arnaud Charlet <charlet@adacore.com>
1585 * doc/gnat_ugn/platform_specific_information.rst: Refresh doc on
1586 installing from the command line on Windows. Remove obsolete
1588 * gnat_ugn.texi: Regenerate.
1590 2019-07-05 Vasiliy Fofanov <fofanov@adacore.com>
1592 * libgnat/a-wichha.ads (Is_Alphanumeric): Replace comment with
1593 the correct one. Also capitalize references to False
1596 2019-07-05 Eric Botcazou <ebotcazou@adacore.com>
1598 * exp_ch4.adb (Expand_N_Indexed_Component): Do not expand actual
1599 parameters of function calls here either.
1601 2019-07-05 Hristian Kirtchev <kirtchev@adacore.com>
1603 * bindo-units.adb, checks.adb, exp_attr.adb, exp_ch3.adb,
1604 exp_ch4.adb, exp_pakd.adb, lib-writ.adb, libgnat/g-traceb.adb,
1605 libgnat/g-traceb.ads, libgnat/s-stratt.ads, sem_aux.ads,
1606 sem_util.adb: Minor reformatting.
1608 2019-07-05 Ed Schonberg <schonberg@adacore.com>
1610 * sem_ch13.adb (Build_Predicate_Functions): If a subtype that
1611 carries a static predicate aspect is frozen immediately after
1612 its declaration, ensure that the generated function body created
1613 for predicate checking is inserted after the corresponding
1614 subprogram declaration, which is created at the point the
1615 declaration is elaborated.
1617 2019-07-05 Hristian Kirtchev <kirtchev@adacore.com>
1619 * exp_ch7.adb (Cleanup_Record): Use the underlying type when
1620 checking for components with tasks.
1622 2019-07-05 Arnaud Charlet <charlet@adacore.com>
1624 * libgnarl/s-osinte__linux.ads: Link with -lrt before -lpthread.
1626 2019-07-05 Ed Schonberg <schonberg@adacore.com>
1628 * exp_pakd.adb (Expand_Bit_Packed_Element_Set): Add explicit
1629 range checks when the index type of the bit-packed array is an
1630 enumeration type with a non-standard representation,
1632 2019-07-05 Hristian Kirtchev <kirtchev@adacore.com>
1634 * sem_res.adb (Is_Control_Flow_Statement): Delay statements
1635 contain an expression, which in turn may have side effects and
1636 affect the infinite recursion. As a result, delay statements
1637 should not be treated specially.
1639 2019-07-05 Arnaud Charlet <charlet@adacore.com>
1641 * libgnarl/s-linux.ads, libgnarl/s-linux__alpha.ads,
1642 libgnarl/s-linux__android.ads, libgnarl/s-linux__hppa.ads,
1643 libgnarl/s-linux__mips.ads, libgnarl/s-linux__riscv.ads,
1644 libgnarl/s-linux__sparc.ads: Fix typos in comments.
1646 2019-07-05 Hristian Kirtchev <kirtchev@adacore.com>
1648 * sem_res.adb (Check_Infinite_Recursion): Reimplemented.
1649 (Enclosing_Declaration_Or_Statement,
1650 Invoked_With_Different_Arguments, Is_Conditional_Statement,
1651 Is_Control_Flow_Statement, Is_Immediately_Within_Body,
1652 Is_Raise_Idiom, Is_Raise_Statement, Is_Sole_Statement,
1653 Preceded_By_Control_Flow_Statement,
1654 Within_Conditional_Statement): New routines.
1656 2019-07-05 Javier Miranda <miranda@adacore.com>
1658 * exp_ch4.adb (Expand_N_Type_Conversion): Do not apply an
1659 accessibility check when the conversion is an access to
1660 class-wide interface type and it is an actual parameter.
1661 * exp_ch6.adb (Expand_Call_Helper): Add documentation on the
1662 accessibility level of an anonymous allocator defining the value
1663 of an access parameter.
1664 * sem_util.ads, sem_util.adb (Dynamic_Accessibility_Level): Add
1665 support for an anonymous allocator whose type is that of a
1666 stand-alone object of an anonymous access to object type.
1668 2019-07-05 Piotr Trojanek <trojanek@adacore.com>
1670 * einfo.ads, sem_res.adb: Typo fixes in comments.
1672 2019-07-05 Bob Duff <duff@adacore.com>
1674 * exp_ch6.adb (Is_Build_In_Place_Function): Narrow the check for
1675 Has_Foreign_Convention to the imported case only. If a
1676 build-in-place function is exported, and called from Ada code,
1677 build-in-place protocols should be used.
1679 2019-07-05 Ed Schonberg <schonberg@adacore.com>
1681 * sem_util.adb (Encloing_Subprogram): If Enclosing_Dynamic_Scope
1682 is a loop, continue climbing the scope stack to find the
1683 enclosing subprogram.
1684 (Gather_Components): Handle properly a choice in a record
1685 aggregate that is given by a subtype with a static predicate.
1687 2019-07-05 Javier Miranda <miranda@adacore.com>
1689 * debug.adb (-gnatd.K): Leave available this switch.
1690 * contracts.adb (Build_And_Analyze_Contract_Only_Subprograms):
1692 * scil_ll.ads, scil_ll.adb (Contract_Only_Body_Flag,
1693 Contract_Only_Body_Nodes, Get_Contract_Only_Body,
1694 Is_Contract_Only_Body, Set_Contract_Only_Body): Remove.
1696 2019-07-05 Pierre-Marie de Rodat <derodat@adacore.com>
1698 * libgnat/a-strunb.ads: Import documentation from the RM
1700 2019-07-05 Pierre-Marie de Rodat <derodat@adacore.com>
1702 * libgnat/a-strfix.ads: Import documentation from the RM
1704 2019-07-05 Yannick Moy <moy@adacore.com>
1706 * adabkend.adb (Scan_Back_End_Switches): Accept -Og and -Ofast
1709 2019-07-05 Hristian Kirtchev <kirtchev@adacore.com>
1711 * ali.adb: Relocate types Invocation_Construct_Record,
1712 Invocation_Relation_Record, and Invocation_Signature_Record to
1713 the body of ALI. Relocate tables Invocation_Constructs,
1714 Invocation_Relations, and Invocation_Signatures to the body of
1715 ALI. Remove type Body_Placement_Codes. Add new types
1716 Declaration_Placement_Codes, and
1717 Invocation_Graph_Encoding_Codes. Update the literals of type
1718 Invocation_Graph_Line_Codes.
1719 (Add_Invocation_Construct): Update the parameter profile. Add an
1720 invocation construct built from all attributes provided.
1721 (Add_Invocation_Relation): Update the parameter profile. Add an
1722 invocation relation built from all attributes provided.
1723 (Body_Placement): New routine.
1724 (Body_Placement_Kind_To_Code, Code_To_Body_Placement_Kind):
1726 (Code_To_Declaration_Placement_Kind,
1727 Code_To_Invocation_Graph_Encoding_Kind, Column,
1728 Declaration_Placement_Kind_To_Code, Extra,
1729 For_Each_Invocation_Construct, For_Each_Invocation_Relation,
1730 Invocation_Graph_Encoding,
1731 Invocation_Graph_Encoding_Kind_To_Code, Invoker, Kind, Line,
1732 Locations, Name): New routine.
1733 (Scan_Invocation_Construct_Line): Reimplement the scanning
1735 (Scan_Invocation_Graph_Attributes_Line): New routine.
1736 (Scan_Invocation_Graph_Line): Use a case statement to dispatch.
1737 (Scan_Invocation_Relation_Line): Reimplement the scanning
1739 (Scope): New routine.
1740 (Set_Invocation_Graph_Encoding, Signature, Spec_Placement,
1741 Target): New routine.
1742 * ali.ads: Add new type Invocation_Graph_Encoding_Kind. Add
1743 component Invocation_Graph_Encoding to type Unit_Record.
1744 Relocate various types and data structures to the body of ALI.
1745 (Add_Invocation_Construct, Add_Invocation_Relation): Update the
1747 (Body_Placement): New routine.
1748 (Body_Placement_Kind_To_Code, Code_To_Body_Placement_Kind):
1750 (Code_To_Declaration_Placement_Kind,
1751 Code_To_Invocation_Graph_Encoding_Kind, Column,
1752 Declaration_Placement_Kind_To_Code, Extra,
1753 For_Each_Invocation_Construct, For_Each_Invocation_Relation,
1754 Invocation_Graph_Encoding,
1755 Invocation_Graph_Encoding_Kind_To_Code, Invoker, Kind, Line,
1756 Locations, Name, Scope, Set_Invocation_Graph_Encoding,
1757 Signature, Spec_Placement, Target): New routine.
1758 * bindo.adb: Add with clause for Binde. Add with and use
1759 clauses for Debug. Update the documentation. Add new switches.
1760 (Find_Elaboration_Order): Dispatch to the proper elaboration
1762 * bindo-augmentors.adb:
1763 Remove with and use clauses for GNAT and GNAT.Sets. Remove
1764 membership set VS. Update the parameter profiles of most
1765 routines to use better parameter names. Update the
1766 implementation of most routine to use the new parameter names.
1767 Remove various redundant assertions.
1768 * bindo-builders.adb: Use better names for instantiated data
1769 structures. Update all references to these names. Update the
1770 parameter profiles of most routines to use better parameter
1771 names. Update the implementation of most routine to use the new
1773 (Build_Library_Graph): Update the parameter profile. Update the
1775 (Create_Vertex): Reimplemented.
1776 (Declaration_Placement_Vertex): New routine.
1777 * bindo-builders.ads (Build_Library_Graph): Update the parameter
1778 profile and comment on usage.
1779 * bindo-diagnostics.adb: Almost a new unit.
1780 * bindo-diagnostics.ads: Add a use clause for
1781 Bindo.Graphs.Invocation_Graphs. Remove package
1783 (Diagnose_Circularities): New routine.
1784 * bindo-elaborators.adb: Remove the with and use clauses for
1785 Binderr and GNAT.Sets. Remove the use clause for
1786 Bindo.Diagnostics.Cycle_Diagnostics. Remove membership set VS.
1787 Update the parameter profiles of most routines to use better
1788 parameter names. Update the implementation of most routine to
1789 use the new parameter names. (Elaborate_Units_Common): Update
1790 the parameter profile. Pass an infication to the library graph
1791 builder whether the dynamic model is in effect.
1792 (Elaborate_Units_Dynamic, Elaborate_Units_Static): Use
1793 Diagnose_Circularities to provide diagnostics.
1794 (Update_Successor): Use routine In_Same_Component to determine
1795 whether the predecessor and successor reside in different
1797 * bindo-graphs.adb: Add with and use clauses for Butil, Debug,
1798 Output, and Bindo.Writers. Remove with and use clauses for
1799 GNAT.Lists. Update the parameter profiles of most routines to
1800 use better parameter names. Update the implementation of most
1801 routine to use the new parameter names. Remove various
1802 redundant assertions. Remove doubly linked list EL. Add new
1803 type Precedence_Kind.
1804 (Add_Cycle): New routine.
1805 (Add_Vertex): Update the parameter profile. Update the creation
1806 of vertex attributes.
1807 (Add_Vertex_And_Complement, Body_Vertex, Column,
1808 Complementary_Vertex, Copy_Cycle_Path, Cycle_Kind_Of): New
1810 (Destroy_Invocation_Graph_Edge, Destroy_Library_Graph_Cycle,
1811 Destroy_Library_Graph_Edge, Extra, File_Name,
1812 Find_All_Cycles_Through_Vertex, Find_All_Cycles_With_Edge,
1813 Find_Cycles, Find_First_Lower_Precedence_Cycle,
1814 Get_LGC_Attributes, Has_Next, Hash_Library_Graph_Cycle,
1815 Hash_Library_Graph_Cycle_Attributes, Highest_Precedence_Cycle,
1816 Highest_Precedence_Edge, In_Same_Component, Insert_And_Sort,
1817 Invocation_Edge_Count, Invocation_Graph_Encoding,
1818 Is_Cycle_Initiating_Edge, Is_Cyclic_Edge,
1819 Is_Cyclic_Elaborate_All_Edge, Is_Cyclic_Elaborate_Body_Edge,
1820 Is_Cyclic_Elaborate_Edge, Is_Cyclic_Forced_Edge,
1821 Is_Cyclic_Invocation_Edge, Is_Cyclic_With_Edge,
1822 Is_Dynamically_Elaborated, Is_Elaborate_All_Edge,
1823 Is_Elaborate_Body_Edge, Is_Elaborate_Edge: New routines.
1824 (Is_Existing_Predecessor_Successor_Relation): Removed.
1825 (Is_Forced_Edge, Is_Invocation_Edge, Is_Recorded_Cycle,
1826 Is_Recorded_Edge, Is_With_Edge, Iterate_Edges_Of_Cycle, Kind,
1827 Length): New routine.
1828 (Lib_Vertex): Removed.
1829 (Line, Links_Vertices_In_Same_Component,
1830 Maximum_Invocation_Edge_Count, Next, Normalize_And_Add_Cycle,
1831 Normalize_Cycle_Path, Number_Of_Cycles, Path, Precedence,
1832 Remove_Vertex_And_Complement, Sequence_Next_Cycle): New routines.
1833 (Sequence_Next_IGE_Id): Renamed to Sequence_Next_Edge.
1834 (Sequence_Next_IGV_Id): Renamed to Sequence_Next_Vertex.
1835 (Sequence_Next_LGE_Id): Renamed to Sequence_Next_Edge.
1836 (Sequence_Next_LGV_Id): Renamed to Sequence_Next_Vertex.
1837 (Set_Is_Existing_Predecessor_Successor_Relation): Removed.
1838 (Set_Is_Recorded_Cycle, Set_Is_Recorded_Edge,
1839 Set_LGC_Attributes, Spec_Vertex, Trace_Cycle, Trace_Edge,
1840 Trace_Eol, Trace_Vertex): New routines.
1841 * bindo-graphs.ads: Add with and use clauses for Types and
1842 GNAT.Lists. Update the parameter profiles of most routines to
1843 use better parameter names. Update the implementation of most
1844 routine to use the new parameter names. Add the new
1845 instantiated data structures IGE_Lists, IGV_Sets, LGC_Lists,
1846 LGE_Lists, LGE_Sets, LGV_Sets, and RC_Sets. Add new type
1847 Library_Graph_Cycle_Id along with an empty and initial value.
1848 Remove component Lib_Vertex and add new components Body_Vertex
1849 and Spec_Vertex to type Invocation_Graph_Vertex_Attributes. Add
1850 new type Library_Graph_Cycle_Kind. Add new iterators
1851 All_Cycle_Iterator and Edges_Of_Cycle_Iterator. Add new type
1852 Library_Graph_Cycle_Attributes. Add new components
1853 Cycle_Attributes, Cycles, and Dynamically_Elaborated to type
1854 Library_Graph_Attributes.
1855 (Body_Vertex, Column, Destroy_Invocation_Graph_Edge,
1856 Destroy_Library_Graph_Cycle_Attributes,
1857 Destroy_Library_Graph_Edge, Extra, File_Name, Find_Cycles,
1858 Has_Elaborate_All_Cycle, Has_Next, Hash_Library_Graph_Cycle,
1859 Hash_Library_Graph_Cycle_Attributes, Highest_Precedence_Cycle,
1860 In_Same_Component, Invocation_Edge_Count,
1861 Invocation_Graph_Encoding, Is_Dynamically_Elaborated,
1862 Is_Elaborate_All_Edge, Is_Elaborate_Body_Edge,
1863 Is_Elaborate_Edge, Is_Forced_Edge, Is_Invocation_Edge,
1864 Is_With_Edge, Iterate_All_Cycles, Iterate_Edges_Of_Cycle, Kind):
1866 (Length, Lib_Vertex, (Line, Next, Number_Of_Cycles, Present,
1867 Same_Library_Graph_Cycle_Attributes, Spec_Vertex): New routines.
1868 * bindo-units.adb (File_Name, Invocation_Graph_Encoding): New
1870 * bindo-units.ads: Add new instantiated data structure
1872 (File_Name, Invocation_Graph_Encoding): New routine.
1873 * bindo-validators.adb: Remove with and use clauses for GNAT and
1874 GNAT.Sets. Remove membership set US. Update the parameter
1875 profiles of most routines to use better parameter names. Update
1876 the implementation of most routine to use the new parameter
1878 (Validate_Cycle, Validate_Cycle_Path, Validate_Cycles,
1879 Validate_Invocation_Graph_Vertex): Remove the validation of
1880 component Lib_Vertex. Add the validation of components
1881 Body_Vertex and Spec_Vertex.
1882 (Write_Error): New routine.
1883 * bindo-validators.ads (Validate_Cycles): New routine.
1884 * bindo-writers.adb: Update the parameter profiles of most
1885 routines to use better parameter names. Update the
1886 implementation of most routine to use the new parameter names.
1887 (Write_Cycle, Write_Cyclic_Edge, Write_Cycles): New routines.
1888 (Write_Invocation_Graph_Vertex): Remove the output of component
1889 Lib_Vertex. Add the output of components Body_Vertex and
1891 * bindo-writers.ads (Write_Cycles): New routine.
1892 * debug.adb: Use binder switches -d_C and -d_P, add
1893 documentation on their usage.
1894 * gnatbind.adb: Remove with and use clauses for Binde. Delegate
1895 the choice of elaboration mechanism to Bindo.
1896 * lib-writ.adb (Column, Extra, Invoker, Kind, Line, Locations,
1897 Name, Placement, Scope, Signature, Target): Removed.
1898 (Write_Invocation_Graph): Moved at the top level.
1899 (Write_Invocation_Graph_Attributes): New routine.
1900 (Write_Invocation_Relation, Write_Invocation_Signature): Moved
1902 * lib-writ.ads: Add a documentation section on invocation graph
1904 * sem_elab.adb (Body_Placement_Of): New routine.
1905 (Declare_Invocation_Construct): Update the call to
1906 Add_Invocation_Construct.
1907 (Declaration_Placement_Of_Node): New routine.
1908 (Get_Invocation_Attributes): Correct the retrieval of the
1909 enclosing subprogram where the postcondition procedure lives.
1910 (Placement_Of, Placement_Of_Node): Removed.
1911 (Record_Invocation_Graph): Record the encoding format used.
1912 (Record_Invocation_Graph_Encoding): New routine.
1913 (Record_Invocation_Relation): Update the call to
1914 Add_Invocation_Relation.
1915 (Spec_Placement_Of): Removed.
1916 * libgnat/g-lists.ads, libgnat/g-lists.adb (Equal): New routine.
1918 2019-07-05 Ed Schonberg <schonberg@adacore.com>
1920 * checks.adb (Apply_Predicate_Check): Except within the
1921 subprogram body that defines the formal, do not apply predicate
1922 check on a formal IN parameter: such a check is redundant and
1923 its expansion can lead to out-of-scope references when it is
1924 originates in a function call in a precondition,
1926 2019-07-05 Yannick Moy <moy@adacore.com>
1928 * sem_res.adb (Resolve_Call): Cannot inline in quantified
1930 * sem_util.adb, sem_util.ads (In_Quantified_Expression): New
1933 2019-07-05 Bob Duff <duff@adacore.com>
1935 * doc/gnat_rm/standard_and_implementation_defined_restrictions.rst:
1937 * gnat_rm.texi: Regenerate.
1939 2019-07-05 Bob Duff <duff@adacore.com>
1941 * exp_attr.adb (Input): Take the No_Stream_Optimizations
1942 restriction into account.
1944 2019-07-05 Claire Dross <dross@adacore.com>
1946 * libgnat/a-cofove.ads, libgnat/a-cofove.adb: Definite formal
1947 vectors are now always bounded so that they do not need to be
1950 2019-07-05 Dmitriy Anisimkov <anisimko@adacore.com>
1952 * libgnat/g-traceb.ads, libgnat/g-traceb.adb (Call_Chain): New
1955 2019-07-04 James Clarke <jrtc27@debian.org>
1957 * libgnarl/s-osinte__kfreebsd-gnu.ads (clockid_t): Make type
1959 (CLOCK_REALTIME): Make value public.
1961 2019-07-04 Javier Miranda <miranda@adacore.com>
1963 * exp_tss.adb (Init_Proc): Adding missing support for access to
1964 subprograms and access to protected subprograms of non-default
1967 2019-07-04 Eric Botcazou <ebotcazou@adacore.com>
1969 * gnat1drv.adb (Adjust_Global_Switches): Use proper interface to
1970 set the validity settings in CodePeer mode.
1971 * par-load.adb (Load): Remove all code dealing with validity
1973 * validsw.ads (Validity_Check_Copies): Alphabetize.
1974 * validsw.adb (Reset_Validity_Check_Options): Set all options to
1976 (Save_Validity_Check_Options): Save all options.
1978 2019-07-04 Hristian Kirtchev <kirtchev@adacore.com>
1980 * exp_ch3.adb, exp_ch4.adb, exp_ch4.ads, exp_ch5.adb,
1981 exp_ch7.adb, exp_ch9.adb, exp_ch11.adb, exp_unst.adb,
1982 rtsfind.ads, sem_attr.adb, sem_ch10.adb, sem_ch12.adb,
1983 sem_ch13.adb, sem_dim.adb, sem_disp.adb, xref_lib.adb: Minor
1986 2019-07-04 Joffrey Huguet <huguet@adacore.com>
1988 * libgnarl/a-taside.ads: Add assertion policy to ignore
1990 (Abort_Task, Is_Terminated, Is_Callable): Add preconditions.
1992 2019-07-04 Eric Botcazou <ebotcazou@adacore.com>
1994 * doc/gnat_rm/implementation_defined_pragmas.rst: Fix
1995 capitalization and parenthesis glitches.
1996 * gnat_rm.texi: Regenerate.
1998 2019-07-04 Ed Schonberg <schonberg@adacore.com>
2000 * sem_ch10.adb (Remove_Context_Clauses): Handle properly the
2001 removal of a limited_with_clause which appears in the library
2002 unit oF the main unit, when some other unit in the context has a
2003 regular with_clause on the same unit, to prevent spurious
2004 visibility errors in the subsequent analysis of pending instance
2007 2019-07-04 Hristian Kirtchev <kirtchev@adacore.com>
2009 * sem_elab.adb: Add new type Elaboration_Phase_Status along with
2010 a global to keep track of the elaboration phase status.
2011 Initialize all internal data structures to Nil for services
2012 Elaborated_Units, Internal_Representation, and Scenario_Storage.
2013 (Build_Call_Marker): Do not create a call marker when the
2014 elaboration phase is not active.
2015 (Build_Variable_Reference_Marker): Do not create a call marker
2016 when the elaboration phase is not active.
2017 (Check_Elaboration_Scenarios): Destroy all internal structures
2018 when the elaboration phase does not have to run. Do not execute
2019 when the elaboration phase is not active.
2020 (Elaboration_Phase_Active): New routine.
2021 (Finalize_All_Data_Structures): New routine.
2022 (Initialize): Initialize all internal data structures and signal
2023 that the elaboration phase has started.
2024 (Initialize_All_Data_Structures): New routine.
2025 (Initialize_Elaborated_Units): Initialize all internal data
2027 (Initialize_Internal_Representation): Initialize all internal
2029 (Initialize_Scenario_Storage): Initialize all internal data
2031 (Kill_Elaboration_Scenario): Do not execute when the elaboration
2032 phase is not active.
2033 (Set_Elaboration_Phase): New routine.
2034 (Update_Elaboration_Scenario): Do not execute when the
2035 elaboration phase is not active.
2037 2019-07-04 Gary Dismukes <dismukes@adacore.com>
2039 * sem_ch6.adb (Analyze_Subprogram_Body_Helper): The special
2040 treatment of calling Mask_Unfrozen_Types must also be done in
2041 the case of an Ignored_Ghost_Entity, because Expander_Active is
2044 2019-07-04 Yannick Moy <moy@adacore.com>
2046 * sem_prag.adb (Check_Library_Level_Entity): Update for new rule
2049 2019-07-04 Justin Squirek <squirek@adacore.com>
2051 * sem_disp.adb (Check_Controlling_Formals): Obtain the full view
2052 before type comparison.
2054 2019-07-04 Ed Schonberg <schonberg@adacore.com>
2056 * exp_ch4.ads, exp_ch4.adb (Build_Eq_Call): New visible
2057 subprogram, extracted from Expand_Composite_Equality, to handle
2058 properly the composition of equality for variant record types.
2059 * exp_ch3.adb (MAke_Eq_If): Use Build_Eq_Call for each
2060 component, to handle properly the case of a component with a
2061 user-defined equality. Revert to predefined equality if the
2062 user-defined operation is abstract, to maintain compatibility
2063 with older versions,
2065 2019-07-04 Justin Squirek <squirek@adacore.com>
2067 * exp_ch3.adb (Build_Initialization_Call): Fixup
2068 *_skip_null_excluding_check argument to handle new default.
2069 (Init_Formals): Make *_skip_null_excluding_check formal default
2071 * exp_ch4.adb (Expand_N_Allocator): Add comment to note heavy
2074 2019-07-04 Bob Duff <duff@adacore.com>
2076 * sem_ch3.adb (Access_Definition): Do not create a master unless
2077 Tasking_Allowed. Otherwise, this fails on restricted runtimes.
2079 2019-07-04 Hristian Kirtchev <kirtchev@adacore.com>
2081 * sem_util.adb (Propagate_DIC_Attributes): Do not propagate the
2082 Default_Initial_Condition attributes to an incomplete type.
2084 2019-07-04 Ed Schonberg <schonberg@adacore.com>
2086 * sem_attr.adb (Check_Array_Type): An array type attribute such
2087 as 'First can be applied to an unconstrained array tyope when
2088 the attribute reference appears within an aspect specification
2089 and the prefix is a current instance, given that the prefix of
2090 the attribute will become a formal of the subprogram that
2091 implements the aspect (typically a predicate check).
2093 2019-07-04 Piotr Trojanek <trojanek@adacore.com>
2095 * sem_util.adb (Yields_Synchronized_Object): Fix typos in
2098 2019-07-04 Yannick Moy <moy@adacore.com>
2100 * sem_util.adb (Yields_Synchronized_Object): Adapt to new SPARK
2103 2019-07-04 Yannick Moy <moy@adacore.com>
2105 * sem_spark.adb (Check_Statement): Only check permission of
2106 object in extended return when it is of a deep type.
2108 2019-07-04 Justin Squirek <squirek@adacore.com>
2110 * sem_ch12.adb (Perform_Appropriate_Analysis): Added for
2111 selecting which type of analysis based on wheither the
2112 instantiation is a generic at the library-level. In which case
2113 expansion during analysis.
2114 (Preanalyze_Actuals): Modify calls to Analyze to use the new
2117 2019-07-04 Ed Schonberg <schonberg@adacore.com>
2119 * exp_unst.adb: Handle conditional expressions.
2121 2019-07-04 Yannick Moy <moy@adacore.com>
2123 * sem_spark.adb (Check_Package_Spec, Check_Package_Body): Only
2124 analyze parts of the code marked in SPARK.
2126 2019-07-04 Hristian Kirtchev <kirtchev@adacore.com>
2128 * erroutc.adb, exp_aggr.adb, inline.adb, opt.adb, sem_ch3.adb:
2131 2019-07-04 Yannick Moy <moy@adacore.com>
2133 * sem_spark.adb (Explanation, Get_Expl): New functions to get
2134 the explanation for a permission mismatch.
2135 (Perm_Error, Perm_Mismatch, Perm_Error_Loop_Exit): Take
2136 explanation into account for issuing a more precise error
2138 (Set_Perm_Prefixes, Set_Perm_Extensions,
2139 Set_Perm_Extensions_Move): Pass suitable argument for the
2142 2019-07-04 Arnaud Charlet <charlet@adacore.com>
2144 * exp_aggr.adb (In_Place_Assign_OK): Moved to top level and add
2145 support for record aggregates.
2146 (Component_Check): Use Is_CCG_Supported_Aggregate instead of a
2147 similar local predicate.
2148 (Convert_To_Assignments): Take advantage of In_Place_Assign_OK
2149 predicate when possible.
2150 (Is_CCG_Supported_Aggregate): Return False for records with
2151 representation clauses and fix the logic for dealing with nested
2154 2019-07-04 Piotr Trojanek <trojanek@adacore.com>
2156 * opt.adb (Set_Config_Switches): Keep assertions policy as
2157 enabled when analysing internal units in GNATprove mode.
2159 2019-07-04 Arnaud Charlet <charlet@adacore.com>
2161 * exp_ch4.adb (Expand_Short_Circuit_Operator): Strip
2162 N_Variable_Reference_Marker when checking for the presence of
2165 2019-07-04 Arnaud Charlet <charlet@adacore.com>
2167 * exp_aggr.adb (Check_Component): Take into account type
2170 2019-07-04 Dmitriy Anisimkov <anisimko@adacore.com>
2172 * doc/gnat_ugn/platform_specific_information.rst: Document
2173 Windows socket timeout particularity.
2174 * gnat_ugn.texi: Regenerate.
2175 * gsocket.h: Include versionhelpers.h.
2176 * socket.c (__gnat_minus_500ms): New function.
2177 * libgnat/g-sothco.ads (Minus_500ms_Windows_Timeout): New
2179 * libgnat/g-socket.adb (Set_Socket_Option): Refactor to remove
2180 500ms from the requested timeout only on old Windows version.
2182 2019-07-04 Thomas Quinot <quinot@adacore.com>
2184 * get_scos.adb: Remove bogus, dead code.
2186 2019-07-04 Ed Schonberg <schonberg@adacore.com>
2188 * sem_dim.adb (Analyze_Dimension_Array_Aggregate): If the
2189 component is an entity name, its dimensions are those of its
2192 2019-07-03 Bob Duff <duff@adacore.com>
2194 * doc/gnat_ugn/gnat_utility_programs.rst: Document new flags in
2197 2019-07-03 Hristian Kirtchev <kirtchev@adacore.com>
2199 * binde.adb: Remove with clause for System.OS_Lib.
2200 (Force_Elab_Order): Refactor the majority of the code in Butil.
2201 Use the new forced units iterator to obtain unit names.
2202 * bindo-builders.adb: Add with and use clauses for Binderr,
2203 Butil, Opt, Output, Types, GNAT, and GNAT.Dynamic_HTables. Add
2204 a hash table which maps units to line number in the forced
2205 elaboration order file.
2206 (Add_Unit): New routine.
2207 (Build_Library_Graph): Create forced edges between pairs of
2208 units listed in the forced elaboration order file.
2209 (Create_Forced_Edge, Create_Forced_Edges, Destroy_Line_Number,
2210 Duplicate_Unit_Error, Hash_Unit, Internal_Unit_Info,
2211 Is_Duplicate_Unit, Missing_Unit_Info): New routines.
2212 * bindo-graphs.adb (Is_Internal_Unit, Is_Predefined_Unit):
2213 Refactor some of the behavior to Bindo-Units.
2214 * bindo-graphs.ads: Enable the enumeration literal for forced
2216 * bindo-units.adb, bindo-units.ads (Is_Internal_Unit,
2217 Is_Predefined_Unit): New routines.
2218 * butil.adb: Add with and use clauses for Opt, GNAT, and
2219 System.OS_Lib. Add with clause for Unchecked_Deallocation.
2220 (Has_Next, Iterate_Forced_Units, Next, Parse_Next_Unit_Name,
2221 Read_Forced_Elab_Order_File): New routines.
2222 * butil.ads: Add with and use clauses for Types. Add new
2223 iterator over the units listed in the forced elaboration order
2225 (Has_Next, Iterate_Forced_Units, Next): New routine.
2226 * namet.adb, namet.ads (Present): New routine.
2228 2019-07-03 Bob Duff <duff@adacore.com>
2230 * sem_ch3.adb (Access_Definition): The code was creating a
2231 master in the case where the designated type is a class-wide
2232 interface type. Create a master in the noninterface case as
2233 well. That is, create a master for all limited class-wide types.
2235 2019-07-03 Yannick Moy <moy@adacore.com>
2237 * erroutc.adb (Sloc_In_Range): New function to determine whether
2238 the range of a pragma Warnings covers a location, taking
2239 instantiations into account.
2241 2019-07-03 Johannes Kanig <kanig@adacore.com>
2243 * osint.ads, osint.adb (Get_First_Main_File_Name): New routine
2244 to access the first file provided on the command line.
2246 2019-07-03 Ed Schonberg <schonberg@adacore.com>
2248 * inline.adb (Process_Formals_In_Aspects): New procedure within
2249 Expand_Inlined_Call, to perform a replacement of references to
2250 formals that appear in aspect specifications within the body
2253 2019-07-03 Justin Squirek <squirek@adacore.com>
2255 * sem_ch8.adb (Analyze_Object_Renaming): Add call to search for
2256 the appropriate actual subtype of the object renaming being
2258 (Check_Constrained_Object): Minor cleanup.
2260 2019-07-03 Yannick Moy <moy@adacore.com>
2262 * sem_spark.adb (Get_Observed_Or_Borrowed_Expr): New function to
2263 return go through traversal function call.
2264 (Check_Type): Consistently use underlying type.
2265 (Get_Perm): Adapt for case of elaboration code where variables
2266 are not declared in the environment. Remove incorrect handling
2267 of borrow and observe.
2269 2019-07-03 Hristian Kirtchev <kirtchev@adacore.com>
2271 * inline.adb (Build_Return_Object_Formal): New routine.
2272 (Can_Split_Unconstrained_Function): Code clean up.
2273 (Copy_Formals,Copy_Return_Object): New routines.
2274 (Split_Unconstrained_Function): Code clean up and refactoring.
2276 2019-07-03 Gary Dismukes <dismukes@adacore.com>
2278 * bindo-augmentors.adb, bindo-augmentors.ads,
2279 bindo-builders.ads, bindo-elaborators.adb, sem_ch12.adb,
2280 sem_ch13.adb, sem_spark.adb, sinfo.ads: Minor editorial
2281 corrections and reformatting.
2283 2019-07-03 Bob Duff <duff@adacore.com>
2285 * sem_warn.adb (Check_Infinite_Loop_Warning): Avoid the warning
2286 if an Iterator_Specification is present.
2288 2019-07-03 Bob Duff <duff@adacore.com>
2290 * doc/gnat_ugn/gnat_utility_programs.rst: Document default
2293 2019-07-03 Hristian Kirtchev <kirtchev@adacore.com>
2295 * ali.adb: Add with and use clauses for GNAT,
2296 GNAT.Dynamic_HTables, and Snames. Add a map from invocation
2297 signature records to invocation signature ids. Add various
2298 encodings of invocation-related attributes. Sort and update
2299 table Known_ALI_Lines.
2300 (Add_Invocation_Construct, Add_Invocation_Relation,
2301 Body_Placement_Kind_To_Code, Code_To_Body_Placement_Kind,
2302 Code_To_Invocation_Construct_Kind, Code_To_Invocation_Kind,
2303 Code_To_Invocation_Graph_Line_Kind, Destroy, Hash): New
2305 (Initialize_ALI): Sort the initialization sequence. Add
2306 initialization for all invocation-related tables.
2307 (Invocation_Construct_Kind_To_Code,
2308 Invocation_Graph_Line_Kind_To_Code, Invocation_Kind_To_Code,
2309 Invocation_Signature_Of, Present): New routines.
2310 (Scan_ALI): Add the default values for invocation-related ids.
2311 Scan invocation graph lines.
2312 (Scan_Invocation_Graph_Line): New routine.
2313 * ali.ads: Add with clause for GNAT.Dynamic_Tables. Add types
2314 for invocation constructs, relations, and signatures. Add
2315 tables for invocation constructs, relations, and signatures.
2316 Update Unit_Record to capture invocation-related ids. Relocate
2317 table Unit_Id_Tables and subtypes Unit_Id_Table, Unit_Id_Array
2319 (Add_Invocation_Construct, Add_Invocation_Relation,
2320 Body_Placement_Kind_To_Code, Code_To_Body_Placement_Kind,
2321 Code_To_Invocation_Construct_Kind, Code_To_Invocation_Kind,
2322 Code_To_Invocation_Graph_Line_Kind,
2323 Invocation_Construct_Kind_To_Code,
2324 Invocation_Graph_Line_Kind_To_Code, Invocation_Kind_To_Code,
2325 Invocation_Signature_Of, Present): New routines.
2326 * binde.adb: Add with and use clause for Types. Add use clause
2327 for ALI.Unit_Id_Tables;
2328 * binde.ads: Relocate table Unit_Id_Tables and subtypes
2329 Unit_Id_Table, Unit_Id_Array to ALI.
2330 * bindgen.adb: Remove with and use clause for ALI.
2331 * bindgen.ads: Remove with and use clause for Binde. Add with
2332 and use clause for ALI.
2333 * bindo.adb, bindo.ads, bindo-augmentors.adb,
2334 bindo-augmentors.ads, bindo-builders.adb, bindo-builders.ads,
2335 bindo-diagnostics.adb, bindo-diagnostics.ads,
2336 bindo-elaborators.adb, bindo-elaborators.ads, bindo-graphs.adb,
2337 bindo-graphs.ads, bindo-units.adb, bindo-units.ads,
2338 bindo-validators.adb, bindo-validators.ads, bindo-writers.adb,
2339 bindo-writers.ads: New units.
2340 * debug.adb: Use and describe GNAT debug switches -gnatd_F and
2341 -gnatd_G. Add GNATbind debug switches in the ranges dA .. dZ,
2342 d.a .. d.z, d.A .. d.Z, d.1 .. d.9, d_a .. d_z, d_A .. d_Z, and
2343 d_1 .. d_9. Use and describe GNATbind debug switches -d_A,
2344 -d_I, -d_L, -d_N, -d_O, -d_T, and -d_V.
2345 * exp_util.adb, exp_util.ads (Exceptions_OK): Relocate to
2347 * gnatbind.adb: Add with and use clause for Bindo. Use the new
2348 Bindo elaboration order only when -d_N is in effect.
2350 (Column, Extra, Invoker, Kind, Line, Locations, Name, Placement,
2351 Scope, Signature, Target): New routines.
2352 (Write_ALI): Output all invocation-related data.
2353 (Write_Invocation_Graph): New routine.
2354 * lib-writ.ads: Document the invocation graph ALI line.
2355 * namet.adb, namet.ads (Present): New routines.
2356 * sem_ch8.adb (Find_Direct_Name): Capture the status of
2357 elaboration checks and warnings of an identifier.
2358 (Find_Expanded_Name): Capture the status of elaboration checks
2359 and warnings of an expanded name.
2360 * sem_ch12.adb (Analyze_Generic_Package_Declaration): Ensure
2361 that invocation graph-related data within the body of the main
2362 unit is encoded in the ALI file.
2363 (Analyze_Generic_Subprogram_Declaration): Ensure that invocation
2364 graph-related data within the body of the main unit is encoded
2366 (Analyze_Package_Instantiation): Perform minimal decoration of
2367 the instance entity.
2368 (Analyze_Subprogram_Instantiation): Perform minimal decoration
2369 of the instance entity.
2370 * sem_elab.adb: Perform heavy refactoring of all code. The unit
2371 is now split into "services" which specialize in one area of ABE
2372 checks. Add processing in order to capture invocation-graph
2373 related attributes of the main unit, and encode them in the ALI
2374 file. The Processing phase can now operate in multiple modes,
2375 all described by type Processing_Kind. Scenarios and targets
2376 are now distinct at the higher level, and carry their own
2377 representations. This eliminates the need to constantly
2378 recompute their attributes, and offers the various processors a
2379 uniform interface. The various initial states of the Processing
2380 phase are now encoded using type Processing_In_State, and
2381 xxx_State constants.
2382 * sem_elab.ads: Update the literals of type
2383 Enclosing_Level_Kind. Add Inline pragmas on several routines.
2384 * sem_prag.adb (Process_Inline): Ensure that invocation
2385 graph-related data within the body of the main unit is encoded
2387 * sem_util.adb (Enclosing_Generic_Body, Enclosing_Generic_Unit):
2389 (Exceptions_OK): Relocated from Sem_Util.
2390 (Mark_Save_Invocation_Graph_Of_Body): New routine.
2391 * sem_util.ads (Exceptions_OK): Relocated from Sem_Util.
2392 (Mark_Save_Invocation_Graph_Of_Body): New routine.
2393 * sinfo.adb (Is_Elaboration_Checks_OK_Node): Now applicable to
2394 N_Variable_Reference_Marker.
2395 (Is_Elaboration_Warnings_OK_Node): Now applicable to
2396 N_Expanded_Name, N_Identifier, N_Variable_Reference_Marker.
2397 (Is_Read): Use Flag4.
2398 (Is_SPARK_Mode_On_Node): New applicable to
2399 N_Variable_Reference_Marker.
2400 (Is_Write): Use Flag5.
2401 (Save_Invocation_Graph_Of_Body): New routine.
2402 (Set_Is_Elaboration_Checks_OK_Node): Now applicable to
2403 N_Variable_Reference_Marker.
2404 (Set_Is_Elaboration_Warnings_OK_Node): Now applicable to
2405 N_Expanded_Name, N_Identifier, N_Variable_Reference_Marker.
2406 (Set_Is_SPARK_Mode_On_Node): New applicable to
2407 N_Variable_Reference_Marker.
2408 (Set_Save_Invocation_Graph_Of_Body): New routine.
2409 * sinfo.ads: Update the documentation of attributes
2410 Is_Elaboration_Checks_OK_Node, Is_Elaboration_Warnings_OK_Node,
2411 Is_SPARK_Mode_On_Node. Update the flag usage of attributes
2412 Is_Read, Is_Write. Add attribute Save_Invocation_Graph_Of_Body
2413 and update its occurrence in nodes.
2414 (Save_Invocation_Graph_Of_Body): New routine along with pragma
2416 (Set_Save_Invocation_Graph_Of_Body): New routine along with
2418 * switch-b.adb (Scan_Binder_Switches): Refactor the scanning of
2420 (Scan_Debug_Switches): New routine.
2421 * libgnat/g-dynhta.adb, libgnat/g-dynhta.ads (Contains): New routine.
2422 * libgnat/g-graphs.adb (Associate_Vertices): Update the use of
2423 Component_Vertex_Iterator.
2424 (Contains_Component, Contains_Edge, Contains_Vertex, Has_Next):
2426 (Iterate_Component_Vertices): New routine.
2427 (Iterate_Vertices): Removed.
2428 (Next): Update the parameter profile.
2429 (Number_Of_Component_Vertices, Number_Of_Outgoing_Edges): New
2431 * libgnat/g-graphs.ads: Update the initialization of
2432 No_Component. Add type Component_Vertex_Iterator. Remove type
2434 (Has_Next): Add new versions and remove old ones.
2435 (Iterate_Component_Vertices): New routine.
2436 (Iterate_Vertices): Removed.
2437 (Next): Add new versions and remove old ones.
2438 (Number_Of_Component_Vertices, Number_Of_Outgoing_Edges): New
2440 * libgnat/g-sets.adb (Contains): Reimplemented.
2441 * gcc-interface/Make-lang.in (GNATBIND_OBJS): Add
2442 GNAT.Dynamic_HTables, GNAT.Graphs and Bindo units.
2443 * rtsfind.ads: Remove extra space.
2445 2019-07-03 Yannick Moy <moy@adacore.com>
2447 * sem_spark.adb: Add support for locally borrowing and observing
2449 (Get_Root_Object): Add parameter Through_Traversal to denote
2450 when we are interesting in getting to the traversed parameter.
2451 (Is_Prefix_Or_Almost): New function to support detection of
2452 illegal access to borrowed or observed paths.
2453 (Check_Pragma): Add analysis of assertion pragmas.
2455 2019-07-03 Ed Schonberg <schonberg@adacore.com>
2457 * sem_ch13.adb (Build_Predicate_Functions): In a generic context
2458 we do not build the bodies of predicate fuctions, but the
2459 expression in a static predicate must be elaborated to allow
2460 case coverage checking within the generic unit.
2461 (Build_Discrete_Static_Predicate): In a generic context, return
2462 without building function body once the
2463 Static_Discrete_Predicate expression for the type has been
2466 2019-07-03 Hristian Kirtchev <kirtchev@adacore.com>
2468 * bindgen.adb, inline.adb, layout.adb, sem_ch12.adb,
2469 sem_ch13.adb, sem_ch7.adb, styleg.adb: Minor reformatting.
2471 2019-07-03 Bob Duff <duff@adacore.com>
2473 * par-ch3.adb (P_Defining_Identifier): Call
2474 Check_Defining_Identifier_Casing.
2475 * style.ads, styleg.ads, styleg.adb
2476 (Check_Defining_Identifier_Casing): New procedure to check for
2477 mixed-case defining identifiers.
2478 * stylesw.ads, stylesw.adb (Style_Check_Mixed_Case_Decls): New
2479 flag for checking for mixed-case defining identifiers.
2480 * doc/gnat_ugn/building_executable_programs_with_gnat.rst:
2481 Document new feature.
2482 * gnat_ugn.texi: Regenerate.
2484 2019-07-03 Eric Botcazou <ebotcazou@adacore.com>
2486 * doc/gnat_ugn/building_executable_programs_with_gnat.rst
2487 (Warning message control): Document that -gnatw.z/Z apply to
2489 * freeze.adb (Freeze_Entity): Give -gnatw.z warning for array
2490 types as well, but not if the specified alignment is the minimum
2492 * gnat_ugn.texi: Regenerate.
2494 2019-07-03 Bob Duff <duff@adacore.com>
2496 * einfo.ads, exp_util.adb, layout.ads, sinfo.ads: Spell "laid"
2499 2019-07-03 Ed Schonberg <schonberg@adacore.com>
2501 * sem_ch13.adb (Analyze_Attribute_Definition_Clause): No error
2502 message on attribute applied to a renaming when the renamed
2503 object is an aggregate (from code reading).
2504 (Check_Aspect_At_End_Of_Declarations): In a generic context
2505 where freeze nodes are not generated, the original expression
2506 for an aspect may need to be analyzed to precent spurious
2507 conformance errors when compared with the expression that is
2508 anakyzed at the end of the current declarative list.
2510 2019-07-03 Eric Botcazou <ebotcazou@adacore.com>
2512 * layout.adb (Layout_Type): Do not set the component size of an
2513 array with a scalar component if the component type is
2516 2019-07-03 Ed Schonberg <schonberg@adacore.com>
2518 * inline.adb (Make_Loop_Labels_Unique): New procedure to modify
2519 the source code of subprograms that are inlined by the
2520 front-end, to prevent accidental duplication between loop labels
2521 in the inlined code and the code surrounding the inlined call.
2523 2019-07-03 Hristian Kirtchev <kirtchev@adacore.com>
2525 * doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Update
2526 the section on resolving elaboration circularities to eliminate
2527 certain combinations of switches which together do not produce
2528 the desired effect and confuse users.
2529 * gnat_ugn.texi: Regenerate.
2531 2019-07-03 Arnaud Charlet <charlet@adacore.com>
2533 * bindgen.adb (Gen_Main): Disable generation of reference to
2534 Ada_Main_Program_Name for CCG.
2535 * bindusg.adb (Display): Add -G to the command-line usage for
2537 * opt.ads (Generate_C_Code): Update comment.
2538 * switch-b.adb (Scan_Binder_Switches): Add handling for -G.
2540 2019-07-03 Arnaud Charlet <charlet@adacore.com>
2542 * sem_ch7.adb (Has_Referencer): Do not consider inlined
2543 subprograms when generating C code, which allows us to generate
2544 static inline subprograms.
2546 2019-07-03 Justin Squirek <squirek@adacore.com>
2548 * sem_ch6.adb (Check_Conformance): Add expression checking for
2549 constant modifiers in anonymous access types (in addition to
2550 "non-null" types) so that they are considered "matching" for
2551 subsequent conformance tests.
2553 2019-07-03 Arnaud Charlet <charlet@adacore.com>
2555 * doc/gnat_rm/standard_and_implementation_defined_restrictions.rst:
2556 Clarify wording on No_Multiple_Elaboration.
2557 * gnat_rm.texi: Regenerate.
2559 2019-07-03 Ed Schonberg <schonberg@adacore.com>
2561 * sem_ch8.adb (Find_Selected_Component): If the prefix is the
2562 current instance of a type or subtype, complete the resolution
2563 of the name by finding the component of the type denoted by the
2566 2019-07-03 Eric Botcazou <ebotcazou@adacore.com>
2568 * doc/gnat_rm/interfacing_to_other_languages.rst (Interfacing to C):
2569 Document that boolean types with convention C now map to C99 bool.
2570 * gnat_rm.texi: Regenerate.
2572 2019-07-03 Javier Miranda <miranda@adacore.com>
2574 * exp_attr.adb (Expand_Min_Max_Attribute): Code cleanup:
2575 removing code that it is now never executed in the CCG compiler
2578 2019-07-02 Iain Sandoe <iain@sandoe.co.uk>
2580 * libgnat/system-darwin-ppc.ads: Set Stack_Check_Probes True for
2583 2019-07-01 Ed Schonberg <schonberg@adacore.com>
2585 * sem_ch12.adb (Is_Defaulted): New predicate in
2586 Check_Formal_Package_Intance, to skip the conformance of checks
2587 on parameters of a formal package that are defaulted,
2589 2019-07-01 Hristian Kirtchev <kirtchev@adacore.com>
2591 * checks.adb, exp_ch9.adb, exp_unst.adb, sem_ch4.adb,
2592 sem_prag.adb, sem_spark.adb: Minor reformatting.
2594 2019-07-01 Ed Schonberg <schonberg@adacore.com>
2596 * sem_attr.adb (Analyze_Attribute, case Enum_Rep): Allow prefix
2597 of attribute to be an attribute reference of a discrete type.
2599 2019-07-01 Eric Botcazou <ebotcazou@adacore.com>
2601 * sem_ch12.adb (Analyze_Subprogram_Instantiation): Move up
2602 handling of Has_Pragma_Inline_Always and deal with
2603 Has_Pragma_No_Inline.
2605 2019-07-01 Ed Schonberg <schonberg@adacore.com>
2607 * sem_ch3.adb (Build_Derived_Record_Type): If the parent type is
2608 declared as a subtype of a private type with an inherited
2609 discriminant constraint, its generated full base appears as a
2610 record subtype, so we need to retrieve its oen base type so that
2611 the inherited constraint can be applied to it.
2613 2019-07-01 Yannick Moy <moy@adacore.com>
2615 * sem_spark.adb: Completely rework the algorithm for ownership
2616 checking, as the rules in SPARK RM have changed a lot.
2617 * sem_spark.ads: Update comments.
2619 2019-07-01 Dmitriy Anisimkov <anisimko@adacore.com>
2621 * gsocket.h (Has_Sockaddr_Len): Use the offset of sin_family offset in
2622 the sockaddr_in structure to determine the existence of length field
2623 before the sin_family.
2625 2019-07-01 Ed Schonberg <schonberg@adacore.com>
2627 * sem_prag.adb (Analyze_Pragma, case Weak_External): Pragma only
2628 applies to entities with run-time addresses, not to types.
2630 2019-07-01 Piotr Trojanek <trojanek@adacore.com>
2632 * einfo.adb, sem_ch7.adb, sem_prag.adb, sem_util.adb: Update
2633 references to the SPARK RM after the removal of Rule 7.1.4(5).
2635 2019-07-01 Piotr Trojanek <trojanek@adacore.com>
2637 * sysdep.c: Cleanup references to LynuxWorks in docs and
2640 2019-07-01 Ed Schonberg <schonberg@adacore.com>
2642 * checks.adb (Insert_Valid_Check): Do not apply validity check
2643 to variable declared within a protected object that uses the
2644 Lock_Free implementation, to prevent unwarranted constant
2645 folding, because entities within such an object msut be treated
2648 2019-07-01 Eric Botcazou <ebotcazou@adacore.com>
2650 * exp_ch9.adb (Check_Inlining): Deal with Has_Pragma_No_Inline.
2652 2019-07-01 Ed Schonberg <schonberg@adacore.com>
2654 * exp_unst.adb (Visit_Node, Check_Static_Type): Improve the
2655 handling of private and incomplete types whose full view is an
2656 access type, to detect additional uplevel references in dynamic
2657 bounds. This is relevant to N_Free_Statement among others that
2658 manipulate types whose full viww may be an access type.
2660 2019-07-01 Pat Rogers <rogers@adacore.com>
2662 * doc/gnat_rm/representation_clauses_and_pragmas.rst: Correct
2663 size indicated for R as a component of an array.
2664 * gnat_rm.texi: Regenerate.
2666 2019-07-01 Justin Squirek <squirek@adacore.com>
2668 * libgnat/s-win32.ads: Add definition for ULONG, modify
2669 OVERLAPPED type, and add appropriate pragmas.
2671 2019-07-01 Bob Duff <duff@adacore.com>
2673 * gnat1drv.adb (gnat1drv): Call Write_ALI if the main unit is
2676 2019-07-01 Yannick Moy <moy@adacore.com>
2678 * sem_ch4.adb (Operator_Check): Refine error message.
2680 2019-07-01 Piotr Trojanek <trojanek@adacore.com>
2682 * libgnat/a-calend.ads: Revert "Global => null" contracts on
2685 2019-07-01 Piotr Trojanek <trojanek@adacore.com>
2687 * exp_attr.adb, libgnat/g-graphs.ads: Fix typos in comments:
2688 componant -> component.
2690 2019-07-01 Hristian Kirtchev <kirtchev@adacore.com>
2692 * libgnat/g-graphs.adb: Use type Directed_Graph rather than
2693 Instance in various routines.
2694 * libgnat/g-graphs.ads: Change type Instance to Directed_Graph.
2695 Update various routines that mention the type.
2697 2019-07-01 Hristian Kirtchev <kirtchev@adacore.com>
2699 * libgnat/g-sets.adb: Use type Membership_Set rathern than
2700 Instance in various routines.
2701 * libgnat/g-sets.ads: Change type Instance to Membership_Set.
2702 Update various routines that mention the type.
2704 2019-07-01 Hristian Kirtchev <kirtchev@adacore.com>
2706 * libgnat/g-lists.adb: Use type Doubly_Linked_List rather than
2707 Instance in various routines.
2708 * libgnat/g-lists.ads: Change type Instance to
2709 Doubly_Linked_List. Update various routines that mention the
2712 2019-07-01 Hristian Kirtchev <kirtchev@adacore.com>
2714 * libgnat/g-dynhta.adb: Use type Dynamic_Hash_Table rather than
2715 Instance in various routines.
2716 * libgnat/g-dynhta.ads: Change type Instance to
2717 Dynamic_Hash_Table. Update various routines that mention the
2720 2019-07-01 Hristian Kirtchev <kirtchev@adacore.com>
2722 * exp_attr.adb, exp_ch7.adb, exp_unst.adb, sem_ch3.adb,
2723 sem_util.adb, uintp.adb, uintp.ads: Minor reformatting.
2725 2019-07-01 Javier Miranda <miranda@adacore.com>
2727 * exp_attr.adb (Expand_Min_Max_Attribute): Disable expansion of
2728 'Min/'Max on integer, enumeration, fixed point and floating
2729 point types since the CCG backend now provides in file
2730 standard.h routines to support it.
2732 2019-07-01 Hristian Kirtchev <kirtchev@adacore.com>
2734 * impunit.adb: Add GNAT.Graphs to list Non_Imp_File_Names_95.
2735 * Makefile.rtl, gcc-interface/Make-lang.in: Register unit
2737 * libgnat/g-dynhta.adb: Various minor cleanups (use Present
2738 rather than direct comparisons).
2739 (Delete): Reimplement to use Delete_Node.
2740 (Delete_Node): New routine.
2741 (Destroy_Bucket): Invoke the provided destructor.
2742 (Present): New routines.
2743 * libgnat/g-dynhta.ads: Add new generic formal Destroy_Value.
2744 Use better names for the components of iterators.
2745 * libgnat/g-graphs.adb, libgnat/g-graphs.ads: New unit.
2746 * libgnat/g-lists.adb: Various minor cleanups (use Present
2747 rather than direct comparisons).
2748 (Delete_Node): Invoke the provided destructor.
2749 (Present): New routine.
2750 * libgnat/g-lists.ads: Add new generic formal Destroy_Element.
2751 Use better names for the components of iterators.
2752 (Present): New routine.
2753 * libgnat/g-sets.adb, libgnat/g-sets.ads (Destroy, Preset,
2754 Reset): New routines.
2756 2019-07-01 Dmitriy Anisimkov <anisimko@adacore.com>
2758 * libgnat/g-sothco.adb (Get_Address): Fix the case when AF_INET6
2761 2019-07-01 Ed Schonberg <schonberg@adacore.com>
2763 * exp_attr.adb (Expand_Attribute_Reference, case Invalid_Value):
2764 Resolve result of call to Get_Simple_Init_Val, which may be a
2765 conversion of a literal.
2767 2019-07-01 Hristian Kirtchev <kirtchev@adacore.com>
2769 * freeze.adb (Freeze_Expression): Remove the horrible useless
2770 name hiding of N. Insert the freeze nodes generated by the
2771 expression prior to the expression when the nearest enclosing
2774 2019-07-01 Pierre-Marie de Rodat <derodat@adacore.com>
2776 * doc/gnat_ugn/building_executable_programs_with_gnat.rst: Fix
2777 formatting issues in the -gnatR section.
2778 * gnat_ugn.texi: Regenerate.
2780 2019-06-30 Iain Sandoe <iain@sandoe.co.uk>
2782 * gnatlink.adb (Link_Step): Remove duplicate -static-libgcc switches.
2783 Push -shared-libgcc explicitly, when it is the target default (unless
2784 overidden by the static flag).
2785 When the user has put an instance of shared/static-libgcc do not push
2786 a duplicate of this.
2788 2019-06-29 Eric Botcazou <ebotcazou@adacore.com>
2790 * gcc-interface/decl.c (gnat_to_gnu_entity): Beep up comment on SAVED,
2791 and tweak comment on the assertion about the scopes of Itypes. Do not
2792 skip the regular processing for Itypes that are E_Record_Subtype with
2793 a Cloned_Subtype. Get the Cloned_Subtype for every E_Record_Subtype
2794 if the type is dummy and hasn't got its own freeze node.
2795 <E_Record_Subtype>: Save again the DECL of the Cloned_Subtype, if any.
2796 <E_Access_Subtype>: Save again the DECL of the equivalent type.
2797 (Gigi_Equivalent_Type) <E_Access_Subtype>: New case.
2799 2019-06-29 Eric Botcazou <ebotcazou@adacore.com>
2801 * gcc-interface/utils.c (unchecked_convert): Tweak comment. Only skip
2802 dereferences when padding to have the same size on both sides. Do it
2803 for destination types with self-referential size too.
2805 2019-06-29 Eric Botcazou <ebotcazou@adacore.com>
2807 * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: If the
2808 type requires strict alignment, then set the RM size to the type size.
2809 Rework handling of alignment and sizes of tagged types in ASIS mode.
2810 (validate_size): Rename local variable and remove special handling for
2811 strict-alignment types.
2812 * gcc-interface/utils.c (finish_record_type): Constify local variables
2813 and use properly typed constants.
2815 2019-06-29 Eric Botcazou <ebotcazou@adacore.com>
2817 * gcc-interface/decl.c (gnat_to_gnu_field): Rework error messages for
2818 fields requiring strict alignment, add explicit test on Storage_Unit
2819 for position and size, and mention type alignment for position.
2821 2019-06-29 Eric Botcazou <ebotcazou@adacore.com>
2823 * gcc-interface/trans.c (mark_visited_r): Set TYPE_SIZES_GIMPLIFIED on
2824 the main variant of a type, if any.
2826 2019-06-29 Eric Botcazou <ebotcazou@adacore.com>
2828 * gcc-interface/decl.c (set_nonaliased_component_on_array_type): Add
2829 missing guard for the presence of TYPE_CANONICAL.
2830 (set_reverse_storage_order_on_array_type): Likewise.
2832 2019-06-29 Eric Botcazou <ebotcazou@adacore.com>
2834 * gcc-interface/gigi.h (make_packable_type): Remove default value.
2835 (value_factor_p): Tweak prototype.
2836 * gcc-interface/decl.c (gnat_to_gnu_entity): Add comment.
2837 (gnat_to_gnu_component_type): Likewise.
2838 (gnat_to_gnu_field): Likewise. Fetch the position of the field earlier
2839 and simplify the condition under which the type is packed. Declare
2840 local variable is_bitfield. Pass 1 as max_align to make_packable_type
2841 if it is set to true.
2842 (copy_and_substitute_in_layout): Pass 0 to make_packable_type.
2843 * gcc-interface/utils.c (make_packable_array_type): New function.
2844 (make_packable_type): Use it to rewrite the type of array field.
2845 (maybe_pad_type): Pass align parameter to make_packable_type.
2846 (create_field_decl): Minor tweaks.
2847 (value_factor_p): Assert that FACTOR is a power of 2 and replace the
2848 modulo computation by a masking operation.
2850 2019-06-25 Eric Botcazou <ebotcazou@adacore.com>
2852 * gcc-interface/decl.c (gnat_to_gnu_entity): Remove superfluous test
2854 * gcc-interface/gigi.h (maybe_character_type): Fix formatting.
2855 (maybe_character_value): Likewise.
2857 2019-06-24 Jan Hubicka <jh@suse.cz>
2859 * gcc-interface/decl.c (gnat_to_gnu_entity): Check that
2860 type is array or integer prior checking string flag.
2861 * gcc-interface/gigi.h (maybe_character_type): Likewise.
2862 (maybe_character_value): Likewise.
2864 2019-06-24 Martin Sebor <msebor@redhat.com>
2866 * gcc-interface/utils.c (handle_nonnull_attribute): Quote attribute
2869 2019-06-18 Arnaud Charlet <charlet@adacore.com>
2872 * sem_ch5.adb (Analyze_Loop_Statement): Avoid exception propagation
2873 during normal processing.
2875 2019-06-17 Arnaud Charlet <charlet@adacore.com>
2878 * exp_ch9.adb (Expand_N_Delay_Relative_Statement): Swap the two
2879 conditions to avoid a unnecessary exception propagation in the default
2882 2019-05-28 Eric Botcazou <ebotcazou@adacore.com>
2884 * gcc-interface/utils.c (handle_stack_protect_attribute): Move around.
2886 2019-05-28 Eric Botcazou <ebotcazou@adacore.com>
2888 * doc/gnat_rm/implementation_defined_pragmas.rst (Machine_Attribute):
2889 Document additional optional parameters.
2890 * sem_prag.adb (Analyze_Pragma) <Pragma_Machine_Attribute>: Accept
2891 more than one optional parameter.
2892 * gcc-interface/decl.c (prepend_one_attribute_pragma): Alphabetize
2893 the list of supported pragmas. Simplify the handling of parameters
2894 and add support for more than one optional parameter.
2895 * gcc-interface/utils.c (attr_cold_hot_exclusions): New constant.
2896 (gnat_internal_attribute_table): Add entry for no_icf, noipa, flatten,
2897 used, cold, hot, target and target_clones.
2898 (begin_subprog_body): Do not create the RTL for the subprogram here.
2899 (handle_noicf_attribute): New static function.
2900 (handle_noipa_attribute): Likewise.
2901 (handle_flatten_attribute): Likewise.
2902 (handle_used_attribute): Likewise.
2903 (handle_cold_attribute): Likewise.
2904 (handle_hot_attribute): Likewise.
2905 (handle_target_attribute): Likewise.
2906 (handle_target_clones_attribute): Likewise.
2908 2019-05-28 Eric Botcazou <ebotcazou@adacore.com>
2910 * gcc-interface/trans.c (lvalue_required_for_attribute_p): Return 0
2912 (Identifier_to_gnu): Use the actual subtype for a reference to a
2913 packed array in a return statement.
2914 (Attribute_to_gnu) <Attr_Size>: Do not strip VIEW_CONVERT_EXPRs from
2915 the prefix in every case.
2917 2019-05-28 Eric Botcazou <ebotcazou@adacore.com>
2919 * gcc-interface/trans.c (gnat_to_gnu): Remove superfluous tests on
2920 Backend_Overflow_Checks_On_Target and rework comments.
2922 2019-05-28 Eric Botcazou <ebotcazou@adacore.com>
2924 * gcc-interface/trans.c (walk_nesting_tree): New static function.
2925 (finalize_nrv): Use it to walk the entire nesting tree.
2927 2019-05-28 Eric Botcazou <ebotcazou@adacore.com>
2929 * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Subtype>: Remove
2930 obsolete test on Is_For_Access_Subtype.
2932 2019-05-28 Eric Botcazou <ebotcazou@adacore.com>
2934 * gcc-interface/decl.c (components_to_record): Set a name on the type
2935 created for the REP part, if any.
2936 * gcc-interface/utils.c (finish_record_type): Only take the maximum
2937 when merging sizes for a variant part at offset 0.
2938 (merge_sizes): Rename has_rep parameter into max.
2940 2019-05-28 Eric Botcazou <ebotcazou@adacore.com>
2942 * gcc-interface/utils.c (gnat_internal_attribute_table): Add support
2943 for stack_protect attribute.
2944 (handle_stack_protect_attribute): New static function.
2946 2019-05-28 Eric Botcazou <ebotcazou@adacore.com>
2948 * gcc-interface/decl.c (intrin_arglists_compatible_p): Do not return
2949 false if the internal builtin uses a variable list.
2951 2019-05-27 Eric Botcazou <ebotcazou@adacore.com>
2953 * gcc-interface/trans.c (Call_to_gnu): Do not initialize the temporary
2954 created out of addressability concerns if it's for the _Init parameter
2955 of an initialization procedure.
2957 2019-05-27 Eric Botcazou <ebotcazou@adacore.com>
2959 * gcc-interface/ada-builtin-types.def: New file.
2960 * gcc-interface/ada-builtins.def: Likewise.
2961 * gcc-interface/ada-tree.h (BUILT_IN_LIKELY): New macro.
2962 (BUILT_IN_UNLIKELY): Likewise.
2963 * gcc-interface/trans.c (independent_iterations_p): Initialize the
2964 auto-vector to 16 elements.
2965 (Call_to_gnu): Remove local variable and change the vector of actual
2966 parameters to an auto-vector. Do not convert actual parameters to
2967 the argument type for front-end built-in functions. Add support for
2968 front-end built-in functions.
2969 (build_noreturn_cond): Use internal instead of built-in function.
2970 * gcc-interface/utils.c (c_builtin_type): Include ada-builtin-types.def
2971 (install_builtin_function_types): Likewise.
2972 (install_builtin_functions): Include ada-builtins.def first.
2974 2019-05-27 Eric Botcazou <ebotcazou@adacore.com>
2976 * gcc-interface/utils.c (maybe_pad_type): Issue the warning for the
2977 specific case of component types preferably.
2979 2019-05-27 Eric Botcazou <ebotcazou@adacore.com>
2981 * gcc-interface/trans.c (Identifier_to_gnu): Minor tweaks.
2982 (gnat_to_gnu): Do not convert the result if it is a reference to an
2983 unconstrained array used as the prefix of an attribute reference that
2986 2019-05-27 Eric Botcazou <ebotcazou@adacore.com>
2988 * gcc-interface/trans.c (Gigi_Types_Compatible): New predicate.
2989 (Identifier_to_gnu): Use it to assert that the type of the identifier
2990 and that of its entity are compatible for gigi. Rename a couple of
2991 local variables and separate the processing of the result type.
2993 2019-05-27 Eric Botcazou <ebotcazou@adacore.com>
2995 * gcc-interface/trans.c (Call_to_gnu): Use the unpadded type when
2996 putting back an intermediate conversion the type of the actuals.
2998 2019-05-27 Eric Botcazou <ebotcazou@adacore.com>
3000 * gcc-interface/trans.c (gnat_to_gnu) <Shift operations>: Convert the
3001 count to the unsigned version of its base type before proceeding.
3003 2019-05-16 Martin Sebor <msebor@redhat.com>
3005 * gcc-interface/trans.c (check_inlining_for_nested_subprog): Quote
3008 2019-05-08 Arnaud Charlet <charlet@adacore.com>
3010 * standard.ads.h: New file.
3012 2019-05-07 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
3014 * gcc-interface/Makefile.in (install-gcc-specs): Use foreach.
3017 2019-04-29 Michael K. Darling <darlingm@gmail.com>
3019 * gnatvsn.ads: Bump Library_Version to 10.
3021 2019-04-24 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
3022 Bernd Edlinger <bernd.edlinger@hotmail.de>
3023 Jakub Jelinek <jakub@redhat.com>
3026 * raise-gcc.c (TARGET_ATTRIBUTE): Define.
3027 (continue_unwind, personality_body, PERSONALITY_FUNCTION): Add
3030 2019-04-07 Eric Botcazou <ebotcazou@adacore.com>
3032 * libgnat/i-cexten.ads (CFloat_128): New type.
3034 2019-03-22 Dmitriy Anisimkov <anisimko@adacore.com>
3037 * libgnat/g-socket.adb (Bind_Socket, Connect_Socket,
3038 Send_Socket): Fix the computation of structure lengths passed to
3040 (Is_IPv6_Address): Fix the number of expected colons.
3042 2019-03-11 Martin Liska <mliska@suse.cz>
3044 * gcc-interface/misc.c (gnat_post_options): Wrap option name in string
3045 format message and fix GNU coding style.
3047 2019-02-08 Eric Botcazou <ebotcazou@adacore.com>
3049 * gcc-interface/trans.c (gnat_to_gnu) <N_Aggregate>: Minor tweak.
3050 * gcc-interface/utils.c (convert): Do not pad when doing an unchecked
3051 conversion here. Use TREE_CONSTANT throughout the function.
3052 (unchecked_convert): Also pad if the source is a CONSTRUCTOR and the
3053 destination is a more aligned array type or a larger aggregate type,
3054 but not between original and packable versions of a type.
3056 2019-02-08 Eric Botcazou <ebotcazou@adacore.com>
3058 * gcc-interface/utils.c (max_size) <tcc_unary>: Be prepared for an
3059 operand with VOID_TYPE.
3061 2019-02-08 Eric Botcazou <ebotcazou@adacore.com>
3063 * gcc-interface/trans.c (elaborate_all_entities): Do not elaborate the
3064 entities of a package renaming another one.
3066 2019-02-08 Eric Botcazou <ebotcazou@adacore.com>
3068 * gcc-interface/trans.c (Regular_Loop_to_gnu): Replace tests on
3069 individual flag_unswitch_loops and flag_tree_loop_vectorize switches
3070 with test on global optimize switch.
3071 (Raise_Error_to_gnu): Likewise.
3073 2019-02-07 Eric Botcazou <ebotcazou@adacore.com>
3075 * libgnarl/s-linux__sparc.ads (ETIMEDOUT): Set to correct value.
3077 2019-02-06 Arnaud Charlet <charlet@adacore.com>
3079 * libgnarl/s-linux__x32.ads: Resync list of signals with s-linux.ads
3081 2019-01-27 Eric Botcazou <ebotcazou@adacore.com>
3083 * repinfo.adb (List_Component_Layout): Remove superfluous space for
3085 * gcc-interface/ada-tree.h (TYPE_IS_EXTRA_SUBTYPE_P): New macro.
3086 * gcc-interface/gigi.h (create_extra_subtype): Declare.
3087 * gcc-interface/decl.c (TYPE_ARRAY_SIZE_LIMIT): Likewise.
3088 (update_n_elem): New function.
3089 (gnat_to_gnu_entity): Use create_extra_subtype to create extra subtypes
3090 instead of doing it manually.
3091 <E_Array_Type>: Use update_n_elem to compute the maximum size. Use the
3092 index type instead of base type for the bounds. Set TYPE_ARRAY_MAX_SIZE
3093 of the array to the maximum size.
3094 <E_Array_Subtype>: Create an extra subtype using the index type of the
3095 base array type for self-referential bounds. Use update_n_elem to
3096 compute the maximum size. Set TYPE_ARRAY_MAX_SIZE of the array to the
3098 (gnat_to_gnu_field): Clear DECL_NONADDRESSABLE_P on discriminants.
3099 * gcc-interface/misc.c (gnat_get_alias_set): Return the alias set of
3100 the base type for an extra subtype.
3101 (gnat_type_max_size): Remove obsolete code.
3102 * gcc-interface/trans.c (Attribute_to_gnu): Minor tweak.
3103 (can_be_lower_p): Deal with pathological types.
3104 * gcc-interface/utils.c (create_extra_subtype): New function.
3105 (create_field_decl): Minor tweak.
3106 (max_size) <tcc_reference>: Compute a better value by using the extra
3107 subtypes on the self-referential bounds.
3108 <tcc_binary>: Rewrite. Deal with "negative value" in unsigned types.
3109 <tcc_expression>: Likewise.
3110 * gcc-interface/utils2.c (compare_arrays): Retrieve the original bounds
3111 of the arrays upfront. Swap only if the second length is not constant.
3112 Use comparisons on the original bounds consistently for the null tests.
3113 (build_binary_op): Use TYPE_IS_EXTRA_SUBTYPE_P macro.
3114 (build_allocator): Minor tweak.
3116 2019-01-27 Eric Botcazou <ebotcazou@adacore.com>
3118 * gcc-interface/decl.c (array_type_has_nonaliased_component): Return
3119 the same value for every dimension of a multidimensional array type.
3121 2019-01-26 Eric Botcazou <ebotcazou@adacore.com>
3123 * gcc-interface/trans.c (Regular_Loop_to_gnu): Use the SLOC of the
3124 iteration scheme, if present, throughout the translation.
3126 2019-01-26 Eric Botcazou <ebotcazou@adacore.com>
3128 * gcc-interface/trans.c (gnat_to_gnu) <N_Assignment_Statement>: Use
3129 DECL_SIZE_UNIT instead of TYPE_SIZE_UNIT for the size to be assigned
3130 by a call to memset if the LHS is a DECL.
3132 2019-01-26 Eric Botcazou <ebotcazou@adacore.com>
3134 * gcc-interface/trans.c (struct loop_info_d): Remove artificial field.
3135 (Loop_Statement_to_gnu): Do not set it.
3137 2019-01-26 Eric Botcazou <ebotcazou@adacore.com>
3139 * gcc-interface/trans.c (Iterate_Acc_Clause_Arg): Fix formatting.
3140 (Acc_gnat_to_gnu): Likewise.
3141 (Acc_Data_to_gnu): Likewise.
3142 (Acc_Var_to_gnu): Likewise.
3143 (Acc_Reduc_to_gnu): Likewise.
3144 (Acc_Size_List_to_gnu): Likewise.
3145 (Pragma_to_gnu) <Pragma_Acc_Loop>: Likewise.
3146 <Pragma_Acc_Data>): Likewise.
3147 (find_loop_for): Remove default value for parameters.
3148 * gcc-interface/trans.c (gnat_to_gnu) <N_Op_And>: Merge into...
3149 <N_Op_Eq>): ...this.
3151 2019-01-26 Eric Botcazou <ebotcazou@adacore.com>
3153 * gcc-interface/decl.c (annotate_value) <INTEGER_CST>: Use test on
3154 the sign bit instead of on the sign of the value.
3155 <PLUS_EXPR>: Turn addition of negative constant into subtraction.
3156 <MULT_EXPR>: Add test for degenerate case.
3157 <BIT_AND_EXPR>: Simplify.
3159 2019-01-18 Sebastian Huber <sebastian.huber@embedded-brains.de>
3161 * s-oscons-tmplt.c (AF_INET6): Do not undefine for RTEMS.
3163 2019-01-09 Sandra Loosemore <sandra@codesourcery.com>
3166 * exp_ch11.adb: Change "can not" to "cannot".
3167 * sem_ch4.adb: Likewise.
3169 2019-01-09 Sandra Loosemore <sandra@codesourcery.com>
3172 * exp_ch9.adb: Mechanically replace "can not" with "cannot".
3173 * libgnat/s-regpat.ads: Likewise.
3174 * par-ch4.adb: Likewise.
3175 * set_targ.adb: Likewise.
3176 * types.ads: Likewise.
3178 2019-01-08 Justin Squirek <squirek@adacore.com>
3181 2018-07-31 Justin Squirek <squirek@adacore.com>
3183 * lib-writ.adb (Write_With_Lines): Modfiy the generation
3184 of dependencies within ali files so that source unit
3185 bodies are properly listed even if said bodies are
3186 missing. Perform legacy behavior in GNATprove mode.
3187 * lib-writ.ads: Modify documentation to reflect current
3191 2018-09-26 Justin Squirek <squirek@adacore.com>
3193 * lib-writ.adb, lib-writ.ads (Write_With_Lines): Add
3194 documentation and an extra conditional check for RCI
3195 units so that generated ali files will list the spec
3196 only instead of a body when a body is not found.
3198 2019-01-04 Eric Botcazou <ebotcazou@adacore.com>
3200 * gnatvsn.ads: Bump copyright year.
3202 2019-01-01 Jakub Jelinek <jakub@redhat.com>
3204 Update copyright years.
3206 * gnat_ugn.texi: Bump @copying's copyright year.
3207 * gnat_rm.texi: Likewise.
3209 Copyright (C) 2019 Free Software Foundation, Inc.
3211 Copying and distribution of this file, with or without modification,
3212 are permitted in any medium without royalty provided the copyright
3213 notice and this notice are preserved.