OSDN Git Service

ef55b792f87127e317f8bb443cc4ee6b6c50a268
[pf3gnuchains/gcc-fork.git] / gcc / ada / ChangeLog
1 2007-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2
3         PR ada/31660
4         * ada-tree.h (lang_tree_node): Fix typo in chain_next.
5
6 2007-04-21  Jan Hubicka  <jh@suse.cz>
7
8         * misc.c (gnat_expand_body): Don't call target for destructors,
9         avoid redundant check on syntax errors.
10
11 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12
13         * ada-tree.h (lang_tree_node): Use GENERIC_NEXT
14         instead of checking GIMPLE_STMT_P in chain_next.
15
16 2007-04-17  Andreas Krebbel  <krebbel1@de.ibm.com>
17
18         PR ada/31576
19         * system-linux-alpha.ads: Disable constant condition warning for the
20         Default_Bit_Order variable.
21         * system-linux-s390.ads: Likewise.
22         * system-linux-s390x.ads: Likewise.
23         * system-linux-sparc.ads: Likewise.
24
25 2007-04-06  Javier Miranda  <miranda@adacore.com>
26             Matt Heaney  <heaney@adacore.com>
27             Robert Dewar  <dewar@adacore.com>
28
29         a-coprnu.ads, a-cohata.ads, a-chtgop.ads, a-chtgop.adb, a-cgcaso.ads,
30         a-cgarso.ads, a-secain.ads, a-slcain.ads, a-shcain.ads, a-chtgke.ads,
31         a-chtgke.ads, a-coprnu.ads, a-contai.ads, a-chtgke.ads, a-chtgke.adb,
32         a-stwiha.ads, a-strhas.ads, a-lfztio.ads, a-liztio.ads, a-llfzti.ads,
33         a-llizti.ads, a-sfztio.ads, a-siztio.ads, a-ssizti.ads, a-stzfix.ads,
34         a-stzhas.ads, a-szuzha.ads, a-tiunio.ads, a-wwunio.ads, a-ztcoio.ads,
35         a-ztinio.ads, a-zttest.ads, a-zzunio.ads, a-astaco.ads, a-charac.ads,
36         a-chlat1.ads, ada.ads, a-dynpri.ads, a-flteio.ads, a-fwteio.ads,
37         a-inteio.ads, a-intnam.ads, a-ioexce.ads, a-iwteio.ads, a-lfteio.ads,
38         a-lfwtio.ads, a-liteio.ads, a-liwtio.ads, a-llftio.ads, a-llfwti.ads,
39         a-llitio.ads, a-lliwti.ads, a-ncelfu.ads, a-ngcefu.ads, a-ngelfu.ads,
40         a-nlcefu.ads, a-nlcoty.ads, a-nlelfu.ads, a-nllcef.ads, a-nllcty.ads,
41         a-nllefu.ads, a-nscefu.ads, a-nscoty.ads, a-nselfu.ads, a-nucoty.ads,
42         a-nuelfu.ads, a-numeri.ads, a-sfteio.ads, a-sfwtio.ads, a-siteio.ads,
43         a-siwtio.ads, a-ssitio.ads, a-ssiwti.ads, a-storio.ads, a-strfix.ads,
44         a-string.ads, a-stwifi.ads, a-titest.ads, a-unccon.ads, a-uncdea.ads,
45         a-wtcoio.ads, a-wtinio.ads, a-wttest.ads, calendar.ads, directio.ads,
46         i-c.ads, ioexcept.ads, machcode.ads, sequenio.ads, text_io.ads,
47         unchconv.ads, unchdeal.ads, a-widcha.ads, a-zchara.ads, a-stboha.ads,
48         a-stfiha.ads, a-coteio.ads, a-envvar.ads, a-lcteio.ads, a-llctio.ads,
49         a-scteio.ads, a-swbwha.ads, a-swfwha.ads, a-szbzha.ads, a-szfzha.ads,
50         a-tiboio.ads, a-wwboio.ads, a-zzboio.ads, a-dispat.ads, a-tgdico.ads,
51         expander.adb, g-socket.ads, par-labl.adb, sinput-c.adb, s-tarest.ads,
52         s-stchop.ads, g-expect-vms.adb, s-taprop-lynxos.adb,
53         s-taprop-tru64.adb, s-taprop-irix.adb,
54         s-taprop-hpux-dce.adb, s-traceb-hpux.adb,
55         s-taprop-linux.adb, s-taprop-dummy.adb, s-osprim-unix.adb,
56         s-osprim-solaris.adb, s-taprop-solaris.adb, s-taprop-vms.adb,
57         s-osprim-mingw.adb, s-taprop-mingw.adb, s-osprim-posix.adb, 
58         s-taprop-posix.adb, a-exexpr-gcc.adb, a-ststio.adb, a-ststio.ads, 
59         a-textio.adb, a-textio.ads, a-tideau.adb, a-tideau.ads, a-witeio.adb, 
60         a-witeio.ads, a-wtdeau.adb, a-wtdeau.ads, g-calend.adb, g-calend.ads, 
61         g-dirope.adb, g-expect.ads, gnatchop.adb, g-spipat.adb, g-spipat.ads, 
62         s-direio.adb, s-direio.ads, s-fatgen.adb, s-fatgen.ads, s-parint.adb, 
63         s-sequio.adb, s-sequio.ads, s-taprop.ads, s-valdec.adb, s-valdec.ads, 
64         s-valint.adb, s-valint.ads, s-vallld.adb, s-vallld.ads, s-vallli.adb, 
65         s-vallli.ads, s-valllu.adb, s-valllu.ads, s-valrea.adb, s-valrea.ads, 
66         s-valuns.adb, s-valuns.ads, s-valuti.adb, s-valuti.ads, xref_lib.adb, 
67         s-stchop.adb, i-vxwork-x86.ads, a-crbtgo.ads, a-crbtgo.adb, 
68         a-coorse.ads, a-coorse.adb, a-cohama.ads, a-cohama.adb, a-ciorse.ads, 
69         a-ciorse.adb, a-cihama.ads, a-cihama.adb, a-chtgop.ads, a-chtgop.ads, 
70         a-coormu.adb, a-ciormu.adb, a-cihase.adb, a-cihase.ads, a-cohase.adb, 
71         a-cohase.ads, a-swuwha.ads, a-ciormu.ads, a-coormu.ads, a-rbtgso.ads,
72         a-stunha.ads, a-ciorma.adb, a-coorma.adb, a-ztdeau.adb, a-ztdeau.ads, 
73         a-ztexio.adb, a-ztexio.ads: Addition of null-exclusion to anonymous
74         access types.
75         Update documentation.
76         Minor rewording.
77
78 2007-04-06  Robert Dewar  <dewar@adacore.com>
79
80         * system-linux-ia64.ads, system-freebsd-x86.ads, system-lynxos-ppc.ads,
81         system-lynxos-x86.ads, system-linux-x86_64.ads, system-tru64.ads,
82         system-vxworks-sparcv9.ads, system-solaris-x86.ads, system-irix-o32.ads,
83         system-irix-n32.ads, system-hpux.ads, system-vxworks-m68k.ads,
84         system-linux-x86.ads, system-vxworks-mips.ads, system-interix.ads,
85         system-solaris-sparc.ads, system-solaris-sparcv9.ads, system-vms.ads,
86         system-mingw.ads, system-vms-zcx.ads, system-vxworks-ppc.ads,
87         system-vxworks-alpha.ads, system-vms_64.ads, system-darwin-ppc.ads,
88         system-vxworks-x86.ads, system-linux-ppc.ads, system-linux-hppa.ads,
89         system-hpux-ia64.ads, targparm.adb,
90         targparm.ads (Functions_Return_By_DSP_On_Target): Removed
91
92         * system.ads: Move Functions_Return_By_DSP to obsolete section,
93         kept for bootstrap purposes only.
94
95 2007-04-06  Arnaud Charlet  <charlet@adacore.com>
96
97         * s-osinte-lynxos-3.ads, s-osinte-hpux.ads, s-osinte-solaris-posix.ads,
98         s-osinte-freebsd.ads, s-osinte-aix.ads, s-osinte-darwin.ads,
99         s-taprop-posix.adb (Create_Task): Fix handling of Task_Info.
100         (PTHREAD_SCOPE_PROCESS, PTHREAD_SCOPE_SYSTEM): New constants.
101
102 2007-04-06  Robert Dewar  <dewar@adacore.com>
103
104         * a-except.adb, a-except.ads, a-except-2005.ads, a-except-2005.adb
105         (Local_Raise): New dummy procedure called when a raise is converted
106         to a local goto. Used for debugger to detect that the exception
107         is raised.
108
109         * debug.adb: Document new d.g flag (expand local raise statements to
110         gotos even if pragma Restriction (No_Exception_Propagation) is not set)
111
112         * exp_sel.adb: Use Make_Implicit_Exception_Handler
113
114         * exp_ch11.adb (Expand_Exception_Handlers): Use new flag -gnatw.x to
115         suppress warnings for unused handlers.
116         (Warn_If_No_Propagation):  Use new flag -gnatw.x to suppress
117         warnings for raise statements not handled locally.
118         (Get_RT_Exception_Entity): New function
119         (Get_Local_Call_Entity): New function
120         (Find_Local_Handler): New function
121         (Warn_If_No_Propagation): New procedure
122         (Expand_At_End_Handler): Call Make_Implicit_Handler
123         (Expand_Exception_Handlers): Major additions to deal with local handlers
124         (Expand_N_Raise_Constraint_Error, Expand_N_Raise_Program_Error,
125         Expand_N_Raise_Storage_Error, (Expand_N_Raise_Statement): Add handling
126         for local raise
127
128         * exp_ch11.ads (Get_RT_Exception_Entity): New function
129         (Get_Local_Call_Entity): New function
130
131         * gnatbind.adb (Restriction_List): Add No_Exception_Propagation to list
132         of restrictions that the binder will never suggest adding.
133
134         * par-ch11.adb (P_Exception_Handler): Set Local_Raise_Statements field
135         to No_Elist.
136
137         * restrict.adb (Check_Restricted_Unit): GNAT.Current_Exception may not
138         be with'ed in the presence of pragma Restriction
139         (No_Exception_Propagation).
140
141         * sem.adb (Analyze): Add entries for N_Push and N_Pop nodes
142
143         * sem_ch11.adb (Analyze_Exception_Handler): If there is a choice
144         parameter, then the handler is not a suitable target for a local raise,
145         and this is a violation of restriction No_Exception_Propagation.
146         (Analyze_Handled_Statements): Analyze choice parameters in exception
147         handlers before analyzing statement sequence (needed for proper
148         detection of local raise statements).
149         (Analyze_Raise_Statement): Reraise statement is a violation of the
150         No_Exception_Propagation restriction.
151
152         * s-rident.ads: Add new restriction No_Exception_Propagation
153
154         * tbuild.ads, tbuild.adb (Make_Implicit_Exception_Handler): New
155         function, like Make_Exception_Handler but sets Local_Raise_Statements
156         to No_List.
157         (Add_Unique_Serial_Number): Deal with case where this is called during
158         processing of configuration pragmas.
159
160 2007-04-06  Thomas Quinot  <quinot@adacore.com>
161             Pat Rogers  <rogers@adacore.com>
162             Pascal Obry  <obry@adacore.com>
163
164         * g-stsifd-sockets.adb: New file.
165
166         * g-socthi.ads, g-socket.adb, g-socthi-vxworks.adb,
167         g-socthi-vxworks.ads, g-socthi-mingw.ads, g-socthi-vms.ads,
168         g-socthi-vms.adb: Move signalling
169         fd management to a nested package, so that they can conveniently be
170         moved to a subunit that is shared across Windows, VMS, and VxWorks
171         (Ada implementation) or completed with imported bodies from socket.c
172         (UNIX case).
173         (Read_Signalling_Fd, Write_Signalling_Fd, Create_Signalling_Fds): New
174         subprograms.
175         (Check_Selector): Use Read_Signalling_Fd to read and discard data from
176         the signalling file descriptor.
177         (Abort_Selector): Use Write_Signalling_Fd to write dummy data to the
178         signalling file descriptor.
179         (Create_Selector): Use new C-imported subprogram Create_Signalling_Fds
180         instead of creating a pair of sockets for signalling here.
181
182         * g-socthi.adb: Ditto.
183         Set the runtime process to ignore SIGPIPEs on platforms that support
184         neither SO_NOSIGPIPE nor MSG_NOSIGNAL functionality.
185
186         * g-socthi-mingw.adb: Ditto.
187         (WS_Version): Use Windows 2.2.
188         Use Winsock 2.2 (instead of 1.1) for the GNAT.Socket API.
189
190         * g-soliop-mingw.ads: Link with ws2_32 for Windows 2.x support.
191         Use Winsock 2.2 (instead of 1.1) for the GNAT.Socket API.
192
193         * Makefile.in: New libgnat pair g-stsifd.adb<g-stsifd-sockets.adb.
194         added GNAT byte swapping facility
195         Update FreeBSD THREADSLIB from -lc_r to -lpthread, for FreeBSD 6.
196
197         * g-bytswa.adb, g-bytswa-x86.adb, g-bytswa.ads: New files.
198
199         * socket.c (__gnat_read_signalling_fd, __gnat_write_controlling_fd):
200         New subprograms.
201         (__gnat_create_signalling_fds): New subprogram.
202         Set the runtime process to ignore SIGPIPEs on platforms that support
203         neither SO_NOSIGPIPE nor MSG_NOSIGNAL functionality.
204
205 2007-04-06  Hristian Kirtchev  <kirtchev@adacore.com>
206             Vincent Celier  <celier@adacore.com>
207
208         * a-calend-vms.ads, a-calend.ads, a-calend.adb, a-calend-vms.adb:
209         New version of Ada.Calendar which supports the new upper bound of Ada
210         time (2399-12-31 86_399.999999999).
211         The following modifications have been made to the package:
212          - New representation of time as count of nanoseconds since the start of
213            Ada time (1901-1-1 0.0).
214          - Target independent Split and Time_Of routines which service both
215            Ada 95 and Ada 2005 code.
216          - Target independent interface to the Ada 2005 children of Calendar.
217          - Integrated leap seconds into Ada 95 and Ada 2005 mode.
218          - Handling of non-leap centenial years.
219          - Updated clock function.
220          - Updated arithmetic and comparison operators.
221
222         * a-caldel.adb (To_Duration): Add call to target independent routine in
223         Ada.Calendar to handle the conversion of time to duration.
224
225         * sysdep.c (__gnat_localtime_tzoff): Test timezone before setting off
226         (UTC Offset).
227         If timezone is obviously incorrect (outside of -14 hours .. 14 hours),
228         set off to 0.
229         (__gnat_localtime_tzoff for Lynx and VxWorks): Even though these
230         targets do not have a natural time zone, GMT is used as a default.
231         (__gnat_get_task_options): New.
232
233         * a-direct.adb (Modification_Time): Add with and use clauses for
234         Ada.Calendar and Ada.
235         Calendar.Formatting. Remove with clause for Ada.Unchecked_Conversion
236         since it is no longer needed.
237         (Duration_To_Time): Removed.
238         (OS_Time_To_Long_Integer): Removed.
239         (Modification_Time): Rewritten to use Ada.Calendar and Ada.Calendar.
240         Formatting Time_Of routines which automatically handle time zones,
241         buffer periods and leap seconds.
242
243         * a-calari.ads, a-calari.adb ("+", "-", Difference): Add calls to
244         target independent routines in Ada.Calendar.
245
246         * a-calfor.ads, a-calfor.adb: 
247         Code cleanup and addition of validity checks in various routines.
248         (Day_Of_Week, Split, Time_Of): Add call to target independent routine in
249         Ada.Calendar.
250
251         * a-catizo.ads, a-catizo.adb (UTC_Time_Offset): Add call to target
252         independent routine in Ada.Calendar.
253
254 2007-04-06  Olivier Hainque  <hainque@adacore.com>
255
256         * adaint.c: 
257         (convert_addresses): Adjust prototype and dummy definition to expect an
258          extra file_name argument.
259
260         * gmem.c (__gnat_convert_addresses): Wrapper to convert_addresses,
261         filling the now expected file_name argument with the appropriate
262         argv[0] expansion.
263         (__gnat_gmem_a2l_initialize, __gnat_gmem_read_next_frame): Use it.
264         (tracebk): Array of void * instead of char *, corresponding to what
265          convert_addresses expects.
266         (exename): New static global, to hold the executable file name to be
267         used in all convert_addresses invocations.
268         (gmem_read_backtrace, __gnat_gmem_symbolic): Account for tracebk type
269         change.
270         (__gnat_gmem_a2l_initialize): Resolve exename.
271         (__gnat_convert_addresses): Use exename as the convert_addresses
272         file_name argument.
273
274         * g-trasym.adb (Symbolic_Traceback): Adjust signature of imported
275         "convert_addresses", now expecting a filename argument. Import the
276         necessary entities to compute the filename to use and pass it to
277         convert_addresses.
278
279 2007-04-06  Matt Gingell  <gingell@adacore.com>
280
281         * system-aix.ads: Back out previous change.
282         (Functions_Return_By_DSP): Removed
283
284 2007-04-06  Pascal Obry  <obry@adacore.com>
285
286         * s-osprim-mingw.adb (Timed_Delay): Use the right clock (standard one
287         or the monotonic used by Ada.Real_Time) to compute the sleep duration
288         on Windows.
289
290 2007-04-06  Jose Ruiz  <ruiz@adacore.com>
291
292         * s-osinte-vxworks.ads, s-osinte-vxworks.adb (VX_FP_TASK): Remove this
293         function. Its value changes in different VxWorks versions, and it is
294         now handled by the function __gnat_get_task_options.
295
296         * s-taprop-vxworks.adb (Create_Task): Call the function
297         __gnat_get_task_options to get the required options for creating a task.
298
299 2007-04-06  Pascal Obry  <obry@adacore.com>
300             Thomas Quinot  <quinot@adacore.com>
301
302         * adaint.c: Replace all occurences of S2WS to S2WSU (Unicode) when
303         dealing with filename.
304         (__gnat_fopen): Call the proper macro (8bits or UTF8) to convert the
305         filename from a standard string to a wide-string depending on the
306         encoding value.
307         (__gnat_freopen): Idem.
308         (__gnat_current_time): New function (wrapper for time(3) standard C
309         function).
310
311         * g-os_lib.ads (Current_Time): New function. Returns the current
312         system time as an OS_Time value.
313
314         * s-osprim.ads (Clock): Add more precise definition of UNIX epoch.
315         (Monotonic_Clock): Same.
316
317 2007-04-06  Quentin Ochem  <ochem@adacore.com>
318
319         * ali.ads, ali.adb (Get_Nat): Raise an exception if the file cursor is
320         not on a natural.
321         (Scan_ALI): Cancel the xref line if there has been a reading ALI error.
322
323 2007-04-06  Jose Ruiz  <ruiz@adacore.com>
324
325         * a-retide.adb: Add elaboration code to ensure that the tasking run
326         time is initialized when using delay operations even when no task is
327         created.
328
329 2007-04-06  Javier Miranda  <miranda@adacore.com>
330
331         * a-tags.ads, a-tags.adb (Object_Specific_Data): Remove
332         component Num_Prim_Ops.
333         (Set_Num_Prim_Ops): Removed.
334         Remove all the assertions because all the routines of this
335         package are inline always.
336         (Get_Offset_Index): Add support to primary dispatch tables.
337         Move the documentation about the dispatch table to a-tags.ads
338         (Set_External_Tag): Removed
339         (Inherit_TSD): Removed.
340         (Interface_Data_Element, Interfaces_Array, Interface_Data): Declarations
341         moved to a-tags.ads
342         (Displace, IW_Membership, Inherit_TSD, Interface_Ancestor_Tags,
343         Register_Interface_Tag, Set_Offset_To_Top): Update all the occurrences
344         of the TSD field "Table" because this field has been renamed to
345         "Ifaces_Table".
346         (Inherit_CPP_DT): Removed.
347         (K_Typeinfo, K_Offset_To_Top, K_Tagged_Kind, K_Signature,
348         Cstring, Tag_Table, Type_Specific_Data, Dispatch_Table): These
349         declarations have been moved to a-tags.ads
350         (Check_Size): Removed.
351         (Expanded_Name): Updated to get access to the new field of TSD
352         containing the address of the expanded name.
353         (Get_Access_Level/Set_Access_Level): Removed.
354         (Get_Predefined_Prim_Op_Address): Removed.
355         (Set_Predefined_Prim_Op_Address): Removed.
356         (Get_Prim_Op_Address/Set_Prim_Op_Address): Removed.
357         (Get_Remotely_Callable/Set_Remotely_Callable): Removed.
358         (Set_Expanded_Name): Removed.
359         (Inherit_DT): Removed.
360         (Inherit_CPP_DT): Removed.
361         (Set_RC_Offset): Removed.
362         (Set_TSD): Removed.
363         (Base_Address): New function that displaces "this" to point to the base
364         of the object (that is, to point to the primary tag of the object).
365
366 2007-04-06  Ed Schonberg  <schonberg@adacore.com>
367             Javier Miranda  <miranda@adacore.com>
368
369         * exp_ch3.ads, exp_ch3.adb (Analyze_N_Full_Type_Declaration): For an
370         anonymous access component, do not create a master_id if type already
371         has one, as may happen if the type is a subcomponent of a packed array
372         type.
373         (Build_Init_Procedure, Component_Needs_Simple_Initialization,
374         Initialize_Tag): Remove code associated with the old CPP pragmas.
375         CPP_Virtual and CPP_Vtable are no longer supported.
376         (Build_Offset_To_Top_Internal): Add support for concurrent record types
377         (Build_Offset_To_Top_Functions): Add support for concurrent record types
378         (Freeze_Record_Type): Remove call to
379         Init_Predefined_Interface_Primitives.
380         (Init_Secondary_Tags.Initialize_Tag): New subprogram containing all the
381         code required to initialize the tags of the secondary dispatch tables.
382         This leaves the algoritm more clear.
383         (Init_Secondary_Tags): Add support for concurrent record types
384         (Make_Predefined_Primitive_Specs): Code cleanup.
385         (Predefined_Primitive_Bodies): Code cleanup.
386         (Build_Master_Renaming): New local subprogram.
387         (Expand_N_Full_Type_Declaration): Build the master_id associated with
388         anonymous access to task type components.
389         (Expand_N_Subtype_Indication): The bounds of a range constraint in a
390         subtype indication are resolved during analysis, and must not be done
391         here.
392         (Stream_Operation_OK): Check Restriction_Active before RTE_Available.
393
394 2007-04-06  Geert Bosch  <bosch@adacore.com>
395             Ed Schonberg  <schonberg@adacore.com>
396             Javier Miranda  <miranda@adacore.com>
397             Bob Duff  <duff@adacore.com>
398
399         * exp_ch4.adb (Expand_N_Type_Conversion): Remove special processing
400         for conversion of a Float_Type'Truncation to integer.
401
402         * exp_attr.adb (Is_Inline_Floating_Point_Attribute): New function to
403         check if a node is an attribute that can be handled directly by the
404         back end.
405         (Expand_N_Attribute_Reference): Suppress expansion of floating-point
406         attributes that can be handled directly by the back end.
407         (Expand_N_Attribute_Reference, case 'Access and 'Unchecked_Access):
408         use new predicate Is_Access_Protected_Subprogram_Type.
409         (Expand_N_Attribute_Reference, case 'Write): The reference is legal for
410         and Unchecked_Union if it is generated as part of the default  Output
411         procedure for a type with default discriminants.
412         (Expand_N_Attribute_Reference): Avoid the expansion of dispatching calls
413         if we are compiling under restriction No_Dispatching_Calls.
414         (Constrained): Use Underlying_Type, in case the type is private without
415         discriminants, but the full type has discriminants.
416         (Expand_N_Attribute_Reference): Replace call to Get_Access_Level by
417         call to Build_Get_Access_Level.
418         (Expand_N_Attribute_Reference): The use of 'Address with class-wide
419         interface objects requires a call to the run-time subprogram that
420         returns the base address of the object.
421         (Valid_Conversion): Improve error message on illegal attempt to store
422         an anonymous access to subprogram value into a record component.
423
424         * sem_res.adb (Resolve_Equality_Op): Detect ambiguity for "X'Access =
425         null".
426         (Simplify_Type_Conversion): New procedure that performs simplification
427         of Int_Type (Float_Type'Truncation (X)).
428         (Resolve_Type_Conversion): Call above procedure after resolving operand
429         and before performing checks. This replaces the existing ineffective
430         code in Exp_Ch4.
431         (Set_String_Literal_Subtype): When creating the internal static lower
432         bound subtype for a string literal, use a newly created copy of the
433         subtree representing the lower bound.
434         (Resolve_Call): Exclude build-in-place function calls from transient
435         scope treatment. Update comments to describe this exception.
436         (Resolve_Equality_Op): In case of dispatching call check violation of
437         restriction No_Dispatching_Calls.
438         (Resolve_Call): If the call returns an array, the context imposes the
439         component type of the array, and the function has one non-defaulted
440         parameter, rewrite the call as the indexing of a call with a single
441         parameter, to handle an Ada 2005 syntactic ambiguity for calls written
442         in prefix form.
443         (Resolve_Actuals): If an actual is an allocator for an access parameter,
444         the master of the created object is the innermost enclosing statement.
445         (Remove_Conversions): For a binary operator, check if type of second
446         formal is numeric, to check if an abstract interpretation is present
447         in the case of exponentiation as well.
448
449 2007-04-06  Ed Schonberg  <schonberg@adacore.com>
450             Bob Duff  <duff@adacore.com>
451
452         * atree.h, atree.ads, atree.adb (Copy_Node_With_Replacement): When
453         copying a parameter list in a call, set properly the First_Named_Formal
454         and Next_Named_Formal fields in the new list and in the enclosing call.
455         (Watch_Node,New_Node_Breakpoint,New_Node_Debugging_Output): Shorten
456         names, to ease typing in the debugger. Improve comments.
457         (Watch_Node): New variable, intended to be set in the debugger.
458         (New_Node_Breakpoint): New do-nothing procedure to set a breakpoint on,
459         called when the watched node is created.
460         (New_Node_Debugging_Output): Combined version of local procedures
461         New_Node_Debugging_Output and New_Entity_Debugging_Output, now global,
462         with a parameter so that conditional breakpoints like "if Node = 12345"
463         work.
464         (New_Node, New_Entity): Call the global New_Node_Debugging_Output.
465         Add Elist1 function
466
467 2007-04-06  Thomas Quinot  <quinot@adacore.com>
468             Ed Schonberg  <schonberg@adacore.com>
469             Gary Dismukes  <dismukes@adacore.com>
470
471         * checks.ads, checks.adb (Selected_Range_Checks): No range check is
472         required for a conversion between two access-to-unconstrained-array
473         types.
474         (Expr_Known_Valid): Validity checks do not apply to discriminants, but
475         to discriminant constraints on discriminant objects. This rule must
476         apply as well to discriminants of protected types in private components.
477         (Null_Exclusion_Static_Checks): If No_Initialization is set on an
478         object of a null-excluding access type then don't require the
479         the object declaration to have an expression and don't emit a
480         run-time check.
481
482 2007-04-06  Arnaud Charlet  <charlet@adacore.com>
483             Eric Botcazou <botcazou@adacore.com>
484
485         * gnatvsn.ads, comperr.adb (Get_Gnat_build_Type): Renamed Build_Type
486         and made constant.
487
488         * comperr.ads, comperr.adb (Compiler_Abort): Add third parameter
489         Fallback_Loc. Use it as the sloc info when Current_Error_Node doesn't
490         carry any.
491
492         * fe.h (Compiler_Abort): Add third parameter.
493
494         * misc.c (internal_error_function): Build third argument from current
495         input location and pass it to Compiler_Abort.
496
497 2007-04-06  Gary Dismukes  <dismukes@adacore.com>
498
499         * cstand.adb (Create_Standard): When the target's storage unit size is
500         greater than a byte, set Has_Non_Standard_Rep and Has_Pragma_Pack on
501         Standard_String.
502
503 2007-04-06  Nicolas Roche  <roche@adacore.com>
504
505         * cstreams.c (__gnat_full_name): Fix issues on VxWorks 6.x for which
506         absolute path can have the following form: device:/a/b. In this case
507         '/' should be inserted between the path and the filename.
508
509 2007-04-06  Olivier Hainque  <hainque@adacore.com>
510             Eric Botcazou <botcazou@adacore.com>
511
512         * decl.c (gnat_to_gnu_entity) <E_Constant>: Associate an external
513         VAR_DECL to a CONST_DECL we make for a public constant when we know the
514         corresponding definition has created the so made visible variable.
515         Handle anonymous access to protected subprogram.
516         (gnat_to_gnu_entity) <E_Variable>: Do not make the underlying type of an
517         object with an address clause volatile.  Re-enable original fix.
518         <E_Subprogram_Type>: Set TYPE_REF_CAN_ALIAS_ALL on the reference type
519         too.
520         (gnat_to_gnu_entity) <E_Class_Wide_Type>: Retrieve the TYPE_DECL
521         associated with either the Equivalent or Root type, instead of the
522         naked type node.
523         (gnat_to_gnu_entity): Manually mark the top of the DECL_FIELD_OFFSET
524         subtree for every field of a global record type.
525         (gnat_to_gnu_entity) <E_Record_Subtype>: If the subtype has
526         discriminants, invoke again variable_size on its newly computed sizes.
527
528 2007-04-06  Robert Dewar  <dewar@adacore.com>
529             Thomas Quinot  <quinot@adacore.com>
530             Ed Schonberg  <schonberg@adacore.com>
531             Bob Duff  <duff@adacore.com>
532
533         * einfo.ads, einfo.adb: (First_Component_Or_Discriminant): New function
534         (Next_Component_Or_Discriminant): New function and procedure
535         (First_Index, First_Literal, Master_Id,
536         Set_First_Index, Set_First_Literal, Set_Master_Id):
537         Add missing Ekind assertions.
538         (Is_Access_Protected_Subprogram_Type): New predicate.
539         (Has_RACW): New entity flag, set on package entities to indicate that
540         the package contains the declaration of a remote accecss-to-classwide
541         type.
542         (E_Return_Statement): This node type has the Finalization_Chain_Entity
543         attribute, in case the result type has controlled parts.
544         (Requires_Overriding): Add this new flag, because "requires
545         overriding" is subtly different from "is abstract" (see AI-228).
546         (Is_Abstract): Split Is_Abstract flag into Is_Abstract_Subprogram and
547         Is_Abstract_Type. Make sure these are called only when appropriate.
548         (Has_Pragma_Unreferenced_Objects): New flag
549
550         * exp_ch5.adb (Expand_N_Assignment_Statement): If the left-hand side is
551         class-wide, the tag of the right-hand side must be an exact match, not
552         an ancestor of that of the object on left-hand side.
553         (Move_Activation_Chain): New procedure to create the call to
554         System.Tasking.Stages.Move_Activation_Chain.
555         (Expand_N_Extended_Return_Statement): Generate code to call
556         System.Finalization_Implementation.Move_Final_List at the end of a
557         return statement if the function's result type has controlled parts.
558         Move asserts to Build_In_Place_Formal.
559         (Move_Final_List): New function to create the call statement.
560         (Expand_N_Assignment_Statement): In case of assignment to a class-wide
561         tagged type, replace generation of call to the run-time subprogram
562         CW_Membership by call to Build_CW_Membership.
563         (Expand_N_Return_Statement): Replace generation of call to the run-time
564         subprogram Get_Access_Level by call to Build_Get_Access_Level.
565         (Expand_N_Simple_Function_Return): Replace generation of call to the
566         run-time subprogram Get_Access_Level by call to Build_Get_Access_Level.
567
568         * exp_ch6.ads, exp_ch6.adb (Expand_Call): Use new predicate
569         Is_Access_Protected_Subprogram_Type, to handle both named and anonymous
570         access to protected operations.
571         (Add_Task_Actuals_To_Build_In_Place_Call): New procedure to add the
572         master and chain actual parameters to a build-in-place function call
573         involving tasks.
574         (BIP_Formal_Suffix): Add new enumeration literals to complete the case
575         statement.
576         (Make_Build_In_Place_Call_In_Allocator,
577         Make_Build_In_Place_Call_In_Anonymous_Context,
578         Make_Build_In_Place_Call_In_Assignment,
579         Make_Build_In_Place_Call_In_Object_Declaration): Call
580         Add_Task_Actuals_To_Build_In_Place_Call with the appropriate master.
581         (Expand_Inlined_Call): If the subprogram is a null procedure, or a
582         stubbed procedure with a null body, replace the call with a null
583         statement without using the full inlining machinery, for efficiency
584         and to avoid invalid values in source file table entries.
585
586         * exp_ch8.adb (Expand_N_Object_Renaming_Declaration): Add support for
587         renamings of calls to build-in-place functions.
588
589         * rtsfind.adb (RTE_Record_Component_Available): New subprogram that
590         provides the functionality of RTE_Available to record components.
591         (RTU_Entity): The function Entity has been renamed to RTU_Entity
592         to avoid undesired overloading.
593         (Entity): New subprogram that returns the entity for the referened
594         unit. If this unit has not been loaded, it returns Empty.
595         (RE_Activation_Chain_Access, RE_Move_Activation_Chain): New entities.
596         Remove no longer used entities.
597         (RE_Finalizable_Ptr_Ptr, RE_Move_Final_List): New entities.
598         (RE_Type_Specific_Data): New entity.
599         (RE_Move_Any_Value): New entity.
600         (RE_TA_A, RE_Get_Any_Type): New entities.
601         (RE_Access_Level, RE_Dispatch_Table, E_Default_Prim_Op_Count,
602          RE_Prims_Ptr, RE_RC_Offset, RE_Remotely_Callable,
603          RE_DT_Typeinfo_Ptr_Size, RE_Cstring_Ptr, RE_DT_Expanded_Name): Added.
604         (Entity): New subprogram that returns the entity for the referened
605         unit. If this unit has not been loaded, it returns Empty.
606         (RTE): Addition of a new formal that extends the search to the scopes
607         of the record types found in the chain of the package.
608
609         * sem_ch6.ads, sem_ch6.adb (Check_Overriding_Indicator): Print
610         "abstract subprograms must be visible" message, whether or not the type
611         is an interface; that is, remove the special case for interface types.
612         (Analyze_Function_Return): Remove error message "return of task objects
613         is not yet implemented" because this is now implemented.
614         (Create_Extra_Formals): Add the extra master and activation chain
615         formals in case the result type has tasks.
616         Remove error message "return of limited controlled objects is not yet
617         implemented".
618         (Create_Extra_Formals): Add the extra caller's finalization list formal
619         in case the result type has controlled parts.
620         (Process_Formals): In case of access formal types there is no need
621         to continue with the analysis of the formals if we already notified
622         errors.
623         (Check_Overriding_Indicator): Add code to check overriding of predefined
624         operators.
625         (Create_Extra_Formals): Prevent creation of useless Extra_Constrained
626         flags for formals that do not require them,.
627         (Enter_Overloaded_Entity): Do not give -gnatwh warning message unless
628         hidden entity is use visible or directly visible.
629         (Analyze_Abstract_Subprogram_Declaration,Analyze_Subprogram_Body,
630         Analyze_Subprogram_Declaration,Analyze_Subprogram_Specification,
631         Check_Conventions,Check_Delayed_Subprogram,Make_Inequality_Operator,
632         New_Overloaded_Entity): Split Is_Abstract flag into
633         Is_Abstract_Subprogram and Is_Abstract_Type.
634
635         * s-finimp.ads, s-finimp.adb (Move_Final_List): New procedure to move
636         a return statement's finalization list to the caller's list, used for
637         build-in-place functions with result type with controlled parts.
638         Remove no longer used entities.
639
640         * s-taskin.ads (Activation_Chain): Remove pragma Volatile. It is no
641         longer needed, because the full type is now limited, and therefore a
642         pass-by-reference type.
643         (Foreign_Task_Level): New constant.
644
645         * s-tassta.ads, s-tassta.adb (Move_Activation_Chain): New procedure to
646         move tasks from the activation chain belonging to a return statement to
647         the one passed in by the caller, and update the master to the one
648         passed in by the caller.
649         (Vulnerable_Complete_Master, Check_Unactivated_Tasks): Check the master
650         of unactivated tasks, so we don't kill the ones that are being returned
651         by a build-in-place function.
652         (Create_Task): Ignore AI-280 for foreign threads.
653
654 2007-04-06  Ed Schonberg  <schonberg@adacore.com>
655             Robert Dewar  <dewar@adacore.com>
656             Bob Duff  <duff@adacore.com>
657             Gary Dismukes  <dismukes@adacore.com>
658
659         * errout.adb (Unwind_Internal_Type): Use predicate
660         Is_Access__Protected_Subprogram_Type.
661
662         * freeze.adb (Size_Known): Use First/Next_Component_Or_Discriminant
663         (Freeze_Entity, packed array case): Do not override explicitly set
664         alignment and size clauses.
665         (Freeze_Entity):  An entity declared in an outer scope can be frozen if
666         the enclosing subprogram is a child unit body that acts as a spec.
667         (Freeze_Entity): Use new predicate Is_Access_Protected_Subprogram_Type.
668         (Freeze_Record_Type): New Ada 2005 processing for reverse bit order
669         Remove all code for DSP option
670
671         * layout.adb (Layout_Record_Type): Use First/
672         Next_Component_Or_Discriminant
673         (Layout_Type): Use new predicate Is_Access_Protected_Subprogram_Type,
674         to handle properly the anonymous access case.
675
676         * sem_attr.adb (Build_Access_Object_Type): Use E_Access_Attribute_Type
677         for all access attributes, because overload resolution should work the
678         same for 'Access, 'Unchecked_Access, and 'Unrestricted_Access. This
679         causes the error message for the ambiguous "X'Access = Y'Access" and
680         "X'Unrestricted_Access = Y'Access" and so forth to match.
681         (Resolve_Attribute, case 'Access): Remove use of Original_Access_Type,
682         now that anonymous access to protected operations have their own kind.
683         (Resolve_Attribute): In case of dispatching call check the violation of
684         restriction No_Dispatching_Calls.
685         (Check_Array_Type): Check new -gnatyA array index style option
686
687         * sem_ch3.ads, sem_ch3.adb (Derived_Type_Declaration): Reject an
688         attempt to derive from a synchronized tagged type.
689         (Analyze_Type_Declaration): If there is a incomplete tagged view of the
690         type, inherit the class-wide type already created, because it may
691         already have been used in a self-referential anonymous access component.
692         (Mentions_T): Recognize self-referential anonymous access components
693         that use (a subtype of) the class-wide type of the enclosing type.
694         (Build_Derived_Record_Type): Add earlier setting of Is_Tagged_Type. Pass
695         Derived_Type for Prev formal on call to
696         Check_Anonymous_Access_Components rather than Empty.
697         (Make_Incomplete_Type_Declaration): Add test for case where the type has
698         a record extension in deciding whether to create a class-wide type,
699         rather than just checking Tagged_Present.
700         (Replace_Anonymous_Access_To_Protected_Subprogram): Procedure applies
701         to stand-alone object declarations as well as component declarations.
702         (Array_Type_Declaration): Initialize Packed_Array_Type to Empty, to
703         prevent accidental overwriting when enclosing package appears in
704         a limited_with_clause.
705         (Array_Type_Declaration): If the component type is an anonymous access,
706         the associated_node for the itype is the type declaration itself.
707         (Add_Interface_Tag_Components): Modified to support concurrent
708         types with abstract interfaces.
709         (Check_Abstract_Interfaces): New subprogram that verifies the ARM
710         rules 3.9.4 (15/2), 9.1 (9.d/2) and 9.4 (11.d/2).
711         (Build_Derived_Record_Type): Add call to Analyze_Interface_Declaration
712         to complete the decoration of synchronized interface types. Add also
713         a call to Check_Abstract_Interfaces to verify the ARM rules.
714         (Derive_Interface_Subprograms): Modified to support concurrent types
715         with abstract interfaces.
716         (Analyze_Subtype_Indication): Resolve the range with the given subtype
717         mark, rather than delaying the full resolution depending on context.
718         (Analyze_Component_Declaration,Analyze_Interface_Declaration,
719         Analyze_Object_Declaration,Analyze_Subtype_Declaration,
720         Array_Type_Declaration,Build_Derived_Record_Type,
721         Build_Discriminated_Subtype,Check_Abstract_Overriding,Check_Completion,
722         Derive_Interface_Subprograms,Derive_Subprogram,Make_Class_Wide_Type,
723         Process_Full_View,Record_Type_Declaration): Split Is_Abstract flag into
724         Is_Abstract_Subprogram and Is_Abstract_Type. Make sure these are
725         called only when appropriate.
726         (Copy_And_Swap): Copy Has_Unreferenced_Objects flag from full type
727         to private type.
728         (Analyze_Subtype_Declaration): For an access subtype declaration, create
729         an itype reference for the anonymous designated subtype, to prevent
730         scope anonmalies in gigi.
731         (Build_Itype_Reference): New utility, to simplify construction of such
732         references.
733
734 2007-04-06  Vincent Celier  <celier@adacore.com>
735
736         * errutil.adb (Initialize): Initialize warnings table, if all warnings
737         are suppressed, supply an initial dummy entry covering all possible
738         source locations.
739
740         * make.adb (Scan_Make_Arg): Reject options that should start with "--"
741         and start with only one, such as "-RTS=none".
742         (Collect_Arguments): Do not check for sources outside of projects.
743         Do not collect arguments if project is externally built.
744         (Compile_Sources): Do nothing, not even check if the source is up to
745         date, if its project is externally built.
746         (Compile): When compiling a predefined source, add -gnatpg
747         as the second switch, after -c.
748         (Compile_Sources): Allow compilation of Annex J renames without -a
749         (Is_In_Object_Directory): Check if the ALI file is in the object
750         even if there is no project extension.
751         (Create_Binder_Mapping_File): Only put a unit in the mapping file for
752         gnatbind if the ALI file effectively exists.
753         (Initialize): Add the directory where gnatmake is invoked in front of
754         the path if it is invoked from a bin directory, even without directory
755         information, so that the correct GNAT tools will be used when spawned
756         without directory information.
757
758         * makeusg.adb: Change switch -S to -eS
759         Add lines for new switches -we, -wn and -ws
760         Add line for new switch -p
761
762         * prj-proc.adb (Process): Set Success to False when Warning_Mode is
763         Treat_As_Error and there are warnings.
764
765         * switch-m.ads, switch-m.adb (Normalize_Compiler_Switches): Do not skip
766         -gnatww Change gnatmake switch -S to -eS
767         (Scan_Make_Switches): Code reorganisation. Process separately multi
768         character switches and single character switches.
769         (Scan_Make_Switches): New Boolean out parameter Success. Set Success to
770         False when switch is not recognized by gnatmake.
771         (Scan_Make_Switches): Set Setup_Projects True when -p or
772         --create-missing-dirs is specified.
773
774         * fname.adb (Is_Predefined_File_Name): Return True for annex J
775         renamings Calendar, Machine_Code, Unchecked_Conversion and
776         Unchecked_Deallocation only when Renamings_Included is True.
777
778         * par.adb: Allow library units Calendar, Machine_Code,
779         Unchecked_Conversion and Unchecked_Deallocation to be recompiled even
780         when -gnatg is not specified.
781         (P_Interface_Type_Definition): Remove the formal Is_Synchronized because
782         there is no need to generate always a record_definition_node in case
783         of synchronized interface types.
784         (SIS_Entry_Active): Initialize global variable to False
785         (P_Null_Exclusion): For AI-447: Add parameter Allow_Anonymous_In_95 to
786         indicate cases where AI-447 says "not null" is legal.
787
788         * makeutl.ads, makeutil.adb (Executable_Prefix_Path): New function
789
790         * makegpr.adb (Check_Compilation_Needed): Take into account dependency
791         files with with several lines starting with the object fileb name.
792         (Scan_Arg): Set Setup_Projects True when -p or --create-missing-dirs
793         is specified.
794         (Initialize): Add the directory where gprmake is invoked in front of the
795         path, if it is invoked from a bin directory or with directory
796         information, so that the correct GNAT tools will be used when invoked
797         directly.
798         (Check_Compilation_Needed): Process correctly backslashes on Windows.
799
800         * vms_data.ads: Update switches/qualifiers
801
802 2007-04-06  Ed Schonberg  <schonberg@adacore.com>
803             Thomas Quinot  <quinot@adacore.com>
804
805         * exp_aggr.adb:
806         If the array component is a discriminated record, the array aggregate
807         is non-static even if the component is given by an aggregate with
808         static components.
809         (Expand_Record_Aggregate): Use First/Next_Component_Or_Discriminant
810         (Convert_Aggr_In_Allocator): If the allocator is for an access
811         discriminant and the type is controlled. do not place on a finalization
812         list at this point. The proper list will be determined from the
813         enclosing object.
814         (Build_Record_Aggr_Code): If aggregate has box-initialized components,
815         initialize record controller if needed, before the components, to ensure
816         that they are properly finalized.
817         (Build_Record_Aggr_Code): For the case of an array component that has a
818         corresponding array aggregate in the record aggregate, perform sliding
819         if required.
820
821 2007-04-06  Javier Miranda  <miranda@adacore.com>
822             Gary Dismukes  <dismukes@adacore.com>
823             Ed Schonberg  <schonberg@adacore.com>
824
825         * exp_ch13.adb (Expand_External_Tag_Definition): Replace call to the
826         run-time subprogram Set_External_Tag by call to Build_Set_External_Tag.
827
828         * exp_ch4.adb (Expand_Allocator_Expression): Don't perform a run-time
829         accessibility on class-wide allocators if the allocator occurs at the
830         same scope level as the allocator's type. The check is guaranteed to
831         succeed in that case, even when the expression originates from a
832         parameter of the containing subprogram.
833         (Expand_N_Op_Eq): Do nothing in case of dispatching call if compiling
834         under No_Dispatching_Calls restriction. During the semantic analysis
835         we already notified such violation.
836         (Tagged_Membership): Constant folding. There is no need to check
837         the tag at run-time if the type of the right operand is non
838         class-wide abstract.
839         Replace call to Is_Ancestor by call to Is_Parent
840         to support concurrent types with interface types.
841         (Expand_N_Allocator): Add an assertion associated with the generation
842         of the master_id.
843         (Expand_N_Slice): Do not enable range check to nodes associated
844         with the frontend expansion of the dispatch table.
845         (Is_Local_Access_Discriminant): Subsidiary function to
846         Expand_N_Allocator.
847         (Tagged_Membership): Replace generation of call to the run-time
848         subprogram CW_Membership by call to Build_CW_Membership.
849         (Expand_Allocator_Expression): Replace generation of call to the
850         run-time subprogram Get_Access_Level by call to Build_Get_Access_Level.
851
852         * exp_disp.ads, exp_disp.adb (Make_DT): Code reorganization to
853         initialize most the TSD components by means of an aggregate.
854         Modify the declaration of the object containing the TSD
855         because we now expand code that has a higher level of abstraction.
856         The TSD has a discriminant containing the Inheritance Depth Level,
857         value that is used in the membership test but also to fix the size
858         of the table of ancestors.
859         (Expand_Interface_Conversion): Insert function body at the closest place
860         to the conversion expression, to prevent access-before-elaboration
861         errors in the backend.
862         Code improved to reduce the size of the dispatch table if
863         compiling under restriction No_Dispatching_Calls plus code cleanup.
864         Code reorganization plus removal of calls to Set_Num_Prim_Ops
865         (Make_Secondary_DT): Remove call to Set_Num_Prim_Ops.
866         (Expand_Dispatching_Call): Minor code reorganization plus addition of
867         code to return immediately if compiling under No_Dispatching_Calls
868         restriction.
869         (Set_All_DT_Position): Remove code associated with the old CPP pragmas.
870         CPP_Virtual and CPP_Vtable are no longer supported.
871         (Expand_Interface_Conversion): Add missing support for interface type
872         derivations.
873         (Expand_Interface_Actuals): Replace calls to Is_Ancestor by calls to
874         Is_Parent to support concurrent types with interfaces.
875         (Init_Predefined_Interface_Primitives): Removed.
876         (Make_Secondary_DT): Modified to support concurrent record types.
877         (Set_All_DT_Position): Modified to support concurrent record types.
878         (Ada_Actions, Action_Is_Proc, Action_Nb_Arg): Remove entries associated
879         with Get_External_Tag, Inherit_TSD, Set_External_Tag.
880         (Ada_Actions, Action_Is_Proc, Action_Nb_Arg): Remove entry associated
881         with CW_Membership.
882         (Ada_Actions, Action_Is_Proc, Action_Nb_Arg): Remove entries associated
883         with Get_Access_Level, Get_Predefined_Prim_Op_Address,
884         Get_Prim_Op_Address Get_RC_Offset, Get_Remotely_Callable, Inherit_DT,
885         Set_Access_Level, Set_Expanded_Name, Set_Predefined_Prim_Op_Address,
886         Set_Prim_Op_Address, Set_RC_Offset, Set_Remotely_Callable, Set_TSD.
887         (Expand_Dispatching_Call): Replace generation of call to the run-time
888         subprograms Get_Predefined_Prim_Op_Address and Get_Prim_Op_Address by
889         calls to Build_Get_Predefined_Prim_Op_Address, and Build_Get_Prim_Op_
890         Address.
891         (Fill_DT_Entry, Fill_Secondary_DT_Entry): Replace generation of call to
892         the run-time subprograms Set_Predefined_Prim_Op_Address and Set_Prim_
893         Op_Address by calls to Build_Set_Predefined_Prim_Op_Address, and
894         Build_Set_Prim_Op_Address.
895         (Get_Remotely_Callable): Subprogram removed.
896         (Init_Predefined_Interface_Primitives): Replace generation of call to
897         the run-time subprograms Inherit_DT by call to Build_Inherit_Predefined_
898         Prims.
899
900         * sem_elab.adb (Set_Elaboration_Constraint): Replace the call to
901         First (Parameter_Associations ()) with the call to First_Actual that
902         returns an actual parameter expression for both named and positional
903         associations.
904
905         * sem_disp.adb (Check_Dispatching_Call): In case of dispatching call
906         check violation of restriction No_Dispatching_Calls.
907         (Check_Controlling_Type): A formal of a tagged incomplete type is a
908         controlling argument.
909
910         * exp_util.ads, exp_util.adb (Type_May_Have_Bit_Aligned_Components): Use
911         First/Next_Component_Or_Discriminant
912         (Insert_Actions): Add entries for new N_Push and N_Pop nodes
913         (Find_Implemented_Interface): Removed. All the calls to this subprogram
914         specify Any_Limited_Interface, and this functionality is already
915         provided by the function Has_Abstract_Interfaces.
916         (Find_Interface, Find_Interface_Tag, Find_Interface_ADT): Modified to
917         support concurrent types implementing interfaces.
918         (Find_Implemented_Interface): Removed. All the calls to this subprogram
919         specify kind Any_Limited_Interface, and this functionality is already
920         provided by the function Has_Abstract_Interfaces.
921         (Remove_Side_Effects): replace Controlled_Type by
922         CW_Or_Controlled_Type whenever the issue is related to
923         using or not the secondary stack.
924
925         * par-ch12.adb (P_Formal_Type_Definition): Update calls to
926         P_Interface_Type_Definition to fulfill the new interface (the formal
927         Is_Synchronized is no longer required).
928
929         * Make-lang.in (GNAT_ADA_OBJS): Addition of exp_atag.o
930         Update dependencies.
931
932         * exp_atag.ads, exp_atag.adb: New file
933
934 2007-04-06  Ed Schonberg  <schonberg@adacore.com>
935             Bob Duff  <duff@adacore.com>
936             Cyrille Comar  <comar@adacore.com>
937
938         * exp_ch7.ads, exp_ch7.adb (Find_Final_List): If the access type is
939         anonymous, use finalization list of enclosing dynamic scope.
940         (Expand_N_Package_Declaration): For a library package declaration
941         without a corresponding body, generate RACW subprogram bodies in the
942         spec (just as we do for the task activation call).
943         (Convert_View): Split Is_Abstract flag into Is_Abstract_Subprogram and
944         Is_Abstract_Type. Make sure these are called only when appropriate.
945         Remove all code for DSP option
946         (CW_Or_Controlled_Type): new subprogram.
947
948 2007-04-06  Eric Botcazou <botcazou@adacore.com>
949             Ed Schonberg  <schonberg@adacore.com>
950             Gary Dismukes  <dismukes@adacore.com>
951
952         * exp_ch9.ads, exp_ch9.adb (Family_Offset): Add new 'Cap' boolean
953         parameter. If it is set to true, return a result capped according to
954         the global upper bound for the index of an entry family.
955         (Family_Size): Add new 'Cap' boolean parameter. Pass it to Family_Offset
956         (Build_Find_Body_Index): Adjust for above change.
957         (Entry_Index_Expression): Likewise.
958         (Is_Potentially_Large_Family): New function extracted from...
959         (Collect_Entry_Families): ...here. Call it to detect whether the family
960         is potentially large.
961         (Build_Entry_Count_Expression): If the family is potentially large, call
962         Family_Size with 'Cap' set to true.
963         (Expand_N_Protected_Type_Declaration, Expand_N_Protected_Body): Generate
964         a protected version of an operation declared in the private part of
965         a protected object, because they may be invoked through a callback.
966         (Set_Privals): If the type of a private component is an anonymous access
967         type, do not create a new itype for each protected body.
968         If the body of a protected operation creates
969         controlled types (including allocators for class-widetypes), the
970         body of the corresponding protected subprogram must include a
971         finalization list.
972         (Build_Activation_Chain_Entity): Build the chain entity for extended
973         return statements.
974         (Type_Conformant_Parameters): Use common predicate Conforming_Types
975         to determine whether operation overrides an inherited primitive.
976         (Build_Wrapper_Spec): Add code to examine the parents while looking
977         for a possible overriding candidate.
978         (Build_Simple_Entry_Call): Set No_Initialization on the object used to
979         hold an actual parameter value since its initialization is separated
980         from the the declaration. Prevents errors on null-excluding access
981         formals.
982
983 2007-04-06  Thomas Quinot  <quinot@adacore.com>
984
985         * exp_dist.ads, exp_dist.adb (Build_To_Any_Call, Build_From_Any_Call):
986         Do an Unchecked_Conversion to handle the passage from the Underlying
987         Type to the Base Type when calling Build_To_Any_Call and
988         Build_From_Any_Call.
989         (Build_Actual_Object_Declaration): Set Object's Ekind to E_Variable or
990         E_Constant, depending upon Variable formal.
991         (GARLIC_Support.Build_Subprogram_Receiving_Stubs,
992         PolyORB_Support.Build_Subprogram_Receiving_Stubs): For a formal
993         parameter that requires an extra constrained parameter, declare
994         temporary for actual as a variable, not a constant.
995         (Add_RACW_Primitive_Declarations_And_Bodies): Generate bodies only when
996         the unit being compiled is the one that contains the stub type.
997         Change primitive operation name for the RACW associated with a RAS
998         from Call to _Call so it cannot clash with any legal identifier.
999         (PolyORB_Support.Add_RACW_Write_Attribute): Remove unused constant
1000         Is_RAS.
1001         (Append_RACW_Bodies): New subprogram.
1002         (Expand_Receiving_Stubs_Bodies): Pass a 'Stmts' list to
1003         Add_Receiving_Stubs_To_Declarations functions.
1004         When expanding a package body, this list correspond to the
1005         statements in the HSS at the end of the pacakge.
1006         When expanding a package spec, this list correspond to the
1007         spec declarations.
1008         (Add_Receiving_Stubs_To_Declarations): Append the function
1009         registering the receiving stubs at the end of the 'Stmts' list.
1010         (RCI_Package_Locator): Pass the new Version generic formal when
1011         instantiating a RCI_Locator package.
1012         (Build_From_Any_Function): To compute the High bound for an
1013         unconstrained array actual, we add the Low bound with the length.
1014         Thus we must convert the low bound and the length to an appropriate
1015         type before doing the sum.
1016         (Build_Subprogram_Receiving_Stubs, PolyORB):
1017          * Retrieve the extra formals parameters at the
1018            end of the parameter stream.
1019          * Use Move_Any_Value to write back out parameters
1020            after executing the request as it is more efficient
1021            than Copy_Any_Value.
1022          * Build the any containing Extra Formals with the
1023            appropriate typecode.
1024         (PolyORB_Support.Helpers.Append_Record_Traversal): Nothing to do for an
1025         empty Component_List.
1026         (Build_Actual_Object_Declaration): New subprogram. Build and insert into
1027         the tree the declaration for an object that serves as actual parameter
1028         in server-side stubs.
1029         (GARLIC_Support.Build_Subprogram_Receiving_Stubs,
1030         PolyORB_Support.Build_Subprogram_Receiving_Stubs):
1031         Use Build_Actual_Object_Declaration to prepare the actuals.
1032         (Add_Parameter_To_NVList): Set the parameter mode to In for
1033         Extra Constrained Parameters.
1034         (Build_General_Calling_Stubs): Set the parameter type to boolean for
1035         Extra Constrained parameters.
1036         (Build_To_Any_Function, Build_From_Any_Function,
1037         Built_TypeCode_Function): When Typ is implicit, call the correct
1038         function with the first not implicit parent type.
1039         (TC_Rec_Add_Process_Element, FA_Rec_Add_Process_Element,
1040         (FA_Ary_Add_Process_Element): When Datum is an Any, we cannot infer the
1041         typecode from the Etype. Therefore we retrieve the correct typecode
1042         with a call to Get_Any_Type.
1043         (Copy_Specification): Do controlling formal type substitution based on
1044         Is_Controlling_Formal flag, instead of caller-provided object type.
1045         (Build_Subprogram_Calling_Stubs): When retrieveing the original spec for
1046         a RACW primitive operation, we might get a subprogram declaration for an
1047         ancestor of the RACW designated type (not for the designated type
1048         itself), in the case where this operation is inherited. In this case we
1049         have no easy means of determining the original tagged type for which
1050         the primitive was declared, so instead we now rely on
1051         Copy_Specification to use the Is_Controlling_Formal flag to determine
1052         which formals require type substitution.
1053
1054 2007-04-06  Robert Dewar  <dewar@adacore.com>
1055             Ed Schonberg  <schonberg@adacore.com>
1056
1057         * exp_intr.adb (Expand_Exception_Call): Calls to subprograms in
1058         GNAT.Current_Exception are not allowed if pragma Restrictions
1059         (No_Exception_Propagation) is set and in any case make the associated
1060         handler unsuitable as a target for a local raise statement.
1061         (Expand_Dispatching_Constructor_Call): Replace generation of call to the
1062         run-time subprogram CW_Membership by call to Build_CW_Membership.
1063         (Expand_Dispatching_Constructor_Call): If the dispatching tag is given
1064         by a function call, a temporary must be created before expanding the
1065         Constructor_Call itself, to prevent out-of-order elaboration in the
1066         back-end when stack checking is enabled..
1067
1068 2007-04-06  Ed Schonberg  <schonberg@adacore.com>
1069
1070         * exp_pakd.adb (Expand_Packed_Boolean_Operator): The bounds of the
1071         result are the bounds of the left operand, not the right.
1072
1073 2007-04-06  Ed Schonberg  <schonberg@adacore.com>
1074
1075         * exp_strm.adb
1076         (Build_Mutable_Record_Write_Procedure): For an Unchecked_Union type, use
1077          discriminant defaults.
1078         (Build_Record_Or_Elementary_Output_Procedure): Ditto.
1079         (Make_Component_List_Attributes): Ditto.
1080
1081 2007-04-06  Ed Schonberg  <schonberg@adacore.com>
1082             Bob Duff  <duff@adacore.com>
1083
1084         * sem_aggr.adb (Resolve_Record_Aggregate): In semantics-only mode treat
1085         an association with a box as providing a value even though the
1086         initialization procedure for the type is not available.
1087         (Resolve_Record_Aggregate): Check that a choice of an association with a
1088         box corresponds to a component of the type.
1089         (Resolve_Record_Aggregate): Split Is_Abstract flag into
1090         Is_Abstract_Subprogram and Is_Abstract_Type.
1091
1092         * exp_tss.adb (Base_Init_Proc): Use Is_Type instead of Type_Kind for
1093         assert.
1094
1095         * inline.adb (Add_Inlined_Body): Split Is_Abstract flag into
1096         Is_Abstract_Subprogram and Is_Abstract_Type. Make sure these are
1097         called only when appropriate.
1098
1099 2007-04-06  Olivier Hainque  <hainque@adacore.com>
1100
1101         * g-alleve.ads (Low Level Vector type definitions): Map each to the
1102         associated vector view instead of all to the unsigned char view.
1103
1104         * g-altcon.adb (Generic_Conversions): New internal generic package,
1105         offering facilities for all the Vector/View conversion routines
1106         implemented by this unit.
1107         (To_View/To_Vector - all versions): Reimplemented in a systematic
1108         manner, using the internal Generic_Conversions facilities.
1109
1110 2007-04-06  Pascal Obry  <obry@adacore.com>
1111
1112         * g-arrspl.adb (Free) [Element_Access]: New routine to free the source
1113         string.
1114         (Create): Free the source string before storing the new one.
1115
1116 2007-04-06  Vincent Celier  <celier@adacore.com>
1117
1118         * g-debpoo.adb (Validity): New package with a complete new
1119         implementation of subprograms Is_Valid and Set_Valid.
1120         (Is_Valid): Move to local package Validity
1121         (Set_Valid): Move to local package Validity
1122
1123 2007-04-06  Arnaud Charlet  <charlet@adacore.com>
1124
1125         * g-expect.adb (Get_Command_Output): When expanding the output buffer
1126         we must ensure that there is enough place for the new data we are going
1127         to copy in.
1128
1129 2007-04-06  Thomas Quinot  <quinot@adacore.com>
1130
1131         * g-md5.ads, g-md5.adb (Digest): Fix off-by-one error in padding
1132         computation.
1133
1134 2007-04-06  Jose Ruiz  <ruiz@adacore.com>
1135             Vincent Celier  <celier@adacore.com>
1136
1137         * gnatcmd.adb (B_Start): Add prefix of binder generated file.
1138         (Stack_String): Add this String that contains the name of the Stack
1139         package in the project file.
1140         (Packages_To_Check_By_Stack): Add this list that contains the packages
1141         to be checked by gnatstack, which are the naming and the stack packages.
1142         (Check_Files): If no .ci files were specified for gnatstack we add all
1143         the .ci files belonging to the projects, including binder generated
1144         files.
1145         (Non_VMS_Usage): Document that gnatstack accept project file switches.
1146         (GNATCmd): Update the B_Start variable if we are in a VMS environment.
1147         Add gnatstack to the list of commands that use project file related
1148         switches, and get the single attribute Switches from the stack package
1149         in a project file when calling gnatstack. Parse the -U flag for
1150         processing files belonging to all projects in the project tree.
1151         Remove all processing for command Setup
1152
1153         * prj-attr.adb: Add new package Stack with single attribute Switches
1154
1155         * vms_conv.ads (Command_Type): Add command Stack.
1156         Move to body declarations that are only used in the body: types Item_Id,
1157         Translation_Type, Item_Ptr, Item and its subtypes.
1158
1159         * vms_conv.adb: (Initialize): Add data for new command Stack.
1160         Add declarations moved from the spec: types Item_Id, Translation_Type,
1161         Item_Ptr, Item and its subtypes.
1162         (Cargs_Buffer): New table
1163         (Cargs): New Boolean global variable
1164         (Process_Buffer): New procedure to create arguments
1165         (Place): Put character in table Buffer or Cargs_Buffer depending on the
1166          value of Cargs.
1167         (Process_Argument): Set Cargs when processing qualifiers for GNAT
1168         COMPILE
1169         (VMS_Conversion): Call Process_Buffer for table Buffer and, if it is not
1170         empty, for table Cargs_Buffer.
1171         (Initialize): Remove component Setup in Command_List
1172
1173 2007-04-06  Vincent Celier  <celier@adacore.com>
1174
1175         * gprep.adb (Process_Files.Process_One_File): Use full file name when
1176         issuing pragma Source_Reference.
1177
1178 2007-04-06  Emmanuel Briot  <briot@adacore.com>
1179
1180         * g-regpat.adb (Parse_Posix_Character_Class): Fix handling of
1181         [[:xdigit:]] character class.
1182         Also raise an exception when an invalid character class is used.
1183
1184 2007-04-06  Pascal Obry  <obry@adacore.com>
1185
1186         * i-cstrea.ads: (fopen): Add encoding parameter.
1187         (freopen): Idem.
1188         Change reference from a-sysdep.c to sysdep.c in comment.
1189         Update copyright notice.
1190         This set of patch add support for the encoding form parameter.
1191
1192         * mingw32.h (S2WSU): New macro to convert from a string to a
1193         wide-string using the UTF-8 encoding. The S2WS macro supports now only
1194         standard 8bits encoding.
1195         (WS2SU): As above but converting from wide-sring to string.
1196         This is needed as it is necessary to have access to both versions in the
1197         runtime for the form parameter encoding support.
1198         This set of patch add support for the encoding form parameter.
1199         (S2WS): Improve implementation to handle cases where the filename is not
1200         UTF-8 encoded. In this case we default to using the current code page
1201         for the conversion.
1202
1203         * s-crtl-vms64.ads, s-crtl.ads (Filename_Encoding): New enumeration
1204         type (UTF8, ASCII_8bits). This enumeration has a rep clause to match
1205         the constants defined in adaint.h.
1206         (fopen): Add encoding parameter.
1207         (freopen): Idem.
1208
1209         * s-ficobl.ads (AFCB): Add Encoding field to record the filename
1210         encoding. This is needed for the Reset routine (freopen low level-call).
1211
1212         * s-fileio.adb (Open): Decode encoding form parameter and set the
1213         corresponding encoding value into AFCB structure.
1214         (Reset): Pass the encoding value to freopen.
1215         (Close): Move the call to Lock_Task to the beginning of the procedure.
1216
1217 2007-04-06  Geert Bosch  <bosch@adacore.com>
1218             Robert Dewar  <dewar@adacore.com>
1219
1220         * i-fortra.ads: Add Double_Complex type.
1221
1222         * impunit.adb: (Is_Known_Unit): New function
1223         Add Gnat.Byte_Swapping
1224         Add GNAT.SHA1
1225         Add new Ada 2005 units
1226         Ada.Numerics.Generic_Complex_Arrays, Ada.Numerics.Generic_Real_Arrays,
1227         Ada.Numerics.Complex_Arrays, Ada.Numerics.Real_Arrays,
1228         Ada.Numerics.Long_Complex_Arrays, Ada.Numerics.Long_Long_Complex_Arrays,
1229         Ada.Numerics.Long_Long_Real_Arrays and Ada.Numerics.Long_Real_Arrays
1230
1231         * impunit.ads (Is_Known_Unit): New function
1232
1233         * a-ngcoar.adb, a-ngcoar.ads, a-ngrear.adb,
1234         a-ngrear.ads, a-nlcoar.ads, a-nllcar.ads, a-nllrar.ads, a-nlrear.ads,
1235         a-nucoar.ads, a-nurear.ads, g-bytswa.adb, g-bytswa-x86.adb,
1236         g-bytswa.ads, g-sha1.adb, g-sha1.ads, i-forbla.ads, i-forlap.ads,
1237         s-gearop.adb, s-gearop.ads, s-gecobl.adb, s-gecobl.ads, s-gecola.adb,
1238         s-gecola.ads, s-gerebl.adb, s-gerebl.ads, s-gerela.adb, s-gerela.ads:
1239         New files.
1240
1241         * Makefile.rtl: Add g-bytswa, g-sha1, a-fzteio and a-izteio
1242
1243         * a-fzteio.ads, a-izteio.ads: New Ada 2005 run-time units.
1244
1245 2007-04-06  Eric Botcazou <botcazou@adacore.com>
1246             Arnaud Charlet  <charlet@adacore.com>
1247
1248         * init.c: Reuse PA/HP-UX code for IA-64/HP-UX, except
1249         __gnat_adjust_context_for_raise.
1250         (__gnat_init_float): on x86 vxworks 5.x and 6.x, we use the same
1251         implementation of floating point operations as native x86 targets.
1252         So the FPU should be initialized in the same way using finit. Fix
1253         floating point operations accuracy issues.
1254         (__gnat_install_handler, case FreeBSD): Use proper type for sa_sigaction
1255         member in struct sigaction, so as to avoid warning for incompatible
1256         pointer types.
1257
1258 2007-04-06 Serguei Rybin <rybin@adacore.com>
1259
1260         * lib.ads, lib.adb (Tree_Read): Release the memory occupied by the
1261         switches from previously loaded tree
1262
1263 2007-04-06  Thomas Quinot  <quinot@adacore.com>
1264
1265         * lib-writ.adb (Write_With_Lines): Factor duplicated code between the
1266         cases where a given dependency has a body or not.
1267         (Write_With_File_Names): New subprogram, common code for the two cases
1268         above.
1269
1270 2007-04-06  Ed Schonberg  <schonberg@adacore.com>
1271             Javier Miranda  <miranda@adacore.com>
1272
1273         * lib-xref.ads, lib-xref.adb: 
1274         Modify the loop that collects type references, to include interface
1275         types that the type implements. List each of these interfaces when
1276         building the entry for the type.
1277         (Generate_Definition): Initialize component Def and Typ of new entry
1278         in table Xrefs, to avoid to have these components unitialized.
1279         (Output_References): Split Is_Abstract flag into
1280         Is_Abstract_Subprogram and Is_Abstract_Type.
1281         (Generate_Reference): Add barrier to do not generate the warning
1282         associated with Ada 2005 entities with entities generated by the
1283         expander.
1284
1285 2007-04-06  Robert Dewar  <dewar@adacore.com>
1286             Arnaud Charlet  <charlet@adacore.com>
1287             Vincent Celier  <celier@adacore.com>
1288
1289         * gnat_rm.texi, gnat_ugn.texi: Add -gnatyl documentation
1290         Update 'Exception Handling Control' chapter which was outdated.
1291         Minor fix to documentation of -gnatwq
1292         Remove section "Adapting the Run Time to a New C++ Compiler" because
1293         it is now obsolete.
1294         Add passage on need of -nostart-files in some non-ada-main cases.
1295         Document new switch -eS (/STANDARD_OUTPUT_FOR_COMMANDS) for gnatmake
1296         Update documentation about Interfacing with C++
1297         Add documentation for new gnatmake switch -p
1298         Add missing protocol part in URLs.
1299         Document -gnatyA
1300         Document pragma Compile_Time_Error
1301         Add documentation for Object_Size indicating that stand alone
1302         objects can have a larger size in some cases.
1303         Add node for GNAT.Byte_Swapping, GNAT.SHA1
1304         Update reference to the Ravenscar profile.
1305         Document pragma Unreferenced_Objects
1306
1307         * gnat-style.texi: Fix typo
1308
1309 2007-04-06  Vincent Celier  <celier@adacore.com>
1310
1311         * mlib.adb (Building_Library): Only output "building a library..." in
1312         verbose mode
1313
1314         * mlib-prj.adb (Build_Library): Only output lists of object and ALI
1315         files in verbose mode.
1316
1317         * mlib-utl.adb (Ar): Only output the first object files when not in
1318         verbose mode.
1319         (Gcc): Do not display all the object files if not in verbose mode, only
1320         the first one.
1321
1322 2007-04-06  Robert Dewar  <dewar@adacore.com>
1323
1324         * namet.ads, namet.adb (wn): Improve this debugging routine. Calling
1325         it no longer destroys the contents of Name_Buffer or Name_Len and
1326         non-standard and invalid names are handled better.
1327         (Get_Decoded_Name_String): Improve performance by using
1328         Name_Has_No_Encodings flag in the name table.
1329         (Is_Valid_Name): New function to determine whether a Name_Id is valid.
1330         Used for debugging printouts.
1331
1332 2007-04-06  Robert Dewar  <dewar@adacore.com>
1333             Javier Miranda  <miranda@adacore.com>
1334             Bob Duff  <duff@adacore.com>
1335
1336         * par-ch3.adb: (P_Type_Declaration): Set Type_Token_Location
1337         (P_Interface_Type_Definition): Remove the formal Is_Synchronized because
1338         there is no need to generate always a record_definition_node in case
1339         of synchronized interface types.
1340         (P_Type_Declaration): Update calls to P_Interface_Type_Definition.
1341         (P_Null_Exclusion): For AI-447: Remove warnings about "not null" being
1342         illegal in Ada 95, in cases where it is legal. Change the warnings to
1343         errors in other cases. Don't give the error unless the "not null"
1344         parses properly. Correct the source position at which the error occurs.
1345         (P_Known_Discriminant_Part_Opt): Pass Allow_Anonymous_In_95 => True to
1346         P_Null_Exclusion, to suppress "not null" warnings.
1347         (P_Identifier_Declarations): Code cleanup. Removed unrequired label and
1348         associated goto statements.
1349
1350         * par-endh.adb (Pop_End_Context): Allow more flexibility in placement
1351         of END RECORD
1352
1353         * scans.ads (Type_Token_Location): New flag
1354
1355         * par-ch6.adb (P_Mode): Check specifically for case of IN ACCESS
1356         (P_Formal_Part): Pass Allow_Anonymous_In_95 => True to
1357         P_Null_Exclusion, to suppress "not null" warnings.
1358
1359 2007-04-06  Robert Dewar  <dewar@adacore.com>
1360             Javier Miranda  <miranda@adacore.com>
1361             Bob Duff  <duff@adacore.com>
1362             Vincent Celier  <celier@adacore.com>
1363
1364         * par-prag.adb (Prag): Add dummy entry for pragma Compile_Time_Error
1365         (Extensions_Allowed): No longer sets Ada_Version
1366         Entry for pragma Unreferenced_Objects
1367
1368         * sem_prag.adb (Analyze_Pragma, case Priority): Force with of
1369         system.tasking if pragma priority used in a procedure
1370         (Analyze_Pragma, case Warning): Handle dot warning switches
1371         (Process_Compile_Time_Warning_Or_Error): New procedure
1372         (Analyze_Pragma): Add processing for Compile_Time_Error
1373         Add support for extra arguments External_Name and Link_Name.
1374         Remove code associated with pragmas CPP_Virtual and CPP_Vtable.
1375         (Process_Import_Or_Interface): Add support for the use of pragma Import
1376         with tagged types.
1377         (Extensions_Allowed): No longer affects Ada_Version
1378         (Analyze_Pragma): Split Is_Abstract flag into Is_Abstract_Subprogram and
1379         Is_Abstract_Type. Make sure these are called only when appropriate.
1380         Add processing for pragma Unreferenced_Objects
1381
1382         * snames.h, snames.ads, snames.adb: Add entry for pragma
1383         Compile_Time_Error
1384         Add new standard name Minimum_Binder_Options for new gprmake
1385         Add new standard names for gprmake: Archive_Suffix,
1386         Library_Auto_Init_Supported, Library_Major_Minor_Id_Supported,
1387         Library_Support, Library_Version_Options,
1388         Shared_Library_Minimum_Options,
1389         Shared_Library_Prefix, Shared_Library_Suffix, Symbolic_Link_Supported.
1390         Change Name_Call to Name_uCall so that it cannot clash with a legal
1391         subprogram name.
1392         Add new standard names Mapping_Spec_Suffix and Mapping_Body_Suffix
1393         Append C_Plus_Plus to convention identifiers as synonym for CPP
1394         Add new standard names Stack and Builder_Switches
1395         Add new standard names: Compiler_Minimum_Options, Global_Config_File,
1396         Library_Builder, Local_Config_File, Objects_Path, Objects_Path_File,
1397         Run_Path_Option, Toolchain_Version.
1398         Entry for pragma Unreferenced_Objects
1399
1400         * switch-c.adb (Scan_Front_End_Switches): Store correct -gnateD
1401         switches, without repetition of "eD". Make sure that last character of
1402         -gnatep= switch is not taken as -gnat switch character.
1403         Complete rewrite of circuit for handling saving compilation options
1404         Occasioned by need to support dot switchs for -gnatw, but cleans up
1405         things in general.
1406         -gnatX does not affect Ada_Version
1407         Include -gnatyA in -gnatg style switches
1408
1409         * sem_warn.ads, sem_warn.adb (Output_Unreferenced_Messages): Exclude
1410         warnings on return objects.
1411         (Warn_On_Useless_Assignment): Exclude warnings on return objects
1412         (Set_Dot_Warning_Switch): New procedure
1413         (Check_References): Add missing case of test for
1414         Has_Pragma_Unreferenced_Objects
1415         (Output_Unreferenced_Messages): Implement effect of new pragma
1416         Unreferenced_Objects, remove special casing of limited controlled
1417         variables.
1418
1419 2007-04-06  Vincent Celier  <celier@adacore.com>
1420
1421         * prj-ext.adb (Initialize_Project_Path): New procedure that initialize
1422         the default project path, initially done during elaboration of the
1423         package.
1424         If the prefix returned by Sdefault is null, get the prefix from a call
1425         to Executable_Prefix_Path.
1426         (Project_Path): Call Initialize_Project_Path if Current_Project_Path is
1427         null.
1428
1429         * prj-nmsc.adb (Get_Path_Names_And_Record_Sources): Use the non
1430         canonical directory name to open the directory from which files are
1431         retrieved.
1432         (Record_Other_Sources): Idem.
1433         (Locate_Directory): Add the possibility to create automatically missing
1434         directories when Setup_Projects is True.
1435         Call Locate_Directory so that the directory will be created when
1436         Setup_Projects is True, for object dir, library dir, library ALI dir,
1437         library source copy dir and exec dir.
1438
1439         * prj-pp.adb (Max_Line_Length): Set to 255 for compatibility with older
1440         versions of GNAT.
1441
1442 2007-04-06  Robert Dewar  <dewar@adacore.com>
1443
1444         * sem_ch13.ads, sem_ch13.adb (Adjust_Record_For_Reverse_Bit_Order):
1445         Use First/Next_Component_Or_Discriminant
1446         (Analyze_Record_Representation_Clause):
1447         Use First/Next_Component_Or_Discriminant
1448         (Check_Component_Overlap): Use First/Next_Component_Or_Discriminant
1449         (Analyze_Attribute_Definition_Clause, case Value_Size): Reject
1450         definition if type is unconstrained.
1451         (Adjust_Record_For_Reverse_Bit_Order): New procedure
1452         (Analyze_Attribute_Definition_Clause): Split Is_Abstract flag into
1453         Is_Abstract_Subprogram and Is_Abstract_Type.
1454         (Adjust_Record_For_Reverse_Bit_Order): New procedure
1455
1456         * repinfo.adb (List_Record_Info): Use First/
1457         Next_Component_Or_Discriminant.
1458
1459         * style.ads, styleg-c.adb, styleg-c.ads (Check_Array_Attribute_Index):
1460         New procedure.
1461
1462         * stylesw.ads, stylesw.adb: Recognize new -gnatyA style switch
1463         Include -gnatyA in default switches
1464
1465         * opt.ads: (Warn_On_Non_Local_Exception): New flag
1466         (Warn_On_Reverse_Bit_Order): New flag
1467         (Extensions_Allowed): Update the documentation.
1468         (Warn_On_Questionable_Missing_Parens): Now on by default
1469
1470         * usage.adb: Add documentation of -gnatw.x/X switches
1471         Document new -gnatyA style switch
1472         -gnatq warnings are on by default
1473
1474 2007-04-06  Ed Falis  <falis@adacore.com>
1475
1476         * s-carun8.adb, s-carsi8.adb (Compare_Array_?8): modify so that last
1477         full word is no longer compared twice.
1478
1479 2007-04-06  Ed Schonberg  <schonberg@adacore.com>
1480
1481         * sem_ch10.adb (Install_Limited_Context_Clauses.
1482         Expand_Limited_With_Clause): Use a new copy of selector name in the
1483         call to Make_With_Clause. This fixes the tree structure for ASIS
1484         purposes. Nothing is changed in the compiler behaviour.
1485         (Process_Body_Clauses): Handle properly use clauses whose prefix is
1486         a package renaming.
1487         (Install_Limited_With_Clauses): Do not install non-limited view when it
1488         is still incomplete.
1489
1490 2007-04-06  Ed Schonberg  <schonberg@adacore.com>
1491             Gary Dismukes  <dismukes@adacore.com>
1492
1493         * sem_ch12.adb (Check_Generic_Actuals): Use first subtype of actual
1494         when capturing size information, instead of base type, which for a
1495         formal array type will be the unconstrained type.
1496         (Analyze_Formal_Object_Declaration): Add check for illegal default
1497         expressions for a formal in object of a limited type.
1498         (Instantiate_Object): Ditto.
1499         (Check_Formal_Package_Instance): Skip entities that are formal objects,
1500         because they were defaulted in the formal package and no check applies
1501         to them.
1502         (Check_Formal_Package_Instance): Extend conformance check to other
1503         discrete types beyond Integer.
1504         (Process_Default): Copy directly the unmatched formal. A generic copy
1505         has already been performed in Analyze_Formal_Package.
1506         (Analyze_Associations): If a formal subprogram has no match, check for
1507         partial parametrization before looking for a default, to prevent
1508         spurious errors.
1509         (Analyze_Package_Instantiation, Analyze_Subprogram_Instantiation): Do
1510         not set the instantiation environment before analyzing the actuals.
1511         Fixes regression on 8515-003 with implementation of AI-133.
1512         Set_Instance_Env checks whether the generic unit is a predefined
1513         unit, in which case the instance must be analyzed with the latest Ada
1514         mode. This setting must take place after analysis of the actuals,
1515         because the actuals must be analyzed and frozen in the Ada mode extant
1516         outside of the current instantiation.
1517         (Save_Env, Restore_Env): Preserve and restore the configuration
1518         parameters so that predefined units can be compiled in the proper Ada
1519         mode.
1520         (Analyze_Formal_Object_Declaration,Analyze_Formal_Subprogram,
1521         Instantiate_Type): Split Is_Abstract flag into Is_Abstract_Subprogram
1522         and Is_Abstract_Type.
1523         (Analyze_Formal_Package): For better error recovery, Add exception
1524         handler to catch Instantion_Error, which can be raised in
1525         Analyze_Associations
1526
1527 2007-04-06  Ed Schonberg  <schonberg@adacore.com>
1528             Bob Duff  <duff@adacore.com>
1529             Gary Dismukes  <dismukes@adacore.com>
1530
1531         * sem_ch4.adb (Try_Primitive_Operation): The call is legal if the
1532         prefix type is a discriminated subtype of the type of the formal.
1533         (Analyze_Allocator): Collect all coextensions regardless of the context.
1534         Whether they can be allocated statically is determined in exp_ch4.
1535         (Analyze_Selected_Component): If the prefix is a limited view and the
1536         non-limited view is available, use the non-limited one.
1537         (Operator_Check): For "X'Access = Y'Access" (which is ambiguous, and
1538         therefore illegal), suggest a qualified expression rather than a type
1539         conversion, because a type conversion would be illegal in this context.
1540         (Anayze_Allocator): Trace recursively all nested allocators so that all
1541         coextensions are on the corresponding list for the root. Do no mark
1542         coextensions if the root allocator is within a declaration for a stack-
1543         allocated object, because the access discriminants will be allocated on
1544         the stack as well.
1545         (Analyze_Call): Remove restriction on calls to limited functions for the
1546         cases of generic actuals for formal objects, defaults for formal objects
1547         and defaults for record components.
1548         (Analyze_Allocator): Before analysis, chain coextensions on the proper
1549         element list. Their expansion is delayed until the enclosing allocator
1550         is processed and its finalization list constructed.
1551         (Try_Primitive_Operation): If the prefix is a concurrent type, looks
1552         for an operation with the given name among the primitive operations of
1553         the corresponding record type.
1554         (Analyze_Selected_Component): If the prefix is a task type that
1555         implements an interface, and there is no entry with the given name,
1556         check whether there is another primitive operation (e.g. a function)
1557         with that name.
1558         (Try_Object_Operation, Analyze_One_Call, Try_Indexed_Call): Handle
1559         properly the indexing of a function call written in prefix form, where
1560         the function returns an array type, and all parameters of the function
1561         except the first have defaults.
1562         (Analyze_Equality_Op): If this is a call to an implicit inequality, keep
1563         the original operands, rather than relocating them, for efficiency and
1564         to work properly when an operand is overloaded.
1565         (Analyze_Allocator,Operator_Check,Remove_Abstract_Operations): Split
1566         Is_Abstract flag into Is_Abstract_Subprogram and Is_Abstract_Type.
1567         (Analyze_Selected_Component): If the prefix is a private extension, only
1568         scan the visible components, not those of the full view.
1569         (Try_Primitive_Operation): If the operation is a procedure, collect all
1570         possible interpretations, as for a function, because in the presence of
1571         classwide parameters several primitive operations of the type can match
1572         the given arguments.
1573
1574 2007-04-06  Ed Schonberg  <schonberg@adacore.com>
1575             Robert Dewar  <dewar@adacore.com>
1576
1577         * sem_ch5.adb (Analyze_Assignment): Reject a right-hand side that is a
1578         tag-indeterminate call to an abstract function, when the left-hand side
1579         is not classwide.
1580         (Analyze_Loop_Statement): Improve detection of infinite loops
1581
1582 2007-04-06  Ed Schonberg  <schonberg@adacore.com>
1583             Thomas Quinot  <quinot@adacore.com>
1584
1585         * sem_ch7.ads, sem_ch7.adb (Inspect_Deferred_Constant_Completion): Move
1586         out of Analyze_Package_Declaration, because processing must be applied
1587         to package bodies as well, for deferred constants completed by pragmas.
1588         (Analyze_Package_Declaration): When the package declaration being
1589         analyzed does not require an explicit body, call Check_Completion.
1590         (May_Need_Implicit_Body): An implicit body is required when a package
1591         spec contains the declaration of a remote access-to-classwide type.
1592         (Analyze_Package_Body): If the package contains RACWs, append the
1593         pending subprogram bodies generated by exp_dist at the end of the body.
1594         (New_Private_Type,Unit_Requires_Body): Split Is_Abstract flag into
1595         Is_Abstract_Subprogram and Is_Abstract_Type.
1596         (Preserve_Full_Attributes): The full entity list is not an attribute
1597         that must be preserved from full to partial view.
1598
1599         * sem_dist.adb (Add_RAS_Dereference_TSS):
1600         Change primitive name to _Call so it cannot clash with any legal
1601         identifier, and be special-cased in Check_Completion.
1602         Mark the full view of the designated type for the RACW associated with
1603         a RAS as Comes_From_Source to get proper view switching when installing
1604         private declarations.
1605         Provite a placeholder nested package body along with the nested spec
1606         to have a place for Append_RACW_Bodies to generate the calling stubs
1607         and stream attributes.
1608
1609 2007-04-06  Ed Schonberg  <schonberg@adacore.com>
1610             Robert Dewar  <dewar@adacore.com>
1611
1612         * sem_ch8.adb (Has_Components): If the argument is an incomplete type
1613         that is a limited view, check the non-limited view if available.
1614         (Undefined): Refine error message for missing with of Text_IO
1615         (Find_Expanded_Name): Use Is_Known_Unit for more accurate error message
1616         to distinguish real missing with cases.
1617         Fix format of all missing with messages
1618         (Analyze_Subprogram_Renaming): Emit proper error message on illegal
1619         renaming as body when renamed entity is abstract.
1620
1621 2007-04-06  Ed Schonberg  <schonberg@adacore.com>
1622             Javier Miranda  <miranda@adacore.com>
1623
1624         * sem_type.ads, sem_type.adb (Has_Abstract_Interpretation): Make
1625         predicate recursive, to handle complex expressions on literals whose
1626         spurious ambiguity comes from the abstract interpretation of some
1627         subexpression.
1628         (Interface_Present_In_Ancestor): Add support to concurrent record
1629         types.
1630         (Add_One_Interp,Disambiguate): Split Is_Abstract flag into
1631         Is_Abstract_Subprogram and Is_Abstract_Type.
1632
1633 2007-04-06  Ed Schonberg  <schonberg@adacore.com>
1634             Javier Miranda  <miranda@adacore.com>
1635
1636         * sem_util.ads, sem_util.adb (Object_Access_Level): If the object is a
1637         dereference of a local object R created as a reference to another
1638         object O, use the access level of O.
1639         (Matches_Prefixed_View_Profile): Use common predicate Conforming_Types,
1640         rather than local Same_Formal_Type, to check whether protected operation
1641         overrides an inherited one.
1642         (Same_Formal_Type): New predicate, used when matching signatures of
1643         overriding synchronized operations, to handle the case when a formal
1644         has a type that is a generic actual.
1645         (Is_Aliased_View): Replace check on E_Task_Type and E_Protected_Type by
1646         predicate Is_Concurrent_Type. This ensures supportin case of subtypes.
1647         (Needs_One_Actual): New predicate, for Ada 2005 use, to resolve
1648         syntactic ambiguities involving indexing of function calls that return
1649         arrays.
1650         (Abstract_Interface_List): New subprogram that returns the list of
1651         abstract interfaces associated with a concurrent type or a
1652         concurrent record type.
1653         (Interface_Present_In_Parent): New subprogram used to check if a
1654         given type or some of its parents implement a given interface.
1655         (Collect_Abstract_Interfaces): Add support for concurrent types
1656         with interface types.
1657         (Has_Abstract_Interfaces): Add support for concurrent types with
1658         interface types.
1659         (Is_Parent): New subprogram that determines whether E1 is a parent
1660         of E2. For a concurrent type its parent is the first element of its
1661         list of interface types; for other types this function provides the
1662         same result than Is_Ancestor.
1663         (Enclosing_Subprogram): Add test for N_Extended_Return_Statement.
1664         (Collect_Synchronized_Interfaces): Removed because the subprogram
1665         Collect_Abstract_Interfaces provides this functionality.
1666         (Collect_Abstract_Interfaces): Minor update to give support to
1667         concurrent types and thus avoid undesired code duplication.
1668         (Get_Subprogram_Entity): Handle entry calls.
1669         (May_Be_Lvalue): Include actuals that appear as in-out parameters in
1670         entry calls.
1671         (Enter_Name): Do not give -gnatwh hiding warning for record component
1672         entities, they never result in hiding.
1673
1674 2007-04-06  Ed Schonberg  <schonberg@adacore.com>
1675             Robert Dewar  <dewar@adacore.com>
1676
1677         * sinfo.ads, sinfo.adb (Coextensions): New element list for allocators,
1678         to chain nested components that are allocators for access discriminants
1679         of the enclosing object.
1680         Add N_Push and N_Pop nodes
1681         New field Exception_Label added
1682         (Local_Raise_Statements): New field in N_Exception_Handler_Node
1683         (Local_Raise_Not_OK): New flag in N_Exception_Handler_Node
1684         (Is_Coextension): New flag for allocators, to mark allocators that
1685         correspond to access discriminants of dynamically allocated objects.
1686         (N_Block_Statement): Document the fact that the corresponding entity
1687         can be an E_Return_Statement.
1688         (Is_Coextension): New flag for allocators.
1689         Remove all code for DSP option
1690
1691         * sprint.ads, sprint.adb: Display basic information for class_wide
1692         subtypes. Add handling of N_Push and N_Pop nodes
1693
1694 2007-04-06  Arnaud Charlet  <charlet@adacore.com>
1695
1696         * s-tpobop.adb (Exceptional_Complete_Entry_Body): Undefer abortion
1697         before propagating exception.
1698
1699 2007-04-06  Olivier Hainque  <hainque@adacore.com>
1700
1701         * tracebak.c (PC_ADJUST - ia64): -4 instead of -16, expected to yield
1702         an address always within the call instruction from a return address.
1703
1704 2007-04-06  Olivier Hainque  <hainque@adacore.com>
1705             Eric Botcazou <botcazou@adacore.com>
1706
1707         * trans.c (call_to_gnu) <TYPE_RETURNS_BY_TARGET_PTR_P>: Return an
1708         expression with a COMPOUND_EXPR including the call instead of emitting
1709         the call directly here.
1710         (gnat_to_gnu) <N_Slice>: Do not return a non-constant low bound if the
1711         high bound is constant and the slice is empty.  Tidy.
1712         (tree_transform, case N_Op_Not): Handle properly the case where the
1713         operation applies to a private type whose full view is a modular type.
1714         (Case_Statement_To_gnu): If an alternative is an E_Constant with an
1715         Address_Clause, use the associated Expression as the GNAT tree
1716         representing the choice value to ensure the corresponding GCC tree is
1717         of the proper kind.
1718         (maybe_stabilize_reference): Stabilize COMPOUND_EXPRs as a whole
1719         instead of just the operands, as the base GCC stabilize_reference does.
1720         <CALL_EXPR>: New case. Directly stabilize the call if an lvalue is not
1721         requested; otherwise fail.
1722         (addressable_p) <COMPONENT_REF>: Do not test DECL_NONADDRESSABLE_P.
1723
1724 2007-04-06  Thomas Quinot  <quinot@adacore.com>
1725
1726         * uintp.ads, uintp.adb (UI_Div_Rem): New subprogram, extending previous
1727         implementation of UI_Div.
1728         (UI_Div): Reimplement as a call to UI_Div_Rem.
1729         (UI_Rem): Take advantage of the fact that UI_Div_Rem provides the
1730         remainder, avoiding the cost of a multiplication and a subtraction.
1731         (UI_Modular_Inverse): Take advantage of the fact that UI_Div_Rem
1732         provides both quotient and remainder in a single computation.
1733         (UI_Modular_Exponentiation, UI_Modular_Inverse): New modular arithmetic
1734         functions for uint.
1735         (UI_Modular_Inverse): Add a note that the behaviour of this subprogram
1736         is undefined if the given n is not inversible.
1737
1738 2007-04-06  Olivier Hainque  <hainque@adacore.com>
1739
1740         * utils2.c (known_alignment): Handle COMPOUND_EXPR, COND_EXPR and
1741         BIT_AND_EXPR. Handle also VIEW_CONVERT_EXPR, as the other conversion
1742         opcodes.
1743
1744 2007-04-06  Eric Botcazou <botcazou@adacore.com>
1745             Olivier Hainque  <hainque@adacore.com>
1746
1747         * utils.c (update_pointer_to): Make a copy of the couple of FIELD_DECLs
1748         when updating the contents of the old pointer to an unconstrained array.
1749         (end_subprog_body): Set error_gnat_node to Empty.
1750         (write_record_type_debug_info): Do not be unduly sparing with our bytes.
1751         (unchecked_convert): For subtype to base type conversions, require that
1752         the source be a subtype if it is an integer type.
1753         (builtin_decls): New global, vector of available builtin functions.
1754         (gnat_pushdecl): Add global builtin function declaration nodes to the
1755         builtin_decls list.
1756         (gnat_install_builtins): Adjust comments.
1757         (builtin_function): Set DECL_BUILTIN_CLASS and DECL_FUNCTION_CODE before
1758         calling gnat_pushdecl, so that it knows when it handed a builtin
1759         function declaration node.
1760         (builtin_decl_for): Search the builtin_decls list.
1761
1762 2007-04-06  Eric Botcazou <botcazou@adacore.com>
1763
1764         * s-stchop-vxworks.adb: 
1765         (Stack_Check): Raise Storage_Error if the argument has wrapped around.
1766
1767 2007-04-06  Robert Dewar  <dewar@adacore.com>
1768             Arnaud Charlet  <charlet@adacore.com>
1769
1770         * a-diroro.ads: Inserted the pragma Unimplemented_Unit
1771
1772         * bindgen.adb (Gen_Output_File_Ada): Generate pragma Ada_95 at start
1773         of files
1774         Add mention of -Sev (set initialize_scalars option from environment
1775         variable at run time) in gnatbind usage message.
1776
1777         * elists.ads, elists.adb: (Append_Unique_Elmt): New procedure
1778
1779         * fname-uf.ads: Minor comment fix
1780
1781         * osint.ads: Change pragma Elaborate to Elaborate_All
1782
1783         * par-load.adb: Add documentation.
1784
1785         * sem_cat.ads, sem_cat.adb: Minor code reorganization
1786
1787         * s-parint.ads (RCI_Locator) : Add 'Version' generic formal
1788
1789         * s-secsta.ads: Extra comments
1790
1791         * s-soflin.ads: Minor comment fixes
1792
1793         * s-stratt.ads (Block_Stream_Ops_OK): Removed.
1794
1795         * s-wchcon.ads: Minor comment addition
1796
1797         * treepr.adb: Minor change in message
1798         (Print_Name,Print_Node): Make these debug printouts more robust: print
1799         "no such..." instead of crashing on bad input.
1800
1801 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
1802
1803         * trans.c (Attribute_to_gnu): Use get_signed_or_unsigned_type
1804         instead of gnat_signed_or_unsigned_type.
1805         * utils.c (gnat_signed_or_unsigned_type): Remove.
1806         * misc.c (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove
1807         * gigi.h (gnat_signed_or_unsigned_type): Remove
1808
1809 2007-03-09  Roger Sayle  <roger@eyesopen.com>
1810
1811         * cuintp.c (UI_To_gnu): Use fold_buildN calls instead of calling
1812         fold with the result of buildN.
1813         * decl.c (gnat_to_gnu_entity): Likewise.
1814         * trans.c (Attribute_to_gnu, gnat_to_gnu, emit_check): Likewise.
1815         * utils.c (finish_record_type, merge_sizes, max_size, convert):
1816         Likewise.
1817         * utils2.c (gnat_truthvalue_conversion, compare_arrays,
1818         nonbinary_modular_operation, build_binary_op, build_unary_op,
1819         build_cond_expr): Likewise.
1820
1821         * utils.c (convert): Use fold_build1 when casting values to void.
1822         * utils2.c (gnat_truthvalue_conversion): Use build_int_cst and
1823         fold_convert instead of convert when appropriate.
1824
1825 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
1826
1827         * Make-lang.in: Add install-pdf target as copied from
1828         automake v1.10 rules.
1829
1830 2007-02-28  Andreas Schwab  <schwab@suse.de>
1831
1832         * Make-lang.in (doc/gnat_ugn_unw.texi): Depend on
1833         $(gcc_docdir)/include/gcc-common.texi and gcc-vers.texi.
1834         (doc/gnat-style.info): Likewise.
1835
1836 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
1837
1838         * gnat-style.texi: Standardize title page.
1839         * gnat_rm.texi: Likewise.
1840         * gnat_ugn.texi: Likewise.
1841
1842 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
1843
1844         * decl.c (annotate_value): Adjust for refactoring of tree_map
1845         hierarchy.
1846
1847 2007-02-24  Mark Mitchell  <mark@codesourcery.com>
1848
1849         * decl.c (annotate_value): Adjust for refactoring of tree_map
1850         hierarchy.
1851
1852 2007-02-21  Ed Schonberg  <schonberg@adacore.com>
1853
1854         PR ada/18819
1855         * sem_ch3.adb (Create_Constrained_Components): for a subtype of an
1856         untagged derived type, add hidden components to keep discriminant
1857         layout consistent, when a given discriminant of the derived type
1858         constraints several discriminants of the parent type.
1859
1860 2007-02-16  Eric Botcazou  <ebotcazou@adacore.com>
1861             Sandra Loosemore  <sandra@codesourcery.com>
1862
1863         * trans.c (call_to_gnu):  Use build_call_list instead of build3 to
1864         build the call expression.
1865         (gnat_stabilize_reference_1): Handle tcc_vl_exp.
1866         * utils.c (max_size) <tcc_exceptional>: Delete.
1867         <tcc_vl_exp>: New case.
1868         <tcc_expression>: Delete CALL_EXPR subcase.
1869         (build_global_cdtor): Use build_call_nary instead of build3.
1870         * utils2.c (build_call_1_expr): Likewise.
1871         (build_call_2_expr): Likewise.
1872         (build_call_0_expr): Likewise.
1873         (build_call_alloc_dealloc): Likewise.
1874
1875 2007-02-07  Andreas Krebbel  <krebbel1@de.ibm.com>
1876
1877         * raise-gcc.c (get_region_description_for, get_call_site_action_for,
1878         get_action_description_for): Replace _Unwind_Word with _uleb128_t 
1879         and _Unwind_SWord with _sleb128_t.
1880
1881 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
1882
1883         * Make-lang.in (ada/decl.o): Add gt-ada-decl.h dependency.
1884         * decl.c: Include gt-ada-decl.h.
1885         (annotate_value_cache): New.
1886         (annotate_value): Use it instead of TREE_COMPLEXITY.
1887
1888 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
1889
1890         * misc.c, utils2.c: Fix comment typos.
1891
1892 2007-01-24  Roger Sayle  <roger@eyesopen.com>
1893
1894         * decl.c (gnat_to_gnu_entity): Use TREE_OVERFLOW instead of
1895         TREE_CONSTANT_OVERFLOW.
1896         (allocatable_size_p, annotate_value): Likewise.
1897         * trans.c (gnat_to_gnu): Likewise.
1898         * utils.c (unchecked_convert): Likewise.
1899         * utils2.c (build_simple_component_ref): Likewise.
1900
1901 2007-01-23  Richard Guenther  <rguenther@suse.de>
1902
1903         PR bootstrap/30541
1904         * Make-lang.in: Replace invocations of gnatmake with $(GNATMAKE).
1905         (gnatboot2): Pass staged GNATMAKE instead of STAGE_PREFIX.
1906         (gnatboot3): Likewise.
1907         (GNATBIND): Do not define.
1908         * Makefile.in (GNATBIND): Do not define.
1909
1910 2007-01-08  Richard Guenther  <rguenther@suse.de>
1911
1912         * cuintp.c (build_cst_from_int): Use built_int_cst_type.
1913         * trans.c (gnat_to_gnu): Likewise.
1914
1915 2006-12-07  Geoffrey Keating  <geoffk@apple.com>
1916
1917         * Makefile.in: Replace CROSS_COMPILE with CROSS_DIRECTORY_STRUCTURE.
1918         * adaint.c: Likewise.
1919
1920 2006-12-05  Aldy Hernandez  <aldyh@redhat.com>
1921
1922         Merge from gimple-tuples-branch:
1923         2006-11-02  Aldy Hernandez  <aldyh@redhat.com>
1924
1925         * ada-tree.h (lang_tree_node): Handle gimple tuples.
1926         * trans.c (gnat_gimplify_expr): Replace MODIFY_EXPR with
1927         GIMPLE_MODIFY_STMT.
1928
1929 2006-12-02  Kazu Hirata  <kazu@codesourcery.com>
1930
1931         * Makefile.in, mingw32.h, trans.c: Fix comment typos.
1932         * gnat_rm.texi, gnat_ugn.texi: Follow spelling conventions.
1933         Fix typos.
1934
1935 2006-11-17  Eric Botcazou  <ebotcazou@adacore.com>
1936
1937         PR ada/27936
1938         * trans.c (add_decl_expr): Do not dynamically elaborate padded objects
1939         if the initializer takes into account the padding.
1940
1941 2006-11-11  Richard Guenther  <rguenther@suse.de>
1942
1943         * trans.c (maybe_stabilize_reference): Remove handling of
1944         FIX_CEIL_EXPR, FIX_FLOOR_EXPR and FIX_ROUND_EXPR.
1945
1946 2006-11-05  Arnaud Charlet  <charlet@adacore.com>
1947
1948         PR ada/29707
1949         * s-osinte-linux-alpha.ads, s-osinte-linux-hppa.ads
1950         (To_Target_Priority): New function.
1951
1952 2006-10-31  Robert Dewar  <dewar@adacore.com>
1953
1954         * a-taster.adb, s-traent-vms.adb, a-elchha.ads, a-elchha.adb,
1955         a-exctra.adb, ali-util.adb, exp_disp.ads, s-stalib.ads, s-traent.adb,
1956         s-addope.ads, s-addope.adb, a-rbtgso.adb, a-crbltr.ads, a-coprnu.adb,
1957         a-cgcaso.adb, a-cgarso.adb, a-cgaaso.adb, a-coormu.adb, a-ciormu.adb,
1958         a-rbtgso.ads, a-stunha.adb, a-stunha.adb, a-ciorma.adb, a-coorma.adb,
1959         a-secain.adb, a-slcain.adb, a-shcain.adb, a-stwiha.adb, a-stwiha.adb,
1960         a-strhas.adb, a-strhas.adb, a-stzhas.adb, a-stzhas.adb, a-szuzha.adb,
1961         a-chacon.adb, a-chacon.adb, a-chacon.ads, a-stboha.adb, a-swbwha.adb,
1962         a-szbzha.adb: Minor reformatting. Fix header.
1963
1964         * a-numaux-x86.adb: Add parentheses for use of unary minus
1965         * a-ngcefu.adb: Supply missing parentheses for unary minus
1966         * a-ngcoty.adb: Add parens for use of unary minus
1967         * a-ngelfu.adb: Add missing parens for unary minus
1968         * a-tifiio.adb: Add parentheses for uses of unary minus
1969
1970 2006-10-31  Robert Dewar  <dewar@adacore.com>
1971             Bob Duff  <duff@adacore.com>
1972             Ed Schonberg  <schonberg@adacore.com>
1973
1974         * sem_res.adb (Resolve_Unary_Op): Add warning for use of unary minus
1975         with multiplying operator.
1976         (Expected_Type_Is_Any_Real): New function to determine from the Parent
1977         pointer whether the context expects "any real type".
1978         (Resolve_Arithmetic_Op): Do not give an error on calls to the
1979         universal_fixed "*" and "/" operators when they are used in a context
1980         that expects any real type. Also set the type of the node to
1981         Universal_Real in this case, because downstream processing requires it
1982         (mainly static expression evaluation).
1983         Reword some continuation messages
1984         Add some \\ sequences to continuation messages
1985         (Resolve_Call): Refine infinite recursion case. The test has been
1986         sharpened to eliminate some false positives.
1987         Check for Current_Task usage now includes entry barrier, and is now a
1988         warning, not an error.
1989         (Resolve): If the call is ambiguous, indicate whether an interpretation
1990         is an inherited operation.
1991         (Check_Aggr): When resolving aggregates, skip associations with a box,
1992         which are priori correct, and will be replaced by an actual default
1993         expression in the course of expansion.
1994         (Resolve_Type_Conversion): Add missing support for conversion from
1995         a class-wide interface to a tagged type. Minor code cleanup.
1996         (Valid_Tagged_Converion): Add support for abstact interface type
1997         conversions.
1998         (Resolve_Selected_Component): Call Generate_Reference here rather than
1999         during analysis, and use May_Be_Lvalue to distinguish read/write.
2000         (Valid_Array_Conversion): New procedure, abstracted from
2001         Valid_Conversion, to incorporate accessibility checks for arrays of
2002         anonymous access types.
2003         (Valid_Conversion): For a conversion to a numeric type occurring in an
2004         instance or inlined body, no need to check that the operand type is
2005         numeric, since this has been checked during analysis of the template.
2006         Remove legacy test for scope name Unchecked_Conversion.
2007
2008         * sem_res.ads: Minor reformatting
2009
2010         * a-except.adb, a-except-2005.adb: Turn off subprogram ordering
2011         (PE_Current_Task_In_Entry_Body): New exception code
2012         (SE_Restriction_Violation): Removed, not used
2013
2014         * a-except.ads:  Update comments.
2015
2016         * types.h, types.ads: Add definition for Validity_Check
2017         (PE_Current_Task_In_Entry_Body): New exception code
2018         (SE_Restriction_Violation): Removed, not used
2019
2020 2006-10-31  Thomas Quinot  <quinot@adacore.com>
2021
2022         * g-socthi-vxworks.adb (C_Gethostbyname): Fix wrong test for returned
2023         error status.
2024
2025 2006-10-31  Hristian Kirtchev  <kirtchev@adacore.com>
2026             Jose Ruiz  <ruiz@adacore.com>
2027
2028         * a-calend-vms.adb (Leap_Sec_Ops): Temp body for package in private
2029         part of Ada.Calendar: all subprogram raise Unimplemented.
2030         (Split_W_Offset): Temp function body, raising Unimplemented
2031
2032         * a-calend.ads, a-calend-vms.ads: 
2033         Add imported variable Invalid_TZ_Offset used to designate targets unable
2034         to support time zones.
2035         (Unimplemented): Temporary function raised by the body of new
2036         subprograms below.
2037         (Leap_Sec_Ops): New package in the private part of Ada.Calendar. This
2038         unit provides handling of leap seconds and is used by the new Ada 2005
2039         packages Ada.Calendar.Arithmetic and Ada.Calendar.Formatting.
2040         (Split_W_Offset): Identical spec to that of Ada.Calendar.Split. This
2041         version returns an extra value which is the offset to UTC.
2042
2043         * a-calend.adb (Split_W_Offset): Add call to localtime_tzoff.
2044         (Leap_Sec_Ops): New body for package in private part of Ada.Calendar.
2045         (Split_W_Offset): New function body.
2046         (Time_Of): When a date is close to UNIX epoch, compute the time for
2047         that date plus one day (that amount is later substracted after
2048         executing mktime) so there are no problems with time zone adjustments.
2049
2050         * a-calend-mingw.adb: Remove Windows specific version no longer needed.
2051
2052         * a-calari.ads, a-calari.adb, a-calfor.ads, a-calfor.adb,
2053         a-catizo.ads, a-catizo.adb: New files.
2054
2055         * impunit.adb: Add new Ada 2005 entries
2056
2057         * sysdep.c: Add external variable __gnat_invalid_tz_offset.
2058         Rename all occurences of "__gnat_localtime_r" to
2059         "__gnat_localtime_tzoff".
2060         (__gnat_localtime_tzoff for Windows): Add logic to retrieve the time
2061         zone data and calculate the GMT offset.
2062         (__gnat_localtime_tzoff for Darwin, Free BSD, Linux, Lynx and Tru64):
2063         Use the field "tm_gmtoff" to extract the GMT offset.
2064         (__gnat_localtime_tzoff for AIX, HPUX, SGI Irix and Sun Solaris): Use
2065         the external variable "timezone" to calculate the GMT offset.
2066
2067 2006-10-31  Arnaud Charlet  <charlet@adacore.com>
2068             Jose Ruiz  <ruiz@adacore.com>
2069
2070         * s-osinte-posix.adb, s-osinte-linux.ads, s-osinte-freebsd.adb, 
2071         s-osinte-freebsd.ads, s-osinte-solaris-posix.ads, s-osinte-hpux.ads, 
2072         s-osinte-darwin.adb, s-osinte-darwin.ads, s-osinte-lynxos-3.ads,
2073         s-osinte-lynxos-3.adb (To_Target_Priority): New function maps from
2074         System.Any_Priority to a POSIX priority on the target.
2075
2076         * system-linux-ia64.ads: 
2077         Extend range of Priority types on Linux to use the whole range made
2078         available by the system.
2079
2080         * s-osinte-aix.adb, s-osinte-aix.ads (To_Target_Priority): New
2081         function maps from System.Any_Priority to a POSIX priority on the
2082         target.
2083         (PTHREAD_PRIO_PROTECT): Set real value.
2084         (PTHREAD_PRIO_INHERIT): Now a function.
2085         (SIGCPUFAIL): New signal.
2086         (Reserved): Add SIGALRM1, SIGWAITING, SIGCPUFAIL, since these signals
2087         are documented as reserved by the OS.
2088
2089         * system-aix.ads: Use the full range of priorities provided by the
2090         system on AIX.
2091
2092         * s-taprop-posix.adb: Call new function To_Target_Priority.
2093         (Set_Priority): Take into account Task_Dispatching_Policy and
2094         Priority_Specific_Dispatching pragmas when determining if Round Robin
2095         must be used for scheduling the task.
2096
2097         * system-linux-x86_64.ads, system-linux-x86.ads, 
2098         system-linux-ppc.ads: Extend range of Priority types on Linux to use
2099         the whole range made available by the system.
2100
2101         * s-taprop-vms.adb, s-taprop-mingw.adb, s-taprop-irix.adb, 
2102         s-taprop-tru64.adb, s-taprop-linux.adb, s-taprop-hpux-dce.adb, 
2103         s-taprop-lynxos.adb (Finalize_TCB): invalidate the stack-check cache
2104         when deallocating the TCB in order to avoid potential references to
2105         deallocated data.
2106         (Set_Priority): Take into account Task_Dispatching_Policy and
2107         Priority_Specific_Dispatching pragmas when determining if Round Robin
2108         or FIFO within priorities must be used for scheduling the task.
2109
2110         * s-taprop-vxworks.adb (Enter_Task): Store the user-level task id in
2111         the Thread field (to be used internally by the run-time system) and the
2112         kernel-level task id in the LWP field (to be used by the debugger).
2113         (Create_Task): Reorganize to unify the calls to taskSpawn into a single
2114         instance, and propagate the current task options to the spawned task.
2115         (Set_Priority): Take into account Priority_Specific_Dispatching pragmas.
2116         (Initialize): Set Round Robin dispatching when the corresponding pragma
2117         is in effect.
2118
2119 2006-10-31  Robert Dewar  <dewar@adacore.com>
2120
2121         * system-vms_64.ads, system-darwin-ppc.ads, system-vxworks-x86.ads, 
2122         system-linux-hppa.ads, system-hpux-ia64.ads, 
2123         system-lynxos-ppc.ads, system-lynxos-x86.ads, system-tru64.ads, 
2124         system-vxworks-sparcv9.ads, system-solaris-x86.ads, 
2125         system-irix-o32.ads, system-irix-n32.ads, system-hpux.ads, 
2126         system-vxworks-m68k.ads, system-vxworks-mips.ads, system-interix.ads, 
2127         system-solaris-sparc.ads, system-solaris-sparcv9.ads, system-vms.ads, 
2128         system-mingw.ads, system-vms-zcx.ads, system-vxworks-ppc.ads, 
2129         system-vxworks-alpha.ads, system.ads: Add pragma Warnings(Off,
2130         Default_Bit_Order) to kill constant condition warnings for references
2131         to this switch.
2132
2133 2006-10-31  Vincent Celier  <celier@adacore.com>
2134             Eric Botcazou  <ebotcazou@adacore.com>
2135
2136         * mlib-tgt-lynxos.adb, mlib-tgt-mingw.adb, mlib-tgt-tru64.adb,
2137         mlib-tgt-aix.adb, mlib-tgt-irix.adb, mlib-tgt-hpux.adb,
2138         mlib-tgt-linux.adb, mlib-tgt-solaris.adb: Use Append_To, instead of
2139         Ext_To, when building the library file name
2140
2141         * mlib-tgt-vxworks.adb: ditto.
2142         (Get_Target_Suffix): Add support for x86 targets.
2143
2144         * mlib-fil.ads, mlib-fil.adb: (Append_To): New function
2145
2146         * mlib-tgt-darwin.adb: 
2147         Use Append_To, instead of Ext_To, when building the library file name
2148         (Flat_Namespace): New global variable.
2149         (No_Shared_Libgcc_Switch): Rename to No_Shared_Libgcc_Options.
2150         (Shared_Libgcc_Switch): Rename to With_Shared_Libgcc_Options.
2151         (Link_Shared_Libgcc): Delete.
2152         (Build_Dynamic_Library): Adjust for above changes.
2153         Use Opt package.
2154         (Build_Dynamic_Library): Pass -shared-libgcc if GCC 4 or later.
2155
2156 2006-10-31  Eric Botcazou  <ebotcazou@adacore.com>
2157
2158         * s-taprop-solaris.adb: (Time_Slice_Val): Change type to Integer.
2159         (Initialize): Add type conversions required by above change.
2160
2161 2006-10-31  Jose Ruiz  <ruiz@adacore.com>
2162
2163         * s-osinte-vxworks.ads, s-osinte-vxworks.adb: 
2164         (getpid): New body for this function that uses the underlying taskIdSelf
2165         function for VxWorks 5 and VxWorks 6 in kernel mode.
2166         (unsigned_int): New type, modular to allow logical bit operations.
2167         (taskOptionsGet): New imported function.
2168
2169         * s-taspri-vxworks.ads (Private_Data): Change the type for the LWP
2170         field to be compliant with the type used by the corresponding operating
2171         system primitive.
2172
2173 2006-10-31  Pascal Obry  <obry@adacore.com>
2174             Eric Botcazou  <ebotcazou@adacore.com>
2175             Vincent Celier  <celier@adacore.com>
2176
2177         * adaint.c (__gnat_get_libraries_from_registry): Call explicitly the
2178         ASCII version of the registry API. This is needed as the GNAT runtime
2179         is now UNICODE by default.
2180         Include version.h.
2181         (get_gcc_version): Do not hardcode the return value.
2182         (__gnat_file_time_name): On Windows properly set the default returned
2183         value to -1 which corresponds to Invalid_Time.
2184         (__gnat_fopen): New routine. A simple wrapper on all plateforms
2185          except on Windows where it does conversion for unicode support.
2186         (__gnat_freopen): Idem.
2187         (__gnat_locate_exec_on_path): If environment variable PATH does not
2188         exist, return a NULL pointer
2189
2190         * adaint.h: (__gnat_fopen): Declare.
2191         (__gnat_freopen): Likewise.
2192
2193         * mingw32.h (_tfreopen): Define this macro here for older MingW
2194         version.
2195         Activate the unicode support on platforms using a MingW runtime
2196         version 3.9 or newer.
2197
2198         * s-crtl.ads (fopen): Is now an import to the wrapper __gnat_freopen.
2199         This is needed for proper unicode support on Windows.
2200         (freopen): Idem.
2201
2202 2006-10-31  Eric Botcazou  <ebotcazou@adacore.com>
2203             Nicolas Setton  <setton@adacore.com>
2204             Olivier Hainque  <hainque@adacore.com>
2205             Gary Dismukes  <dismukes@adacore.com>
2206
2207         * gigi.h: (tree_code_for_record_type): Declare.
2208         (add_global_renaming_pointer): Rename to record_global_renaming_pointer.
2209         (get_global_renaming_pointers): Rename to
2210         invalidate_global_renaming_pointers.
2211         (static_ctors): Delete.
2212         (static_dtors): Likewise.
2213         (gnat_write_global_declarations): Declare.
2214         (create_var_decl): Adjust descriptive comment to indicate that the
2215         subprogram may return a CONST_DECL node.
2216         (create_true_var_decl): Declare new function, similar to
2217         create_var_decl but forcing the creation of a VAR_DECL node.
2218         (get_global_renaming_pointers): Declare.
2219         (add_global_renaming_pointer): Likewise.
2220
2221         * ada-tree.h (DECL_READONLY_ONCE_ELAB): New macro.
2222
2223         * decl.c (gnat_to_gnu_entity) <case E_Function>: Don't copy the type
2224         tree before setting TREE_ADDRESSABLE for by-reference return mechanism
2225         processing.
2226         (gnat_to_gnu_entity): Remove From_With_Type from computation for
2227         imported_p.
2228         <E_Access_Type>: Use the Non_Limited_View as the full view of the
2229         designated type if the pointer comes from a limited_with clause.  Make
2230         incomplete designated type if it is in the main unit and has a freeze
2231         node.
2232         <E_Incomplete_Type>: Rework to treat Non_Limited_View, Full_View, and
2233         Underlying_Full_View similarly.  Return earlier if the full view already
2234         has an associated tree.
2235         (gnat_to_gnu_entity) <E_Record_Type>: Restore comment.
2236         (gnat_to_gnu_entity) <E_Record_Type>: Do not use a dummy type.
2237         (gnat_to_gnu_entity) <E_Variable>: Set TYPE_REF_CAN_ALIAS_ALL on the
2238         reference type built for objects with an address clause.
2239         Use create_true_var_decl with const_flag set for
2240         DECL_CONST_CORRESPONDING_VARs, ensuring a VAR_DECL is created with
2241         TREE_READONLY set.
2242         (gnat_to_gnu_entity, case E_Enumeration_Type): Set TYPE_NAME
2243         for Character and Wide_Character types. This info is read by the
2244         dwarf-2 writer, and is needed to be able to use the command "ptype
2245         character" in the debugger.
2246         (gnat_to_gnu_entity): When generating a type representing
2247         a Character or Wide_Character type, set the flag TYPE_STRING_FLAG,
2248         so that debug writers can distinguish it from ordinary integers.
2249         (elaborate_expression_1): Test the DECL_READONLY_ONCE_ELAB flag in
2250         addition to TREE_READONLY to assert the constantness of variables for
2251         elaboration purposes.
2252         (gnat_to_gnu_entity, subprogram cases): Change loops on formal
2253         parameters to call new Einfo function First_Formal_With_Extras.
2254         (gnat_to_gnu_entity): In type_annotate mode, replace a discriminant of a
2255         protected type with its corresponding discriminant, to obtain a usable
2256         declaration
2257         (gnat_to_gnu_entity) <E_Access_Protected_Subprogram_Type>: Be prepared
2258         for a multiple elaboration of the "equivalent" type.
2259         (gnat_to_gnu_entity): Adjust for renaming of add_global_renaming_pointer
2260         into record_global_renaming_pointer.
2261         (gnat_to_gnu_entity) <E_Array_Type>: Do not force
2262         TYPE_NONALIASED_COMPONENT to 0 if the element type is an aggregate.
2263         <E_Array_Subtype>: Likewise.
2264         (gnat_to_gnu_entity) <E_Incomplete_Subtype>: Add support for regular
2265         incomplete subtypes and incomplete subtypes of incomplete types visible
2266         through a limited with clause.
2267         (gnat_to_gnu_entity) <E_Array_Subtype>: Take into account the bounds of
2268         the base index type for the maximum size of the array only if they are
2269         constant.
2270         (gnat_to_gnu_entity, renaming object case): Do not wrap up the
2271         expression into a SAVE_EXPR if stabilization failed.
2272
2273         * utils.c (create_subprog_decl): Turn TREE_ADDRESSABLE on the type of
2274         a result decl into DECL_BY_REFERENCE on this decl, now what is expected
2275         by lower level compilation passes.
2276         (gnat_genericize): New function, lowering a function body to GENERIC.
2277         Turn the type of RESULT_DECL into a real reference type if the decl
2278         has been marked DECL_BY_REFERENCE, and adjust references to the latter
2279         accordingly.
2280         (gnat_genericize_r): New function. Tree walking callback for
2281         gnat_genericize.
2282         (convert_from_reference, is_byref_result): New functions. Helpers for
2283         gnat_genericize_r.
2284         (create_type_decl): Call gnat_pushdecl before calling
2285         rest_of_decl_compilation, to make sure that field TYPE_NAME of
2286         type_decl is properly set before calling the debug information writers.
2287         (write_record_type_debug_info): The heuristics which compute the
2288         alignment of a field in a variant record might not be accurate. Add a
2289         safety test to make sure no alignment is set to a smaller value than
2290         the alignment of the field type.
2291         (make_dummy_type): Use the Non_Limited_View as the underlying type if
2292         the type comes from a limited_with clause. Do not loop on the full view.
2293         (GET_GNU_TREE, SET_GNU_TREE, PRESENT_GNU_TREE): New macros.
2294         (dummy_node_table): New global variable, moved from decl.c.
2295         (GET_DUMMY_NODE, SET_DUMMY_NODE, PRESENT_DUMMY_NODE): New macros.
2296         (save_gnu_tree): Use above macros.
2297         (get_gnu_tree): Likewise.
2298         (present_gnu_tree): Likewise.
2299         (init_dummy_type): New function, moved from decl.c. Use above macros.
2300         (make_dummy_type): Likewise.
2301         (tree_code_for_record_type): New function extracted from make_dummy_type
2302         (init_gigi_decls): Set DECL_IS_MALLOC on gnat_malloc.
2303         (static_ctors): Change it to a vector, make static.
2304         (static_dtors): Likewise.
2305         (end_subprog_body): Adjust for above change.
2306         (build_global_cdtor): Moved from trans.c.
2307         (gnat_write_global_declarations): Emit global constructor and
2308         destructor, and call cgraph_optimize before emitting debug info for
2309         global declarations.
2310         (global_decls): New global variable.
2311         (gnat_pushdecl): Store the global declarations in global_decls, for
2312         later use.
2313         (gnat_write_global_declarations): Emit debug information for global
2314          declarations.
2315         (create_var_decl_1): Former create_var_decl, with an extra argument to
2316          state whether the creation of a CONST_DECL is allowed.
2317         (create_var_decl): Behavior unchanged. Now a wrapper around
2318         create_var_decl_1 allowing CONST_DECL creation.
2319         (create_true_var_decl): New function, similar to create_var_decl but
2320         forcing the creation of a VAR_DECL node (CONST_DECL not allowed).
2321         (create_field_decl): Do not always mark the field as addressable
2322         if its type is an aggregate.
2323         (global_renaming_pointers): New static variable.
2324         (add_global_renaming_pointer): New function.
2325         (get_global_renaming_pointers): Likewise.
2326
2327         * misc.c (gnat_dwarf_name): New function.
2328         (LANG_HOOKS_DWARF_NAME): Define to gnat_dwarf_name.
2329         (gnat_post_options): Add comment about structural alias analysis.
2330         (gnat_parse_file): Do not call cgraph_optimize here.
2331         (LANG_HOOKS_WRITE_GLOBALS): Define to gnat_write_global_declarations.
2332
2333         * trans.c (process_freeze_entity): Don't abort if we already have a
2334         non dummy GCC tree for a Concurrent_Record_Type, as it might
2335         legitimately have been elaborated while processing the associated
2336         Concurrent_Type prior to this explicit freeze node.
2337         (Identifier_to_gnu): Do not make a variable referenced in a SJLJ
2338         exception handler volatile if it is of variable size.
2339         (process_type): Remove bypass for types coming from a limited_with
2340         clause.
2341         (call_to_gnu): When processing the copy-out of a N_Type_Conversion GNAT
2342         actual, convert the corresponding gnu_actual to the real destination
2343         type when necessary.
2344         (add_decl_expr): Set the DECL_READONLY_ONCE_ELAB flag on variables
2345         originally TREE_READONLY but whose elaboration cannot be performed
2346         statically.
2347         Part of fix for F504-021.
2348         (tree_transform, subprogram cases): Change loops on formal parameters to
2349         call new Einfo function First_Formal_With_Extras.
2350         (gnat_to_gnu) <N_Op_Shift_Right_Arithmetic>: Ignore constant overflow
2351         stemming from type conversion for the lhs.
2352         (Attribute_to_gnu) <Attr_Alignment>: Also divide the alignment by the
2353         number of bits per unit for components of records.
2354         (gnat_to_gnu) <N_Code_Statement>: Mark operands addressable if needed.
2355         (Handled_Sequence_Of_Statements_to_gnu): Register the cleanup associated
2356         with At_End_Proc after the SJLJ EH cleanup.
2357         (Compilation_Unit_to_gnu): Call elaborate_all_entities only on the main
2358         compilation unit.
2359         (elaborate_all_entities): Do not retest type_annotate_only.
2360         (tree_transform) <N_Abstract_Subprogram_Declaration>: Process the
2361         result type of an abstract subprogram, which may be an itype associated
2362         with an anonymous access result (related to AI-318-02).
2363         (build_global_cdtor): Move to utils.c.
2364         (Case_Statement_to_gnu): Avoid adding the choice of a when statement if
2365         this choice is not a null tree nor an integer constant.
2366         (gigi): Run unshare_save_expr via walk_tree_without_duplicates
2367         on the body of elaboration routines instead of mark_unvisited.
2368         (add_stmt): Do not mark the tree.
2369         (add_decl_expr): Tweak comment.
2370         (mark_unvisited): Delete.
2371         (unshare_save_expr): New static function.
2372         (call_to_gnu): Issue an error when making a temporary around a
2373         procedure call because of non-addressable actual parameter if the
2374         type of the formal is by_reference.
2375         (Compilation_Unit_to_gnu): Invalidate the global renaming pointers
2376         after building the elaboration routine.
2377
2378 2006-10-31  Bob Duff  <duff@adacore.com>
2379
2380         * a-filico.adb (Finalize(List_Controller)): Mark the finalization list
2381         as finalization-started, so we can raise Program_Error on 'new'.
2382
2383         * s-finimp.adb: Raise Program_Error on 'new' if finalization of the
2384         collection has already started.
2385
2386         * s-finimp.ads (Collection_Finalization_Started): Added new special
2387         flag value for indicating that a collection's finalization has started.
2388
2389         * s-tassta.adb (Create_Task): Raise Program_Error on an attempt to
2390         create a task whose master has already waited for dependent tasks.
2391
2392 2006-10-31  Robert Dewar  <dewar@adacore.com>
2393
2394         * lib.adb, lib.ads: (In_Predefined_Unit): New functions
2395
2396         * a-finali.ads, a-ngcoty.ads, a-strbou.ads, a-stream.ads, a-strmap.ads, 
2397         a-strunb.ads, a-stwibo.ads, a-stwima.ads, a-stwiun.ads, a-taside.ads, 
2398         a-coorse.ads, a-convec.ads, a-coinve.ads, a-cohama.ads, a-ciorse.ads, 
2399         a-cihama.ads, a-cihase.ads, a-cohase.ads, a-ciorma.ads, a-coorma.ads, 
2400         a-ciormu.ads, a-coormu.ads, a-stzbou.ads, a-stzmap.ads, a-stzunb.ads, 
2401         a-except-2005.ads: Add pragma Preelaborable_Warning
2402
2403 2006-10-31  Robert Dewar  <dewar@adacore.com>
2404             Jose Ruiz  <ruiz@adacore.com>
2405
2406         * a-dispat.ads, a-dispat.adb, a-diroro.ads, a-diroro.adb: New files.
2407
2408         * ali.adb (Get_Name): Properly handle scanning of wide character names
2409         encoded with brackets notation.
2410         (Known_ALI_Lines): Add S lines to this list.
2411         (Scan_ALI): Acquire S (priority specific dispatching) lines.
2412         New flag Elaborate_All_Desirable in unit table
2413
2414         * ali.ads (Priority_Specific_Dispatching): Add this range of
2415         identifiers to be used for Priority_Specific_Dispatching table entries.
2416         (ALIs_Record): Add First_Specific_Dispatching and
2417         Last_Specific_Dispatching that point to the first and last entries
2418         respectively in the priority specific dispatching table for this unit.
2419         (Specific_Dispatching): Add this table for storing each S (priority
2420         specific dispatching) line encountered in the input ALI file.
2421         New flag Elaborate_All_Desirable in unit table
2422
2423         * bcheck.adb: (Check_Configuration_Consistency): Add call to
2424         Check_Consistent_Dispatching_Policy.
2425         (Check_Consistent_Dispatching_Policy): Add this procedure in charge of
2426         verifying that the use of Priority_Specific_Dispatching,
2427         Task_Dispatching_Policy, and Locking_Policy is consistent across the
2428         partition.
2429
2430         * bindgen.adb: (Public_Version_Warning): function removed.
2431         (Set_PSD_Pragma_Table): Add this procedure in charge of getting the
2432         required information from ALI files in order to initialize the table
2433         containing the specific dispatching policy.
2434         (Gen_Adainit_Ada): Generate the variables required for priority specific
2435         dispatching entries (__gl_priority_specific_dispatching and
2436         __gl_num_specific_dispatching).
2437         (Gen_Adainit_C): Generate the variables required for priority specific
2438         dispatching entries (__gl_priority_specific_dispatching and
2439         __gl_num_specific_dispatching).
2440         (Gen_Output_File): Acquire settings for Priority_Specific_Dispatching
2441         pragma entries.
2442         (Gen_Restrictions_String_1, Gen_Restrictions_String_2): Removed.
2443         (Gen_Restrictions_Ada, Gen_Restrictions_C, Set_Boolean): New procedures.
2444         (Tab_To): Removed.
2445         (Gen_Output_File_Ada/_C): Set directly __gl_xxx variables instead of
2446         a call to gnat_set_globals.
2447         Generate a string containing settings from
2448         Priority_Specific_Dispatching pragma entries.
2449         (Gen_Object_Files_Options): Do not include the runtime libraries when
2450         pragma No_Run_Time is specified.
2451
2452         * init.c (__gnat_install_handler, case FreeBSD): Use SA_SIGINFO, for
2453         consistency with s-intman-posix.adb.
2454         (__gnat_error_handler, case FreeBSD): Account for the fact that the
2455         handler is installed with SA_SIGINFO.
2456         (__gnat_adjust_context_for_raise, FreeBSD case): New function for
2457         FreeBSD ZCX support, copied from Linux version.
2458         Add MaRTE-specific definitions for the linux target. Redefine sigaction,
2459         sigfillset, and sigemptyset so the routines defined by MaRTE.
2460         (__gl_priority_specific_dispatching): Add this variable that stores the
2461         string containing priority specific dispatching policies in the
2462         partition.
2463         (__gl_num_specific_dispatching): Add this variable that indicates the
2464         highest priority for which a priority specific dispatching pragma
2465         applies.
2466         (__gnat_get_specific_dispatching): Add this routine that returns the
2467         priority specific dispatching policy, as set by a
2468         Priority_Specific_Dispatching pragma appearing anywhere in the current
2469         partition. The input argument is the priority number, and the result
2470         is the upper case first character of the policy name.
2471         (__gnat_set_globals): Now a dummy function.
2472         (__gnat_handle_vms_condition): Feed adjust_context_for_raise with
2473         mechargs instead of sigargs, as the latter can be retrieved from the
2474         former and sigargs is not what we want on ia64.
2475         (__gnat_adjust_context_for_raise, alpha-vms): Fetch sigargs from the
2476         mechargs argument.
2477         (__gnat_adjust_context_for_raise, ia64-vms): New function.
2478         (tasking_error): Remove unused symbol.
2479         (_abort_signal): Move this symbol to the IRIX specific part since this
2480         is the only target that uses this definition.
2481         (Check_Abort_Status): Move this symbol to the IRIX specific part since
2482         this is the only target that uses this definition.
2483         (Lock_Task): Remove unused symbol.
2484         (Unlock_Task): Remove unused symbol.
2485
2486         * lib-writ.adb (Write_ALI): Output new S lines for
2487         Priority_Specific_Dispatching pragmas.
2488         Implement new flag BD for elaborate body desirable
2489
2490         * lib-writ.ads: Document S lines for Priority Specific Dispatching.
2491         (Specific_Dispatching): Add this table for storing the entries
2492         corresponding to Priority_Specific_Dispatching pragmas.
2493         Document new BD flag for elaborate body desirable
2494
2495         * par-prag.adb (Prag): Add Priority_Specific_Dispatching to the list
2496         of known pragmas.
2497
2498 2006-10-31  Javier Miranda  <miranda@adacore.com>
2499
2500         * a-tags.ads, a-tags.adb: 
2501         (Predefined_DT): New function that improves readability of the code.
2502         (Get_Predefined_Prim_Op_Address, Set_Predefined_Prim_Op_Address,
2503         Inherit_DT): Use the new function Predefined_DT to improve code
2504         readability.
2505         (Register_Interface_Tag): Update assertion.
2506         (Set_Interface_Table): Update assertion.
2507         (Interface_Ancestor_Tags): New subprogram required to implement AI-405:
2508         determining progenitor interfaces in Tags.
2509         (Inherit_CPP_DT): New subprogram.
2510
2511         * exp_disp.adb (Expand_Interface_Thunk): Suppress checks during the
2512         analysis of the thunk code.
2513         (Expand_Interface_Conversion): Handle run-time conversion of
2514         access to class wide types.
2515         (Expand_Dispatching_Call): When generating the profile for the
2516         subprogram itype for a dispatching operation, properly terminate the
2517         formal parameters chaind list (set the Next_Entity of the last formal
2518         to Empty).
2519         (Collect_All_Interfaces): Removed. This routine has been moved to
2520         sem_util and renamed as Collect_All_Abstract_Interfaces.
2521         (Set_All_DT_Position): Hidden entities associated with abstract
2522         interface primitives are not taken into account in the check for
2523         3.9.3(10); this check is done with the aliased entity.
2524         (Make_DT, Set_All_DT_Position): Enable full ABI compatibility for
2525         interfacing with CPP by default.
2526         (Expand_Interface_Conversion): Add missing support for static conversion
2527         from an interface to a tagged type.
2528         (Collect_All_Interfaces): Add new out formal containing the list of
2529         abstract interface types to cleanup the subprogram Make_DT.
2530         (Make_DT): Update the code to generate the table of interfaces in case
2531         of abstract interface types.
2532         (Is_Predefined_Dispatching_Alias): New function that returns true if
2533         a primitive is not a predefined dispatching primitive but it is an
2534         alias of a predefined dispatching primitive.
2535         (Make_DT): If the ancestor of the type is a CPP_Class and we are
2536         compiling under full ABI compatibility mode we avoid the generation of
2537         calls to run-time services that fill the dispatch tables because under
2538         this mode we currently inherit the dispatch tables in the IP subprogram.
2539         (Write_DT): Emit an "is null" indication for a null procedure primitive.
2540         (Expand_Interface_Conversion): Use an address as the type of the formal
2541         of the internally built function that handles the case in which the
2542         target type is an access type.
2543
2544 2006-10-31  Robert Dewar  <dewar@adacore.com>
2545
2546         * binde.adb (Better_Choice, Worse_Choice): Implement new preferences.
2547
2548 2006-10-31  Robert Dewar  <dewar@adacore.com>
2549
2550         * bindusg.ads, bindusg.adb:
2551         Change to package and rename procedure as Display, which
2552         now ensures that it only outputs usage information once.
2553
2554 2006-10-31  Jose Ruiz  <ruiz@adacore.com>
2555
2556         * cal.c: Use the header sys/time.h for VxWorks 6.2 or greater when
2557         using RTPs.
2558
2559         * mkdir.c: Use a different version of mkdir for VxWorks 6.2 or greater
2560         when using RTPs.
2561
2562 2006-10-31  Robert Dewar  <dewar@adacore.com>
2563             Ed Schonberg  <schonberg@adacore.com>
2564
2565         * treepr.adb: Use new subtype N_Membership_Test
2566
2567         * checks.ads, checks.adb: Add definition for Validity_Check
2568         (Range_Or_Validity_Checks_Suppressed): New function
2569         (Ensure_Valid): Test Validity_Check suppressed
2570         (Insert_Valid_Check): Test Validity_Check suppressed
2571         (Insert_Valid_Check): Preserve Do_Range_Check flag
2572         (Validity_Check_Range): New procedure
2573         (Expr_Known_Valid): Result of membership test is always valid
2574         (Selected_Range_Checks): Range checks cannot be applied to discriminants
2575         by themselves. Disabling those checks must also be done for task types,
2576         where discriminants may be used for the bounds of entry families.
2577         (Apply_Address_Clause_Check): Remove side-effects if address expression
2578         is non-static and is not the name of a declared constant.
2579         (Null_Exclusion_Static_Checks): Extend to handle Function_Specification.
2580         Code cleanup and new error messages.
2581         (Enable_Range_Check): Test for some cases of suppressed checks
2582         (Generate_Index_Checks): Suppress index checks if index checks are
2583         suppressed for array object or array type.
2584         (Apply_Selected_Length_Checks): Give warning for compile-time detected
2585         length check failure, even if checks are off.
2586         (Ensure_Valid): Do not generate a check on an indexed component whose
2587         prefix is a packed boolean array.
2588         * checks.adb: (Alignment_Checks_Suppressed): New function
2589         (Apply_Address_Clause_Check): New procedure, this is a completely
2590         rewritten replacement for Apply_Alignment_Check
2591         (Get_E_Length/Get_E_First_Or_Last): Add missing barrier to ensure that
2592         we request a discriminal value only in case of discriminants.
2593         (Apply_Discriminant_Check): For Ada_05, only call Get_Actual_Subtype for
2594         assignments where the target subtype is unconstrained and the target
2595         object is a parameter or dereference (other aliased cases are known
2596         to be unconstrained).
2597
2598 2006-10-31  Robert Dewar  <dewar@adacore.com>
2599
2600         * clean.adb, gnatname.adb, gnatsym.adb, prep.adb, prep.ads,
2601         prepcomp.adb, prj.ads, prj-strt.adb, sem_maps.ads,
2602         vms_conv.adb: Fix bad table increment values (much too small)
2603
2604         * table.adb (Realloc): Make sure we get at least some new elements
2605         Defends against silly small values for table increment
2606
2607 2006-10-31  Robert Dewar  <dewar@adacore.com>
2608             Ed Schonberg  <schonberg@adacore.com>
2609             Bob Duff  <duff@adacore.com>
2610
2611         * einfo.ads, einfo.adb (Obsolescent_Warning): Now defined on all
2612         entities. Move other fields around to make this possible
2613         (Is_Derived_Type): Add missing call to Is_Type.
2614         (Extra_Formals): New function for subprograms, entries, subprogram
2615         types.
2616         (Set_Extra_Formals): New procedure for subprograms, entries, subp types.
2617         (First_Formal_With_Extras): New function for subprogs, entries, subp
2618         types.
2619         (Write_Field28_Name): New procedure for node display of "Extra_Formals".
2620         Add node information for E_Return_Statement.
2621         (Elaborate_Body_Desirable): New flag
2622         (Is_Return_By_Reference_Type): Rename Is_Return_By_Reference_Type
2623         to be Is_Inherently_Limited_Type, because return-by-reference has
2624         no meaning in Ada 2005.
2625         (E_Return_Statement): New entity kind.
2626         (Return_Applies_To): Field of E_Return_Statement.
2627         (Is_Return_Object): New flag in object entities.
2628         (Is_Dynamic_Scope): Make it True for E_Return_Statement.
2629         (Must_Have_Preelab_Init): New flag
2630         (Known_To_Have_Preelab_Init): New flag
2631         (Is_Formal_Object): Move from Sem_Ch8 body to Einfo
2632         (Is_Visible_Formal): New flag on entities in formal packages.
2633         (Low_Bound_Known): New flag
2634         (Non_Limited_View, Set_Non_Limited_View): Add membership test agains
2635         Incomplete_Kind.
2636         (Write_Field17_Name): Correct spelling of Non_Limited_View. Add name
2637         output when Id is an incomplete subtype.
2638
2639 2006-10-31  Robert Dewar  <dewar@adacore.com>
2640
2641         * errout.ads, errout.adb (Finalize): Implement switch -gnatd.m
2642         Avoid abbreviation Creat
2643         (Finalize): List all sources in extended mail source if -gnatl
2644         switch is active.
2645         Suppress copyright notice to file in -gnatl=f mode if -gnatd7 set
2646         (Finalize): Implement new -gnatl=xxx switch to output listing to file
2647         (Set_Specific_Warning_On): New procedure
2648         (Set_Specific_Warning_Off): New procedure
2649         Add implementation of new insertion \\
2650         (Error_Msg_Internal): Add handling for Error_Msg_Line_Length
2651         (Unwind_Internal_Type): Improve report on anonymous access_to_subprogram
2652         types.
2653         (Error_Msg_Internal): Make sure that we set Last_Killed to
2654         True when a message from another package is suppressed.
2655         Implement insertion character ~ (insert string)
2656         (First_Node): Minor adjustments to get better placement.
2657
2658         * frontend.adb: 
2659         Implement new -gnatl=xxx switch to output listing to file
2660
2661         * gnat1drv.adb: 
2662         Implement new -gnatl=xxx switch to output listing to file
2663
2664         * opt.ads: (Warn_On_Questionable_Missing_Paren): New switch
2665         (Commands_To_Stdout): New flag
2666         Implement new -gnatl=xxx switch to output listing to file
2667         New switch Dump_Source_Text
2668         (Warn_On_Deleted_Code): New warning flag for -gnatwt
2669         Define Error_Msg_Line_Length
2670         (Warn_On_Assumed_Low_Bound): New switch
2671
2672         * osint.ads, osint.adb
2673         (Normalize_Directory_Name): Fix bug.
2674         Implement new -gnatl=xxx switch to output listing to file
2675         (Concat): Removed, replaced by real concatenation
2676         Make use of concatenation now allowed in compiler
2677         (Executable_Prefix.Get_Install_Dir): First get the full path, so that
2678         we find the 'lib' or 'bin' directory even when the tool has been
2679         invoked with a relative path.
2680         (Executable_Name): New function taking string parameters.
2681
2682         * osint-c.ads, osint-c.adb: 
2683         Implement new -gnatl=xxx switch to output listing to file
2684
2685         * sinput-d.adb: Change name Creat_Debug_File to Create_Debug_File
2686
2687         * switch-c.adb: 
2688         Implement new -gnatl=xxx switch to output listing to file
2689         Recognize new -gnatL switch
2690         (no longer keep in old warning about old style usage)
2691         Use concatenation to simplify code
2692         Recognize -gnatjnn switch
2693         (Scan_Front_End_Switches): Clean up handling of -gnatW
2694         (Scan_Front_End_Switches): Include Warn_On_Assumed_Low_Bound for -gnatg
2695
2696 2006-10-31  Robert Dewar  <dewar@adacore.com>
2697
2698         * erroutc.ads, erroutc.adb (Set_Specific_Warning_On): New procedure
2699         (Set_Specific_Warning_Off): New procedure
2700         (Warning_Specifically_Suppressed): New function
2701         (Validate_Specific_Warnings): New procedure
2702         (Output_Msg_Text): Complete rewrite to support -gnatjnn
2703
2704         * err_vars.ads: Implement insertion character ~ (insert string)
2705
2706 2006-10-31  Bob Duff  <duff@adacore.com>
2707             Ed Schonberg  <schonberg@adacore.com>
2708
2709         * exp_aggr.adb (Build_Record_Aggr_Code): For extension aggregates, if
2710         the parent part is a build-in-place function call, generate assignments.
2711         (Expand_Record_Aggregate): Call Convert_To_Assignments if any components
2712         are build-in-place function calls.
2713         (Replace_Self_Reference): New subsidiary of
2714         Make_OK_Assignment_Statement, to replace an access attribute that is a
2715         self-reference into an access to the appropriate component of the
2716         target object. Generalizes previous mechanism to handle self-references
2717         nested at any level.
2718         (Is_Self_Referential_Init): Remove, not needed.
2719         (Is_Self_Referential_Init): New predicate to simplify handling of self
2720         referential components in record aggregates.
2721         (Has_Default_Init_Comps, Make_OK_Assignment_Statement): Add guard to
2722         check for presence of entity before checking for self-reference.
2723         (Has_Default_Init_Comps): Return True if a component association is a
2724         self-reference to the enclosing type, which can only come from a
2725         default initialization.
2726         (Make_OK_Assignment_Statement): If the expression is of the form
2727         Typ'Acc, where Acc is an access attribute, the expression comes from a
2728         default initialized self-referential component.
2729         (Build_Record_Aggr_Code): If the type of the aggregate is a tagged type
2730         that has been derived from several abstract interfaces we must also
2731         initialize the tags of the secondary dispatch tables.
2732
2733 2006-10-31  Ed Schonberg  <schonberg@adacore.com>
2734             Thomas Quinot  <quinot@adacore.com>
2735             Javier Miranda  <miranda@adacore.com>
2736             Robert Dewar  <dewar@adacore.com>
2737
2738         * exp_attr.adb: 
2739         (Expand_Access_To_Protected_Op): If the context indicates that an access
2740         to a local operation may be transfered outside of the object, create an
2741         access to the wrapper operation that must be used in an external call.
2742         (Expand_N_Attribute_Reference, case Attribute_Valid): For the AAMP
2743         target, pass the Valid attribute applied to a floating-point prefix on
2744         to the back end without expansion.
2745         (Storage_Size): Use the new run-time function Storage_Size to retrieve
2746         the allocated storage when it is specified by a per-object expression.
2747         (Expand_N_Attribute_Reference): Add case for Attribute_Stub_Type.
2748         Nothing to do here, the attribute has been rewritten during semantic
2749         analysis.
2750         (Expand_Attribute_Reference): Handle expansion of the new Priority
2751         attribute
2752         (Find_Fat_Info): Handle case of universal real
2753         (Expand_Access_To_Protected_Op): Fix use of access to protected
2754         subprogram from inside the body of a protected entry.
2755         (Expand_Access_To_Protected_Op): Common procedure for the expansion of
2756         'Access and 'Unrestricted_Access, to transform the attribute reference
2757         into a fat pointer.
2758         (Is_Constrained_Aliased_View): New predicate to help determine whether a
2759         subcomponent's enclosing variable is aliased with a constrained subtype.
2760         (Expand_N_Attribute_Reference, case Attribute_Constrained): For Ada_05,
2761         test Is_Constrained_Aliased_View rather than Is_Aliased_View, because
2762         an aliased prefix must be known to be constrained in order to use True
2763         for the attribute value, and now it's possible for some aliased views
2764         to be unconstrained.
2765
2766 2006-10-31  Robert Dewar  <dewar@adacore.com>
2767
2768         * exp_ch2.adb: Change Is_Lvalue to May_Be_Lvalue
2769         (Expand_Entity_Reference): Correct error of not handling subprogram
2770         formals in current_value processing.
2771
2772 2006-10-31  Javier Miranda  <miranda@adacore.com>
2773             Robert Dewar  <dewar@adacore.com>
2774             Ed Schonberg  <schonberg@adacore.com>
2775             Gary Dismukes  <dismukes@adacore.com>
2776
2777         * exp_ch3.ads, exp_ch3.adb (Expand_N_Object_Declaration): Do not
2778         register in the final list objects containing class-wide interfaces;
2779         otherwise we incorrectly register the tag of the interface in the final
2780         list.
2781         (Make_Controlling_Function_Wrappers): Add missing barrier to do not
2782         generate the wrapper if the parent primitive is abstract. This is
2783         required to report the correct error message.
2784         (Expand_N_Subtype_Indication): Do validity checks on range
2785         (Clean_Task_Names): If an initialization procedure includes a call to
2786         initialize a task (sub)component, indicate that the procedure will use
2787         the secondary stack.
2788         (Build_Init_Procedure, Init_Secondary_Tags): Enable full ABI
2789         compatibility for interfacing with CPP by default.
2790         (Expand_N_Object_Declaration): Only build an Adjust call when the
2791         object's type is a nonlimited controlled type.
2792         * exp_ch3.adb: Add with and use of Exp_Ch6.
2793         (Expand_N_Object_Declaration): Check for object initialization that is a
2794         call to build-in-place function and apply Make_Build_In_Place_Call_In_
2795         Object_Declaration to the call.
2796         (Freeze_Type): When the designated type of an RACW was not frozen at the
2797         point where the RACW was declared, validate the primitive operations
2798         with respect to E.2.2(14) when it finally is frozen.
2799         (Build_Initialization_Call,Expand_Record_Controller): Rename
2800         Is_Return_By_Reference_Type to be Is_Inherently_Limited_Type, because
2801         return-by-reference has no meaning in Ada 2005.
2802         (Init_Secondary_Tags): Add missing call to Set_Offset_To_Top
2803         to register tag of the immediate ancestor interfaces in the
2804         run-time structure.
2805         (Init_Secondary_Tags): Moved to the specification to allow the
2806         initialization of extension aggregates with abstract interfaces.
2807         (Build_Master_Renaming): Make public, for use by function declarations
2808         whose return type is an anonymous access type.
2809         (Freeze_Record_Type): Replace call to Insert_List_Before by call to
2810         Insert_List_Before_And_Analyze after the generation of the specs
2811         associated with null procedures.
2812         (Expand_Tagged_Root): Update documentation in its specification.
2813         (Init_Secondary_Tags): Update documentation.
2814         (Build_Init_Procedure): If we are compiling under CPP full ABI compa-
2815         tibility mode and the immediate ancestor is a CPP_Pragma tagged type
2816         then generate code to inherit the contents of the dispatch table
2817         directly from the ancestor.
2818         (Expand_Record_Controller): Insert controller component after tags of
2819         implemented interfaces.
2820         (Freeze_Record_Type): Call new procedure Make_Null_Procedure_Specs to
2821         create null procedure overridings when null procedures are inherited
2822         from interfaces.
2823         (Make_Null_Procedure_Specs): New procedure to generate null procedure
2824         declarations for overriding null primitives inherited from interfaces.
2825         (Is_Null_Interface_Procedure): New function in
2826         Make_Null_Procedure_Specs.
2827         (Make_Predefined_Primitive_Specs/Predefined_Primitive_Bodies): If the
2828         immediate ancestor of a tagged type is an abstract interface type we
2829         must generate the specification of the predefined primitives associated
2830         with controlled types (because the dispatch table of the ancestor is
2831         null and hence these entries cannot be inherited). This is required to
2832         elaborate well the dispatch table.
2833
2834 2006-10-31  Javier Miranda  <miranda@adacore.com>
2835             Ed Schonberg  <schonberg@adacore.com>
2836             Bob Duff  <duff@adacore.com>
2837             Gary Dismukes  <dismukes@adacore.com>
2838             Robert Dewar  <dewar@adacore.com>
2839
2840         * exp_ch4.adb (Expand_N_Type_Conversion): Handle missing interface type
2841         conversion.
2842         (Expand_N_In): Do validity checks on range
2843         (Expand_Selected_Component): Use updated for of Denotes_Discriminant.
2844         (Expand_N_Allocator): For "new T", if the object is constrained by
2845         discriminant defaults, allocate the right amount of memory, rather than
2846         the maximum for type T.
2847         (Expand_Allocator_Expression): Suppress the call to Remove_Side_Effects
2848         when the allocator is initialized by a build-in-place call, since the
2849         allocator is already rewritten as a reference to the function result,
2850         and this prevents an unwanted duplication of the function call.
2851         Add with and use of Exp_Ch6.
2852         (Expand_Allocator_Expresssion): Check for an allocator whose expression
2853         is a call to build-in-place function and apply
2854         Make_Build_In_Place_Call_In_Allocator to the call (for both tagged and
2855         untagged designated types).
2856         (Expand_N_Unchecked_Type_Conversion): Do not do integer literal
2857         optimization if source or target is biased.
2858         (Expand_N_Allocator): Add comments for case of an allocator within a
2859         function that returns an anonymous access type designating tasks.
2860         (Expand_N_Allocator): apply discriminant checks for access
2861         discriminants of anonymous access types (AI-402, AI-416)
2862
2863 2006-10-31  Bob Duff  <duff@adacore.com>
2864             Robert Dewar  <dewar@adacore.com>
2865             Gary Dismukes  <dismukes@adacore.com>
2866             Ed Schonberg  <schonberg@adacore.com>
2867
2868         * exp_ch5.ads (Expand_N_Extended_Return_Statement): New procedure.
2869
2870         * exp_ch5.adb (Expand_N_Loop_Statement): Do validity checks on range
2871         (Expand_N_Assignment_Statement): Call
2872         Make_Build_In_Place_Call_In_Assignment if the right-hand side is a
2873         build-in-place function call. Currently, this can happen only for
2874         assignments that come from aggregates.
2875         Add -gnatd.l --Use Ada 95 semantics for limited function returns,
2876         in order to alleviate the upward compatibility introduced by AI-318.
2877         (Expand_N_Extended_Return_Statement): Add support for handling the
2878         return object as a build-in-place result.
2879         (Expand_Non_Function_Return): Implement simple return statements nested
2880         within an extended return.
2881         (Enable_New_Return_Processing): Turn on the new processing of return
2882         statements.
2883         (Expand_Non_Function_Return): For a return within an extended return,
2884         don't raise Program_Error, because Sem_Ch6 now gives a warning.
2885         (Expand_N_Extended_Return_Statement): Implement AI-318
2886         (Expand_Simple_Function_Return): Ditto.
2887         (Expand_N_If_Statement): Handle new -gnatwt warning
2888         (Expand_N_Case_Statement): Handle new -gnatwt warning
2889         (Expand_N_Assignment): Handle assignment to the Priority attribute of
2890         a protected object.
2891         (Expand_N_Assignment_Statement): Implement -gnatVe/E to control
2892         validity checking of assignments to elementary record components.
2893         (Expand_N_Return_Statement): return Class Wide types on the secondary
2894         stack independantly of their controlled status since with HIE runtimes,
2895         class wide types are not potentially controlled anymore.
2896
2897         * expander.adb (Expand): Add case for new N_Extended_Return_Statement
2898         node kind.
2899
2900         * exp_ch11.adb (Expand_N_Handled_Sequence_Of_Statements): Avoid
2901         Expand_Cleanup_Actions in case of N_Extended_Return_Statement, because
2902         it expects a block, procedure, or task. The return statement will get
2903         turned into a block, and Expand_Cleanup_Actions will happen then.
2904
2905 2006-10-31  Robert Dewar  <dewar@adacore.com>
2906             Ed Schonberg  <schonberg@adacore.com>
2907             Bob Duff  <duff@adacore.com>
2908             Gary Dismukes  <dismukes@adacore.com>
2909
2910         * exp_ch6.ads, exp_ch6.adb: Use new Validity_Check suppression
2911         capability.
2912         (Expand_Inlined_Call): Tagged types are by-reference types, and
2913         therefore should be replaced by a renaming declaration in the expanded
2914         body, as is done for limited types.
2915         (Expand_Call): If this is a call to a function with dispatching access
2916         result, propagate tag from context.
2917         (Freeze_Subprogram): Enable full ABI compatibility for interfacing with
2918         CPP by default.
2919         (Make_Build_In_Place_Call_In_Assignment): New procedure to do
2920         build-in-place when the right-hand side of an assignment is a
2921         build-in-place function call.
2922         (Make_Build_In_Place_Call_In_Allocator): Apply an unchecked conversion
2923         of the explicit dereference of the allocator to the result subtype of
2924         the build-in-place function. This is needed to satisfy type checking
2925         in cases where the caller's return object is created by an allocator for
2926         a class-wide access type and the type named in the allocator is a
2927         specific type.
2928         (Make_Build_In_Place_Call_In_Object_Declaration): Apply an unchecked
2929         conversion of the reference to the declared object to the result subtype
2930         of the build-in-place function. This is needed to satisfy type checking
2931         in cases where the declared object has a class-wide type. Also, in the
2932         class-wide case, change the type of the object entity to the specific
2933         result subtype of the function, to avoid passing a class-wide object
2934         without explicit initialization to the back end.
2935         (Register_Interface_DT_Entry): Moved outside the body of
2936         Freeze_Subprogram because this routine is now public; it is called from
2937         Check_Dispatching_Overriding to handle late overriding of abstract
2938         interface primitives.
2939         (Add_Access_Actual_To_Build_In_Place_Call): New utility procedure for
2940         adding an implicit access actual on a call to a build-in-place function.
2941         (Expand_Actuals): Test for an actual parameter that is a call to a
2942         build-in-place function and apply
2943         Make_Build_In_Place_Call_In_Anonymous_Context to the call.
2944         (Is_Build_In_Place_Function): New function to determine whether an
2945         entity is a function whose calls should be handled as build-in-place.
2946         (Is_Build_In_Place_Function_Call): New function to determine whether an
2947         expression is a function call that should handled as build-in-place.
2948         (Make_Build_In_Place_Call_In_Allocator): New procedure for handling
2949         calls to build-in-place functions as the initialization of an allocator.
2950         (Make_Build_In_Place_Call_In_Anonymous_Context): New procedure for
2951         handling calls to build-in-place functions in contexts that do not
2952         involve init of a separate object (for example, actuals of subprogram
2953         calls).
2954         (Make_Build_In_Place_Call_In_Object_Declaration): New procedure for
2955         handling calls to build-in-place functions as the initialization of an
2956         object declaration.
2957         (Detect_Infinite_Recursion): Add explicit parameter Process to
2958         instantiation of Traverse_Body to avoid unreferenced warning.
2959         (Check_Overriding_Inherited_Interfaces): Removed.
2960         (Register_Interface_DT_Entry): Code cleanup.
2961         (Register_Predefined_DT_Entry): Code cleanup.
2962         (Expand_Inlined_Call.Rewrite_Procedure_Call): Do not omit block around
2963         inlined statements if within a transient scope.
2964         (Expand_Inlined_Call.Process_Formals): When replacing occurrences of
2965         formal parameters with occurrences of actuals in inlined body, establish
2966         visibility on the proper view of the actual's subtype for the body's
2967         context.
2968         (Freeze_Subprogram): Do nothing if we are compiling under full ABI
2969         compatibility mode and we have an imported CPP subprogram because
2970         for now we assume that imported CPP primitives correspond with
2971         objects whose constructor is in the CPP side (and therefore we
2972         don't need to generate code to register them in the dispatch table).
2973         (Expand_Actuals): Introduce copy of actual, only if it might be a bit-
2974         aligned selected component.
2975         (Add_Call_By_Copy_Node): Add missing code to handle the case in which
2976         the actual of an in-mode parameter is a type conversion.
2977         (Expand_Actuals): If the call does not come from source and the actual
2978         is potentially misaligned, let gigi handle it rather than rejecting the
2979         (Expand_N_Subprogram_Body, Freeze_Subprogram): set subprograms returning
2980         Class Wide types as returning by reference independantly of their
2981         controlled status since with HIE runtimes class wide types are not
2982         potentially controlled anymore.
2983
2984 2006-10-31  Ed Schonberg  <schonberg@adacore.com>
2985
2986         * exp_ch9.adb (Update_Prival_Types): Simplify code for entity
2987         references that are private components of the protected object.
2988         (Build_Barrier_Function): Set flag Is_Entry_Barrier_Function
2989         (Update_Prival_Subtypes): Add explicit Process argument to Traverse_Proc
2990         instantiation to deal with warnings.
2991         (Initialize_Protection): If expression for priority is non-static, use
2992         System_Priority as its expected type, in case the expression has not
2993         been analyzed yet.
2994
2995 2006-10-31  Robert Dewar  <dewar@adacore.com>
2996
2997         * exp_dbug.ads, exp_dbug.adb (Get_External_Name): Add missing
2998         initialization of Homonym_Len.
2999         (Fully_Qualify_Name): Remove kludge to eliminate anonymous block
3000         names from fully qualified name. Fixes problem of duplicate
3001         external names differing only in the presence of such a block name.
3002
3003 2006-10-31  Thomas Quinot  <quinot@adacore.com>
3004             Pablo Oliveira  <oliveira@adacore.com>
3005
3006         * exp_dist.adb (Get_Subprogram_Ids): This function will no more assign
3007         subprogram Ids, even if they are not yet assigned.
3008         (Build_Subprogram_Id): It is now this function that will take care of
3009         calling Assign_Subprogram_Ids if necessary.
3010         (Add_Receiving_Stubs_To_Declarations): Checking the subprograms ids
3011         should be done only once they are assigned.
3012         (Build_From_Any_Function, case of tagged types): Add missing call to
3013         Allocate_Buffer.
3014         (Corresponding_Stub_Type): New subprogram. Returns the associated stub
3015         type for an RACW type.
3016         (Add_RACW_Features): When processing an RACW declaration for which the
3017         designated type is already frozen, enforce E.2.2(14) rules immediately.
3018         (GARLIC_Support.Build_Subprogram_Receiving_Stubs): Do not perform any
3019         special reordering of controlling formals.
3020
3021         * exp_dist.ads (Corresponding_Stub_Type): New subprogram. Returns the
3022         associated stub type for an RACW type.
3023
3024 2006-10-31  Ed Schonberg  <schonberg@adacore.com>
3025
3026         * exp_fixd.adb (Rounded_Result_Set): For multiplication and division of
3027         fixed-point operations in an integer context, i.e. as operands of a
3028         conversion to an integer type, indicate that result must be rounded.
3029
3030 2006-10-31  Robert Dewar  <dewar@adacore.com>
3031
3032         * exp_imgv.adb (Expand_Image_Attribute): For Wide_[Wide_]Character
3033         cases, pass the encoding method, since it is now required by the run
3034         time.
3035
3036         * s-valwch.ads, s-valwch.adb (Value_Wide_Wide_Character): Avoid
3037         assumption that Str'First = 1.
3038         (Value_Wide_Character): Takes EM (encoding method) parameter and passes
3039         it on to the Value_Wide_Wide_Character call.
3040         (Value_Wide_Wide_Character): Takes EM (encoding method) parameter and
3041         properly handles a string of the form quote-encoded_wide_char-quote.
3042
3043         * s-wchcnv.adb: Minor reformatting
3044
3045 2006-10-31  Javier Miranda  <miranda@adacore.com>
3046
3047         * exp_intr.adb (Expand_Dispatching_Constructor_Call): Add missing
3048         run-time membership test to ensure that the constructed object
3049         implements the target abstract interface.
3050
3051 2006-10-31  Robert Dewar  <dewar@adacore.com>
3052
3053         * exp_prag.adb (Expand_Pragma_Common_Object): Use a single
3054         Machine_Attribute pragma internally to implement the user pragma.
3055         Add processing for pragma Interface so that it is now completely
3056         equivalent to pragma Import.
3057
3058         * sem_prag.adb (Analyze_Pragma, case Obsolescent): Extend this pragma
3059         so that it can be applied to all entities, including record components
3060         and enumeration literals.
3061         (Analyze_Pragma, case Priority_Specific_Dispatching): Check whether
3062         priority ranges are correct, verify compatibility against task
3063         dispatching and locking policies, and if everything is correct an entry
3064         is added to the table containing priority specific dispatching entries
3065         for this compilation unit.
3066         (Delay_Config_Pragma_Analyze): Delay processing
3067         Priority_Specific_Dispatching pragmas because when processing the
3068         pragma we need to access run-time data, such as the range of
3069         System.Any_Priority.
3070         (Sig_Flags): Add Pragma_Priority_Specific_Dispatching.
3071         Allow pragma Unreferenced as a context item
3072         Add pragma Preelaborable_Initialization
3073         (Analyze_Pragma, case Interface): Interface is extended so that it is
3074         now syntactically and semantically equivalent to Import.
3075         (Analyze_Pragma, case Compile_Time_Warning): Fix error of blowups on
3076         insertion characters.
3077         Add handling for Pragma_Wide_Character_Encoding
3078         (Process_Restrictions_Restriction_Warnings): Ensure that a warning
3079         never supercedes a real restriction, and that a real restriction
3080         always supercedes a warning.
3081         (Analyze_Pragma, case Assert): Set Low_Bound_Known if assert is of
3082         appropriate form.
3083
3084 2006-10-31  Bob Duff  <duff@adacore.com>
3085             Ed Schonberg  <schonberg@adacore.com>
3086             Robert Dewar  <dewar@adacore.com>
3087
3088         * exp_ch7.adb (Build_Array_Deep_Procs, Build_Record_Deep_Procs,
3089         Make_Deep_Record_Body): Rename Is_Return_By_Reference_Type to be
3090         Is_Inherently_Limited_Type, because return-by-reference has no meaning
3091         in Ada 2005.
3092         (Find_Node_To_Be_Wrapped): Use new method of determining the result
3093         type of the function containing a return statement, because the
3094         Return_Type field was removed. We now use the Return_Applies_To field.
3095
3096         * exp_util.ads, exp_util.adb: Use new subtype N_Membership_Test
3097         (Build_Task_Image_Decl): If procedure is not called from an
3098         initialization procedure, indicate that function that builds task name
3099         uses the sec. stack. Otherwise the enclosing initialization procedure
3100         will carry the indication.
3101         (Insert_Actions): Remove N_Return_Object_Declaration. We now use
3102         N_Object_Declaration instead.
3103         (Kill_Dead_Code): New interface to implement -gnatwt warning for
3104         conditional dead code killed, and change implementation accordingly.
3105         (Insert_Actions): Add N_Return_Object_Declaration case.
3106         Correct comment to mention N_Extension_Aggregate node.
3107         (Set_Current_Value_Condition): Call Safe_To_Capture_Value to avoid bad
3108         attempts to save information for global variables which cannot be
3109         safely tracked.
3110         (Get_Current_Value_Condition): Handle conditions the other way round
3111         (constant on left). Also handle right operand of AND and AND THEN
3112         (Set_Current_Value_Condition): Corresponding changes
3113         (Append_Freeze_Action): Remove unnecessary initialization of Fnode.
3114         (Get_Current_Value_Condition): Handle simple boolean operands
3115         (Get_Current_Value_Condition): Handle left operand of AND or AND THEN
3116         (Get_Current_Value_Condition): If the variable reference is within an
3117         if-statement, does not appear in the list of then_statments, and does
3118         not come from source, treat it as being at unknown location.
3119         (Get_Current_Value_Condition): Enhance to allow while statements to be
3120         processed as well as if statements.
3121         (New_Class_Wide_Subtype): The entity for a class-wide subtype does not
3122         come from source.
3123         (OK_To_Do_Constant_Replacement): Allow constant replacement within body
3124         of loop. This is safe now that we fixed Kill_Current_Values.
3125         (OK_To_Do_Constant_Replacement): Check whether current scope is
3126         Standard, before examining outer scopes.
3127
3128 2006-10-31  Vincent Celier  <celier@adacore.com>
3129
3130         * krunch.ads, krunch.adb (Krunch): New Boolean parameter VMS_On_Target.
3131         When True, apply VMS treatment to children of packages A, G, I and S.
3132         For F320-016
3133
3134         * fname-uf.adb (Get_File_Name): Call Krunch with OpenVMS_On_Target
3135
3136 2006-10-31  Robert Dewar  <dewar@adacore.com>
3137             Ed Schonberg  <schonberg@adacore.com>
3138
3139         * freeze.adb: Add handling of Last_Assignment field
3140         (Warn_Overlay): Supply missing continuation marks in error msgs
3141         (Freeze_Entity): Add check for Preelaborable_Initialization
3142
3143         * g-comlin.adb: Add Warnings (Off) to prevent new warning
3144
3145         * g-expect.adb: Add Warnings (Off) to prevent new warning
3146
3147         * lib-xref.adb: Add handling of Last_Assignment field
3148         (Generate_Reference): Centralize handling of pragma Obsolescent here
3149         (Generate_Reference): Accept an implicit reference generated for a
3150         default in an instance.
3151         (Generate_Reference): Accept a reference for a node that is not in the
3152         main unit, if it is the generic body corresponding to an subprogram
3153         instantiation.
3154
3155         * xref_lib.adb: Add pragma Warnings (Off) to avoid new warnings
3156
3157         * sem_warn.ads, sem_warn.adb (Set_Warning_Switch): Add processing for
3158         -gnatwq/Q.
3159         (Warn_On_Useless_Assignment): Suppress warning if enclosing inner
3160         exception handler.
3161         (Output_Obsolescent_Entity_Warnings): Rewrite to avoid any messages on
3162         use clauses, to avoid messages on packages used to qualify, and also
3163         to avoid messages from obsolescent units.
3164         (Warn_On_Useless_Assignments): Don't generate messages for imported
3165         and exported variables.
3166         (Warn_On_Useless_Assignments): New procedure
3167         (Output_Obsolescent_Entity_Warnings): New procedure
3168         (Check_Code_Statement): New procedure
3169
3170         * einfo.ads, einfo.adb (Has_Static_Discriminants): New flag
3171         Change name Is_Ada_2005 to Is_Ada_2005_Only
3172         (Last_Assignment): New field for useless assignment warning
3173
3174 2006-10-31  Olivier Hainque  <hainque@adacore.com>
3175
3176         * g-alleve.adb (lvx, stvx): Ceil-Round the Effective Address to the
3177         closest multiple of VECTOR_ALIGNMENT and not the closest multiple of 16.
3178
3179 2006-10-31  Bob Duff  <duff@adacore.com>
3180             Robert Dewar  <dewar@adacore.com>
3181             Ed Schonberg  <schonberg@adacore.com>
3182
3183         * g-awk.adb (Default_Session, Current_Session): Compile this file in
3184         Ada 95 mode, because it violates the new rules for AI-318.
3185
3186         * g-awk.ads: Use overloaded subprograms in every case where we used to
3187         have a default of Current_Session. This makes the code closer to be
3188         correct for both Ada 95 and 2005.
3189
3190         * g-moreex.adb (Occurrence): Turn off warnings for illegal-in-Ada-2005
3191         code, relying on the fact that the compiler generates a warning
3192         instead of an error in -gnatg mode.
3193
3194         * lib-xref.ads (Xref_Entity_Letters): Add entry for new
3195         E_Return_Statement entity kind.
3196         Add an entry for E_Incomplete_Subtype in Xref_Entity_Letters.
3197
3198         * par.adb (P_Interface_Type_Definition): Addition of one formal to
3199         report an error if the reserved word abstract has been previously found.
3200         (SS_End_Type): Add E_Return for new extended_return_statement syntax.
3201
3202         * par-ch4.adb (P_Aggregate_Or_Paren_Expr): Improve message for
3203         parenthesized range attribute usage
3204         (P_Expression_No_Right_Paren): Add missing comment about error recovery.
3205
3206         * par-ch6.adb (P_Return_Object_Declaration): AI-318: Allow "constant"
3207         in the syntax for extended_return_statement. This is not in the latest
3208         RM, but the ARG is expected to issue an AI allowing this.
3209         (P_Return_Subtype_Indication,P_Return_Subtype_Indication): Remove
3210         N_Return_Object_Declaration. We now use N_Object_Declaration instead.
3211         (P_Return_Object_Declaration, P_Return_Subtype_Indication,
3212         P_Return_Statement): Parse the new syntax for extended_return_statement.
3213
3214         * par-endh.adb (Check_End, Output_End_Deleted, Output_End_Expected,
3215         Output_End_Missing): Add error-recovery code for the new
3216         extended_return_statement syntax; that is, the new E_Return entry on
3217         the scope stack.
3218
3219         * s-auxdec-vms_64.ads, s-auxdec.ads (AST_Handler): Change type from
3220         limited to nonlimited, because otherwise we violate the new Ada 2005
3221         rules about returning limited types in function Create_AST_Handler in
3222         s-asthan.adb.
3223
3224         * sem.adb (Analyze): Add cases for new node kinds
3225         N_Extended_Return_Statement and N_Return_Object_Declaration.
3226
3227         * sem_aggr.adb (Aggregate_Constraint_Checks): Verify that component
3228         type is in the same category as type of context before applying check,
3229         to prevent anomalies in instantiations.
3230         (Resolve_Aggregate): Remove test for limited components in aggregates.
3231         It's unnecessary in Ada 95, because if it has limited components, then
3232         it must be limited. It's wrong in Ada 2005, because limited aggregates
3233         are now allowed.
3234         (Resolve_Record_Aggregate): Move check for limited types later, because
3235         OK_For_Limited_Init requires its argument to have been resolved.
3236         (Get_Value): When copying the component default expression for a
3237         defaulted association in an aggregate, use the sloc of the aggregate
3238         and not that of the original expression, to prevent spurious
3239         elaboration errors, when the expression includes function calls.
3240         (Check_Non_Limited_Type): Correct code for AI-287, extension aggregates
3241         were missing. We also didn't handle qualified expressions. Now also
3242         allow function calls. Use new common routine OK_For_Limited_Init.
3243         (Resolve_Extension_Aggregate): Minor fix to bad error message (started
3244         with space can upper case letter).
3245
3246         * sem_ch3.ads, sem_ch3.adb (Create_Constrained_Components): Set
3247         Has_Static_Discriminants flag
3248         (Record_Type_Declaration): Diagnose an attempt to declare an interface
3249         type with discriminants.
3250         (Process_Range_Expr_In_Decl): Do validity checks on range
3251         (Build_Discriminant_Constraints): Use updated form of
3252         Denotes_Discriminant.
3253         (Process_Subtype): If the subtype is a private subtype whose full view
3254         is a concurrent subtype, introduce an itype reference to prevent scope
3255         anomalies in gigi.
3256         (Build_Derived_Record_Type, Collect_Interface_Primitives,
3257         Record_Type_Declaration):  The functionality of the subprograms
3258         Collect_Abstract_Interfaces and Collect_All_Abstract_Interfaces
3259         is now performed by a single routine.
3260         (Build_Derived_Record_Type): If the type definition includes an explicit
3261         indication of limitedness, then the type must be marked as limited here
3262         to ensure that any access discriminants will not be treated as having
3263         a local anonymous access type.
3264         (Check_Abstract_Overriding): Issue a detailed error message when an
3265         abstract subprogram was not overridden due to incorrect mode of its
3266         first parameter.
3267         (Analyze_Private_Extension_Declaration): Add support for the analysis of
3268         synchronized private extension declarations. Verify that the ancestor is
3269         a limited or synchronized interface or in the generic case, the ancestor
3270         is a tagged limited type or synchronized interface and all progenitors
3271         are either limited or synchronized interfaces.
3272         Derived_Type_Declaration): Check for presence of private extension when
3273         dealing with synchronized formal derived types.
3274         Process_Full_View): Enchance the check done on the usage of "limited" by
3275         testing whether the private view is synchronized.
3276         Verify that a synchronized private view is completed by a protected or
3277         task type.
3278         (OK_For_Limited_Init_In_05): New function.
3279         (Analyze_Object_Declaration): Move check for limited types later,
3280         because OK_For_Limited_Init requires its argument to have been resolved.
3281         Add -gnatd.l --Use Ada 95 semantics for limited function returns,
3282         in order to alleviate the upward compatibility introduced by AI-318.
3283         (Constrain_Corresponding_Record): If the constraint is for a component
3284         subtype, mark the itype as frozen, to avoid out-of-scope references to
3285         discriminants in the back-end.
3286         (Collect_Implemented_Interfaces): Protect the recursive algorithm of
3287         this subprogram against wrong sources.
3288         (Get_Discr_Value, Is_Discriminant): Handle properly references to a
3289         discriminant of limited type completed with a protected type, when the
3290         discriminant is used to constrain a private component of the type, and
3291         expansion is disabled.
3292         (Find_Type_Of_Object): Do not treat a return subtype that is an
3293         anonymous subtype as a local_anonymous_type, because its accessibility
3294         level is the return type of the enclosing function.
3295         (Check_Initialization): In -gnatg mode, turn the error "cannot
3296         initialize entities of limited type" into a warning.
3297         (OK_For_Limited_Init): Return true for generated nodes, since it
3298         sometimes violates the legality rules.
3299         (Make_Incomplete_Declaration): If the type for which an incomplete
3300         declaration is created happens to be the currently visible entity,
3301         preserve the homonym chain when removing it from visibility.
3302         (Check_Conventions): Add support for Ada 2005 (AI-430): Conventions of
3303         inherited subprograms.
3304         (Access_Definition): If this is an access to function that is the return
3305         type of an access_to_function definition, context is a type declaration
3306         and the scope of the anonymous type is the current one.
3307         (Analyze_Subtype_Declaration): Add the defining identifier of a regular
3308         incomplete subtype to the set of private dependents of the original
3309         incomplete type.
3310         (Constrain_Discriminated_Type): Emit an error message whenever an
3311         incomplete subtype is being constrained.
3312         (Process_Incomplete_Dependents): Transform an incomplete subtype into a
3313         corresponding subtype of the full view of the original incomplete type.
3314         (Check_Incomplete): Properly detect invalid usage of incomplete types
3315         and subtypes.
3316
3317 2006-10-31  Hristian Kirtchev  <kirtchev@adacore.com>
3318
3319         * g-catiio.ads, g-catiio.adb (Value): New function.
3320         Given an input String, try and parse a valid Time value.
3321
3322 2006-10-31  Vincent Celier  <celier@adacore.com>
3323
3324         * g-debpoo.adb (Is_Valid): Correctly compute Offset using
3325         Integer_Address arithmetic, as in Set_Valid.
3326
3327 2006-10-31  Arnaud Charlet  <charlet@adacore.com>
3328             Robert Dewar  <dewar@adacore.com>
3329
3330         * gnatcmd.adb (Process_Link): Use Osint.Executable_Name instead of
3331         handling executable extension manually and duplicating code.
3332
3333         * make.adb: Implement new -S switch
3334         (Gnatmake): Use new function Osint.Executable_Name instead
3335         of handling executable extension manually.
3336
3337         * prj-util.adb (Executable_Of): Make sure that if an Executable_Suffix
3338         is specified, the executable name ends with this suffix.
3339         Take advantage of Osint.Executable_Name instead of duplicating code.
3340
3341         * switch-m.adb: Recognize new gnatmake -S switch
3342
3343         * targparm.ads, targparm.adb (Executable_Extension_On_Target): New
3344         variable.
3345         (Get_Target_Parameters): Set Executable_Extension_On_Target if
3346         available.
3347
3348         * makeusg.adb: Add line for gnatmake -S switch
3349
3350 2006-10-31  Vincent Celier  <celier@adacore.com>
3351
3352         * gnatlink.adb (Gnatlink): If gcc is not called with -shared-libgcc,
3353         call it with -static-libgcc, as there are some platforms, such as
3354         Darwin, where one of these two switches is compulsory to link.
3355
3356 2006-10-31  Vincent Celier  <celier@adacore.com>
3357
3358         * gnatls.adb: Take into account GPR_PROJECT_PATH, when it is defined,
3359         instead of ADA_PROJECT_PATH, for the project path.
3360         (Gnatls): When displaying the project path directories, use host dir
3361         specs.
3362
3363         * prj-ext.adb (Prj.Ext elaboration): On VMS, only expand relative path
3364         names in the project path, as absolute paths may correspond to
3365         multi-valued VMS logical names.
3366
3367 2006-10-31  Vincent Celier  <celier@adacore.com>
3368
3369         * g-os_lib.ads, g-os_lib.adb (Locate_Exec_On_Path): Always return an
3370         absolute path name.
3371         (Locate_Regular_File): Ditto
3372         (Change_Dir): Remove, no longer used
3373         (Normalize_Pathname): Do not use Change_Dir to get the drive letter
3374         on Windows. Get it calling Get_Current_Dir.
3375         (OpenVMS): Remove imported boolean, no longer needed.
3376         (Normalize_Pathname)[VMS]: Do not resolve directory names.
3377         (Pid_To_Integer): New function to convert a Process_Id to  Integer
3378
3379 2006-10-31  Thomas Quinot  <quinot@adacore.com>
3380
3381         * g-socket.ads, g-socket.adb (Close_Selector): Once the signalling
3382         sockets are closed, reset the R_Sig_Socket and W_Sig_Socket components
3383         to No_Socket.
3384         (Selector_Type): Add default value of No_Socket for R_Sig_Socket and
3385         W_Sig_Socket.
3386
3387 2006-10-31  Robert Dewar  <dewar@adacore.com>
3388
3389         * g-speche.ads, g-speche.adb: Add special case to recognize misspelling
3390         initial letter o as a zero.
3391
3392 2006-10-31  Robert Dewar  <dewar@adacore.com>
3393
3394         * g-spipat.adb (S_To_PE): Remove incorrect use of 0 instead of Str'First
3395
3396 2006-10-31  Robert Dewar  <dewar@adacore.com>
3397
3398         * layout.adb (Layout_Record_Type): Deal with non-static subtypes of
3399         variant records
3400         (Layout_Variant_Record): Retrieve the discriminants from the entity
3401         rather than from the type definition, because in the case of a full
3402         type for a private type we need to take the discriminants from the
3403         partial view.
3404         (Layout_Component_List): When applying the Max operator to variants with
3405         a nonstatic size, check whether either operand is static and scale that
3406         operand from bits to storage units before applying Max.
3407         (Layout_Type): In VMS, if a C-convention access type has no explicit
3408         size clause (and does not inherit one in the case of a derived type),
3409         then the size is reset to 32 from 64.
3410
3411 2006-10-31  Vincent Celier  <celier@adacore.com>
3412
3413         * lib-load.adb (Load_Unit): Skip the test for a unit not found when
3414         its file has already been loaded, according to the unit being loaded,
3415         not to the current value of Multiple_Unit_Index.
3416
3417 2006-10-31  Thomas Quinot  <quinot@adacore.com>
3418             Eric Botcazou  <ebotcazou@adacore.com>
3419             Arnaud Charlet  <charlet@adacore.com>
3420
3421         * Makefile.in: Set EH mechanism to ZCX for FreeBSD.
3422         (NO_REORDER_ADAFLAGS): New var defined to -fno-toplevel-reorder if
3423         possible.
3424         (a-except.o): Pass it to the compiler.
3425         (gnatlib-shared-vms): Removed -nostartfiles switch in link step.
3426         (LIBGNAT_TARGET_PAIRS for Windows): Avoid the use of the specific
3427         a-calend-mingw.adb version.
3428
3429         * Makefile.rtl: Added s-dsaser.
3430         Add object entries for Ada.Calendar.[Arithmetic/Formatting/Time_Zones]
3431         (GNATRTL_TASKING_OBJS): Add Ada.Dispatching and
3432         Ada.Dispatching.Round_Robin.
3433         Added new unit Ada.Containers.Restricted_Bounded_Doubly_Linked_Lists
3434
3435         * Make-lang.in: Remove all references to gt-ada-decl.h.
3436         Add concatenation (s-strops/s-sopco3/s-sopco4/s-sopco5) to compiler
3437         sources.
3438         Add dependency on ada/s-restri.o for GNAT1 and GNATBIND objects.
3439         Update dependencies.
3440
3441         * system-freebsd-x86.ads: Make ZCX the default EH mechanism for FreeBSD
3442
3443 2006-10-31  Vincent Celier  <celier@adacore.com>
3444
3445         * mlib-utl.adb (Initialized): Remove, no longer used
3446         (Initialize): Remove, no longer used
3447         (Ar): If Ar_Exec is null, get the location of the archive builder and,
3448         if there is one, the archive indexer. Fail if the archive builder cannot
3449         be found.
3450         (Gcc): If the driver path is unknown, get it. Fail if the driver cannot
3451         be found.
3452
3453 2006-10-31  Ed Schonberg  <schonberg@adacore.com>
3454
3455         * sem_ch10.ads, sem_ch10.adb (Check_Redundant_Withs,
3456         Process_Body_Clauses): If the context of a body includes a use clause
3457         for P.Q then a with_clause for P in the same body is not redundant,
3458         even if the spec also has a with_clause on P.
3459         Add missing continuation mark to error msg
3460         (Build_Limited_Views): A limited view of a type is tagged if its
3461         declaration includes a record extension.
3462         (Analyze_Proper_Body): Set Corresponding_Stub field in N_Subunit
3463         node, even if the subunit has errors. This avoids malfunction by
3464         Lib.Check_Same_Extended_Unit in the presence of syntax errors.
3465         (Analyze_Compilation_Unit): Add circuit to make sure we get proper
3466         generation of obsolescent messages for with statements (cannot do
3467         this too early, or we cannot implement avoiding the messages in the
3468         case of obsolescent units withing obsolescent units).
3469         (Install_Siblings): If the with_clause is on a remote descendant of
3470         an ancestor of the current compilation unit, find whether there is
3471         a sibling child unit that is immediately visible.
3472         (Remove_Private_With_Clauses): New procedure, invoked after completing
3473         the analysis of the private part of a nested package, to remove from
3474         visibility the private with_clauses of the enclosing package
3475         declaration.
3476         (Analyze_With_Clause): Remove Check_Obsolescent call, this checking is
3477         now centralized in Generate_Reference.
3478         (Install_Limited_Context_Clauses): Remove superfluous error
3479         message associated with unlimited view visible through use
3480         and renamings. In addition, at the point in which the error
3481         is reported, we add the backslash to the text of the error
3482         to ensure that it is reported as a single error message.
3483         Use new // insertion for some continuation messages
3484         (Expand_Limited_With_Clause): Use copy of name rather than name itself,
3485         to create implicit with_clause for parent unit mentioned in original
3486         limited_with_clause.
3487         (Install_Limited_With_Unit): Set entity of parent identifiers if the
3488         unit is a child unit. For ASIS queries.
3489         (Analyze_Subunit): If the subunit appears within a child unit, make all
3490         ancestor child units directly visible again.
3491
3492 2006-10-31  Robert Dewar  <dewar@adacore.com>
3493
3494         * par-ch10.adb (P_Context_Clause): Minor error message fix
3495
3496 2006-10-31  Hristian Kirtchev  <kirtchev@adacore.com>
3497             Javier Miranda  <miranda@adacore.com>
3498
3499         * par-ch12.adb: Grammar update and cleanup.
3500         (P_Formal_Type_Definition, P_Formal_Derived_Type_Definition): Add
3501         support for synchronized derived type definitions.
3502         Add the new actual Abstract_Present to every call to
3503         P_Interface_Type_Definition.
3504         (P_Formal_Object_Declarations): Update grammar rules. Handle parsing of
3505         a formal object declaration with an access definition or a subtype mark
3506         with a null exclusion.
3507         (P_Generic_Association): Handle association with box, and others_choice
3508         with box, to support Ada 2005 partially parametrized formal packages.
3509
3510 2006-10-31  Robert Dewar  <dewar@adacore.com>
3511             Javier Miranda  <miranda@adacore.com>
3512
3513         * par-ch3.adb (P_Range_Or_Subtype_Mark): Check for bad parentheses
3514         (P_Type_Declaration): Remove barrier against the reserved word "limited"
3515         after "abstract" to give support to the new syntax of AARM 3.4 (2/2).
3516         (P_Type_Declaration): Minor code cleanup. Add support for synchronized
3517         private extensions.
3518         (P_Type_Declaration): Add the new actual Abstract_Present to every call
3519         to P_Interface_Type_Definition.
3520         (P_Interface_Type_Definition): Addition of one formal to report an error
3521         if the reserved word abstract has been previously found.
3522         (P_Identifier_Declarations): Update grammar rules. Handle parsing of an
3523         object renaming declaration with an access definition or subtype mark
3524         with a possible null exclusion.
3525
3526         * par-ch9.adb: Minor error msg fix
3527
3528         * par-load.adb: Add missing continuation mark to error msg
3529
3530         * par-tchk.adb: (Wrong_Token): Code cleanup, use concatenation
3531
3532 2006-10-31  Vincent Celier  <celier@adacore.com>
3533
3534         * prj-dect.adb (Parse_Attribute_Declaration): Do not issue warning for
3535         unknown attribute in unknown package or in package that does not need
3536         to be checked.
3537         (Parse_Package_Declaration): Do not issue warning for unknown package in
3538         quiet output.
3539
3540 2006-10-31  Vincent Celier  <celier@adacore.com>
3541
3542         * prj-makr.adb (Packages_To_Check_By_Gnatname): New global constant
3543         (Make): Call Parse with Packages_To_Check_By_Gnatname for parameter
3544         Packages_To_Check.
3545
3546 2006-10-31  Vincent Celier  <celier@adacore.com>
3547
3548         * prj-nmsc.adb (Check_Ada_Name): For children of package A, G, I and S
3549         on VMS, change "__" to '.' before checking the name.
3550         (Record_Ada_Source): Always add the source file name in the list of
3551         of sources, even if it is not the first time, as it is for another
3552         source index.
3553         (Get_Unit): Replace both '_' (after 'a', 'g', 'i' or 's') with a single
3554         dot, instead of replacing only the first '_'.
3555
3556         * prj-part.adb (Parse): Convert project file path to canonical form
3557
3558         * prj-proc.adb (Recursive_Process): Make sure that, when a project is
3559         extended, the project id of the project extending it is recorded in its
3560         data, even when it has already been processed as an imported project.
3561
3562 2006-10-31  Robert Dewar  <dewar@adacore.com>
3563
3564         * repinfo.adb (List_Entities): Don't list entities from renaming
3565         declarations.
3566
3567 2006-10-31  Arnaud Charlet  <charlet@adacore.com>
3568             Robert Dewar  <dewar@adacore.com>
3569
3570         * restrict.ads, restrict.adb (Restriction_Active): Now returns False if
3571         only a restriction warning is active for the given restriction. This is
3572         desirable because we do not want to modify code in the case where only
3573         a warning is set.
3574         (Set_Profile_Restrictions): Make sure that a Profile_Warnings never
3575         causes overriding of real restrictions.
3576         Take advantage of new No_Restrictions constant.
3577
3578         * raise.h: (__gnat_set_globals): Change profile.
3579
3580 2006-10-31  Arnaud Charlet  <charlet@adacore.com>
3581
3582         * rtsfind.adb: Remove s-polint from comment as it exists no more.
3583
3584         * rtsfind.ads: 
3585         Move entity RE_Get_Active_Partition_Id to package System.DSA_Services.
3586         Move all the entities in obsolete package System.PolyORB_Interface to
3587         System.Partition_Interface.
3588         (RE_Storage_Size): New function in System.Tasking.
3589         (RE_Get_Ceiling): New entity.
3590         (RE_Set_Ceiling): New entity.
3591         (RO_PE_Get_Ceiling): New entity.
3592         (RO_RE_Set_Ceiling): New entity.
3593         (Inherit_CPP_DT): New entity
3594
3595 2006-10-31  Robert Dewar  <dewar@adacore.com>
3596
3597         * scng.adb (Scan, case of numeric literal): Better msg for identifier
3598         starting with a digit.
3599
3600 2006-10-31  Ed Schonberg  <schonberg@adacore.com>
3601             Thomas Quinot  <quinot@adacore.com>
3602             Javier Miranda  <miranda@adacore.com>
3603             Gary Dismukes  <dismukes@adacore.com>
3604
3605         * sem_attr.ads, sem_attr.adb (Analyze_Access_Attribute): Diagnose
3606         properly an attempt to apply Unchecked_Access to a protected operation.
3607         (OK_Self_Reference): New subprogram to check the legality of an access
3608         attribute whose prefix is the type of an enclosing aggregate.
3609         Generalizes previous mechanism to handle attribute references nested
3610         arbitrarily deep within the aggregate.
3611         (Analyze_Access_Attribute): An access attribute whose prefix is a type
3612         can appear in an aggregate if this is a default-initialized aggregate
3613         for a self-referential type.
3614         (Resolve_Attribute, case Access): Ditto.
3615         Add support for new implementation defined attribute Stub_Type.
3616         (Eval_Attribute, case Attribute_Stub_Type): New case.
3617         (Analyze_Attribute, case Attribute_Stub_Type): New case.
3618         (Stream_Attribute_Available): Implement using new subprogram from
3619         sem_cat, Has_Stream_Attribute_Definition, instead of incorrect
3620         Has_Specified_Stream_Attribute flag.
3621         Disallow Storage_Size and Storage_Pool for access to subprogram
3622         (Resolve_Attribute, case 'Access et al): Take into account anonymous
3623         access types of return subtypes in extended return statements. Remove
3624         accessibility checks on anonymous access types when Unchecked_Access is
3625         used.
3626         (Analyze_Attribute): Add support for the use of 'Class to convert
3627         a class-wide interface to a tagged type.
3628         Add support for the attribute Priority.
3629         (Resolve_Attribute, case Attribute_Access): For Ada_05, add test for
3630         whether the designated type is discriminated with a constrained partial
3631         view and require static matching in that case.
3632         Add local variable Des_Btyp. The Designated_Type
3633         of an access to incomplete subtype is either its non-limited view if
3634         coming from a limited with or its etype if regular incomplete subtype.
3635
3636         * sem_cat.ads, sem_cat.adb (Validate_Remote_Access_To_Class_Wide_Type):
3637         Fix predicate to identify and allow cases of (expander-generated)
3638         references to tag of designated object of a RACW.
3639         (Validate_Static_Object_Name): In Ada 2005, a formal object is
3640         non-static, and therefore cannot appear as a primary in a preelaborable