1 2007-12-27 Samuel Tardieu <sam@rfc1149.net>
4 * adaint.c (__gnat_open_new_temp, __gnat_tmp_name): Use mkstemp()
5 instead of mktemp() or tmpnam() on NetBSD.
7 2007-12-23 Eric Botcazou <ebotcazou@adacore.com>
9 * trans.c (call_to_gnu): Make the temporary for non-addressable
10 In parameters passed by reference.
11 (addressable_p): Return true for STRING_CST and CALL_EXPR.
13 2007-12-19 Robert Dewar <dewar@adacore.com>
15 * g-expect-vms.adb, g-expect.adb, s-poosiz.adb:
16 Add pragma Warnings (Off) for unassigned IN OUT arguments
18 * sem_warn.adb (Output_Reference): Suppress messages for internal names
19 (Check_References): Extensive changes to tune up warnings
20 (Output_Non_Modifed_In_Out_Warnings): Changes to tune up warnings
21 (Has_Pragma_Unmodifed_Check_Spec): New function
22 (Check_References): Implement pragma Unmodified
23 (Warn_On_Unassigned_Out_Parameter): Implement pragma Unmodified
25 * par-prag.adb: Dummy entry for pragma Unmodified
27 * sem_prag.adb: Implement pragma Unmodified
29 * einfo.ads, einfo.adb: (Has_Pragma_Unmodified): New flag
30 (Proc_Next_Component_Or_Discriminant): Fix typo.
33 * sem_util.adb (Note_Possible_Modification): Add processinng for pragma
35 (Reset_Analyzed_Flags): Use Traverse_Proc instead of Traverse_Func,
36 because the former already takes care of discarding the result.
37 (Mark_Coextensions): Remove ununused initial value from Is_Dynamic.
40 * snames.h, snames.ads, snames.adb: Add entry for pragma Unmodified
42 2007-12-19 Eric Botcazou <ebotcazou@adacore.com>
44 * targparm.adb, targparm.ads, system.ads, system-darwin-ppc.ads,
45 system-vxworks-x86.ads, system-linux-ppc.ads, system-linux-hppa.ads,
46 system-hpux-ia64.ads, system-vxworks-arm.ads, system-darwin-x86.ads,
47 system-vms_64.ads, system-vms-ia64.ads, system-linux-ia64.ads,
48 system-freebsd-x86.ads, system-linux-x86_64.ads, system-tru64.ads,
49 system-aix.ads, system-vxworks-sparcv9.ads, system-solaris-x86.ads,
50 system-irix-o32.ads, system-irix-n32.ads, system-hpux.ads,
51 system-vxworks-m68k.ads, system-linux-x86.ads, system-vxworks-mips.ads,
52 system-solaris-sparc.ads, system-solaris-sparcv9.ads, system-vms.ads,
53 system-mingw.ads, system-vms-zcx.ads, system-vxworks-ppc.ads
54 (Dynamic_Trampolines_Used): Delete.
56 * system-lynxos-x86.ads, system-lynxos-ppc.ads: Ditto.
57 Turn on stack probing mechanism on LynxOS.
59 2007-12-19 Bob Duff <duff@adacore.com>
61 * atree.ads, atree.adb (Traverse_Func): Walk Field2 last, and eliminate
62 the resulting tail recursion by hand. This prevents running out of
63 memory on deeply nested concatenations, since Field2 is where the left
64 operand of concatenations is stored.
65 Fix bug (was returning OK_Orig in some cases). Fix return subtype to
66 clarify that it can only return OK or Abandon.
68 * sem_res.adb (Resolve_Op_Concat): Replace the recursion on the left
69 operand by iteration, in order to avoid running out of memory on
70 deeply-nested concatenations. Use the Parent pointer to get back up the
72 (Resolve_Op_Concat_Arg, Resolve_Op_Concat_First,
73 Resolve_Op_Concat_Rest): New procedures split out of
74 Resolve_Op_Concat, so the iterative algorithm in Resolve_Op_Concat is
77 * checks.adb (Remove_Checks): Use Traverse_Proc instead of
78 Traverse_Func, because the former already takes care of discarding the
81 * errout.adb (First_Node): Use Traverse_Proc instead of Traverse_Func,
82 because the former already takes care of discarding the result.
83 (Remove_Warning_Messages): Use appropriate subtype for Status and
86 2007-12-19 Ed Schonberg <schonberg@adacore.com>
88 * exp_aggr.adb (Not_OK_For_Backend): A component of a private type with
89 discriminants forces expansion of the aggregate into assignments.
90 (Init_Record_Controller): If the type of the aggregate is untagged and
91 is not inherently limited, the record controller is not limited either.
93 2007-12-19 Robert Dewar <dewar@adacore.com>
95 * exp_attr.adb (Expand_N_Attribute_Reference, case Size): Fix error in
96 handling compile time known size of record or array (case of front end
97 layout active, e.g. in GNAAMP).
99 2007-12-19 Javier Miranda <miranda@adacore.com>
101 * exp_ch3.adb (Expand_N_Object_Declaration): Complete the circuitry
102 that forces the construction of static dispatch tables in case of
105 2007-12-19 Robert Dewar <dewar@adacore.com>
107 * exp_ch9.adb (Null_Statements): Moved to library level
108 (Trivial_Accept_OK): New function
109 (Expand_Accept_Declaration): Use Trivial_Accept_OK
110 (Expand_N_Accept_Statement): Use Trivial_Accept_OK
112 2007-12-19 Robert Dewar <dewar@adacore.com>
114 * exp_pakd.adb (Expand_Bit_Packed_Element_Set): Fix packed array type
115 in complex case where array is Volatile.
117 2007-12-19 Ed Schonberg <schonberg@adacore.com>
119 * freeze.adb (Freeze_Record_Type, Check_Current_Instance): Implement
120 properly the Ada2005 rules concerning when the current instance of a
121 record type is aliased.
123 2007-12-19 Ed Schonberg <schonberg@adacore.com>
125 * par-ch3.adb (P_Record_Declaration): Guard against cascaded errors in
127 (P_Type_Declaration): Diagnose misuse of "abstract" in untagged record
129 (P_Variant_Part): Cleaner patch for parenthesized discriminant
131 2007-12-19 Vincent Celier <celier@adacore.com>
133 * prj-attr.adb (Package_Node_Id_Of): Returns Unknown_Package when
136 * prj-attr.ads (Unknown_Package): New constant
137 Do not crash when an unknown package is in several projects
139 * prj-dect.adb (Parse_Package_Declaration): Mark an unknown package as
142 * prj-nmsc.adb (Check): Remove obsolete code related to no longer
143 existing package Language_Processing.
145 2007-12-19 Ed Schonberg <schonberg@adacore.com>
146 Gary Dismukes <dismukes@adacore.com>
147 Samuel Tardieu <sam@rfc1149.net>
149 PR ada/15803, ada/15805
150 * sem_ch6.adb, sem_ch3.adb (Constrain_Access): In Ada2005, diagnose
151 illegal access subtypes when there is a constrained partial view.
152 (Check_For_Premature_Usage): New procedure inside
153 Access_Subprogram_Declaration for checking that an access-to-subprogram
154 type doesn't reference its own name within any formal parameters or
155 result type (including within nested anonymous access types).
156 (Access_Subprogram_Declaration): Add call to Check_For_Premature_Usage.
157 (Sem_Ch3.Analyze_Object_Declaration, Sem_ch6.Process_Formals): if the
158 context is an access_to_variable, the expression cannot be an
161 2007-12-19 Bob Duff <duff@adacore.com>
163 * sem_ch4.adb (Analyze_Concatenation_Rest): New procedure.
164 (Analyze_Concatenation): Use iteration instead of recursion in order
165 to avoid running out of stack space for deeply nested concatenations.
167 2007-12-19 Ed Schonberg <schonberg@adacore.com>
168 Gary Dismukes <dismukes@adacore.com>
170 * sem_ch8.adb (Analyze_Subprogram_Renaming): Diagnose illegal renamings
171 whose renamed entity is a subprogram that requires overriding.
172 (Premature_Usage): Test for the case of N_Full_Type_Declaration when
173 issuing an error for premature usage and issue a message that says
174 'type' rather than 'object'.
176 2007-12-19 Gary Dismukes <dismukes@adacore.com>
179 * sem_disp.adb (Check_Dispatching_Call): Augment existing test for
180 presence of a statically tagged operand (Present (Static_Tag)) with
181 test for Indeterm_Ancestor_Call when determining whether to propagate
182 the static tag to tag-indeterminate operands (which forces dispatching
184 (Check_Controlling_Formals): Ada2005, access parameters can have
186 (Add_Dispatching_Operation, Check_Operation_From_Private_View): do
187 not insert subprogram in list of primitive operations if already there.
189 2007-12-19 Tristan Gingold <gingold@adacore.com>
191 * utils.c (create_var_decl_1): call rest_of_decl_compilation only for
194 2007-12-19 Thomas Quinot <quinot@adacore.com>
197 * gen-soccon.c: Add constant IP_PKTINFO to allow getting ancillary
198 datagram info on Linux.
200 2007-12-19 Vincent Celier <celier@adacore.com>
202 * makegpr.adb (Check_Compilation_Needed): Normalize C_Source_Path so
203 that the source path name is always found in the dependencies.
205 2007-12-19 Robert Dewar <dewar@adacore.com>
207 * gnat_rm.texi, gnat_ugn.texi: Update documentation of -gnatw.o
208 Fix name of Wide_Wide_Latin_1/9 file names
209 Add documentation for Ada.Exceptions.Last_Chance_Handler (a-elchha.ads)
210 Add missing documentation for Ada.Wide_[Wide_]Characters.Unicode
211 Add missing documentation for Ada.Command_Line.Response_File
212 Update list of warning letters for Warnings pragma
213 Add documentation for pragma Unmodified
215 2007-12-19 Samuel Tardieu <sam@rfc1149.net>
217 * Makefile.in: Add s-tasinf.ad[bs] substitutions for sh4-linux target.
219 2007-12-17 Arnaud Charlet <charlet@adacore.com>
221 * s-vxwork-alpha.ads: Removed, no longer used.
223 2007-12-15 Jakub Jelinek <jakub@redhat.com>
225 * Make-lang.in (gnat1, gnatbind): Pass ALL_CFLAGS on the link line.
227 2007-12-13 Samuel Tardieu <sam@rfc1149.net>
230 * Makefile.in: Change two occurrences of mlib-tgt.adb by correct name
231 mlib-tgt-specific.adb.
233 2007-12-13 Bob Duff <duff@adacore.com>
235 * trans.c (Attribute_to_gnu): Check for violations of the
236 No_Implicit_Dynamic_Code restriction. This checking used to be done in
237 the front end, but is moved here so we can make it more accurate.
239 2007-12-13 Pascal Obry <obry@adacore.com>
241 * adaint.c (__gnat_pthread_setaffinity_np): New routine. A dummy
242 version is provided for older GNU/Linux distribution not
243 supporting thread affinity sets.
245 * s-osinte-linux.ads (SC_NPROCESSORS_ONLN): New constant for sysconf
247 (bit_field): New packed boolean type used by cpu_set_t.
248 (cpu_set_t): New type corresponding to the C type with
249 the same name. Note that on the Ada side we use a bit
250 field array for the affinity mask. There is not need
251 for the C macro for setting individual bit.
252 (pthread_setaffinity_np): New imported routine.
254 * s-taprop-linux.adb (Enter_Task): Check that the CPU affinity mask is
256 (Create_Task): Set the processor affinity mask if information
259 * s-tasinf-linux.ads, s-tasinf-linux.adb: New files.
261 2007-12-13 Robert Dewar <dewar@adacore.com>
263 * s-osinte-lynxos-3.ads, s-osinte-hpux.ads, s-osinte-solaris-posix.ads,
264 s-osinte-freebsd.ads, s-osinte-lynxos.ads, s-osinte-tru64.ads,
265 s-osinte-mingw.ads, s-osinte-aix.ads, s-osinte-hpux-dce.ads,
266 s-osinte-irix.ads, s-osinte-solaris.ads, s-intman-vms.adb,
267 s-osinte-vms.ads, s-osinte-vxworks6.ads, s-osinte-vxworks.ads,
268 s-auxdec.ads, s-auxdec-vms_64.ads, s-osinte-darwin.ads,
269 s-taprop-vms.adb, s-interr-sigaction.adb, s-osinte-linux-hppa.ads,
270 i-vxwork-x86.ads, s-tpopde-vms.ads: Add missing pragma Convention C
271 for subprogram pointers.
273 * g-ctrl_c.adb: New file.
275 * g-ctrl_c.ads (Install_Handler): New body.
277 * freeze.adb (Freeze_Subprogram): Use new flag Has_Pragma_Inline_Always
278 instead of obsolete function Is_Always_Inlined.
279 (Freeze_Entity): check for tagged type in imported C subprogram
280 (Freeze_Entity): check for 8-bit boolean in imported C subprogram
281 (Freeze_Entity): check for convention Ada subprogram pointer in
282 imported C subprogram.
283 (Freeze_Fixed_Point_Type): In the case of a base type where the low
284 bound would be chopped off and go from negative to zero, force
285 Loval_Excl_EP to be the same as Loval_Incl_EP (the included lower
286 bound) so that the size computation for the base type will take
287 negative values into account.
289 2007-12-13 Eric Botcazou <ebotcazou@adacore.com>
290 Bob Duff <duff@adacore.com>
291 Tristan Gingold <gingold@adacore.com>
293 * system-linux-ia64.ads, system-freebsd-x86.ads, system-lynxos-ppc.ads,
294 system-lynxos-x86.ads, system-linux-x86_64.ads, system-tru64.ads,
295 system-aix.ads, system-vxworks-sparcv9.ads, system-solaris-x86.ads,
296 system-irix-o32.ads, system-irix-n32.ads, system-hpux.ads,
297 system-vxworks-m68k.ads, system-linux-x86.ads, system-vxworks-mips.ads,
298 system-solaris-sparc.ads, system-solaris-sparcv9.ads, system-vms.ads,
299 system-mingw.ads, system-vms-zcx.ads, system-vxworks-ppc.ads,
300 system-vxworks-arm.ads, system-darwin-x86.ads, system.ads,
301 system-vms_64.ads, system-darwin-ppc.ads, system-vxworks-x86.ads,
302 system-linux-ppc.ads, system-linux-hppa.ads, system-hpux-ia64.ads,
303 system-vms-ia64.ads (Stack_Check_Limits): New target parameter.
304 (Always_Compatible_Rep): New flag to control trampolines globally.
305 (Dynamic_Trampolines_Used): New flag for implementing the
306 No_Implicit_Dynamic_Code restriction more correctly (not yet used,
307 and not yet set correctly for some targets).
309 * s-taprop-vxworks.adb: Use stack limit method of stack checking.
310 Simply indirectly call s-stchop when a task is created.
313 New flag added: Stack_Check_Switch_Set which is set when '-fstack-check'
314 appears as an argument (entries A) in an ALI file.
316 * fe.h (Stack_Check_Limits): Declare new target parameter.
317 (Check_Implicit_Dynamic_Code_Allowed): New procedure.
319 * init.c: Declare __gnat_set_stack_limit_hook for VxWorks kernel RTS.
320 This variable is declared in C to be sure not subject to elaboration
322 (__gnat_map_signal, VxWorks): In kernel mode, map SIGILL to
325 * targparm.ads, targparm.adb (Stack_Check_Limits): New parameter.
326 (Always_Compatible_Rep, Dynamic_Trampolines_Used): New parameters.
328 * s-stchop.ads: Add comments.
330 * s-stchop-vxworks.adb: Package almost fully rewritten to use stack
331 limit method of stack checking.
333 * s-stchop-limit.ads: New file.
335 2007-12-13 Robert Dewar <dewar@adacore.com>
337 * sem_ch5.adb, s-taskin.adb, a-ciorma.adb, a-coorma.adb, a-cohama.adb,
338 a-cihama.adb, g-awk.adb,
339 s-inmaop-posix.adb: Update handling of assigned value/unreferenced
342 * exp_smem.adb: Update handling of assigned value/unreferenced warnings
344 * sem.adb: Update handling of assigned value/unreferenced warnings
346 * a-exexpr-gcc.adb: Add a pragma warnings off for boolean return
348 * lib-xref.ads: Improve documentation for k xref type
351 Update handling of assigned value/unreferenced warnings
352 (Generate_Reference): Warning for reference to entity for which a
353 pragma Unreferenced has been given should be unconditional.
354 If the entity is a discriminal, mark the original
355 discriminant as referenced.
357 * sem_warn.ads, sem_warn.adb
358 (Check_One_Unit): Test Renamed_In_Spec to control giving warning for
359 no entities referenced in package
360 (Check_One_Unit): Don't give message about no entities referenced in
361 a package if a pragma Unreferenced has appeared.
362 Handle new warning flag -gnatw.a/-gnatw.A
363 Update handling of assigned value/unreferenced warnings
365 * atree.h: Add flags up to Flag247
366 (Flag231): New macro.
368 2007-12-13 Jose Ruiz <ruiz@adacore.com>
370 * adaint.h: (__gnat_plist_init): Not defined for RTX.
372 * initialize.c (__gnat_initialize): Do not call __gnat_plist_init for
375 * Makefile.in: Add new files s-tasinf-linux.ads and s-tasinf-linux.adb.
376 (LIBGNAT_TARGET_PAIRS, MISCLIB, THREADSLIB,
377 EXTRA_GNATRTL_NONTASKING_OBJS, EXTRA_GNATRTL_TASKING_OBJS,
378 GNATLIB_SHARED for RTX run time): Use the versions required by RTX.
381 Do not define GNAT_UNICODE_SUPPORT for RTX since it is not supported.
383 * sysdep.c (winflush_function for RTX): Procedure that does nothing
384 since we only have problems with Windows 95/98, which are not
386 (__gnat_ttyname): Return the empty string on Nucleus, just as
389 2007-12-13 Robert Dewar <dewar@adacore.com>
391 * a-textio.adb, a-textio.ads:
392 Extensive changes to private part for wide character encoding
394 * a-witeio.adb, a-witeio.ads, a-ztexio.ads, a-ztexio.adb
395 (Look_Ahead): Fix mishandling of encoded sequences
396 Move declaration of Wch_Con to private part (should not be visible)
398 * ali.adb (Scan_ALI): Set default encoding method to brackets instead of
399 UTF-8. Probably this is never used, but if it is, brackets is
402 * bindgen.adb (Get_WC_Encoding): New procedure to properly handle
403 setting wide character encoding for no main program case and when
404 encoding is specified using -W?
405 Initialize stack limit of environment task if stack limit method of
406 stack checking is enabled.
407 (Gen_Adainit_Ada): Use Get_WC_Encoding to output encoding method
408 (Gen_Adainit_C): Use Get_WC_Encoding to output encoding method
409 (Get_Main_Unit_Name): New function.
410 (Gen_Adainit_Ada): Add call to main program for .NET when needed.
411 (Gen_Output_File): Set Bind_Main_Program to True for .NET
413 * bindusg.adb: Add line for -Wx switch
415 * s-wchcon.adb, s-wchcon.ads: (Is_Start_Of_Encoding): New function
417 Add new useful constant WC_Longest_Sequences
419 * switch-b.adb: Clean up handling of -Wx switch
420 For -gnatWx, set Wide_Character_Encoding_Method_Specified
422 * switch-c.adb: -gnatg activates warning on assertion errors
423 For -gnatWx, set Wide_Character_Encoding_Method_Specified
425 * s-wchcon.adb: (Is_Start_Of_Encoding): New function
427 2007-12-13 Robert Dewar <dewar@adacore.com>
428 Ed Schonberg <schonberg@adacore.com>
430 * a-ngcoty.adb: New pragma Fast_Math
432 * opt.adb: New pragma Fast_Math
435 Add Implemented_By_Entry to the list of pragmas which do not require any
437 (Favor_Top_Level): New pragma.
440 * exp_attr.adb: Move Wide_[Wide_]Image routines to Exp_Imgv
441 (Expand_N_Attribute_Reference, Displace_Allocator_Pointer,
442 Expand_Allocator_Expression): Take into account VM_Target
443 (Expand_Attribute, case 'Identity): Handle properly the case where
444 the prefix is a task interface.
447 * par.adb (Next_Token_Is): New function
448 (P_Pragma): Add Skipping parameter
449 (U_Left_Paren): New procedure
450 (U_Right_Paren): New procedure
453 * par-ch10.adb (P_Subunit): Unconditional msg for missing ) after
457 * sem_prag.adb: Add significance value to table Sig_Flag for pragma
458 Implemented_By_Entry.
459 (Analyze_Pragma): Add case for Ada 2005 pragma Implemented_By_Entry.
460 (Set_Inline_Flags): Do not try to link pragma Inline onto chain of rep
461 items, since it can apply to more than one overloadable entity. Set
462 new flag Has_Pragma_Inline_Always for Inline_Always case.
463 (Analyze_Pragma, case Complex_Representation): Improve error message.
464 (Analyze_Pragma, case Assert): When assertions are disabled build the
465 rewritten code with Sloc of expression rather than pragma, so new
466 warning about failing is not deleted.
467 (Analyze_Pragma): Allow pragma Preelaborable_Initialization to apply to
468 protected types and update error message to reflect that. Test whether
469 the protected type is allowed for the pragma (an error is issued if the
470 type has any entries, or components that do not have preelaborable
473 (Analyze_Pragma, case No_Return): Handle generic instance
475 * snames.h, snames.ads, snames.adb:
476 Add new predefined name for interface primitive _Disp_Requeue.
479 * a-tags.ads, a-tags.adb: New calling sequence for
480 String_To_Wide_[Wide_]String
481 (Secondary_Tag): New subprogram.
483 * exp_imgv.ads, exp_imgv.adb: Move Wide_[Wide_]Image routines here
485 New calling sequence for String_To_Wide_[Wide_]String
486 (Expand_Image_Attribute): Major rewrite. New calling sequence avoids
487 the use of the secondary stack for image routines.
489 * a-except-2005.adb, s-wchstw.ads, s-wchstw.adb, s-wwdenu.adb: New
490 calling sequence for String_To_Wide_[Wide_]String
492 * par-ch3.adb (P_Declarative_Items): Recognize use of Overriding in
494 (P_Unknown_Discriminant_Part_Opt): Handle missing parens gracefully
495 Remove Atree.Delete_Tree/Delete_Node and Nlist.Delete_List
497 * par-ch6.adb (P_Subprogram): Recognize use of Overriding in Ada 95 mode
498 (P_Formal_Part): Use Skipping parameter in P_Pragma call
499 to improve error recovery
501 * par-util.adb (Next_Token_Is): New function
502 (Signal_Bad_Attribute): Use new Namet.Is_Bad_Spelling_Of function
504 * par-ch2.adb (Skip_Pragma_Semicolon): Do not resynchronize to
506 (P_Pragma): Implement new Skipping parameter
507 Remove Atree.Delete_Tree/Delete_Node and Nlist.Delete_List
508 Fix location of flag for unrecognized pragma message
510 * par-tchk.adb (U_Left_Paren): New procedure
511 (U_Right_Paren): New procedure
513 2007-12-13 Geert Bosch <bosch@adacore.com>
516 (Put_Int64): Use Put_Digit to advance Pos. This fixes a case where
517 the second or later Scaled_Divide would omit leading zeroes,
518 resulting in too few digits produced and a Layout_Error as result.
519 (Put): Initialize Pos.
521 2007-12-13 Robert Dewar <dewar@adacore.com>
523 atree.ads, atree.adb (Flag231..Flag247): New functions
524 (Set_Flag231..Set_Flag247): New procedures
525 (Basic_Set_Convention): Rename Set_Convention to be
527 (Nkind_In): New functions
528 Remove Atree.Delete_Tree/Delete_Node and Nlist.Delete_List
530 * exp_ch6.adb (Expand_Call): Use new flag Has_Pragma_Inline_Always
532 of obsolete function Is_Always_Inlined
533 (Register_Predefined_DT_Entry): Initialize slots of the second
534 secondary dispatch table.
535 Remove Atree.Delete_Tree/Delete_Node and Nlist.Delete_List
536 (Expand_N_Function_Call): Remove special provision for stack checking.
538 * exp_util.ads, exp_util.adb (Is_Predefined_Dispatching_Operation):
539 Include _Disp_Requeue in the list of predefined operations.
540 (Find_Interface_ADT): Modified to fulfill the new specification.
541 Remove Atree.Delete_Tree/Delete_Node and Nlist.Delete_List
543 * par-ch4.adb, nlists.ads, nlists.adb:
544 Remove Atree.Delete_Tree/Delete_Node and Nlist.Delete_List
546 * sinfo.ads, sinfo.adb: (Nkind_In): New functions
547 Fix location of flag for unrecognized pragma message
549 * sem_ch7.adb: Use Nkind_In
551 2007-12-13 Vincent Celier <celier@adacore.com>
554 Indicate what flags are used by the Project Manager, gprbuild and
556 (Opt.Follow_Links_For_Dirs): New flag
557 (Warn_On_Assertion_Failure): New flag
558 (Wide_Character_Encoding_Method_Specified): New flag
559 (Suppress_All_Inlining): New switch set by -fno-inline
560 (Real_VMS_Target): New flag
563 2007-12-13 Robert Dewar <dewar@adacore.com>
565 * back_end.adb: Recognize -fno-inline
567 2007-12-13 Robert Dewar <dewar@adacore.com>
569 * checks.adb: Fix optimization problem with short-circuited form
571 2007-12-13 Bob Duff <duff@adacore.com>
573 * clean.adb (Usage): Add line for -aP
574 (Check_Version_And_Help): Change Check_Version_And_Help to be generic,
575 with a parameter "procedure Usage", instead of passing a pointer to a
576 procedure. This is to eliminate trampolines (since the Usage procedure
577 is often nested in a main procedure, and it would be inconvenient to
580 * g-comlin.adb (For_Each_Simple_Switch): Change For_Each_Simple_Switch
581 to be generic, with a parameter "procedure Callback (...)", instead of
582 passing a pointer to a procedure. This is to eliminate trampolines
583 (since the Callback procedure is usually nested).
585 * gnatfind.adb, switch.adb, switch.ads, gnatlink.adb, gnatls.adb,
586 gnatname.adb, gnatxref.adb, gnatchop.adb, gprep.adb, gnatbind.adb
587 (Check_Version_And_Help): Change Check_Version_And_Help to be generic.
589 * g-pehage.adb (Compute_Edges_And_Vertices, Build_Identical_Key_Sets):
590 Use the generic Heap_Sort_G instead of Heap_Sort_A.
592 2007-12-13 Hristian Kirtchev <kirtchev@adacore.com>
594 * einfo.ads, einfo.adb: Flag 232 is now Implemented_By_Entry.
595 (Implemented_By_Entry, Set_Implemented_By_Entry): New routines.
596 (Write_Entry_Flags): Add an entry for Implemented_By_Entry.
597 (Renamed_In_Spec): New flag
598 (Has_Pragma_Inline_Always): New flag
599 Add missing doc for pragma Obsolescent_Warning
600 Add missing doc for 17 additional unused flags (230-247)
601 (Is_Derived_Type): Remove condition "not Is_Generic_Type".
602 Alphabetize with clauses.
603 Separate Is_Thunk and Has_Thunks flags
604 (Write_Entity_Flags): Add forgotten entry for Has_Thunks
605 (Related_Interface): Renamed to Related_Type.
606 (Has_Thunks/Set_Has_Thunks): Subprograms of new attribute.
607 (Set_Is_Flag): Restrict the assertion.
609 2007-12-13 Vincent Celier <celier@adacore.com>
611 * errout.adb (Output_Source_Line): Do not keep a trailing space after
612 the source line number if the source line is empty.
614 2007-12-13 Geert Bosch <bosch@adacore.com>
616 * eval_fat.adb (Decompose_Int): Handle argument of zero.
617 (Compose): Remove special casing of zero.
618 (Exponent): Likewise.
619 (Fraction): Likewise.
621 (Decompose): Update comment.
623 2007-12-13 Ed Schonberg <schonberg@adacore.com>
625 * exp_aggr.adb (Build_Record_Aggr_Code): If there is an aggregate for a
626 limited ancestor part, initialize controllers of enclosing record
627 before expanding ancestor aggregate.
628 (Gen_Assign): If a component of the aggregate is box-initialized, add
629 code to call Initialize if the component is controlled, and explicit
630 assignment of null if the component is an access type.
632 Handle properly aggregates for limited types that appear in object
633 declarations when the aggregate contains controlled values such as
635 When expanding limited aggregates into individual components, do not
636 call Adjust on controlled components that are limited.
638 2007-12-13 Ed Schonberg <schonberg@adacore.com>
640 * expander.adb: Take into account N_Subprogram_Renaming_Declaration
642 2007-12-13 Hristian Kirtchev <kirtchev@adacore.com>
644 * exp_ch3.adb (Predefined_Primitive_Bodies): Generate the body of
645 predefined primitive _Disp_Requeue.
646 (Make_Predefined_Primitive_Specs): Create the spec for predefined
647 primitive _Disp_Requeue.
648 (Make_Predefined_Primitive_Specs/Predefined_Primitive_Bodies): Set the
649 type of formal Renamed_Eq to Entity_Id (instead of Node_Id).
650 (Make_Predefined_Primitive_Specs): Spec of "=" needed if the parent is
651 an interface type. In case of limited interfaces we now declare all the
652 predefined primitives associated with synchronized interfaces as
654 (Predef_Spec_Or_Body): For interface types generate abstract subprogram
656 (Predefined_Primitive_Bodies): Add body of "=" if the parent of the
657 tagged type is an interface type and there is no user-defined equality
659 Add also bodies of predefined primitives associated with synchronized
661 (Freeze_Record_Type): Do not build bodies of predefined primitives of
662 interface types because they are now defined abstract.
663 Add missing documentation.
664 (Expand_Record_Controller): Update occurrence of Related_Interface
666 (Build_Offset_To_Top_Functions): Do nothing in case of VM.
667 (Expand_N_Object_Declaration): Take into account VM_Target when handling
668 class wide interface object declaration.
669 (Expand_Previous_Access_Type): Do not create a duplicate master entity
670 if the access type already has one.
671 (Expand_N_Object_Declaration): Defend against attempt to validity check
672 generic types. Noticed for -gnatVcf specified with previous errors.
674 2007-12-13 Arnaud Charlet <charlet@adacore.com>
676 * exp_ch4.adb (Expand_N_Attribute_Reference, Displace_Allocator_Pointer,
677 Expand_Allocator_Expression): Take into account VM_Target
679 * exp_ch5.adb (Expand_N_Extended_Return_Statement): Do not use
680 secondary stack when VM_Target /= No_VM
682 2007-12-13 Javier Miranda <miranda@adacore.com>
683 Ed Schonberg <schonberg@adacore.com>
685 * exp_ch7.adb (Expand_N_Package_Body): Replace occurrence of attribute
686 Is_Complation_Unit by Is_Library_Level_Entity in the code
687 that decides if the static dispatch tables need to be built.
688 (Wrap_Transient_Declaration): Do not generate a finalization call if
689 this is a renaming declaration and the renamed object is a component
690 of a controlled type.
692 2007-12-13 Gary Dismukes <dismukes@adacore.com>
694 * exp_ch8.ads, exp_ch8.adb (Expand_N_Subprogram_Renaming_Declaration):
695 In the case where the renamed subprogram is a dereference, call
696 Force_Evaluation on the prefix.
698 2007-12-13 Hristian Kirtchev <kirtchev@adacore.com>
699 Ed Schonberg <schonberg@adacore.com>
701 * exp_ch9.adb (Expand_N_Asynchronous_Select,
702 Expand_N_Conditional_Entry_Call, Expand_N_Timed_Entry_Call): Code and
703 comment reformatting.
704 (Set_Privals): Inherit aliased flag from formal. From code reading.
705 (Build_Simple_Entry_Call): Out parameters of an access type are passed
706 by copy and initialized from the actual. This includes entry parameters.
707 (Expand_N_Requeue_Statement): Reimplement in order to handle both Ada 95
708 and Ada 2005 models of requeue.
709 (Null_Statements): Still connsider do-end block null if it contains
710 Unreferenced and Warnings pragmas.
711 (Expand_N_Accept_Statement): Do not optimize away null do end if
712 dispatching policy is other than defaulted.
713 (Expand_N_Timed_Entry_Call): When the triggering statement is a
714 dispatching call, manually analyze the delay statement.
715 (Find_Parameter_Type): Move subprogram to Sem_Util.
717 2007-12-13 Hristian Kirtchev <kirtchev@adacore.com>
718 Javier Miranda <miranda@adacore.com>
720 * exp_disp.ads, exp_disp.adb (Default_Prim_Op_Position): Primitive
721 _Disp_Requeue occupies dispatch table slot number 15. Move
722 _Disp_Timed_Select to slot 16.
723 (Make_Disp_Requeue_Body, Make_Disp_Requeue_Spec): New routines which
724 generate the spec and body of _Disp_Reqeueue.
725 (Make_DT): Build and initialize the second dispatch table.
726 Handle initialization of RC_Offset when the parent
727 is a private type with variable size components.
728 (Make_Secondary_DT): Complete documentation. Add support to
729 initialize the second dispatch table.
730 (Make_Tags): Generate the tag of the second dispatch table.
731 (Register_Primitive): Add support to register primitives in the
732 second dispatch table.
734 2007-12-13 Pascal Obry <obry@adacore.com>
736 * expect.c (__gnat_kill) [WIN32]: Implement the SIGINT signal on
737 Windows. This signal is used by gnatmake to kill child processes for
740 2007-12-13 Javier Miranda <miranda@adacore.com>
742 * exp_intr.adb (Expand_Dispatching_Constructor_Call): Add missing
743 support for generic dispatching constructor calls in which we need to
744 locate the tag of a secondary dispatch table associated with an
745 interface type to properly dispatch the call.
746 (Expand_N_Attribute_Reference [case Address],
747 Expand_Dispatching_Constructor_Call, Expand_Unc_Deallocation): Fix
748 handling of VM targets.
750 2007-12-13 Robert Dewar <dewar@adacore.com>
751 Ed Schonberg <schonberg@adacore.com>
753 * exp_prag.adb (Expand_Pragma_Assert): Recognize new warning flag for
756 * ug_words: Add entries for -gnatw.a -gnatw.A
758 * sem_res.adb (Set_String_Literal_Subtype): If the context of the
759 literal is a subtype with non-static constraints, use the base type of
760 the context as the base of the string subtype, to prevent type
762 (Resolve_Actuals): If the actual is an entity name, generate a
763 reference before the actual is resolved and expanded, to prevent
764 spurious warnings on formals of enclosing protected operations.
765 (Analyze_Overloaded_Selected_Component): If type of prefix if
766 class-wide, use visible components of base type.
767 (Resolve_Selected_Component): Ditto.
768 (Resolve_Short_Circuit): Detect case of pragma Assert argument
769 evaluating to False, and issue warning message.
771 * usage.adb: Add lines for -gnatw.a and -gnatw.A
773 2007-12-13 Emmanuel Briot <briot@adacore.com>
775 * g-calend.ads (No_Time): New constant, to represent an uninitialized
778 * g-catiio.ads, g-catiio.adb (Value): Added support for more date
780 (Month_Name_To_Number): New subprogram
782 * g-dirope.adb (Get_Current_Dir): On windows, normalize the drive
783 letter to upper-case.
785 2007-12-13 Robert Dewar <dewar@adacore.com>
786 Ed Schonberg <schonberg@adacore.com>
788 * gnat1drv.adb (Gnat1drv): Properly set new flag Opt.Real_VMS_Target
790 * layout.adb (Resolve_Attribute, case 'Access): If designated type of
791 context is a limited view, use non-limited view when available. If the
792 non-limited view is an unconstrained array, this enforces consistency
793 requirements in 3.10.2 (27).
794 (Layout_Type): For an access type whose designated type is a limited
795 view, examine its declaration to determine if it is an unconstrained
796 array, and size the access type accordingly.
797 (Layout_Type): Do not force 32-bits for convention c subprogram
798 pointers in -gnatdm mode, only if real vms target.
800 * sem_attr.adb (Analyze_Access_Attribute): Use new flag
801 Has_Pragma_Inline_Always instead of obsolete function Is_Always_Inlined
802 (Analyze_Access_Attribute,Attribute_Address): Remove checks for
803 violations of the No_Implicit_Dynamic_Code restriction.
804 (Resolve_Attribute, case 'Access): If designated type of context is a
805 limited view, use non-limited view when available. If the non-limited
806 view is an unconstrained array, this enforces consistency requirements
808 (Layout_Type): For an access type whose designated type is a limited
809 view, examine its declaration to determine if it is an unconstrained
810 array, and size the access type accordingly.
812 2007-12-13 Vincent Celier <celier@adacore.com>
814 * gnatcmd.adb (GNATCmd): Do not issue -d= switch to gnatmetric when
815 object directory of main project does not exist.
816 On VMS, correctly set then environment variable for the source
819 2007-12-13 Vasiliy Fofanov <fofanov@adacore.com>
821 * g-regist.ads, g-regist.adb (Set_Value): new parameter Expand; when
822 set to True this procedure will create the value of type REG_EXPAND_SZ.
823 It was only possible to create REG_SZ values before.
825 2007-12-13 Robert Dewar <dewar@adacore.com>
827 * g-spchge.ads, g-spchge.adb, g-u3spch.adb, g-u3spch.ads,
828 g-wispch.adb, g-wispch.ads, g-zspche.adb, g-zspche.ads,
829 namet-sp.adb, namet-sp.ads: New files.
831 * g-speche.adb: Use generic routine in g-spchge
833 * s-wchcnv.ads, s-wchcnv.adb:
834 Minor code cleanup (make formal type consistent with spec)
836 * namet.adb: Update comments.
838 * par-endh.adb (Evaluate_End_Entry): Use new
839 Namet.Sp.Is_Bad_Spelling_Of function
841 * par-load.adb (Load): Use new Namet.Sp.Is_Bad_Spelling_Of function
843 * sem_aggr.adb (Resolve_Record_Aggregate): If a component of an
844 ancestor is an access type initialized with a box, set its type
845 explicitly, for use in subsequent expansion.
846 (Check_Misspelled_Component): Use new Namet.Sp.Is_Bad_Spelling_Of
849 2007-12-13 Robert Dewar <dewar@adacore.com>
851 * g-spipat.adb (Break): Fix accessibility error (vsn taking not null
854 2007-12-13 Robert Dewar <dewar@adacore.com>
856 * inline.adb (Back_End_Cannot_Inline): Use new flag
857 Has_Pragma_Inline_Always instead of obsolete function Is_Always_Inlined
859 * sem_ch6.ads, sem_ch6.adb (Analyze_Subprogram_Body): Use new flag
860 Has_Pragma_Inline_Always instead.
861 of obsolete function Is_Always_Inlined
862 (Build_Body_To_Inline): Same change
863 (Cannot_Inline): Same change
864 Do not give warning on exception raise in No_Return function
866 * sem_ch13.adb (Analyze_Record_Representation_Clause): If an inherited
867 component has two inconsistent component clauses in the same record
868 representation clause, favor the message that complains about
869 duplication rather than inconsistency.
871 (Record_Representation_Clause): Do not warn on missing component
872 clauses for inherited components of a type extension.
873 (Rep_Item_Too_Late): Do not attempt to link pragma into rep chain for
874 an overloadable item if it is a pragma that can apply to multiple
875 overloadable entities (e.g. Inline) because a pragma cannot be on
876 more than one chain at a time.
877 (Validate_Unchecked_Conversion): Add code to warn on unchecked
878 conversion where one of the operands is Ada.Calendar.Time.
879 (Analyze_Attribute_Definition_Clause): Fix typo in error message.
880 For now, ignore Component_Size clause on VM targets, as done for
883 2007-12-13 Emmanuel Briot <briot@adacore.com>
884 Vincent Celier <celier@adacore.com>
886 * prj.ads, prj.adb (Is_A_Language): Now takes a Name_Id instead of a
888 (Must_Check_Configuration, Default_Language_Is_Ada): new flags in
890 (Hash): Move instantiation of System.HTable.Hash from spec to body
891 (prj-nmsc.adb): Optimize calls to Name_Find when on case sensitive
892 systems, since we do not need to recompute the Name_Id for the canonical
894 (Body_Suffix_Id_Of, Spec_Suffix_Id_Of): new version that takes a name_id
895 as a parameter. This parameter is in fact always "ada" in all calls, and
896 we were doing 160560 extra calls to Name_Find to convert it to Name_Ada
897 while loading a project with 40000 files
899 * prj-attr.adb: Fix name of attribute Dependency_Driver
900 Change the kind of indexing for attribute Root
902 * prj-dect.adb (Parse_Declarative_Items): Allow redeclarations of
903 variables already declared, in case constructions.
905 * prj-env.adb (Initialize): Reset Current_Source_Path_File and
906 Current_Object_Path_File to No_Path.
908 * prj-ext.adb (Initialize_Project_Path): In multi language mode, use
909 ADA_PROJECT_PATH if value of GPR_PROJECT_PATH is empty.
911 * prj-makr.adb: new parameter Current_Dir
913 * prj-nmsc.ads, prj-nmsc.adb (Find_Explicit_Sources): Do not look for
914 Ada sources when language is not Ada.
915 Change Opt.Follow_Links to Opt.Follow_Links_For_Files.
916 (Find_Excluded_Sources, Find_Explicit_Sources): new subprograms
917 (Must_Check_Configuration, Default_Language_Is_Ada): new flags.
918 (Locate_Directory): Always resolve links when computing Canonical_Path
919 (Look_For_Sources): Make sure that Name_Buffer contains the file name
920 in Source_Files before checking for the presence of a directory
922 Optimize calls to Name_Find when on case sensitive systems.
923 (Body_Suffix_Id_Of, Spec_Suffix_Id_Of): new version that takes a name_id
925 (Prj.Nmsc.Check): new parameter Current_Dir
926 (Check_Ada_Naming_Schemes): Restrictions on suffixes are relaxed. They
927 cannot be empty and the spec suffix cannot be the same as the body or
929 (Get_Unit): When a file name can be of several unit kinds (spec, body or
930 subunit), always consider the longest suffix.
931 (Check_Configuration): Do not issue an error if there is no compiler
932 for a language. Just issue a warning and ignore the sources for the
934 (Check_Library_Attributes): Only check Library_Dir if Library_Name is
936 (Check_Naming_Schemes.Maked_Unit): Only output message if high verbosity
937 (Unit_Exceptions): New hash table
938 (Check_Naming_Schemes): Check if a file that could be a unit because of
939 the naming scheme is not in fact a source because there is an exception
941 (Look_For_Sources): Put the unit exceptions in hash table
943 (Get_Unit_Exceptions): Give initial value No_Source to local variable
944 Other_Part to avoid exception when code is compiled with validity
946 (Get_Sources_From_File): Check that there is no directory information
948 (Look_For_Sources): Check that there is no directory information in the
949 list of file names in Source_Files.
950 (Look_For_Sources): In multi-language mode, do not allow exception file
951 names that are excluded.
952 (Excluded_Sources_Htable): New hash table
953 (Search_Directories.Check_File): New procedure to simplify
955 (Search_Directories): Do not consider excluded sources
956 (Look_For_Sources): Populate Excluded_Sources_Htable before calling
958 (Get_Exceptions): Set component Lang_Kind of Source_Data
959 (Get_Unit_Exceptions): Ditto
960 (Search_Directories): Ditto
962 * prj-pars.adb: new parameter Current_Dir
964 * prj-part.ads, prj-part.adb:
965 Change Opt.Follow_Links to Opt.Follow_Links_For_Files.
966 (Opt.Follow_Links_For_Dirs): New flag
967 (Project_Path_Name_Of): Cache information returned by this routine as
968 Locate_Regular_File is a costly routine. The code to output a log
969 information and the effective call to Locate_Regular_File is now
970 factorized into a routine (code clean-up).
971 (Parse, Parse_Single_Project): new parameter Current_Dir
972 When main project file cannot be found, indicate in the error
973 message the project path that was used to do the search.
975 * prj-proc.ads, prj-proc.adb (Opt.Follow_Links_For_Dirs): New flag
976 (Prj.Proc.Process*): new parameter Current_Dir
978 * switch-m.adb: Change Opt.Follow_Links to Opt.Follow_Links_For_Files
980 2007-12-13 Bob Duff <duff@adacore.com>
982 * restrict.ads, restrict.adb (Check_Implicit_Dynamic_Code_Allowed): New
983 procedure to be called from the back end to check the
984 No_Implicit_Dynamic_Code restriction.
986 2007-12-13 Arnaud Charlet <charlet@adacore.com>
988 * rtsfind.adb (Check_CRT): Take into account RTE_Available_Call
989 Fixes another case where RTE_Available_Call was ignored instead of being
993 * rtsfind.ads: Add new entries.
995 2007-12-13 Robert Dewar <dewar@adacore.com>
997 * g-byorma.adb, g-byorma.ads, g-decstr.adb, g-decstr.ads,
998 g-deutst.ads, g-encstr.adb, g-encstr.ads, g-enutst.ads: New files.
1000 * scn.adb: Implement BOM recognition
1002 2007-12-13 Thomas Quinot <quinot@adacore.com>
1003 Ed Schonberg <schonberg@adacore.com>
1005 * sem_ch10.adb (Check_Private_Child_Unit): A non-private library level
1006 subprogram body that acts as its own spec may not have a non-private
1007 WITH clause on a private sibling.
1008 (Build_Unit_Name): If the parent unit in the name in a with_clause on a
1009 child unit is a renaming, create an implicit with_clause on that
1010 parent, and not on the unit it renames, to prevent visibility errors
1011 in the current unit.
1013 2007-12-13 Ed Schonberg <schonberg@adacore.com>
1015 * sem_ch12.adb (Instantiate_Formal_Subprogram): In the subprogram
1016 renaming declaration, use the Slocs of the formal parameters from the
1017 declaration of the formal subprogram when creating the formal parameter
1018 entities in the renaming declaration.
1019 (Analyze_Formal_Type_Declaration): Change the placement of the error
1020 message concerning illegal known discriminants. It is now posted on the
1021 type rather than on the first discriminant. This change ensures early
1023 (Freeze_Subprogram_Body): If the generic subprogram is nested within
1024 the package body that contains the instance, do not generate an
1025 out-of-place freeze node for the enclosing package.
1026 (Collect_Previous_Instantiations): Ignore internal instantiations
1027 generated for formal packages.
1028 (Validate_Derived_Type_Instance): Add a check that when a formal
1029 derived type is Known_To_Have_Preelab_Init then the actual type must
1030 have preelaborable initialization, and issue an error when this
1031 condition is violated.
1033 2007-12-13 Robert Dewar <dewar@adacore.com>
1035 * s-imenne.adb, s-imenne.ads: New files.
1037 * s-imgboo.adb, s-imgboo.ads, s-imgcha.adb, s-imgcha.ads, s-imgdec.adb,
1038 s-imgdec.ads, s-imgenu.ads, s-imgint.adb, s-imgint.ads, s-imglld.adb,
1039 s-imglld.ads, s-imglli.adb, s-imglli.ads, s-imgllu.adb, s-imgllu.ads,
1040 s-imgrea.adb, s-imgrea.ads, s-imguns.adb, s-imguns.ads, s-imgwch.adb,
1041 s-imgwch.ads: New calling sequence for Image routines to avoid sec
1044 2007-12-13 Javier Miranda <miranda@adacore.com>
1045 Ed Schonberg <schonberg@adacore.com>
1047 * sem_ch3.ads, sem_ch3.adb (Check_Abstract_Overriding): Avoid
1048 generation of spurious error if parent is an interface type; caused
1049 because predefined primitive bodies will be generated later by
1051 (Process_Subtype): The subtype inherits the Known_To_Have_Preelab_Init
1053 (Derive_Subprograms): Handle derivations of predefined primitives
1054 after all the user-defined primitives to ensure that they are
1055 found in proper order in instantiations.
1056 (Add_Interface_Tag_Components, Inherit_Components): Update occurrences
1057 of Related_Interface to Related_Type.
1058 (Record_Type_Declaration): Minor reordering of calls to decorate the
1059 Tag component because the entity must have set its Ekind attribute
1060 before setting its Is_Tag attribute.
1061 (Analyze_Subtype_Declaration): In the case of subtypes with
1062 Private_Kind, inherit Known_To_Have_Preelab_Init from the parent.
1064 2007-12-13 Hristian Kirtchev <kirtchev@adacore.com>
1065 Ed Schonberg <schonberg@adacore.com>
1067 * sem_ch4.adb (Analyze_Selected_Component): Include the requeue
1068 statement to the list of contexts where a selected component with a
1069 concurrent tagged type prefix should yield a primitive operation.
1070 (Find_Primitive_Operation): Handle case of class-wide types.
1071 (Analyze_Overloaded_Selected_Component): If type of prefix is
1072 class-wide, use visible components of base type.
1073 (Resolve_Selected_Component): Ditto.
1074 (Try_Primitive_Operation, Collect_Generic_Type_Ops): If the type is a
1075 formal of a generic subprogram. find candidate interpretations by
1076 scanning the list of generic formal declarations.:
1077 (Process_Implicit_Dereference_Prefix): If the prefix has an incomplete
1078 type from a limited_with_clause, and the full view is available, use it
1079 for subsequent semantic checks.
1080 (Check_Misspelled_Selector): Use Namet.Sp.Is_Bad_Spelling_Of function
1081 (Find_Primitive_Operation): New function.
1082 (Analyze_Overloaded_Selected_Component): insert explicit dereference
1083 only once if several interpretations of the prefix yield an access type.
1084 (Try_Object_Operation): Code and comment cleanup.
1085 (Analyze_Selected_Component): Reorder local variables. Minot comment and
1086 code reformatting. When the type of the prefix is tagged concurrent, a
1087 correct interpretation might be available in the primitive and
1088 class-wide operations of the type.
1090 2007-12-13 Robert Dewar <dewar@adacore.com>
1091 Ed Schonberg <schonberg@adacore.com>
1093 * sem_ch8.adb (Analyze_Subprogram_Renaming): Special error message for
1094 renaming entry as subprogram using rename-as-body if subprogram spec
1096 (Use_One_Type): The clause is legal on an access type whose designated
1097 type has a limited view.
1098 (Find_Direct_Name): Use Namet.Sp.Is_Bad_Spelling_Of function
1099 (Find_Expanded_Name): Use Namet.Sp.Is_Bad_Spelling_Of function
1100 (Analyze_Renamed_Primitive_Operation): new procedure to determine the
1101 operation denoted by a selected component.
1102 (Analyze_Renamed_Entry): Resolve the prefix of the entry name, because
1103 it can be an expression, possibly overloaded, that returns a task or
1106 2007-12-13 Hristian Kirtchev <kirtchev@adacore.com>
1107 Gary Dismukes <dismukes@adacore.com>
1109 * sem_ch9.adb (Analyze_Requeue): Add a local flag to capture whether a
1110 requeue statement is dispatching. Do not emit an error when the name is
1111 not an entry and the context is a dispatching select. Add code to
1112 perform subtype conformance between the formals of the current entry
1113 and those of the target interface primitive.
1114 (Analyze_Asynchronous_Select, Analyze_Conditional_Entry_Call, Analyze_
1115 Timed_Entry_Call): Analyze the triggering statement as the first step of
1116 the processing. If this is a dispatching select, postpone the analysis
1117 of all select statements until the Expander transforms the select. This
1118 approach avoids generating duplicate identifiers after the Expander has
1119 replicated some of the select statements. In case the Expander is
1120 disabled, perform regular analysis.
1121 (Check_Triggering_Statement): New routine.
1122 (Analyze_Requeue): Exclude any interpretations that are not entries when
1123 checking overloaded names in a requeue. Also test type conformance for
1124 matching interpretations rather than requiring subtype conformance at
1125 that point to conform with the RM's resolution rule for requeues.
1127 2007-12-13 Ed Schonberg <schonberg@adacore.com>
1129 * sem_disp.adb (Check_Dispatching_Call): If an actual in a call to an
1130 inherited operation is a defaulted tag-indeterminate call, and there is
1131 a statically tagged actual, use the static tag as a controlling actual
1132 for the defaulted actual.
1134 2007-12-13 Geert Bosch <bosch@adacore.com>
1136 * sem_eval.adb (Eval_Real_Literal): N_Constant_Declaration is a static
1137 context, so do not call Check_Non_Static_Context.
1139 2007-12-13 Hristian Kirtchev <kirtchev@adacore.com>
1141 * sem_type.adb (Function_Interp_Has_Abstract_Op): Add guard to check
1142 whether formal E is an entity which may have parameters.
1144 2007-12-13 Bob Duff <duff@adacore.com>
1145 Javier Miranda <miranda@adacore.com>
1146 Robert Dewar <dewar@adacore.com>
1148 * sem_util.ads, sem_util.adb (Is_Concurrent_Interface): New routine.
1149 (Set_Convention): New procedure to set the Convention flag, and in
1150 addition make sure the Favor_Top_Level flag is kept in sync (all
1151 foreign-language conventions require Favor_Top_Level = True).
1152 (Collect_Abstract_Interfaces): Update occurrences of Related_Interface
1154 (Collect_Interfaces_Info): Minor update to handle the two secondary
1155 dispatch tables. Update occurrence of Related_Interface to Related_Type.
1156 (Generate_Parent_Ref): Add parameter to specify entity to check
1157 (Is_Preelaborable_Expression): Allow the name of a discriminant to
1158 initialize a component of a type with preelaborable initialization.
1159 This includes the case of a discriminal used in such a context.
1160 (Is_Dependent_Component_Of_Mutable_Object): Take into account the
1161 latest Ada 2005 rules about renaming and 'Access of
1162 discriminant-dependent components.
1163 (Check_Nested_Access): Add handling when there are no enclosing
1164 subprograms (e.g. case of a package body).
1165 (Find_Parameter_Type): Factor routine from several other compiler files.
1166 Remove routine from Find_Overridden_Synchronized_Primitive.
1168 2007-12-13 Thomas Quinot <quinot@adacore.com>
1170 * sinput.adb (Get_Source_File_Index): Add assertion to guard against
1171 an invalid access to an uninitialized slot in the
1172 Source_File_Index_Table.
1174 2007-12-13 Thomas Quinot <quinot@adacore.com>
1176 * sinput-l.adb (Load_File): Disable style checks when preprocessing.
1178 2007-12-13 Bob Duff <duff@adacore.com>
1180 * s-soflin.ads: Apply new pragma Favor_Top_Level to all
1181 access-to-subprogram types in this package.
1183 2007-12-13 Olivier Hainque <hainque@adacore.com>
1185 * s-stausa.ads (Stack_Analyzer): Remove First_Is_Topmost, redundant
1186 with Stack_Grows_Down in System.Parameters. Rename Array_Address into
1187 Stack_Overlay_Address and document that we are using an internal
1189 (Byte_Size, Unsigned_32_Size): Remove, now useless.
1190 (Pattern_Type, Bytes_Per_Pattern): New subtype and constant, to be used
1191 consistently throughout the various implementation pieces.
1193 * s-stausa.adb (Stack_Slots): New type, abstraction for the stack
1194 overlay we are using to fill the stack area with patterns.
1195 (Top_Slot_Index_In, Bottom_Slot_Index_In): Operations on Stack_Slots.
1196 (Push_Index_Step_For, Pop_Index_Step_For): Likewise.
1197 (Fill_Stack, Compute_Result): Use the Stack_Slots abstraction.
1199 2007-12-13 Robert Dewar <dewar@adacore.com>
1201 * s-stoele.adb ("mod"): mod negative value raises Constraint_Error
1203 2007-12-13 Arnaud Charlet <charlet@adacore.com>
1206 (Create_Task): Take into account tasks created by foreign threads.
1207 Code clean up: use constants instead of hard coded values.
1209 2007-12-13 Robert Dewar <dewar@adacore.com>
1211 * styleg.adb (Check_Comment): More liberal rules for comment placement
1213 2007-12-13 Olivier Hainque <hainque@adacore.com>
1215 * tb-alvms.c (struct tb_entry_t, __gnat_backtrace): Revert back to use
1216 of Procedure Value instead of Frame Pointer as the invocation
1217 identifier associated with the instruction pointer in each traceback
1220 * g-trasym-vms-alpha.adb (Traceback_Entry, PV_For, FP_For,
1221 TB_Entry_For): Revert back to use of Procedure Value instead of Frame
1222 Pointer as the invocation identifier passed to tbk$symbolize.
1224 * s-traent-vms.ads, s-traent-vms.adb
1225 (Traceback_Entry, PV_For, FP_For, TB_Entry_For): Revert back to use of
1226 Procedure Value instead of Frame Pointer as the invocation identifier
1227 passed to tbk$symbolize.
1229 2007-12-13 Robert Dewar <dewar@adacore.com>
1231 * tbuild.ads, tbuild.adb:
1232 Fix location of flag for unrecognized pragma message
1234 2007-12-13 Robert Dewar <dewar@adacore.com>
1236 * treepr.ads, treepr.adb: (pl): implement use of positive value
1239 2007-12-13 Robert Dewar <dewar@adacore.com>
1241 * xeinfo.adb: Remove warnings
1242 * xnmake.adb: Remove warnings
1243 * xsinfo.adb: Remove warnings
1244 * xtreeprs.adb: Remove warnings
1245 * xsnames.adb: Remove warnings
1247 * a-ngcoar.adb: Fix typo.
1248 * s-interr.adb: Minor reformatting
1249 * env.c: Minor reformatting.
1250 * g-bytswa.adb: Minor reformatting.
1251 * g-rannum.ads: Minor documentation improvements
1252 * s-tasinf-mingw.adb: Minor header fix
1253 * a-clrefi.adb: Minor reformatting
1254 * g-sttsne.ads: Minor documentation improvement
1255 * g-sttsne-locking.ads: Minor documentation improvement
1256 * g-soliop-solaris.ads: Minor documentation improvement
1257 * g-soliop-mingw.ads: Minor documentation improvement
1258 * g-soliop.ads: Minor documentation improvement
1259 * exp_aggr.ads: Minor reformatting
1260 * debug.adb: Add documentation for the gprbuild debug flags
1261 * exp_ch2.adb: Use Nkind_In to simplify code throughout
1262 * exp_pakd.adb: Minor reformatting
1264 * g-altive.ads, g-alleve.adb: Remove assertions.
1265 Add comment about minor differences between targets regarding
1266 floating-point operations.
1268 * g-thread.adb: Remove pragma unreferenced.
1269 * lib.ads: Minor reformatting
1270 * par-ch9.adb: Minor reformatting of error messages
1271 * sem_case.adb: Minor reformatting
1272 * s-fileio.adb: Minor reformattinng
1273 * s-vmexta.ads: Minor typo
1275 Take into account 'Success' value as per new GNAT warning.
1277 2007-12-13 Vincent Celier <celier@adacore.com>
1279 * a-direct.adb (Create_Path): Always take '/' as a directory separator,
1282 2007-12-13 Robert Dewar <dewar@adacore.com>
1283 Bob Duff <duff@adacore.com>
1285 * gnat_ugn.texi: Dcoument new rules for style check comment alignment
1286 Document that suffixes may be terminations of each others
1287 Add doc for -gnatw.a and -gnatw.A
1288 Document gnatbind -Wx switch
1289 Document BOM recognition
1290 Document pragma Implemented_By_Entry.
1293 * gnat_rm.texi: (Favor_Top_Level): Document new pragma.
1294 Add doc for pragma Unreferenced suppressing no entities referenced msg
1295 Add documentation of GNAT.Directory_Operations.Iteration
1296 Add documentation of GNAT.Random_Numbers
1297 Add documentation for pragma Shared.
1298 Correct documentation for Bit_Order
1299 Add documentation for the Pool_Address attribute.
1300 Fix and improve documentation of pragma machine_attribute.
1301 New pragma Fast_Math
1302 Document BOM recognition
1304 * vms_data.ads: Add entries for -gnatw.a -gnatw.A
1305 Add /Wide_Character_Encoding for binder
1306 Add qualifier for the new gnatpp option --no-separate-loop-then
1308 2007-12-13 Matthew Heaney <heaney@adacore.com>
1310 * a-cohase.ads, a-cihama.ads, a-cihase.ads, a-cohama.ads: Document
1311 which generic formal operations are called for each operation.
1313 2007-12-13 Olivier Hainque <hainque@adacore.com>
1315 * tb-gcc.c (uw_data_t, trace_callback): Only define if not GCC-SJLJ eh.
1316 (__gnat_backtrace): Early return 0 if using GCC-SJLJ eh.
1318 2007-12-13 Emmanuel Briot <briot@adacore.com>
1320 * s-os_lib.ads, s-os_lib.adb (Normalize_Pathname): Do not compute
1321 Reference_Dir unless we actually need it.
1323 2007-12-13 Vasiliy Fofanov <fofanov@adacore.com>
1324 Tristan Gingold <gingold@adacore.com>
1326 * g-socthi-vms.ads (Fd_Set_Access): make it 32-bit.
1329 a-calend-vms.adb: Remove pragma warning off and add pragma
1332 2007-12-13 Robert Dewar <dewar@adacore.com>
1334 * impunit.adb: Add entries for missing units
1336 * Makefile.rtl: Add new run-time units.
1338 * Make-lang.in: Update dependencies.
1340 2007-12-13 Bob Duff <duff@adacore.com>
1342 * itypes.ads, itypes.adb (Create_Itype): For access-to-subprogram
1343 types, set Can_Use_Internal_Rep appropriately, based on
1344 Always_Compatible_Rep_On_Target.
1346 2007-12-13 Gary Dismukes <dismukes@adacore.com>
1347 Arnaud Charlet <charlet@adacore.com>
1349 * make.adb (Scan_Make_Arg): Add test for -aamp_target switch, passing
1350 it to the front end and setting the aamp_target environment variable
1351 to the switch's argument to ensure that gnaampbind and gnaamplink will
1352 take the specified library into account.
1353 (Make): Only set Check_Object_Consistency to False for JVM, not for CIL
1354 target, since the CIL compiler supports an "object" file (.il files).
1356 2007-12-13 Vincent Celier <celier@adacore.com>
1358 * symbols-processing-vms-ia64.adb (Process.Skip_Half): New procedure
1359 (Process.H): Remove variable. Replace Read_Half (H) with Skip_Half.
1361 2007-12-13 Geert Bosch <bosch@adacore.com>
1363 * s-parame-vxworks.adb:
1364 Update comments to reflect usage of this package by Nucleus.
1366 2007-12-13 Arnaud Charlet <charlet@adacore.com>
1368 * i-vxwork.ads: Kill new warning on Convention C, since changing the
1369 spec would break code.
1371 * i-forbla-unimplemented.ads, vx_stack_info.c: New files.
1373 * system-vxworks-alpha.ads: Removed.
1375 2007-12-10 Eric Botcazou <ebotcazou@adacore.com>
1377 * ada-tree.h (TYPE_RETURNS_BY_TARGET_PTR_P): Move around.
1379 2007-12-09 Samuel Tardieu <sam@rfc1149.net>
1382 * sem_ch3.adb (Designates_T): New function.
1383 (Mentions_T): Factor reusable part of the logic into Designates_T.
1384 Consider non-access parameters and access and non-access result.
1385 (Check_Anonymous_Access_Components): Set ekind of anonymous access to
1386 E_Subprogram_Type to E_Anonymous_Access_Subprogram_Type.
1388 * einfo.ads: Update comment for E_Anonymous_Access_Subprogram_Type.
1390 2007-12-07 Ludovic Brenta <ludovic@ludovic-brenta.org>
1393 * mlib-tgt.adb, mlib-tgt.ads: Fix comments at the top to reflect
1394 the new implementation of target-specific calls.
1396 2007-12-07 Olivier Hainque <hainque@adacore.com>
1398 * decl.c (gnat_to_gnu_entity) <case E_Access_Type>: When computing
1399 the designated full view, only follow a second level Full_View link
1400 for Non_Limited_Views of from_limited_with references.
1402 2007-12-07 Samuel Tardieu <sam@rfc1149.net>
1405 * sem_ch6.adb (Process_Formals): Prevent an access type formal
1406 to be initialized with an access to constant object.
1408 * sem_ch3.adb (Analyze_Object_Declaration): Signal an error
1409 when an access to constant is used to initialize an access
1413 * a-direct.adb (Compose): Containing_Directory can be an empty string.
1415 2007-12-07 Olivier Hainque <hainque@adacore.com>
1418 * decl.c (gnat_to_gnu_entity) <case E_Array_Type>: When setting
1419 the alignment on the GCC XUA array type, set TYPE_USER_ALIGN if
1420 this is from an alignment clause on the GNAT entity.
1421 * utils.c (create_field_decl): Rewrite the computation of DECL_ALIGN
1422 to distinguish the case where we set it from the type's alignment.
1423 When so, propagate TYPE_USER_ALIGN into DECL_USER_ALIGN to indicate
1424 whether this alignment was set from an explicit alignment clause.
1426 2007-12-06 Eric Botcazou <ebotcazou@adacore.com>
1428 * decl.c (make_packable_type): Revert last change.
1429 (gnat_to_gnu_field): Avoid setting size and position multiple times.
1430 * utils.c (finish_record_type): Retrieve the real name of the type.
1432 2007-12-05 Eric Botcazou <ebotcazou@adacore.com>
1434 * trans.c (lvalue_required_p): Take base node directly instead
1435 of its parent. Rename second parameter to 'gnu_type'.
1436 <N_Indexed_Component>: Return 0 if the node isn't the prefix.
1437 <N_Slice>: Likewise.
1438 (Identifier_to_gnu): Rename parent_requires_lvalue to require_lvalue.
1439 Adjust calls to lvalue_required_p.
1441 2007-12-05 Samuel Tardieu <sam@rfc1149.net>
1444 * exp_ch9.adb (Build_Simple_Entry_Call): Initialize OUT access type
1445 parameters of an entry call.
1447 2007-12-03 Robert Dewar <dewar@adacore.com>
1448 Samuel Tardieu <sam@rfc1149.net>
1451 * sem_util.adb (Safe_To_Capture_Value): Do not capture values
1452 of variables declared in a library-level package.
1454 2007-12-02 Samuel Tardieu <sam@rfc1149.net>
1456 * clean.adb (Clean_Library_Directory): Use Empty_String'Access intead
1457 of Empty_String'Unchecked_Access.
1459 * Makefile.in: Add support for sh4-linux.
1461 * system-linux-sh4.ads: New file.
1463 2007-12-01 Kostik Belousov <kostikbel@ukr.net>
1466 * env.c (__gnat_setenv): FreeBSD 7 has a POSIX conformant putenv()
1467 and its argument must not be free()ed.
1469 2007-11-29 Eric Botcazou <ebotcazou@adacore.com>
1471 * decl.c (make_packable_type): Retrieve the real name of the type.
1472 (maybe_pad_type): Simplify similar code.
1474 2007-11-28 Samuel Tardieu <sam@rfc1149.net>
1477 * par-ch3.adb (P_Variant_Part): Signal an error when anything other
1478 than an identifier is used after "case" in a variant_part.
1481 * par-ch4.adb (Is_Parameterless_Attribute): New map.
1482 (P_Name, Scan_Apostrophe block): Parse left parenthesis following
1483 attribute name or not depending on the new map.
1485 * sem-attr.adb (Analyze_Attribute): Parameterless attributes
1486 returning a string or a type will not be called with improper
1489 * sem-attr.ads (Attribute_Class_Array): Move to snames.ads.
1491 * snames.ads (Attribute_Class_Array): Moved from sem-attr.ads.
1494 * sem_attr.adb (Analyze_Attribute, Attribute_Integer_Value clause):
1495 Signal an error when attribute argument is a fixed-point value of
1499 * sem_ch3.adb (Build_Derived_Numeric_Type): Do not set RM_Size on
1500 a derived ordinary fixed point type.
1502 * sem_ch13.adb (Analyze_Attribute_Definition_Clause): Recompute
1503 RM_Size when a Small clause is found.
1505 2007-11-26 Andreas Krebbel <krebbel1@de.ibm.com>
1508 * trans.c (Subprogram_Body_to_gnu, Compilation_Unit_to_gnu):
1509 Pass 'false' for the new allocate_struct_function parameter.
1510 * utils.c (build_function_stub): Likewise.
1512 2007-11-25 Richard Guenther <rguenther@suse.de>
1514 * utils.c (gnat_pushlevel): Use BLOCK_CHAIN.
1515 (gnat_poplevel): Likewise.
1517 2007-11-25 Eric Botcazou <ebotcazou@adacore.com>
1519 * decl.c (gnat_to_gnu_entity) <E_Record_Type>: If the type has
1520 strict alignment, no alignment clause and a known static size, cap
1521 the type alignment to the greatest power of 2 factor of the size.
1522 (gnat_to_gnu_field): If the field has a component clause, is aliased
1523 or of a type with strict alignment, require that its size be equal to
1525 (validate_size): Use the type size as the minimum size for a type with
1528 2007-11-23 Samuel Tardieu <sam@rfc1149.net>
1530 * s-inmaop-posix.adb, s-intman-vxworks.adb, s-taprop-hpux-dce.adb,
1531 s-taprop-irix.adb, s-taprop-linux.adb, s-taprop-lynxos.adb,
1532 s-taprop-posix.adb, s-taprop-tru64.adb, s-taprop-vxworks.adb:
1533 Use 'Access instead of 'Unchecked_Access in second and third
1534 arguments of pthread_sigmask.
1536 2007-11-23 Eric Botcazou <ebotcazou@adacore.com>
1538 * decl.c (ceil_alignment): New function.
1539 (gnat_to_gnu_entity): Use it to set the alignment on atomic types.
1540 (make_packable_type): Likewise.
1542 2007-11-22 Olivier Hainque <hainque@adacore.com>
1544 * trans.c (gnat_to_gnu) <case N_Free_Statement>: Reformat lines
1545 to fit in 80 columns.
1547 2007-11-21 Aurelien Jarno <aurelien@aurel32.net>
1549 * s-osinte-kfreebsd-gnu.ads (To_Target_Priority): New function.
1550 * Makefile.in: Add EH_MECHANISM=-gcc to kfreebsd-gnu. Remove SYMLIB.
1552 2007-11-19 Eric Botcazou <ebotcazou@adacore.com>
1555 * misc.c (gnat_adjust_rli): Delete.
1556 (gnat_init): Do not initialize the translation code here.
1557 Do not call set_lang_adjust_rli.
1558 * trans.c (init_code_table): Make static.
1559 (gnat_init_stmt_group): Delete.
1560 (gigi): Initialize the translation code entirely here.
1561 Emit debug info for the common types here instead of...
1562 * utils.c (gnat_init_decl_processing): ...here.
1563 * gigi.h (init_code_table): Delete.
1564 (gnat_init_stmt_group): Likewise.
1566 2007-11-16 Olivier Hainque <hainque@adacore.com>
1568 * utils2.c (build_call_alloc_dealloc) <if gnu_obj>: Move the code
1569 retrieving an allocator return value from a super-aligned address from
1571 * trans.c (gnat_to_gnu) <case N_Free_Statement>: ... here, and don't
1572 expect a super-aligned address for a fat or thin pointer.
1574 2007-11-14 Eric Botcazou <ebotcazou@adacore.com>
1576 * trans.c (call_to_gnu): Always set the source location on the call
1577 expression. If the function returns-by-target, also set it on the
1580 2007-11-14 Samuel Tardieu <sam@rfc1149.net>
1582 * adaint.c, init.c, initialize.c, link.c: Remove system-specific
1583 sections of non-supported Interix target.
1585 * s-osinte-interix.ads: Removed.
1587 * i-cstrin.ads (chars_ptr): Make it a C convention type.
1589 2007-11-13 Samuel Tardieu <sam@rfc1149.net>
1591 * a-tasatt.adb: Add a comment at the beginning of the package
1592 explaining why in general 'Unchecked_Access must be used instead
1595 * sem_prag.adb (Process_Convention): Move the test for the
1596 entity on which the Convention pragma applies down to also
1597 forbid pragma Convention on enumeration literals reached
1600 2007-11-10 Samuel Tardieu <sam@rfc1149.net>
1602 * a-tasatt.adb: Revert previous change for this file as it will
1603 generate an error when this package is instantiated from a
1606 2007-11-07 Samuel Tardieu <sam@rfc1149.net>
1608 * a-tasatt.adb: Type Wrapper should be declared in comment instead
1609 of already declared type Node_Access.
1610 Use 'Access instead of 'Unchecked_Access when applicable. Local
1611 lifetime is the one of the package.
1612 (Set_Value): W is allocated on the heap.
1614 * g-socket.adb: Use 'Access instead of 'Unchecked_Access when
1616 (Get_Socket_Option): Optlen formal of C_Getsockopt is of an anonymous
1618 (Receive_Socket): Fromlen formal of C_Recvfrom is of an anonymous
1621 * s-taasde.adb: Use 'Access instead of 'Unchecked_Access when
1623 (elaboration code): Timer_Queue lifetime is the one of the
1626 * tracebak.c (i386 alternative): Remove useless comparaison
1627 which is always false; LOWEST_ADDRESS is 0 and is never greater
1628 than an unsigned integer.
1630 * sem_attr.adb (Analyze_Attribute): Remove duplicate identical
1631 embedded check for "Ada_Version >= Ada_05".
1633 2007-11-07 Olivier Hainque <hainque@adacore.com>
1635 * decl.c (make_aligning_type): Set the mode of the RECORD_TYPE we
1636 craft and expand comment.
1638 2007-11-01 Eric Botcazou <ebotcazou@adacore.com>
1640 * lang-specs.h: Move translation of -fRTS= after -gnatez switch.
1642 2007-10-23 Eric Botcazou <ebotcazou@adacore.com>
1644 * misc.c (gnat_handle_option): Replace call to abort with
1645 call to gcc_unreachable.
1646 (gnat_init): Likewise.
1647 (gnat_expand_expr): Likewise.
1648 (fp_prec_to_size): Likewise.
1649 (fp_size_to_prec): Likewise.
1651 2007-10-23 Richard Guenther <rguenther@suse.de>
1654 * tracebak.c: #undef abort after including system.h.
1656 2007-10-20 Danny Smith <dannysmith@users.sourceforge.net>
1658 * Makefile.in (LIBGNAT_TARGET_PAIRS) Add s-tasinf-mingw.adb,
1659 s-tasinf-mingw.ads, a-exetim-mingw.adb, a-exetim-mingw.ads
1661 (EXTRA_GNATRTL_TASKING_OBJS): Add a-exetim.o for win32 targets.
1663 2007-10-15 Eric Botcazou <ebotcazou@adacore.com>
1665 * s-osinte-tru64.adb: (Hide_Yellow_Zone): Add On parameter.
1666 Set the protection status of the guard page based on the value of On.
1668 * s-osinte-tru64.ads: (Hide_Yellow_Zone): Add On parameter.
1670 * s-taprop-tru64.adb: (Enter_Task): Pass True to Hide_Yellow_Zone.
1671 (Exit_Task): Pass False to Hide_Yellow_Zone.
1673 2007-10-15 Robert Dewar <dewar@adacore.com>
1675 * s-taprop-solaris.adb, s-taprop-vms.adb, s-taprop-mingw.adb,
1676 s-taprop-vxworks.adb, s-taprop-posix.adb, a-calend-vms.adb,
1677 a-calend.adb, a-nuflra.adb, a-tigeau.adb, a-wtgeau.adb,
1678 checks.adb, bindgen.adb, eval_fat.adb, exp_fixd.adb, fmap.adb,
1679 freeze.adb, g-awk.adb, g-calend.adb, g-diopit.adb, g-expect.adb,
1680 gnatchop.adb, gnatlink.adb, g-spipat.adb, g-thread.adb, make.adb,
1681 mdll.adb, mlib.adb, mlib-prj.adb, osint.adb, par-ch3.adb, prj.adb,
1682 prj-makr.adb, sem_prag.adb, sem_type.adb, s-fatgen.adb, s-fileio.adb,
1683 sinfo.ads, sinput-d.adb, s-taasde.adb, s-tasdeb.ads, s-tasren.adb,
1684 s-tassta.adb, s-tpobop.adb, s-tposen.adb, stylesw.adb, types.ads,
1685 uintp.adb, validsw.adb, makegpr.adb, a-rbtgso.adb, a-crbtgo.adb,
1686 a-coorse.adb, a-convec.adb, a-coinve.adb, a-cohama.adb, a-ciorse.adb,
1687 a-cihama.adb, a-cidlli.adb, a-chtgop.adb, a-cdlili.adb, a-cdlili.adb,
1688 a-coormu.adb, a-ciormu.adb, a-cihase.adb, a-cohase.adb, a-ciorma.adb,
1689 a-coorma.adb, a-ztgeau.adb, symbols-vms.adb, a-crdlli.adb,
1690 a-calari.adb, a-calfor.adb, s-os_lib.adb, s-regpat.adb, a-ngrear.adb:
1692 Add Unreferenced and Warnings (Off) pragmas for cases of
1693 variables modified calls where they are IN OUT or OUT parameters and
1694 the resulting values are not subsequently referenced. In a few cases,
1695 we also remove redundant code found by the new warnings.
1697 * ug_words, vms_data.ads, usage.adb, sem_util.adb, sem_util.ads,
1698 sem_warn.adb, sem_warn.ads, sem_res.adb, sem_ch7.adb, sem_ch8.adb,
1699 sem_ch5.adb, opt.ads, lib-xref.adb, lib-xref.ads, exp_smem.adb,
1700 sem_ch11.adb, exp_ch6.adb, einfo.ads, einfo.adb: implement a new
1701 warning controlled by -gnatw.o that warns on cases of out parameter
1702 values being ignored.
1704 2007-10-15 Geert Bosch <bosch@adacore.com>
1706 * adaint.c, socket.c, cal.c: Initial port to arm-mentor-nucleus.
1708 * expect.c: Initial port to arm-mentor-nucleus.
1709 Use kill for __gnat_kill() on VMS.
1711 2007-10-15 Emmanuel Briot <briot@adacore.com>
1713 * ali.ads, ali.adb (Scan_ALI): Initialize XE.Tref to a known default
1715 (Xref_Record): Change type for Line, since in the case of a reference to
1716 a predefined entity (as happens for array index types), the line is set
1718 Add support for parsing multiple array index types info, or
1719 multiple inherited interfaces info. This information cannot be stored
1720 in Xref_Entity_Record, which only supports a single instance of Tref_*,
1721 and is therefore stored in the list of references instead. It has a
1722 special treatement later on in tools that use this information.
1724 2007-10-15 Tristan Gingold <gingold@adacore.com>
1726 * debug.adb: Document use of -gnatd.a and -gnatd.I
1728 * layout.adb: On OpenVMS -gnatd.a disables alignment optimization.
1730 2007-10-15 Javier Miranda <miranda@adacore.com>
1732 * exp_attr.adb (Expand_N_Attribute_Reference): Case Access,
1733 Unchecked_Access, and Unrestricted_Access. Cleanup code that takes
1734 care of access to class-wide interface types plus removal of bizarre
1735 conversion of tagged object to access type (reported by Gary
1736 Dismukes). After this patch there is no need to perform any
1737 additional management on these nodes in Expand_Interface_Actuals.
1739 * exp_disp.adb (Expand_Interface_Actuals): Code cleanup. Remove code
1740 that handles use of 'Access and 'Unchecked_Access applied to
1741 actuals covering interface types. Such code is now
1742 centralized in Expand_N_Attribute_Reference.
1744 2007-10-15 Ed Schonberg <schonberg@adacore.com>
1746 * exp_ch3.adb (Build_Init_Procedure): Keep separate the initialization
1747 of tagged types whose ultimate ancestor is a CPP type.
1748 (Freeze_Array_Type): For a packed array type, generate an initialization
1749 procedure if the type is public, to handle properly a client that
1750 specifies Normalize_Scalars.
1752 2007-10-15 Hristian Kirtchev <kirtchev@adacore.com>
1754 * exp_ch9.adb (Actual_Index_Expression): When the expansion occurs
1755 inside a generic body, retrieve the full view of the entry family
1756 discrete subtype if available.
1758 2007-10-15 Thomas Quinot <quinot@adacore.com>
1760 * exp_dist.adb (Add_RACW_Primitive_Declarations_And_Bodies): Do not
1761 attempt to generate stubs for hidden primitive operations.
1763 2007-10-15 Vincent Celier <celier@adacore.com>
1765 * mlib-tgt-specific.adb (Support_For_Libraries): New function,
1766 returning None, used when there is no platform specific body for
1769 2007-10-15 Bob Duff <duff@adacore.com>
1771 * sem_case.adb, sem_ch13.adb, lib-sort.adb: Replace use of Heap_Sort_A
1772 (passing'Unrestricted_Access of nested subprograms to Sort) with use of
1773 the generic Heap_Sort_G, in order to avoid trampolines.
1775 2007-10-15 Vasiliy Fofanov <fofanov@adacore.com>
1776 Jose Ruiz <ruiz@adacore.com>
1778 * vx_stack_info.c: New file.
1780 * i-forbla-unimplemented.ads: New file.
1782 * Makefile.in: i-forbla-unimplemented.ads: a variant of i-forbla.ads
1783 for unsupported configurations; use it on VMS targets instead of the
1785 (EXTRA_LIBGNAT_SRCS,EXTRA_LIBGNAT_OBJS for VxWorks): Include
1786 vx_stack_info.{c,o} that contains the routine __gnat_get_stack_info
1787 used by VxWorks targets to have access to task-specific data and be
1788 able to extract the stack boundaries for stack checking.
1789 Use system-vms-ia64.ads on ivms.
1791 * Make-lang.in: Update dependencies.
1793 * sysdep.c (__gnat_get_stack_info): Move to a standalone file
1796 2007-10-15 Vincent Celier <celier@adacore.com>
1798 * snames.adb, snames.ads: Add new standard name runtime_library_dir
1800 * prj.ads (Language_Config): Add new component Runtime_Library_Dir
1802 * prj-attr.adb: Add project level attribute Runtime_Library_Dir
1804 * prj-env.adb (Create_Mapping_File): Do not put an entry if the path of
1805 the source is unknown.
1807 * prj-ext.adb: Spelling error fix
1809 * prj-nmsc.adb (Check_Ada_Name): Reject any unit that includes an Ada
1810 95 reserved word in its name.
1811 (Process_Project_Level_Array_Attributes): Process new attribute
1812 Runtime_Library_Dir.
1814 * prj-part.adb (Parse_Single_Project): Do not check the name of the
1815 config project against the user project names.
1817 * prj-proc.adb (Expression): In multi-language mode, indexes that do
1818 not include a dot are always case insensitive.
1819 (Process_Declarative_Items): Ditto
1820 (Process_Project_Tree_Phase_1): Set Success to False in case an error is
1823 * prj-util.adb (Value_Of (In_Array)): When Force_Lower_Case_Index is
1824 True, compare both indexes in lower case.
1826 2007-10-15 Robert Dewar <dewar@adacore.com>
1828 * rtsfind.adb: (Load_RTU): Turn off style checks for Load call
1830 2007-10-15 Gary Dismukes <dismukes@adacore.com>
1832 * sem_aggr.adb (Resolve_Record_Aggregate): In the case of a box
1833 association for an access component, add an association with null as
1834 the expression. Remove testing for array subtypes and the setting in
1835 that case of Ctyp to the array component type, which prevented proper
1836 inclusion of an association for null-initialized arrays. Collapse
1837 condition that tests for array subtypes into just a test of
1838 Is_Partially_Initialized_Type (which already covers arrays anyway).
1840 2007-10-15 Hristian Kirtchev <kirtchev@adacore.com>
1842 * sem_ch12.adb: Minor code reformatting.
1843 (Check_Generic_Child_Unit): Iterate over the homonym chain in order to
1844 find the parent package which may have been hidden by local
1847 2007-10-15 Gary Dismukes <dismukes@adacore.com>
1849 * sem_ch3.adb (Build_Derived_Concurrent_Type): Set the Is_Constrained
1850 flag of derived concurrent types, taking into account the flag setting
1851 on the parent subtype and any new set of discriminants.
1853 2007-10-15 Hristian Kirtchev <kirtchev@adacore.com>
1855 * sem_ch4.adb: Minor code and comment reformatting.
1856 (Analyze_Allocator): When the designated type of an unconstrained
1857 allocator is a record with unknown discriminants or an array with
1858 unknown range bounds, emit a detailed error message depending on the
1859 compilation mode and whether the designated type is limited.
1861 2007-10-15 Tristan Gingold <gingold@adacore.com>
1863 * system-vms-ia64.ads: New file.
1865 * system-vms_64.ads: Minor comment fix.
1867 2007-10-15 Ed Schonberg <schonberg@adacore.com>
1869 * sem_ch6.adb (Find_Corresponding_Spec): If the previous entity is a
1870 body generated for a function with a controlling result that is a null
1871 extension, discard the generated body in favor of the current explicit
1874 2007-10-15 Ed Schonberg <schonberg@adacore.com>
1876 * sem_disp.adb (Find_Controlling_Arg): Examine the call node before
1877 examining its original form, to handle properly operator calls that
1878 have been rewritten.
1880 2007-10-15 Olivier Hainque <hainque@adacore.com>
1882 * tb-alvms.c (tb_entry_t, __gnat_backtrace): Store a frame pointer
1883 instead of a procedure value in each traceback entry.
1885 * g-trasym-vms-alpha.adb (Symbolic_Traceback): Pass frame pointer
1886 instead of procedure value to TBK$SYMBOLIZE.
1888 * s-traent-vms.adb (PV_For): Rename as FP_For and access the proper
1890 (TB_Entry_For): Account for the PV/FP renaming.
1892 * s-traent-vms.ads (Traceback_Entry): Rename PV component into FP and
1894 (Null_TB_Entry): Account for change of component name.
1895 (PV_For): Rename as FP_For.
1897 2007-10-15 Tristan Gingold <gingold@adacore.com>
1899 * trans.c (gnat_to_gnu): Remove the padding structure more often.
1900 This optimize assignment to over-aligned record.
1902 2007-10-15 Emmanuel Briot <briot@adacore.com>
1904 * xref_lib.adb (Get_Full_Type): Add support for the 'h' entity type, ie
1907 * xr_tabls.adb (Add_Reference): Add support for the new 'R' reference
1908 type, for dispatching calls.
1910 2007-10-15 Vincent Celier <celier@adacore.com>
1911 Robert Dewar <dewar@adacore.com>
1913 * gnat_ugn.texi: Add documentation for switches --version and --help
1914 for the GNAT tools gnatbind, gnatlink, gnatmake, gnatchop, gnatname,
1915 gnatxref, gnatfind, gnatls, and gnatclean.
1917 Mention attribute Excluded_Source_Dirs
1918 Replace obsolescent attribute Locally_Removed_Files with attribute
1919 Excluded_Source_Files.
1920 Improve documentation of -u (gnatbind)
1921 Document how to do reliable stack checking for the environmental task
1924 * gnat_rm.texi: Rewrite section about No_Implicit_Dynamic_Code.
1925 Document attribute Excluded_Source_Files and indicate that attribute
1926 Locally_Removed_Files is obsolescent.
1928 2007-10-15 Thomas Quinot <quinot@adacore.com>
1930 * g-soccon-vms.ads: Fix value of MSG_WAITALL.
1933 Update documentation to note that OpenVMS 8.3 or later must be used
1934 to generate g-soccon-vms.ads.
1936 * atree.adb: Add ??? comment
1938 * exp_util.adb: Minor reformatting.
1939 Add ??? comment in Kill_Dead_Code.
1941 2007-10-15 Robert Dewar <dewar@adacore.com>
1943 * errout.ads: Comment clarification
1945 * exp_ch4.adb (Expand_N_Allocator): Code cleanup.
1946 (Expand_N_Op_Eq): Improve handling of array equality with -gnatVa
1948 * lib.ads: Comment update
1950 * init.c: Minor reformatting.
1952 * sem_attr.adb: Minor formatting
1954 * osint-b.ads: Minor reformatting
1956 * sem_ch9.adb: Implement -gnatd.I switch
1958 * g-comlin.adb: (Start): Fix handling of empty command line.
1960 * gnatcmd.adb (GNATCmd): Do not put the -rules in the -cargs section,
1961 even when -rules follows the -cargs section.
1963 2007-10-08 Ollie Wild <aaw@google.com>
1965 * misc.c (LANG_HOOKS_PUSHDECL): Replaced lhd_return_tree with
1967 (gnat_init_gcc_eh): Replaced gnat_eh_runtime_type with
1969 (gnat_eh_runtime_type): Removed.
1970 (gnat_return_tree): New function.
1972 2007-10-08 Ben Elliston <bje@au.ibm.com>
1976 2007-08-31 Ben Elliston <bje@au.ibm.com>
1978 * Makefile.in (LIBGNAT_TARGET_PAIRS): Use system-linux-ppc64.ads
1979 when compiling for powerpc64-*-linux.
1980 * system-linux-ppc64.ads: New file.
1982 2007-09-27 Eric Botcazou <ebotcazou@adacore.com>
1984 Mapped location support
1985 * back_end.adb (Call_Back_End): Pass information about source
1986 files instead of units to gigi.
1987 * gigi.h (struct File_Info_Type): New.
1988 (gigi): Rename and change type of number_units parameter, change
1989 type of file_info_ptr parameter.
1990 * trans.c (number_files): New global variable.
1991 (gigi): Rename and change type of number_units parameter, change
1992 type of file_info_ptr parameter.
1993 If mapped location support is enabled, create the isomorphic mapping
1994 between source files and line maps.
1995 (Sloc_to_locus): If mapped location support is enabled, translate
1996 source location into mapped location.
1997 (annotate_with_node): Rename into set_expr_location_from_node.
1998 Call set_expr_location instead of annotate_with_locus.
1999 (Pragma_to_gnu): Adjust for above change.
2000 (Loop_Statement_to_gnu): Likewise.
2001 (call_to_gnu): Likewise.
2002 (Handled_Sequence_Of_Statements_to_gnu): Likewise.
2003 (gnat_to_gnu): Likewise.
2004 (add_stmt_with_node): Likewise.
2005 (add_cleanup): Likewise.
2006 * utils.c (gnat_init_decl_processing): Do not set input_line.
2008 2007-09-26 Hristian Kirtchev <kirtchev@adacore.com>
2010 * sem_ch8.adb (Analyze_Use_Type): Code cleanup.
2011 (Applicable_Use): Emit a warning when a package tries to use itself.
2012 (Use_One_Type): Add variable Is_Known_Used. Emit a warning when a type
2013 is already in use or the package where it is declared is in use or is
2014 declared in the current package.
2015 (Spec_Reloaded_For_Body): New subsidiary routine for Use_One_Type.
2017 * a-tasatt.adb, s-osprim-vxworks.adb, g-socthi-mingw.adb,
2018 s-intman-vms.adb, g-socket.adb, g-thread.adb, s-tarest.adb,
2019 s-tassta.adb, s-tporft.adb: Remove redundant 'use type' clause.
2021 2007-09-26 Hristian Kirtchev <kirtchev@adacore.com>
2023 * a-calend-vms.adb, a-calend.adb:
2024 Add a section on leap seconds control along with two entities used to
2025 enable and disable leap seconds support. The array Leap_Second_Times is
2026 now constant and contains hard time values pre-generated. Remove
2027 all elaboration code used to populate the table of leap seconds.
2030 Add entity Leap_Seconds_Support to the list of global run-time variables
2031 along with a comment on its usage and values.
2032 (Gen_Adainit_Ada): Add code to generate the declaration and import of
2033 Integer variable Leap_Seconds_Support. Set its value to zero (disabled)
2034 or one (enabled) depending on the presence of binder switch "-y".
2035 (Gen_Adainit_C): Add code to generate the declaration of external int
2036 __gl_leap_seconds_support. Set is value to zero (disabled) or one
2037 (enabled) depending on the presence of binder switch "-y".
2039 * init.c: Add __gl_leap_seconds_support to the list of global values
2040 computed by the binder.
2042 2007-09-26 Jerome Guitton <guitton@adacore.com>
2044 * s-taprop-lynxos.adb, s-taprop-tru64.adb, s-taprop-irix.adb,
2045 s-taprop-hpux-dce.adb, s-taprop-linux.adb, s-taprop-dummy.adb,
2046 s-taprop-solaris.adb, s-taprop-vms.adb, s-taprop-mingw.adb,
2047 s-taprop-posix.adb (Stop_Task): New function, dummy implementation.
2049 * s-taprop.ads, s-taprop-vxworks.adb (Stop_Task): New function.
2051 * s-tasdeb.adb (Stop_All_Tasks): New function, implementing a run-time
2052 function which can be called by the debugger to interrupt the tasks of
2053 an Ada application asynchronously, as needed on VxWorks.
2054 (Stop_All_Tasks_Handler): Renamed from Stop_All_Tasks.
2056 * s-tasdeb.ads (Stop_All_Tasks_Handler): New function declaration,
2057 renamed from Stop_All_Tasks. Update comments.
2058 (Stop_All_tasks): New function declaration.
2060 2007-09-26 Olivier Hainque <hainque@adacore.com>
2062 * adaint.c (if defined (__Lynx__)): Wrap #def/#undef VMOS_DEV around
2063 #include <utime.h> and #define GCC_RESOURCE_H before
2064 #include <sys/wait.h>.
2065 Add more protections in __gnat_translate_vms.
2067 * expect.c (if defined (__Lynx__)): #define GCC_RESOURCE_H before
2068 #include <sys/wait.h>.
2070 2007-09-26 Thomas Quinot <quinot@adacore.com>
2071 Sergey Rybin <rybin@adacore.com>
2073 * gnatvsn.ads (PCS_Version_Number, ASIS_Version_Number): Removed.
2075 * exp_dist.ads (PCS_Version_Number): Move from Gnatvsn to Exp_Dist,
2078 * opt.ads: Move ASIS_Version_Number from Gnatvsn into Tree_IO.
2080 * rtsfind.adb (PCS_Version_Number): Move from Gnatvsn to Exp_Dist,
2083 * sem_dist.ads: Minor comment fix
2085 * tree_io.ads: Move ASIS_Version_Number from Gnatvsn into Tree_IO.
2087 2007-09-26 Javier Miranda <miranda@adacore.com>
2088 Eric Botcazou <ebotcazou@adacore.com>
2091 (Get_HT_Link/Set_HT_Link): Updated to handle the additional level of
2092 indirection added to the HT_Link component of the TSD. This is required
2093 to statically allocate the TSD.
2096 Minor reordering of the declarations in the private part. Required to
2097 add a level of indirection to the contents of the TSD component HT_Link.
2098 This is required to statically allocate the TSD.
2100 * decl.c (gnat_to_gnu_entity) <object>: Do not exclude objects with
2101 Is_Statically_Allocated set from constant objects.
2102 Do not make exported constants created by the compiler volatile.
2103 (gnat_to_gnu_param): Do not treat an IN parameter whose address is taken
2106 * trans.c (Identifier_to_gnu): For constants, unshare initializers
2107 before returning them.
2109 * exp_disp.ads, exp_disp.adb (Building_Static_DT): Spec moved to the
2110 public part of the package.
2111 (Make_DT): Move HT_Link component out of the TSD record. For this
2112 purpose Make_DT now declares a separate object that stores the
2113 HT_Link value, and initializes the TSD component with the address
2114 of this new object. The addition of this level of indirection is
2115 required to statically allocate the TSD because the TSD cannot
2116 have variable components.
2117 (Expand_Interface_Conversion): Improve the expanded code.
2118 (Expand_Interface_Thunk): Set Is_Thunk in the thunk entity.
2120 * sem_disp.adb (Check_Dispatching_Operation): In case of a body
2121 declaring a primitive operation ---allowed by RM 3.9.2 (13.e/2)---,
2122 if we are building static dispatch tables then we must not generate
2123 extra code to register the primitive because the dispatch table will
2124 be built at the end of the library package; otherwise we notify that
2125 we cannot build the static dispatch table.
2127 2007-09-26 Robert Dewar <dewar@adacore.com>
2129 * checks.adb, gnat1drv.adb, sem_util.ads: Improve warnings for address
2132 * sem_ch13.ads, sem_ch13.adb: Improve warnings for address overlays
2133 (Analyze_Record_Representation_Clause): Suppress junk warning for
2134 missing component clause.
2135 (Analyze_Attribute_Definition_Clause, case Address): Apply the special
2136 tests for controlled type overlay to composites with controlled
2138 (Analyze_Record_Representation_Clause): Add reference for component name
2140 2007-09-26 Javier Miranda <miranda@adacore.com>
2141 Gary Dismukes <dismukes@adacore.com>
2143 * einfo.adb (Is_Thunk): New attribute applicable to subprograms. True
2144 for thunks associated with interface types.
2146 * einfo.ads: Improve documentatation of Is_Internal
2147 (Is_Thunk): New attribute applicable to subprograms. True for thunks
2148 associated with interface types.
2149 Extensive comment fixes regarding flags that appear in all entities. The
2150 documentation is now consistent for all such flags (there were a number
2151 of errors in the documentation in this regard).
2153 * exp_attr.adb (Expand_N_Attribute_Reference): Minor code cleanup.
2155 * exp_ch6.adb (Make_Build_In_Place_Call_*): Return immediately if any
2156 of these procedures are passed a function call that already has
2157 build-in-place actuals (testing new flag
2158 Is_Expanded_Build_In_Place_Call). Set the flag on the function call in
2159 the case where processing continues.
2160 (Expand_Call): If the call is generated from a thunk body then we
2161 propagate the extra actuals associated with the accessibility
2162 level of the access type actuals.
2164 * sem_ch6.adb (Analyze_Subprogram_Body): Set the Protected_Formal field
2165 of each extra formal of a protected operation to reference the
2166 corresponding extra formal of the subprogram denoted by the
2167 operation's Protected_Body_Subprogram.
2169 * sinfo.ads, sinfo.adb (Is_Expanded_Build_In_Place_Call): New flag on
2170 N_Function_Call nodes.
2172 2007-09-26 Robert Dewar <dewar@adacore.com>
2174 * exp_ch5.adb: Activate memmove type processing if debug flag d.s is set
2176 * debug.adb: Add d.s flag.
2178 2007-09-26 Gary Dismukes <dismukes@adacore.com>
2180 * exp_dbug.adb (Debug_Renaming_Declaration): Set Is_Internal on the
2181 debug variable so that it won't be initialized when pragma
2182 Initialize_Scalars is in effect.
2184 2007-09-26 Gary Dismukes <dismukes@adacore.com>
2186 * freeze.adb (Freeze_Entity): Remove check for preelaborable
2187 initialization of a full view. This is moved to
2188 Analyze_Package_Specification.
2190 * sem_ch7.adb (Analyze_Package_Specification): Add check for
2191 preelaborable initialization of a full view in entity loop.
2192 (Uninstall_Declarations): If entity is a use-visible compilation unit,
2193 its child units are use-visible only if they are visible child units.
2195 * sem_util.adb (Is_Preelaborable_Expression): New function to determine
2196 whether an expression can be used within a type declaration that
2197 requires preelaborable init.
2198 (Check_Components): Replace inline code that does partial checking for
2199 preelaborable default expressions with call to
2200 Is_Preelaborable_Expression.
2201 (Has_Preelaborable_Initialization): In the case of a generic actual
2202 subtype, (that is, Is_Generic_Actual is True), return the result of
2203 applying Has_Preelaborable_Initialization to the generic actual's base
2206 2007-09-26 Hristian Kirtchev <kirtchev@adacore.com>
2208 * g-calend.adb (Has_53_Weeks): Rename to Last_Year_Has_53_Weeks. Add a
2209 call to Jan_1_Day _Of_Week to optimize its performance.
2210 (Is_Leap): Move the routine to the scope of Week_In_Year.
2211 (Jan_1_Day_Of_Week): New routine in Week_In_Year which calculates the
2212 weekday on which January 1 falls of Year - 1 and Year + 1. This function
2213 avoids calling Time_Of and Split, thus making it more efficent.
2214 (Week_In_Year): Reimplemented in oder to follow ISO 8601.
2216 * g-calend.ads (Week_In_Year): Change comment to reflect new
2219 2007-09-26 Emmanuel Briot <briot@adacore.com>
2221 * g-comlin.ads, g-comlin.adb (Command_Line_Configuration,
2222 Command_Line): New types
2223 (Define_Alias, Define_Prefix, Free): New subprograms. These provide
2224 support for defining how switches can be grouped on a command line (as
2225 is the case for -gnatw... for GNAT), and how simple switches can be
2226 used as aliases for more complex switches (-gnatwa is same as
2228 (Set_Command_Line, Add_Switch, Remove_Switch): New subprogram
2229 (Start, Current_*): New subprograms
2230 Added support for parsing an array of strings in addition to the real
2232 (Opt_Parser, Opt_Parser_Data): New type. As a result, some types had to
2233 be moved from the body to the private part of the spec.
2234 (*): All subprograms now have an extra parameter with default value to
2235 specify which parser should be used. For backward compatibility, it
2236 defaults to parsing the command line of the application. They were also
2237 modified to properly handle cases where each of the argument does not
2238 start at index 1 (which is always true for Ada.Command_Line, but not
2239 when processing any Argument_List).
2240 (Free): New subprogram
2241 (Internal_Initialize_Option_Scan, Find_Longuest_Matching_Switch,
2242 Argument): New subprograms
2243 (Switch_Parameter_Type): New enum, which clarifies the code. The extra
2244 special characters like ':', '=',... are now handled in a single place,
2245 which makes the code more extensible eventually.
2246 (Getopt, Full_Switch): When the switch was returned as part of the
2247 special character '*', make sure it is prepended by the switch character
2248 ('-' in general), so that the application knows whether "foo" or "-foo"
2249 was specified on the command line.
2251 2007-09-26 Florian Villoing <villoing@adacore.com>
2253 * g-dirope.adb (Remove_Dir): In case we are removing directories
2254 recursively, make sure that if an exception is raised during the
2255 processing, the current working directory is reset to its initial
2256 value before propagating the exception.
2258 2007-09-26 Vincent Celier <celier@adacore.com>
2260 * gnatbind.adb: If there are several ALI files specified and there is
2261 a main program to bind, the first ALI is expected to contain the main
2262 subprogram and the names of the binder generated files will be derived
2263 from the first ALI file name.
2264 (Gnatbind): Fix insertion character in invocation of Error_Msg
2266 2007-09-26 Vincent Celier <celier@adacore.com>
2268 * gnatcmd.adb (Check_Files): Do not include sources that have been
2269 removed by attributes Exclude_Source_Files or Locally_Removed_Files.
2271 2007-09-26 Ed Schonberg <schonberg@adacore.com>
2273 * lib-xref.ads, lib-xref.adb: The entry for array types now carries
2274 information about each of its index types, following the type
2275 reference for its component type.
2277 2007-09-26 Vincent Celier <celier@adacore.com>
2279 * make.adb: (Kill): New procedure (__gnat_kill imported)
2280 (Running_Compile, Outstanding_Compiles): Global variables that
2281 were previously local to procedure Compile_Sources.
2282 (Sigint_Intercepted): Send signal SIGINT to all outstanding
2283 compilation processes.
2285 (Gnatmake): If project files are used, create the mapping of all the
2286 sources, so that the correct paths will be found.
2288 * prj-env.ads, prj-env.adb (Create_Mapping): New procedure
2290 2007-09-26 Vincent Celier <celier@adacore.com>
2292 * makeutl.ads (Main_Config_Project): Moved to gpr_util.ads
2294 * prj.ads, prj.adb (Default_Language): Remove function, no longer used
2295 Replace components Compiler_Min_Options and Binder_Min_Options with
2296 Compiler_Required_Switches and Binder_Required_Switches in record
2298 Remove components Default_Language and Config in Project_Tree_Data,
2301 * prj-attr.adb: New attributes Required_Switches (<language>) in
2302 packages Compiler and Binder.
2304 * prj-nmsc.adb: Major rewrite of the processing of configuration
2305 attributes for gprbuild. No impact on GNAT tools.
2307 * prj-proc.ads, prj-proc.adb (Process_Project_Tree_Phase_2): No longer
2308 process configuration attributes: this is done in Prj.Nmsc.Check.
2309 (Recursive_Process): Make a full copy of packages inherited from project
2310 being extended, instead of a shallow copy.
2311 (Process_Project_Tree_Phase_1): New procedure
2312 (Process_Project_Tree_Phase_1): New procedure
2313 (Process): Implementation now uses the two new procedures
2315 * prj-util.adb (Executable_Of): Get the suffix and the default suffix
2316 from the project config, not the tree config that no longer exists.
2318 2007-09-26 Vincent Celier <celier@adacore.com>
2320 * Make-lang.in: Update dependencies..
2322 2007-09-26 Vincent Celier <celier@adacore.com>
2324 * osint.adb, osint.ads: Minor reformatting
2326 * osint-b.adb, osint-b.ads (Set_Current_File_Name_Index): New procedure
2328 2007-09-26 Gary Dismukes <dismukes@adacore.com>
2330 * par-ch4.adb (P_Record_Or_Array_Component_Association): Change Ada 95
2331 message to cite use of <> in aggregate component associations rather
2332 than wrongly indicating use of limited aggregates.
2334 2007-09-26 Robert Dewar <dewar@adacore.com>
2336 * sem_attr.adb (Analyze_Access_Attribute): Fix missing set of
2339 2007-09-26 Ed Schonberg <schonberg@adacore.com>
2341 * sem_ch3.adb (Derive_Subprograms): If the interface parent is a direct
2342 ancestor of the derived type, the operations are inherited from the
2343 primary dispatch table of the parent.
2344 (OK_For_Limited_Init_In_05): Remove old comment. Reject in-place calls
2345 when the context is an explicit type conversion.
2347 2007-09-26 Ed Schonberg <schonberg@adacore.com>
2349 * sem_ch4.adb (Analyze_Qualified_Expression): Apply name resolution
2350 rule for qualified expressions properly, to detect improper conversions
2351 and resolve some cases of overloading.
2353 2007-09-26 Ed Schonberg <schonberg@adacore.com>
2355 * sem_res.adb (Resolve_Call): If the call is dispatching, generate the
2356 proper kind of reference to the primitive operation, for better source
2358 (Valid_Conversion): A tagged conversion is legal if both operands are
2361 2007-09-26 Robert Dewar <dewar@adacore.com>
2363 * sem_warn.adb (Check_References): Catch more cases of unreferenced
2366 2007-09-26 Vincent Celier <celier@adacore.com>
2368 * snames.adb, snames.ads: Change Include_Option to Include_Switches
2370 2007-09-26 Robert Dewar <dewar@adacore.com>
2372 * s-wchstw.adb: provide messages for run time unit exceptions
2374 * a-witeio.adb: Minor reformatting
2376 * exp_ch13.adb: Minor reformatting
2378 2007-09-26 Sergey Rybin <rybin@adacore.com>
2380 * vms_data.ads: Revise gnatmetric qualifiers.
2381 Add qualified for the new gnatbind option '-y'
2383 * gnat_ugn.texi: Revise the gnatmetric section.
2384 Add entry for new gnatbind option '-y'.
2386 * gnat_rm.texi: Minor spelling correction.
2387 Document restriction on overlaying controlled types
2389 2007-09-26 Vincent Celier <celier@adacore.com>
2391 * makegpr.adb (Link_Executables): Do not fail when the root project has
2392 no sources, but is an extending project.
2394 2007-09-25 Eric Botcazou <ebotcazou@adacore.com>
2396 * trans.c: Fix misplaced #define.
2398 2007-09-22 Eric Botcazou <ebotcazou@adacore.com>
2400 * utils2.c (build_unary_op) <ADDR_EXPR> [INDIRECT_REF]: Propagate
2401 the TYPE_REF_CAN_ALIAS_ALL flag to the result.
2403 2007-09-21 Olivier Hainque <hainque@adacore.com>
2405 * utils.c (type_for_nonaliased_component_p): Return false for
2406 all AGGREGATE_TYPEs.
2408 2007-09-17 Eric Botcazou <ebotcazou@adacore.com>
2410 * decl.c (gnat_to_gnu_entity) <object>: Make again the type of an
2411 object covered by 13.3(19) volatile.
2413 2007-09-12 Eric Botcazou <ebotcazou@adacore.com>
2417 * utils.c (unchecked_convert): Use a subtype as the intermediate type
2418 in the special VIEW_CONVERT_EXPR case.
2420 2007-09-12 Robert Dewar <dewar@adacore.com>
2422 * types.ads, a-charac.ads, freeze.adb: Minor reformatting.
2424 * a-except.adb, g-hesora.adb, g-speche.adb, lib.adb, lib.ads,
2425 lib-load.adb, lib-writ.adb, s-assert.adb, s-carun8.adb,
2426 s-casuti.adb, s-crc32.adb, s-exctab.adb, s-htable.adb, s-imgenu.adb,
2427 s-mastop.adb, s-memory.adb, s-memory.ads, s-secsta.adb, s-soflin.adb,
2428 s-sopco3.adb, s-sopco4.adb, s-sopco5.adb, s-stache.adb, s-stalib.adb,
2429 s-stoele.adb, s-strcom.adb, s-strops.adb, s-traceb.adb, s-traent.adb,
2430 s-wchcnv.adb, s-wchcon.adb, s-wchjis.adb, s-addope.adb, s-except.adb,
2431 s-os_lib.adb, s-string.adb, s-utf_32.adb, a-elchha.adb,
2432 a-chlat1.ads, a-elchha.ads, a-except.ads, g-hesora.ads, g-htable.ads,
2433 g-speche.ads, par-prag.adb, restrict.adb, restrict.ads, s-assert.ads,
2434 s-carun8.ads, s-casuti.ads, s-crc32.ads, sem_ch11.adb, sem_prag.adb,
2435 s-exctab.ads, s-htable.ads, s-imgenu.ads, s-mastop.ads, snames.adb,
2436 snames.ads, snames.h, s-purexc.ads, s-secsta.ads, s-soflin.ads,
2437 s-sopco3.ads, s-sopco4.ads, s-sopco5.ads, s-stache.ads, s-stalib.ads,
2438 s-stoele.ads, s-strcom.ads, s-strops.ads, s-traceb.ads, s-traent.ads,
2439 s-unstyp.ads, s-wchcnv.ads, s-wchcon.ads, s-wchjis.ads, s-addope.ads,
2440 s-except.ads, s-os_lib.ads, s-string.ads, s-utf_32.ads: Implement
2441 pragma Compiler_Unit and adds it to relevant library units.
2443 2007-09-12 Ed Schonberg <schonberg@adacore.com>
2445 * sem_aggr.adb (Resolve_Record_Aggregate): An others association with
2446 a box need not correspond to any component.
2448 2007-09-12 Robert Dewar <dewar@adacore.com>
2450 * g-thread.ads: Document use of "with GNAT.Threads" to ensure loading
2451 the tasking version of the Ada run time when foreign threads are
2452 present and there are no explicit Ada tasks or tasking constructs.
2454 * gnat_rm.texi: Clarify documentation of GNAT.Threads.
2456 2007-09-12 Hristian Kirtchev <kirtchev@adacore.com>
2458 * bindusg.adb (Display): Correct comment for switch -X. Add a line for
2459 the usage of switch -y.
2461 * switch-b.adb (Scan_Binder_Switches): Set flag Leap_Seconds_Support
2462 when switch -y is present.
2464 * opt.ads: Add binder flag Leap_Seconds_Support used to enable/disable
2465 leap seconds in Ada.Calendar and its children.
2467 2007-09-12 Jose Ruiz <ruiz@adacore.com>
2469 * a-extiti.ads (Timer): The discriminant is a "not null access
2470 constant" in the Reference Manual.
2471 (Cancel_Handler): Cancelled is an out parameter in the Reference Manual.
2473 2007-09-12 Robert Dewar <dewar@adacore.com>
2475 * a-swuwha.adb: Remove junk RM header
2477 2007-09-12 Vincent Celier <celier@adacore.com>
2479 * g-bytswa-x86.adb (Swap2, Swap4, Swap8): Remove explicit "in" mode
2482 * g-bytswa.ads: Minor reformatting
2484 2007-09-12 Thomas Quinot <quinot@adacore.com>
2486 * g-soccon-solaris-64.ads, g-soccon-hpux-ia64.ads:
2487 Add new constant Thread_Blocking_IO, always True by default, set False
2488 on a per-runtime basis.
2489 (Need_Netdb_Buffer): New constant.
2491 2007-09-12 Arnaud Charlet <charlet@adacore.com>
2493 * s-dsaser.ads (Get_Local_Partition_Id, Get_Passive_Partition_Id):
2494 Added renames for corresponding functions in System.Partition_Interface.
2496 2007-09-12 Doug Rupp <rupp@adacore.com>
2498 * Makefile.in: Remove VMS specific System.CRTL packages which are no
2501 * s-crtl-vms64.ads: Removed.
2503 2007-09-12 Olivier Hainque <hainque@adacore.com>
2505 * decl.c (gnat_to_gnu_entity) <E_Record_Subtype>: For a subtype
2506 with discriminant constraints, generalize the code for BIT_FIELDs
2507 to PACKED fields of constant size and propagate DECL_PACKED.
2509 2007-09-11 Eric Botcazou <ebotcazou@adacore.com>
2511 * decl.c (array_type_has_nonaliased_component): New predicate.
2512 (gnat_to_gnu_field) <E_Array_Type>: Invoke the above predicate to
2513 set the TYPE_NONALIASED_COMPONENT flag on the type.
2514 <E_Array_Subtype>: Likewise.
2515 * gigi.h (type_for_nonaliased_component_p): Declare.
2516 * utils.c (type_for_nonaliased_component_p): New predicate.
2517 (create_field_decl): Invoke the above predicate to set the
2518 DECL_NONADDRESSABLE_P flag on the field.
2520 2007-09-11 Javier Miranda <miranda@adacore.com>
2522 * einfo.ads, einfo.adb (Dispatch_Table_Wrapper): New attribute. Present
2523 in library level record type entities if we are generating statically
2524 allocated dispatch tables.
2526 * exp_disp.adb (Make_Tags/Make_DT): Replace previous code
2527 importing/exporting the _tag declaration by new code
2528 importing/exporting the dispatch table wrapper. This change allows us
2529 to statically allocate of the TSD.
2530 (Make_DT.Export_DT): New procedure.
2531 (Build_Static_DT): New function.
2532 (Has_DT): New function.
2534 * freeze.adb (Freeze_Static_Object): Code cleanup: Do not reset flags
2535 True_Constant and Current_Value. Required to statically
2536 allocate the dispatch tables.
2537 (Check_Allocator): Make function iterative instead of recursive.
2538 Also return inner allocator node, when present, so that we do not have
2539 to look for that node again in the caller.
2541 2007-09-11 Jan Hubicka <jh@suse.cz>
2543 * misc.c (gnat_expand_body): Kill.
2544 (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Kill.
2546 2007-09-10 Robert Dewar <dewar@adacore.com>
2548 * exp_atag.ads, exp_atag.adb, mlib-tgt-tru64.adb, mlib-tgt-aix.adb,
2549 mlib-tgt-irix.adb, mlib-tgt-hpux.adb, mlib-tgt-linux.adb,
2550 mlib-tgt-solaris.adb, mlib-tgt-vms-alpha.adb, mlib-tgt-vms-ia64.adb,
2551 mlib-tgt-mingw.adb, mlib-tgt-vxworks.adb, ali.adb, ali.ads,
2552 ali-util.adb, ali-util.ads, atree.h, back_end.adb, back_end.ads,
2553 bcheck.adb, bcheck.ads, binde.adb, binde.ads, binderr.adb, binderr.ads,
2554 bindgen.adb, bindgen.ads, bindusg.adb, bindusg.ads, butil.adb,
2555 butil.ads, checks.adb, checks.ads, clean.adb, clean.ads, comperr.adb,
2556 comperr.ads, cstand.adb, cstand.ads, debug_a.adb, debug_a.ads,
2557 elists.h, errout.adb, erroutc.ads, errutil.adb, errutil.ads,
2558 err_vars.ads, eval_fat.adb, eval_fat.ads, exp_sel.ads, exp_sel.adb,
2559 exp_aggr.adb, exp_aggr.ads, expander.adb, expander.ads, exp_attr.ads,
2560 exp_ch10.ads, exp_ch11.adb, exp_ch12.adb, exp_ch12.ads, exp_ch13.adb,
2561 exp_ch13.ads, exp_ch2.adb, exp_ch2.ads, exp_ch3.ads, exp_ch4.adb,
2562 exp_ch4.ads, exp_ch5.adb, exp_ch5.ads, exp_ch6.adb, exp_ch6.ads,
2563 exp_ch7.adb, exp_ch7.ads, exp_ch8.adb, exp_ch8.ads, exp_ch9.adb,
2564 exp_ch9.ads, exp_code.adb, exp_code.ads, exp_dbug.adb, exp_dbug.ads,
2565 exp_disp.ads, exp_dist.adb, exp_dist.ads, exp_fixd.adb, exp_fixd.ads,
2566 exp_imgv.adb, exp_imgv.ads, exp_intr.adb, exp_intr.ads, exp_pakd.adb,
2567 exp_pakd.ads, exp_prag.adb, exp_prag.ads, exp_smem.adb, exp_strm.adb,
2568 exp_strm.ads, exp_tss.adb, exp_tss.ads, exp_util.adb, exp_util.ads,
2569 exp_vfpt.adb, exp_vfpt.ads, fmap.adb, fmap.ads, fname-sf.adb,
2570 fname-sf.ads, fname-uf.adb, fname-uf.ads, frontend.adb, frontend.ads,
2571 get_targ.adb, get_targ.ads, gnat1drv.adb, gnat1drv.ads, gnatbind.adb,
2572 gnatbind.ads, gnatbl.c, gnatchop.adb, gnatclean.adb, gnatcmd.adb,
2573 gnatcmd.ads, gnatdll.adb, gnatfind.adb, gnatkr.adb, gnatkr.ads,
2574 gnatlbr.adb, gnatlink.adb, gnatlink.ads, gnatls.adb, gnatls.ads,
2575 gnatmake.adb, gnatmake.ads, gnatmem.adb, gnatname.adb, gnatname.ads,
2576 gnatprep.adb, gnatprep.ads, gnatsym.adb, gnatxref.adb,
2577 gprep.adb, gprep.ads, hlo.adb, hlo.ads, impunit.adb, impunit.ads,
2578 inline.adb, inline.ads, itypes.adb, itypes.ads, layout.adb, layout.ads,
2579 lib-load.adb, lib-load.ads, lib-util.adb, lib-util.ads, lib-writ.adb,
2580 lib-writ.ads, lib-xref.adb, lib-xref.ads, live.adb, live.ads,
2581 make.adb, make.ads, makeutl.ads, makeutl.adb, makeusg.adb, makeusg.ads,
2582 mdll.adb, mdll.ads, mdll-fil.adb, mdll-fil.ads, mdll-utl.adb,
2583 mdll-utl.ads, memroot.adb, memroot.ads, mlib.adb, mlib.ads,
2584 mlib-fil.adb, mlib-fil.ads, mlib-prj.adb, mlib-prj.ads, mlib-tgt.adb,
2585 mlib-tgt.ads, mlib-utl.adb, mlib-utl.ads, namet.h, nmake.adt,
2586 osint.adb, osint.ads, osint-b.adb, osint-b.ads, osint-c.adb,
2587 osint-c.ads, osint-l.adb, osint-l.ads, osint-m.adb, osint-m.ads,
2588 par.adb, par.ads, par-ch10.adb, par-ch11.adb, par-ch12.adb,
2589 par-ch13.adb, par-ch2.adb, par-ch3.adb, par-ch4.adb, par-ch5.adb,
2590 par-ch6.adb, par-ch7.adb, par-ch8.adb, par-ch9.adb, par-endh.adb,
2591 par-labl.adb, par-load.adb, par-prag.adb, par-sync.adb, par-tchk.adb,
2592 par-util.adb, prep.adb, prep.ads, prepcomp.adb, prepcomp.ads,
2593 prj.adb, prj.ads, prj-attr.adb, prj-attr.ads, prj-com.ads,
2594 prj-dect.adb, prj-dect.ads, prj-err.adb, prj-err.ads, prj-ext.adb,
2595 prj-ext.ads, prj-makr.adb, prj-makr.ads, prj-nmsc.adb, prj-nmsc.ads,
2596 prj-pars.adb, prj-pars.ads, prj-part.adb, prj-part.ads,
2597 prj-pp.adb, prj-pp.ads, prj-proc.adb, prj-proc.ads,
2598 prj-strt.adb, prj-strt.ads, prj-tree.adb, prj-tree.ads,
2599 prj-util.adb, prj-util.ads, restrict.adb, restrict.ads,
2600 rtsfind.adb, rtsfind.ads, scn.adb, scn.ads,
2601 scng.adb, scng.ads, sdefault.ads, sem.ads, sem_aggr.ads, sem_attr.adb,
2602 sem_case.adb, sem_case.ads, sem_cat.adb, sem_cat.ads, sem_ch10.adb,
2603 sem_ch10.ads, sem_ch11.adb, sem_ch11.ads, sem_ch12.ads, sem_ch13.adb,
2604 sem_ch13.ads, sem_ch2.adb, sem_ch2.ads, sem_ch3.adb, sem_ch3.ads,
2605 sem_ch4.ads, sem_ch5.adb, sem_ch5.ads, sem_ch6.adb, sem_ch6.ads,
2606 sem_ch7.adb, sem_ch7.ads, sem_ch8.adb, sem_ch8.ads, sem_ch9.adb,
2607 sem_ch9.ads, sem_disp.adb, sem_disp.ads, sem_dist.adb, sem_dist.ads,
2608 sem_elab.adb, sem_elab.ads, sem_elim.adb, sem_elim.ads, sem_eval.adb,
2609 sem_eval.ads, sem_intr.adb, sem_intr.ads, sem_maps.adb, sem_maps.ads,
2610 sem_mech.adb, sem_mech.ads, sem_prag.adb, sem_prag.ads, sem_res.adb,
2611 sem_res.ads, sem_smem.adb, sem_smem.ads, sem_type.adb, sem_type.ads,
2612 sem_util.adb, sem_util.ads, sem_vfpt.adb, sem_vfpt.ads, sem_warn.adb,
2613 sem_warn.ads, sfn_scan.ads, sinfo-cn.adb, sinfo-cn.ads, sinput-c.adb,
2614 sinput-c.ads, sinput-d.adb, sinput-d.ads, sinput-l.adb, sinput-l.ads,
2615 sinput-p.adb, sinput-p.ads, snames.h, sprint.adb, sprint.ads,
2616 stringt.h, style.ads, styleg.adb, styleg.ads, styleg-c.adb,
2617 styleg-c.ads, stylesw.adb, stylesw.ads, switch.adb, switch.ads,
2618 switch-b.adb, switch-b.ads, switch-c.adb, switch-c.ads, switch-m.adb,
2619 switch-m.ads, symbols.adb, symbols.ads, targparm.adb, tbuild.adb,
2620 tbuild.ads, tempdir.adb, tempdir.ads, tree_gen.adb, tree_gen.ads,
2621 treepr.adb, treepr.ads, treeprs.adt, ttypef.ads, ttypes.ads,
2622 types.h, uintp.h, urealp.h, usage.adb, usage.ads,
2623 validsw.adb, validsw.ads, vxaddr2line.adb, xeinfo.adb, xnmake.adb,
2624 xref_lib.adb, xref_lib.ads, xr_tabls.adb, xr_tabls.ads, xsinfo.adb,
2625 xtreeprs.adb, xsnames.adb, vms_conv.ads, vms_conv.adb, xgnatugn.adb,
2626 gprmake.adb, makegpr.ads, makegpr.adb, prj-attr-pm.ads, prj-attr-pm.adb,
2627 mlib-tgt-lynxos.adb, mlib-tgt-darwin.adb, symbols-vms.adb,
2628 symbols-processing-vms-alpha.adb, symbols-processing-vms-ia64.adb,
2629 mlib-tgt-specific.adb, mlib-tgt-specific.ads, mlib-tgt-vms.adb,
2630 mlib-tgt-vms.ads: Replace headers with GPL v3 headers.
2632 2007-09-10 Emmanuel Briot <briot@adacore.com>
2634 * s-regpat.adb (Parse_Character_Class): Fix handling of empty character
2637 2007-09-10 Vasiliy Fofanov <fofanov@adacore.com>
2639 * adaint.c (__gnat_translate_vms): new function.
2641 2007-09-10 Gary Dismukes <dismukes@adacore.com>
2642 Thomas Quinot <quinot@adacore.com>
2644 * exp_ch3.adb (Predef_Spec_Or_Body): When the type is abstract, only
2645 create an abstract subprogram in the case of 'Input. For 'Output we now
2646 create a real spec/body when the type is abstract, since it can
2647 potentially be called.
2648 (Predefined_Primitive_Bodies): Now allow the creation of a predefined
2649 body for 'Output when the type is abstract (only the creation of the
2650 body for 'Input is excluded when the type is abstract).
2651 (Stream_Operation_OK): Add an additional condition in the return
2652 statement, so that False will be returned for TTS_Stream_Input if the
2653 associated tagged type is an abstract extension. Add comments for
2655 (Expand_N_Object_Declaration): For the case of a shared passive
2656 variable, insert init proc call only after the shared variable
2657 procedures have been processed, because the IP call needs to undergo
2658 shared passive variable reference expansion, which requires these
2659 procedures to be available (and elaborated).
2661 2007-09-10 Vincent Celier <celier@adacore.com>
2663 * prj-env.ads, prj-env.adb (Create_Mapping_File (Language)): Remove
2664 parameter Runtime_Project.
2666 2007-09-10 Ed Schonberg <schonberg@adacore.com>
2668 * sem_aggr.adb (Build_Record_Aggr_Code): If an aggregate component is
2669 given a box association, the type of the component is discriminated,
2670 and the value of the discriminant is the discriminant of the enclosing
2671 type, retrieve its value from the aggregate itself, where it must have
2674 * sem_ch4.adb (Analyze_One_Call): Further refinement to previous fix,
2675 to remove other spurious ambiguities on arithmetic operations involving
2676 literals and addresses, on systems where Address is a visible integer
2677 type, when the operator is called in functional notation.
2678 (Try_Primitive_Operation): Within an instance, a call in prefixed form
2679 is legal when the types match, even if the operation is currently
2682 2007-09-10 Ed Schonberg <schonberg@adacore.com>
2684 * sem_ch12.adb (Build_Local_Package): A formal package with no
2685 associations is legal if all formals have defaults. It is not
2686 equivalent to a formal declared with a box.
2688 2007-09-10 Sergey Rybin <rybin@adacore.com>
2690 * vms_data.ads: Add qualifier for the new gnatmetric '-lratio' option
2692 2007-09-10 Sergey Rybin <rybin@adacore.com>
2694 * gnat_ugn.texi: Add description of the new '-lratio' option
2695 Update 7.3.1 section about availability of the feature.
2697 2007-09-10 Thomas Quinot <quinot@adacore.com>
2699 * exp_smem.ads, exp_smem.adb (Make_Shared_Var_Procs): Return last
2702 2007-09-10 Olivier Hainque <hainque@adacore.com>
2704 * Makefile.in: (mips-irix section): Activate build of libgmem.
2706 2007-09-10 Eric Botcazou <ebotcazou@adacore.com>
2708 * a-numaux-x86.adb (Logarithmic_Pow): Do not silently clobber
2711 2007-09-10 Eric Botcazou <ebotcazou@adacore.com>
2713 * decl.c (gnat_to_gnu_entity) <object>: Deal with variable built for
2714 a debug renaming declaration specially.
2716 2007-09-08 Eric Botcazou <ebotcazou@adacore.com>
2718 * decl.c (gnat_to_gnu_entity) <Object>: Simplify the condition under
2719 which a constant renaming is treated as a normal object declaration.
2720 * trans.c (lvalue_required_p) <N_Slice>: New case, extracted from
2721 the N_Indexed_Component case.
2722 <N_Indexed_Component>: Fall through to above case.
2723 <N_Object_Renaming_Declaration>: Return true for all composite types.
2725 2007-09-08 Eric Botcazou <ebotcazou@adacore.com>
2727 * decl.c (make_packable_type): If the new type has been given BLKmode,
2728 try again to get an integral mode for it.
2730 2007-09-07 Eric Botcazou <ebotcazou@adacore.com>
2732 Re-apply accidentally reverted change:
2734 2007-02-07 Andreas Krebbel <krebbel1@de.ibm.com>
2736 * raise-gcc.c (get_region_description_for, get_call_site_action_for,
2737 get_action_description_for): Replace _Unwind_Word with _uleb128_t
2738 and _Unwind_SWord with _sleb128_t.
2740 2007-09-06 Eric Botcazou <ebotcazou@adacore.com>
2742 * trans.c (convert_with_check): Update call to real_2expN.
2744 2007-09-05 Sandra Loosemore <sandra@codesourcery.com>
2746 * trans.c (Compilation_unit_to_gnu): Use set_cfun.
2747 * utils.c (end_subprog_body): Likewise.
2749 2007-09-03 Nick Clifton <nickc@redhat.com>
2751 * Make-lang.in: Change copyright header to refer to version 3 of
2752 the GNU General Public License and to point readers at the
2753 COPYING3 file and the FSF's license web page.
2754 * ada-tree.def, nmake.adt, nlists.h, snames.h, utils.c,
2755 Makefile.rtl, Makefile.in, config-lang.in, uintp.h, urealp.h,
2756 namet.h, decl.c, utils2.c, lang.opt, elists.h, atree.h, types.h,
2757 treeprs.adt, lang-specs.h, cuintp.c, stringt.h, gnatbl.c:
2760 2007-08-31 Vincent Celier <celier@adacore.com>
2764 * gnatchop.adb, gnatfind.adb, gnatlink.adb, gnatls.adb,
2765 gnatname.adb, gnatxref.adb, gprep.adb, clean.adb gnatbind.adb
2766 (Check_Version_And_Help): New procedure in package Switch to process
2767 switches --version and --help.
2768 Use Check_Version_And_Help in GNAT tools
2771 (Compile_Sources): Make sure that sources that are "excluded" are not
2773 (Gnatmake): Do not issue -aO. to gnatbind and only issue -I- if a
2774 project file is used.
2775 (Version_Switch): Remove, moved to Switch
2776 (Help_Switch): Remove, moved to Switch
2777 (Display_Version): Remove, moved to Switch
2779 * switch.ads, switch.adb (Check_Version_And_Help): New procedure in
2780 package Switch to process switches --version and --help.
2781 (Display_Version): New procedure
2783 * gnatvsn.ads, gnatvsn.adb (Copyright_Holder): New function.
2785 2007-08-31 Javier Miranda <miranda@adacore.com>
2787 * a-tags.adb (Internal_Tag): Protect the run-time against wrong
2790 2007-08-31 Hristian Kirtchev <kirtchev@adacore.com>
2792 * checks.adb (In_Declarative_Region_Of_Subprogram_Body): New routine.
2793 (Mark_Non_Null): If the node for which we just generated an access check
2794 is a reference to an *in* parameter and the reference appears in the
2795 declarative part of a subprogram body, mark the node as known non null.
2797 2007-08-31 Hristian Kirtchev <kirtchev@adacore.com>
2799 * einfo.ads, einfo.adb: New flag Is_Raised (Flag224). Update the
2800 structure of E_Exception to reflect the new flag.
2801 (Is_Raised, Set_Is_Raised): New inlined routines.
2802 Update the usage of available flag to reflect the addition of Is_Raised.
2803 (Is_Raised, Set_Is_Raised): Bodies of new routines.
2804 (Write_Entity_Flags): Write the status of flag Is_Raised.
2805 (Is_Descendent_Of_Address): New entity flag, to simplify handling of
2806 spurious ambiguities when integer literals appear in the context of an
2807 address type that is a visible integer type.
2809 * sem_ch11.adb (Analyze_Exception_Handler): Add code to warn on local
2810 exceptions never being raised.
2811 (Analyze_Raise_Statement): When analyzing an exception, mark it as being
2814 2007-08-31 Javier Miranda <miranda@adacore.com>
2816 * exp_ch11.adb (Expand_At_End_Handler): Avoid generation of raise
2817 statement when compiling under restriction No_Exceptions_Proparation.
2819 2007-08-31 Ed Schonberg <schonberg@adacore.com>
2821 * exp_ch3.adb (Build_Record_Init_Proc): If there is a static
2822 initialization aggregate for the type, generate itype references for
2823 thetypes of its (sub)components, to prevent out-of-scope errors in gigi.
2825 2007-08-31 Gary Dismukes <dismukes@adacore.com>
2827 * exp_ch8.adb (Expand_N_Package_Renaming_Declaration): In the case of a
2828 library-level package renaming, pass the declaration associated with
2829 the renaming's special debug variable to Qualify_Entity_Names to ensure
2830 that its encoded name is properly qualified.
2832 * exp_dbug.adb (Qualify_All_Entity_Names): Check for a variable entity
2833 occurring in the list of entities to qualify, and do not attempt to
2834 traverse an entity list in that case. Variables associated with
2835 ` library-level package renamings can now occur in the table.
2837 * exp_dbug.ads: Revise documentation of the encoding for renaming
2840 2007-08-31 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
2842 * layout.adb (Layout_Type): Use Underlying_Type to determine whether an
2843 access type points to an unconstrained array.
2845 2007-08-31 Hristian Kirtchev <kirtchev@adacore.com>
2847 * restrict.adb, namet.adb, par-util.adb: Remove redundant type
2850 * sem_res.adb (Resolve_Qualified_Expression): Add machinery to detect
2851 simple redundant qualifications. The check is performed whenever the
2852 expression is a non-overloaded identifier.
2853 (Resolve_Type_Conversion): Enchance the redundant type conversion check
2854 to include loop parameters.
2855 (Valid_Conversion): Avoid generation of spurious error message.
2857 2007-08-31 Bob Duff <duff@adacore.com>
2859 * par-ch4.adb (P_Simple_Expression): Fold long sequences of
2860 concatenations of string literals into a single literal, in order to
2861 avoid very deep recursion in the front end, which was causing stack
2864 * sem_eval.adb (Eval_Concatenation): If the left operand is the empty
2865 string, and the right operand is a string literal (the case of "" &
2866 "..."), optimize by avoiding copying the right operand -- just use the
2867 value of the right operand directly.
2869 * stringt.adb (Store_String_Chars): Optimize by growing the
2870 String_Chars table all at once, rather than appending characters one by
2872 (Write_String_Table_Entry): If the string to be printed is very long,
2873 just print the first few characters, followed by the length. Otherwise,
2874 doing "pn(n)" in the debugger can take an extremely long time.
2876 * sem_prag.adb (Process_Interface_Name): Replace loop doing
2877 Store_String_Char with Store_String_Chars.
2879 2007-08-31 Vincent Celier <celier@adacore.com>
2881 * prj-attr.adb: Add new attribute Excluded_Source_Files
2883 * prj-nmsc.adb: Use attribute Excluded_Source_Files before
2884 Locally_Removed_Files.
2886 * snames.ads, snames.adb: New standard name Excluded_Source_Files
2888 2007-08-31 Ed Schonberg <schonberg@adacore.com>
2890 * sem_ch10.adb (Analyze_Subunit_Context): When analyzing context
2891 clauses of subunits, ignore limited_with_clauses that are illegal and
2892 have not been fully analyzed.
2894 2007-08-31 Ed Schonberg <schonberg@adacore.com>
2896 * sem_ch3.adb: The predicate Is_Descendent_Of_Address is now an entity
2897 flag, for effiency. It is called when analyzing arithmetic operators
2898 and also for actuals in calls that are universal_integers. The flag is
2899 set for the predefined type address, and for any type or subtype
2902 * sem_ch4.adb (Analyze_One_Call): Reject an actual that is a
2903 Universal_Integer, when the formal is a descendent of address and the
2904 call appears in user code.
2905 (Analyze_Selected_Component): if the prefix is a private extension, the
2906 tag component is visible.
2908 * sem_util.ads, sem_util.adb: Remove Is_Descendent_Of_Address, now an
2911 2007-08-31 Robert Dewar <dewar@adacore.com>
2913 * s-fileio.adb (Open): Normalize file name to lower case in non-case
2914 sensitive file name systems to avoid unexpected mismatch in Vista.
2916 2007-08-31 Vincent Celier <celier@adacore.com>
2918 * tempdir.adb: On VMS, take into account GNUTMPDIR before TMPDIR
2920 2007-08-31 Vincent Celier <celier@adacore.com>
2922 * symbols-vms.adb (Initialize): Read symbol files with continuation
2924 (Finalize): If symbol is long, split the line
2926 2007-08-31 Vincent Celier <celier@adacore.com>
2928 * fmap.ads: Minor comment updates
2930 2007-08-31 GNAT Script <nobody@adacore.com>
2932 * Make-lang.in: Makefile automatically updated
2934 2007-08-31 Bob Duff <duff@adacore.com>
2936 * sinfo.ads: Minor comment fix.
2938 2007-08-31 Thomas Quinot <quinot@adacore.com>
2940 * stand.ads: (Standard_Debug_Renaming_Type): Make comment consistent
2941 with implementation.
2942 Documentation cleanup only.
2944 2007-08-31 Sergey Rybin <rybin@adacore.com>
2946 * vms_data.ads: Add new qualifier /STMT_NAME_ON_NEW_LINE for the new
2947 gnatpp '--separate-stmt-name' option.
2948 Add new qualifier /USE_ON_NEW_LIN for the new gnatpp '--use-on-new-line'
2951 * gnat_ugn.texi: Add description for the new gnatpp
2952 '--separate-stmt-name' and '--use-on-new-line' options.
2954 2007-08-31 Ben Elliston <bje@au.ibm.com>
2956 * Makefile.in (LIBGNAT_TARGET_PAIRS): Use system-linux-ppc64.ads
2957 when compiling for powerpc64-*-linux.
2958 * system-linux-ppc64.ads: New file.
2960 2007-08-22 Krister Walfridsson <cato@df.lth.se>
2962 * env.c ( __gnat_clearenv): Use the __gnat_unsetenv mechanism for
2965 2007-08-16 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2967 * misc.c (gnat_type_max_size): Constify.
2969 2007-08-16 Gary Dismukes <dismukes@adacore.com>
2971 * cstand.adb (Create_Standard): Create an entity for a zero-sized type
2972 associated with Standard_Debug_Renaming_Type, to be used as the type of
2973 the special variables whose names provide debugger encodings for
2974 renaming declarations.
2976 * einfo.ads, einfo.adb (Debug_Renaming_Link): Change to return Node25.
2977 (Set_Debug_Renaming_Link): Change to set Node25.
2978 (Write_Field13_Name): Remove case for E_Enumeration_Literal.
2979 (Write_Field25_Name): Add case for E_Variable to output
2980 "Debug_Renaming_Link".
2981 (Write_Field23_Name): Correct the output string for "Limited_View".
2983 * exp_dbug.adb: Add with and use of Tbuild.
2984 (Debug_Renaming_Declaration): Replace creation of an enumeration type
2985 and literal with creation of a variable of type
2986 Standard_Debug_Renaming_Type whose name encodes both the renamed object
2987 and the entity of the renaming declaration.
2988 (Qualify_Entity_Name): Add the delayed qualification of the entity name
2989 part of the name of a variable that has a Debug_Renaming_Link.
2991 * stand.ads (Standard_Debug_Renaming_Type): New Entity_Id denoting a
2992 special type to be associated with variables that provide debugger
2993 encodings for renaming declarations.
2995 2007-08-16 Gary Dismukes <dismukes@adacore.com>
2996 Ed Schonberg <schonberg@adacore.com>
2997 Javier Miranda <miranda@adacore.com>
2999 * exp_aggr.adb (Build_Record_Aggr_Code): Extend the test for an
3000 ancestor part given by an aggregate to test for an unchecked conversion,
3001 since this can occur in some cases when the ancestor part is a function
3002 call, and we don't want to fall into the recursive call to this
3003 procedure in that case.
3005 * exp_ch3.adb (Stream_Operation_OK): Revise tests for availability of
3006 stream attributes on limited types to account for user-specified
3007 attributes as well as whether Input (resp. Output) becomes available
3008 due to Read (resp. Write) being available for the type. Change Boolean
3009 variable to the more accurate name
3010 Has_Predefined_Or_Specified_Stream_Attribute. Change convoluted
3011 double-"not" predicate at beginning of return statement to more
3012 understandable form.
3014 * exp_ch5.adb (Expand_N_Extended_Return_Statement): If the extended
3015 return has an associated N_Handled_Sequence_Of_Statements, then wrap it
3016 in a block statement and use that as the first statement of the
3017 expanded return rather than incorrectly using the handled sequence as
3018 the first statement.
3020 * exp_ch6.adb (Expand_N_Subprogram_Declaration): If this is a protected
3021 operation, generate an explicit freeze node for it rather than
3022 generating extra formals, to ensure that gigi has the proper order of
3023 elaboration for anonymous subtypes in the signature of the subprograms.
3024 (Build_In_Place_Formal): Move assertion to beginning of loop.
3025 (Is_Build_In_Place_Function_Call): Allow for an unchecked conversion
3026 applied to a function call (occurs for some cases of 'Input).
3027 (Make_Build_In_Place_Call_In_*): Allow for an unchecked conversion
3028 applied to a function call (occurs for some cases of 'Input).
3030 * exp_strm.adb (Build_Record_Or_Elementary_Input_Function): For Ada
3031 2005, generate an extended return statement enclosing the result object
3034 * freeze.adb (Freeze_Record_Type): Extend the current management of
3035 components that are access type with an allocator as default value: add
3036 missing support to the use of qualified expressions of the
3037 allocator (which also cause freezing of the designated type!)
3038 (Freeze_Entity): Call Freeze_Subprogram in the case of a predefined
3039 dispatching operation, since extra formals may be needed by calls to
3040 build-in-place functions (such as stream 'Input).
3042 * sem_ch6.adb (Create_Extra_Formals): Skip creation of the extra
3043 formals for 'Constrained and accessibility level in the case of a
3044 predefined dispatching operation.
3046 * exp_util.adb (Insert_Actions): A protected body is a valid insertion
3047 point, no need to find the parent node.
3049 2007-08-16 Javier Miranda <miranda@adacore.com>
3051 * exp_attr.adb (Attribute_Priority): Add missing support for entries
3054 2007-08-16 Javier Miranda <miranda@adacore.com>
3056 * exp_ch9.adb (Build_Protected_Entry): Undo previous change because it
3057 is not really required and can introduce regression with the debugger.
3058 The original problem is fixed with the patch written for checks.adb.
3060 2007-08-16 Thomas Quinot <quinot@adacore.com>
3062 * g-dyntab.adb, g-table.adb, table.adb: (Set_Item): Suppress
3063 Range_Check on Allocated_Table.
3065 2007-08-16 Vincent Celier <celier@adacore.com>
3067 * make.adb (Collect_Arguments): Call Test_If_Relative_Path with
3068 Including_Non_Switch set to False.
3069 (Gnatmake): For the compiler, call Test_If_Relative_Path with
3070 Including_Non_Switch set to False.
3072 * makeutl.adb, makeutl.ads (Test_If_Relative_Path): New Boolean
3073 parameter Including_Non_Switch, defaulted to True. When
3074 Including_Non_Switch is False, options that are not switches and
3075 appear as relative path are not converted to absolute paths.
3077 2007-08-16 Nicolas Roche <roche@adacore.com>
3079 * Makefile.in (gnatlib): Propagate FORCE_DEBUG_ADAFLAGS value to sub
3082 * Make-lang.in: Update dependencies
3084 2007-08-16 Hristian Kirtchev <kirtchev@adacore.com>
3086 * sem_ch10.adb (Has_With_Clause): If the name of the with clause
3087 currently inspected is a selected component, retrieve the entity of
3089 (Install_Limited_Withed_Unit): Call Has_Limited_With_Clause starting
3090 from the immediate ancestor of Main_Unit_Entity.
3091 (Install_Limited_Withed_Unit): Do not install the limited view of
3092 package P if P is reachable through an ancestor chain from package C
3093 and C also has a with clause for P in its body.
3094 (Has_Limited_With_Clause): New routine.
3095 (Has_With_Clause): New routine.
3097 2007-08-16 Ed Schonberg <schonberg@adacore.com>
3099 * sem_ch12.adb (Copy_Generic_Node): A reference to a child unit of the
3100 generic for an enclosing instance is a global reference, even though
3101 its scope is the enclosing instance.
3103 2007-08-16 Gary Dismukes <dismukes@adacore.com>
3104 Javier Miranda <miranda@adacore.com>
3106 * sem_ch3.adb (OK_For_Limited_Init_In_05): Allow calls to 'Input to
3107 initialize a limited object.
3108 (Build_Derived_Record_Type): Add missing check of rules ARM 3.9.4
3110 Make sure Has_Complex_Representation is inherited by derived type.
3112 2007-08-16 Robert Dewar <dewar@adacore.com>
3114 * sem_ch5.adb (Analyze_Assignment): Make sure we still note update in
3117 2007-08-16 Ed Schonberg <schonberg@adacore.com>
3119 * sem_disp.adb (Check_Dispatching_Operation): If the operation
3120 implements an operation inherited from a progenitor interface, verify
3121 that they are subtype-conformant.
3123 2007-08-16 Hristian Kirtchev <kirtchev@adacore.com>
3124 Bob Duff <duff@adacore.com>
3125 Nicolas Setton <setton@adacore.com>
3127 * sem_res.adb (Comes_From_Predefined_Lib_Unit): New.
3128 (Resolve): Alphabetize local variables. Add new variable From_Lib. When
3129 the statement which is being resolved comes from a predefined library
3130 unit, all non-predefined library interpretations are skipped.
3131 (Resolve_Op_Concat): If string concatenation was folded in the parser,
3132 but the "&" is user defined, give an error, because the folding would
3135 * sinfo.ads, sinfo.adb (Is_Folded_In_Parser): New flag to indicate that
3136 the parser has folded a long sequence of concatenations of string
3139 * trans.c (Handled_Sequence_Of_Statements_to_gnu): Mark "JMPBUF_SAVE"
3140 and "JMP_BUF" variables as artificial.
3141 (N_String_Literal): Do not use alloca for very long string literals. Use
3142 xmalloc/free instead. Otherwise the stack might overflow.
3144 * utils.c (init_gigi_decls): Mark "JMPBUF_T" type as created by the
3147 2007-08-16 Vincent Celier <celier@adacore.com>
3149 * vms_conv.adb (Process_Argument): Ensure that project related options
3150 are not put in the -cargs section when using GNAT COMPILE.
3152 2007-08-16 Robert Dewar <dewar@adacore.com>
3154 * gnat_ugn.texi: Add note on preprocessing (output file not written)
3156 2007-08-16 Thomas Quinot <quinot@adacore.com>
3158 * a-tags.adb: Minor reformatting.
3160 2007-08-16 Bob Duff <duff@adacore.com>
3162 * sem_type.ads, sem_ch4.adb: Minor reformatting.
3164 2007-08-14 Thomas Quinot <quinot@adacore.com>
3166 * g-soccon-interix.ads, a-excpol-interix.adb, a-intnam-interix.ads,
3167 s-osinte-interix.ads, system-interix.ads: Removed.
3169 2007-08-14 Hristian Kirtchev <kirtchev@adacore.com>
3171 * a-calend-vms.adb, a-calend.adb ("+", "-", Add, Subtract): Remove
3172 calls to Check_Within_Time_Bounds.
3173 ("+", "-", Add, Subtract): Remove calls to Check_Within_Time_Bounds.
3174 (Difference): Account for possible rounding of the resulting difference
3176 2007-08-14 Robert Dewar <dewar@adacore.com>
3178 * uintp.adb, a-ztedit.adb, s-wchcon.adb, xnmake.adb, s-wchcon.adb,
3179 par-ch5.adb, par-ch10.adb, get_targ.adb, a-wtedit.adb, a-teioed.adb,
3180 s-osinte-solaris.adb, s-osinte-solaris.ads,
3181 s-osinte-freebsd.ads, s-osinte-freebsd.adb: Minor reformatting.
3183 * styleg.adb, styleg.ads, stylesw.adb, stylesw.ads: implement style
3184 switch -gnatyS. Enable -gnatyS in GNAT style check mode
3186 2007-08-14 Robert Dewar <dewar@adacore.com>
3187 Ed Schonberg <schonberg@adacore.com>
3189 * inline.adb, types.ads, inline.ads, frontend.adb, alloc.ads:
3190 Suppress unmodified in-out parameter warning in some cases
3191 This patch is a also fairly significant change to the way suppressible
3194 * checks.ads, checks.adb (Install_Null_Excluding_Check): No check
3195 needed for access to concurrent record types generated by the expander.
3196 (Generate_Range_Check): When generating a temporary to capture the
3197 value of a conversion that requires a range check, set the type of the
3198 temporary before rewriting the node, so that the type is always
3199 properly placed for back-end use.
3200 (Apply_Float_Conversion_Check): Handle case where the conversion is
3202 (Get_Discriminal): Code reformatting. Climb the scope stack looking
3203 for a protected type in order to examine its discriminants.
3205 2007-08-14 Robert Dewar <dewar@adacore.com>
3206 Gary Dismukes <dismukes@adacore.com>
3207 Ed Schonberg <schonberg@adacore.com>
3208 Thomas Quinot <quinot@adacore.com>
3210 * a-stzsup.adb, nlists.adb, lib-util.adb, treepr.adb,
3211 a-stwisu.adb, a-strsup.adb: Fix warnings for range
3212 tests optimized out.
3214 * exp_ch4.adb (Expand_N_In): Add warnings for range tests optimized out.
3215 (Get_Allocator_Final_List): For the case of an anonymous access type
3216 that has a specified Associated_Final_Chain, do not go up to the
3218 (Expand_N_Type_Conversion): Test for the case of renamings of access
3219 parameters when deciding whether to apply a run-time accessibility
3221 (Convert_Aggr_In_Allocator): Use Insert_Actions to place expanded
3222 aggregate code before allocator, and ahead of declaration for
3223 temporary, to prevent access before elaboration when the allocator is
3224 an actual for an access parameter.
3225 (Expand_N_Type_Conversion): On an access type conversion involving an
3226 access parameter, do not apply an accessibility check when the
3227 operand's original node was an attribute other than 'Access. We now
3228 create access conversions for the expansion of 'Unchecked_Access and
3229 'Unrestricted_Access in certain cases and clearly accessibility should
3230 not be checked for those.
3232 * exp_ch6.ads, exp_ch6.adb (Add_Call_By_Copy_Code): For an actual that
3233 includes a type conversion of a packed component that has been expanded,
3234 recover the original expression for the object, and use this expression
3235 in the post-call assignment statement, so that the assignment is made
3236 to the object and not to a back-end temporary.
3237 (Freeze_Subprogram): In case of primitives of tagged types not defined
3238 at the library level force generation of code to register the primitive
3239 in the dispatch table. In addition some code reorganization has been
3240 done to leave the implementation clear.
3241 (Expand_Call): When expanding an inherited implicit conversion,
3242 preserve the type of the inherited function after the intrinsic
3243 operation has been expanded.
3245 * exp_ch2.ads, exp_ch2.adb
3246 (Expand_Entry_Parameter.In_Assignment_Context): An implicit dereference
3247 of an entry formal appearing in an assignment statement does not assign
3249 (Expand_Current_Value): Instead of calling a routine to determine
3250 whether the prefix of an attribute reference should be optimized or
3251 not, prevent the optimization of such prefixes all together.
3253 * lib-xref.adb (Generate_Reference.Is_On_LHS): An indexed or selected
3254 component whose prefix is known to be of an access type is an implicit
3255 dereference and does not assign to the prefix.
3257 2007-08-14 Ed Schonberg <schonberg@adacore.com>
3258 Robert Dewar <dewar@adacore.com>
3260 * atree.ads, atree.adb (New_Copy_Tree): If hash table is being used and
3261 itype is visited, make an entry into table to link associated node and
3263 Add comments and correct harmless error in Build_NCT_Hash_Tables
3264 (Array_Aggr_Subtype): Associate each itype created for an index type to
3265 the corresponding range construct, and not to the aggregate itself. to
3266 maintain a one-to-one correspondence between itype and its associated
3267 node, to prevent errors when complex expression is copied.
3268 Fix mishandling of multiple levels of parens
3270 * sem_aggr.adb: Create a limited view of an incomplete type, to make
3271 treatment of limited views uniform for all visible declarations in a
3272 limited_withed package.
3273 (New_Copy_Tree): If hash table is being used and itype is visited,
3274 make an entry into table to link associated node and new itype.
3275 (Resolve_Record_Aggregate): Do not add an others box association for a
3276 discriminated record component that has only discriminants, when there
3277 is a box association for the component itself.
3279 * par-ch4.adb: Fix mishandling of multiple levels of parens
3281 2007-08-14 Robert Dewar <dewar@adacore.com>
3283 * comperr.adb: Fix problem with suppressing warning messages from gigi
3285 * erroutc.ads, erroutc.adb, errout.ads,
3286 errout.adb (Write_Eol): Remove trailing spaces before writing the line
3287 (Write_Eol_Keep_Blanks): New procedure to write a line, including
3288 possible trailing spaces.
3289 (Output_Source_Line): Call Write_Eol_Keep_Blanks to output a source line
3290 Fix problem with suppressing warning messages from back end
3291 Improve handling of deleted warnings
3294 Fix problem with suppressing warning messages from back end
3295 Handle setting of Static_Dispatch_Tables flag.
3298 Fix problem with suppressing warning messages from back end
3300 * exp_intr.adb: Improve handling of deleted warnings
3302 2007-08-14 Robert Dewar <dewar@adacore.com>
3304 * debug.adb: Improve -gnatdI to cover all cases of serialization
3305 Add documentation of dZ, d.t
3307 * sprint.ads, sprint.adb: Improve -gnatdI to cover all cases of
3309 (Sprint_Node_Actual): Generate new output associated with implicit
3310 importation and implicit exportation of object declarations.
3312 2007-08-14 Ed Schonberg <schonberg@adacore.com>
3313 Robert Dewar <dewar@adacore.com>
3314 Javier Miranda <miranda@adacore.com>
3315 Gary Dismukes <dismukes@adacore.com>
3317 * einfo.ads, einfo.adb: Create a limited view of an incomplete type,
3318 to make treatment of limited views uniform for all visible declarations
3319 in a limited_withed package.
3320 Improve warnings for in out parameters
3321 (Set_Related_Interaface/Related_Interface): Allow the use of this
3322 attribute with constants.
3323 (Write_Field26_Name): Handle attribute Related_Interface in constants.
3324 Warn on duplicate pragma Preelaborable_Initialialization
3326 * sem_ch6.ads, sem_ch6.adb (Analyze_Subprogram_Body): Force the
3327 generation of a freezing node to ensure proper management of null
3328 excluding access types in the backend.
3329 (Create_Extra_Formals): Test base type of the formal when checking for
3330 the need to add an extra accessibility-level formal. Pass the entity E
3331 on all calls to Add_Extra_Formal (rather than Scope (Formal) as was
3332 originally being done in a couple of cases), to ensure that the
3333 Extra_Formals list gets set on the entity E when the first entity is
3335 (Conforming_Types): Add missing calls to Base_Type to the code that
3336 handles anonymous access types. This is required to handle the
3337 general case because Process_Formals builds internal subtype entities
3338 to handle null-excluding access types.
3339 (Make_Controlling_Function_Wrappers): Create wrappers for constructor
3340 functions that need it, even when not marked Requires_Overriding.
3341 Improve warnings for in out parameters
3342 (Analyze_Function_Return): Warn for disallowed null return
3343 Warn on return from procedure with unset out parameter
3344 Ensure consistent use of # in error messages
3345 (Check_Overriding_Indicator): Add in parameter Is_Primitive.
3346 (Analyze_Function_Return): Move call to Apply_Constraint_Check before
3347 the implicit conversion of the expression done for anonymous access
3348 types. This is required to generate the code of the null excluding
3349 check (if required).
3351 * sem_warn.ads, sem_warn.adb (Check_References.Publicly_Referenceable):
3352 A formal parameter is never publicly referenceable outside of its body.
3353 (Check_References): For an unreferenced formal parameter in an accept
3354 statement, use the same warning circuitry as for subprogram formal
3356 (Warn_On_Unreferenced_Entity): New subprogram, taken from
3357 Output_Unreferenced_Messages, containing the part of that routine that
3358 is now reused for entry formals as described above.
3359 (Goto_Spec_Entity): New function
3360 (Check_References): Do not give IN OUT warning for dispatching operation
3361 Improve warnings for in out parameters
3362 (Test_Ref): Check that the entity is not undefinite before calling
3363 Scope_Within, in order to avoid infinite loops.
3364 Warn on return from procedure with unset out parameter
3365 Improved warnings for unused variables
3367 2007-08-14 Robert Dewar <dewar@adacore.com>
3368 Javier Miranda <miranda@adacore.com>
3369 Gary Dismukes <dismukes@adacore.com>
3371 * exp_attr.adb (Expand_N_Attribute_Reference): Handle case of child unit
3372 (Expand_N_Attribute_Reference): Further unify the handling of the
3373 three forms of access attributes, using common code now for all three
3374 cases. Add a test for the case of applying an access attribute to
3375 an explicit dereference when the context is an access-to-interface
3376 type. In that case we need to apply the conversion to the prefix
3377 of the explicit dereference rather than the prefix of the attribute.
3378 (Attribute_Version, UET_Address): Set entity as internal to ensure
3379 proper dg output of implicit importation.
3380 (Expand_Access_To_Type): Removed.
3381 (Expand_N_Attribute_Reference): Merge the code from the three cases
3382 of access attributes, since the processing is largely identical for
3383 these cases. The substantive fix here is to process the case of a
3384 type name prefix (current instance case) before handling the case
3385 of interface prefixes.
3387 2007-08-14 Thomas Quinot <quinot@adacore.com>
3388 Ed Schonberg <schonberg@adacore.com>
3389 Javier Miranda <miranda@adacore.com>
3390 Robert Dewar <dewar@adacore.com>
3392 * exp_ch3.ads, exp_ch3.adb (Add_Final_Chain): New subprogram.
3393 (Freeze_Array_Type, Freeze_Record_Type): For the case of a component
3394 type that is an anonymous access to controlled object, establish
3395 an associated finalization chain to avoid corrupting the global
3396 finalization list when a dynamically allocated object designated
3397 by such a component is deallocated.
3398 (Make_Controlling_Function_Wrappers): Create wrappers for constructor
3399 functions that need it, even when not marked Requires_Overriding.
3400 (Initialize_Tag): Replace call to has_discriminants by call to
3401 Is_Variable_Size_Record in the circuitry that handles the
3402 initialization of secondary tags.
3403 (Is_Variable_Size_Record): New implementation.
3404 (Expand_N_Object_Declaration): Suppress call to init proc if there is a
3405 Suppress_Initialization pragma for a derived type.
3406 (Is_Variable_Size_Record): New subprogram.
3407 (Build_Offset_To_Top_Functions): New implementation that simplifies the
3408 initial version of this routine and also fixes problems causing
3409 incomplete initialization of the table of interfaces.
3410 (Build_Init_Procedure): Improve the generation of code to initialize the
3411 the tag components of secondary dispatch tables.
3412 (Init_Secondary_Tags): New implementation that simplifies the previous
3413 version of this routine.
3414 (Make_DT): Add parameter to indicate when type has been frozen by an
3415 object declaration, for diagnostic purposes.
3416 (Check_Premature_Freezing): New subsidiary procedure of Make_DT, to
3417 diagnose attemps to freeze a subprogram when some untagged type of its
3418 profile is a private type whose full view has not been analyzed yet.
3419 (Freeze_Array_Type): Generate init proc for packed array if either
3420 Initialize or Normalize_Scalars is set.
3421 (Make_Controlling_Function_Wrappers, Make_Null_Procedure_Specs): when
3422 constructing the new profile, copy the null_exclusion indicator for each
3423 parameter, to ensure full conformance of the new body with the spec.
3425 * sem_type.ads, sem_type.adb (Make_Controlling_Function_Wrappers):
3426 Create wrappers for constructor functions that need it, even when not
3427 marked Requires_Overriding.
3428 (Covers): Handle properly designated types of anonymous access types,
3429 whose non-limited views are themselves incomplete types.
3430 (Add_Entry): Use an entity to store the abstract operation which hides
3432 (Binary_Op_May_Be_Hidden): Rename to Binary_Op_Interp_Has_Abstract_Op.
3433 (Collect_Interps): Use Empty as an actual for Abstract_Op in the
3434 initialization aggregate.
3435 (Function_Interp_May_Be_Hidden): Rename to
3436 Function_Interp_Has_Abstract_Op.
3437 (Has_Compatible_Type): Remove machinery that skips interpretations if
3438 they are labeled as potentially hidden by an abstract operator.
3439 (Has_Hidden_Interp): Rename to Has_Abstract_Op.
3440 (Set_May_Be_Hidden): Rename to Set_Abstract_Op.
3441 (Write_Overloads): Output the abstract operator if present.
3442 (Add_Entry): Before inserting a new entry into the interpretation table
3443 for a node, determine whether the entry will be disabled by an abstract
3445 (Binary_Op_Interp_May_Be_Hidden): New routine.
3446 (Collect_Interps): Add value for flag May_Be_Hidden in initialization
3448 (Function_Interp_May_Be_Hidden): New routine.
3449 (Has_Compatible_Type): Do not consider interpretations hidden by
3450 abstract operators when trying to determine whether two types are
3452 (Has_Hidden_Interp): New routine.
3453 (Set_May_Be_Hidden_Interp): New routine.
3454 (Write_Overloads): Write the status of flag May_Be_Hidden.
3456 2007-08-14 Ed Schonberg <schonberg@adacore.com>
3457 Javier Miranda <miranda@adacore.com>
3459 * exp_disp.ads, exp_disp.adb (Build_Dispatch_Tables): Handle tagged
3460 types declared in the declarative part of a nested package body or in
3461 the proper body of a stub.
3462 (Set_All_DT_Position): Add missing check to avoid wrong assignation
3463 of the same dispatch table slot to renamed primitives.
3464 (Make_Select_Specific_Data_Table): Handle private types.
3465 (Tagged_Kind): Handle private types.
3466 (Make_Tags, Make_DT): Set tag entity as internal to ensure proper dg
3467 output of implicit importation and exportation.
3468 (Expand_Interface_Thunk): Fix bug in the expansion assuming that the
3469 first formal of the thunk is always associated with the controlling
3470 type. In addition perform the following code cleanup: remove formal
3471 Thunk_Alias which is no longer required, cleanup evaluation of the
3472 the controlling type, and update the documentation.
3473 Replace occurrence of Default_Prim_Op_Count by
3474 Max_Predef_Prims. Addition of compile-time check to verify
3475 that the value of Max_Predef_Prims is correct.
3476 (Check_Premature_Freezing): Apply check in Ada95 mode as well.
3477 (Make_DT): Add parameter to indicate when type has been frozen by an
3478 object declaration, for diagnostic purposes.
3479 (Build_Static_Dispatch_Tables): New subprogram that takes care of the
3480 construction of statically allocated dispatch tables.
3481 (Make_DT): In case of library-level tagged types export the declaration
3482 of the primary tag. Remove generation of tags (now done by Make_Tags).
3483 Additional modifications to handle non-static generation of dispatch
3484 tables. Take care of building tables for asynchronous interface types
3485 (Make_Tags): New subprogram that generates the entities associated with
3486 the primary and secondary tags of Typ and fills the contents of Access_
3487 Disp_Table. In case of library-level tagged types imports the forward
3488 declaration of the primary tag that will be declared later by Make_DT.
3489 (Expand_Interface_Conversion): In case of access types to interfaces
3490 replace an itype declaration by an explicit type declaration to avoid
3491 problems associated with the scope of such itype in transient blocks.
3493 2007-08-14 Robert Dewar <dewar@adacore.com>
3494 Ed Schonberg <schonberg@adacore.com>
3495 Javier Miranda <miranda@adacore.com>
3497 * exp_util.ads, exp_util.adb:
3498 This patch replaces a number of occurrences of explicit tests for N_Null
3499 with calls to Known_Null. This improves tracking of null values, since
3500 Known_Null also catches null constants, and variables currently known to
3501 be null, so we get better tracking.
3502 (Ensure_Defined): create an itype reference only in the scope of the
3504 (Side_Effect_Free): A selected component of an access type that
3505 denotes a component with a rep clause must be treated as not
3506 side-effect free, because if it is part of a linked structure its
3507 value may be affected by a renaming.
3508 (Expand_Subtype_From_Expr): For limited objects initialized with build
3509 in place function calls, do nothing; otherwise we prematurely introduce
3510 an N_Reference node in the expression initializing the object, which
3511 breaks the circuitry that detects and adds the additional arguments to
3512 the called function. Bug found working in the new patch for statically
3513 allocated dispatch tables.
3514 (Is_Library_Level_Tagged_Type): New subprogram.
3515 (Remove_Side_Effects): If the expression of an elementary type is an
3516 operator treat as a function call.
3517 (Make_Literal_Range): If the index type of the array is not integer, use
3518 attributes properly to compute the constraint on the resulting aggregate
3521 * freeze.ads, freeze.adb (Freeze_Entity): If the entity is a
3522 class-wide type whose base type is an incomplete private type, leave
3523 class-wide type unfrozen so that freeze nodes can be generated
3524 properly at a later point.
3525 (Freeze_Entity, array case): Handle case of pragma Pack and component
3526 size attributre clause for same array.
3528 2007-08-14 Vincent Celier <celier@adacore.com>
3530 * prj.ads, prj.adb: Update Project Manager to new attribute names for
3532 Allow all valid declarations in configuration project files
3533 (Reset): Initialize all tables and hash tables in the project tree data
3534 Major update of the Project Manager and of the project aware tools,
3535 including gprmake, so that the same sources in the GNAT repository
3536 can be used by gprbuild.
3537 (Slash_Id): Change type to be Path_Name_Type
3538 (Slash): Return a Path_Name_Type instead of a File_Name_Type
3540 * prj-attr.ads, prj-attr.adb: Remove attributes no longer used by
3542 Update Project Manager to new attribute names for ghprbuild
3543 Allow all valid declarations in configuration project files
3544 Major update of the Project Manager and of the project aware tools,
3545 including gprmake, so that the same sources in the GNAT repository
3546 can be used by gprbuild.
3549 Major update of the Project Manager and of the project aware tools,
3550 including gprmake, so that the same sources in the GNAT repository
3551 can be used by gprbuild.
3553 * prj-dect.adb (Prj.Strt.Attribute_Reference): Set correctly the case
3554 insensitive flag for attributes with optional index.
3555 (Prj.Dect.Parse_Attribute_Declaration): For case insensitive associative
3556 array attribute, put the index in lower case.
3557 Update Project Manager to new attribute names for ghprbuild
3558 Allow all valid declarations in configuration project files
3559 Major update of the Project Manager and of the project aware tools,
3560 including gprmake, so that the same sources in the GNAT repository
3561 can be used by gprbuild.
3563 * prj-env.ads, prj-env.adb:
3564 Major update of the Project Manager and of the project aware tools,
3565 including gprmake, so that the same sources in the GNAT repository
3566 can be used by gprbuild.
3567 (Get_Reference): Change type of parameter Path to Path_Name_Type
3569 * prj-ext.ads, prj-ext.adb (Initialize_Project_Path): Make sure, after
3570 removing '-' from the path to start with the first character of the
3572 Major update of the Project Manager and of the project aware tools,
3573 including gprmake, so that the same sources in the GNAT repository
3574 can be used by gprbuild.
3575 Major update of the Project Manager and of the project aware tools,
3576 including gprmake, so that the same sources in the GNAT repository
3577 can be used by gprbuild.
3579 * prj-nmsc.ads, prj-nmsc.adb:
3580 Update Project Manager to new attribute names for ghprbuild
3581 Allow all valid declarations in configuration project files
3582 (Search_Directories): Detect subunits that are specified with an
3583 attribute Body in package Naming. Do not replace a source/unit in the
3584 same project when the order of the source dirs are known. Detect
3585 duplicate sources/units in the same project when the order of the
3586 source dirs are not known.
3587 (Check_Ada_Name): Allow all identifiers that are not reserved words
3589 Major update of the Project Manager and of the project aware tools,
3590 including gprmake, so that the same sources in the GNAT repository
3591 can be used by gprbuild.
3592 (Look_For_Sources): If the list of sources is empty, set the object
3593 directory of non extending project to nil.
3594 Change type of path name variables to be Path_Name_Type
3595 (Locate_Directory): Make sure that on Windows '/' is converted to '\',
3596 otherwise creating missing directories will fail.
3598 * prj-attr-pm.adb, prj-tree.ads, prj-proc.ads, prj-proc.adb,
3599 prj-part.ads, prj-part.adb:
3600 Major update of the Project Manager and of the project aware tools,
3601 including gprmake, so that the same sources in the GNAT repository
3602 can be used by gprbuild.
3604 * prj-strt.adb (Prj.Strt.Attribute_Reference): Set correctly the case
3605 insensitive flag for attributes with optional index.
3606 (Prj.Dect.Parse_Attribute_Declaration): For case insensitive associative
3607 array attribute, put the index in lower case.
3608 (Parse_Variable_Reference): Allow the current project name to be used in
3609 the prefix of an attribute reference.
3611 * prj-util.ads, prj-util.adb
3612 (Value_Of (for arrays)): New Boolean parameter Force_Lower_Case_Index,
3613 defaulted to False. When True, always check against indexes in lower
3616 * snames.ads, snames.h, snames.adb:
3617 Update Project Manager to new attribute names for gprbuild
3618 Allow all valid declarations in configuration project files
3620 2007-08-14 Robert Dewar <dewar@adacore.com>
3621 Ed Schonberg <schonberg@adacore.com>
3623 * opt.ads: Warning for non-local exception propagation now off by
3625 New switch -gnatI to disable representation clauses
3626 Implement new pragma Implicit_Packing
3629 Warning for non-local exception propagation now off by default
3630 Add warning for unchecked conversion of pointers wi different
3632 New switch -gnatI to disable representation clauses
3634 * usage.adb: new switch -gnatyS
3636 * gnat_ugn.texi: For the gnatcheck Non_Qualified_Aggregates rule add a
3637 note that aggregates of anonymous array types are not flagged.
3638 -gnatwc now includes membership tests optimized away
3639 -gnatw.x warnings are now off by default
3640 Added conditional compilation Appendix
3641 Add documentation of -gnatI
3642 Add documentation for new -gnatyS style check
3643 Update documentation about SAL and auto-init on Windows.
3646 Add documentation for pragma Check_Name and 'Enabled attribute
3647 Document that Eliminate on dispatching operation is ignored
3648 Document IDE attributes VCS_Repository_Root and VCS_Patch_Root.
3649 Document pragma Main
3650 Document pragma Implicit_Packing
3652 * sem_ch13.adb: Add warning for unchecked conversion of pointers wi
3653 different conventions
3654 New switch -gnatI to disable representation clauses
3656 * switch-c.adb (Scan_Front_End_Switches): When a -gnat switch is not
3657 recognized, report the invalid characters including "-gnat" instead of
3658 just the first character in the switch.
3659 New switch -gnatI to disable representation clauses
3660 Set Warn_On_Object_Renames_Function true for -gnatg
3662 * vms_data.ads: Add doc for /IGNORE_REP_CLAUSES
3663 Add STATEMENTS_AFTER_THEN_ELSE as synonym for -gnatyS
3664 Add qualifier /ADD_PROJECT_SEARCH_DIR= for different tools, equivalent
3665 to switch -aP (add directory to project search dir).
3667 * par-prag.adb: Implement new pragma Implicit_Packing
3669 * sem_prag.adb (Analyze_Pragma, case Complex_Representation): Mark the
3670 type as having a non-standard representation, to force expansion on
3671 conversion to related types.
3672 (Analyze_Pragma): Warn on misspelled pragma
3673 (Analyze_Pragma, case Convention_Identifier): Fix checking of second arg
3674 Ensure consistent use of # in error messages
3675 Implement pragma Implicit_Packing
3677 2007-08-14 Olivier Hainque <hainque@adacore.com>
3678 Eric Botcazou <ebotcazou@adacore.com>
3680 * targtyps.c (get_target_maximum_default_alignment): New function.
3682 that the compiler might choose by default for a type or object.
3683 (get_target_default_allocator_alignment): New function. Alignment known
3684 to be honored by the target default allocator.
3685 (get_target_maximum_allowed_alignment): New function. Maximum alignment
3686 we might accept for any type or object on the target.
3687 (get_target_maximum_alignment): Now synonym of maximum_default_alignment
3689 * gigi.h (get_target_maximum_default_alignment): Declare new function.
3690 (get_target_default_allocator_alignment): Likewise.
3691 (get_target_maximum_allowed_alignment): Likewise.
3694 * decl.c (gnat_to_gnu_entity) <object>: Except for the renaming of the
3695 result of a function call, first try to use a stabilized reference for
3696 a constant renaming too.
3697 (validate_alignment): Use target_maximum_allowed_alignment instead of
3698 MAX_OFILE_ALIGNMENT as the upper bound to what we accept.
3699 (gnat_to_gnu_entity): Use common nodes directly.
3700 (gnat_to_gnu_entity) <object>: Pick the values of the type to annotate
3701 alignment and size for the object.
3702 (lvalue_required_p): Handle N_Parameter_Association like N_Function_Call
3703 and N_Procedure_Call_Statement.
3704 (takes_address): Rename to lvalue_required_p, add third parameter
3705 'aliased' and adjust recursive calls.
3706 <N_Indexed_Component>: Update 'aliased' from the array type.
3707 <N_Selected_Component>: New case.
3708 <N_Object_Renaming_Declaration>: New Likewise.
3709 (Identifier_to_gnu): Adjust for above changes.
3710 (maybe_stabilize_reference) <CONST_DECL>: New case.
3712 * utils2.c (build_binary_op) <ARRAY_RANGE_REF>: Look through conversion
3713 between type variants.
3714 (build_simple_component_ref): Likewise.
3715 (build_call_alloc_dealloc): Use target_default_allocator_alignment
3716 instead of BIGGEST_ALIGNMENT as the threshold to trigger the super
3717 aligning type circuitry for allocations from the default storage pool.
3718 (build_allocator): Likewise.
3719 (build_simple_component_ref): Manually fold the reference for a
3720 constructor if the record type contains a template.
3722 * utils.c (value_zerop): Delete.
3723 (gnat_init_decl_processing): Emit debug info for common types.
3724 (rest_of_record_type_compilation): If a union contains a field
3725 with a non-constant qualifier, treat it as variable-sized.
3726 (finish_record_type): Give the stub TYPE_DECL a name.
3727 (rest_of_record_type_compilation): Likewise.
3728 (convert) <CONSTRUCTOR>: New case. Build a new constructor if
3729 types are equivalent array types.
3730 (create_field_decl): Claim fields of any ARRAY_TYPE are addressable,
3731 even if the type is not passed by reference.
3732 (static_ctors, static_dtors): Delete.
3733 (end_subprog_body): Do not record constructors and destructors.
3734 (build_global_cdtor): Delete.
3735 (gnat_write_global_declarations): Do not call build_global_cdtor.
3737 * lang-spARGET_VXWORKS_RTP is defined, append -mrtp when
3738 -fRTS=rtp is specified.
3739 If CONFIG_DUAL_EXCEPTIONS is 1, append -fsjlj when -fRTS=sjlj is
3742 * misc.c (gnat_init_gcc_eh): Use __gnat_eh_personality_sj for the name
3743 of the personality function with SJLJ exceptions.
3745 * raise-gcc.c (PERSONALITY_FUNCTION): Use __gnat_eh_personality_sj for
3746 the name of the personality function with SJLJ exceptions.
3748 2007-08-14 Robert Dewar <dewar@adacore.com>
3749 Ed Schonberg <schonberg@adacore.com>
3751 * par.ads, par.adb: Improve handling of extra right parens.
3752 (Par): Remove flag From_Limited_With_Clause.
3754 * par-util.adb, par-ch3.adb: Improve error recovery for bad constraint
3755 Improve handling of extra right parens.
3757 2007-08-14 Robert Dewar <dewar@adacore.com>
3759 * par-tchk.adb (TF_Semicolon): Improve error recovery
3761 2007-08-14 Robert Dewar <dewar@adacore.com>
3762 Ed Schonberg <schonberg@adacore.com>
3764 * sem_attr.ads, sem_attr.adb (Analyze_Attribute, case Value): For
3765 enumeration type, mark all literals as referenced.
3766 (Eval_Attribute, case 'Image): If the argument is an enumeration
3767 literal and names are available, constant-fold but mark nevertheless as
3769 Clean up function names.
3770 (Name_Modifies_Prefix): Rename to Name_Implies_Lvalue_Prefix. Clarify
3772 (Requires_Simple_Name_Prefix): Removed.
3774 2007-08-14 Robert Dewar <dewar@adacore.com>
3775 Ed Schonberg <schonberg@adacore.com>
3777 * sem_ch11.adb: Improved warnings for unused variables
3779 * sem_ch3.ads, sem_ch3.adb (Build_Derived_Record_Type): If the ancestor
3780 is a synchronized interface, the derived type is limited.
3781 (Analyze_Object_Declaration): Mark the potential coextensions in the
3782 definition and expression of an object declaration node.
3783 (Build_Derived_Type): For the completion of a private type declaration
3784 with a derived type declaration, chain the parent type's representation
3785 items to the last representation item of the derived type (not the
3786 first one) if they are not present already.
3787 (Analyze_Object_Declaration, Constant_Redeclaration): Allow incomplete
3788 object declaration of forward references to tags.
3789 (Access_Subprogram_Declaration): In Ada2005, anonymous access to
3790 subprogram types can appear as access discriminants of synchronized
3792 (OK_For_Limited_Init_In_05): The initialization is legal is it is a call
3793 given in prefixed form as a selected component.
3794 (Process_Discriminants): If not all discriminants have defaults, place
3795 error message on a default that is present.
3796 (Analyze_Private_Extension_Declaration): Diagnose properly an attempt to
3797 extend a synchronized tagged type.
3798 Improved warnings for unused variables
3799 (Is_Visible_Component): Fix a visibility hole on a component inherited
3800 by a private extension when parent is itself declared as a private
3801 extension, and the derivation is in a child unit.
3802 (Find_Hidden_Interface): Move spec from the package body.
3804 2007-08-14 Robert Dewar <dewar@adacore.com>
3805 Ed Schonberg <schonberg@adacore.com>
3807 * sem_ch5.adb: Improve warnings on redundant assignments
3809 * sem_util.ads, sem_util.adb: (Is_Variable): Add defense against junk
3811 (Is_Synchronized_Tagged_Type): New subprogram that returns true
3812 in case of synchronized tagged types (AARM 3.9.4 (6/2)).
3813 (Safe_To_Capture_Value): Can now return True for constants, even if Cond
3814 is set to False. Improves handling of Known_[Not_]Null.
3815 (Wrong_Type): Special case address arithmetic attempt
3816 (Collect_Abstract_Interfaces): Add new formal to allow collecting
3817 abstract interfaces just using the partial view of private types.
3818 (Has_Abstract_Interfaces): Add new formal to allow checking types
3819 covering interfaces using the partial view of private types.
3820 (Is_Fully_Initialized_Type): Special VM case for uTag component. This
3821 component still needs to be defined in this case, but is never
3822 initialized as VMs are using other dispatching mechanisms.
3823 (Abstract_Interface_List): For a protected type, use base type to get
3825 Improve warnings on redundant assignments
3826 (Is_Variable): Handle properly an implicit dereference of a prefixed
3828 (Build_Actual_Subtype): If this is an actual subtype for an
3829 unconstrained formal parameter, use the sloc of the body for the new
3830 declaration, to prevent anomalises in the debugger.
3832 2007-08-14 Robert Dewar <dewar@adacore.com>
3834 * sem_elim.adb (Set_Eliminated): Ignore pragma Eliminate for
3835 dispatching operation
3837 2007-08-14 Ed Schonberg <schonberg@adacore.com>
3838 Gary Dismukes <dismukes@adacore.com>
3841 exp_aggr.adb (Convert_Aggr_In_Allocator): Use Insert_Actions to place
3842 expanded aggregate code before allocator, and ahead of declaration for
3843 temporary, to prevent access before elaboration when the allocator is
3844 an actual for an access parameter.
3845 (Is_Static_Dispatch_Table_Aggregate): Handle aggregates initializing
3846 the TSD and the table of interfaces.
3847 (Convert_To_Assignments): Augment the test for delaying aggregate
3848 expansion for limited return statements to include the case of extended
3849 returns, to prevent creation of an unwanted transient scope.
3850 (Is_Static_Dispatch_Table_Aggregate): New subprogram.
3851 (Expand_Array_Aggregate): Handle aggregates associated with
3852 statically allocated dispatch tables.
3853 (Expand_Record_Aggregate): Handle aggregates associated with
3854 statically allocated dispatch tables.
3855 (Gen_Ctrl_Actions_For_Aggr): Generate a finalization list for allocators
3856 of anonymous access type.
3858 2007-08-14 Ed Schonberg <schonberg@adacore.com>
3860 * exp_ch5.adb (Expand_Assign_Array): If source or target of assignment
3861 is a variable that renames a slice, use the variable itself in the
3862 expannsion when the renamed expression itself may be modified between
3863 the declaration of the renaming and the array assignment.
3865 2007-08-14 Jerome Guitton <guitton@adacore.com>
3867 * s-taprop-lynxos.adb, s-taprop-tru64.adb, s-taprop-irix.adb,
3868 s-taprop-hpux-dce.adb, s-taprop-dummy.adb, s-taprop-solaris.adb,
3869 s-taprop-vms.adb, s-taprop-posix.adb (Continue_Task, Stop_All_Tasks):
3870 New functions; dummy implementations.
3872 * s-osinte-vxworks.ads (Task_Stop, Task_Cont, Int_Lock, Int_Unlock): New
3873 functions, used to implement the multi-tasks mode routines on VxWorks.
3875 * s-osinte-vxworks.adb, s-osinte-vxworks6.adb (Task_Cont, Task_Stop):
3877 binding to the VxWorks routines which have changed between VxWorks 5
3879 (Int_Lock, Int_Unlock): New function, thin binding to kernel routines
3880 which are not callable from a RTP.
3882 * s-taprop-vxworks.adb (Stop_All_Tasks, Continue_Task): New functions,
3883 implemented for the multi-tasks mode on VxWorks 5 and 6.
3885 * s-taprop.ads (Stop_All_Tasks, Continue_Task): New functions.
3887 * s-tasdeb.ads, s-tasdeb.adb (Continue_All_Tasks, Stop_All_Tasks): New
3890 2007-08-14 Vincent Celier <celier@adacore.com>
3892 * clean.adb, fmap.adb, sinput-p.adb, sinput-p.ads, gnatcmd.adb,
3893 gnatname.adb, makeutl.ads, makeutl.adb, makegpr.adb, mlib-tgt-vms.adb
3894 mlib-tgt-darwin.adb, mlib-tgt-lynxos.adb, mlib-prj.adb, mlib-tgt.adb,
3895 mlib-tgt.ads, mlib-tgt-irix.adb mlib-tgt-hpux.adb, mlib-tgt-linux.adb,
3896 mlib-tgt-solaris.adb, mlib-tgt-vms-alpha.adb, mlib-tgt-vms-ia64.adb,
3897 mlib-tgt-mingw.adb, mlib-tgt-vxworks.adb, mlib-tgt-aix.adb,
3898 mlib-tgt-tru64.adb, mlib.ads, mlib.adb (Create_Sym_Links): New
3900 (Major_Id_Name): New function.
3901 mlib-tgt.ads/mlib.tgt.adb:
3902 (Library_Major_Minor_Id_Supported): New function, default returns True
3903 Most mlib-tgt-*.adb that support shared libraries and symbolic links:
3904 (Build_Dynamic_Library): Add support for major/minor ids for shared libs
3905 Other mlib-tgt-*.adb (aix, mingw, vms, vxworks, xi):
3906 Implementation of Library_Major_Minor_Id_Supported returns False
3908 (Clean_Library_Directory): If major/minor ids are supported, clean all
3910 Major update of the Project Manager and of the project aware tools,
3911 including gprmake, so that the same sources in the GNAT repository
3912 can be used by gprbuild.
3914 2007-08-14 Olivier Hainque <hainque@adacore.com>
3916 * system-solaris-x86.ads (ZCX_By_Default): Switch to True.
3917 (GCC_ZCX_Support): Switch to True.
3919 * s-intman-solaris.adb (Notify_Exception): Call
3920 Adjust_Context_For_Raise before raising, as expected for signal
3921 handlers in general.
3923 * s-intman-posix.adb (Notify_Exception): Remove declaration of
3924 Adjust_Context_For_Raise, moved to the spec of this unit to be visible
3925 to other implementation bodies.
3927 * s-intman.ads (Adjust_Context_For_Raise): Declare and import here, to
3928 be visible by multiple implementation bodies.
3930 * init.c [VMS section] (__gnat_handle_vms_condition): Adjust context
3931 only for conditions coming from hardware.
3932 [alpha-tru64 section] (__gnat_adjust_context_for_raise): Implement,
3933 adjustments to signal context prior to exception raise from signal
3935 (__gnat_map_signal for VxWorks): Map SIGSEGV to Storage_Error in RTP
3937 Solaris section: (__gnat_adjust_context_for_raise): New function.
3938 Implementation of the machine context adjustments to perform prior to
3939 raise from a signal handler. Version for both sparc and x86.
3940 (HAVE_GNAT_ADJUST_CONTEXT_FOR_RAISE): Define.
3941 (__gnat_error_handler): Expect a third argument, ucontext_t *. Adjust it
3942 prior to raising as expected for any handler, before possible nested
3943 faults to make sure all the contexts in a chain have been adjusted by
3944 the time we propagate.
3946 2007-08-14 Pascal Obry <obry@adacore.com>
3948 * s-osinte-mingw.ads: Add support for Ada.Execution_Time on Windows.
3949 (SYSTEM_INFO): New record.
3950 (SetThreadIdealProcessor): New imported routine needed for supporting
3951 task_info pragma on Windows.
3953 * s-taprop-mingw.adb (Enter_Task): Check if CPU number given in task
3954 info can be applied to the current host.
3955 (Create_Task): Set the ideal processor if information is present.
3957 * s-tasinf-mingw.adb, s-tasinf-mingw.ads,
3958 a-exetim-mingw.adb, a-exetim-mingw.ads: New files.
3960 2007-08-14 Olivier Hainque <hainque@adacore.com>
3962 * s-taprop-linux.adb (Get_Stack_Attributes): New subprogram. Fetch the
3963 stack size and initial stack pointer value for a given task.
3964 (Enter_Task): Get the stack attributes of the task we are entering and
3965 let the stack checking engine know about them.
3967 * s-stchop.adb, s-stchop.ads (Notify_Stack_Attributes): New subprogram.
3968 Let the stack-checking engine know about the initial sp value and stack
3969 size associated with the current task.
3970 (Set_Stack_Info): If a stack base has been notified for the current
3971 task, honor it. Fallback to the previous less accurate method otherwise.
3973 * s-stchop-vxworks.adb (Notify_Stack_Attributes): Dummy body.
3975 2007-08-14 Ed Schonberg <schonberg@adacore.com>
3977 * sem_ch10.adb: Create a limited view of an incomplete type, to make
3978 treatment of limited views uniform for all visible declarations in a
3979 limited_withed package.
3980 Set flag indicating that a subprogram body for a child unit has a
3982 (Analyze_Compilation_Unit): If unit is a subprogram body that has no
3983 separate declaration, remove the unit name from visibility after
3984 compilation, so that environment is clean for subsequent compilations.
3985 (Install_Limited_Context_Clauses): Do not install a
3986 limited_private_with_clause unless the current unit is a body or a
3988 (Analyze_Subunit, Install_Parents): Treat generic and non-generic units
3989 in the same fashion.
3990 (Install_Limited_Withed_Unit): Do not install a limited with clause if
3991 it applies to the declaration of the current package body.
3992 (Remove_Private_With_Clauses): If there is a regular with_clause for
3993 the unit, delete Private_With_Clause from context, to prevent improper
3994 hiding when processing subsequent nested packages and instantiations.
3996 2007-08-14 Jose Ruiz <ruiz@adacore.com>
3998 * adaint.c (__gnat_is_absolute_path): For VxWorks systems we accept
3999 dir/file, device:/dir/file, and device:drive_letter:/dir/file as
4000 representing absolute path names.
4001 __gnat_set_file_time_name [VMS]: Fix some 64/32 bit issues.
4003 * cstreams.c (__gnat_full_name for VxWorks): Use
4004 __gnat_is_absolute_path to detect whether we need to add the current
4005 directory to normalize the path.
4007 2007-08-14 Javier Miranda <miranda@adacore.com>
4010 a-tags.adb (Displace): Associate a message with the raised CE
4012 (To_Addr_Ptr, To_Address, To_Dispatch_Table_Ptr,
4013 To_Object_Specific_Data_Ptr To_Predef_Prims_Ptr,
4014 To_Tag_Ptr, To_Type_Specific_Data_Ptr): Moved here from the package
4016 (Default_Prim_Op_Count): Removed.
4017 (IW_Membership, Get_Entry_Index, Get_Offset_Index, Get_Prim_Op_Kind,
4018 Register_Tag, Set_Entry_Index, Set_Offset_To_Top, Set_Prim_Op_Kind):
4019 Remove pragma Inline_Always.
4021 * rtsfind.ads (Default_Prim_Op_Count): Removed
4022 (Max_Predef_Prims): New entity
4023 (RE_Expanded_Name): Removed
4024 (RE_HT_Link): Removed
4025 (RE_Iface_Tag): Remmoved
4026 (RE_Ifaces_Table): Removed
4027 (RE_Interfaces_Array): Removed
4028 (RE_Interface_Data_Element): Removed
4029 (RE_Nb_Ifaces): Removed
4030 (RE_RC_Offset): Removed
4031 (RE_Static_Offset_To_Top): Removed
4033 * exp_atag.ads, exp_atag.adb (Build_Inherit_Prims): Addition of a new
4035 (Build_Inherit_Predefined_Prims): Replace occurrences of Default_
4036 Prim_Op_Count by Max_Predef_Prims.
4038 2007-08-14 Thomas Quinot <quinot@adacore.com>
4039 Vincent Celier <celier@adacore.com>
4041 * binde.adb (Elab_All_Links): Remove unnecessary call to
4042 Generic_Separately_Compiled (if a unit satisfies this predicate, there
4043 won't be an associated Afile).
4044 (Elab_All_Links): Fail if a referenced unit cannot be found
4047 Fix comments in bindgen regarding consistency checks done in Bcheck:
4048 the checks are made across units within a partition, not across several
4050 Fix generation of C binder file for VxWorks.
4052 * lib.ads, lib.adb (Generic_Separately_Compiled): Rename to
4053 Generic_May_Lack_ALI, more descriptive of the current use of the
4054 predicate, and update documentation.
4056 * lib-writ.ads, lib-writ.adb (Write_With_Lines): Minor code
4057 reorganization and documentation update for the case of predefined
4058 library generics (for which we do not reference an Afile).
4060 2007-08-14 Robert Dewar <dewar@adacore.com>
4062 * s-intman-irix.adb, s-osinte-irix.adb, s-osinte-irix.ads,
4063 s-proinf-irix-athread.ads, s-osinte-hpux-dce.adb, s-osinte-hpux-dce.ads,
4064 s-parame-hpux.ads, s-intman-dummy.adb, s-tasinf-solaris.adb,
4065 s-tasinf-solaris.ads, s-asthan-vms-alpha.adb, s-inmaop-vms.adb,
4066 s-intman-vms.adb, s-intman-vms.ads, s-osprim-mingw.adb,
4067 s-parame-vms-restrict.ads, s-parame-ae653.ads, s-intman-vxworks.ads,
4068 s-intman-vxworks.ads, s-intman-vxworks.adb, s-parame-vxworks.ads,
4069 s-tfsetr-vxworks.adb, s-interr.adb, s-interr.ads, a-tasatt.adb,
4070 exp_ch13.adb, s-htable.ads, s-imgboo.ads, s-imglli.ads, s-imgllu.ads,
4071 s-imguns.ads, g-eacodu.adb, par-ch12.adb, s-stache.ads, s-stausa.adb,
4072 s-poosiz.adb, s-parame.ads, s-mastop.ads, s-osinte-darwin.ads,
4073 a-chtgke.adb, s-asthan-vms-alpha.adb, s-parame-vms-alpha.ads,
4074 s-parame-vms-ia64.ads, s-parame-vxworks.adb, s-except.ads,
4075 g-altcon.adb: Minor reformatting
4077 ada-tree.h: Delete empty line.
4079 ali.ads: Minor reformatting
4080 Clarification of comments.
4081 Minor spelling correction
4083 * exp_dbug.adb: Add Warnings Off to suppress new warning
4085 * a-witeio.adb (Write): Add Warnings (Off) for unneeded IN OUT mode
4088 * a-strunb.adb (Set_Unbounded_String): Avoid memory leak by freeing old
4091 * a-textio.adb (Write): Remove an unnecessary IN OUT mode from
4093 * a-textio.ads: Reorder the standard input/output/error declarations
4096 * g-dirope.adb, g-dirope.ads: Change Dir to mode IN for Open call
4098 * par-ch2.adb: Recognize RM specially in errout
4099 Change 'R'M to RM in all error messages
4101 * scng.adb: Recognize RM specially in errout
4103 * sem.ads, sem.adb, exp_strm.adb, exp_ch5.ads, expander.adb: Rename
4104 N_Return node to be N_Simple_Return, to reflect Ada 2005 terminology.
4106 * s-direio.adb: Add missing routine header box.
4108 * sem_attr.ads: Add ??? comments
4110 * sem_eval.adb: Recognize RM specially in errout
4111 Change 'R'M to RM in all error messages
4113 * sem_maps.adb, sem_maps.ads: Remove some unnecessary IN OUT modes
4115 * s-tasinf.ads: Fix minor comment typo.
4117 * a-cihama.adb: Minor comment addition
4119 * a-ztexio.adb (Write): Add Warnings (Off) for unneeded IN OUT mode
4122 * s-tasinf-tru64.ads: Fix minor comment typo.
4124 * itypes.ads: Comment update.
4126 * ali-util.adb: Remove Generic_Separately_Compiled guard, not needed
4129 * argv.c: Added protection against null gnat_argv and gnat_envp.
4131 * bcheck.adb (Check_Consistency): Use correct markup character ({) in
4132 warning message when Tolerate_Consistency_Errors is True.
4134 * cstand.adb (Create_Standard): Do not call Init_Size_Alignment for
4135 Any_Id, as this subprogram is only applicable to *type* entities (it
4136 sets RM_Size). Instead initialize just Esize and Alignment.
4138 2007-08-14 Bob Duff <duff@adacore.com>
4140 * a-cihama.ads, a-cidlli.ads, a-chtgop.ads, a-chtgop.adb, a-cdlili.ads,
4141 a-cihase.adb, a-cihase.ads, a-cohase.adb, a-cohase.ads, a-ciorma.ads,
4142 a-coorma.ads, a-ciormu.ads, a-coormu.ads, a-ciorse.ads, a-cohama.ads,
4143 a-cohata.ads, a-convec.adb, a-coinve.ads, a-coinve.adb, a-convec.ads,
4144 a-coorse.ads (Next): Applied pragma Inline.
4145 Make all Containers packages Remote_Types (unless they are already
4147 (Previous): applied pragma Inline
4148 (Elements_Type): is now a record instead of an array
4150 2007-08-14 Thomas Quinot <quinot@adacore.com>
4152 * table.adb, g-table.adb, g-dyntab.adb (Append): Reimplement in terms
4154 (Set_Item): When the new item is an element of the currently allocated
4155 table passed by reference, save a copy on the stack if we're going
4156 to reallocate. Also, in Table.Set_Item, make sure we test the proper
4157 variable to determine whether to call Set_Last.
4159 * sinput-d.adb, sinput-l.adb, stringt.adb, switch-m.adb,
4160 symbols-vms.adb, symbols-processing-vms-alpha.adb,
4161 symbols-processing-vms-ia64.adb, sem_elab.adb, repinfo.adb: Replace
4162 some occurrences of the pattern
4164 T.Table (T.Last) := Value;
4165 with a cleaner call to
4168 2007-08-14 Ed Schonberg <schonberg@adacore.com>
4169 Gary Dismukes <dismukes@adacore.com>
4170 Thomas Quinot <quinot@adacore.com>
4172 * sem_ch12.ads, sem_ch12.adb (Instantiate_Type): If the formal is a
4173 derived type with interface progenitors use the analyzed formal as the
4174 parent of the actual, to create renamings for all the inherited
4175 operations in Derive_Subprograms.
4176 (Collect_Previous_Instances): new procedure within of
4177 Load_Parent_Of_Generic, to instantiate all bodies in the compilation
4178 unit being loaded, to ensure that the generation of global symbols is
4179 consistent in different compilation modes.
4180 (Is_Tagged_Ancestor): New function testing the ancestor relation that
4181 takes progenitor types into account.
4182 (Validate_Derived_Type_Instance): Enforce the rule of 3.9.3(9) by
4183 traversing over the primitives of the formal and actual types to locate
4184 any abstract subprograms of the actual type that correspond to a
4185 nonabstract subprogram of the formal type's ancestor type(s), and issue
4186 an error if such is found.
4187 (Analyze_Package_Instantiation, Analyze_Subprogram_Instantiation,
4188 Instantiate_Package_Body, Instantiate_Subprogram_Body):
4189 Remove bogus guard around calls to Inherit_Context.
4190 (Reset_Entity): If the entity is the selector of a selected component
4191 that denotes a named number, propagate constant-folding to the generic
4192 template only if the named number is global to the generic unit.
4193 (Set_Instance_Env): Only reset the compilation switches when compiling
4194 a predefined or internal unit.
4196 2007-08-14 Ed Schonberg <schonberg@adacore.com>
4198 * sem_ch4.adb (Try_Class_Wide_Operation): use base type of first
4199 parameter to determine whether operation applies to the prefix.
4200 (Complete_Object_Operation): If actual has an access type and
4201 controlling formal is not an in_parameter, reject the actual if it is
4202 an access_to_constant type.
4203 (Try_Primitive_Operation): If the type of the prefix is a formal tagged
4204 type, the candidate operations are found in the scope of declaration of
4205 the type, because the type has no primitive subprograms.
4206 (Analyze_Selected_Component): If prefix is class-wide, and root type is
4207 a private extension, only examine visible components before trying to
4208 analyze as a prefixed call.
4209 Change Entity_List to Type_To_Use, for better readability.
4210 (Has_Fixed_Op): Use base type when checking whether the type of an
4211 operator has a user-defined multiplication/division
4212 (Check_Arithmetic_Pair): Use Ada 2005 rules to remove ambiguities when
4213 user-defined operators are available for fixed-point types.
4215 2007-08-14 Thomas Quinot <quinot@adacore.com>
4216 Ed Schonberg <schonberg@adacore.com>
4218 * sem_cat.ads, sem_cat.adb (Has_Stream_Attribute_Definition): New
4219 formal At_Any_Place indicating, when True, that we want to test for
4220 availability of the stream attribute at any place (as opposed to the
4221 current visibility context only).
4222 (Missing_Read_Write_Attributes): A stream attribute is missing for the
4223 purpose of enforcing E.2.2(8) only if it is not available at any place.
4224 Take into account the Ada2005 pragma Has_Preelaborable_Initialization
4225 when checking the legality of an extension aggregate in a preelaborable
4226 package. Treat the literal null as a valid default expression in a
4227 component declaration for a type with preelaborable initialization.
4228 A limited interface is a legal progenitor for the designated type of a
4229 remote access to class-wide type.
4231 2007-08-14 Thomas Quinot <quinot@adacore.com>
4232 Ed Schonberg <schonberg@adacore.com>
4234 * sem_ch8.ads, sem_ch8.adb (Find_Type, case of a 'Base attribute
4235 reference): Use correct entity as denoted entity for the selector of
4237 (Find_Direct_Name): Add comment about Generate_Reference incorrectly
4238 setting the Referenced_As_LHS flag for entities that are implicitly
4240 (Find_Type): If the type is an internally generated incomplete type,
4241 mark the full view as referenced, to prevent spurious warnings.
4242 (Find_Selected_Component, Has_Components): Handle properly non-limited
4243 views that are themselves incomplete types.
4244 Handle interfaces visible through limited-with clauses.
4245 (Analyze_Subprogram_Renaming): Disambiguate and set the entity of a
4246 subprogram generic actual for which we have generated a renaming.
4247 Warn when the renaming introduces a homonym of
4248 the renamed entity, and the renamed entity is directly visible.
4250 2007-08-14 Ed Schonberg <schonberg@adacore.com>
4251 Hristian Kirtchev <kirtchev@adacore.com>
4253 * sem_res.adb (Resolve_Allocator): Propagate any coextensions that
4254 appear in the subtree to the current allocator if it is not a static
4256 (Resolve_Allocator): Perform cleanup if resolution has determined that
4257 the allocator is not a coextension.
4258 (Resolve): Skip an interpretation hidden by an abstract operator only
4259 when the type of the interpretation matches that of the context.
4260 (Resolve): When looping through all possible interpretations of a node,
4261 do not consider those that are hidden by abstract operators.
4262 (Resolve_Actuals): When verifying that an access to class-wide object
4263 is an actual for a controlling formal, ignore anonymous access to
4264 subprograms whose return type is an access to class_wide type.
4265 (Resolve_Slice): If the prefix of the slice is a selected component
4266 whose type depends on discriminants, build its actual subtype before
4267 applying range checks on the bounds of the slice.
4268 (Valid_Conversion): In an instance or inlined body, compare root types,
4269 to prevent anomalies between private and public views.
4270 (Resolve): Improve error message for ambiguous fixed multiplication
4271 expressions that involve universal_fixed multiplying operations.
4273 2007-08-14 Javier Miranda <miranda@adacore.com>
4274 Hristian Kirtchev <kirtchev@adacore.com>
4276 * exp_ch9.adb (Build_Protected_Entry): Propagate the original source
4277 location to allow the correct generation of errors in case of
4278 restrictions applied to the expanded code.
4279 (Expand_Entry_Barrier): Remove all generated renamings for a barrier
4280 function if the condition does not reference them.
4281 (Expand_Entry_Body_Declarations): Mark the index constant as having a
4284 2007-08-14 Thomas Quinot <quinot@adacore.com>
4285 Pablo Oliveira <oliveira@adacore.com>
4287 * exp_dist.adb (PolyORB_Support.Build_TypeCode_Function): When creating
4288 typecode parameters for a union (in a variant record), remove
4289 extraneous layer of Any wrapping for member label.
4290 (Expand_Receiving_Stubs_Bodies): For an RCI package body that has
4291 elabration statements, register the package with the name server
4292 at the beginning, not at the end, of the elaboration statements so
4293 that they can create remote access to subprogram values that designate
4294 remote subprograms from the package.
4296 2007-08-14 Hristian Kirtchev <kirtchev@adacore.com>
4298 * g-catiio.adb (Image): For the case of %s, use Ada.Calendar.Time
4299 values to compute the number of seconds since the Unix Epoc in order to
4300 account for Daylight Savings Time. Perform special processing for dates
4301 that are earlier than the Unix Epoc to obtain a negative number.
4303 2007-08-14 Emmanuel Briot <briot@adacore.com>
4305 * g-comlin.adb (Getopt): Fix handling of "*" switch when not collapsing
4308 2007-08-14 Eric Botcazou <ebotcazou@adacore.com>
4310 * gnatlink.adb (Gnatlink): Pass switches to the linker even if the
4311 binder-generated file is not in Ada.
4312 Pass -mrtp to the linker if it is GCC and --RTS=rtp has been
4313 recorded in the ALI file.
4314 Pass -fsjlj to the linker if it is GCC and --RTS=sjlj has been recorded.
4316 2007-08-14 Vincent Celier <celier@adacore.com>
4318 * gnatls.adb: (Corresponding_Sdep_Entry): Always return a value
4319 (Output_Source): Do nothing if parameter is No_Sdep_Id
4321 * make.adb (Gnatmake): Do not rebuild an archive simply because a
4322 shared library it imports has a later time stamp.
4323 (Check): Resolve the symbolic links in the path name of the object
4325 Check that the ALI file is in the correct object directory
4326 Check if a file name does not correspond to the mapping of units
4328 (Display_Version): New procedure
4329 (Initialize): Process switches --version and --help
4330 Use type Path_Name_Type for path name
4332 2007-08-14 Paul Hilfinger <hilfinger@adacore.com>
4334 * impunit.adb: Re-organize System.Random_Numbers and
4335 GNAT.Random_Numbers and add to builds.
4337 * Makefile.rtl: Add s-rannum.ad* and g-rannum.ad*, a-assert*
4339 * s-rannum.ads, s-rannum.adb, g-rannum.ads, g-rannum.adb: New files.
4341 * a-assert.ads, a-assert.adb: New files.
4343 2007-08-14 Gary Dismukes <dismukes@adacore.com>
4345 * layout.adb (Layout_Type): In the case of access-to-subprogram types,
4346 if AAMP_On_Target is True, then the size of the type encompasses two
4347 addresses (a static link and a subprogram address), except in the case
4348 of library-level access types.
4350 2007-08-14 Vincent Celier <celier@adacore.com>
4352 * output.ads, output.adb (Write_Eol): Remove trailing spaces before
4354 (Write_Eol_Keep_Blanks): New procedure to write a line, including
4355 possible trailing spaces.
4356 (Output_Source_Line): Call Write_Eol_Keep_Blanks to output a source line
4358 2007-08-14 Javier Miranda <miranda@adacore.com>
4360 * par-ch6.adb (P_Formal_Part): Fix wrong error message associated with
4361 null-excluding access types.
4363 2007-08-14 Javier Miranda <miranda@adacore.com>
4365 * sem_ch9.adb (Check_Interfaces): New subprogram that factorizes code
4366 that is common to Analyze_Protected_Type and Analyze_Task_Type. In case
4367 of private types add missing check on matching interfaces in the
4368 partial and full declarations.
4369 (Analyze_Protected_Type): Code cleanup.
4370 (Analyze_Task_Type): Code cleanup.
4372 2007-08-14 Javier Miranda <miranda@adacore.com>
4374 * sem_disp.adb (Check_Dispatching_Operation): Do not emit warning on a
4375 generated interface thunk.
4377 2007-08-14 Ed Schonberg <schonberg@adacore.com>
4379 * s-ficobl.ads: Declare AFCB as a tagged incomplete type, to prevent
4380 obsolescent warning on application of 'Class to an incomplete type.
4382 * s-finroo.ads: Declare Root_Controlled as a tagged incomplete type, to
4383 prevent obsolescent warning on application of 'Class to an incomplete
4386 2007-08-14 Pascal Obry <obry@adacore.com>
4388 * s-fileio.adb (Is_Open): Add check for usability of the underlying
4391 2007-08-14 Cyrille Comar <comar@adacore.com>
4393 * s-finimp.adb (Detach_From_Final_List): make this procedure idempotent
4394 since it is potentially used in cases implying double finalization of
4397 2007-08-14 Jose Ruiz <ruiz@adacore.com>
4399 * s-tasini.adb (Get_Stack_Info): Move this function to
4400 System.Soft_Links.Tasking because it is common to the full and the
4401 restricted run times.
4402 (Init_RTS): Do not set the Get_Stack_Info soft link because it is done
4403 in SSL.Tasking.Init_Tasking_Soft_Links.
4405 * s-solita.adb (Get_Stack_Info): Function moved from
4406 System.Tasking.Initialization because it is common to the full and the
4407 restricted run times.
4408 (Init_Tasking_Soft_Links): Set the tasking soft link for Get_Stack_Info.
4410 2007-08-14 Arnaud Charlet <charlet@adacore.com>
4412 * s-tpobop.ads, s-tpobop.adb, s-tasren.ads, s-tasren.adb,
4413 s-taskin.ads (Requeue_With_Abort): Rename field With_Abort.
4414 (PO_Do_Or_Queue, Task_Do_Or_Queue, Requeue_Call): Remove With_Abort
4417 * s-tassta.adb (Task_Wrapper): Increased value of the small overflow
4420 2007-08-14 Gary Dismukes <dismukes@adacore.com>
4422 * s-veboop.adb (SU): New named number initialized to
4423 System.Storage_Unit.
4424 (True_Val): The initialization expression is revised to use SU (=
4425 Storage_Unit) rather than assuming 8 for the component size of an
4426 unpacked Boolean array.
4428 2007-08-14 Tristan Gingold <gingold@adacore.com>
4430 * tracebak.c: Use tb-ivms.c on OpenVMS Itanium.
4432 * tb-ivms.c: New file.
4434 * g-trasym-vms-ia64.adb: Fixed for OpenVMS version 8.2
4436 2007-08-14 Geert Bosch <bosch@adacore.com>
4438 * i-forbla.ads, i-forbla.adb, a-ngcoar.adb, a-ngcoar.ads, i-forlap.ads,
4439 s-gearop.adb, s-gecobl.adb, s-gecobl.ads, s-gerela.adb, s-gerela.ads:
4440 Add required linker pragmas for automatically linking with the gnalasup
4441 linear algebra support library, and the systems math library.
4442 Rename cdot to cdotu and zdot to zdotu.
4443 Update header comment to describe purpose of package.
4445 2007-08-14 Thomas Quinot <quinot@adacore.com>
4447 * exp_ch7.adb (Find_Final_List): For an anonymous access type that has
4448 an explicitly specified Associated_Final_Chain, use that list.
4449 (Expand_N_Package_Body): Build dispatch tables of library level tagged
4451 (Expand_N_Package_Declaration): Build dispatch tables of library level
4452 tagged types. Minor code cleanup.
4454 2007-08-14 Vincent Celier <celier@adacore.com>
4456 * gnatchop.adb (Terminate_Program): Remove exception and use
4457 Types.Terminate_Program instead.
4459 * osint.ads, osint.adb (Current_Exit_Status): New global variable
4460 (Find_Program_Name): Added protection against empty name.
4461 (OS_Exit_Through_Exception): New procedure
4463 * s-os_lib.ads, s-os_lib.adb (OS_Exit): New procedure body
4464 (OS_Exit_Default): New procedure that contains the previous
4465 implementation of procedure OS_Exit.
4466 (Final_Value): Remove obsolete Interix stuff.
4468 2007-08-14 Thomas Quinot <quinot@adacore.com>
4470 * g-socket.ads: Reorganize example code so that it also works on
4473 2007-08-14 Tristan Gingold <gingold@adacore.com>
4475 * g-trasym.ads: AIX now supports symbolic backtraces.
4477 2007-08-14 Ed Schonberg <schonberg@adacore.com>
4479 * lib-load.adb (From_Limited_With_Chain): Always scan the stack of
4480 units being loaded to detect circularities. A circularity may be
4481 present even if the current chain of pending units to load starts from
4482 a limited_with_clause.
4484 * lib-load.ads: Change profile of Load_Unit to use a with_clause
4485 rather than a boolean flag, in order to detect circularities in
4488 * par-load.adb: Use current with_clause in calls to Load_Unit, rather
4489 than propagating the From_Limited_With flag, in order to handle
4490 properly circularities involving with_clauses.
4492 2007-08-14 Nicolas Setton <setton@adacore.com>
4494 * link.c (FreeBSD): Add "const" keyword where needed, to eliminate
4497 2007-08-14 Arnaud Charlet <charlet@adacore.com>
4499 * Makefile.in: GNATRTL_LINEARALGEBRA_OBJS: New variable holding objects
4500 to build for libgnala.
4501 libgnat: Add rules to build libgnala.a
4502 (LIBGNAT_TARGET_PAIRS for VxWorks): Remove s-osinte-vxworks.adb from
4503 target pairs of the VxWorks 6 kernel runtime, use it only for VxWorks 5.
4504 Add s-osinte-vxworks-kernel.adb to the target pairs of the
4505 kernel run-time lib for VxWorks 6, which would provide a different
4506 implementation for Task_Cont and Task_Stop than the VxWorks 5 version.
4507 x86-solaris section (EH_MECHANISM): Set to -gcc, as this port is now
4508 running ZCX by default.
4509 Add g-sttsne-locking to LynxOS version.
4510 Remove g-sttsne-vxworks.ads; use g-sttsne-locking.ads instead.
4511 On x86/darwin, use a-numaux-x86.ad? and system-darwin-x86.ads.
4513 * system-darwin-x86.ads: New file.
4515 * Make-lang.in: Delete files before copying onto them, so if they are
4516 read-only, the copy won't fail.
4519 2007-08-14 Pascal Obry <obry@adacore.com>
4521 * mdll-fil.adb, * mdll.adb: Implement a more consistent libraries
4524 2007-08-14 Vincent Celier <celier@adacore.com>
4526 * mlib-utl.adb (Gcc_Name): Change from constant String to String_Access
4527 (Gcc): Initialize Gcc_Name at the first call
4529 2007-08-14 Ed Schonberg <schonberg@adacore.com>
4531 * sem_ch7.adb (Analyze_Package_Specification): Do not install private
4532 with_clauses of the enclosing unit when analyzing the package
4533 specification of a nested instance.
4535 2007-08-14 Hristian Kirtchev <kirtchev@adacore.com>
4537 * sinfo.ads, sinfo.adb (Is_Coextension, Set_Is_Coextension): Removed.
4538 (Is_Dynamic_Coextension, Set_Is_Dynamic_Coextension): New routines.
4539 Remove flag Is_Coextension. Add flag Is_Dynamic_Coextension. Update the
4540 layout of N_Allocator.
4542 2007-08-14 Thomas Quinot <quinot@adacore.com>
4544 * rtsfind.adb (Check_RPC): Add PCS version check.
4546 * gnatvsn.ads, gnatvsn.adb: Add PCS version.
4547 (Gnat_Free_Software): New function.
4549 * sem_dist.ads, sem_dist.adb (Get_PCS_Version): New subprogram. Returns
4550 the PCS_Version value from s-parint, used to check that it is consistent
4551 with what exp_dist expects.
4553 * s-parint.ads (PCS_Version): New entity for checking consistency
4554 between exp_dist and PCS.
4556 * gen-soccon.c: (SO_REUSEPORT): New constant.
4558 2007-08-14 Hristian Kirtchev <kirtchev@adacore.com>
4560 * a-calfor.adb (Image (Duration; Boolean)): Change type of local
4561 variable Sub_Second to Duration in order to accomodate a larger range
4562 of arithmetic operations.
4564 2007-08-14 Bob Duff <duff@adacore.com>
4566 * g-sttsne-locking.ads: Move comments from spec to body.
4567 * g-sttsne-locking.adb: Move comments from spec to body.
4568 * g-sttsne-vxworks.ads: Removed.
4569 * g-sttsne-vxworks.adb: Removed.
4571 2007-08-11 Ian Lance Taylor <iant@google.com>
4573 * misc.c (gnat_get_alias_set): Change return type to
4576 2007-08-11 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
4578 * decl.c, utils2.c: Fix whitespace in last change.
4580 2007-08-11 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
4582 * decl.c (compare_field_bitpos): Constify.
4583 * utils2.c (compare_elmt_bitpos): Likewise.
4585 2007-07-27 Aurelien Jarno <aurelien@aurel32.net>
4587 * s-osinte-kfreebsd-gnu.ads ((sigset_t_ptr): Removed, replaced by
4588 anonymous access type.
4589 (pthread_sigmask): Now take an access sigset_t.
4591 2007-07-05 Joel Sherrill <joel.sherrill@oarcorp.com>
4593 * s-osinte-rtems.ads: Correct prototype of pthread_sigmask.
4595 2007-06-21 Eric Botcazou <ebotcazou@adacore.com>
4597 PR tree-optimization/25737
4598 * misc.c (gnat_post_options): Do not force flag_tree_salias to 0.
4600 2007-06-15 Andrew Pinski <andrew_pinski@playstation.sony.com>
4602 * trans.c (Attribute_to_gnu): When subtracting an
4603 offset from a pointer, use POINTER_PLUS_EXPR with
4604 NEGATE_EXPR instead of MINUS_EXPR.
4605 (gnat_to_gnu): Likewise.
4606 * utils.c (convert): When converting between
4607 thin pointers, use POINTER_PLUS_EXPR and sizetype
4609 * utils2.c (known_alignment): POINTER_PLUS_EXPR
4610 have the same semantics as PLUS_EXPR for alignment.
4611 (build_binary_op): Add support for the semantics of
4612 POINTER_PLUS_EXPR's operands.
4613 When adding an offset to a pointer, use POINTER_PLUS_EXPR.
4615 2007-06-11 Rafael Ávila de Espíndola <espindola@google.com>
4617 * trans.c (Attribute_to_gnu): Use signed_or_unsigned_type_for instead
4618 of get_signed_or_unsigned_type.
4619 * misc.c (LANG_HOOKS_SIGNED_TYPE): Remove.
4621 2007-06-11 Bob Duff <duff@adacore.com>
4622 Thomas Quinot <quinot@adacore.com>
4624 * g-stsifd-sockets.adb (Create): Work around strange behavior of
4625 'bind' on windows that causes 'connect' to fail intermittently, by
4626 retrying the 'bind'.
4627 (GNAT.Sockets.Thin.Signalling_Fds): New procedure Close.
4629 2007-06-10 Duncan Sands <baldrick@free.fr>
4631 * decl.c (gnat_to_gnu_entity): Use pointers to dummy nodes, rather
4632 than to void, for the fields when making a new fat pointer type.
4633 (gnat_substitute_in_type): Now substitute_in_type.
4634 * gigi.h (gnat_substitute_in_type): Likewise. Adjust recursive calls.
4635 * trans.c (gnat_gimplify_expr): Remove COMPONENT_REF kludge.
4636 * utils.c (update_pointer_to): Update fat pointers by updating the
4637 dummy node pointers used for the fields.
4639 2007-06-06 Thomas Quinot <quinot@adacore.com>
4640 Bob Duff <duff@adacore.com>
4642 * g-soccon-freebsd.ads, g-soccon-vxworks.ads:,
4643 g-soccon-aix.ads, g-soccon-irix.ads, g-soccon-hpux.ads,
4644 g-soccon-solaris.ads, g-soccon-vms.ads, g-soccon-tru64.ads: Add new
4645 constant Thread_Blocking_IO, always True by default, set False
4646 on a per-runtime basis.
4647 (Need_Netdb_Buffer): New constant.
4649 * g-stheme.adb, g-sttsne.ads, g-sttsne-locking.ads,
4650 g-sttsne-locking.adb, g-sttsne-vxworks.ads, g-sttsne-vxworks.adb: New
4653 * g-socthi-vxworks.ads, g-socthi-vxworks.adb,
4654 g-socthi-vms.ads, g-socthi-vms.adb (Safe_Gethostbyname,
4655 Safe_Gethostbyaddr, Safe_Getservbyname, Safe_Getservbyport): Use new
4656 child package Task_Safe_NetDB
4657 (Host_Error_Messages): Add stub body.
4658 (GNAT.Sockets.Thin.Signalling_Fds): New procedure Close.
4660 * g-soccon-mingw.ads: Add Windows-specific constants.
4661 (Need_Netdb_Buffer): New constant.
4662 (GNAT.Sockets.Thin.C_Inet_Addr, Windows version): Remove useless Ada
4663 wrapper and import inet_addr(3) from the standard sockets library
4665 (In_Addr): Add alignment clause.
4666 (GNAT.Sockets.Thin.Signalling_Fds): New procedure Close.
4668 2007-06-06 Robert Dewar <dewar@adacore.com>
4670 * a-taster.adb, s-osinte-hpux.ads, s-osinte-solaris-posix.ads,
4671 s-osinte-irix.ads, s-interr-sigaction.adb, s-mastop-irix.adb,
4672 s-osinte-hpux-dce.ads, s-osinte-interix.ads, s-osinte-solaris.ads,
4673 s-taspri-solaris.ads, s-inmaop-vms.adb, s-interr-vms.adb,
4674 s-mastop-vms.adb, s-osinte-vms.ads, s-tpopde-vms.adb,
4675 s-osinte-mingw.ads, s-interr-vxworks.adb, i-cstrea-vms.adb,
4676 a-diocst.adb, a-direio.adb, a-interr.adb, a-sequio.adb, a-siocst.adb,
4677 a-ssicst.adb, a-storio.adb, a-ststio.adb, a-stwima.adb, a-tasatt.adb,
4678 a-taside.adb, a-tiocst.adb, a-witeio.adb, a-wtcstr.adb, g-crc32.adb,
4679 g-dirope.adb, g-dyntab.adb, g-memdum.adb, g-regexp.adb, g-spipat.adb,
4680 g-spitbo.adb, g-string.adb, g-string.ads, g-table.adb, g-thread.adb,
4681 i-cobol.adb, i-cpoint.adb, i-cstrea.adb, i-cstrin.adb, i-pacdec.adb,
4682 s-addima.adb, s-arit64.adb, s-auxdec.adb, s-auxdec.ads,
4683 s-auxdec-vms_64.ads, s-carsi8.adb, s-carun8.adb, s-casi16.adb,
4684 s-casi32.adb, s-casi64.adb, s-caun16.adb, s-caun32.adb, s-caun64.adb,
4685 s-direio.adb, s-fileio.adb, s-finimp.ads, s-geveop.adb, s-imgenu.adb,
4686 s-pack03.adb, s-pack05.adb, s-pack06.adb, s-pack07.adb, s-pack09.adb,
4687 s-pack10.adb, s-pack11.adb, s-pack12.adb, s-pack13.adb, s-pack14.adb,
4688 s-pack15.adb, s-pack17.adb, s-pack18.adb, s-pack19.adb, s-pack20.adb,
4689 s-pack21.adb, s-pack22.adb, s-pack23.adb, s-pack24.adb, s-pack25.adb,
4690 s-pack26.adb, s-pack27.adb, s-pack28.adb, s-pack29.adb, s-pack30.adb,
4691 s-pack31.adb, s-pack33.adb, s-pack34.adb, s-pack35.adb, s-pack36.adb,
4692 s-pack37.adb, s-pack38.adb, s-pack39.adb, s-pack40.adb, s-pack41.adb,
4693 s-pack42.adb, s-pack43.adb, s-pack44.adb, s-pack45.adb, s-pack46.adb,
4694 s-pack47.adb, s-pack48.adb, s-pack49.adb, s-pack50.adb, s-pack51.adb,
4695 s-pack52.adb, s-pack53.adb, s-pack54.adb, s-pack55.adb, s-pack56.adb,
4696 s-pack57.adb, s-pack58.adb, s-pack59.adb, s-pack60.adb, s-pack61.adb,
4697 s-pack62.adb, s-pack63.adb, s-pooloc.adb, s-poosiz.adb, s-scaval.adb,
4698 s-sequio.adb, s-shasto.adb, s-stalib.ads, s-stratt.adb, s-strcom.adb,
4699 s-taasde.adb, s-tasdeb.adb, s-tasuti.ads, s-tataat.ads, s-tpoben.ads,
4700 s-valenu.adb, s-widenu.adb, s-wwdenu.adb, s-addope.adb, a-stzmap.adb,
4701 a-ztcstr.adb, a-ztexio.adb, s-osinte-linux-hppa.ads: Replace
4702 Unchecked_* by Ada.Unchecked_*
4704 2007-06-06 Robert Dewar <dewar@adacore.com>
4706 * g-string.adb, s-proinf-irix-athread.adb, s-gloloc-mingw.adb,
4707 s-tfsetr-default.adb, gnatfind.adb, gnatxref.adb, gprep.adb,
4708 g-regexp.adb, g-regexp.ads, g-regpat.ads, g-tasloc.adb, g-tasloc.ads,
4709 output.adb, switch-m.ads, tree_in.ads, tree_io.ads, indepsw.ads,
4710 g-utf_32.adb, g-utf_32.ads, a-wichun.adb, a-wichun.ads, a-zchuni.adb,
4711 a-zchuni.ads: Replace GNAT.xxx by System.xxx when appropriate.
4713 * s-utf_32.adb, s-utf_32.ads, s-os_lib.adb, s-os_lib.ads, s-regexp.adb,
4714 s-regexp.ads, s-regpat.adb, s-regpat.ads, s-string.adb, s-string.ads,
4715 s-tasloc.adb, s-tasloc.ads: New files.
4717 2007-06-06 Bob Duff <duff@adacore.com>
4720 (Send_Signal, Close): Raise Invalid_Process if the process id is invalid.
4721 * g-expect.ads, g-expect.adb (Send): Avoid useless copy of the string.
4722 (Send_Signal, Close): Raise Invalid_Process if the process id is
4724 (Pattern_Matcher_Access): Is now a general access type to be able to
4727 2007-06-06 Thomas Quinot <quinot@adacore.com>
4728 Arnaud Charlet <charlet@adacore.com>
4730 * a-intnam-aix.ads: Adjust comment to account for SIGADAABORT change
4731 (SIGEMT is now used instead of SIGTERM on AIX).
4733 * s-osinte-aix.ads (Linker_Options): Use -pthread instead of -lpthreads.
4734 (Time_Slice_Supported): Set to True.
4735 Use SIGEMT instead of SIGTERM as SIGADAABORT.
4737 2007-06-06 Hristian Kirtchev <kirtchev@adacore.com>
4739 * a-calend.ads, a-calend.adb, a-calend-vms.ads, a-calend-vms.adb ("-"
4740 (Time, Time)): Use To_Relative_Time rather than manual calculation to
4741 express the bounds of Duration as Time. Raise Time_Error when the
4742 result is greater or equal to the higher bound of Duration (on the
4744 ("+" (Time, Duration)): Reorder code. Remove the declaration of constant
4746 ("-" (Time, Duration)): Reorder code. Remove the declaration of constant
4748 ("-" (Time, Time)): Reorder code.
4749 (All_Leap_Seconds): Removed.
4750 (Arithmetic_Operations.Add): Remove sign related kludge.
4751 (Arithmetic_Operations.Difference): Control the leaps seconds processing
4752 with flag Leap_Support.
4753 (Arithmetic_Operations.Subtract): Remove sign related kludge.
4754 (Check_Within_Time_Bounds): New procedure.
4755 (Clock): Control the leap seconds processing with flag Leap_Support.
4756 (Cumulative_Leap_Seconds): Assert that the target supports leap seconds.
4757 (Formatting_Operations.Split): Control the leap seconds processing with
4759 (Formatting_Operations.Time_Of): Control the leaps seconds processing
4760 with flag Leap_Support. Adjust the year, month and day (if applicable)
4761 when the value of day seconds designates a new day.
4762 (Split): Use parameter associations for better readability. Integrate
4764 (Time_Of): Use parameter associations for better readability. Integrate
4767 * a-calfor.adb (Split): Use parameter associations for better
4768 readability. Integrate flag Is_Ada_05.
4769 (Time_Of): Remove flag Leap_Checks. Use parameter associations for
4770 better readability. Integrate flag Is_Ada_05.
4772 2007-06-06 Arnaud Charlet <charlet@adacore.com>
4774 * s-taprop-vms.adb, s-taprop-hpux-dce.adb, s-taprop-vxworks.adb,
4775 s-osprim-posix.adb, s-taprop-posix.adb, s-osprim-vxworks.adb,
4776 s-taprop-solaris.adb, s-osprim-solaris.adb, s-taprop-dummy.adb,
4777 s-osprim-unix.adb, s-osinte-freebsd.adb, s-osinte-freebsd.ads,
4778 s-osinte-lynxos.adb, s-osinte-lynxos.ads, s-taprop-tru64.adb,
4779 s-taprop-lynxos.adb, s-taprop-irix.adb, s-osinte-tru64.adb,
4780 s-osinte-tru64.ads, s-taprop-linux.adb, s-parame.ads,
4781 s-parame-vms-alpha.ads, s-parame-vms-ia64.ads, s-parame-hpux.ads,
4782 s-parame-vms-restrict.ads, s-parame-ae653.ads, s-parame-vxworks.ads,
4783 s-taprop-mingw.adb, s-osinte-lynxos-3.ads, s-osinte-lynxos-3.adb,
4784 s-osprim-mingw.adb (Timed_Delay, Timed_Sleep): Register the base
4785 time when entering this routine to detect a backward clock setting
4786 (manual setting or DST adjustment), to avoid waiting for a longer delay
4788 (Time_Duration, To_Timeval, struct_timeval): Removed when not relevant.
4789 Remove handling of deferred priority change, and replace by setting the
4790 task priority directly, as required by AI-188.
4792 (Max_Task_Image_Length): New constant.
4793 Replace Warnings (Off) by Unreferenced pragma, cleaner.
4794 (Dynamic_Priority_Support): Removed, no longer needed.
4795 (Poll_Base_Priority_Change): Ditto.
4796 (Set_Ceiling): Add this procedure to change the ceiling priority
4797 associated to a lock. This is a dummy implementation because dynamic
4798 priority ceilings are not supported by the underlying system.
4800 * a-dynpri.adb (Set_Priority): Take into account case where Target is
4801 accepting a RV with its priority boosted.
4802 Remove handling of deferred priority change, and replace by setting the
4803 task priority directly, as required by AI-188.
4805 * s-taenca.adb (Try_To_Cancel_Entry_Call): Remove special case for
4807 Remove handling of deferred priority change, and replace by setting the
4808 task priority directly, as required by AI-188.
4809 (Wait_For_Completion, Wait_For_Call, Timed_Selective_Wait): Change state
4812 * s-tasini.ads, s-tasini.adb (Wakeup_Entry_Caller): Relax assertion.
4813 (Poll_Base_Priority_Change): Removed.
4814 Code clean up: use SSL.Current_Target_Exception.
4816 * s-tasren.adb (Task_Count): Call Yield to let a chance to other tasks
4817 to run as this is a potentially dispatching point.
4818 (Call_Synchronous): Use Local_Defer_Abort.
4819 (Callable): Relax assertion.
4820 (Selective_Wait): Relax assertion in case abort is not allowed.
4821 Remove handling of deferred priority change, and replace by setting the
4822 task priority directly, as required by AI-188.
4824 * s-tasuti.adb (Make_Passive): Adjust assertions.
4825 Remove handling of deferred priority change, and replace by setting the
4826 task priority directly, as required by AI-188.
4828 2007-06-06 Arnaud Charlet <charlet@adacore.com>
4830 * system-vxworks-sparcv9.ads, system-solaris-x86.ads,
4831 system-irix-o32.ads, system-freebsd-x86.ads, system-lynxos-ppc.ads,
4832 system-lynxos-x86.ads, system-vxworks-m68k.ads, system-linux-x86.ads,
4833 system-vxworks-mips.ads, system-vxworks-alpha.ads,
4834 system-vxworks-x86.ads, system-linux-ppc.ads, system-mingw.ads,
4835 system-vms-zcx.ads, system-darwin-ppc.ads, system-vxworks-ppc.ads,
4836 system-interix.ads, system-linux-hppa.ads, system-tru64.ads,
4837 system-hpux.ads, system-irix-n32.ads, system-solaris-sparc.ads,
4838 system-solaris-sparcv9.ads, system-vms.ads, system.ads,
4839 system-vms_64.ads, system-hpux-ia64.ads, system-linux-x86_64.ads,
4840 system-linux-ia64.ads: Document mapping between Ada and OS priorities.
4841 This patch changes the largest non-binary modulus from 2**31-1 to
4843 (Compiler_System_Version): Removed, no longer used.
4844 Clean up system files by removing flags only used on a single target.
4845 Also remove obsolete flags, only used during bootstrap from system.ads
4846 (Address): Add a pragma Preelaborable_Initialization.
4848 * system-aix.ads: Ditto.
4849 (GCC_ZCX_Support): Set to true.
4850 Update priority range on AIX and map Ada priorities to target
4851 priorities appropriately for different scheduling policies.
4853 * ttypes.ads: set largest non-binary modulus from 2**31-1 to 2**32-1
4855 2007-06-06 Vincent Celier <celier@adacore.com>
4857 * mlib-tgt-specific.adb, mlib-tgt-specific.ads,
4858 mlib-tgt-vms.adb, mlib-tgt-vms.ads: New files.
4860 * mlib-tgt.adb, mlib-tgt.ads, mlib-tgt-darwin.adb,
4861 mlib-tgt-vxworks.adb, mlib-tgt-mingw.adb, mlib-tgt-lynxos.adb,
4862 mlib-tgt-linux.adb, mlib-tgt-solaris.adb, mlib-tgt-vms-alpha.adb,
4863 mlib-tgt-vms-ia64.adb, mlib-tgt-aix.adb, mlib-tgt-irix.adb,
4864 mlib-tgt-hpux.adb, mlib-tgt-tru64.adb: Make a common body for package
4865 MLib.Tgt, containing the default versions of the exported subprograms.
4866 For each platform, create a specific version of the body of new child
4867 package MLib.Tgt.Specific that contains only the body of subprograms
4868 that are different from the default.
4869 (Archive_Builder_Append_Options): New function.
4871 2007-06-06 Matthew Gingell <gingell@adacore.com>
4873 * s-osinte-aix.adb: Map Ada priorities to target priorities
4874 appropriately for different scheduling policies.
4876 2007-06-06 Arnaud Charlet <charlet@adacore.com>
4878 * s-osinte-linux.ads (sigset_t): Bump alignment to match more closely
4880 Remove references to Unchecked_Conversion, and use Ada.xxx instead.
4881 Replace Unchecked_Conversion by Ada.Unchecked_Conversion.
4883 2007-06-06 Vasiliy Fofanov <fofanov@adacore.com>
4885 * s-osprim-vms.ads, s-osprim-vms.adb (Initialize): New procedure.
4886 Noop on VMS, added for interface commonality.
4888 2007-06-06 Eric Botcazou <ebotcazou@adacore.com>
4889 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
4890 Olivier Hainque <hainque@adacore.com>
4892 * decl.c (gnat_to_gnu_entity) <object>: Manually mark the top of the
4893 renamed expression of a full renaming at toplevel.
4894 (gnat_to_gnu_entity, case object): If not defining, do not look inside
4895 the values the constant is initialized to if it is an N_Allocator.
4896 (gnat_to_gnu_entity) <E_Array_Subtype>: Manually mark the top of the
4897 TYPE_SIZE_UNIT of inner types after the stride is elaborated.
4898 (make_aligning_type): Accept an extra ROOM argument for storage to be
4899 made available before the aligned field, and an extra BASE_ALIGN
4900 argument for callers to pass the alignment guaranteed to be honored for
4901 the whole aligning object. Avoid call to finish_record_type, which only
4902 interferes with the sizes we want to set.
4903 (gnat_to_gnu_entity) <E_Variable>: Pass the required extra arguments to
4904 make_aligning_type for super-aligned objects on stack.
4905 (components_to_record): Pass the adjusted size of the type when creating
4906 fields in the qualified union for the variant part.
4907 (gnat_substitute_in_type): Copy TYPE_USER_ALIGN.
4908 (gnat_to_gnu_entity, case E_Signed_Integer_Subtype): Likewise for
4910 (maybe_pad_type): Set TYPE_USER_ALIGN.
4911 (make_aligning_type): Likewise.
4912 ALIGN argument is unsigned int.
4913 (gnat_to_gnu_entity, case E_Function): Back annotate return mechanism.
4914 (gnat_to_gnu_param): Likewise, for parameters.
4915 (gnat_to_gnu_entity) <object>: Always instantiate the renaming object
4916 if it is constant and stems from a function call.
4917 (gnat_to_gnu_entity) <E_Record_Type>: Set packed to -2 if the alignment
4918 of the record is specified. Adjust accordingly.
4919 (adjust_packed): New static function.
4920 (gnat_to_gnu_field): Use it to adjust the packedness setting.
4921 (components_to_record): Likewise.
4922 (gnat_to_gnu_entity) <object>: Do not test the renamed expression for
4923 side-effects if the object is deemed constant.
4924 (gnat_to_gnu_entity) <E_Array_Type>: Create a name for the fat pointer
4925 type instead of merely finalizing it. Tidy.
4926 <E_Access_Subprogram_Type>: Retrieve the type from the TYPE_DECL.
4927 <E_Access_Type>: Likewise.
4928 (defer_debug_incomplete_list): Rename to defer_finalize_list.
4929 (defer_debug_level): Delete.
4930 (gnat_to_gnu_entity) <debug_deferred>: Likewise
4931 <E_Array_Type>: Call rest_of_record_type_compilation on the fat pointer
4933 <E_Record_Type>: Do not explicitly defer finalizing the type.
4934 Adjust for write_record_type_debug_info renaming.
4935 <E_Subprogram_Type>: Likewise.
4936 Finalize deferred types right after deferred incomplete types are
4938 (rest_of_type_decl_compilation): New global function.
4939 (components_to_record): Rename defer_debug parameter to do_not_finalize.
4940 (components_to_record): Propagate the packedness to the fields of the
4941 qualified union type if there is a variant part.
4942 (gnat_to_gnu_entity) <E_Array_Type>: Use new function
4943 instead of inline code to adjust the XUT field offsets.
4944 (gnat_to_gnu_entity): Adjust for new prototype of finish_record_type.
4945 <E_Record_Subtype>: Do not let finish_record_type compute the sizes
4946 and write the debug info if the type derives from a discriminated one.
4947 (gnat_to_gnu_entity) <E_Array_Type>: Adjust call to create_index_type.
4948 <E_Array_Subtype>: Likewise.
4949 <E_String_Literal_Subtype>: Likewise.
4950 (gnat_to_gnu_entity): Set TYPE_USER_ALIGN on types only if they have
4951 an alignment clause.
4952 (maybe_pad_type): Update ORIG_SIZE to the minimum required to meet ALIGN
4953 before giving warning.
4954 (prepend_one_attribute_to): New function, helper to prepend an attribute
4955 to an attribute list.
4956 (gnat_to_gnu_entity) <E_Procedure>: Use it.
4957 (prepend_attributes): Likewise.
4958 (gnat_to_gnu_entity) <E_Variable>: Use constants of the proper type.
4959 <E_Array_Type>: Declare the padding type for the element type, if any.
4960 <E_Array_Subtype>: Likewise.
4961 (defer_limited_with): New variable.
4962 (Gigi_Equivalent_Type): New function.
4963 (gnat_to_gnu_entity): Use it at start and use result throughout.
4964 (gnat_to_gnu_entity, case E_Access_Type): Rework to use
4965 Gigi_Equivalent_Type, support Limited_With, allow two levels of
4966 indirection, precompute if unconstrained array to simplify logic, and
4967 use defer_limited_with to defer elaboration of some types from limited
4969 (finalize_from_with_types): New function.
4971 2007-06-06 Gary Dismukes <dismukes@adacore.com>
4972 Eric Botcazou <ebotcazou@adacore.com>
4973 Tristan Gingold <gingold@adacore.com>
4974 Olivier Hainque <hainque@adacore.com>
4976 * trans.c (Identifier_to_gnu): Change test for deferred constant by
4977 adding guard that the entity is an E_Constant before testing presence
4978 of Full_view (and remove unnecessary test that entity is not a type).
4979 For a CONST_DECL used by reference, manually retrieve
4980 the DECL_INITIAL. Do not invoke fold in the other DECL_P cases either.
4981 (struct language_function): Move from utils.c to here.
4982 (struct parm_attr): New structure.
4983 (parm_attr, parm_attr vector, parm_attr GC vector): New types.
4984 (f_parm_attr_cache): New macro.
4985 (Attribute_to_gnu) <Attr_Length>: When not optimizing, cache the
4986 expressions for the 'First, 'Last and 'Length attributes of the
4987 unconstrained array IN parameters.
4988 (Subprogram_Body_to_gnu): Use gnu_subprog_decl throughout.
4989 Allocate the information structure for the function earlier, as well
4990 as the language-specific part.
4991 If the parameter attributes cache has been populated, evaluate the
4992 cached expressions on entry.
4993 (takes_address): Add OPERAND_TYPE parameter. Handle N_Function_Call,
4994 N_Procedure_Call_Statement and N_Indexed_Component.
4995 (Pragma_to_gnu): Translate inspection_point to an asm statement
4996 containaing a comment and a reference to the object (either its address
4997 for BLKmode or its value).
4998 (Identifier_to_gnu): Use TREE_CONSTANT instead of CONST_DECL to decide
4999 to go to DECL_INITIAL. Together with the size constraint relaxation
5000 in create_var_decl, enlarges the set of situations in which an
5001 identifier may be used as an initializer without implying elaboration
5003 (Subprogram_Body_to_gnu): Do not fiddle with the debug interface but set
5004 DECL_IGNORED_P on the function if Needs_Debug_Info is not set on the
5006 (maybe_stabilize_reference): Remove lvalues_only parameter.
5007 (gnat_stabilize_reference): Adjust for above change.
5008 (gnat_to_gnu): Do not set location information on the result
5009 if it is a reference.
5010 (add_cleanup): Add gnat_node parameter and set the location of the
5012 (Handled_Sequence_Of_Statements_to_gnu): Adjust calls to add_cleanup.
5013 (Exception_Handler_to_gnu_zcx): Likewise.
5014 (gigi): Remove the cgraph node if the elaboration procedure is empty.
5015 (Subprogram_Body_to_gnu): If a stub is attached to the subprogram, emit
5016 the former right after the latter.
5017 (start_stmt_group): Make global.
5018 (end_stmt_group): Likewise.
5019 (gnu_constraint_error_label_stack, gnu_storage_error_label_stack): New
5021 (gnu_program_error_label_stack): Likewise.
5022 (gigi): Initialize them.
5023 (call_to_gnu, gnat_to_gnu, emit_check): Add new arg to build_call_raise.
5024 (gnat_to_gnu, N_{Push,Pop}_{Constraint,Storage,Program}_Error_Label):
5026 (push_exception_label_stack): New function.
5027 (takes_address): New function.
5029 * utils.c (struct language_function): Move to trans.c from here.
5030 (unchecked_convert): Do not wrap up integer constants in
5032 (create_var_decl_1): Decouple TREE_CONSTANT from CONST_DECL. Prevent
5033 the latter for aggregate types, unexpected by later passes, and relax an
5034 arbitrary size constraint on the former.
5035 (create_field_decl): Use tree_int_cst_equal instead of operand_equal_p
5036 to compare the sizes.
5037 (convert_vms_descriptor): When converting to a fat pointer type, be
5038 prepared for a S descriptor at runtime in spite of a SB specification.
5039 (shift_unc_components_for_thin_pointers): New function.
5040 (write_record_type_debug_info): For variable-sized fields, cap the
5041 alignment of the pointer to the computed alignment.
5042 (finish_record_type): Change HAS_REP parameter into REP_LEVEL.
5043 If REP_LEVEL is 2, do not compute the sizes.
5044 (build_vms_descriptor): Adjust for new prototype of finish_record_type.
5045 (build_unc_object_type): Likewise.
5046 (declare_debug_type): New function.
5048 * ada-tree.def: USE_STMT: removed (not emitted anymore).
5050 * misc.c (gnat_expand_expr): Call to gnat_expand_stmt removed because
5051 no statement is expandable anymore.
5052 (gnat_init_gcc_eh): Do not initialize the DWARF-2 CFI machinery twice.
5053 (gnat_handle_option): Only allow flag_eliminate_debug_types to be set
5054 when the user requested it explicitely.
5055 (gnat_post_options): By default, set flag_eliminate_unused_debug_types
5057 (get_alias_set): Return alias set 0 for a type if
5058 TYPE_UNIVERSAL_ALIASING_P is set on its main variant.
5060 * ada-tree.h: (TYPE_UNIVERSAL_ALIASING_P): New macro.
5061 (DECL_FUNCTION_STUB): New accessor macro.
5062 (SET_DECL_FUNCTION_STUB): New setter macro.
5064 * lang.opt (feliminate-unused-debug-types): Intercept this flag for Ada.
5066 * fe.h (Get_Local_Raise_Call_Entity, Get_RT_Exception_Entity): New
5069 2007-06-06 Jose Ruiz <ruiz@adacore.com>
5071 * s-intman-vxworks.ads, s-intman-vxworks.adb (Abort_Task_Signal):
5072 Rename to Abort_Task_Interrupt to be able to keep the same interface
5073 as the rest of the targets.
5075 * s-osinte-vxworks.ads s-osinte-vxworks.adb
5076 (To_VxWorks_Priority): Remove explicit "in" mode indicator
5078 * s-osinte-vxworks6.ads, s-vxwork-arm.ads, system-vxworks-arm.ads:
5081 2007-06-06 Robert Dewar <dewar@adacore.com>
5083 * a-chahan.ads: Remove obsolescent pragmas
5085 * a-chlat1.ads: Minor reformatting
5087 2007-06-06 Robert Dewar <dewar@adacore.com>
5089 * comperr.adb (Compiler_Abort): New Finalize/Output_Messages interface
5092 * errout.adb: New Finalize/Compilation_Errors/Output_Messages
5095 * errout.ads (Finalize): Changed interface
5096 (Output_Messages): New procedure
5097 (Compilation_Errors): New Interface
5099 * prepcomp.ads, prepcomp.adb (Parse_Preprocessing_Data_File): New
5100 Finalize/Output_Messages interface for Errout
5101 (Prepare_To_Preprocess): New Finalize/Output_Messages interface for
5104 2007-06-06 Thomas Quinot <quinot@adacore.com>
5105 Olivier Hainque <hainque@adacore.com>
5106 Robert Dewar <dewar@adacore.com>
5108 * a-except.ads, a-except.adb: (Rmsg_28): Fix description for E.4(18)
5110 (Raise_Current_Excep): Call Debug_Raise_Exception just before
5111 propagation starts, to let debuggers know about the event in a reliable
5113 (Local_Raise): Moved to System.Exceptions
5114 More convenient to have this as a separate unit
5116 * s-except.adb, s-except.ads: New files.
5118 * a-exextr.adb (Unhandled_Exception): Delete - replaced by
5119 Debug_Unhandled_Exception in System.Exceptions where it belongs
5120 together with a couple of other debug helpers.
5121 (Notify_Unhandled_Exception): Use Debug_Unhandled_Exception instead of
5122 the former Unhandled_Exception.
5124 * exp_ch11.ads, exp_ch11.adb: (Possible_Local_Raise): New procedure
5125 (Warn_No_Exception_Propagation): New procedure
5126 (Warn_If_No_Propagation): Rewritten for new warning generation
5127 (Expand_Exception_Handlers): New warning generation
5128 (Expand_N_Raise_xxx_Error): Rewritten for new warnings
5129 (Add_Exception_Label): Use Special_Exception_Package_Used for test
5130 instead of Most_Recent_Exception_Used (accomodates Exception_Traces)
5131 (Expand_Local_Exception_Handlers): Unconditionally add extra block wrap
5132 even if restriction is set (makes life easier in Check_Returns)
5133 (Expand_Local_Exception_Handlers): Follow renamed entity chain when
5134 checking exception identities.
5135 (Expand_Local_Exception_Handlers): Do not optimize when all others case
5136 (Expand_Local_Exception_Handlers): Set Exception_Junk flag on generated
5137 block for handler (used by Check_Returns)
5138 (Expand_Local_Exception_Handlers): Local_Raise now takes an address
5139 (Expand_N_Handled_Sequence_Of_Statements): Properly handle -gnatd.x to
5140 remove all exception handlers when optimizing local raise statements.
5141 (Find_Local_Handler): Use Get_Renamed_Entity
5142 (Expand_N_Handled_Sequence_Of_Statements): If the handled sequence is
5143 marked analyzed after expanding exception handlers, do not generate
5144 redundant cleanup actions, because they have been constructed already.
5146 2007-06-06 Thomas Quinot <quinot@adacore.com>
5148 * a-finali.ads (Ada.Finalization): Add missing pragma Remote_Types. The
5149 presence of this categorization pragma is mandated by the language.
5150 (Limited_Controlled): Add missing pragma Preelaborable_Initialization
5153 2007-06-06 Vincent Celier <celier@adacore.com>
5154 Robert Dewar <dewar@adacore.com>
5156 * bcheck.adb, binde.adb, binderr.adb, binderr.ads, butil.adb,
5157 butil.ads, erroutc.adb, erroutc.ads, errutil.adb, errutil.ads,
5158 err_vars.ads, exp_tss.adb, exp_tss.ads, fmap.adb, fmap.ads,
5159 fname.adb, fname.ads, fname-sf.adb, fname-uf.adb, fname-uf.ads,
5160 lib-sort.adb, lib-util.adb, lib-util.ads, lib-xref.adb, makeutl.ads,
5161 makeutl.adb, nmake.adt, osint.adb, osint.ads, osint-b.adb,
5162 par-load.adb, prj-attr.adb, prj-dect.adb, prj-err.adb, prj-makr.adb,
5163 prj-part.adb, prj-pp.adb, prj-proc.adb, prj-tree.adb, prj-tree.ads,
5164 prj-util.adb, prj-util.ads, scans.adb, scans.ads, sem_ch2.adb,
5165 sinput-c.adb, styleg-c.adb, tempdir.adb, tempdir.ads, uname.adb,
5166 uname.ads, atree.h, atree.ads, atree.adb, ali-util.ads, ali-util.adb,
5168 Move Name_Id, File_Name_Type and Unit_Name_Type from package Types to
5169 package Namet. Make File_Name_Type and Unit_Name_Type types derived from
5170 Mame_Id. Add new type Path_Name_Type, also derived from Name_Id.
5171 Use variables of types File_Name_Type and Unit_Name_Type in error
5173 (Get_Name): Add parameter Ignore_Special, and set it reading file name
5174 (New_Copy): When debugging the compiler, call New_Node_Debugging_Output
5176 Define flags Flag217-Flag230 with associated subprograms
5177 (Flag_Word5): New record type.
5178 (Flag_Word5_Ptr): New access type.
5179 (To_Flag_Word5): New unchecked conversion.
5180 (To_Flag_Word5_Ptr): Likewise.
5181 (Flag216): New function.
5182 (Set_Flag216): New procedure.
5184 2007-06-06 Arnaud Charlet <charlet@adacore.com>
5186 * a-stzunb.adb, a-stwiun.adb, a-strunb.adb: (Insert): Use 'Length
5189 * a-stwifi.ads, a-stzfix.ads: Minor reformatting
5191 2007-06-06 Javier Miranda <miranda@adacore.com>
5193 * a-tags.ads, a-tags.adb (Tag_Size): This constant is now internal to
5195 (Object_Specific_Data_Array): This is now internal to the package.
5196 (Object_Specific_Data): This is now internal to the package.
5197 (Select_Specific_Data_Element): This is now internal to the package.
5198 (Select_Specific_Data_Array): This is now internal to the package.
5199 (Select_Specific_Data): This is now internal to the package.
5200 (Offset_To_Top_Function_Ptr): This is now public.
5201 (To_Offset_To_Top_Function_Ptr): Removed.
5202 (Storage_Offset_Ptr,To_Storage_Offset_Ptr): These declarations are now
5203 local to subprogram Offset_To_Top.
5204 (Predefined_DT): Removed.
5205 (Typeinfo_Ptr): Removed.
5206 (OSD): This function is now internal to this package.
5207 (SSD): This function is now internal to this package.
5208 (DT): New function that displaces the pointer to the table of primitives
5209 to get access to the enclosing wrapper record.
5210 (IW_Membership): Code cleanup.
5211 (Offset_To_Top): Code cleanup.
5212 (Predefined_DT): Removed.
5213 (Register_Interface_Tag): Removed.
5214 (Set_Interface_Table): Removed.
5215 (Set_Offset_Index): Removed.
5216 (Set_Offset_To_Top): Code cleanup.
5218 (Set_Signature): Removed.
5220 (Set_Tagged_Kind): Removed.
5221 (Typeinfo_Ptr): Removed.
5223 (Displace): Add missing check on null actual.
5225 * exp_disp.ads, exp_disp.adb
5226 (Select_Expansion_Utilities): Removed.
5227 (Build_Common_Dispatching_Select_Statements): Moved to exp_atags.
5228 (Expand_Dispatching_Call): Update calls to Get_Prim_Op_Address because
5229 the interface requires a new parameter.
5230 (Make_Disp_Asynchronous_Select_Spec, Make_Disp_Conditional_Select_Spec,
5231 Make_Disp_Get_Prim_Op_Kind_Spec, Make_Disp_Timed_Select_Spec): Replace
5232 calls to subprograms Build_T, Build_S, etc. by the corresponding code.
5233 Done to remove package Select_Expansion_Utilities.
5234 (Make_DT): New implementation for statically allocated dispatch tables.
5235 (Make_Secondary_DT): Moved to the scope of Make_DT.
5236 (Register_Primitive): Code cleanup plus incoporate the use of the new
5237 function DT_Address_Attribute.
5238 (Expand_Interface_Thunk): The profile of this subprogram has been
5239 changed to return the Thunk_Id and the corresponding code.
5240 (Fill_DT_Entry): Removed. Its functionality is now provided by
5241 subprogram Register_Primitive.
5242 (Fill_Secondary_DT_Entry): Removed. Its functionality is now provided by
5243 subprogram Register_Primitive.
5244 (Register_Primitive): New subprogram that incorporates the previous
5245 functionalities of Fill_DT_Entry and Fill_Secondary_DT_Entry.
5246 (Build_Common_Dispatching_Select_Statements): Remove formal Typ. This
5247 was only required to call Make_DT_Access_Action, which is now removed.
5248 (Ada_Actions): Removed
5249 (Action_Is_Proc): Removed
5250 (Action_Nb_Arg): Removed
5251 Replace all the calls to Make_DT_Access_Action by direct calls to
5252 Make_Procedure_Call_Statement or Make_Function_Call.
5253 (Set_DTC_Entity_Value): New subprogram.
5254 (Set_All_DT_Position): Add call to new subprogram Set_DTC_Entity_Value.
5255 (Expand_Interface_Thunk): Add missing support for primitives that are
5256 functions with a controlling result (case in which there is no need
5257 to generate the thunk).
5259 * exp_atag.ads, exp_atag.adb
5260 (Build_DT): New subprogram that displaces the pointer to reference the
5261 base of the wrapper record.
5262 (Build_Typeinfo_Offset): Removed.
5263 (RTE_Tag_Node): Removed.
5264 (Build_Common_Dispatching_Select_Statements): Moved here from exp_disp
5265 (Build_Get_RC_Offset): Removed.
5266 (Build_Inherit_Predefined_Prims): Removed.
5267 (Build_Inherit_TSD: Removed.
5268 (Build_New_TSD): Removed.
5269 (Build_Set_External_Tag): Removed.
5270 (Build_Set_Predefined_Prim_Op_Address): Add documentation.
5271 (Build_Set_Prim_Op_Address): Add documentation.
5272 (Build_Set_TSD): Removed.
5274 * rtsfind.ads, rtsfind.adb
5275 (Load_Fail): If load fails and we are not in configurable run-time
5276 mode, then raise Unrecoverable_Error.
5277 (Text_IO_Kludge): Generate an error message if a run-time library is
5278 not available in a given run-time (ie. zfp run-time).
5279 (RTE_Record_Component): Add code to check that the component we search
5280 for is not found in two records in the given run-time package.
5281 (RE_DT_Offset_To_Top_Size, RE_DT_Predef_Prims_Size): Removed
5282 (RE_DT_Predef_Prims_Offset): New entity
5283 (RE_Static_Offset_To_Top): New entity
5284 (RE_HT_Link): New entity.
5285 (System_Address_Image): Addition of this run-time package.
5286 (RE_Address_Image): New entity.
5287 (RE_Abstract_Interface): Removed.
5288 (RE_Default_Prim_Op_Count): Removed.
5289 (RE_DT_Entry_Size): Removed.
5290 (RE_DT_Min_Prologue_Size): Removed.
5291 (RE_DT_Prologue_Size): Removed.
5292 (RE_Ifaces_Table_Ptr): Removed.
5293 (RE_Interface_Data_Ptr): Removed.
5294 (RE_Type_Specific_Data): Removed.
5295 (RE_Primary_DT): Removed.
5296 (RE_Register_Interface_Tag): Removed.
5297 (RE_Set_Offset_Index): Removed.
5298 (RE_Set_OSD): Removed.
5299 (RE_Set_SSD): Removed.
5300 (RE_Set_Signature): Removed.
5301 (RE_Set_Tagged_Kind): Removed.
5302 (RE_Address_Array): New entity.
5303 (RE_DT): New entity.
5304 (RE_Iface_Tag): New entity.
5305 (RE_Interfaces_Table): New entity.
5306 (RE_No_Dispatch_Table): New entity.
5307 (RE_NDT_Prims_Ptr): New entity.
5308 (RE_NDT_TSD): New entity.
5309 (RE_Num_Prims): New entity.
5310 (RE_Offset_To_Top_Function_Ptr): New entity.
5311 (RE_OSD_Table): New entity.
5312 (RE_OSD_Num_Prims): New entity.
5313 (RE_Predef_Prims): New entity
5314 (RE_Predef_Prims_Table_Ptr): New entity.
5315 (RE_Primary_DT): New entity.
5316 (RE_Signature): New entity.
5317 (RE_SSD): New entity.
5318 (RE_TSD): New entity.
5319 (RE_Type_Specific_Data): New entity.
5320 (RE_Tag_Kind): New entity.
5322 2007-06-06 Thomas Quinot <quinot@adacore.com>
5324 * a-textio.ads, a-textio.adb (Write): Add explicit size clause for the
5325 C imported variable.
5326 (Skip_Line): Do not reset Before_LM_PM immediately when Before_LM is set
5329 2007-06-06 Robert Dewar <dewar@adacore.com>
5331 * a-tienio.adb (Get): Adjust buffer size to accomodate one extra
5334 2007-06-06 Vincent Celier <celier@adacore.com>
5336 * a-tifiio.adb (Put, internal): For negative numbers, check that there
5337 is room for at least one digit and the minus sign.
5338 (Put.Put_Character): Never put a character outside of the range of
5341 2007-06-06 Olivier Hainque <hainque@adacore.com>
5342 Eric Botcazou <ebotcazou@adacore.com>
5344 * utils2.c (build_allocator): Provide the extra arguments to
5345 make_aligning_type for super-aligned objects allocated from the default
5346 pool. Leave enough room for a pointer before the aligning field, and
5347 store the system's allocator return value there.
5348 (build_call_alloc_dealloc): When releasing a super-aligned object,
5349 retrieve the system's allocator return value from where build_allocator
5350 has stored it, just ahead of the adjusted address we are passed.
5351 (build_call_raise): Handle properly the generation of line numbers when
5352 the node is marked No_Location.
5353 (compare_elmt_bitpos): Use tree_int_cst_compare. Stabilize the sort
5354 by using DECL_UID on ties.
5355 (build_binary_op) <EQ_EXPR>: Accept fat pointer types with the same
5357 (build_call_raise): Handle converting exception into goto; support new
5359 (build_component_ref): Add new arg to build_call_raise.
5361 2007-06-06 Hristian Kirtchev <kirtchev@adacore.com>
5363 * a-ztflau.adb, a-wtflau.adb, a-tiflau.adb (Load_Real): Do not parse
5364 "." in the case of nnn.xxx when nnn terminates with an underscore.
5365 Parse the remaining "#" or ":" in the case of nnn#.xxx#
5367 2007-06-06 Robert Dewar <dewar@adacore.com>
5369 * a-tigeau.ads, a-tigeau.adb: (Store_Char): Change Buf to IN OUT
5371 2007-06-06 Arnaud Charlet <charlet@adacore.com>
5372 Vincent Celier <celier@adacore.com>
5373 Robert Dewar <dewar@adacore.com>
5375 * bindgen.adb (Gen_Output_File_Ada): Generate pragma No_Run_Time when
5377 (Gen_Output_File_Ada, Gen_Output_File_C): Never use __attribute
5378 ((destructor)) for adafinal, even when switch -a is used.
5379 Do not issue pragma Linker_Destructor for adafinal when switch -a is
5381 (Gen_Object_Files_Options): Add formatting of Linker Options, when
5382 Output_Linker_Option_List is set. Suppress this formatting when
5383 Zero_Formatting is set.
5384 Add case for CLI_Target.
5385 (System_Restrictions_Used): New flag, used to avoid generating with of
5386 System_Restrictions and initialization of the data unless there is
5387 some use of System.Restrictions in the partition.
5388 (Check_System_Restrictions_Used): New procedure
5390 * s-stalib.adb: Remove with of System.Restrictions. No longer needed
5391 since we only with this unit in the binder file if it is used elsewhere
5394 2007-06-06 Vincent Celier <celier@adacore.com>
5396 * bindusg.adb: Add line for @<response file>
5397 Add lines for new switches -R and -Z
5399 * gnatbind.adb (Gnatbind): Do not include sources from the GNAT
5400 hierarchy in the list of files of the closure when -R is used
5401 (Gnatbind): Accept arguments starting with '@' to indicate response
5402 files and take the arguments from the response files.
5403 If List_Closure is set, display the referenced files
5405 2007-06-06 Javier Miranda <miranda@adacore.com>
5406 Robert Dewar <dewar@adacore.com>
5407 Ed Schonberg <schonberg@adacore.com>
5409 * checks.ads, checks.adb (Apply_Address_Clause_Check): Handle case in
5410 which the address-clause is applied to in-mode actuals (allowed by
5412 (Apply_Discriminant_Check): Do not generate a check if the type is
5413 constrained by a current instance.
5414 (Activate_Division_Check): New procedure
5415 (Activate_Overflow_Check): New procedure
5416 (Activate_Range_Check): New procedure
5417 Call these new Activate procedures instead of setting flags directly
5418 (Apply_Array_Size_Check): Removed, no longer needed.
5419 Code clean up: remove obsolete code related to GCC 2.
5420 (Get_E_Length): Protect against bomb in case scope is standard
5421 (Selected_Range_Checks): If the node to be checked is a conversion to
5422 an unconstrained array type, and the expression is a slice, use the
5423 bounds of the slice to construct the required constraint checks.
5424 Improve NOT NULL error messages
5425 (Apply_Constraint_Check): If the context is a null-excluding access
5426 type, diagnose properly the literal null.
5428 2007-06-06 Pascal Obry <obry@adacore.com>
5430 * clean.adb (Clean_Archive): Use untouched casing for the archive name
5431 and the corresponding .deps file.
5432 (Clean_Interface_Copy_Directory): Use untouched casing for the library
5433 src directory. Minor code-clean-up. Use untouched casing for files
5434 read into the library src dir.
5435 (Clean_Library_Directory): Idem.
5436 (Parse_Cmd_Line): Accept new switch -aP
5438 2007-06-06 Javier Miranda <miranda@adacore.com>
5439 Ed Schonberg <schonberg@adacore.com>
5440 Robert Dewar <dewar@adacore.com>
5441 Eric Botcazou <ebotcazou@adacore.com>
5442 Arnaud Charlet <charlet@adacore.com>
5444 * einfo.ads, einfo.adb (Available_View): New synthesized attribute
5445 applicable to types that have the With_Type flag set. Returns the
5446 non-limited view of the type, if available, otherwise the type itself.
5447 For class-wide types, there is no direct link in the tree, so we have
5448 to retrieve the class-wide type of the non-limited view of the Etype.
5449 New attributes Static_Initialization and Static_Elaboration_Desired.
5450 Remove the pragma Thread_Body, and the associated flag
5451 Is_Thread_Body in entities, and all related code.
5452 (Suppress_Value_Tracking_On_Call): New flag
5453 E_Exception has Esize and Alignment fields
5454 (Universal_Aliasing): New function.
5455 (Set_Universal_Aliasing): New procedure.
5456 (Write_Entity_Flags): Deal with Universal_Aliasing flag.
5457 (Check_Nested_Access): New procedure.
5458 (Has_Up_Level_Access, Set_Has_Up_Level_Access): New procedures.
5459 (Find_Direct_Name, Note_Possible_Modification): Use Check_Nested_Access.
5460 (Related_Interface): New attribute. Present in dispatch table pointer
5461 components of records. Set to point to the entity of the corresponding
5463 (Is_By_Reference_Type): Recurse on the full view of an incomplete type.
5464 (Original_Access_Type): Remove, not needed.
5465 (Root_Type): Handle properly subtypes of class-wide-types.
5468 * sem_ch4.adb (Analyze_Explicit_Dereference): Add support for
5469 class-wide types visible through limited-with clauses.
5470 (Try_Primitive_Operation): When examining all primitive operations of a
5471 tagged type, do not consider subprograms labeled as hidden unless they
5472 belong to a private generic type with a tagged parent.
5473 (Try_Object_Operation): Extensive rewriting, to handle properly various
5474 overloading cases, when several ancestors may have class-wide operations
5475 that are possible candidates, and when the overloaded functions return
5476 array types and have defaulted parameters so that the call may be
5477 interpreted as an indexing.
5478 (Analyze_Allocator): Remove Mark_Allocator and its invocation.
5479 (Process_Function_Call): use Next, rather than Next_Actual, to analyze
5480 successive actuals before analyzing the call itself.
5481 (Try_Primitive_Operation): A primitive operation is compatible with the
5482 prefix if the prefix has a synchronized type and the type of the formal
5483 is its corresponding record, as can be the case when the primitive
5484 operation is declared outside of the body of the type.
5485 (Traverse_Homonyms): New subprocedure of Try_Class_Wide_Operation, to
5486 perform homonym traversal, looking for class-wide operation matches
5487 (formerly done in statements of Try_Class_Wide_Operation). Matches on
5488 access parameters are now restricted to anonymous access types.
5489 (Mark_Allocator): An allocator with a discriminant association parent is
5491 (Try_One_Prefix_Interpretation): If the type of the object is
5492 incomplete, as can be happen when it is a limited view obtained through
5493 a limited_with_clause, the selected component is not part of a prefixed
5495 (Complete_Object_Operation): Diagnose properly an object that is not
5496 aliased when the corresponding controlling formal is an access
5498 (Try_Primitive_Operation, Try_Class_Wide_Operation): Diagnose properly
5499 ambiguous calls in prefixed notation, where two primitives differ only
5500 in that the controlling argument of one is an access parameter.
5502 * sem_ch6.adb (Has_Single_Return): Add guard in code that determines
5503 whether a function that returns an unconstrained type can be inlined.
5504 (Process_Formals): Diagnose properly the illegal use of an incomplete
5505 type in the profile of an access_to_subprogram declaration.
5506 (Check_Synchronized_Overriding): Nothing check for concurrent types, the
5507 operations are attached to the corresponding record.
5508 (Analyze_Subprogram_Specification): Add variables Formal and Formal_Typ.
5509 When processing a primitive of a concurrent type which implements an
5510 interface change the type of all controlling formals to that of the
5511 corresponding record type.
5512 (Check_Synchronized_Overriding): Relax the conditional logic when trying
5513 to determine the tagged type to which a primitive belongs.
5514 (Check_Conventions): Capture condition to ignore a primitive operation
5515 (which is shared between the loop in Check_Conventions and the one in
5516 Check_Convention) in a new local function Skip_Check.
5517 (Check_Convention): Rename Prim_Op to Second_Prim_Op to avoid possible
5518 confusion with Check_Conventions' own Prim_Op local variable.
5519 (Create_Extra_Formals): Test for a tagged result type rather than a
5520 controlling result when determining whether to add a BIP_Alloc_Form
5521 formal and a BIP_Final_List formal to the function.
5522 (Check_Conformance); For parameters that are anonymous access types,
5523 subtype conformance requires that the not null and the constant
5524 indicators must match
5525 (Check_Synchronized_Overriding): New parameter Formal_Typ. Add machinery
5526 to retrieve the appropriate type when processing a concurrent type
5527 declared within a generic. Minor comment reformatting. Change invocation
5528 of Overrides_Synchronized_Primitive to Find_Overridden_Synchronized_Pri-
5530 (Analyze_Subprogram_Body): If the return type of a function is an
5531 anonymous access to the limited view of a class-wide type, and the
5532 non-limited view of the type is available, update the type of the
5533 function so that code can be generated.
5534 (Process_Formals): In case of access-subtype itype whose designated
5535 type is also an itype (situation that happens now with access to
5536 subprograms) we mark the access-type itype with the Has_Delayed_Freeze
5537 attribute to avoid backend problems.
5538 (Check_Return_Subtype_Indication): Replace R_Type with R_Stm_Type in
5539 init of R_Stm_Type_Is_Anon_Access. Also check that base types of the
5540 anonymous types' designated types are same before testing
5541 Subtypes_Statically_Match.
5542 (Create_Extra_Formals): Test for a named access parameter that is a
5543 controlling formal as an additional condition for adding an
5544 accessibility level formal. This can occur in the subp type created for
5545 dispatching calls in Expand_Dispatching_Call, and allows calling
5546 Create_Extra_Formals from that procedure rather than special-casing the
5547 extra formals there.
5548 (Create_Extra_Formals): Add BIP_Alloc_Form and BIP_Final_List formals
5549 when the function has a controlling result.
5550 (Check_Returns): Add much more knowledge of the optimization of local
5551 raise statements to gotos, to retain proper warnings in this case.
5552 (Check_Statement_Sequence): Ignore N_Push_xxx_Label and N_Pop_xxx_Label
5553 nodes when looking for last statement.
5555 * sem_type.ads, sem_type.adb (Specific_Type): Add support for
5556 class-wide types visible through limited with clauses.
5557 (Add_One_Interp): If the operands are anonymous access types, the
5558 predefined operator on universal_access is immediately visibles
5559 (Find_Unique_Type): Handle anonymous access to subprogram types just as
5560 other anonymous access types.
5561 (Disambiguate): Take into account CIL convention.
5562 (Interface_Present_In_Ancestor): Add support for class-wide interfaces.
5564 2007-06-06 Robert Dewar <dewar@adacore.com>
5566 * sinput.ads, sinput.adb, uintp.ads, urealp.adb, stringt.adb,
5567 sem_elim.adb, prj-strt.adb, repinfo.ads, repinfo.adb, namet.ads,
5568 elists.ads, elists.adb, lib.ads, lib.adb (Unlock): New procedure.
5569 Fix lower bound of tables.
5572 * nlists.adb: Ditto.
5573 (Prev_Node, Next_Node): Change index type to Int so that it properly
5574 covers the range First_Node_Id - 1 up.
5576 2007-06-06 Javier Miranda <miranda@adacore.com>
5577 Ed Schonberg <schonberg@adacore.com>
5578 Bob Duff <duff@adacore.com>
5579 Hristian Kirtchev <kirtchev@adacore.com>
5581 * exp_aggr.ads, exp_aggr.adb:
5582 (Build_Record_Aggr_Code): Add missing initialization of secondary tags
5583 in extension aggregates.
5584 (Flatten): Other conditions being met, an aggregate is static if the
5585 low bound given by component associations is different from the low
5586 bound of the base index type.
5587 (Packed_Array_Aggregate_Handled): If the component type is itself a
5588 packed array or record, the front-end must expand into assignments.
5589 (Gen_Ctrl_Actions_For_Aggr): In call to Init_Controller, pass False to
5590 Init_Pr, instead of Ancestor_Is_Expression.
5591 (Gen_Ctrl_Actions_For_Aggr): When processing an aggregate of a
5592 coextension chain root, either generate a list controller or use the
5593 already existing one.
5594 (Static_Array_Aggregate): New procedure to construct a positional
5595 aggregate that can be handled by the backend, when all bounds and
5596 components are compile-time known constants.
5597 (Expand_Record_Aggregate): Force conversion of aggregates of tagged
5598 types covering interface types into assignments.
5599 (Replace_Type): move to Build_Record_Aggr_Code.
5600 (Expand_Record_Aggr_Code): if the target of the aggregate is an
5601 interface type, convert to the definite type of the aggregate itself,
5602 so that needed components are visible.
5603 (Convert_Aggr_In_Object_Decl): If the aggregate has controlled
5604 components and the context is an extended return statement do not
5605 create a transient block for it, to prevent premature finalization
5606 before the return is executed.
5607 (Gen_Assign): Do not generate a call to deep adjust routine if the
5608 component type is itself an array of controlled (sub)-components
5609 initialized with an inner aggregate.
5610 (Component_Check): New name for Static_Check. This name is now more
5611 appropriate, and documentation is added which was missing.
5612 (Component_Check): Add test for bit aligned component value
5613 (Component_Not_OK_For_Backend): Renames Has_Delayed_Nested_Aggregate_Or_
5614 Tagged_Comps, name is more appropriate given added function below.
5615 (Component_Not_OK_For_Backend): Check for bit aligned component ref.
5617 2007-06-06 Hristian Kirtchev <kirtchev@adacore.com>
5618 Javier Miranda <miranda@adacore.com>
5619 Robert Dewar <dewar@adacore.com>
5621 * exp_attr.adb (Expand_N_Attribute_Reference): Case Callable and
5622 Terminated: Add unchecked type conversion from System.Address to
5623 System.Tasking.Task_Id when calling the predefined primitive
5625 Disable new Ada 05 accessibility check for JVM.NET targets, which
5626 cannot be implemented in a practical way.
5627 (Expand_N_Attribute_Reference: case Attribute_Tag): The use of 'Tag in
5628 the sources always references the tag of the actual object. Therefore,
5629 if 'Tag is applied in the sources to class-wide interface objects we
5630 generate code that displaces "this" to reference the base of the object.
5631 (Expand_N_Attribute_Reference, case Size): Return specified size if
5633 (Expand_N_Attribute_Reference): The expansion of the 'Address attribute
5634 has code that displaces the pointer of the object to manage interface
5635 types. However this code must not be executed when the prefix is a
5636 subprogram. This bug caused the wrong expansion of the internally
5637 generated assignment that fills the dispatch table when the primitive
5638 is a function returning a class-wide interface type.
5639 (Expand_N_Attribute_Reference:Attribute_Valid): Remove incorrect call to
5640 Set_Attribute_Name for Name_Unaligned_Valid.
5642 2007-06-06 Ed Schonberg <schonberg@adacore.com>
5643 Gary Dismukes <dismukes@adacore.com>
5645 * exp_ch13.adb (Expand_N_Attribute_Definition_Clause, case 'Address):
5646 If the initialization is the equivalent aggregate of the initialization
5647 procedure of the type, do not remove it.
5648 (Expand_N_Attribute_Definition_Clause): Exclude access variables
5649 initialized to null from having their expression reset to empty and
5650 note this exception in the comment.
5652 2007-06-06 Hristian Kirtchev <kirtchev@adacore.com>
5653 Robert Dewar <dewar@adacore.com>
5654 Ed Schonberg <schonberg@adacore.com>
5655 Gary Dismukes <dismukes@adacore.com>
5657 * exp_ch2.adb: Remove "with" and "use" clauses for Namet and Snames.
5658 Add "with" and "use" clauses for Sem_Attr.
5659 (Expand_Current_Value): Do not replace occurences of attribute
5660 references where the prefix must be a simple name.
5662 * sem_attr.ads, sem_attr.adb: Remove "with" and "use" clauses for
5663 Namet. Add new arrays Attribute_Name_Modifies_Prefix and
5664 Attribute_Requires_Simple_Name_Prefix.
5665 (Name_Modifies_Prefix): Body of new function.
5666 (Requires_Simple_Name_Prefix): Body of new function.
5667 (Resolve_Attribute, case Access): Improve error message for case of
5668 mismatched conventions.
5669 (Analyze_Attribute, case 'Tag): The prefix the attribute cannot be of an
5671 (Analyze_Attribute, case 'Access): If the type of the prefix is a
5672 constrained subtype for a nominal unconstrained type, use its base type
5673 to check for conformance with the context.
5674 (Resolve_Attribute): Remove test of the access type being associated
5675 with a return statement from condition for performing accessibility
5676 checks on access attributes, since this case is now captured by
5677 Is_Local_Anonymous_Access.
5678 (Analyze_Access_Attribute): Set Address_Taken on entity
5679 (Analyze_Attribute, case Address): Set Address_Taken on entity
5680 (OK_Self_Reference): Traverse tree to locate enclosing aggregate when
5681 validating an access attribute whose prefix is a current instance.
5682 (Resolve_Attribute): In case of attributes 'Code_Address and 'Address
5683 applied to dispatching operations, if freezing is required then we set
5684 the attribute Has_Delayed_Freeze in the prefix's entity.
5685 (Check_Local_Access): Set flag Suppress_Value_Tracking_On_Call in
5686 current scope if access of local subprogram taken
5687 (Analyze_Access_Attribute): Check legality of self-reference even if the
5688 expression comes from source, as when a single component association in
5689 an aggregate has a box association.
5690 (Resolve_Attribute, case 'Access): Do not apply accessibility checks to
5691 the prefix if it is a protected operation and the attribute is
5692 Unrestricted_Access.
5693 (Resolve_Attribute, case 'Access): Set the Etype of the attribute
5694 reference to the base type of the context, to force a constraint check
5695 when the context is an access subtype with an explicit constraint.
5696 (Analyze_Attribute, case 'Class): If the prefix is an interface and the
5697 node is rewritten as an interface conversion. leave unanalyzed after
5698 resolution, to ensure that type checking against the context will take
5701 2007-06-06 Ed Schonberg <schonberg@adacore.com>
5702 Javier Miranda <miranda@adacore.com>
5703 Robert Dewar <dewar@adacore.com>
5705 * exp_ch3.adb (Make_Controlling_Function_Wrappers): generate wrapper a
5706 wrapper when the full view of the controlling type of an inherited
5707 function that dispatches on result implements interfaces.
5708 (Expand_N_Object_Declaration): In cases where the type of the
5709 declaration is anonymous access, create finalization list for it.
5710 (Expand_N_Object_Declaration): Generate a persistent_bss directive only
5711 if the object has no explicit initialization, to match description of
5712 functionality of pragam Persistent_BSS.
5713 (Build_Equivalent_Array_Aggregate, Build_Equivalent_Record_Aggregate):
5714 new function to build static aggregates, to replace initialization call
5715 when static initialization is desired.
5716 (Freeze_Type): Generate a list controller for an access type whenever
5717 its designated type has controlled anonymous access discriminants.
5718 (Build_Equivalent_Aggregate): New procedure to compute a static
5719 aggregate to be used as default initialization for composite types,
5720 instead of a generating a call to the initialization procedure for the
5722 (Build_Initialization_Call): When available, replace a call to the
5723 initialization procedure with a copy of the equivalent static aggregate
5725 (Expand_N_Object_Declaration): Use New_Occurrence_Of in generated
5726 declarations for objects of a class-wide interface type, rather than
5727 just identifiers, to prevent visibility problems.
5728 (Expand_N_Object_Declaration): When expanding the declaration for an
5729 object of a class-wide interface type, preserve the homonym chain of
5730 the original entity before exchanging it with that of the generated
5731 renaming declaration.
5732 (Freeze_Enumeration_Type): Don't raise CE if No_Exception_Propagation
5733 active, because there is no way to handle the exception.
5734 (Freeze_Record_Type): In case of CPP_Class types add a call to Make_DT
5735 to do a minimum decoration of the Access_Disp_Table list.
5736 (Expand_Record_Controller): Avoid the addition of the controller between
5737 the component containing the tag of a secondary dispatch table and its
5738 adjacent component that stores the offset to the base of the object.
5739 This latter component is only generated when the parent type has
5740 discriminants ---documented in Add_Interface_Tag_Components).
5741 (Apply_Array_Size_Check): Removed, no longer needed.
5742 (Expand_N_Full_Type_Declaration): If the type has anonymous access
5743 components, create a Master_Entity for it only if it contains tasks.
5744 (Build_Init_Procedure): Suppress the tag assignment compiling under
5746 (Freeze_Record_Type): Remove code associated with creation of dispatch
5748 (Init_Secondary_Tags): Update type of actuals when generating calls to
5749 Ada.Tags.Set_Offset_To_Top
5750 (Stream_Operation_OK): Disable use of streams compiling under no
5752 (Expand_N_Object_Declaration): Don't do Initialize_Scalars initalization
5753 if Has_Init_Expression set.
5754 (Build_Init_Procedure): Replace call to Fill_DT_Entry by call to
5755 Register_Primitive, which provides the same functionality.
5756 (Requires_Init_Proc): Return false in case of interface types.
5757 (Add_Secondary_Tables): Use the new attribute Related_Interface to
5759 (Predefined_Primitive_Freeze): Do not assume that an internal entity
5760 is always associated with a predefined primitive because the internal
5761 entities associated with interface types are not predefined primitives.
5762 Therefore, the call to Is_Internal is replaced by a call to the
5763 function Is_Predefined_Dispatching_Operation.
5764 (Make_Eq_If): When generating the list of comparisons for the
5765 components of a given variant, omit the controller component that is
5766 present if the variant has controlled components.
5768 2007-06-06 Javier Miranda <miranda@adacore.com>
5769 Hristian Kirtchev <kirtchev@adacore.com>
5770 Bob Duff <duff@adacore.com>
5772 * exp_ch4.adb (Complete_Coextension_Finalization): Add machinery to
5773 handle the creation of finalization lists and calls for nested
5774 coextensions when the root of the chains is part of a return statement.
5775 (Inside_A_Return_Statement): New function inside Complete_Coextension_
5777 (Expand_Record_Equality): Skip components that are interface types.
5778 (Displace_Allocator_Pointer): Add missing support for interface subtypes
5779 (Expand_N_Allocator): Replace invocation of Is_Local_Access_Discriminant
5780 with Rewrite_Coextension. Change the condition for detecting coextension
5782 (Is_Local_Access_Discriminant): Removed.
5783 (Rewrite_Coextension): New routine which rewrites a static coextension
5784 as a temporary and uses its unrestricted access in the construction of
5786 (Complete_Coextension_Finalization): New routine. Generate finalization
5787 attachment calls to all delayed coextensions.
5788 (Expand_N_Allocator): Call Complete_Coextension_Finalization whenever
5789 the allocator is not a coextension itself and has delayed coextensions.
5790 If the current allocator is controlled, but also a coextension, delay
5791 the generation of the finalization attachment call.
5792 Rename local variable "Node" to "Nod" in order to avoid confusion with
5794 (Expand_Allocator_Expression): Call Adjust for initialized allocators of
5795 limited types that are not inherently limited. Such an allocator is
5796 illegal, but is generated by the expander for a return statement, to
5797 copy the result onto the secondary stack. This is the only case where a
5798 limited object can be copied. Generate code to displace the pointer
5799 to the object if the qualified expression is a class-wide interface
5800 object. Such displacement was missing and hence the copy of the object
5802 (Apply_Accessibility_Check): Handle allocated objects initialized in
5804 (Displace_Allocator_Pointer): Subsidiary procedure to Expand_N_Allocator
5805 and Expand_Allocator_Expression. Allocating class-wide interface objects
5806 this routine displaces the pointer to the allocated object to reference
5807 the component referencing the corresponding secondary dispatch table.
5808 Expand_Allocator_Expression): Add missing support to allocate class-wide
5809 interface objects initialized with a qualified expression.
5810 (Get_Allocator_Final_List): Test for an anonymous access type that is a
5811 function result type, and use the finalization list associated with the
5812 function scope in that case (such an anonymous type should not be
5813 treated like an access parameter's type).
5815 2007-06-06 Ed Schonberg <schonberg@adacore.com>
5816 Gary Dismukes <dismukes@adacore.com>
5817 Javier Miranda <miranda@adacore.com>
5819 * exp_ch5.adb (Expand_N_Assignment_Statement): For the assignment of a
5820 controlled type, use Make_Handler_For_Ctrl_Operation to construct the
5821 required exception handler.
5822 (Expand_Simple_Function_Return, Expand_N_Return_Statement): Handle
5823 properly the case of a function whose return type is a limited
5824 class-wide interface type. Modify the code of the accessibility
5825 check to handle class-wide interface objects. In this case we need to
5826 displace "this" to reference the primary dispatch table to get access
5827 to the TSD of the object (to evaluate its accessibility level).
5828 (Expand_N_Extended_Return_Statement): Test for a tagged result type
5829 rather than a controlling result as one of the conditions for
5830 generating tests of the implicit BIP_Alloc_Form formal. The
5831 initialization assignment is also handled according to whether the
5832 result is tagged instead of controlling.
5833 In the case where the init assignment is inserted in the "then" part of
5834 the allocation conditional, rewrite the target to be a dereference of
5835 the implicit BIP_Object_Access formal.
5836 If the returned value is unconstrained and created on the secondary
5837 stack, mark the enclosing block and function so that the secondary
5838 stack is not reclaimed on return.
5839 Treat returns from functions with controlling results similarly to
5840 returns from functions with unconstrained result subtypes.
5841 If the object returned is unconstrained, and an allocator must be
5842 created for it, analyze the allocator once the block for the extended
5843 return is installed, to ensure that finalizable components
5844 of the expression use the proper finalization list. Guard the call to
5845 Move_Final_List with a check that there is something to finalize.
5846 (Make_Tag_Ctrl_Assignment): Use "old" handling
5847 of controlled type assignment for virtual machines, since new code uses
5848 unsupported features (such as direct access to bytes in memory).
5850 2007-06-06 Gary Dismukes <dismukes@adacore.com>
5851 Ed Schonberg <schonberg@adacore.com>
5853 * exp_ch6.ads, exp_ch6.adb (Expand_Call): When adding an extra
5854 accessibility actual, check for the case of an aliased object that has
5855 been rewritten as an Access attribute, and assign Prev to Prev_Orig so
5856 we fall into processing for the attribute rather than the name of the
5858 (Expand_Inline_Call): If an actual is a literal, and the corresponding
5859 formal has its address taken in the body, create a temporary to capture
5860 value. If the return type is a limited interface, do not treat the
5861 return value as Controlled.
5862 (Is_In_Place_Function): If the return type is a limited interface,
5863 treat as returning in place. The actual returned object may not always
5864 be limited, but the caller has to assume that it is returned in place.
5865 (Add_Final_List_Actual_To_Build_In_Place_Call): If the call is the
5866 context of an allocator, use the correct finalization chain (that is,
5867 the chain belonging to the access type, rather than the chain belonging
5868 to the current scope).
5869 (Add_Alloc_Form_Actual_To_Build_In_Place_Call): Test for a tagged
5870 result type rather than a controlling result as a precondition for
5871 adding an allocation form actual to a build-in-place call.
5872 (Add_Final_List_Actual_To_Build_In_Place_Call): Ditto.
5873 (Freeze_Subprogram): Code cleanup. Remove all the code that register the
5874 primitive in the dispatch tables. This work is now done by Make_DT when
5876 (Register_Predefined_DT_Entry): Removed.
5877 (Add_Return): If end label is not present, use sloc of last statement
5878 for generated return statement in procedure, for better gdb behavior
5880 (Add_Access_Actual_To_Build_In_Place_Call): Set parent fields of the
5881 object address nodes to ensure proper processing by routines like
5883 (Expand_Call): Fix generation of validity check for parameter
5884 (Add_Alloc_Form_Actual_To_Build_In_Place_Call): Return without passing
5885 the allocation form parameter if the result subtype is constrained,
5886 except when the function has a controlling result.
5887 (Add_Final_List_Actual_To_Build_In_Place_Call): Test Controlled_Type
5888 rather than Is_Controlled and Has_Controlled_Component, since we want to
5889 include class-wide result types in this treatment. Also test for a
5890 controlling result, since that also requires passing a finalization
5892 (Make_Build_In_Place_Call_In_Allocator): Call Add_Alloc_Form_Actual_*
5893 even when the result subtype is constrained, to handle calls involving
5894 controlling results.
5895 (Make_Build_In_Place_Call_In_Anonymous_Context): Add_Alloc_Form_Actual_*
5896 is now called even when the result subtype is constrained, to handle
5897 calls involving controlling results.
5898 (Make_Build_In_Place_Call_In_Assignment): Remove test for Is_Constrained
5899 on call to Add_Alloc_Form_Actual_To_Build_In_Place_Call (that procedure
5900 now performs the test).
5901 (Make_Build_In_Place_Call_In_Object_Declaration):
5902 Add_Alloc_Form_Actual_* is now called even when the result subtype is
5903 constrained, to handle calls involving controlling results.
5904 (Add_Return): Accomodate rewritten pattern from local raise to goto
5905 transformation, so that we still recognize an transfer statement
5906 and do the right thing here in that case.
5907 (Expand_N_Subprogram_Body): Add dummy Push/Pop_xxx_Label nodes at start
5908 and end of subprogram code.
5909 (Register_Interface_DT_Entry, Register_Predefined_DT_Entry): Add missing
5910 support for primitives that are functions (without formals) with a
5912 (Inherited_From_Formal): If the actual subtype has not generic parent
5913 type, it is not an actual for a formal derived type, and there is no
5914 operation to inherit from the formal.
5916 2007-06-06 Ed Schonberg <schonberg@adacore.com>
5917 Thomas Quinot <quinot@adacore.com>
5919 * exp_ch7.ads, exp_ch7.adb (Expand_Cleanup_Actions): Set Sloc of
5920 inserted cleanup code appropriately for GDB use.
5921 (Make_Deep_Proc): Use Make_Handler_For_Ctrl_Operation to create
5922 exception handler for Deep_Adjust or Deep_Finalize.
5923 (Make_Handler_For_Ctrl_Operation): New subprogram. When runtime entity
5924 Raise_From_Controlled_Operation is available, use a call to that
5925 subprogram instead of a plain "raise Program_Error" node to raise
5926 Program_Error if an exception is propagated from an Adjust or Finalize
5928 (Insert_Actions_In_Scope_Around): If the statement to be wrapped
5929 appears in the optional statement list of a triggering alternative, the
5930 scope actions can be inserted directly there, and not in the list that
5931 includes the asynchronous select itself.
5933 2007-06-06 Ed Schonberg <schonberg@adacore.com>
5934 Robert Dewar <dewar@adacore.com>
5935 Hristian Kirtchev <kirtchev@adacore.com>
5937 * exp_ch9.ads, exp_ch9.adb (Build_Protected_Entry): Set sloc of
5938 generated exception handler appropriately when debugging generated code.
5939 Deal properly with No_Exception_Propagation restriction mode.
5940 (Expand_N_Abort_Statement): Add an unchecked type conversion from
5941 System.Address to System.Tasking.Task_Id when processing the result of
5942 the predefined primitive _disp_get_task_id.
5943 (Expand_N_Asynchronous_Select): Clarify comment.
5944 (Expand_N_Protected_Type_Declaration): Minor code cleanup.
5945 (Find_Parameter_Type): New routine inside Type_Conformant_Parameters.
5946 (Type_Conformant_Parameters): New parameter Prim_Op_Typ. Code cleanup.
5947 (Add_Private_Declarations, Build_Protected_Body): Use proper slocs for
5948 privals and for generated call to Complete_Entry_Body, for better gdb
5950 (Copy_Result_Type): Utility to construct a parameter and result profile
5951 for protected functions whose return type is an anonymous access to
5953 (Build_Protected_Sub_Spec and Expand_Access_Protected_Subprogram_Type):
5955 (Build_Task_Activation_Call): Insert Activate_Tasks call at proper
5956 point when the local-raise-to-goto transformation has taken place.
5958 2007-06-06 Javier Miranda <miranda@adacore.com>
5959 Nicolas Setton <setton@adacore.com>
5961 * exp_dbug.adb (Get_Encoded_Name): Modified to continue providing its
5962 functionality when the backend is generating code.
5963 Otherwise any serious error
5964 reported by the backend calling the frontend routine Error_Msg
5965 changes the Compilation_Mode to Check_Semantics, disables the
5966 functionality of this routine and causes the generation of
5967 spureous additional errors.
5969 * exp_dbug.ads (Pointers to Unconstrained Arrays): Document the
5970 debugging information now generated by the compiler for fat-pointer
5972 Document the contents of DW_AT_producer in the GNAT Vendor extensions to
5974 Document GNAT Vendor extensions to DWARF 2/3 and the "-gdwarf+" switch.
5976 2007-06-06 Thomas Quinot <quinot@adacore.com>
5978 * exp_dist.ads, exp_dist.adb (Make_Transportable_Check): New subprogram
5979 (GARLIC_Support.Build_Subprogram_Receiving_Stubs,
5980 PolyORB_Support.Build_Subprogram_Receiving_Stubs):
5981 For a remote call to a function with a classwide return type, apply an
5982 E.4(18) check to the returned value.
5983 (Add_RACW_Primitive_Declarations_And_Bodies): Do not generate stubs for
5984 stream attributes of the designated type of an RACW, as they are not
5985 dispatching primitive operations.
5987 2007-06-06 Geert Bosch <bosch@adacore.com>
5989 * exp_fixd.adb (Integer_Literal): Add optional argument to construct a
5991 (Do_Divide_Fixed_Fixed): Add comments to indicate Frac is always
5993 (Do_Divide_Fixed_Universal): Handle case of negative Frac.
5994 (Do_Multiply_Fixed_Fixed): Add coments to indicate Frac is always
5996 (Do_Multiply_Fixed_Universal): Handle case of negative Frac.
5998 2007-06-06 Javier Miranda <miranda@adacore.com>
6000 * exp_imgv.adb (Expand_Value_Attribute): Disable compilation of this
6001 attribute compiling package Ada.Tags under No_Run_Time_Mode.
6003 2007-06-06 Javier Miranda <miranda@adacore.com>
6005 * exp_intr.adb (Expand_Unc_Deallocation): Add missing support for
6006 deallocation of class-wide interface objects.
6007 (Expand_Dispatching_Constructor_Call): Take into account that if the
6008 result of the dispatching constructor is an interface type, the
6009 function returns a class-wide interface type; otherwise the returned
6010 object would be actual. The frontend previously accepted returning
6011 interface types because Expand_Interface_Actuals silently performed
6012 the management of the returned type "as if" it were a class-wide
6014 (Expand_Dispatching_Constructor_Call): Replace call to
6015 Make_DT_Access_Action by direct call to Make_Function_Call.
6017 2007-06-06 Robert Dewar <dewar@adacore.com>
6018 Ed Schonberg <schonberg@adacore.com>
6020 * exp_pakd.adb (Expand_Packed_Not): Use RM_Size rather than ESize to
6021 compute masking constant, since we now set Esize properly to the
6023 (Create_Packed_Array_Type): Set proper Esize value adjusted as required
6024 to match the alignment.
6025 (Create_Packed_Array_Type): Use Short_Short_Unsigned as base type for
6026 packed arrays of 8 bits or less.
6028 * freeze.adb (Freeze_Entity): When freezing the formals of a
6029 subprogram, freeze the designated type of a parameter of an access type
6030 only if it is an access parameter.
6031 Increase size of C convention enumeration object
6032 (Freeze_Entity, array type case): Make sure Esize value is properly
6033 adjusted for the alignment if it is known.
6034 (Freeze_Entity, array type case): When checking bit packed arrays for
6035 the size being incorrect, check RM_Size, not Esize.
6036 (Freeze_Record_Type): Check for bad discriminated record convention
6037 (In_Exp_Body): Return true if the body is generated for a subprogram
6038 renaming, either an attribute renaming or a renaming as body.
6039 (Check_Itype): If the designated type of an anonymous access component
6040 is a non-protected subprogram type, indicate that it is frozen, to
6041 prevent out-of-scope freeze node at some subsequent call.
6042 (Freeze_Subprogram): On OpenVMS, reject descriptor passing mechanism
6043 only if the subprogram is neither imported nor exported, as well as the
6044 NCA descriptor class if the subprogram is exported.
6046 2007-06-06 Ed Schonberg <schonberg@adacore.com>
6047 Arnaud Charlet <charlet@adacore.com>
6048 Robert Dewar <dewar@adacore.com>
6049 Gary Dismukes <dismukes@adacore.com>
6051 * exp_prag.adb (Expand_Pragma_Import_Or_Interface): Remove properly a
6052 default initialization on an imported object, when there is no
6053 initialization call generated for it.
6054 (Expand_Pragma_Assert): Add handling of No_Exception_Propagation
6057 * snames.h, snames.ads, snames.adb, par-prag.adb: New pragma
6058 Static_Elaboration_Desired.
6059 Remove pragma Thread_Body.
6060 Implement a new pragma No_Body
6061 Removes the Explicit_Overriding pragma
6062 Remove Optional_Overriding pragma
6063 (Prag): Deal with Universal_Aliasing.
6064 (Name_CIL, Name_CIL_Constructor, Convention_CIL,
6065 Pragma_CIL_Constructor): New names.
6067 * sem_cat.adb (Validate_Object_Declaration): An initialization that
6068 uses the equivalent aggregate of a type must be treated as an implicit
6070 (Get_Categorization): Check a unit for pragma Preelaborate only if it
6071 has none of the other categories.
6072 (Process_Import_Or_Interface_Pragma): Report an error for an attempt
6073 to apply Import to an object renaming declaration.
6075 * sem_prag.adb (Process_Import_Or_Interface): Warn that a type imported
6076 from a C++ class should be declared as limited and that it will be
6077 considererd limited.
6078 (Analyze_Pragma): Warn that a type specified with pragma CPP_Class
6079 should be declared as limited and that it will be considererd limited.
6080 (Ada_2005_Pragma): New procedure, used to deal with Ada 2005 pragmas
6081 (Analyze_Pragma, case Export): Diagnose export of enumeration literal
6082 (Analyze_Pragma): Deal with Universal_Aliasing.
6083 (Sig_Flags): Likewise.
6084 (Set_Encoded_Interface_Name): Suppress encoding when compiling for AAMP.
6085 (Overflow_Checks_Unsuppressed): New flag.
6086 (Process_Suppress_Unsuppress): Set Overflow_Checks_Unsuppressed.
6087 (Analyze_Pragma [case Pack]): Ignore pragma Pack and post warning in
6088 case of JVM or .NET targets, and compiling user code.
6089 Add debugging convenience routine rv
6091 2007-06-06 Robert Dewar <dewar@adacore.com>
6093 * exp_strm.adb (Make_Field_Attributes): Avoid _Parent components that
6095 (Build_Elementary_Input_Call): For floating-point use right type in the
6096 absence of strange size or stream size clauses.
6097 (Build_Elementary_Write_Call): Same fix
6098 (Has_Stream_Standard_Rep): Returns False if Stream_Size attribute
6099 set to value that does not match base type size.
6101 2007-06-06 Ed Schonberg <schonberg@adacore.com>
6103 * exp_util.ads, exp_util.adb (Expand_Subtype_From_Expr): In Ada2005, an
6104 object of a limited type can be initialized with a call to a function
6105 that returns in place. If the limited type has unknown discriminants,
6106 and the underlying type is a constrained composite type, build an actual
6107 subtype from the function call, as is done for private types.
6108 (Side_Effect_Free): An expression that is the renaming of an object or
6109 whose prefix is the renaming of a object, is not side-effect free
6110 because it may be assigned through the renaming and its value must be
6111 captured in a temporary.
6112 (Has_Controlled_Coextensions): New routine.
6113 (Expand_Subtype_From_Expr): Do nothing if type is a limited interface,
6114 as is done for other limited types.
6115 (Non_Limited_Designated_Type): new predicate.
6116 (Make_CW_Equivalent_Type): Modified to handle class-wide interface
6118 Remove all handling of with_type clauses.
6120 * par-ch10.adb: Remove all handling of with_type clauses.
6122 * lib-load.ads, lib-load.adb (Load_Main_Source): Do not get the
6123 checksum if the main source could not be parsed.
6124 (Loat_Unit): When processing a child unit, determine properly whether
6125 the parent unit is a renaming when the parent is itself a child unit.
6126 Remove handling of with_type clauses.
6128 * sinfo.ads, sinfo.adb (Is_Static_Coextension): New function.
6129 (Set_Is_Static_Coextension): New procedure.
6130 (Has_Local_Raise): New function
6131 (Set_Has_Local_Raise): New procedure
6132 (Renaming_Exception): New field
6133 (Has_Init_Expression): New flag
6134 (Delay_Finalize_Attach): Remove because flag is obsolete.
6135 (Set_Delay_Finalize_Attach): Remove because flag is obsolete.
6136 Remove all handling of with_type clauses.
6137 (Exception_Junk): Can now be set in N_Block_Statement
6139 2007-06-06 Vincent Celier <celier@adacore.com>
6140 Robert Dewar <dewar@adacore.com>
6142 * frontend.adb (Frontend): Return immediately if the main source could
6143 not be parsed, because of preprocessing errors.
6145 * gnat1drv.adb (gnat1drv): Handle RE_Not_Available gracefully.
6146 (Gnat1drv): Exit with errors if the main source could not be parsed,
6147 because of preprocessing errors.
6148 (Check_Rep_Info): New procedure
6150 2007-06-06 Robert Dewar <dewar@adacore.com>
6152 * g-hesorg.ads, g-heasor.ads,
6153 g-busorg.ads, g-bubsor.ads: Update documentation
6154 GNAT.Heap/Bubble_Sort_G is now pure
6156 2007-06-06 Robert Dewar <dewar@adacore.com>
6158 * g-catiio.ads, g-catiio.adb (Image): Check for null picture string
6160 2007-06-06 Robert Dewar <dewar@adacore.com>
6161 Ed Schonberg <schonberg@adacore.com>
6163 * g-comlin.ads, g-comlin.adb:
6164 Add new warning for renaming of function return objects
6166 * opt.adb (Tree_Write, Tree_Read): Use proper expressions for size
6167 (Tree_Read): Use size of object instead of type'object_size, since the
6168 latter is incorrect for packed array types.
6169 (Tree_Write): Same fix
6171 * opt.ads: Add new warning for renaming of function return objects
6172 (Generating_Code): New boolean variable used to indicate that the
6173 frontend as finished its work and has called the backend to process
6174 the tree and generate the object file.
6175 (GCC_Version): Is now private
6176 (Static_Dispatch_Tables): New constant declaration.
6177 (Overflow_Checks_Unsuppressed): New flag.
6178 (Process_Suppress_Unsuppress): Set Overflow_Checks_Unsuppressed.
6179 (List_Closure): New flag for gnatbind (-R)
6180 Zero_Formatting: New flag for gnatbind (-Z)
6181 (Special_Exception_Package_Used): New flag.
6182 (Warn_On_Unrepped_Components): New flag.
6184 * sem_ch8.adb (Check_Library_Unit_Renaming): Check that the renamed
6185 unit is a compilation unit, rather than relying on its scope, so that
6186 Standard can be renamed.
6187 (Analyze_Object_Renaming): Add new warning for renaming of function
6189 Also reject attempt to rename function return object in Ada 83 mode.
6190 (Attribute_Renaming): In case of tagged types, add the body of the
6191 generated function to the freezing actions of the type.
6192 (Find_Type): A protected type is visible right after the reserved word
6193 "is" is encountered in its type declaration. Set the entity and type
6194 rather than emitting an error message.
6195 (New_Scope): Properly propagate Discard_Names to inner scopes
6196 (Check_Nested_Access): New procedure.
6197 (Has_Nested_Access, Set_Has_Nested_Access): New procedures.
6198 (Find_Direct_Name, Note_Possible_Modification): Use Check_Nested_Access.
6200 * sem_warn.ads, sem_warn.adb: Improvements to infinite loop warning
6201 Add new warning for renaming of function return objects
6202 (Check_References): Suppress warnings for objects whose type or
6203 base type has Warnings suppressed.
6204 (Set_Dot_Warning_Switch): Add processing for -gnatw.c/C
6205 (Set_Warning_Switch): Include new -gnatwc in -gnatwa
6207 2007-06-06 Vincent Celier <celier@adacore.com>
6208 Emmanuel Briot <briot@adacore.com>
6209 Olivier Hainque <hainque@adacore.com>
6211 * g-debpoo.ads, g-debpoo.adb (Free_Physically.Free_Blocks): Use the
6212 absolute value of Header.Block_Size when displaying the freed physical
6214 (Allocate): Compute Storage_Address using Integer_Address, not
6215 Storage_Offset, because the range of Storage_Offset may not be large
6217 (Configure): New parameter Low_Level_Traces
6218 (Allocate, Deallocation, Free_Physically): Added low-level traces
6219 (Configure): new parameter Errors_To_Stdout.
6220 (Output_File): new subprogram
6221 (Deallocate, Dereference): Send error messages to the proper stream
6222 (Print_Pool, Print_Info_Stdout): Make sure the output goes to stdout, as
6223 documented. Previous code would send it to the current output file
6224 defined in GNAT.IO, which might not be stdout
6225 (Is_Valid): Adjust comment to mention that a positive reply means that
6226 Header_Of may be used to retrieve the allocation header associated with
6227 the subprogram Storage address argument. Return False early if this
6228 address argument is misaligned.
6230 2007-06-06 Vincent Celier <celier@adacore.com>
6232 * gnatcmd.adb (GNATCmd): Accept switch -aP for commands that accept
6234 (ASIS_Main): New global variable
6235 (Get_Closure): New procedure
6236 (GNATCmd): Set ASIS_Main when -P and -U with a main is used for gnat
6237 check, metric or pretty. Call Get_Closure in this case.
6238 (Check_Files): For GNAT LIST, check all sources of all projects when
6239 All_Projects is True.
6240 (GNATCmd): Accept -U for GNAT LIST
6242 2007-06-06 Vincent Celier <celier@adacore.com>
6244 * gnatlink.adb (Gnatlink): Do not specify -static-libgcc when --LINK=
6246 Correct error message when invocation of the linker fails
6247 Add explicit size clause for the C imported variables
6248 Object_List_File_Supported and Using_GNU_Linker to emphasize that
6249 we expect char size.
6250 Read target parameters earlier, since this is needed to set
6251 Target_VM properly. Also do not use -static/shared-libgcc for non GCC
6254 2007-06-06 Vincent Celier <celier@adacore.com>
6257 Add 3 spaces before the default project directory when displaying
6258 the project search path.
6259 Add new command line switch '-l' to display license information.
6261 2007-06-06 Vasiliy Fofanov <fofanov@adacore.com>
6263 * gmem.c: Add support for timestamps on memory operations.
6265 * memtrack.adb, gnatmem.adb: Add support for timestamps on memory
6266 operations (not used currently, just foundation for future
6267 enhancements). Add possibility to perform full dump of gmem.out file.
6268 (Print_Back_Traces): Declare accesses to root arrays constants since
6269 they aren't modified.
6270 (Print_Back_Traces): allocate root arrays on the heap rather than stack.
6272 2007-06-06 Vincent Celier <celier@adacore.com>
6274 * gnatsym.adb: Update Copyright notice
6275 (Parse_Cmd_Line): Accept new switch -D
6276 (Gnatsym): In Direct policy (switch -D) copy reference file to symbol
6279 * prj.ads (Policy): New policy Direct
6280 (Yes_No_Unknown): New enumeration type
6281 (Project_Data): New component Libgnarl_Needed
6283 * prj-nmsc.adb (Check_For_Source): When recording a source file make
6284 use the untouched pathname casing.
6285 (Get_Directories): Ensure that the Display_Exec_Directory is using the
6286 proper casing on non case-sensitive platforms like Windows.
6287 (Get_Unit): Accept file names x__... and x~... (where x = a, g, i or s)
6288 on all platforms, as it is not possible to know which one is allowed
6289 before processing the project files.
6290 (Check_Stand_Alone_Library): Check that Library_Reference_Symbol_File is
6291 specified when symbol policy is Direct. Check that when there is a
6292 symbol file defined (either by default or with attribute
6293 Library_Symbol_File) it is not the same as the reference symbol file.
6294 (Check_Stand_Alone_Library): Recognize new symbol policy Direct.
6295 (Look_For_Sources): Allow Locally_Removed_Files to be declare in non
6297 (Record_Ada_Source): Record a source that has been locally removed in an
6300 * symbols.ads (Policy): New policy Direct
6302 * symbols-vms.adb (Initialize): Take new policy Direct in case
6305 2007-06-06 Vincent Celier <celier@adacore.com>
6307 * g-os_lib.ads, g-os_lib.adb (Normalize_Pathname.Get_Directory):
6308 Correct obvious bug (return Dir; instead of return Directory;).
6309 (Normalize_Pathname): Use Reference_Dir'Length, not Reference_Dir'Last
6311 2007-06-06 Thomas Quinot <quinot@adacore.com>
6313 * g-pehage.adb (Produce): Open output files in Binary mode, so that
6314 they have UNIX line endings (LF only) even on Windows, and thus pass
6315 all GNAT style checks.
6317 2007-06-06 Emmanuel Briot <briot@adacore.com>
6319 * g-regpat.adb (Quote): Fix improper quoting of '.'
6321 2007-06-06 Thomas Quinot <quinot@adacore.com>
6323 * g-soccon.ads: Add new constant Thread_Blocking_IO, always True by
6324 default, set False on a per-runtime basis.
6325 (Need_Netdb_Buffer): New constant.
6327 * g-socket.ads, g-socket.adb: Import new package
6328 GNAT.Sockets.Thin.Task_Safe_NetDB.
6329 (Raise_Host_Error): Use Host_Error_Message from platform-specific thin
6330 binding to obtain proper message.
6331 (Close_Selector): Use GNAT.Sockets.Thin.Signalling_Fds.Close.
6332 Replace various occurrences of Arry (Arry'First)'Address with the
6333 equivalent Arry'Address (GNAT always follows implementation advice from
6335 (Get_Host_By_Address, Get_Host_By_Name,
6336 Get_Service_By_Name, Get_Service_By_Port): Do not use GNAT.Task_Lock;
6337 instead, rely on platform-specific task safe netdb operations provided
6340 * g-socthi.ads, g-socthi.adb (Initialize): Remove obsolete formal
6341 parameter Process_Blocking_IO.
6342 (Host_Error_Messages): Add stub body.
6343 (GNAT.Sockets.Thin.Signalling_Fds): New procedure Close.
6344 (Safe_Gethostbyname, Safe_Gethostbyaddr, Safe_Getservbyname,
6345 Safe_Getservbyport): Move functions into new child package
6347 (Nonreentrant_Gethostbyname, Nonreentrant_Gethostbyaddr,
6348 Nonreentrant_Getservbyname, Nonreentrant_Getservbyport): New routines.
6349 (In_Addr): Add alignment clause.
6351 2007-06-06 Robert Dewar <dewar@adacore.com>
6353 * g-trasym.ads, g-traceb.ads: Update list of supported targets
6354 Add note about symbolic traceback
6356 2007-06-06 Pascal Obry <obry@adacore.com>
6358 * hostparm.ads (Normalized_CWD): Use the host directory separator
6359 instead of the hardcoded forward slash which is not the proper
6360 character on Windows for example.
6363 2007-06-06 Vincent Celier <celier@adacore.com>
6364 Arnaud Charlet <charlet@adacore.com>
6366 * a-clrefi.adb, a-clrefi.ads: New files
6368 * impunit.adb: Add s-os_lib in the list of user visible units.
6369 (Non_Imp_File_Names_95): Add a-clrefi to this list
6370 Remove obsolete run-time entries.
6371 (Non_Imp_File_Names_05): Add Ada 2005 entries for:
6372 "a-exetim" -- Ada.Execution_Time
6373 "a-extiti" -- Ada.Execution_Time.Timers
6375 * mlib-prj.ads, mlib-prj.adb
6376 (Build_Library): Use untouched object dir and library dir. At the
6377 same time makes sure that the checks are done using the canonical
6378 form. Removes hard-coded directory separator and use the proper host
6380 (Process_Project): Do not look in object directory to check if libgnarl
6381 is needed for a library, if there is no object directory.
6382 (Build_Library): Scan the ALI files to decide if libgnarl is needed for
6384 (Build_Library): When invoking gnatbind, use a response file if the
6385 total size of the arguments is too large.
6387 * Makefile.rtl: (g-sttsne): New object file.
6388 Add entry for a-clrefi, s-utf_32, System.Exceptions
6390 * Make-lang.in: Remove bogus dependency of s-memory.o on memtrack.o.
6391 (GNAT_ADA_OBJS, GNATBIND_OBJS): Add s-except.o.
6392 (GNATBIND_OBJS): Add new objects a-clrefi.o and a-comlin.o
6393 Change g-string to s-string, g-os_lib to s-os_lib
6394 Change all g-utf_32 references to s-utf_32
6396 2007-06-06 Tristan Gingold <gingold@adacore.com>
6397 Olivier Hainque <hainque@adacore.com>
6399 * init.c: Do not adjust IP of an imported VMS exception of ia64.
6400 LIB$STOP is called to raise an exception and the IP of the exception
6401 is the instruction right after the call.
6402 (__gnat_adjust_context_for_raise, AIX): Implement.
6403 (__gnat_error_handler, AIX): Accept SIGINFO related arguments and call
6404 adjust_context_for_raise before Raise_From_Signal_Hanler.
6405 (__gnat_install_handler, AIX): Add SA_SIGINFO to the sa_flags, to ensure
6406 siginfo is passed to the handler, necessary to let the zcx propagation
6407 engine unwind past it.
6409 2007-06-06 Olivier Hainque <hainque@adacore.com>
6411 * initialize.c (__gnat_initialize for vxworks): Update documentation
6412 on the ZCX support, using different sets of crtstuff objects than with
6415 2007-06-06 Robert Dewar <dewar@adacore.com>
6417 * layout.ads, layout.adb (Adjust_Esize_Alignment): Move spec to package
6419 (Layout_Type): Fix recomputation of size from alignment.
6421 2007-06-06 Ed Schonberg <schonberg@adacore.com>
6422 Javier Miranda <miranda@adacore.com>
6424 * sem_ch12.adb (Analyze_Associations): Diagnose use of an others
6425 association in an instance.
6426 (Copy_Generic_Node): If the node is a string literal, no need to copy
6428 (Is_Generic_Formal): For a formal subprogram, the declaration is the
6429 grandparent of the entity.
6430 (Analyze_Formal_Interface_Type): Transform into a full type declaration,
6431 to simplify handling of formal interfaces that derive from other formal
6433 (Instantiate_Subprogram_Body): The defining unit name of the body of
6434 the instance should be a defining identifier.
6435 (Install_Formal_Packages): make global to the package, for use in
6436 instantiations of child units.
6437 (Analyze_Package_Instantiation): Do not attempt to set information on an
6438 enclosing master of an entry when expansion is disabled.
6439 (Instantiate_Type): If the actual is a tagged synchronized type and the
6440 generic ancestor is an interface, create a generic actual for the
6441 corresponding record.
6442 (Analyze_Formal_Derived_Interface_Type): Rewrite as a derived type
6443 declaration, to ensure that the interface list is processed correctly.
6444 (Inline_Instance_Body): If enclosing scope is an instance body, remove
6445 its entities from visibiility as well.
6446 (Pre_Analyze_Actuals): if the actual is an allocator with constraints
6447 given with a named association, analyze the expression only, not the
6448 discriminant association itself.
6449 (Reset_Entity): If the analysis of a selected component is transformed
6450 into an expanded name in the prefix of a call with parameters, do not
6451 transform the original node into an expanded name, to prevent visibility
6452 errors in the case of nested generics.
6453 (Check_Private_View): For an array type, check whether the index types
6454 may need exchanging.
6456 2007-06-06 Arnaud Charlet <charlet@adacore.com>
6457 Vincent Celier <celier@adacore.com>
6459 * lib-writ.adb: Handle Convention_CIL in addition to Convention_Java,
6460 since both are separated.
6461 Add support for imported CIL packages.
6462 Add further special handling of "value_type" for CIL.
6463 Add special handling of pragma Import for CIL.
6465 * make.ads, make.adb: When switch -eS is used, direct all outputs to
6466 standard output instead of standard error, except errors.
6467 (Absolute_Path): Use untouched casing for the parent directory.
6468 (Add_Library_Search_Dir): Use the untouched directory name.
6469 (Add_Source_Search_Dir): Idem.
6470 (Change_To_Object_Directory): Update output to use proper casing.
6471 (Create_Binder_Mapping_File): Use the untouched filename to set
6473 (Gnatmake): Use untouched library and executable directory names.
6474 (Insert_Project_Sources): Use untouched filename for spec and body.
6475 (Is_In_Object_Directory): Use untouched object directory.
6476 (Mark_Directory): Idem.
6477 (Collect_Arguments_And_Compile): Ensure that Full_Source_File always
6478 contains the non-canonical filename in all cases.
6479 (Change_To_Object_Directory): In verbose mode, display the name of the
6480 object directory we're changing to.
6481 (Compile_Sources): Make sure, when a project file is used, to compile
6482 the body of the unit, when there is one, even when only the spec is
6483 recorded in an ALI file.
6484 (Gcc_Switches, Binder_Switches, Linker_Switches): Tables moved from the
6486 (Report_Compilation_Failed): New procedure
6487 (Bind, Display_Commands, Compile_Sources, Initialize, Scan_Make_Arg):
6488 procedures moved from the spec to the body.
6489 (Extract_Failure): Removed, not used
6490 Replace explicit raises of exception Bind_Failed and Link_Failed with
6491 calls to Make_Failed with the proper message.
6492 Replace explicit raises of exception Compilation_Failed with calls to
6493 procedure Report_Compilation_Failed.
6494 (Initialize): Create mapping files unconditionally when using project
6497 * sem_mech.adb: (Name_CIL, Name_CIL_Constructor, Convention_CIL,
6498 Pragma_CIL_Constructor): New names.
6500 * targparm.ads, targparm.adb
6501 (Compiler_System_Version): Removed, no longer used.
6502 (Get_Target_Parameters): Relax checks on system.ads validity. Add
6503 handling of two new system flags: JVM and CLI.
6505 2007-06-06 Jose Ruiz <ruiz@adacore.com>
6506 Arnaud Charlet <charlet@adacore.com>
6508 * Makefile.in (LIBGNAT_TARGET_PAIRS for VxWorks 6): For the RTP run
6509 time, use the default s-interr body that provides interrupt support
6511 (LIBGNAT_TARGET_PAIRS for x86-linux): Use specialized versions of
6512 a-exetim.ad{s,b}, a-extiti.ad{s,b}, a-rttiev.ad{s,b}, s-osinte.ad{s,b},
6513 g-soccon.ads, and s-taprop.adb for the marte run time.
6514 (EXTRA_GNATRTL_TASKING_OBJS for x86-linux): Execution time clocks and
6515 timers are supported on marte.
6516 (EH_MECHANISM for marte): Do not use ZCX.
6517 (THREADSLIB for marte): Use -lmarte.
6518 Add mlib-tgt-vms.o to the list of objects for gnatmake for VMS
6519 Add mlib-tgt-specific.o to gnatmake objects
6520 mlib-tgt-<platforms>.adb is now the body of MLib.Tgt.Specific, no
6522 (LIBGNAT_TARGET_PAIRS for vxworks): When building a run time for VxWorks
6523 6, either kernel or rtp, use a specialized version of s-osinte.ads.
6525 2007-06-06 Pascal Obry <obry@adacore.com>
6527 * mkdir.c (__gnat_mkdir): Add support for UTF-8.
6529 2007-06-06 Vincent Celier <celier@adacore.com>
6531 * mlib.ads, mlib.adb (Build_Library): Do not use hard-coded directory
6532 separator, use instead the proper host directory separator.
6533 (Copy_ALI_Files): Make sure that an already existing ALI file in the
6534 ALI copy dir is writable, before doing the copy.
6536 * mlib-utl.ads, mlib-utl.adb:
6537 (Gcc): If length of command line is too long, put the list of object
6538 files in a response file, if this is supported by the platform.
6539 (Ar): If invocation of the archive builder is allowed to be done in
6540 chunks and building it in one shot would go above an OS dependent
6541 limit on the number of characters on the command line, build the archive
6544 2007-06-06 Vincent Celier <celier@adacore.com>
6546 * osinte-c.ads, osint-c.adb (Set_Library_Info_Name): Fail if base name
6547 of specified object file is not equal to base name of source.
6549 2007-06-06 Javier Miranda <miranda@adacore.com>
6550 Hristian Kirtchev <kirtchev@adacore.com>
6551 Ed Schonberg <schonberg@adacore.com>
6553 * sem_ch3.adb (Process_Full_View): Propagate the CPP_Class attribute to
6554 the full type declaration.
6555 (Analyze_Component_Declaration): Add local variable E to capture the
6556 initialization expression of the declaration. Replace the occurences of
6557 Expression (N) with E.
6558 (OK_For_Limited_Init_In_05): Allow initialization of class-wide
6559 limited interface object with a function call.
6560 (Array_Type_Declaration): If the declaration lacks subtype marks for
6561 indices, create a simple index list to prevent cascaded errors.
6562 (Is_Null_Extension): Ignore internal components created for secondary
6563 tags when checking whether a record extension is a null extension.
6564 (Check_Abstract_Interfaces): Add missing support for interface subtypes
6565 and generic formals.
6566 (Derived_Type_Declaration): Add missing support for interface subtypes
6567 and generic formals.
6568 (Analyze_Object_Declaration): If an initialization expression is
6569 present, traverse its subtree and mark all allocators as static
6571 (Add_Interface_Tag_Component): When looking for components that may be
6572 secondary tags, ignore pragmas that can appear within a record
6574 (Check_Abstract_Overriding): an inherited function that dispatches on
6575 result does not need to be overriden if the controlling type is a null
6577 (Mentions_T): Handle properly a 'class attribute in an anonymous access
6578 component declaration, when the prefix is an expanded name.
6579 (Inherit_Component): If the derivation is for a private extension,
6580 inherited components remain visible and their ekind should not be set
6582 (Find_Type_Of_Object): In the case of an access definition, always set
6583 Is_Local_Anonymous_Access. We were previously not marking the anonymous
6584 access type of a return object as a local anonymous type.
6585 (Make_Index): Use Ambiguous_Character to report ambiguity on a discrete
6586 range with character literal bounds.
6587 (Constrain_Array): Initialize the Packed_Array_Type field to Empty.
6588 (Access_Subprogram_Declaration): Indicate that the type declaration
6589 depends on an incomplete type only if the incomplete type is declared
6591 (Analyze_Subtype_Declaration): Handle properly subtypes of
6592 synchronized types that are tagged, and that may appear as generic
6594 (Access_Subprogram_Declaration): An anonymous access to subprogram can
6595 appear as an access discriminant in a private type declaration.
6596 (Add_Interface_Tag_Components): Complete decoration of the component
6597 containing the tag of a secondary dispatch table and the component
6598 containing the offset to the base of the object (this latter component
6599 is only generated when the parent type has discriminants --as documented
6601 (Inherit_Components): Use the new decoration of the tag components to
6602 improve the condition that avoids inheriting the components associated
6603 with secondary tags of the parent.
6604 (Build_Discriminanted_Subtype): Indicate to the backend that the
6605 size of record types associated with dispatch tables is known at
6607 (Analyze_Subtype_Declaration): Propagate Is_Interface flag when needed.
6608 (Analyze_Interface_Declaration): Change setting of Is_Limited_Interface
6609 to include task, protected, and synchronized interfaces as limited
6611 (Process_Discriminants): Remove the setting of
6612 Is_Local_Anonymous_Access on the type of (anonymous) access
6613 discriminants of nonlimited types.
6614 (Analyze_Interface_Type_Declaration): Complete the decoration of the
6615 class-wide entity it is is already present. This situation occurs if
6616 the limited-view has been previously built.
6617 (Enumeration_Type_Declaration): Initialize properly the Enum_Pos_To_Rep
6619 (Add_Interface_Tag_Components.Add_Tag): Set the value of the attribute
6622 2007-06-06 Ed Schonberg <schonberg@adacore.com>
6624 * sem_aggr.adb (Resolve_Record_Aggregate): Ignore internal components
6625 of the type that specify the position of interface tags when the type
6626 inherits discriminated array components from the parent type.
6627 If a component is initialized with a box, check for the presence of a
6628 default expression in its declaration before using its default
6629 initialization procedure.
6630 (Resolve_Record_Aggregate): If a component is box-initialized, and the
6631 component type has a discriminants, create a partial aggregate for it
6632 by copying the discriminants of the component subtype.
6633 Reject attempt to initialize a discriminant with a box.
6634 (Array_Aggr_Subtype): Indicate to the backend that the size of arrays
6635 associated with dispatch tables is known at compile time.
6636 (Get_Value): If an association in a record aggregate has a box
6637 association, and the corresponding record component has a default
6638 expression, always copy the default expression, even when the
6639 association has a single choice, in order to create a proper
6640 association for the expanded aggregate.
6642 2007-06-06 Ed Schonberg <schonberg@adacore.com>
6643 Robert Dewar <dewar@adacore.com>
6645 * par-ch12.adb (P_Generic_Associations): The source position of an
6646 Others association is that of the others keyword, not that of the token
6647 that follows the box.
6648 (P_Formal_Type_Definition): Handle formal access types that carry a
6651 * par-ch3.adb (P_Known_Discriminant_Part_Opt, P_Component_Items): If
6652 multiple identifier are present, save Scan_State before scanning the
6653 colon, to ensure that separate trees are constructed for each
6655 (P_Identifier_Declarations): For object declaration, set new flag
6656 Has_Init_Expression if initialization expression present.
6657 (P_Null_Exclusion): Properly diagnose NOT NULL coming before NULL
6658 Improve NOT NULL error messages
6660 2007-06-06 Robert Dewar <dewar@adacore.com>
6662 * par-ch4.adb: (P_Name): Recover from literal used as name
6664 2007-06-06 Vincent Celier <celier@adacore.com>
6666 * prep.ads, prep.adb (Expression): New Boolean parameter Complemented,
6668 In the "not" case, recursive call with Complemented set to True.
6669 Do not allow "or" or "and" operators when Complemented is True.
6671 2007-06-06 Vincent Celier <celier@adacore.com>
6673 * prj.adb (Project_Empty): Gives default value for new component
6676 * prj-attr.ads: Minor reformatting
6678 * prj-env.ads, prj-env.adb (For_All_Object_Dirs): Register object
6679 directory using the untouched casing.
6680 (For_All_Source_Dirs): Idem.
6682 * prj-ext.ads, prj-ext.adb (Search_Directories): New table to record
6683 directories specified with switches -aP.
6684 (Add_Search_Project_Directory): New procedure
6685 (Initialize_Project_Path): Put the directories in table
6686 Search_Directories in the project search path.
6687 (Initialize_Project_Path): For VMS, transform into canonical form the
6690 2007-06-06 Arnaud Charlet <charlet@adacore.com>
6692 * restrict.ads, restrict.adb (No_Exception_Handlers_Set): Only return
6693 true if configurable run-time or No_Run_Time is set.
6694 (Set_Restriction): Avoid setting restriction No_Elaboration_Code when
6695 processing an unit which is not the one being compiled.
6697 2007-06-06 Arnaud Charlet <charlet@adacore.com>
6699 * s-arit64.adb: Replace System.Pure_Exceptions by Ada 05 syntax.
6700 Replace UC by Ada.UC
6702 * s-bitops.adb: Get rid of System.Pure_Exceptions.
6703 Replace UC by Ada.UC
6705 2007-06-06 Robert Dewar <dewar@adacore.com>
6707 * scng.adb: (Check_End_Of_Line): Deal with very long lines
6709 2007-06-06 Robert Dewar <dewar@adacore.com>
6711 * sem.ads, sem.adb (Semantics): Save and restore Global_Discard_Names
6712 Remove no longer used nodes.
6714 2007-06-06 Javier Miranda <miranda@adacore.com>
6715 Ed Schonberg <schonberg@adacore.com>
6716 Robert Dewar <dewar@adacore.com>
6718 * sem_ch10.ads, sem_ch10.adb (Analyze_Compilation_Unit): Disable check
6719 on obsolescent withed unit in case of limited-withed units.
6720 (Analyze_Compilation_Unit): Add guard to code that removed an
6721 instantiation from visibility, to prevent compiler aborts when
6722 instantiation is abandoned early on.
6723 (Install_Limited_Withed_Unit): Recognize a limited-with clause on the
6724 current unit being analyzed, and Distinguish local incomplete types
6725 from limited views of types declared elsewhere.
6726 (Build_Limited_Views.Decorate_Tagged_Type): Add documentation
6727 to state that the class-wide entity is shared by the limited-view
6729 (Analyze_With_Clause): Improve placement of flag for case of
6731 (Analyze_With_Clause): Recognize use of GNAT.Exception_Traces in a
6732 manner similar to GNAT.Current_Exception. This is a violation of
6733 restriction (No_Exception_Propagation), and also inhibits the
6734 optimization of local raise to goto.
6735 (Analyze_With_Clause): Check for Most_Recent_Exception being with'ed,
6736 and if so set Most_Recent_Exception_Used flag in Opt, and also check
6737 for violation of restriction No_Exception_Propagation.
6739 2007-06-06 Javier Miranda <miranda@adacore.com>
6740 Hristian Kirtchev <kirtchev@adacore.com>
6741 Gary Dismukes <dismukes@adacore.com>
6743 * sem_ch11.adb (Analyze_Exception_Handlers): Add barrier to avoid the
6744 use of entity Exception_Occurrence if it is not available in the
6747 * sem_ch9.adb (Analyze_Protected_Type, Analyze_Task_Type): When
6748 concurrent types are declared within an Ada 2005 generic, build their
6749 corresponding record types since they are needed for overriding-related
6751 (Analyze_Protected_Type): Rearrange and simplify code for testing that a
6752 protected type does not implement a task interface or a nonlimited
6754 (Analyze_Task_Type): Rearrange and simplify code for testing that a task
6755 type does not implement a protected interface or a nonlimited interface.
6756 (Single_Task_Declaration, Single_Protected_Declaration): use original
6757 entity for variable declaration, to ensure that debugging information
6758 is correcty generated.
6759 (Analyze_Protected_Type, Analyze_Task_Type): Do not call expander
6760 routines if the expander is not active.
6761 (Analyze_Task_Body): Mark all handlers to stop optimization of local
6762 raise, since special things happen for task exception handlers.
6764 * sem_disp.adb (Check_Controlling_Formals): Add type retrieval for
6765 concurrent types declared within a generic.
6766 (Check_Dispatching_Operation): Do not emit warning about late interface
6767 operations in the context of an instance.
6768 (Check_Dispatching_Call): Remove restriction against calling a
6769 dispatching operation with a limited controlling result.
6770 (Check_Dispatching_Operation): Replace calls to Fill_DT_Entry and
6771 Register_Interface_DT_Entry by calls to Register_Primitive.
6772 (Check_Dispatching_Formals): Handle properly a function with a
6773 controlling access result.
6775 2007-06-06 Robert Dewar <dewar@adacore.com>
6776 Arnaud Charlet <charlet@adacore.com>
6778 * sem_ch13.adb (Analyze_Attribute_Definition_Clause, case Stream_Size):
6779 Check for restriction No_Implementation_Attributes if in Ada 95 mode.
6780 (Storage_Pool): Do not crash when RE_Stack_Bounded_Pool is not available
6781 (Analyze_Attribute_Definition_Clause [External_Tag]): Generate error
6782 message when using a VM, since this attribute is not supported.
6783 (Analyze_Record_Representation_Clause): Give unrepped component warnings
6785 * usage.adb: Add new warning for renaming of function return objects
6786 Indicate that -gnatwp and -gnatwP concern front-end inlining
6787 Add line for -gnatyg
6788 Add usage information for -gnatw.c/C
6790 2007-06-06 Robert Dewar <dewar@adacore.com>
6791 Ed Schonberg <schonberg@adacore.com>
6794 (Find_Var): Do not consider function call in test for infinite loop
6795 warning if warnings set off for function entity.
6796 (One_Bound): Do not create a temporary for a loop bound if it is a
6798 (Analyze_Assignment): Traverse the right hand side of an assignment and
6799 mark all allocators as static coextensions.
6800 (Analyze_Assignment): Exempt assignments involving a dispatching call
6801 to a function with a controlling access result from the check requiring
6802 the target to be class-wide.
6804 2007-06-06 Hristian Kirtchev <kirtchev@adacore.com>
6805 Ed Schonberg <schonberg@adacore.com>
6806 Robert Dewar <dewar@adacore.com>
6807 Javier Miranda <miranda@adacore.com>
6809 * sem_res.ads, sem_res.adb (Process_Allocator): Do not propagate the
6810 chain of coextensions when an allocator serves as the root of such a
6812 (Propagate_Coextensions): Remove the test for the root being an
6814 (Resolve_Allocator): Add condition to ensure that all future decoration
6815 occurs on an allocator node. Add processing and cleanup for static
6817 (Valid_Conversion): If the operand type is the limited view of a
6818 class-wide type, use the non-limited view is available to determine
6819 legality of operation.
6820 (Ambiguous_Character): move to spec, for use elsewhere.
6821 (Ambiguous_Character): Handle Wide_Wide_Character in Ada 2005 mode
6822 (Resolve_Range): Diagnose properly an ambiguous range whose bounds are
6824 (Resolve_Arithmetic_Op): Call Activate_Division_Check instead of setting
6825 Do_Division_Check flag explicitly.
6826 (Resolve_Actuals): If the actual is of a synchronized type, and the
6827 formal is of the corresponding record type, this is a call to a
6828 primitive operation of the type, that is declared outside of the type;
6829 the actual must be unchecked-converted to the type of the actual
6830 (Resolve_Call): Kill all current values for any subprogram call if
6831 flag Suppress_Value_Tracking_On_Call is set.
6832 (Resolve_Type_Conversion): Generate error message the the operand
6833 or target of interface conversions come from a limited view.
6834 (Check_Infinite_Recursion): Ignore generated calls
6835 (Check_Allocator_Discrim_Accessibility): New procedure for checking
6836 that an expression that constrains an access discriminant in an
6837 allocator does not denote an object with a deeper level than the
6838 allocator's access type.
6839 (Resolve_Allocator): In the case of an allocator initialized by an
6840 aggregate of a discriminated type, check that associations for any
6841 access discriminants satisfy accessibility requirements by calling
6842 Check_Allocator_Discrim_Accessibility.
6843 (Resolve_Equality_Op): Handle comparisons of anonymous access to
6844 subprogram types in the same fashion as other anonymous access types.
6845 (Resolve_Concatenation_Arg): Remove initial character '\' in an error
6846 message that is not a continuation message.
6847 (Resolve_Type_Conversion): Add missing support for conversion to
6849 (Resolve_Actuals): Introduce a transient scope around the call if an
6850 actual is a call to a function returning a limited type, because the
6851 resulting value must be finalized after the call.
6852 (Resolve_Actuals): If the call was given in prefix notations, check
6853 whether an implicit 'Access reference or implicit dereference must be
6854 added to make the actual conform to the controlling formal.
6856 2007-06-06 Robert Dewar <dewar@adacore.com>
6857 Javier Miranda <miranda@adacore.com>
6859 * sem_ch7.adb (Check_Anonymous_Access_Types): Fix error for null body
6860 (Derive_Inherited_Private_Subprogram): Code cleanup. In case of explicit
6861 overriding of an inherited private subprogram now there is no need to
6862 inherit its dispatching slot and reduce the size of the dispatch table.
6863 Set_All_DT_Position now ensures that the same slot is now assigned to
6864 both entities. This is required to statically build the dispatch table.
6865 (Declare_Inherited_Private_Subprograms): Rewriten to avoid the need
6866 of calling Set_All_DT_Position to re-evaluate the position of the
6867 entries in the dispatch table. Such reevaluation is not desired if
6868 the tagged type is already frozen.
6870 2007-06-06 Hristian Kirtchev <kirtchev@adacore.com>
6871 Gary Dismukes <dismukes@adacore.com>
6872 Robert Dewar <dewar@adacore.com>
6873 Javier Miranda <miranda@adacore.com>
6875 * sem_util.ads, sem_util.adb (May_Be_Lvalue): A prefix of an attribute
6876 reference acts as an lvalue when the attribute name modifies the prefix
6877 (Is_Coextension_Root): New routine.
6878 (Mark_Static_Coextensions): New routine.
6879 (Type_Access_Level): Revise code for checking the level of the
6880 anonymous access type of a return object.
6881 (Safe_To_Capture_Value): Not safe to capture if Address_Taken
6882 (Matches_Prefixed_View_Profile): Remove the no longer necessary
6883 retrieval of the corresponding controlling record type.
6884 (Find_Overridden_Synchronized_Primitive): Code cleanup. Add handling of
6885 concurrent types declared within a generic as well as class wide types.
6886 Emit a mode incompatibility error whenever a protected entry or routine
6887 override an interface routine whose first parameter is not of mode
6888 "out", "in out" or access to variable.
6889 (Overrides_Synchronized_Primitive): Rename to
6890 Find_Overridden_Synchronized_Primitive.
6891 (Collect_Interface_Components): New subprogram that collects all the
6892 components of a tagged record containing tags of secondary dispatch
6894 (Add_Global_Declaration): New procedure
6895 (Abstract_Interface_List): Handle properly the case of a subtype of a
6897 (Type_Access_Level): In the case of a type whose parent scope is a
6898 return statement, call Type_Access_Level recursively on the enclosing
6899 function's result type to determine the level of the return object's
6901 (Build_Elaboration_Entity): Build name of elaboration entity from the
6902 scope chain of the entity, rather than the unit name of the file name.
6903 (Check_Nested_Access): New procedure.
6904 (Has_Up_Level_Access, Set_Has_Up_Level_Access): New procedures.
6905 (Find_Direct_Name, Note_Possible_Modification): Use Check_Nested_Access.
6906 (Get_Renamed_Entity): Utility routine for performing common operation
6907 of chasing the Renamed_Entity field of an entity.
6909 2007-06-06 Robert Dewar <dewar@adacore.com>
6911 * sem_elab.adb (Check_A_Call): Specialize elaboration warnings on
6913 (Check_A_Call): Add check for entry call which was causing blowup
6915 2007-06-06 Olivier Hainque <hainque@adacore.com>
6917 * raise-gcc.c (__gnat_eh_personality): Tweak the signature and add
6918 special code on ia64-vms to handle major incompatibilities between the
6919 GCC unwinding ABI and the VMS Condition Handling Facility, both calling
6920 this routine with a very different set of arguments and expectations on
6923 2007-06-06 Thomas Quinot <quinot@adacore.com>
6925 * socket.c (__gnat_close_signalling_fd): New function.
6926 (__gnat_safe_gethostbyaddr, __gnat_safe_gethostbyname,
6927 __gnat_safe_getservbyname, __gnat_safe_getservbyport):
6928 New supporting functions for task safe Netdb operations.
6930 2007-06-06 Thomas Quinot <quinot@adacore.com>
6931 Olivier Hainque <hainque@adacore.com>
6933 * a-except-2005.ads, a-except-2005.adb
6934 (Raise_From_Controlled_Operation): New procedure in
6935 (private part of) Ada.Exceptions (standard runtime version). Used to
6936 provide informational exception message when Program_Error is raised as
6937 a result of an Adjust or Finalize operation propagating an exception.
6938 (Rmsg_28): Fix description for E.4(18) check.
6939 (Raise_Current_Excep): Call Debug_Raise_Exception just before
6940 propagation starts, to let debuggers know about the event in a reliable
6942 Take the address of E and dereference to make sure it is homed on stack
6943 and prevent the stores from being deleted, necessary for proper
6944 debugger behavior on "break exception" hits.
6945 (Local_Raise): Moved to System.Exceptions
6947 * s-finimp.adb (Raise_From_Finalize): Code to construct an appropriate
6948 exception message from the current occurrence and raise Program_Error
6949 has been moved to Ada.Exceptions.Raise_From_Controlled_Operation.
6951 2007-06-06 Jose Ruiz <ruiz@adacore.com>
6952 Arnaud Charlet <charlet@adacore.com>
6954 * s-taprob.adb (Unlock): Change the ceiling priority of the underlying
6957 * s-taprop.ads (Set_Ceiling): Add this procedure to change the ceiling
6958 priority associated to a lock.
6960 * s-tpoben.adb ([Vulnerable_]Complete_Task, Lock_Entries): Relax
6961 assertion to take into account case of no abort restriction.
6962 (Initialize_Protection_Entries): Add initialization for the field
6963 New_Ceiling associated to the protected object.
6964 (Unlock_Entries): Change the ceiling priority of the underlying lock, if
6967 * s-solita.adb (Get_Current_Excep): Moved back to s-tasini/s-tarest,
6968 since this function needs to be set consistently with Update_Exception.
6970 * s-tarest.adb (Get_Current_Excep): Moved back to s-tasini/s-tarest,
6971 since this function needs to be set consistently with Update_Exception.
6973 * s-taskin.ads: Update comments on
6974 Interrupt_Server_Blocked_On_Event_Flag.
6975 (Unbind_Handler): Fix handling of server_task wakeup
6976 (Server_Task): Set self's state so that Unbind_Handler can take
6977 appropriate actions.
6978 (Common_ATCB): Now use a constant from System.Parameters to determine
6979 the max size of the Task_Image field.
6981 * s-tassta.adb (Task_Wrapper): Now pass the overflow guard to the
6982 Initialize_Analyzer function.
6983 ([Vulnerable_]Complete_Task, Lock_Entries): Relax assertion to
6984 take into account case of no abort restriction.
6985 ([Vulnerable_]Complete_Master): Modify assertion.
6987 * s-tataat.adb (Finalize): Use the nestable versions of
6988 Defer/Undefer_Abort.
6990 * s-tpobop.adb (Protected_Entry_Call): Relax assertion.
6992 * s-tpobop.ads: Update comments.
6994 * s-tposen.adb (Protected_Single_Entry_Call): Call Lock_Entry instead
6995 of locking the object manually, to avoid inconsistencies between
6996 Lock/Unlock_Entry assertions.
6998 * s-interr.ads, s-interr.adb (Server_Task): Fix race condition when
7000 application and System.Parameters.No_Abort is True.
7001 Update comments on Interrupt_Server_Blocked_On_Event_Flag.
7002 (Unbind_Handler): Fix handling of server_task wakeup
7003 (Server_Task): Set self's state so that Unbind_Handler can take
7004 appropriate actions.
7006 2007-06-06 Thomas Quinot <quinot@adacore.com>
7008 * s-finroo.ads, s-finroo.adb (Read, Write): Use null procedure
7009 declarations instead of an explicit null body, for conciseness.
7011 2007-06-06 Robert Dewar <dewar@adacore.com>
7013 * sem_eval.adb (Eval_Relational_Op): nothing to do if an operand is an
7014 illegal aggregate and the type is still Any_Composite.
7015 (Subtypes_Statically_Match): Fix problem of empty discriminant list
7017 2007-06-06 Ed Schonberg <schonberg@adacore.com>
7019 * sem_smem.adb (Check_Shared_Var): Check explicitly for as task object,
7020 to prevent subsequent expansion.
7022 2007-06-06 Robert Dewar <dewar@adacore.com>
7024 * sinput-l.ads, sinput-l.adb: implement a new pragma No_Body
7026 2007-06-06 Ed Schonberg <schonberg@adacore.com>
7027 Robert Dewar <dewar@adacore.com>
7029 * sprint.ads, sprint.adb (Sprint_Node_Actual): Output aggregate for
7031 (Write_Itype): Handle case of string literal subtype, which
7032 comes up in this context.
7033 (Update_Itype): when debugging expanded code, update sloc of itypes
7034 associated with defining_identifiers and ranges, for gdb use.
7035 (Sprint_Node_Actual): Add static keyword to object or exception
7036 declaration output if Is_Statically_Allocated is True.
7037 (Sprint_End_Label): Set entity of end marker for a subprogram, package,
7038 or task body, so that the tree carries the proper Sloc information for
7040 (Write_Indent): In Dump_Source_Text mode, ignore implicit label nodes
7042 2007-06-06 Arnaud Charlet <charlet@adacore.com>
7044 * s-secsta.adb (Chunk): Ensure this object has a static size known at
7045 compile time, to avoid dynamic memory allocation
7046 (Elaboration code): Only use dynamic memory allocation when needed.
7048 2007-06-06 Quentin Ochem <ochem@adacore.com>
7050 * s-stausa.ads, s-stausa.adb (Initialize_Analyzer): Added parameter
7052 (Stack_Analyzer): Added field "Overflow_Guard"
7053 (Task_Result): Added field "Overflow_Guard".
7054 (Index_Str): New constant.
7055 (Task_Name_Str): New constant.
7056 (Actual_Size_Str): New constant.
7057 (Pattern_Array_Element_Size): New constant.
7058 (Get_Usage_Range): New subprogram.
7059 (Output_Result): Added parameter Max_Size_Len and Max_Actual_Use_Len.
7060 Now align the output.
7062 (Initialize): Added value for Overflow_Guard.
7063 (Fill_Stack): Use constant Pattern_Array_Elem_Size when relevant.
7064 Update the value of the overflow guard according to the actual
7065 beginning of the pattern array.
7066 (Initialize_Analyzer): Added parameter Overflow_Guard.
7067 Take this parameter into accound when computing the max size.
7068 (Compute_Result): Use constant Pattern_Array_Elem_Size when relevant.
7069 (Report_Result): Removed extra useless procedure.
7070 Updated call to Output_Result.
7071 Moved full computation of the Task_Result here.
7073 2007-06-06 Thomas Quinot <quinot@adacore.com>
7075 * g-soccon-darwin.ads, gen-soccon.c: Add new constant
7076 Thread_Blocking_IO, always True by default, set False on a per-runtime
7078 Add Windows-specific constants
7079 Add new constant Need_Netdb_Buffer.
7080 Add new macros to indicate whether getXXXbyYYY is thread safe and, if
7081 not, whether to use getXXXbyYYY_r.
7083 * gsocket.h: Add new constant Need_Netdb_Buffer.
7084 Add new macros to indicate whether getXXXbyYYY is thread safe and, if
7085 not, whether to use getXXXbyYYY_r.
7087 2007-06-06 Eric Botcazou <ebotcazou@adacore.com>
7089 * s-stoele.ads, s-stoele.adb: Move inline_always subprograms earlier
7090 than their first call.
7091 Add type Dummy_Communication_Block used in the generation of the pre-
7092 defined dispatching primitive _disp_asynchronous_select.
7093 (Storage_Element): Put Pragma Universal_Aliasing on it.
7095 2007-06-06 Vincent Celier <celier@adacore.com>
7097 * a-dirval-vms.adb, a-dirval.ads, a-dirval.adb (Windows): New Boolean
7100 * a-dirval-mingw.adb (Is_Valid_Path_Name): Forbid a path with a drive
7101 letter if it is not followed by a '/' or a '\'.
7102 (Windows): New Boolean function
7104 * a-direct.ads, a-direct.adb: Remove unnecessary and misplaced pragma
7106 (Containing_Directory): On Windows, keep at least one '/' or '\' after a
7108 (Containing_Directory): Raise Use_Error when the directory is a root
7110 (Extension): When returning the result, use a conversion to Result_Type,
7111 not a qualification.
7113 2007-06-06 Robert Dewar <dewar@adacore.com>
7115 * stylesw.ads, stylesw.adb (Set_GNAT_Style_Check): New procedure
7116 (Set_Style_Check_Options): Recognize new -gnatyg style switch
7118 * switch-c.adb (Scan_Front_End_Switches, case -gnatg): Set
7119 Warn_On_Non_Local_Exception to False, to turn off warnings for
7120 No_Exception_Propagation in ZFP runtime.
7121 (Scan_Front_End_Switches): Fix handling of --RTS switch for non GCC
7123 (Scan_Front_End_Switches): For 'g', call Set_GNAT_Style_Checks
7125 2007-06-06 Vincent Celier <celier@adacore.com>
7127 * switch-b.adb (Scan_Binder_Switches): Add processing for new
7130 * switch-m.adb (Normalize_Compiler_Switches): Do not record switch -E
7131 (Scan_Make_Switches): Recognize new switch -aP
7133 2007-06-06 Matthew Gingell <gingell@adacore.com>
7134 Jose Ruiz <ruiz@adacore.com>
7136 * s-stchop-vxworks.adb (Set_Stack_Info): Instead of trying to map the
7137 VxWorks task descriptor in the Ada run time, call a C subprogram
7138 (__gnat_get_stack_info) that extracts the required information.
7140 * sysdep.c: Back out temporary lynxos workaround.
7141 (__gnat_get_stack_info): Add this procedure that passes to the Ada run
7142 time the stack information associated to the currently executing task.
7143 Only VxWorks systems require this function.
7145 2007-06-06 Eric Botcazou <ebotcazou@adacore.com>
7147 * tracebak.c (FRAME_OFFSET): Add parameter FP. On SPARC/Solaris, do not
7148 add the stack bias if the offset is computed from a frame address.
7149 (__gnat_backtrace): Adjust for above change.
7151 2007-06-06 Thomas Quinot <quinot@adacore.com>
7153 * types.h, types.ads: Rename PE_Illegal_CW_Actual_E_4_18 to
7154 PE_Non_Transportable_Actual.
7155 (By_Descriptor_Last): New constant.
7156 (By_Copy_Return): Likewise.
7158 2007-06-06 Vincent Celier <celier@adacore.com>
7160 * vms_conv.adb (Process_Argument): Keep arguments starting with '+' as
7163 * vms_data.ads: Add entries for -gnatw.x and -gnatw.X
7164 /STYLE_CHECKS=GNAT: Change meaning to -gnatyg
7165 /GNAT_INTERNAL: New compiler qualifier corresponding to -gnatg
7166 Add missing comment for /OPTIMIZE=SPACE
7167 Add entry for OPTIMIZE=SPACE
7168 Add new qualifier /ALL_PROJECTS (= -U) for GNAT LIST
7169 Add documentation for new qualifiers corresponding to -gnatw.c/.C
7171 2007-06-06 Vincent Celier <celier@adacore.com>
7172 Robert Dewar <dewar@adacore.com>
7174 * xgnatugn.adb: Allow dots to be used in ug_words (-gnatw.c and
7177 * gnat_ugn.texi: Fix ordering of -g switch for gnatmake
7178 Document gnatbind switch -a
7179 (case Constructions): Document that variables declarations are allowed
7180 for previously declared variables.
7181 Fix external lib project example
7182 -gnatg: Indicate new VMS qualifier /GNAT_INTERNAL
7183 Indicate that "#if not X or Y then" is not allowed in input files to
7185 Document gnatw.x and gnatw.X warning flags
7186 Mention -Winline switch to activate warnings when back-end inlining is
7188 Add gnatcheck rule descriptions
7189 Describe how to use the GNAT driver to call a tool on a closure.
7190 Describe how to run project-wide checks or metrics.
7191 Document gnatbind's -R option
7192 Updated to account for Ada 2005 support
7194 * gnat_rm.texi (Case Construction): Allow variable declarations for
7195 previously declared variables.
7196 (Representation Clauses and Pragmas): Lift restriction on alignment
7197 clauses for record types.
7198 (Ada.Characters.*): Fix typo in reference to A.3.3(27).
7199 Document No_Exception_Propagation restriction
7200 Document No_Body pragma
7201 Updated to account for Ada 2005 support; corrected some typos
7202 (Implementation Defined Pragmas): Document pragma Universal_Aliasing.
7204 * gnat-style.texi: Make it clear that we never use mode IN for
7205 procedures or functions
7207 * ug_words: Add entries for -gnatw.x and -gnatw.X
7208 Add entries for -gnatw.c/.C
7210 2007-06-06 Pascal Obry <obry@adacore.com>
7211 Vincent Celier <celier@adacore.com>
7213 * makegpr.adb (Add_Archive_Path): Use untouched object and library
7214 dirs and library name.
7215 (Build_Global_Archive): Idem. Minor code clean-up. Removes duplicate
7217 (Build_Library): Idem.
7218 (Compile_Individual_Sources): Idem.
7219 (Compile_Link_With_Gnatmake): Idem.
7220 (Compile_Sources): Idem.
7221 (Get_Imported_Directories): Idem.
7222 (Link_Executables): Idem. Same change for the executable dir.
7223 (Check_Compilation_Needed): C_Source_Path new variable containing
7224 the canonical form of Source_Path to check against the source names
7225 in the dependency file.
7226 (Build_Global_Archive, Compile_Individual_Sources, Compile_Sources): In
7227 verbose mode, display the name of the object directory we're changing
7229 (Saved_Switches): New name of table X_Switches
7230 (Scan_Arg): Recognize new switch -aP and save in table Saved_Switches
7231 (Usage): New line for switch -aP
7232 (Get_Imported_Directories.Add): Make sure that Add_Arg is True before
7233 testing if a directory should be added to the search path.
7235 2007-06-06 Javier Miranda <miranda@adacore.com>
7237 * a-cidlli.ads, a-cdlili.ads, a-cohama.ads, a-coinve.ads,
7238 a-convec.ads (Empty_Vector, Empty_Map, Empty_List): Move this object
7239 declaration after freezing point of all its associated tagged types;
7240 otherwise such types are frozen too early.
7242 2007-06-06 Robert Dewar <dewar@adacore.com>
7244 * a-reatim.adb: Documentation addition
7246 * g-cgideb.adb: Minor code reorganization
7248 * tree_io.adb, treepr.adb, cstand.adb, krunch.adb, par.adb,
7249 mdll-utl.adb, par-ch5.adb, par-tchk.adb, s-exctab.ads, s-memory.ads,
7250 s-osprim.ads, s-restri.ads, s-soflin.ads: Minor reformatting.
7252 * debug.ads, debug.adb (Get_Debug_Flag_K): Remove unused obsolete
7253 function. Change name New_Scope to Push_Scope
7254 (Get_Debug_Flag_K): Remove unused obsolete function.
7256 * exp_ch8.adb, inline.adb, sem_ch8.ads: Change name New_Scope to
7259 * makeusg.adb: Update Copyright notice
7260 Add line for switch -aP
7262 * makeusg.adb: Fix wording of some usage messages
7264 * s-assert.adb (Raise_Assert_Failure): Add call to
7265 Debug_Raise_Assert_Failure.
7267 * s-unstyp.ads (type Packed_Bytes2): Change alignment to use 'Min
7268 (2, Standard'Alignment) for compatibility with AAMP (where alignment
7269 is restricted to 1).
7271 * s-wchjis.adb: Remove use of System.Pure_Exceptions
7273 * tbuild.ads, tbuild.adb (Make_Implicit_Exception_Handler): Set the
7274 node location to No_Location when we're not debugging the expanded
7277 2007-05-22 Alexandre Oliva <aoliva@redhat.com>
7279 * misc.c (enumerate_modes): Consider log2_b to always be one.
7281 2007-05-14 Rafael Ávila de Espíndola <espindola@google.com>
7283 * misc.c (LANG_HOOKS_UNSIGNED_TYPE): Remove.
7285 2007-05-02 Pascal Obry <obry@adacore.com>
7287 * gnatchop.adb (Write_Source_Reference_Pragma): Change implementation
7288 to use Stream_IO.File_Type. This is needed to make use of the UTF-8
7289 encoding support of Stream_IO.
7292 * adaint.h, adaint.c (__gnat_os_filename): New routine. Returns the
7293 filename and corresponding encoding to match the OS requirement.
7294 (__gnat_file_exists): Do not call __gnat_stat() on Windows as this
7295 routine will fail on specific devices like CON: AUX: ...
7297 PR ada/29856: Add missing braces
7299 2007-04-22 Andrew Pinski <andrew_pinski@playstation.sony.com>
7302 * ada-tree.h (lang_tree_node): Fix typo in chain_next.
7304 2007-04-21 Jan Hubicka <jh@suse.cz>
7306 * misc.c (gnat_expand_body): Don't call target for destructors,
7307 avoid redundant check on syntax errors.
7309 2007-04-21 Andrew Pinski <andrew_pinski@playstation.sony.com>
7311 * ada-tree.h (lang_tree_node): Use GENERIC_NEXT
7312 instead of checking GIMPLE_STMT_P in chain_next.
7314 2007-04-17 Andreas Krebbel <krebbel1@de.ibm.com>
7317 * system-linux-alpha.ads: Disable constant condition warning for the
7318 Default_Bit_Order variable.
7319 * system-linux-s390.ads: Likewise.
7320 * system-linux-s390x.ads: Likewise.
7321 * system-linux-sparc.ads: Likewise.
7323 2007-04-06 Javier Miranda <miranda@adacore.com>
7324 Matt Heaney <heaney@adacore.com>
7325 Robert Dewar <dewar@adacore.com>
7327 a-coprnu.ads, a-cohata.ads, a-chtgop.ads, a-chtgop.adb, a-cgcaso.ads,
7328 a-cgarso.ads, a-secain.ads, a-slcain.ads, a-shcain.ads, a-chtgke.ads,
7329 a-chtgke.ads, a-coprnu.ads, a-contai.ads, a-chtgke.ads, a-chtgke.adb,
7330 a-stwiha.ads, a-strhas.ads, a-lfztio.ads, a-liztio.ads, a-llfzti.ads,
7331 a-llizti.ads, a-sfztio.ads, a-siztio.ads, a-ssizti.ads, a-stzfix.ads,
7332 a-stzhas.ads, a-szuzha.ads, a-tiunio.ads, a-wwunio.ads, a-ztcoio.ads,
7333 a-ztinio.ads, a-zttest.ads, a-zzunio.ads, a-astaco.ads, a-charac.ads,
7334 a-chlat1.ads, ada.ads, a-dynpri.ads, a-flteio.ads, a-fwteio.ads,
7335 a-inteio.ads, a-intnam.ads, a-ioexce.ads, a-iwteio.ads, a-lfteio.ads,
7336 a-lfwtio.ads, a-liteio.ads, a-liwtio.ads, a-llftio.ads, a-llfwti.ads,
7337 a-llitio.ads, a-lliwti.ads, a-ncelfu.ads, a-ngcefu.ads, a-ngelfu.ads,
7338 a-nlcefu.ads, a-nlcoty.ads, a-nlelfu.ads, a-nllcef.ads, a-nllcty.ads,
7339 a-nllefu.ads, a-nscefu.ads, a-nscoty.ads, a-nselfu.ads, a-nucoty.ads,
7340 a-nuelfu.ads, a-numeri.ads, a-sfteio.ads, a-sfwtio.ads, a-siteio.ads,
7341 a-siwtio.ads, a-ssitio.ads, a-ssiwti.ads, a-storio.ads, a-strfix.ads,
7342 a-string.ads, a-stwifi.ads, a-titest.ads, a-unccon.ads, a-uncdea.ads,
7343 a-wtcoio.ads, a-wtinio.ads, a-wttest.ads, calendar.ads, directio.ads,
7344 i-c.ads, ioexcept.ads, machcode.ads, sequenio.ads, text_io.ads,
7345 unchconv.ads, unchdeal.ads, a-widcha.ads, a-zchara.ads, a-stboha.ads,
7346 a-stfiha.ads, a-coteio.ads, a-envvar.ads, a-lcteio.ads, a-llctio.ads,
7347 a-scteio.ads, a-swbwha.ads, a-swfwha.ads, a-szbzha.ads, a-szfzha.ads,
7348 a-tiboio.ads, a-wwboio.ads, a-zzboio.ads, a-dispat.ads, a-tgdico.ads,
7349 expander.adb, g-socket.ads, par-labl.adb, sinput-c.adb, s-tarest.ads,
7350 s-stchop.ads, g-expect-vms.adb, s-taprop-lynxos.adb,
7351 s-taprop-tru64.adb, s-taprop-irix.adb,
7352 s-taprop-hpux-dce.adb, s-traceb-hpux.adb,
7353 s-taprop-linux.adb, s-taprop-dummy.adb, s-osprim-unix.adb,
7354 s-osprim-solaris.adb, s-taprop-solaris.adb, s-taprop-vms.adb,
7355 s-osprim-mingw.adb, s-taprop-mingw.adb, s-osprim-posix.adb,
7356 s-taprop-posix.adb, a-exexpr-gcc.adb, a-ststio.adb, a-ststio.ads,
7357 a-textio.adb, a-textio.ads, a-tideau.adb, a-tideau.ads, a-witeio.adb,
7358 a-witeio.ads, a-wtdeau.adb, a-wtdeau.ads, g-calend.adb, g-calend.ads,
7359 g-dirope.adb, g-expect.ads, gnatchop.adb, g-spipat.adb, g-spipat.ads,
7360 s-direio.adb, s-direio.ads, s-fatgen.adb, s-fatgen.ads, s-parint.adb,
7361 s-sequio.adb, s-sequio.ads, s-taprop.ads, s-valdec.adb, s-valdec.ads,
7362 s-valint.adb, s-valint.ads, s-vallld.adb, s-vallld.ads, s-vallli.adb,
7363 s-vallli.ads, s-valllu.adb, s-valllu.ads, s-valrea.adb, s-valrea.ads,
7364 s-valuns.adb, s-valuns.ads, s-valuti.adb, s-valuti.ads, xref_lib.adb,
7365 s-stchop.adb, i-vxwork-x86.ads, a-crbtgo.ads, a-crbtgo.adb,
7366 a-coorse.ads, a-coorse.adb, a-cohama.ads, a-cohama.adb, a-ciorse.ads,
7367 a-ciorse.adb, a-cihama.ads, a-cihama.adb, a-chtgop.ads, a-chtgop.ads,
7368 a-coormu.adb, a-ciormu.adb, a-cihase.adb, a-cihase.ads, a-cohase.adb,
7369 a-cohase.ads, a-swuwha.ads, a-ciormu.ads, a-coormu.ads, a-rbtgso.ads,
7370 a-stunha.ads, a-ciorma.adb, a-coorma.adb, a-ztdeau.adb, a-ztdeau.ads,
7371 a-ztexio.adb, a-ztexio.ads: Addition of null-exclusion to anonymous
7373 Update documentation.
7376 2007-04-06 Robert Dewar <dewar@adacore.com>
7378 * system-linux-ia64.ads, system-freebsd-x86.ads, system-lynxos-ppc.ads,
7379 system-lynxos-x86.ads, system-linux-x86_64.ads, system-tru64.ads,
7380 system-vxworks-sparcv9.ads, system-solaris-x86.ads, system-irix-o32.ads,
7381 system-irix-n32.ads, system-hpux.ads, system-vxworks-m68k.ads,
7382 system-linux-x86.ads, system-vxworks-mips.ads, system-interix.ads,
7383 system-solaris-sparc.ads, system-solaris-sparcv9.ads, system-vms.ads,
7384 system-mingw.ads, system-vms-zcx.ads, system-vxworks-ppc.ads,
7385 system-vxworks-alpha.ads, system-vms_64.ads, system-darwin-ppc.ads,
7386 system-vxworks-x86.ads, system-linux-ppc.ads, system-linux-hppa.ads,
7387 system-hpux-ia64.ads, targparm.adb,
7388 targparm.ads (Functions_Return_By_DSP_On_Target): Removed
7390 * system.ads: Move Functions_Return_By_DSP to obsolete section,
7391 kept for bootstrap purposes only.
7393 2007-04-06 Arnaud Charlet <charlet@adacore.com>
7395 * s-osinte-lynxos-3.ads, s-osinte-hpux.ads, s-osinte-solaris-posix.ads,
7396 s-osinte-freebsd.ads, s-osinte-aix.ads, s-osinte-darwin.ads,
7397 s-taprop-posix.adb (Create_Task): Fix handling of Task_Info.
7398 (PTHREAD_SCOPE_PROCESS, PTHREAD_SCOPE_SYSTEM): New constants.
7400 2007-04-06 Robert Dewar <dewar@adacore.com>
7402 * a-except.adb, a-except.ads, a-except-2005.ads, a-except-2005.adb
7403 (Local_Raise): New dummy procedure called when a raise is converted
7404 to a local goto. Used for debugger to detect that the exception
7407 * debug.adb: Document new d.g flag (expand local raise statements to
7408 gotos even if pragma Restriction (No_Exception_Propagation) is not set)
7410 * exp_sel.adb: Use Make_Implicit_Exception_Handler
7412 * exp_ch11.adb (Expand_Exception_Handlers): Use new flag -gnatw.x to
7413 suppress warnings for unused handlers.
7414 (Warn_If_No_Propagation): Use new flag -gnatw.x to suppress
7415 warnings for raise statements not handled locally.
7416 (Get_RT_Exception_Entity): New function
7417 (Get_Local_Call_Entity): New function
7418 (Find_Local_Handler): New function
7419 (Warn_If_No_Propagation): New procedure
7420 (Expand_At_End_Handler): Call Make_Implicit_Handler
7421 (Expand_Exception_Handlers): Major additions to deal with local handlers
7422 (Expand_N_Raise_Constraint_Error, Expand_N_Raise_Program_Error,
7423 Expand_N_Raise_Storage_Error, (Expand_N_Raise_Statement): Add handling
7426 * exp_ch11.ads (Get_RT_Exception_Entity): New function
7427 (Get_Local_Call_Entity): New function
7429 * gnatbind.adb (Restriction_List): Add No_Exception_Propagation to list
7430 of restrictions that the binder will never suggest adding.
7432 * par-ch11.adb (P_Exception_Handler): Set Local_Raise_Statements field
7435 * restrict.adb (Check_Restricted_Unit): GNAT.Current_Exception may not
7436 be with'ed in the presence of pragma Restriction
7437 (No_Exception_Propagation).
7439 * sem.adb (Analyze): Add entries for N_Push and N_Pop nodes
7441 * sem_ch11.adb (Analyze_Exception_Handler): If there is a choice
7442 parameter, then the handler is not a suitable target for a local raise,
7443 and this is a violation of restriction No_Exception_Propagation.
7444 (Analyze_Handled_Statements): Analyze choice parameters in exception
7445 handlers before analyzing statement sequence (needed for proper
7446 detection of local raise statements).
7447 (Analyze_Raise_Statement): Reraise statement is a violation of the
7448 No_Exception_Propagation restriction.
7450 * s-rident.ads: Add new restriction No_Exception_Propagation
7452 * tbuild.ads, tbuild.adb (Make_Implicit_Exception_Handler): New
7453 function, like Make_Exception_Handler but sets Local_Raise_Statements
7455 (Add_Unique_Serial_Number): Deal with case where this is called during
7456 processing of configuration pragmas.
7458 2007-04-06 Thomas Quinot <quinot@adacore.com>
7459 Pat Rogers <rogers@adacore.com>
7460 Pascal Obry <obry@adacore.com>
7462 * g-stsifd-sockets.adb: New file.
7464 * g-socthi.ads, g-socket.adb, g-socthi-vxworks.adb,
7465 g-socthi-vxworks.ads, g-socthi-mingw.ads, g-socthi-vms.ads,
7466 g-socthi-vms.adb: Move signalling
7467 fd management to a nested package, so that they can conveniently be
7468 moved to a subunit that is shared across Windows, VMS, and VxWorks
7469 (Ada implementation) or completed with imported bodies from socket.c
7471 (Read_Signalling_Fd, Write_Signalling_Fd, Create_Signalling_Fds): New
7473 (Check_Selector): Use Read_Signalling_Fd to read and discard data from
7474 the signalling file descriptor.
7475 (Abort_Selector): Use Write_Signalling_Fd to write dummy data to the
7476 signalling file descriptor.
7477 (Create_Selector): Use new C-imported subprogram Create_Signalling_Fds
7478 instead of creating a pair of sockets for signalling here.
7480 * g-socthi.adb: Ditto.
7481 Set the runtime process to ignore SIGPIPEs on platforms that support
7482 neither SO_NOSIGPIPE nor MSG_NOSIGNAL functionality.
7484 * g-socthi-mingw.adb: Ditto.
7485 (WS_Version): Use Windows 2.2.
7486 Use Winsock 2.2 (instead of 1.1) for the GNAT.Socket API.
7488 * g-soliop-mingw.ads: Link with ws2_32 for Windows 2.x support.
7489 Use Winsock 2.2 (instead of 1.1) for the GNAT.Socket API.
7491 * Makefile.in: New libgnat pair g-stsifd.adb<g-stsifd-sockets.adb.
7492 added GNAT byte swapping facility
7493 Update FreeBSD THREADSLIB from -lc_r to -lpthread, for FreeBSD 6.
7495 * g-bytswa.adb, g-bytswa-x86.adb, g-bytswa.ads: New files.
7497 * socket.c (__gnat_read_signalling_fd, __gnat_write_controlling_fd):
7499 (__gnat_create_signalling_fds): New subprogram.
7500 Set the runtime process to ignore SIGPIPEs on platforms that support
7501 neither SO_NOSIGPIPE nor MSG_NOSIGNAL functionality.
7503 2007-04-06 Hristian Kirtchev <kirtchev@adacore.com>
7504 Vincent Celier <celier@adacore.com>
7506 * a-calend-vms.ads, a-calend.ads, a-calend.adb, a-calend-vms.adb:
7507 New version of Ada.Calendar which supports the new upper bound of Ada
7508 time (2399-12-31 86_399.999999999).
7509 The following modifications have been made to the package:
7510 - New representation of time as count of nanoseconds since the start of
7511 Ada time (1901-1-1 0.0).
7512 - Target independent Split and Time_Of routines which service both
7513 Ada 95 and Ada 2005 code.
7514 - Target independent interface to the Ada 2005 children of Calendar.
7515 - Integrated leap seconds into Ada 95 and Ada 2005 mode.
7516 - Handling of non-leap centenial years.
7517 - Updated clock function.
7518 - Updated arithmetic and comparison operators.
7520 * a-caldel.adb (To_Duration): Add call to target independent routine in
7521 Ada.Calendar to handle the conversion of time to duration.
7523 * sysdep.c (__gnat_localtime_tzoff): Test timezone before setting off
7525 If timezone is obviously incorrect (outside of -14 hours .. 14 hours),
7527 (__gnat_localtime_tzoff for Lynx and VxWorks): Even though these
7528 targets do not have a natural time zone, GMT is used as a default.
7529 (__gnat_get_task_options): New.
7531 * a-direct.adb (Modification_Time): Add with and use clauses for
7532 Ada.Calendar and Ada.
7533 Calendar.Formatting. Remove with clause for Ada.Unchecked_Conversion
7534 since it is no longer needed.
7535 (Duration_To_Time): Removed.
7536 (OS_Time_To_Long_Integer): Removed.
7537 (Modification_Time): Rewritten to use Ada.Calendar and Ada.Calendar.
7538 Formatting Time_Of routines which automatically handle time zones,
7539 buffer periods and leap seconds.
7541 * a-calari.ads, a-calari.adb ("+", "-", Difference): Add calls to
7542 target independent routines in Ada.Calendar.
7544 * a-calfor.ads, a-calfor.adb:
7545 Code cleanup and addition of validity checks in various routines.
7546 (Day_Of_Week, Split, Time_Of): Add call to target independent routine in
7549 * a-catizo.ads, a-catizo.adb (UTC_Time_Offset): Add call to target
7550 independent routine in Ada.Calendar.
7552 2007-04-06 Olivier Hainque <hainque@adacore.com>
7555 (convert_addresses): Adjust prototype and dummy definition to expect an
7556 extra file_name argument.
7558 * gmem.c (__gnat_convert_addresses): Wrapper to convert_addresses,
7559 filling the now expected file_name argument with the appropriate
7561 (__gnat_gmem_a2l_initialize, __gnat_gmem_read_next_frame): Use it.
7562 (tracebk): Array of void * instead of char *, corresponding to what
7563 convert_addresses expects.
7564 (exename): New static global, to hold the executable file name to be
7565 used in all convert_addresses invocations.
7566 (gmem_read_backtrace, __gnat_gmem_symbolic): Account for tracebk type
7568 (__gnat_gmem_a2l_initialize): Resolve exename.
7569 (__gnat_convert_addresses): Use exename as the convert_addresses
7572 * g-trasym.adb (Symbolic_Traceback): Adjust signature of imported
7573 "convert_addresses", now expecting a filename argument. Import the
7574 necessary entities to compute the filename to use and pass it to
7577 2007-04-06 Matt Gingell <gingell@adacore.com>
7579 * system-aix.ads: Back out previous change.
7580 (Functions_Return_By_DSP): Removed
7582 2007-04-06 Pascal Obry <obry@adacore.com>
7584 * s-osprim-mingw.adb (Timed_Delay): Use the right clock (standard one
7585 or the monotonic used by Ada.Real_Time) to compute the sleep duration
7588 2007-04-06 Jose Ruiz <ruiz@adacore.com>
7590 * s-osinte-vxworks.ads, s-osinte-vxworks.adb (VX_FP_TASK): Remove this
7591 function. Its value changes in different VxWorks versions, and it is
7592 now handled by the function __gnat_get_task_options.
7594 * s-taprop-vxworks.adb (Create_Task): Call the function
7595 __gnat_get_task_options to get the required options for creating a task.
7597 2007-04-06 Pascal Obry <obry@adacore.com>
7598 Thomas Quinot <quinot@adacore.com>
7600 * adaint.c: Replace all occurences of S2WS to S2WSU (Unicode) when
7601 dealing with filename.
7602 (__gnat_fopen): Call the proper macro (8bits or UTF8) to convert the
7603 filename from a standard string to a wide-string depending on the
7605 (__gnat_freopen): Idem.
7606 (__gnat_current_time): New function (wrapper for time(3) standard C
7609 * g-os_lib.ads (Current_Time): New function. Returns the current
7610 system time as an OS_Time value.
7612 * s-osprim.ads (Clock): Add more precise definition of UNIX epoch.
7613 (Monotonic_Clock): Same.
7615 2007-04-06 Quentin Ochem <ochem@adacore.com>
7617 * ali.ads, ali.adb (Get_Nat): Raise an exception if the file cursor is
7619 (Scan_ALI): Cancel the xref line if there has been a reading ALI error.
7621 2007-04-06 Jose Ruiz <ruiz@adacore.com>
7623 * a-retide.adb: Add elaboration code to ensure that the tasking run
7624 time is initialized when using delay operations even when no task is
7627 2007-04-06 Javier Miranda <miranda@adacore.com>
7629 * a-tags.ads, a-tags.adb (Object_Specific_Data): Remove
7630 component Num_Prim_Ops.
7631 (Set_Num_Prim_Ops): Removed.
7632 Remove all the assertions because all the routines of this
7633 package are inline always.
7634 (Get_Offset_Index): Add support to primary dispatch tables.
7635 Move the documentation about the dispatch table to a-tags.ads
7636 (Set_External_Tag): Removed
7637 (Inherit_TSD): Removed.
7638 (Interface_Data_Element, Interfaces_Array, Interface_Data): Declarations
7640 (Displace, IW_Membership, Inherit_TSD, Interface_Ancestor_Tags,
7641 Register_Interface_Tag, Set_Offset_To_Top): Update all the occurrences
7642 of the TSD field "Table" because this field has been renamed to
7644 (Inherit_CPP_DT): Removed.
7645 (K_Typeinfo, K_Offset_To_Top, K_Tagged_Kind, K_Signature,
7646 Cstring, Tag_Table, Type_Specific_Data, Dispatch_Table): These
7647 declarations have been moved to a-tags.ads
7648 (Check_Size): Removed.
7649 (Expanded_Name): Updated to get access to the new field of TSD
7650 containing the address of the expanded name.
7651 (Get_Access_Level/Set_Access_Level): Removed.
7652 (Get_Predefined_Prim_Op_Address): Removed.
7653 (Set_Predefined_Prim_Op_Address): Removed.
7654 (Get_Prim_Op_Address/Set_Prim_Op_Address): Removed.
7655 (Get_Remotely_Callable/Set_Remotely_Callable): Removed.
7656 (Set_Expanded_Name): Removed.
7657 (Inherit_DT): Removed.
7658 (Inherit_CPP_DT): Removed.
7659 (Set_RC_Offset): Removed.
7661 (Base_Address): New function that displaces "this" to point to the base
7662 of the object (that is, to point to the primary tag of the object).
7664 2007-04-06 Ed Schonberg <schonberg@adacore.com>
7665 Javier Miranda <miranda@adacore.com>
7667 * exp_ch3.ads, exp_ch3.adb (Analyze_N_Full_Type_Declaration): For an
7668 anonymous access component, do not create a master_id if type already
7669 has one, as may happen if the type is a subcomponent of a packed array
7671 (Build_Init_Procedure, Component_Needs_Simple_Initialization,
7672 Initialize_Tag): Remove code associated with the old CPP pragmas.
7673 CPP_Virtual and CPP_Vtable are no longer supported.
7674 (Build_Offset_To_Top_Internal): Add support for concurrent record types
7675 (Build_Offset_To_Top_Functions): Add support for concurrent record types
7676 (Freeze_Record_Type): Remove call to
7677 Init_Predefined_Interface_Primitives.
7678 (Init_Secondary_Tags.Initialize_Tag): New subprogram containing all the
7679 code required to initialize the tags of the secondary dispatch tables.
7680 This leaves the algoritm more clear.
7681 (Init_Secondary_Tags): Add support for concurrent record types
7682 (Make_Predefined_Primitive_Specs): Code cleanup.
7683 (Predefined_Primitive_Bodies): Code cleanup.
7684 (Build_Master_Renaming): New local subprogram.
7685 (Expand_N_Full_Type_Declaration): Build the master_id associated with
7686 anonymous access to task type components.
7687 (Expand_N_Subtype_Indication): The bounds of a range constraint in a
7688 subtype indication are resolved during analysis, and must not be done
7690 (Stream_Operation_OK): Check Restriction_Active before RTE_Available.
7692 2007-04-06 Geert Bosch <bosch@adacore.com>
7693 Ed Schonberg <schonberg@adacore.com>
7694 Javier Miranda <miranda@adacore.com>
7695 Bob Duff <duff@adacore.com>
7697 * exp_ch4.adb (Expand_N_Type_Conversion): Remove special processing
7698 for conversion of a Float_Type'Truncation to integer.
7700 * exp_attr.adb (Is_Inline_Floating_Point_Attribute): New function to
7701 check if a node is an attribute that can be handled directly by the
7703 (Expand_N_Attribute_Reference): Suppress expansion of floating-point
7704 attributes that can be handled directly by the back end.
7705 (Expand_N_Attribute_Reference, case 'Access and 'Unchecked_Access):
7706 use new predicate Is_Access_Protected_Subprogram_Type.
7707 (Expand_N_Attribute_Reference, case 'Write): The reference is legal for
7708 and Unchecked_Union if it is generated as part of the default Output
7709 procedure for a type with default discriminants.
7710 (Expand_N_Attribute_Reference): Avoid the expansion of dispatching calls
7711 if we are compiling under restriction No_Dispatching_Calls.
7712 (Constrained): Use Underlying_Type, in case the type is private without
7713 discriminants, but the full type has discriminants.
7714 (Expand_N_Attribute_Reference): Replace call to Get_Access_Level by
7715 call to Build_Get_Access_Level.
7716 (Expand_N_Attribute_Reference): The use of 'Address with class-wide
7717 interface objects requires a call to the run-time subprogram that
7718 returns the base address of the object.
7719 (Valid_Conversion): Improve error message on illegal attempt to store
7720 an anonymous access to subprogram value into a record component.
7722 * sem_res.adb (Resolve_Equality_Op): Detect ambiguity for "X'Access =
7724 (Simplify_Type_Conversion): New procedure that performs simplification
7725 of Int_Type (Float_Type'Truncation (X)).
7726 (Resolve_Type_Conversion): Call above procedure after resolving operand
7727 and before performing checks. This replaces the existing ineffective
7729 (Set_String_Literal_Subtype): When creating the internal static lower
7730 bound subtype for a string literal, use a newly created copy of the
7731 subtree representing the lower bound.
7732 (Resolve_Call): Exclude build-in-place function calls from transient
7733 scope treatment. Update comments to describe this exception.
7734 (Resolve_Equality_Op): In case of dispatching call check violation of
7735 restriction No_Dispatching_Calls.
7736 (Resolve_Call): If the call returns an array, the context imposes the
7737 component type of the array, and the function has one non-defaulted
7738 parameter, rewrite the call as the indexing of a call with a single
7739 parameter, to handle an Ada 2005 syntactic ambiguity for calls written
7741 (Resolve_Actuals): If an actual is an allocator for an access parameter,
7742 the master of the created object is the innermost enclosing statement.
7743 (Remove_Conversions): For a binary operator, check if type of second
7744 formal is numeric, to check if an abstract interpretation is present
7745 in the case of exponentiation as well.
7747 2007-04-06 Ed Schonberg <schonberg@adacore.com>
7748 Bob Duff <duff@adacore.com>
7750 * atree.h, atree.ads, atree.adb (Copy_Node_With_Replacement): When
7751 copying a parameter list in a call, set properly the First_Named_Formal
7752 and Next_Named_Formal fields in the new list and in the enclosing call.
7753 (Watch_Node,New_Node_Breakpoint,New_Node_Debugging_Output): Shorten
7754 names, to ease typing in the debugger. Improve comments.
7755 (Watch_Node): New variable, intended to be set in the debugger.
7756 (New_Node_Breakpoint): New do-nothing procedure to set a breakpoint on,
7757 called when the watched node is created.
7758 (New_Node_Debugging_Output): Combined version of local procedures
7759 New_Node_Debugging_Output and New_Entity_Debugging_Output, now global,
7760 with a parameter so that conditional breakpoints like "if Node = 12345"
7762 (New_Node, New_Entity): Call the global New_Node_Debugging_Output.
7765 2007-04-06 Thomas Quinot <quinot@adacore.com>
7766 Ed Schonberg <schonberg@adacore.com>
7767 Gary Dismukes <dismukes@adacore.com>
7769 * checks.ads, checks.adb (Selected_Range_Checks): No range check is
7770 required for a conversion between two access-to-unconstrained-array
7772 (Expr_Known_Valid): Validity checks do not apply to discriminants, but
7773 to discriminant constraints on discriminant objects. This rule must
7774 apply as well to discriminants of protected types in private components.
7775 (Null_Exclusion_Static_Checks): If No_Initialization is set on an
7776 object of a null-excluding access type then don't require the
7777 the object declaration to have an expression and don't emit a
7780 2007-04-06 Arnaud Charlet <charlet@adacore.com>
7781 Eric Botcazou <botcazou@adacore.com>
7783 * gnatvsn.ads, comperr.adb (Get_Gnat_build_Type): Renamed Build_Type
7786 * comperr.ads, comperr.adb (Compiler_Abort): Add third parameter
7787 Fallback_Loc. Use it as the sloc info when Current_Error_Node doesn't
7790 * fe.h (Compiler_Abort): Add third parameter.
7792 * misc.c (internal_error_function): Build third argument from current
7793 input location and pass it to Compiler_Abort.
7795 2007-04-06 Gary Dismukes <dismukes@adacore.com>
7797 * cstand.adb (Create_Standard): When the target's storage unit size is
7798 greater than a byte, set Has_Non_Standard_Rep and Has_Pragma_Pack on
7801 2007-04-06 Nicolas Roche <roche@adacore.com>
7803 * cstreams.c (__gnat_full_name): Fix issues on VxWorks 6.x for which
7804 absolute path can have the following form: device:/a/b. In this case
7805 '/' should be inserted between the path and the filename.
7807 2007-04-06 Olivier Hainque <hainque@adacore.com>
7808 Eric Botcazou <botcazou@adacore.com>
7810 * decl.c (gnat_to_gnu_entity) <E_Constant>: Associate an external
7811 VAR_DECL to a CONST_DECL we make for a public constant when we know the
7812 corresponding definition has created the so made visible variable.
7813 Handle anonymous access to protected subprogram.
7814 (gnat_to_gnu_entity) <E_Variable>: Do not make the underlying type of an
7815 object with an address clause volatile. Re-enable original fix.
7816 <E_Subprogram_Type>: Set TYPE_REF_CAN_ALIAS_ALL on the reference type
7818 (gnat_to_gnu_entity) <E_Class_Wide_Type>: Retrieve the TYPE_DECL
7819 associated with either the Equivalent or Root type, instead of the
7821 (gnat_to_gnu_entity): Manually mark the top of the DECL_FIELD_OFFSET
7822 subtree for every field of a global record type.
7823 (gnat_to_gnu_entity) <E_Record_Subtype>: If the subtype has
7824 discriminants, invoke again variable_size on its newly computed sizes.
7826 2007-04-06 Robert Dewar <dewar@adacore.com>
7827 Thomas Quinot <quinot@adacore.com>
7828 Ed Schonberg <schonberg@adacore.com>
7829 Bob Duff <duff@adacore.com>
7831 * einfo.ads, einfo.adb: (First_Component_Or_Discriminant): New function
7832 (Next_Component_Or_Discriminant): New function and procedure
7833 (First_Index, First_Literal, Master_Id,
7834 Set_First_Index, Set_First_Literal, Set_Master_Id):
7835 Add missing Ekind assertions.
7836 (Is_Access_Protected_Subprogram_Type): New predicate.
7837 (Has_RACW): New entity flag, set on package entities to indicate that
7838 the package contains the declaration of a remote accecss-to-classwide
7840 (E_Return_Statement): This node type has the Finalization_Chain_Entity
7841 attribute, in case the result type has controlled parts.
7842 (Requires_Overriding): Add this new flag, because "requires
7843 overriding" is subtly different from "is abstract" (see AI-228).
7844 (Is_Abstract): Split Is_Abstract flag into Is_Abstract_Subprogram and
7845 Is_Abstract_Type. Make sure these are called only when appropriate.
7846 (Has_Pragma_Unreferenced_Objects): New flag
7848 * exp_ch5.adb (Expand_N_Assignment_Statement): If the left-hand side is
7849 class-wide, the tag of the right-hand side must be an exact match, not
7850 an ancestor of that of the object on left-hand side.
7851 (Move_Activation_Chain): New procedure to create the call to
7852 System.Tasking.Stages.Move_Activation_Chain.
7853 (Expand_N_Extended_Return_Statement): Generate code to call
7854 System.Finalization_Implementation.Move_Final_List at the end of a
7855 return statement if the function's result type has controlled parts.
7856 Move asserts to Build_In_Place_Formal.
7857 (Move_Final_List): New function to create the call statement.
7858 (Expand_N_Assignment_Statement): In case of assignment to a class-wide
7859 tagged type, replace generation of call to the run-time subprogram
7860 CW_Membership by call to Build_CW_Membership.
7861 (Expand_N_Return_Statement): Replace generation of call to the run-time
7862 subprogram Get_Access_Level by call to Build_Get_Access_Level.
7863 (Expand_N_Simple_Function_Return): Replace generation of call to the
7864 run-time subprogram Get_Access_Level by call to Build_Get_Access_Level.
7866 * exp_ch6.ads, exp_ch6.adb (Expand_Call): Use new predicate
7867 Is_Access_Protected_Subprogram_Type, to handle both named and anonymous
7868 access to protected operations.
7869 (Add_Task_Actuals_To_Build_In_Place_Call): New procedure to add the
7870 master and chain actual parameters to a build-in-place function call
7872 (BIP_Formal_Suffix): Add new enumeration literals to complete the case
7874 (Make_Build_In_Place_Call_In_Allocator,
7875 Make_Build_In_Place_Call_In_Anonymous_Context,
7876 Make_Build_In_Place_Call_In_Assignment,
7877 Make_Build_In_Place_Call_In_Object_Declaration): Call
7878 Add_Task_Actuals_To_Build_In_Place_Call with the appropriate master.
7879 (Expand_Inlined_Call): If the subprogram is a null procedure, or a
7880 stubbed procedure with a null body, replace the call with a null
7881 statement without using the full inlining machinery, for efficiency
7882 and to avoid invalid values in source file table entries.
7884 * exp_ch8.adb (Expand_N_Object_Renaming_Declaration): Add support for
7885 renamings of calls to build-in-place functions.
7887 * rtsfind.adb (RTE_Record_Component_Available): New subprogram that
7888 provides the functionality of RTE_Available to record components.
7889 (RTU_Entity): The function Entity has been renamed to RTU_Entity
7890 to avoid undesired overloading.
7891 (Entity): New subprogram that returns the entity for the referened
7892 unit. If this unit has not been loaded, it returns Empty.
7893 (RE_Activation_Chain_Access, RE_Move_Activation_Chain): New entities.
7894 Remove no longer used entities.
7895 (RE_Finalizable_Ptr_Ptr, RE_Move_Final_List): New entities.
7896 (RE_Type_Specific_Data): New entity.
7897 (RE_Move_Any_Value): New entity.
7898 (RE_TA_A, RE_Get_Any_Type): New entities.
7899 (RE_Access_Level, RE_Dispatch_Table, E_Default_Prim_Op_Count,
7900 RE_Prims_Ptr, RE_RC_Offset, RE_Remotely_Callable,
7901 RE_DT_Typeinfo_Ptr_Size, RE_Cstring_Ptr, RE_DT_Expanded_Name): Added.
7902 (Entity): New subprogram that returns the entity for the referened
7903 unit. If this unit has not been loaded, it returns Empty.
7904 (RTE): Addition of a new formal that extends the search to the scopes
7905 of the record types found in the chain of the package.
7907 * sem_ch6.ads, sem_ch6.adb (Check_Overriding_Indicator): Print
7908 "abstract subprograms must be visible" message, whether or not the type
7909 is an interface; that is, remove the special case for interface types.
7910 (Analyze_Function_Return): Remove error message "return of task objects
7911 is not yet implemented" because this is now implemented.
7912 (Create_Extra_Formals): Add the extra master and activation chain
7913 formals in case the result type has tasks.
7914 Remove error message "return of limited controlled objects is not yet
7916 (Create_Extra_Formals): Add the extra caller's finalization list formal
7917 in case the result type has controlled parts.
7918 (Process_Formals): In case of access formal types there is no need
7919 to continue with the analysis of the formals if we already notified
7921 (Check_Overriding_Indicator): Add code to check overriding of predefined
7923 (Create_Extra_Formals): Prevent creation of useless Extra_Constrained
7924 flags for formals that do not require them,.
7925 (Enter_Overloaded_Entity): Do not give -gnatwh warning message unless
7926 hidden entity is use visible or directly visible.
7927 (Analyze_Abstract_Subprogram_Declaration,Analyze_Subprogram_Body,
7928 Analyze_Subprogram_Declaration,Analyze_Subprogram_Specification,
7929 Check_Conventions,Check_Delayed_Subprogram,Make_Inequality_Operator,
7930 New_Overloaded_Entity): Split Is_Abstract flag into
7931 Is_Abstract_Subprogram and Is_Abstract_Type.
7933 * s-finimp.ads, s-finimp.adb (Move_Final_List): New procedure to move
7934 a return statement's finalization list to the caller's list, used for
7935 build-in-place functions with result type with controlled parts.
7936 Remove no longer used entities.
7938 * s-taskin.ads (Activation_Chain): Remove pragma Volatile. It is no
7939 longer needed, because the full type is now limited, and therefore a
7940 pass-by-reference type.
7941 (Foreign_Task_Level): New constant.
7943 * s-tassta.ads, s-tassta.adb (Move_Activation_Chain): New procedure to
7944 move tasks from the activation chain belonging to a return statement to
7945 the one passed in by the caller, and update the master to the one
7946 passed in by the caller.
7947 (Vulnerable_Complete_Master, Check_Unactivated_Tasks): Check the master
7948 of unactivated tasks, so we don't kill the ones that are being returned
7949 by a build-in-place function.
7950 (Create_Task): Ignore AI-280 for foreign threads.
7952 2007-04-06 Ed Schonberg <schonberg@adacore.com>
7953 Robert Dewar <dewar@adacore.com>
7954 Bob Duff <duff@adacore.com>
7955 Gary Dismukes <dismukes@adacore.com>
7957 * errout.adb (Unwind_Internal_Type): Use predicate
7958 Is_Access__Protected_Subprogram_Type.
7960 * freeze.adb (Size_Known): Use First/Next_Component_Or_Discriminant
7961 (Freeze_Entity, packed array case): Do not override explicitly set
7962 alignment and size clauses.
7963 (Freeze_Entity): An entity declared in an outer scope can be frozen if
7964 the enclosing subprogram is a child unit body that acts as a spec.
7965 (Freeze_Entity): Use new predicate Is_Access_Protected_Subprogram_Type.
7966 (Freeze_Record_Type): New Ada 2005 processing for reverse bit order
7967 Remove all code for DSP option
7969 * layout.adb (Layout_Record_Type): Use First/
7970 Next_Component_Or_Discriminant
7971 (Layout_Type): Use new predicate Is_Access_Protected_Subprogram_Type,
7972 to handle properly the anonymous access case.
7974 * sem_attr.adb (Build_Access_Object_Type): Use E_Access_Attribute_Type
7975 for all access attributes, because overload resolution should work the
7976 same for 'Access, 'Unchecked_Access, and 'Unrestricted_Access. This
7977 causes the error message for the ambiguous "X'Access = Y'Access" and
7978 "X'Unrestricted_Access = Y'Access" and so forth to match.
7979 (Resolve_Attribute, case 'Access): Remove use of Original_Access_Type,
7980 now that anonymous access to protected operations have their own kind.
7981 (Resolve_Attribute): In case of dispatching call check the violation of
7982 restriction No_Dispatching_Calls.
7983 (Check_Array_Type): Check new -gnatyA array index style option
7985 * sem_ch3.ads, sem_ch3.adb (Derived_Type_Declaration): Reject an
7986 attempt to derive from a synchronized tagged type.
7987 (Analyze_Type_Declaration): If there is a incomplete tagged view of the
7988 type, inherit the class-wide type already created, because it may
7989 already have been used in a self-referential anonymous access component.
7990 (Mentions_T): Recognize self-referential anonymous access components
7991 that use (a subtype of) the class-wide type of the enclosing type.
7992 (Build_Derived_Record_Type): Add earlier setting of Is_Tagged_Type. Pass
7993 Derived_Type for Prev formal on call to
7994 Check_Anonymous_Access_Components rather than Empty.
7995 (Make_Incomplete_Type_Declaration): Add test for case where the type has
7996 a record extension in deciding whether to create a class-wide type,
7997 rather than just checking Tagged_Present.
7998 (Replace_Anonymous_Access_To_Protected_Subprogram): Procedure applies
7999 to stand-alone object declarations as well as component declarations.
8000 (Array_Type_Declaration): Initialize Packed_Array_Type to Empty, to
8001 prevent accidental overwriting when enclosing package appears in
8002 a limited_with_clause.
8003 (Array_Type_Declaration): If the component type is an anonymous access,
8004 the associated_node for the itype is the type declaration itself.
8005 (Add_Interface_Tag_Components): Modified to support concurrent
8006 types with abstract interfaces.
8007 (Check_Abstract_Interfaces): New subprogram that verifies the ARM
8008 rules 3.9.4 (15/2), 9.1 (9.d/2) and 9.4 (11.d/2).
8009 (Build_Derived_Record_Type): Add call to Analyze_Interface_Declaration
8010 to complete the decoration of synchronized interface types. Add also
8011 a call to Check_Abstract_Interfaces to verify the ARM rules.
8012 (Derive_Interface_Subprograms): Modified to support concurrent types
8013 with abstract interfaces.
8014 (Analyze_Subtype_Indication): Resolve the range with the given subtype
8015 mark, rather than delaying the full resolution depending on context.
8016 (Analyze_Component_Declaration,Analyze_Interface_Declaration,
8017 Analyze_Object_Declaration,Analyze_Subtype_Declaration,
8018 Array_Type_Declaration,Build_Derived_Record_Type,
8019 Build_Discriminated_Subtype,Check_Abstract_Overriding,Check_Completion,
8020 Derive_Interface_Subprograms,Derive_Subprogram,Make_Class_Wide_Type,
8021 Process_Full_View,Record_Type_Declaration): Split Is_Abstract flag into
8022 Is_Abstract_Subprogram and Is_Abstract_Type. Make sure these are
8023 called only when appropriate.
8024 (Copy_And_Swap): Copy Has_Unreferenced_Objects flag from full type
8026 (Analyze_Subtype_Declaration): For an access subtype declaration, create
8027 an itype reference for the anonymous designated subtype, to prevent
8028 scope anonmalies in gigi.
8029 (Build_Itype_Reference): New utility, to simplify construction of such
8032 2007-04-06 Vincent Celier <celier@adacore.com>
8034 * errutil.adb (Initialize): Initialize warnings table, if all warnings
8035 are suppressed, supply an initial dummy entry covering all possible
8038 * make.adb (Scan_Make_Arg): Reject options that should start with "--"
8039 and start with only one, such as "-RTS=none".
8040 (Collect_Arguments): Do not check for sources outside of projects.
8041 Do not collect arguments if project is externally built.
8042 (Compile_Sources): Do nothing, not even check if the source is up to
8043 date, if its project is externally built.
8044 (Compile): When compiling a predefined source, add -gnatpg
8045 as the second switch, after -c.
8046 (Compile_Sources): Allow compilation of Annex J renames without -a
8047 (Is_In_Object_Directory): Check if the ALI file is in the object
8048 even if there is no project extension.
8049 (Create_Binder_Mapping_File): Only put a unit in the mapping file for
8050 gnatbind if the ALI file effectively exists.
8051 (Initialize): Add the directory where gnatmake is invoked in front of
8052 the path if it is invoked from a bin directory, even without directory
8053 information, so that the correct GNAT tools will be used when spawned
8054 without directory information.
8056 * makeusg.adb: Change switch -S to -eS
8057 Add lines for new switches -we, -wn and -ws
8058 Add line for new switch -p
8060 * prj-proc.adb (Process): Set Success to False when Warning_Mode is
8061 Treat_As_Error and there are warnings.
8063 * switch-m.ads, switch-m.adb (Normalize_Compiler_Switches): Do not skip
8064 -gnatww Change gnatmake switch -S to -eS
8065 (Scan_Make_Switches): Code reorganisation. Process separately multi
8066 character switches and single character switches.
8067 (Scan_Make_Switches): New Boolean out parameter Success. Set Success to
8068 False when switch is not recognized by gnatmake.
8069 (Scan_Make_Switches): Set Setup_Projects True when -p or
8070 --create-missing-dirs is specified.
8072 * fname.adb (Is_Predefined_File_Name): Return True for annex J
8073 renamings Calendar, Machine_Code, Unchecked_Conversion and
8074 Unchecked_Deallocation only when Renamings_Included is True.
8076 * par.adb: Allow library units Calendar, Machine_Code,
8077 Unchecked_Conversion and Unchecked_Deallocation to be recompiled even
8078 when -gnatg is not specified.
8079 (P_Interface_Type_Definition): Remove the formal Is_Synchronized because
8080 there is no need to generate always a record_definition_node in case
8081 of synchronized interface types.
8082 (SIS_Entry_Active): Initialize global variable to False
8083 (P_Null_Exclusion): For AI-447: Add parameter Allow_Anonymous_In_95 to
8084 indicate cases where AI-447 says "not null" is legal.
8086 * makeutl.ads, makeutil.adb (Executable_Prefix_Path): New function
8088 * makegpr.adb (Check_Compilation_Needed): Take into account dependency
8089 files with with several lines starting with the object fileb name.
8090 (Scan_Arg): Set Setup_Projects True when -p or --create-missing-dirs
8092 (Initialize): Add the directory where gprmake is invoked in front of the
8093 path, if it is invoked from a bin directory or with directory
8094 information, so that the correct GNAT tools will be used when invoked
8096 (Check_Compilation_Needed): Process correctly backslashes on Windows.
8098 * vms_data.ads: Update switches/qualifiers
8100 2007-04-06 Ed Schonberg <schonberg@adacore.com>
8101 Thomas Quinot <quinot@adacore.com>
8104 If the array component is a discriminated record, the array aggregate
8105 is non-static even if the component is given by an aggregate with
8107 (Expand_Record_Aggregate): Use First/Next_Component_Or_Discriminant
8108 (Convert_Aggr_In_Allocator): If the allocator is for an access
8109 discriminant and the type is controlled. do not place on a finalization
8110 list at this point. The proper list will be determined from the
8112 (Build_Record_Aggr_Code): If aggregate has box-initialized components,
8113 initialize record controller if needed, before the components, to ensure
8114 that they are properly finalized.
8115 (Build_Record_Aggr_Code): For the case of an array component that has a
8116 corresponding array aggregate in the record aggregate, perform sliding
8119 2007-04-06 Javier Miranda <miranda@adacore.com>
8120 Gary Dismukes <dismukes@adacore.com>
8121 Ed Schonberg <schonberg@adacore.com>
8123 * exp_ch13.adb (Expand_External_Tag_Definition): Replace call to the
8124 run-time subprogram Set_External_Tag by call to Build_Set_External_Tag.
8126 * exp_ch4.adb (Expand_Allocator_Expression): Don't perform a run-time
8127 accessibility on class-wide allocators if the allocator occurs at the
8128 same scope level as the allocator's type. The check is guaranteed to
8129 succeed in that case, even when the expression originates from a
8130 parameter of the containing subprogram.
8131 (Expand_N_Op_Eq): Do nothing in case of dispatching call if compiling
8132 under No_Dispatching_Calls restriction. During the semantic analysis
8133 we already notified such violation.
8134 (Tagged_Membership): Constant folding. There is no need to check
8135 the tag at run-time if the type of the right operand is non
8136 class-wide abstract.
8137 Replace call to Is_Ancestor by call to Is_Parent
8138 to support concurrent types with interface types.
8139 (Expand_N_Allocator): Add an assertion associated with the generation
8141 (Expand_N_Slice): Do not enable range check to nodes associated
8142 with the frontend expansion of the dispatch table.
8143 (Is_Local_Access_Discriminant): Subsidiary function to
8145 (Tagged_Membership): Replace generation of call to the run-time
8146 subprogram CW_Membership by call to Build_CW_Membership.
8147 (Expand_Allocator_Expression): Replace generation of call to the
8148 run-time subprogram Get_Access_Level by call to Build_Get_Access_Level.
8150 * exp_disp.ads, exp_disp.adb (Make_DT): Code reorganization to
8151 initialize most the TSD components by means of an aggregate.
8152 Modify the declaration of the object containing the TSD
8153 because we now expand code that has a higher level of abstraction.
8154 The TSD has a discriminant containing the Inheritance Depth Level,
8155 value that is used in the membership test but also to fix the size
8156 of the table of ancestors.
8157 (Expand_Interface_Conversion): Insert function body at the closest place
8158 to the conversion expression, to prevent access-before-elaboration
8159 errors in the backend.
8160 Code improved to reduce the size of the dispatch table if
8161 compiling under restriction No_Dispatching_Calls plus code cleanup.
8162 Code reorganization plus removal of calls to Set_Num_Prim_Ops
8163 (Make_Secondary_DT): Remove call to Set_Num_Prim_Ops.
8164 (Expand_Dispatching_Call): Minor code reorganization plus addition of
8165 code to return immediately if compiling under No_Dispatching_Calls
8167 (Set_All_DT_Position): Remove code associated with the old CPP pragmas.
8168 CPP_Virtual and CPP_Vtable are no longer supported.
8169 (Expand_Interface_Conversion): Add missing support for interface type
8171 (Expand_Interface_Actuals): Replace calls to Is_Ancestor by calls to
8172 Is_Parent to support concurrent types with interfaces.
8173 (Init_Predefined_Interface_Primitives): Removed.
8174 (Make_Secondary_DT): Modified to support concurrent record types.
8175 (Set_All_DT_Position): Modified to support concurrent record types.
8176 (Ada_Actions, Action_Is_Proc, Action_Nb_Arg): Remove entries associated
8177 with Get_External_Tag, Inherit_TSD, Set_External_Tag.
8178 (Ada_Actions, Action_Is_Proc, Action_Nb_Arg): Remove entry associated
8180 (Ada_Actions, Action_Is_Proc, Action_Nb_Arg): Remove entries associated
8181 with Get_Access_Level, Get_Predefined_Prim_Op_Address,
8182 Get_Prim_Op_Address Get_RC_Offset, Get_Remotely_Callable, Inherit_DT,
8183 Set_Access_Level, Set_Expanded_Name, Set_Predefined_Prim_Op_Address,
8184 Set_Prim_Op_Address, Set_RC_Offset, Set_Remotely_Callable, Set_TSD.
8185 (Expand_Dispatching_Call): Replace generation of call to the run-time
8186 subprograms Get_Predefined_Prim_Op_Address and Get_Prim_Op_Address by
8187 calls to Build_Get_Predefined_Prim_Op_Address, and Build_Get_Prim_Op_
8189 (Fill_DT_Entry, Fill_Secondary_DT_Entry): Replace generation of call to
8190 the run-time subprograms Set_Predefined_Prim_Op_Address and Set_Prim_
8191 Op_Address by calls to Build_Set_Predefined_Prim_Op_Address, and
8192 Build_Set_Prim_Op_Address.
8193 (Get_Remotely_Callable): Subprogram removed.
8194 (Init_Predefined_Interface_Primitives): Replace generation of call to
8195 the run-time subprograms Inherit_DT by call to Build_Inherit_Predefined_
8198 * sem_elab.adb (Set_Elaboration_Constraint): Replace the call to
8199 First (Parameter_Associations ()) with the call to First_Actual that
8200 returns an actual parameter expression for both named and positional
8203 * sem_disp.adb (Check_Dispatching_Call): In case of dispatching call
8204 check violation of restriction No_Dispatching_Calls.
8205 (Check_Controlling_Type): A formal of a tagged incomplete type is a
8206 controlling argument.
8208 * exp_util.ads, exp_util.adb (Type_May_Have_Bit_Aligned_Components): Use
8209 First/Next_Component_Or_Discriminant
8210 (Insert_Actions): Add entries for new N_Push and N_Pop nodes
8211 (Find_Implemented_Interface): Removed. All the calls to this subprogram
8212 specify Any_Limited_Interface, and this functionality is already
8213 provided by the function Has_Abstract_Interfaces.
8214 (Find_Interface, Find_Interface_Tag, Find_Interface_ADT): Modified to
8215 support concurrent types implementing interfaces.
8216 (Find_Implemented_Interface): Removed. All the calls to this subprogram
8217 specify kind Any_Limited_Interface, and this functionality is already
8218 provided by the function Has_Abstract_Interfaces.
8219 (Remove_Side_Effects): replace Controlled_Type by
8220 CW_Or_Controlled_Type whenever the issue is related to
8221 using or not the secondary stack.
8223 * par-ch12.adb (P_Formal_Type_Definition): Update calls to
8224 P_Interface_Type_Definition to fulfill the new interface (the formal
8225 Is_Synchronized is no longer required).
8227 * Make-lang.in (GNAT_ADA_OBJS): Addition of exp_atag.o
8228 Update dependencies.
8230 * exp_atag.ads, exp_atag.adb: New file
8232 2007-04-06 Ed Schonberg <schonberg@adacore.com>
8233 Bob Duff <duff@adacore.com>
8234 Cyrille Comar <comar@adacore.com>
8236 * exp_ch7.ads, exp_ch7.adb (Find_Final_List): If the access type is
8237 anonymous, use finalization list of enclosing dynamic scope.
8238 (Expand_N_Package_Declaration): For a library package declaration
8239 without a corresponding body, generate RACW subprogram bodies in the
8240 spec (just as we do for the task activation call).
8241 (Convert_View): Split Is_Abstract flag into Is_Abstract_Subprogram and
8242 Is_Abstract_Type. Make sure these are called only when appropriate.
8243 Remove all code for DSP option
8244 (CW_Or_Controlled_Type): new subprogram.
8246 2007-04-06 Eric Botcazou <botcazou@adacore.com>
8247 Ed Schonberg <schonberg@adacore.com>
8248 Gary Dismukes <dismukes@adacore.com>
8250 * exp_ch9.ads, exp_ch9.adb (Family_Offset): Add new 'Cap' boolean
8251 parameter. If it is set to true, return a result capped according to
8252 the global upper bound for the index of an entry family.
8253 (Family_Size): Add new 'Cap' boolean parameter. Pass it to Family_Offset
8254 (Build_Find_Body_Index): Adjust for above change.
8255 (Entry_Index_Expression): Likewise.
8256 (Is_Potentially_Large_Family): New function extracted from...
8257 (Collect_Entry_Families): ...here. Call it to detect whether the family
8258 is potentially large.
8259 (Build_Entry_Count_Expression): If the family is potentially large, call
8260 Family_Size with 'Cap' set to true.
8261 (Expand_N_Protected_Type_Declaration, Expand_N_Protected_Body): Generate
8262 a protected version of an operation declared in the private part of
8263 a protected object, because they may be invoked through a callback.
8264 (Set_Privals): If the type of a private component is an anonymous access
8265 type, do not create a new itype for each protected body.
8266 If the body of a protected operation creates
8267 controlled types (including allocators for class-widetypes), the
8268 body of the corresponding protected subprogram must include a
8270 (Build_Activation_Chain_Entity): Build the chain entity for extended
8272 (Type_Conformant_Parameters): Use common predicate Conforming_Types
8273 to determine whether operation overrides an inherited primitive.
8274 (Build_Wrapper_Spec): Add code to examine the parents while looking
8275 for a possible overriding candidate.
8276 (Build_Simple_Entry_Call): Set No_Initialization on the object used to
8277 hold an actual parameter value since its initialization is separated
8278 from the the declaration. Prevents errors on null-excluding access
8281 2007-04-06 Thomas Quinot <quinot@adacore.com>
8282 Pablo Oliveira <oliveira@adacore.com>
8284 * exp_dist.ads, exp_dist.adb (Build_To_Any_Call, Build_From_Any_Call):
8285 Do an Unchecked_Conversion to handle the passage from the Underlying
8286 Type to the Base Type when calling Build_To_Any_Call and
8287 Build_From_Any_Call.
8288 (Build_Actual_Object_Declaration): Set Object's Ekind to E_Variable or
8289 E_Constant, depending upon Variable formal.
8290 (GARLIC_Support.Build_Subprogram_Receiving_Stubs,
8291 PolyORB_Support.Build_Subprogram_Receiving_Stubs): For a formal
8292 parameter that requires an extra constrained parameter, declare
8293 temporary for actual as a variable, not a constant.
8294 (Add_RACW_Primitive_Declarations_And_Bodies): Generate bodies only when
8295 the unit being compiled is the one that contains the stub type.
8296 Change primitive operation name for the RACW associated with a RAS
8297 from Call to _Call so it cannot clash with any legal identifier.
8298 (PolyORB_Support.Add_RACW_Write_Attribute): Remove unused constant
8300 (Append_RACW_Bodies): New subprogram.
8301 (Expand_Receiving_Stubs_Bodies): Pass a 'Stmts' list to
8302 Add_Receiving_Stubs_To_Declarations functions.
8303 When expanding a package body, this list correspond to the
8304 statements in the HSS at the end of the pacakge.
8305 When expanding a package spec, this list correspond to the
8307 (Add_Receiving_Stubs_To_Declarations): Append the function
8308 registering the receiving stubs at the end of the 'Stmts' list.
8309 (RCI_Package_Locator): Pass the new Version generic formal when
8310 instantiating a RCI_Locator package.
8311 (Build_From_Any_Function): To compute the High bound for an
8312 unconstrained array actual, we add the Low bound with the length.
8313 Thus we must convert the low bound and the length to an appropriate
8314 type before doing the sum.
8315 (Build_Subprogram_Receiving_Stubs, PolyORB):
8316 * Retrieve the extra formals parameters at the
8317 end of the parameter stream.
8318 * Use Move_Any_Value to write back out parameters
8319 after executing the request as it is more efficient
8320 than Copy_Any_Value.
8321 * Build the any containing Extra Formals with the
8322 appropriate typecode.
8323 (PolyORB_Support.Helpers.Append_Record_Traversal): Nothing to do for an
8324 empty Component_List.
8325 (Build_Actual_Object_Declaration): New subprogram. Build and insert into
8326 the tree the declaration for an object that serves as actual parameter
8327 in server-side stubs.
8328 (GARLIC_Support.Build_Subprogram_Receiving_Stubs,
8329 PolyORB_Support.Build_Subprogram_Receiving_Stubs):
8330 Use Build_Actual_Object_Declaration to prepare the actuals.
8331 (Add_Parameter_To_NVList): Set the parameter mode to In for
8332 Extra Constrained Parameters.
8333 (Build_General_Calling_Stubs): Set the parameter type to boolean for
8334 Extra Constrained parameters.
8335 (Build_To_Any_Function, Build_From_Any_Function,
8336 Built_TypeCode_Function): When Typ is implicit, call the correct
8337 function with the first not implicit parent type.
8338 (TC_Rec_Add_Process_Element, FA_Rec_Add_Process_Element,
8339 (FA_Ary_Add_Process_Element): When Datum is an Any, we cannot infer the
8340 typecode from the Etype. Therefore we retrieve the correct typecode
8341 with a call to Get_Any_Type.
8342 (Copy_Specification): Do controlling formal type substitution based on
8343 Is_Controlling_Formal flag, instead of caller-provided object type.
8344 (Build_Subprogram_Calling_Stubs): When retrieveing the original spec for
8345 a RACW primitive operation, we might get a subprogram declaration for an
8346 ancestor of the RACW designated type (not for the designated type
8347 itself), in the case where this operation is inherited. In this case we
8348 have no easy means of determining the original tagged type for which
8349 the primitive was declared, so instead we now rely on
8350 Copy_Specification to use the Is_Controlling_Formal flag to determine
8351 which formals require type substitution.
8353 2007-04-06 Robert Dewar <dewar@adacore.com>
8354 Ed Schonberg <schonberg@adacore.com>
8356 * exp_intr.adb (Expand_Exception_Call): Calls to subprograms in
8357 GNAT.Current_Exception are not allowed if pragma Restrictions
8358 (No_Exception_Propagation) is set and in any case make the associated
8359 handler unsuitable as a target for a local raise statement.
8360 (Expand_Dispatching_Constructor_Call): Replace generation of call to the
8361 run-time subprogram CW_Membership by call to Build_CW_Membership.
8362 (Expand_Dispatching_Constructor_Call): If the dispatching tag is given
8363 by a function call, a temporary must be created before expanding the
8364 Constructor_Call itself, to prevent out-of-order elaboration in the
8365 back-end when stack checking is enabled..
8367 2007-04-06 Ed Schonberg <schonberg@adacore.com>
8369 * exp_pakd.adb (Expand_Packed_Boolean_Operator): The bounds of the
8370 result are the bounds of the left operand, not the right.
8372 2007-04-06 Ed Schonberg <schonberg@adacore.com>
8375 (Build_Mutable_Record_Write_Procedure): For an Unchecked_Union type, use
8376 discriminant defaults.
8377 (Build_Record_Or_Elementary_Output_Procedure): Ditto.
8378 (Make_Component_List_Attributes): Ditto.
8380 2007-04-06 Ed Schonberg <schonberg@adacore.com>
8381 Bob Duff <duff@adacore.com>
8383 * sem_aggr.adb (Resolve_Record_Aggregate): In semantics-only mode treat
8384 an association with a box as providing a value even though the
8385 initialization procedure for the type is not available.
8386 (Resolve_Record_Aggregate): Check that a choice of an association with a
8387 box corresponds to a component of the type.
8388 (Resolve_Record_Aggregate): Split Is_Abstract flag into
8389 Is_Abstract_Subprogram and Is_Abstract_Type.
8391 * exp_tss.adb (Base_Init_Proc): Use Is_Type instead of Type_Kind for
8394 * inline.adb (Add_Inlined_Body): Split Is_Abstract flag into
8395 Is_Abstract_Subprogram and Is_Abstract_Type. Make sure these are
8396 called only when appropriate.
8398 2007-04-06 Olivier Hainque <hainque@adacore.com>
8400 * g-alleve.ads (Low Level Vector type definitions): Map each to the
8401 associated vector view instead of all to the unsigned char view.
8403 * g-altcon.adb (Generic_Conversions): New internal generic package,
8404 offering facilities for all the Vector/View conversion routines
8405 implemented by this unit.
8406 (To_View/To_Vector - all versions): Reimplemented in a systematic
8407 manner, using the internal Generic_Conversions facilities.
8409 2007-04-06 Pascal Obry <obry@adacore.com>
8411 * g-arrspl.adb (Free) [Element_Access]: New routine to free the source
8413 (Create): Free the source string before storing the new one.
8415 2007-04-06 Vincent Celier <celier@adacore.com>
8417 * g-debpoo.adb (Validity): New package with a complete new
8418 implementation of subprograms Is_Valid and Set_Valid.
8419 (Is_Valid): Move to local package Validity
8420 (Set_Valid): Move to local package Validity
8422 2007-04-06 Arnaud Charlet <charlet@adacore.com>
8423 Pablo Oliveira <oliveira@adacore.com>
8425 * g-expect.adb (Get_Command_Output): When expanding the output buffer
8426 we must ensure that there is enough place for the new data we are going
8429 2007-04-06 Thomas Quinot <quinot@adacore.com>
8431 * g-md5.ads, g-md5.adb (Digest): Fix off-by-one error in padding
8434 2007-04-06 Jose Ruiz <ruiz@adacore.com>
8435 Vincent Celier <celier@adacore.com>
8437 * gnatcmd.adb (B_Start): Add prefix of binder generated file.
8438 (Stack_String): Add this String that contains the name of the Stack
8439 package in the project file.
8440 (Packages_To_Check_By_Stack): Add this list that contains the packages
8441 to be checked by gnatstack, which are the naming and the stack packages.
8442 (Check_Files): If no .ci files were specified for gnatstack we add all
8443 the .ci files belonging to the projects, including binder generated
8445 (Non_VMS_Usage): Document that gnatstack accept project file switches.
8446 (GNATCmd): Update the B_Start variable if we are in a VMS environment.
8447 Add gnatstack to the list of commands that use project file related
8448 switches, and get the single attribute Switches from the stack package
8449 in a project file when calling gnatstack. Parse the -U flag for
8450 processing files belonging to all projects in the project tree.
8451 Remove all processing for command Setup
8453 * prj-attr.adb: Add new package Stack with single attribute Switches
8455 * vms_conv.ads (Command_Type): Add command Stack.
8456 Move to body declarations that are only used in the body: types Item_Id,
8457 Translation_Type, Item_Ptr, Item and its subtypes.
8459 * vms_conv.adb: (Initialize): Add data for new command Stack.
8460 Add declarations moved from the spec: types Item_Id, Translation_Type,
8461 Item_Ptr, Item and its subtypes.
8462 (Cargs_Buffer): New table
8463 (Cargs): New Boolean global variable
8464 (Process_Buffer): New procedure to create arguments
8465 (Place): Put character in table Buffer or Cargs_Buffer depending on the
8467 (Process_Argument): Set Cargs when processing qualifiers for GNAT
8469 (VMS_Conversion): Call Process_Buffer for table Buffer and, if it is not
8470 empty, for table Cargs_Buffer.
8471 (Initialize): Remove component Setup in Command_List
8473 2007-04-06 Vincent Celier <celier@adacore.com>
8475 * gprep.adb (Process_Files.Process_One_File): Use full file name when
8476 issuing pragma Source_Reference.
8478 2007-04-06 Emmanuel Briot <briot@adacore.com>
8480 * g-regpat.adb (Parse_Posix_Character_Class): Fix handling of
8481 [[:xdigit:]] character class.
8482 Also raise an exception when an invalid character class is used.
8484 2007-04-06 Pascal Obry <obry@adacore.com>
8486 * i-cstrea.ads: (fopen): Add encoding parameter.
8488 Change reference from a-sysdep.c to sysdep.c in comment.
8489 Update copyright notice.
8490 This set of patch add support for the encoding form parameter.
8492 * mingw32.h (S2WSU): New macro to convert from a string to a
8493 wide-string using the UTF-8 encoding. The S2WS macro supports now only
8494 standard 8bits encoding.
8495 (WS2SU): As above but converting from wide-sring to string.
8496 This is needed as it is necessary to have access to both versions in the
8497 runtime for the form parameter encoding support.
8498 This set of patch add support for the encoding form parameter.
8499 (S2WS): Improve implementation to handle cases where the filename is not
8500 UTF-8 encoded. In this case we default to using the current code page
8503 * s-crtl-vms64.ads, s-crtl.ads (Filename_Encoding): New enumeration
8504 type (UTF8, ASCII_8bits). This enumeration has a rep clause to match
8505 the constants defined in adaint.h.
8506 (fopen): Add encoding parameter.
8509 * s-ficobl.ads (AFCB): Add Encoding field to record the filename
8510 encoding. This is needed for the Reset routine (freopen low level-call).
8512 * s-fileio.adb (Open): Decode encoding form parameter and set the
8513 corresponding encoding value into AFCB structure.
8514 (Reset): Pass the encoding value to freopen.
8515 (Close): Move the call to Lock_Task to the beginning of the procedure.
8517 2007-04-06 Geert Bosch <bosch@adacore.com>
8518 Robert Dewar <dewar@adacore.com>
8520 * i-fortra.ads: Add Double_Complex type.
8522 * impunit.adb: (Is_Known_Unit): New function
8523 Add Gnat.Byte_Swapping
8525 Add new Ada 2005 units
8526 Ada.Numerics.Generic_Complex_Arrays, Ada.Numerics.Generic_Real_Arrays,
8527 Ada.Numerics.Complex_Arrays, Ada.Numerics.Real_Arrays,
8528 Ada.Numerics.Long_Complex_Arrays, Ada.Numerics.Long_Long_Complex_Arrays,
8529 Ada.Numerics.Long_Long_Real_Arrays and Ada.Numerics.Long_Real_Arrays
8531 * impunit.ads (Is_Known_Unit): New function
8533 * a-ngcoar.adb, a-ngcoar.ads, a-ngrear.adb,
8534 a-ngrear.ads, a-nlcoar.ads, a-nllcar.ads, a-nllrar.ads, a-nlrear.ads,
8535 a-nucoar.ads, a-nurear.ads, g-bytswa.adb, g-bytswa-x86.adb,
8536 g-bytswa.ads, g-sha1.adb, g-sha1.ads, i-forbla.ads, i-forlap.ads,
8537 s-gearop.adb, s-gearop.ads, s-gecobl.adb, s-gecobl.ads, s-gecola.adb,
8538 s-gecola.ads, s-gerebl.adb, s-gerebl.ads, s-gerela.adb, s-gerela.ads:
8541 * Makefile.rtl: Add g-bytswa, g-sha1, a-fzteio and a-izteio
8543 * a-fzteio.ads, a-izteio.ads: New Ada 2005 run-time units.
8545 2007-04-06 Eric Botcazou <botcazou@adacore.com>
8546 Arnaud Charlet <charlet@adacore.com>
8548 * init.c: Reuse PA/HP-UX code for IA-64/HP-UX, except
8549 __gnat_adjust_context_for_raise.
8550 (__gnat_init_float): on x86 vxworks 5.x and 6.x, we use the same
8551 implementation of floating point operations as native x86 targets.
8552 So the FPU should be initialized in the same way using finit. Fix
8553 floating point operations accuracy issues.
8554 (__gnat_install_handler, case FreeBSD): Use proper type for sa_sigaction
8555 member in struct sigaction, so as to avoid warning for incompatible
8558 2007-04-06 Serguei Rybin <rybin@adacore.com>
8560 * lib.ads, lib.adb (Tree_Read): Release the memory occupied by the
8561 switches from previously loaded tree
8563 2007-04-06 Thomas Quinot <quinot@adacore.com>
8565 * lib-writ.adb (Write_With_Lines): Factor duplicated code between the
8566 cases where a given dependency has a body or not.
8567 (Write_With_File_Names): New subprogram, common code for the two cases
8570 2007-04-06 Ed Schonberg <schonberg@adacore.com>
8571 Javier Miranda <miranda@adacore.com>
8573 * lib-xref.ads, lib-xref.adb:
8574 Modify the loop that collects type references, to include interface
8575 types that the type implements. List each of these interfaces when
8576 building the entry for the type.
8577 (Generate_Definition): Initialize component Def and Typ of new entry
8578 in table Xrefs, to avoid to have these components unitialized.
8579 (Output_References): Split Is_Abstract flag into
8580 Is_Abstract_Subprogram and Is_Abstract_Type.
8581 (Generate_Reference): Add barrier to do not generate the warning
8582 associated with Ada 2005 entities with entities generated by the
8585 2007-04-06 Robert Dewar <dewar@adacore.com>
8586 Arnaud Charlet <charlet@adacore.com>
8587 Vincent Celier <celier@adacore.com>
8589 * gnat_rm.texi, gnat_ugn.texi: Add -gnatyl documentation
8590 Update 'Exception Handling Control' chapter which was outdated.
8591 Minor fix to documentation of -gnatwq
8592 Remove section "Adapting the Run Time to a New C++ Compiler" because
8594 Add passage on need of -nostart-files in some non-ada-main cases.
8595 Document new switch -eS (/STANDARD_OUTPUT_FOR_COMMANDS) for gnatmake
8596 Update documentation about Interfacing with C++
8597 Add documentation for new gnatmake switch -p
8598 Add missing protocol part in URLs.
8600 Document pragma Compile_Time_Error
8601 Add documentation for Object_Size indicating that stand alone
8602 objects can have a larger size in some cases.
8603 Add node for GNAT.Byte_Swapping, GNAT.SHA1
8604 Update reference to the Ravenscar profile.
8605 Document pragma Unreferenced_Objects
8607 * gnat-style.texi: Fix typo
8609 2007-04-06 Vincent Celier <celier@adacore.com>
8611 * mlib.adb (Building_Library): Only output "building a library..." in
8614 * mlib-prj.adb (Build_Library): Only output lists of object and ALI
8615 files in verbose mode.
8617 * mlib-utl.adb (Ar): Only output the first object files when not in
8619 (Gcc): Do not display all the object files if not in verbose mode, only
8622 2007-04-06 Robert Dewar <dewar@adacore.com>
8624 * namet.ads, namet.adb (wn): Improve this debugging routine. Calling
8625 it no longer destroys the contents of Name_Buffer or Name_Len and
8626 non-standard and invalid names are handled better.
8627 (Get_Decoded_Name_String): Improve performance by using
8628 Name_Has_No_Encodings flag in the name table.
8629 (Is_Valid_Name): New function to determine whether a Name_Id is valid.
8630 Used for debugging printouts.
8632 2007-04-06 Robert Dewar <dewar@adacore.com>
8633 Javier Miranda <miranda@adacore.com>
8634 Bob Duff <duff@adacore.com>
8636 * par-ch3.adb: (P_Type_Declaration): Set Type_Token_Location
8637 (P_Interface_Type_Definition): Remove the formal Is_Synchronized because
8638 there is no need to generate always a record_definition_node in case
8639 of synchronized interface types.
8640 (P_Type_Declaration): Update calls to P_Interface_Type_Definition.
8641 (P_Null_Exclusion): For AI-447: Remove warnings about "not null" being
8642 illegal in Ada 95, in cases where it is legal. Change the warnings to
8643 errors in other cases. Don't give the error unless the "not null"
8644 parses properly. Correct the source position at which the error occurs.
8645 (P_Known_Discriminant_Part_Opt): Pass Allow_Anonymous_In_95 => True to
8646 P_Null_Exclusion, to suppress "not null" warnings.
8647 (P_Identifier_Declarations): Code cleanup. Removed unrequired label and
8648 associated goto statements.
8650 * par-endh.adb (Pop_End_Context): Allow more flexibility in placement
8653 * scans.ads (Type_Token_Location): New flag
8655 * par-ch6.adb (P_Mode): Check specifically for case of IN ACCESS
8656 (P_Formal_Part): Pass Allow_Anonymous_In_95 => True to
8657 P_Null_Exclusion, to suppress "not null" warnings.
8659 2007-04-06 Robert Dewar <dewar@adacore.com>
8660 Javier Miranda <miranda@adacore.com>
8661 Bob Duff <duff@adacore.com>
8662 Vincent Celier <celier@adacore.com>
8664 * par-prag.adb (Prag): Add dummy entry for pragma Compile_Time_Error
8665 (Extensions_Allowed): No longer sets Ada_Version
8666 Entry for pragma Unreferenced_Objects
8668 * sem_prag.adb (Analyze_Pragma, case Priority): Force with of
8669 system.tasking if pragma priority used in a procedure
8670 (Analyze_Pragma, case Warning): Handle dot warning switches
8671 (Process_Compile_Time_Warning_Or_Error): New procedure
8672 (Analyze_Pragma): Add processing for Compile_Time_Error
8673 Add support for extra arguments External_Name and Link_Name.
8674 Remove code associated with pragmas CPP_Virtual and CPP_Vtable.
8675 (Process_Import_Or_Interface): Add support for the use of pragma Import
8677 (Extensions_Allowed): No longer affects Ada_Version
8678 (Analyze_Pragma): Split Is_Abstract flag into Is_Abstract_Subprogram and
8679 Is_Abstract_Type. Make sure these are called only when appropriate.
8680 Add processing for pragma Unreferenced_Objects
8682 * snames.h, snames.ads, snames.adb: Add entry for pragma
8684 Add new standard name Minimum_Binder_Options for new gprmake
8685 Add new standard names for gprmake: Archive_Suffix,
8686 Library_Auto_Init_Supported, Library_Major_Minor_Id_Supported,
8687 Library_Support, Library_Version_Options,
8688 Shared_Library_Minimum_Options,
8689 Shared_Library_Prefix, Shared_Library_Suffix, Symbolic_Link_Supported.
8690 Change Name_Call to Name_uCall so that it cannot clash with a legal
8692 Add new standard names Mapping_Spec_Suffix and Mapping_Body_Suffix
8693 Append C_Plus_Plus to convention identifiers as synonym for CPP
8694 Add new standard names Stack and Builder_Switches
8695 Add new standard names: Compiler_Minimum_Options, Global_Config_File,
8696 Library_Builder, Local_Config_File, Objects_Path, Objects_Path_File,
8697 Run_Path_Option, Toolchain_Version.
8698 Entry for pragma Unreferenced_Objects
8700 * switch-c.adb (Scan_Front_End_Switches): Store correct -gnateD
8701 switches, without repetition of "eD". Make sure that last character of
8702 -gnatep= switch is not taken as -gnat switch character.
8703 Complete rewrite of circuit for handling saving compilation options
8704 Occasioned by need to support dot switchs for -gnatw, but cleans up
8706 -gnatX does not affect Ada_Version
8707 Include -gnatyA in -gnatg style switches
8709 * sem_warn.ads, sem_warn.adb (Output_Unreferenced_Messages): Exclude
8710 warnings on return objects.
8711 (Warn_On_Useless_Assignment): Exclude warnings on return objects
8712 (Set_Dot_Warning_Switch): New procedure
8713 (Check_References): Add missing case of test for
8714 Has_Pragma_Unreferenced_Objects
8715 (Output_Unreferenced_Messages): Implement effect of new pragma
8716 Unreferenced_Objects, remove special casing of limited controlled
8719 2007-04-06 Vincent Celier <celier@adacore.com>
8721 * prj-ext.adb (Initialize_Project_Path): New procedure that initialize
8722 the default project path, initially done during elaboration of the
8724 If the prefix returned by Sdefault is null, get the prefix from a call
8725 to Executable_Prefix_Path.
8726 (Project_Path): Call Initialize_Project_Path if Current_Project_Path is
8729 * prj-nmsc.adb (Get_Path_Names_And_Record_Sources): Use the non
8730 canonical directory name to open the directory from which files are
8732 (Record_Other_Sources): Idem.
8733 (Locate_Directory): Add the possibility to create automatically missing
8734 directories when Setup_Projects is True.
8735 Call Locate_Directory so that the directory will be created when
8736 Setup_Projects is True, for object dir, library dir, library ALI dir,
8737 library source copy dir and exec dir.
8739 * prj-pp.adb (Max_Line_Length): Set to 255 for compatibility with older
8742 2007-04-06 Robert Dewar <dewar@adacore.com>
8744 * sem_ch13.ads, sem_ch13.adb (Adjust_Record_For_Reverse_Bit_Order):
8745 Use First/Next_Component_Or_Discriminant
8746 (Analyze_Record_Representation_Clause):
8747 Use First/Next_Component_Or_Discriminant
8748 (Check_Component_Overlap): Use First/Next_Component_Or_Discriminant
8749 (Analyze_Attribute_Definition_Clause, case Value_Size): Reject
8750 definition if type is unconstrained.
8751 (Adjust_Record_For_Reverse_Bit_Order): New procedure
8752 (Analyze_Attribute_Definition_Clause): Split Is_Abstract flag into
8753 Is_Abstract_Subprogram and Is_Abstract_Type.
8754 (Adjust_Record_For_Reverse_Bit_Order): New procedure
8756 * repinfo.adb (List_Record_Info): Use First/
8757 Next_Component_Or_Discriminant.
8759 * style.ads, styleg-c.adb, styleg-c.ads (Check_Array_Attribute_Index):
8762 * stylesw.ads, stylesw.adb: Recognize new -gnatyA style switch
8763 Include -gnatyA in default switches
8765 * opt.ads: (Warn_On_Non_Local_Exception): New flag
8766 (Warn_On_Reverse_Bit_Order): New flag
8767 (Extensions_Allowed): Update the documentation.
8768 (Warn_On_Questionable_Missing_Parens): Now on by default
8770 * usage.adb: Add documentation of -gnatw.x/X switches
8771 Document new -gnatyA style switch
8772 -gnatq warnings are on by default
8774 2007-04-06 Ed Falis <falis@adacore.com>
8776 * s-carun8.adb, s-carsi8.adb (Compare_Array_?8): modify so that last
8777 full word is no longer compared twice.
8779 2007-04-06 Ed Schonberg <schonberg@adacore.com>
8781 * sem_ch10.adb (Install_Limited_Context_Clauses.
8782 Expand_Limited_With_Clause): Use a new copy of selector name in the
8783 call to Make_With_Clause. This fixes the tree structure for ASIS
8784 purposes. Nothing is changed in the compiler behaviour.
8785 (Process_Body_Clauses): Handle properly use clauses whose prefix is
8787 (Install_Limited_With_Clauses): Do not install non-limited view when it
8788 is still incomplete.
8790 2007-04-06 Ed Schonberg <schonberg@adacore.com>
8791 Gary Dismukes <dismukes@adacore.com>
8793 * sem_ch12.adb (Check_Generic_Actuals): Use first subtype of actual
8794 when capturing size information, instead of base type, which for a
8795 formal array type will be the unconstrained type.
8796 (Analyze_Formal_Object_Declaration): Add check for illegal default
8797 expressions for a formal in object of a limited type.
8798 (Instantiate_Object): Ditto.
8799 (Check_Formal_Package_Instance): Skip entities that are formal objects,
8800 because they were defaulted in the formal package and no check applies
8802 (Check_Formal_Package_Instance): Extend conformance check to other
8803 discrete types beyond Integer.
8804 (Process_Default): Copy directly the unmatched formal. A generic copy
8805 has already been performed in Analyze_Formal_Package.
8806 (Analyze_Associations): If a formal subprogram has no match, check for
8807 partial parametrization before looking for a default, to prevent
8809 (Analyze_Package_Instantiation, Analyze_Subprogram_Instantiation): Do
8810 not set the instantiation environment before analyzing the actuals.
8811 Fixes regression on 8515-003 with implementation of AI-133.
8812 Set_Instance_Env checks whether the generic unit is a predefined
8813 unit, in which case the instance must be analyzed with the latest Ada
8814 mode. This setting must take place after analysis of the actuals,
8815 because the actuals must be analyzed and frozen in the Ada mode extant
8816 outside of the current instantiation.
8817 (Save_Env, Restore_Env): Preserve and restore the configuration
8818 parameters so that predefined units can be compiled in the proper Ada
8820 (Analyze_Formal_Object_Declaration,Analyze_Formal_Subprogram,
8821 Instantiate_Type): Split Is_Abstract flag into Is_Abstract_Subprogram
8822 and Is_Abstract_Type.
8823 (Analyze_Formal_Package): For better error recovery, Add exception
8824 handler to catch Instantion_Error, which can be raised in
8825 Analyze_Associations
8827 2007-04-06 Ed Schonberg <schonberg@adacore.com>
8828 Bob Duff <duff@adacore.com>
8829 Gary Dismukes <dismukes@adacore.com>
8831 * sem_ch4.adb (Try_Primitive_Operation): The call is legal if the
8832 prefix type is a discriminated subtype of the type of the formal.
8833 (Analyze_Allocator): Collect all coextensions regardless of the context.
8834 Whether they can be allocated statically is determined in exp_ch4.
8835 (Analyze_Selected_Component): If the prefix is a limited view and the
8836 non-limited view is available, use the non-limited one.
8837 (Operator_Check): For "X'Access = Y'Access" (which is ambiguous, and
8838 therefore illegal), suggest a qualified expression rather than a type
8839 conversion, because a type conversion would be illegal in this context.
8840 (Anayze_Allocator): Trace recursively all nested allocators so that all
8841 coextensions are on the corresponding list for the root. Do no mark
8842 coextensions if the root allocator is within a declaration for a stack-
8843 allocated object, because the access discriminants will be allocated on
8845 (Analyze_Call): Remove restriction on calls to limited functions for the
8846 cases of generic actuals for formal objects, defaults for formal objects
8847 and defaults for record components.
8848 (Analyze_Allocator): Before analysis, chain coextensions on the proper
8849 element list. Their expansion is delayed until the enclosing allocator
8850 is processed and its finalization list constructed.
8851 (Try_Primitive_Operation): If the prefix is a concurrent type, looks
8852 for an operation with the given name among the primitive operations of
8853 the corresponding record type.
8854 (Analyze_Selected_Component): If the prefix is a task type that
8855 implements an interface, and there is no entry with the given name,
8856 check whether there is another primitive operation (e.g. a function)
8858 (Try_Object_Operation, Analyze_One_Call, Try_Indexed_Call): Handle
8859 properly the indexing of a function call written in prefix form, where
8860 the function returns an array type, and all parameters of the function
8861 except the first have defaults.
8862 (Analyze_Equality_Op): If this is a call to an implicit inequality, keep
8863 the original operands, rather than relocating them, for efficiency and
8864 to work properly when an operand is overloaded.
8865 (Analyze_Allocator,Operator_Check,Remove_Abstract_Operations): Split
8866 Is_Abstract flag into Is_Abstract_Subprogram and Is_Abstract_Type.
8867 (Analyze_Selected_Component): If the prefix is a private extension, only
8868 scan the visible components, not those of the full view.
8869 (Try_Primitive_Operation): If the operation is a procedure, collect all
8870 possible interpretations, as for a function, because in the presence of
8871 classwide parameters several primitive operations of the type can match
8872 the given arguments.
8874 2007-04-06 Ed Schonberg <schonberg@adacore.com>
8875 Robert Dewar <dewar@adacore.com>
8877 * sem_ch5.adb (Analyze_Assignment): Reject a right-hand side that is a
8878 tag-indeterminate call to an abstract function, when the left-hand side
8880 (Analyze_Loop_Statement): Improve detection of infinite loops
8882 2007-04-06 Ed Schonberg <schonberg@adacore.com>
8883 Thomas Quinot <quinot@adacore.com>
8885 * sem_ch7.ads, sem_ch7.adb (Inspect_Deferred_Constant_Completion): Move
8886 out of Analyze_Package_Declaration, because processing must be applied
8887 to package bodies as well, for deferred constants completed by pragmas.
8888 (Analyze_Package_Declaration): When the package declaration being
8889 analyzed does not require an explicit body, call Check_Completion.
8890 (May_Need_Implicit_Body): An implicit body is required when a package
8891 spec contains the declaration of a remote access-to-classwide type.
8892 (Analyze_Package_Body): If the package contains RACWs, append the
8893 pending subprogram bodies generated by exp_dist at the end of the body.
8894 (New_Private_Type,Unit_Requires_Body): Split Is_Abstract flag into
8895 Is_Abstract_Subprogram and Is_Abstract_Type.
8896 (Preserve_Full_Attributes): The full entity list is not an attribute
8897 that must be preserved from full to partial view.
8899 * sem_dist.adb (Add_RAS_Dereference_TSS):
8900 Change primitive name to _Call so it cannot clash with any legal
8901 identifier, and be special-cased in Check_Completion.
8902 Mark the full view of the designated type for the RACW associated with
8903 a RAS as Comes_From_Source to get proper view switching when installing
8904 private declarations.
8905 Provite a placeholder nested package body along with the nested spec
8906 to have a place for Append_RACW_Bodies to generate the calling stubs
8907 and stream attributes.
8909 2007-04-06 Ed Schonberg <schonberg@adacore.com>
8910 Robert Dewar <dewar@adacore.com>
8912 * sem_ch8.adb (Has_Components): If the argument is an incomplete type
8913 that is a limited view, check the non-limited view if available.
8914 (Undefined): Refine error message for missing with of Text_IO
8915 (Find_Expanded_Name): Use Is_Known_Unit for more accurate error message
8916 to distinguish real missing with cases.
8917 Fix format of all missing with messages
8918 (Analyze_Subprogram_Renaming): Emit proper error message on illegal
8919 renaming as body when renamed entity is abstract.
8921 2007-04-06 Ed Schonberg <schonberg@adacore.com>
8922 Javier Miranda <miranda@adacore.com>
8924 * sem_type.ads, sem_type.adb (Has_Abstract_Interpretation): Make
8925 predicate recursive, to handle complex expressions on literals whose
8926 spurious ambiguity comes from the abstract interpretation of some
8928 (Interface_Present_In_Ancestor): Add support to concurrent record
8930 (Add_One_Interp,Disambiguate): Split Is_Abstract flag into
8931 Is_Abstract_Subprogram and Is_Abstract_Type.
8933 2007-04-06 Ed Schonberg <schonberg@adacore.com>
8934 Javier Miranda <miranda@adacore.com>
8936 * sem_util.ads, sem_util.adb (Object_Access_Level): If the object is a
8937 dereference of a local object R created as a reference to another
8938 object O, use the access level of O.
8939 (Matches_Prefixed_View_Profile): Use common predicate Conforming_Types,
8940 rather than local Same_Formal_Type, to check whether protected operation
8941 overrides an inherited one.
8942 (Same_Formal_Type): New predicate, used when matching signatures of
8943 overriding synchronized operations, to handle the case when a formal
8944 has a type that is a generic actual.
8945 (Is_Aliased_View): Replace check on E_Task_Type and E_Protected_Type by
8946 predicate Is_Concurrent_Type. This ensures supportin case of subtypes.
8947 (Needs_One_Actual): New predicate, for Ada 2005 use, to resolve
8948 syntactic ambiguities involving indexing of function calls that return
8950 (Abstract_Interface_List): New subprogram that returns the list of
8951 abstract interfaces associated with a concurrent type or a
8952 concurrent record type.
8953 (Interface_Present_In_Parent): New subprogram used to check if a
8954 given type or some of its parents implement a given interface.
8955 (Collect_Abstract_Interfaces): Add support for concurrent types
8956 with interface types.
8957 (Has_Abstract_Interfaces): Add support for concurrent types with
8959 (Is_Parent): New subprogram that determines whether E1 is a parent
8960 of E2. For a concurrent type its parent is the first element of its
8961 list of interface types; for other types this function provides the
8962 same result than Is_Ancestor.
8963 (Enclosing_Subprogram): Add test for N_Extended_Return_Statement.
8964 (Collect_Synchronized_Interfaces): Removed because the subprogram
8965 Collect_Abstract_Interfaces provides this functionality.
8966 (Collect_Abstract_Interfaces): Minor update to give support to
8967 concurrent types and thus avoid undesired code duplication.
8968 (Get_Subprogram_Entity): Handle entry calls.
8969 (May_Be_Lvalue): Include actuals that appear as in-out parameters in
8971 (Enter_Name): Do not give -gnatwh hiding warning for record component
8972 entities, they never result in hiding.
8974 2007-04-06 Ed Schonberg <schonberg@adacore.com>
8975 Robert Dewar <dewar@adacore.com>
8977 * sinfo.ads, sinfo.adb (Coextensions): New element list for allocators,
8978 to chain nested components that are allocators for access discriminants
8979 of the enclosing object.
8980 Add N_Push and N_Pop nodes
8981 New field Exception_Label added
8982 (Local_Raise_Statements): New field in N_Exception_Handler_Node
8983 (Local_Raise_Not_OK): New flag in N_Exception_Handler_Node
8984 (Is_Coextension): New flag for allocators, to mark allocators that
8985 correspond to access discriminants of dynamically allocated objects.
8986 (N_Block_Statement): Document the fact that the corresponding entity
8987 can be an E_Return_Statement.
8988 (Is_Coextension): New flag for allocators.
8989 Remove all code for DSP option
8991 * sprint.ads, sprint.adb: Display basic information for class_wide
8992 subtypes. Add handling of N_Push and N_Pop nodes
8994 2007-04-06 Arnaud Charlet <charlet@adacore.com>
8996 * s-tpobop.adb (Exceptional_Complete_Entry_Body): Undefer abortion
8997 before propagating exception.
8999 2007-04-06 Olivier Hainque <hainque@adacore.com>
9001 * tracebak.c (PC_ADJUST - ia64): -4 instead of -16, expected to yield
9002 an address always within the call instruction from a return address.
9004 2007-04-06 Olivier Hainque <hainque@adacore.com>
9005 Eric Botcazou <botcazou@adacore.com>
9007 * trans.c (call_to_gnu) <TYPE_RETURNS_BY_TARGET_PTR_P>: Return an
9008 expression with a COMPOUND_EXPR including the call instead of emitting
9009 the call directly here.
9010 (gnat_to_gnu) <N_Slice>: Do not return a non-constant low bound if the
9011 high bound is constant and the slice is empty. Tidy.
9012 (tree_transform, case N_Op_Not): Handle properly the case where the
9013 operation applies to a private type whose full view is a modular type.
9014 (Case_Statement_To_gnu): If an alternative is an E_Constant with an
9015 Address_Clause, use the associated Expression as the GNAT tree
9016 representing the choice value to ensure the corresponding GCC tree is
9018 (maybe_stabilize_reference): Stabilize COMPOUND_EXPRs as a whole
9019 instead of just the operands, as the base GCC stabilize_reference does.
9020 <CALL_EXPR>: New case. Directly stabilize the call if an lvalue is not
9021 requested; otherwise fail.
9022 (addressable_p) <COMPONENT_REF>: Do not test DECL_NONADDRESSABLE_P.
9024 2007-04-06 Thomas Quinot <quinot@adacore.com>
9026 * uintp.ads, uintp.adb (UI_Div_Rem): New subprogram, extending previous
9027 implementation of UI_Div.
9028 (UI_Div): Reimplement as a call to UI_Div_Rem.
9029 (UI_Rem): Take advantage of the fact that UI_Div_Rem provides the
9030 remainder, avoiding the cost of a multiplication and a subtraction.
9031 (UI_Modular_Inverse): Take advantage of the fact that UI_Div_Rem
9032 provides both quotient and remainder in a single computation.
9033 (UI_Modular_Exponentiation, UI_Modular_Inverse): New modular arithmetic
9035 (UI_Modular_Inverse): Add a note that the behaviour of this subprogram
9036 is undefined if the given n is not inversible.
9038 2007-04-06 Olivier Hainque <hainque@adacore.com>
9040 * utils2.c (known_alignment): Handle COMPOUND_EXPR, COND_EXPR and
9041 BIT_AND_EXPR. Handle also VIEW_CONVERT_EXPR, as the other conversion
9044 2007-04-06 Eric Botcazou <botcazou@adacore.com>
9045 Olivier Hainque <hainque@adacore.com>
9047 * utils.c (update_pointer_to): Make a copy of the couple of FIELD_DECLs
9048 when updating the contents of the old pointer to an unconstrained array.
9049 (end_subprog_body): Set error_gnat_node to Empty.
9050 (write_record_type_debug_info): Do not be unduly sparing with our bytes.
9051 (unchecked_convert): For subtype to base type conversions, require that
9052 the source be a subtype if it is an integer type.
9053 (builtin_decls): New global, vector of available builtin functions.
9054 (gnat_pushdecl): Add global builtin function declaration nodes to the
9056 (gnat_install_builtins): Adjust comments.
9057 (builtin_function): Set DECL_BUILTIN_CLASS and DECL_FUNCTION_CODE before
9058 calling gnat_pushdecl, so that it knows when it handed a builtin
9059 function declaration node.
9060 (builtin_decl_for): Search the builtin_decls list.
9062 2007-04-06 Eric Botcazou <botcazou@adacore.com>
9064 * s-stchop-vxworks.adb:
9065 (Stack_Check): Raise Storage_Error if the argument has wrapped around.
9067 2007-04-06 Robert Dewar <dewar@adacore.com>
9068 Arnaud Charlet <charlet@adacore.com>
9070 * a-diroro.ads: Inserted the pragma Unimplemented_Unit
9072 * bindgen.adb (Gen_Output_File_Ada): Generate pragma Ada_95 at start
9074 Add mention of -Sev (set initialize_scalars option from environment
9075 variable at run time) in gnatbind usage message.
9077 * elists.ads, elists.adb: (Append_Unique_Elmt): New procedure
9079 * fname-uf.ads: Minor comment fix
9081 * osint.ads: Change pragma Elaborate to Elaborate_All
9083 * par-load.adb: Add documentation.
9085 * sem_cat.ads, sem_cat.adb: Minor code reorganization
9087 * s-parint.ads (RCI_Locator) : Add 'Version' generic formal
9089 * s-secsta.ads: Extra comments
9091 * s-soflin.ads: Minor comment fixes
9093 * s-stratt.ads (Block_Stream_Ops_OK): Removed.
9095 * s-wchcon.ads: Minor comment addition
9097 * treepr.adb: Minor change in message
9098 (Print_Name,Print_Node): Make these debug printouts more robust: print
9099 "no such..." instead of crashing on bad input.
9101 2007-03-30 Rafael Ávila de Espíndola <espindola@google.com>
9103 * trans.c (Attribute_to_gnu): Use get_signed_or_unsigned_type
9104 instead of gnat_signed_or_unsigned_type.
9105 * utils.c (gnat_signed_or_unsigned_type): Remove.
9106 * misc.c (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove
9107 * gigi.h (gnat_signed_or_unsigned_type): Remove
9109 2007-03-09 Roger Sayle <roger@eyesopen.com>
9111 * cuintp.c (UI_To_gnu): Use fold_buildN calls instead of calling
9112 fold with the result of buildN.
9113 * decl.c (gnat_to_gnu_entity): Likewise.
9114 * trans.c (Attribute_to_gnu, gnat_to_gnu, emit_check): Likewise.
9115 * utils.c (finish_record_type, merge_sizes, max_size, convert):
9117 * utils2.c (gnat_truthvalue_conversion, compare_arrays,
9118 nonbinary_modular_operation, build_binary_op, build_unary_op,
9119 build_cond_expr): Likewise.
9121 * utils.c (convert): Use fold_build1 when casting values to void.
9122 * utils2.c (gnat_truthvalue_conversion): Use build_int_cst and
9123 fold_convert instead of convert when appropriate.
9125 2007-03-01 Brooks Moses <brooks.moses@codesourcery.com>
9127 * Make-lang.in: Add install-pdf target as copied from
9128 automake v1.10 rules.
9130 2007-02-28 Andreas Schwab <schwab@suse.de>
9132 * Make-lang.in (doc/gnat_ugn_unw.texi): Depend on
9133 $(gcc_docdir)/include/gcc-common.texi and gcc-vers.texi.
9134 (doc/gnat-style.info): Likewise.
9136 2007-02-26 Brooks Moses <brooks.moses@codesourcery.com>
9138 * gnat-style.texi: Standardize title page.
9139 * gnat_rm.texi: Likewise.
9140 * gnat_ugn.texi: Likewise.
9142 2007-02-25 Mark Mitchell <mark@codesourcery.com>
9144 * decl.c (annotate_value): Adjust for refactoring of tree_map
9147 2007-02-24 Mark Mitchell <mark@codesourcery.com>
9149 * decl.c (annotate_value): Adjust for refactoring of tree_map
9152 2007-02-21 Ed Schonberg <schonberg@adacore.com>
9155 * sem_ch3.adb (Create_Constrained_Components): for a subtype of an
9156 untagged derived type, add hidden components to keep discriminant
9157 layout consistent, when a given discriminant of the derived type
9158 constraints several discriminants of the parent type.
9160 2007-02-16 Eric Botcazou <ebotcazou@adacore.com>
9161 Sandra Loosemore <sandra@codesourcery.com>
9163 * trans.c (call_to_gnu): Use build_call_list instead of build3 to
9164 build the call expression.
9165 (gnat_stabilize_reference_1): Handle tcc_vl_exp.
9166 * utils.c (max_size) <tcc_exceptional>: Delete.
9167 <tcc_vl_exp>: New case.
9168 <tcc_expression>: Delete CALL_EXPR subcase.
9169 (build_global_cdtor): Use build_call_nary instead of build3.
9170 * utils2.c (build_call_1_expr): Likewise.
9171 (build_call_2_expr): Likewise.
9172 (build_call_0_expr): Likewise.
9173 (build_call_alloc_dealloc): Likewise.
9175 2007-02-07 Andreas Krebbel <krebbel1@de.ibm.com>
9177 * raise-gcc.c (get_region_description_for, get_call_site_action_for,
9178 get_action_description_for): Replace _Unwind_Word with _uleb128_t
9179 and _Unwind_SWord with _sleb128_t.
9181 2007-02-06 Paolo Bonzini <bonzini@gnu.org>
9183 * Make-lang.in (ada/decl.o): Add gt-ada-decl.h dependency.
9184 * decl.c: Include gt-ada-decl.h.
9185 (annotate_value_cache): New.
9186 (annotate_value): Use it instead of TREE_COMPLEXITY.
9188 2007-02-03 Kazu Hirata <kazu@codesourcery.com>
9190 * misc.c, utils2.c: Fix comment typos.
9192 2007-01-24 Roger Sayle <roger@eyesopen.com>
9194 * decl.c (gnat_to_gnu_entity): Use TREE_OVERFLOW instead of
9195 TREE_CONSTANT_OVERFLOW.
9196 (allocatable_size_p, annotate_value): Likewise.
9197 * trans.c (gnat_to_gnu): Likewise.
9198 * utils.c (unchecked_convert): Likewise.
9199 * utils2.c (build_simple_component_ref): Likewise.
9201 2007-01-23 Richard Guenther <rguenther@suse.de>
9204 * Make-lang.in: Replace invocations of gnatmake with $(GNATMAKE).
9205 (gnatboot2): Pass staged GNATMAKE instead of STAGE_PREFIX.
9206 (gnatboot3): Likewise.
9207 (GNATBIND): Do not define.
9208 * Makefile.in (GNATBIND): Do not define.
9210 2007-01-08 Richard Guenther <rguenther@suse.de>
9212 * cuintp.c (build_cst_from_int): Use built_int_cst_type.
9213 * trans.c (gnat_to_gnu): Likewise.
9217 Copyright (C) 2007 Free Software Foundation, Inc.
9219 Copying and distribution of this file, with or without modification,
9220 are permitted in any medium without royalty provided the copyright
9221 notice and this notice are preserved.