[AArch64] Remove simd_type
[official-gcc.git] / gcc / ada / ChangeLog-2007
blob30a63656eaa6580f28c0d647463b698d7b5f6f9f
1 2007-12-27  Samuel Tardieu  <sam@rfc1149.net>
3         PR ada/34553
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.
31         Update comments.
33         * sem_util.adb (Note_Possible_Modification): Add processinng for pragma
34         Unmodified.
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.
38         Add comment.
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
71         tree.
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
75         clearer.
77         * checks.adb (Remove_Checks): Use Traverse_Proc instead of
78         Traverse_Func, because the former already takes care of discarding the
79         result.
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
84         Discard
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
103         record subtypes.
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
126         mangled declaration
127         (P_Type_Declaration): Diagnose misuse of "abstract" in untagged record
128         declarations.
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
134         package is not known
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
140         ignored
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
159         access_to_constant.
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>
178         PR ada/34149
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
183         on such calls).
184         (Check_Controlling_Formals): Ada2005, access parameters can have
185         defaults.
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
192         global variable.
194 2007-12-19  Thomas Quinot  <quinot@adacore.com>
196         Part of PR ada/33688
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>
229         PR ada/34360
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
246         call.
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
255         no null.
256         (Create_Task): Set the processor affinity mask if information
257         is present.
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.
312         * ali.ads:
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
321         code.
322         (__gnat_map_signal, VxWorks): In kernel mode, map SIGILL to
323         Storage_Error.
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
340         warnings
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
350         * lib-xref.adb:
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
373         RTX systems.
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.
380         * mingw32.h:
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
385         supported by RTX.
386         (__gnat_ttyname): Return the empty string on Nucleus, just as
387         done on vxworks.
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
400         clearly correct.
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
416         Add comments
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
434         * par-prag.adb:
435         Add Implemented_By_Entry to the list of pragmas which do not require any
436         special processing.
437         (Favor_Top_Level): New pragma.
438         New pragma Fast_Math
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.
445         New pragma Fast_Math
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
451         New pragma Fast_Math
453         * par-ch10.adb (P_Subunit): Unconditional msg for missing ) after
454         subunit
455         New pragma Fast_Math
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
471         initialization).
472         New pragma Fast_Math
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.
477         New pragma Fast_Math
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
484         from Exp_Attr
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
493         Ada 95 mode
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
505         semicolon if missing
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>
515         * a-tifiio.adb:
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
526         Basic_Set_Convention
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
531         instead
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>
553         * opt.ads:
554         Indicate what flags are used by the Project Manager, gprbuild and
555         gprclean.
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
561         New pragma Fast_Math
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
578         unnest it).
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.
620         (Machine): 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
634         protected types.
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
653         abstract.
654         (Predef_Spec_Or_Body): For interface types generate abstract subprogram
655         declarations.
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
658         function.
659         Add also bodies of predefined primitives associated with synchronized
660         interfaces.
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
665         to Related_Type.
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
738         example.
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
754         assert fail
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
761         mismatches in gigi.
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
776         time value
778         * g-catiio.ads, g-catiio.adb (Value): Added support for more date
779         formats.
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
807         in 3.10.2 (27).
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
817         directories.
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
847         function
849 2007-12-13  Robert Dewar  <dewar@adacore.com>
851         * g-spipat.adb (Break): Fix accessibility error (vsn taking not null
852         access Vstring)
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.
870         Update comments.
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
881         pragma Pack.
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
887         string
888         (Must_Check_Configuration, Default_Language_Is_Ada): new flags in
889         prj.ads
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
893         file name.
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
921         separator.
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
924         as a parameter.
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
928         separate suffix.
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
933         language.
934         (Check_Library_Attributes): Only check Library_Dir if Library_Name is
935         not empty.
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
940         for the unit.
941         (Look_For_Sources): Put the unit exceptions in hash table
942         Unit_Exceptions
943         (Get_Unit_Exceptions): Give initial value No_Source to local variable
944         Other_Part to avoid exception when code is compiled with validity
945         checking.
946         (Get_Sources_From_File): Check that there is no directory information
947         in the file names.
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
954         Search_Directories.
955         (Search_Directories): Do not consider excluded sources
956         (Look_For_Sources): Populate Excluded_Sources_Htable before calling
957         Search_Directories.
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
990         taken into account.
991         (Load_Fail): Ditto.
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
1022         error report.
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
1042         stack usage.
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
1050         Freeze_Record_Type.
1051         (Process_Subtype): The subtype inherits the Known_To_Have_Preelab_Init
1052         flag.
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
1095         frozen.
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
1104         an access to one.
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
1153         to Related_Type.
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
1188         abstraction.
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>
1205         * s-tassta.adb:
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
1218         entry.
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
1237         shorthands
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
1274         * vxaddr2line.adb:
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,
1280         even on Windows
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.
1291         Document new units.
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.
1328         * s-osprim-vms.adb,
1329         a-calend-vms.adb: Remove pragma warning off and add pragma
1330         unreferenced.
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>
1381         PR ada/34366
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>
1392         PR ada/34361
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>
1404         PR ada/15805
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
1410         value.
1412         PR ada/21346
1413         * a-direct.adb (Compose): Containing_Directory can be an empty string.
1415 2007-12-07  Olivier Hainque  <hainque@adacore.com>
1417         PR ada/34173
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>
1443         PR ada/21489
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>
1450         PR ada/34287
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>
1465         PR ada/33722
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>
1476         PR ada/15804
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.
1480         PR ada/17318
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
1487         arguments.
1489         * sem-attr.ads (Attribute_Class_Array): Move to snames.ads.
1491         * snames.ads (Attribute_Class_Array): Moved from sem-attr.ads.
1493         PR ada/32792
1494         * sem_attr.adb (Analyze_Attribute, Attribute_Integer_Value clause):
1495         Signal an error when attribute argument is a fixed-point value of
1496         an unknown type.
1498         PR ada/22559
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>
1507         PR 34081/C++
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
1524         that of the type.
1525         (validate_size): Use the type size as the minimum size for a type with
1526         strict alignment.
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>
1554         PR ada/34098
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
1570         here to ...
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
1578         address expression.
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
1593         of 'Access.
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
1598         through renamings.
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
1604         local context.
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
1615         applicable.
1616         (Get_Socket_Option): Optlen formal of C_Getsockopt is of an anonymous
1617         access type.
1618         (Receive_Socket): Fromlen formal of C_Recvfrom is of an anonymous
1619         access type.
1621         * s-taasde.adb: Use 'Access instead of 'Unchecked_Access when
1622         applicable.
1623         (elaboration code): Timer_Queue lifetime is the one of the
1624         package.
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>
1653         PR bootstrap/33608
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
1660         for win32 targets.
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:
1691         Minor reformatting.
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
1714         value.
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
1717         to 0.
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
1767         MLib.Tgt.Specific.
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
1784         real one.
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
1794         (vx_stack_info.c).
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
1821         detected.
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
1845         declarations.
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
1872         one.
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
1889         field.
1890         (TB_Entry_For): Account for the PV/FP renaming.
1892         * s-traent-vms.ads (Traceback_Entry): Rename PV component into FP and
1893         add comment.
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
1905         interfaces.
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.
1916         Document -gnatw.o.
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
1922         on iVMS.
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.
1932         * gen-soccon.c:
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
1966         gnat_return_tree.
1967         (gnat_init_gcc_eh): Replaced gnat_eh_runtime_type with
1968         gnat_return_tree.
1969         (gnat_eh_runtime_type): Removed.
1970         (gnat_return_tree): New function.
1972 2007-10-08  Ben Elliston  <bje@au.ibm.com>
1974         PR ada/33454
1975         Revert:
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.
2029         * bindgen.adb:
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,
2076         where it belongs.
2078         * opt.ads: Move ASIS_Version_Number from Gnatvsn into Tree_IO.
2080         * rtsfind.adb (PCS_Version_Number): Move from Gnatvsn to Exp_Dist,
2081         where it belongs.
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>
2090         * a-tags.adb:
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.
2095         * a-tags.ads:
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
2104         as read-only.
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
2130         overlays.
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
2137         components.
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
2204         type.
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
2217         implementation.
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
2227         -gnatwbcef...)
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
2231         command line.
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
2297         Language_Config.
2298         Remove components Default_Language and Config in Project_Tree_Data,
2299         no longer used.
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
2337         Address_Taken.
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
2357         navigation.
2358         (Valid_Conversion): A tagged conversion is legal if both operands are
2359         tagged.
2361 2007-09-26  Robert Dewar  <dewar@adacore.com>
2363         * sem_warn.adb (Check_References): Catch more cases of unreferenced
2364         packages.
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>
2415         PR ada/26797
2416         PR ada/32407
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
2480         indicator
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
2499         longer needed.
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
2635         classes ("[]").
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
2654         return statement.
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
2672         been supplied.
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
2680         hidden.
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
2700         inserted node.
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
2709         x87 registers.
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:
2758         Likewise.
2760 2007-08-31  Vincent Celier  <celier@adacore.com>
2762         PR ada/4720
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
2770         * make.adb:  Ditto.
2771         (Compile_Sources): Make sure that sources that are "excluded" are not
2772         compiled.
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
2788         internal tags.
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
2812         explicitly raised.
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
2838         declarations.
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
2848         conversion.
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
2862         overflow.
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
2871         one.
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
2900         derived from it.
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
2909         entity flag.
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
2923         lines
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'
2949         option.
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
2963         NetBSD.
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
3032         and 'Read call.
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
3052         and entry barriers.
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
3080         makefiles
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
3088         its selector.
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
3109         13/2 and 14/2.
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
3115         exception case
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
3133         be wrong.
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
3137         literals.
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
3145         compiler.
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
3192         checks are handled.
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
3201         truncating.
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
3217         enclosing scope.
3218         (Expand_N_Type_Conversion): Test for the case of renamings of access
3219         parameters when deciding whether to apply a run-time accessibility
3220         check.
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
3248         to the formal.
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
3262         new itype.
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
3293         * gnat1drv.adb:
3294         Fix problem with suppressing warning messages from back end
3295         Handle setting of Static_Dispatch_Tables flag.
3297         * prepcomp.adb:
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
3308         serialization.
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
3334         added.
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
3355         parameters.
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
3431         an interpretation.
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
3444         operator.
3445         (Binary_Op_Interp_May_Be_Hidden): New routine.
3446         (Collect_Interps): Add value for flag May_Be_Hidden in initialization
3447         aggregate.
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
3451         compatible.
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
3503         itype.
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
3519         which is a string.
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
3531         gprbuild.
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
3541         gprbuild.
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.
3548         * prj-com.ads:
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
3571         next directory.
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
3588         in Ada 95.
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
3614         case.
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
3624         default
3625         New switch -gnatI to disable representation clauses
3626         Implement new pragma Implicit_Packing
3628         * usage.adb:
3629         Warning for non-local exception propagation now off by default
3630         Add warning for unchecked conversion of pointers wi different
3631         conventions.
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.
3645         * gnat_rm.texi:
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.
3681         Maximum alignment
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.
3693         PR ada/19037
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
3740         specified.
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
3768         non-static.
3769         Clean up function names.
3770         (Name_Modifies_Prefix): Rename to Name_Implies_Lvalue_Prefix. Clarify
3771         comment.
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
3791         types.
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
3810         parameter
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
3824         proper declaration.
3825         Improve warnings on redundant assignments
3826         (Is_Variable): Handle properly an implicit dereference of a prefixed
3827         function call.
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>
3840         * exp_aggr.ads,
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):
3876         New functions, thin
3877         binding to the VxWorks routines which have changed between VxWorks 5
3878         and 6.
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
3888         functions.
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
3899         procedure.
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
3907         clean.adb:
3908         (Clean_Library_Directory): If major/minor ids are supported, clean all
3909         library files.
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
3934         handler.
3935         (__gnat_map_signal for VxWorks): Map SIGSEGV to Storage_Error in RTP
3936         mode.
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
3981         generated spec.
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
3987         private child unit.
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>
4009         * a-tags.ads,
4010         a-tags.adb (Displace): Associate a message with the raised CE
4011         exception.
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
4015         spec.
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
4034         formal.
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
4046         * bindgen.adb:
4047         Fix comments in bindgen regarding consistency checks done in Bcheck:
4048         the checks are made across units within a partition, not across several
4049         partitions.
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
4086         formal
4088         * a-strunb.adb (Set_Unbounded_String): Avoid memory leak by freeing old
4089         value
4091         * a-textio.adb (Write): Remove an unnecessary IN OUT mode from
4093         * a-textio.ads: Reorder the standard input/output/error declarations
4094         for consistency.
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
4120         formal
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
4127         anymore.
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
4146         Pure).
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
4153         of Set_Item.
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
4163            T.Increment_Last;
4164            T.Table (T.Last) := Value;
4165         with a cleaner call to
4166            T.Append (Value);
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
4236         the rewritten node.
4237         (Find_Direct_Name): Add comment about Generate_Reference incorrectly
4238         setting the Referenced_As_LHS flag for entities that are implicitly
4239         dereferenced.
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
4255         coextension.
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
4282         valid value.
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
4306         switches.
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
4324         directory.
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
4327         to file names.
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
4353         writing the line.
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
4384         type.
4386 2007-08-14  Pascal Obry  <obry@adacore.com>
4388         * s-fileio.adb (Is_Open): Add check for usability of the underlying
4389         file stream.
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
4395         the same object.
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
4415         parameter.
4417         * s-tassta.adb (Task_Wrapper): Increased value of the small overflow
4418         guard to 12K.
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
4450         types.
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
4471         Windows XP.
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
4486         with_clauses.
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
4495         warnings.
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.
4517         Update dependencies
4519 2007-08-14  Pascal Obry  <obry@adacore.com>
4521         * mdll-fil.adb, * mdll.adb: Implement a more consistent libraries
4522         naming scheme.
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
4574         alias_set_type.
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
4608         for the offset.
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
4651         files.
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
4664         directly instead.
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>
4719         * g-expect-vms.adb:
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
4723         invalid.
4724         (Pattern_Matcher_Access): Is now a general access type to be able to
4725         use aliased string.
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
4743         margin case).
4744         ("+" (Time, Duration)): Reorder code. Remove the declaration of constant
4745         Ada_High_And_Leaps.
4746         ("-" (Time, Duration)): Reorder code. Remove the declaration of constant
4747         Ada_High_And_Leaps.
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
4758         flag Leap_Support.
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
4763         flag Is_Ada_05.
4764         (Time_Of): Use parameter associations for better readability. Integrate
4765         flag Is_Ada_05.
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
4787         than needed.
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.
4791         Update comments.
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
4806         Succeeded = True.
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
4810         of Self_Id earlier.
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
4842         2**32-1.
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
4879         its C counterpart.
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
4909         packed array type.
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
4932         type.
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
4937         expanded.
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
4968         with.
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
5002         code.
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
5005         node.
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
5011         cleanup to it.
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
5020         vars.
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):
5025         New cases.
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
5031         VIEW_CONVERT_EXPRs.
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
5056         to 0 for Ada.
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
5067         declarations.
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:
5079         New files.
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
5090         for Errout
5092         * errout.adb: New Finalize/Compilation_Errors/Output_Messages
5093         implementation
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
5102         Errout.
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)
5109         check.
5110         (Raise_Current_Excep): Call Debug_Raise_Exception just before
5111         propagation starts, to let debuggers know about the event in a reliable
5112         fashion.
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
5151         for this type.
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,
5167         ali.ads, ali.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
5172         messages.
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
5175         here.
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
5187         instead of 'Size.
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
5194         the package.
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.
5217         (Set_OSD): Removed.
5218         (Set_Signature): Removed.
5219         (Set_SSD): Removed.
5220         (Set_Tagged_Kind): Removed.
5221         (Typeinfo_Ptr): Removed.
5222         (TSD): 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
5327         on entry.
5329 2007-06-06  Robert Dewar  <dewar@adacore.com>
5331         * a-tienio.adb (Get): Adjust buffer size to accomodate one extra
5332         character
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
5339         string To.
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
5356         main variant.
5357         (build_call_raise): Handle converting exception into goto; support new
5358         argument KIND.
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
5376         needed.
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
5380         used.
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
5392         in the partition.
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
5411         13.1(22)).
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
5462         interface type.
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.
5466         Update comments.
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
5490         a coextension.
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
5494         call.
5495         (Complete_Object_Operation): Diagnose properly an object that is not
5496         aliased when the corresponding controlling formal is an access
5497         parameter.
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-
5529         mitive.
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.
5570         Add rep clauses.
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
5624         _disp_get_task_id.
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
5632         known to front end.
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
5670         incomplete type.
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
5699         place.
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
5721         type.
5722         (Build_Initialization_Call): When available, replace a call to the
5723         initialization procedure with a copy of the equivalent static aggregate
5724         for the type.
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
5745         no run-time mode.
5746         (Freeze_Record_Type): Remove code associated with creation of dispatch
5747         table.
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
5751         run-time mode
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
5758         cleanup the code.
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_
5776         Finalization.
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
5781         root nodes.
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
5785         the outer object.
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
5793         "Elists.Node".
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
5801         was wrong.
5802         (Apply_Accessibility_Check): Handle allocated objects initialized in
5803         place.
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
5857         object.
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
5875         the type is frozen.
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
5879         on expanded code.
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
5882         Insert_After*.
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
5891         list.
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
5911         controlling result.
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
5927         operation.
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
5949         behavior.
5950         (Copy_Result_Type): Utility to construct a parameter and result profile
5951         for protected functions whose return type is an anonymous access to
5952         subprogram.
5953         (Build_Protected_Sub_Spec and Expand_Access_Protected_Subprogram_Type):
5954         call the above.
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
5971         types.
5972         Document the contents of DW_AT_producer in the GNAT Vendor extensions to
5973         DWARF2/3.
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
5990         negative literal
5991         (Do_Divide_Fixed_Fixed): Add comments to indicate Frac is always
5992         positive
5993         (Do_Divide_Fixed_Universal): Handle case of negative Frac.
5994         (Do_Multiply_Fixed_Fixed): Add coments to indicate Frac is always
5995         positive
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
6013         interface type.
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
6022         underlying size.
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
6055         restriction
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
6069         initialization.
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
6094         are interface type.
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
6117         objects.
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
6188         return objects.
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
6213         memory in traces.
6214         (Allocate): Compute Storage_Address using Integer_Address, not
6215         Storage_Offset, because the range of Storage_Offset may not be large
6216         enough.
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
6233         switch -P
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=
6245         has been specified
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
6252         targets.
6254 2007-06-06  Vincent Celier  <celier@adacore.com>
6256         * gnatls.adb:
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
6277          file.
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
6296         extending projects.
6297         (Record_Ada_Source): Record a source that has been locally removed in an
6298         imported project.
6300         * symbols.ads (Policy): New policy Direct
6302         * symbols-vms.adb (Initialize): Take new policy Direct in case
6303         statement
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
6334         13.3(14)).
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
6338         by g-socthi.
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
6346         Task_Safe_NetDB.
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.
6361         (Java_VM): Removed.
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
6379         one instead.
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
6383         linking.
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
6413         GCC 3.4.
6415 2007-06-06  Robert Dewar  <dewar@adacore.com>
6417         * layout.ads, layout.adb (Adjust_Esize_Alignment): Move spec to package
6418         spec from body
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
6427         its descendants.
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
6432         interfaces.
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
6472         ALI_Name.
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
6485         spec to the body.
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
6495         files.
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
6510         based on signals.
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
6521         longer of MLib.Tgt.
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
6542         in chunks.
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
6570         coextensions.
6571         (Add_Interface_Tag_Component): When looking for components that may be
6572         secondary tags, ignore pragmas that can appear within a record
6573         declaration.
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
6576         extension.
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
6581         to Void.
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
6590         in an open scope.
6591         (Analyze_Subtype_Declaration): Handle properly subtypes of
6592         synchronized types that are tagged, and that may appear as generic
6593         actuals.
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
6600         in this routine).
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
6606         compile time.
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
6610         interfaces.
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
6618         field.
6619         (Add_Interface_Tag_Components.Add_Tag): Set the value of the attribute
6620         Related_Interface.
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
6649         not null indicator.
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
6654         declaration.
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,
6667         defaulted to False.
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
6674         Libgnarl_Needed
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
6688         project path.
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
6728         and the full-view.
6729         (Analyze_With_Clause): Improve placement of flag for case of
6730         unimplemented unit.
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
6745         target run-time.
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
6750         semantic checks.
6751         (Analyze_Protected_Type): Rearrange and simplify code for testing that a
6752         protected type does not implement a task interface or a nonlimited
6753         interface.
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>
6793         * sem_ch5.adb
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
6797         character literal.
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
6811         chain.
6812         (Propagate_Coextensions): Remove the test for the root being an
6813         allocator.
6814         (Resolve_Allocator): Add condition to ensure that all future decoration
6815         occurs on an allocator node. Add processing and cleanup for static
6816         coextensions.
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
6823         character literals.
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
6848         interface type.
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
6893         tables.
6894         (Add_Global_Declaration): New procedure
6895         (Abstract_Interface_List): Handle properly the case of a subtype of a
6896         private extension.
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
6900         type.
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
6912         elaboration model
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
6921         the return value.
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
6941         fashion.
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
6955         lock, if needed.
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
6965         needed.
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
6999         terminating
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
7030         exceptions.
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
7039         debugging use.
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
7051         "Overflow_Guard".
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.
7061         Added comments.
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
7077         basis.
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
7098         function.
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
7105         Ada 2005.
7106         (Containing_Directory): On Windows, keep at least one '/' or '\' after a
7107         drive letter.
7108         (Containing_Directory): Raise Use_Error when the directory is a root
7109         directory.
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
7122         back-ends.
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
7128         switches -R and -Z
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
7161         is.
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
7175         -gnatw.C)
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
7184         gnatprep.
7185         Document gnatw.x and gnatw.X warning flags
7186         Mention -Winline switch to activate warnings when back-end inlining is
7187         ineffective.
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
7216         comments.
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
7228         to.
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
7257         Push_Scope.
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
7275         code.
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.
7290         (Write_Unit): Idem.
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>
7301         PR ada/31660
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>
7316         PR ada/31576
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
7372         access types.
7373         Update documentation.
7374         Minor rewording.
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
7405         is raised.
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
7424         for local raise
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
7433         to No_Elist.
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
7454         to No_List.
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
7470         (UNIX case).
7471         (Read_Signalling_Fd, Write_Signalling_Fd, Create_Signalling_Fds): New
7472         subprograms.
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):
7498         New subprograms.
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
7524         (UTC Offset).
7525         If timezone is obviously incorrect (outside of -14 hours .. 14 hours),
7526         set off to 0.
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
7547         Ada.Calendar.
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>
7554         * adaint.c:
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
7560         argv[0] expansion.
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
7567         change.
7568         (__gnat_gmem_a2l_initialize): Resolve exename.
7569         (__gnat_convert_addresses): Use exename as the convert_addresses
7570         file_name argument.
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
7575         convert_addresses.
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
7586         on Windows.
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
7604         encoding value.
7605         (__gnat_freopen): Idem.
7606         (__gnat_current_time): New function (wrapper for time(3) standard C
7607         function).
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
7618         not on a natural.
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
7625         created.
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
7639         moved to a-tags.ads
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
7643         "Ifaces_Table".
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.
7660         (Set_TSD): 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
7670         type.
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
7689         here.
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
7702         back end.
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 =
7723         null".
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
7728         code in Exp_Ch4.
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
7740         in prefix form.
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"
7761         work.
7762         (New_Node, New_Entity): Call the global New_Node_Debugging_Output.
7763         Add Elist1 function
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
7771         types.
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
7778         run-time check.
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
7784         and made constant.
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
7788         carry any.
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
7799         Standard_String.
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
7817         too.
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
7820         naked type node.
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
7839         type.
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
7871         involving tasks.
7872         (BIP_Formal_Suffix): Add new enumeration literals to complete the case
7873         statement.
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
7915         implemented".
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
7920         errors.
7921         (Check_Overriding_Indicator): Add code to check overriding of predefined
7922         operators.
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
8025         to private 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
8030         references.
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
8036         source locations.
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
8091         is specified.
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
8095         directly.
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>
8103         * exp_aggr.adb:
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
8106         static components.
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
8111         enclosing object.
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
8117         if required.
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
8140         of the master_id.
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
8144         Expand_N_Allocator.
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
8166         restriction.
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
8170         derivations.
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
8179         with CW_Membership.
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_
8188         Address.
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_
8196         Prims.
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
8201         associations.
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
8269         finalization list.
8270         (Build_Activation_Chain_Entity): Build the chain entity for extended
8271         return statements.
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
8279         formals.
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
8299         Is_RAS.
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
8306         spec declarations.
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>
8374         * exp_strm.adb
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
8392         assert.
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
8412         string.
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
8427         to copy in.
8429 2007-04-06  Thomas Quinot  <quinot@adacore.com>
8431         * g-md5.ads, g-md5.adb (Digest): Fix off-by-one error in padding
8432         computation.
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
8444         files.
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
8466          value of Cargs.
8467         (Process_Argument): Set Cargs when processing qualifiers for GNAT
8468         COMPILE
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.
8487         (freopen): Idem.
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
8501         for the conversion.
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.
8507         (freopen): Idem.
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
8524         Add GNAT.SHA1
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:
8539         New files.
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
8556         pointer types.
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
8568         above.
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
8583         expander.
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
8593         it is now obsolete.
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.
8599         Document -gnatyA
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
8612         verbose mode
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
8618         verbose mode.
8619         (Gcc): Do not display all the object files if not in verbose mode, only
8620         the first one.
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
8651         of END RECORD
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
8676         with tagged types.
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
8683         Compile_Time_Error
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
8691         subprogram name.
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
8705         things in general.
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
8717         variables.
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
8723         package.
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
8727         null.
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
8731         retrieved.
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
8740         versions of GNAT.
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):
8760         New procedure.
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
8786         a package renaming.
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
8801         to them.
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
8808         spurious errors.
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
8819         mode.
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
8844         the stack as well.
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)
8857         with that name.
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
8879         is not classwide.
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
8927         subexpression.
8928         (Interface_Present_In_Ancestor): Add support to concurrent record
8929         types.
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
8949         arrays.
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
8958         interface types.
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
8970         entry calls.
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
9017         of the proper kind.
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
9034         functions for uint.
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
9042         opcodes.
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
9055         builtin_decls list.
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
9073         of files
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):
9116         Likewise.
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
9145         hierarchy.
9147 2007-02-24  Mark Mitchell  <mark@codesourcery.com>
9149         * decl.c (annotate_value): Adjust for refactoring of tree_map
9150         hierarchy.
9152 2007-02-21  Ed Schonberg  <schonberg@adacore.com>
9154         PR ada/18819
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>
9203         PR bootstrap/30541
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.