OSDN Git Service

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