OSDN Git Service

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