blob: 30a63656eaa6580f28c0d647463b698d7b5f6f9f [file] [log] [blame]
2007-12-27 Samuel Tardieu <>
PR ada/34553
* adaint.c (__gnat_open_new_temp, __gnat_tmp_name): Use mkstemp()
instead of mktemp() or tmpnam() on NetBSD.
2007-12-23 Eric Botcazou <>
* trans.c (call_to_gnu): Make the temporary for non-addressable
In parameters passed by reference.
(addressable_p): Return true for STRING_CST and CALL_EXPR.
2007-12-19 Robert Dewar <>
* g-expect-vms.adb, g-expect.adb, s-poosiz.adb:
Add pragma Warnings (Off) for unassigned IN OUT arguments
* sem_warn.adb (Output_Reference): Suppress messages for internal names
(Check_References): Extensive changes to tune up warnings
(Output_Non_Modifed_In_Out_Warnings): Changes to tune up warnings
(Has_Pragma_Unmodifed_Check_Spec): New function
(Check_References): Implement pragma Unmodified
(Warn_On_Unassigned_Out_Parameter): Implement pragma Unmodified
* par-prag.adb: Dummy entry for pragma Unmodified
* sem_prag.adb: Implement pragma Unmodified
*, einfo.adb: (Has_Pragma_Unmodified): New flag
(Proc_Next_Component_Or_Discriminant): Fix typo.
Update comments.
* sem_util.adb (Note_Possible_Modification): Add processinng for pragma
(Reset_Analyzed_Flags): Use Traverse_Proc instead of Traverse_Func,
because the former already takes care of discarding the result.
(Mark_Coextensions): Remove ununused initial value from Is_Dynamic.
Add comment.
* snames.h,, snames.adb: Add entry for pragma Unmodified
2007-12-19 Eric Botcazou <>
* targparm.adb,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
(Dynamic_Trampolines_Used): Delete.
*, Ditto.
Turn on stack probing mechanism on LynxOS.
2007-12-19 Bob Duff <>
*, atree.adb (Traverse_Func): Walk Field2 last, and eliminate
the resulting tail recursion by hand. This prevents running out of
memory on deeply nested concatenations, since Field2 is where the left
operand of concatenations is stored.
Fix bug (was returning OK_Orig in some cases). Fix return subtype to
clarify that it can only return OK or Abandon.
* sem_res.adb (Resolve_Op_Concat): Replace the recursion on the left
operand by iteration, in order to avoid running out of memory on
deeply-nested concatenations. Use the Parent pointer to get back up the
(Resolve_Op_Concat_Arg, Resolve_Op_Concat_First,
Resolve_Op_Concat_Rest): New procedures split out of
Resolve_Op_Concat, so the iterative algorithm in Resolve_Op_Concat is
* checks.adb (Remove_Checks): Use Traverse_Proc instead of
Traverse_Func, because the former already takes care of discarding the
* errout.adb (First_Node): Use Traverse_Proc instead of Traverse_Func,
because the former already takes care of discarding the result.
(Remove_Warning_Messages): Use appropriate subtype for Status and
2007-12-19 Ed Schonberg <>
* exp_aggr.adb (Not_OK_For_Backend): A component of a private type with
discriminants forces expansion of the aggregate into assignments.
(Init_Record_Controller): If the type of the aggregate is untagged and
is not inherently limited, the record controller is not limited either.
2007-12-19 Robert Dewar <>
* exp_attr.adb (Expand_N_Attribute_Reference, case Size): Fix error in
handling compile time known size of record or array (case of front end
layout active, e.g. in GNAAMP).
2007-12-19 Javier Miranda <>
* exp_ch3.adb (Expand_N_Object_Declaration): Complete the circuitry
that forces the construction of static dispatch tables in case of
record subtypes.
2007-12-19 Robert Dewar <>
* exp_ch9.adb (Null_Statements): Moved to library level
(Trivial_Accept_OK): New function
(Expand_Accept_Declaration): Use Trivial_Accept_OK
(Expand_N_Accept_Statement): Use Trivial_Accept_OK
2007-12-19 Robert Dewar <>
* exp_pakd.adb (Expand_Bit_Packed_Element_Set): Fix packed array type
in complex case where array is Volatile.
2007-12-19 Ed Schonberg <>
* freeze.adb (Freeze_Record_Type, Check_Current_Instance): Implement
properly the Ada2005 rules concerning when the current instance of a
record type is aliased.
2007-12-19 Ed Schonberg <>
* par-ch3.adb (P_Record_Declaration): Guard against cascaded errors in
mangled declaration
(P_Type_Declaration): Diagnose misuse of "abstract" in untagged record
(P_Variant_Part): Cleaner patch for parenthesized discriminant
2007-12-19 Vincent Celier <>
* prj-attr.adb (Package_Node_Id_Of): Returns Unknown_Package when
package is not known
* (Unknown_Package): New constant
Do not crash when an unknown package is in several projects
* prj-dect.adb (Parse_Package_Declaration): Mark an unknown package as
* prj-nmsc.adb (Check): Remove obsolete code related to no longer
existing package Language_Processing.
2007-12-19 Ed Schonberg <>
Gary Dismukes <>
Samuel Tardieu <>
PR ada/15803, ada/15805
* sem_ch6.adb, sem_ch3.adb (Constrain_Access): In Ada2005, diagnose
illegal access subtypes when there is a constrained partial view.
(Check_For_Premature_Usage): New procedure inside
Access_Subprogram_Declaration for checking that an access-to-subprogram
type doesn't reference its own name within any formal parameters or
result type (including within nested anonymous access types).
(Access_Subprogram_Declaration): Add call to Check_For_Premature_Usage.
(Sem_Ch3.Analyze_Object_Declaration, Sem_ch6.Process_Formals): if the
context is an access_to_variable, the expression cannot be an
2007-12-19 Bob Duff <>
* sem_ch4.adb (Analyze_Concatenation_Rest): New procedure.
(Analyze_Concatenation): Use iteration instead of recursion in order
to avoid running out of stack space for deeply nested concatenations.
2007-12-19 Ed Schonberg <>
Gary Dismukes <>
* sem_ch8.adb (Analyze_Subprogram_Renaming): Diagnose illegal renamings
whose renamed entity is a subprogram that requires overriding.
(Premature_Usage): Test for the case of N_Full_Type_Declaration when
issuing an error for premature usage and issue a message that says
'type' rather than 'object'.
2007-12-19 Gary Dismukes <>
PR ada/34149
* sem_disp.adb (Check_Dispatching_Call): Augment existing test for
presence of a statically tagged operand (Present (Static_Tag)) with
test for Indeterm_Ancestor_Call when determining whether to propagate
the static tag to tag-indeterminate operands (which forces dispatching
on such calls).
(Check_Controlling_Formals): Ada2005, access parameters can have
(Add_Dispatching_Operation, Check_Operation_From_Private_View): do
not insert subprogram in list of primitive operations if already there.
2007-12-19 Tristan Gingold <>
* utils.c (create_var_decl_1): call rest_of_decl_compilation only for
global variable.
2007-12-19 Thomas Quinot <>
Part of PR ada/33688
* gen-soccon.c: Add constant IP_PKTINFO to allow getting ancillary
datagram info on Linux.
2007-12-19 Vincent Celier <>
* makegpr.adb (Check_Compilation_Needed): Normalize C_Source_Path so
that the source path name is always found in the dependencies.
2007-12-19 Robert Dewar <>
* gnat_rm.texi, gnat_ugn.texi: Update documentation of -gnatw.o
Fix name of Wide_Wide_Latin_1/9 file names
Add documentation for Ada.Exceptions.Last_Chance_Handler (
Add missing documentation for Ada.Wide_[Wide_]Characters.Unicode
Add missing documentation for Ada.Command_Line.Response_File
Update list of warning letters for Warnings pragma
Add documentation for pragma Unmodified
2007-12-19 Samuel Tardieu <>
* Add[bs] substitutions for sh4-linux target.
2007-12-17 Arnaud Charlet <>
* Removed, no longer used.
2007-12-15 Jakub Jelinek <>
* (gnat1, gnatbind): Pass ALL_CFLAGS on the link line.
2007-12-13 Samuel Tardieu <>
PR ada/34360
* Change two occurrences of mlib-tgt.adb by correct name
2007-12-13 Bob Duff <>
* trans.c (Attribute_to_gnu): Check for violations of the
No_Implicit_Dynamic_Code restriction. This checking used to be done in
the front end, but is moved here so we can make it more accurate.
2007-12-13 Pascal Obry <>
* adaint.c (__gnat_pthread_setaffinity_np): New routine. A dummy
version is provided for older GNU/Linux distribution not
supporting thread affinity sets.
* (SC_NPROCESSORS_ONLN): New constant for sysconf
(bit_field): New packed boolean type used by cpu_set_t.
(cpu_set_t): New type corresponding to the C type with
the same name. Note that on the Ada side we use a bit
field array for the affinity mask. There is not need
for the C macro for setting individual bit.
(pthread_setaffinity_np): New imported routine.
* s-taprop-linux.adb (Enter_Task): Check that the CPU affinity mask is
no null.
(Create_Task): Set the processor affinity mask if information
is present.
*, s-tasinf-linux.adb: New files.
2007-12-13 Robert Dewar <>
*,,,,,,,,,,, s-intman-vms.adb,,,,,,,
s-taprop-vms.adb, s-interr-sigaction.adb,,, Add missing pragma Convention C
for subprogram pointers.
* g-ctrl_c.adb: New file.
* (Install_Handler): New body.
* freeze.adb (Freeze_Subprogram): Use new flag Has_Pragma_Inline_Always
instead of obsolete function Is_Always_Inlined.
(Freeze_Entity): check for tagged type in imported C subprogram
(Freeze_Entity): check for 8-bit boolean in imported C subprogram
(Freeze_Entity): check for convention Ada subprogram pointer in
imported C subprogram.
(Freeze_Fixed_Point_Type): In the case of a base type where the low
bound would be chopped off and go from negative to zero, force
Loval_Excl_EP to be the same as Loval_Incl_EP (the included lower
bound) so that the size computation for the base type will take
negative values into account.
2007-12-13 Eric Botcazou <>
Bob Duff <>
Tristan Gingold <>
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, (Stack_Check_Limits): New target parameter.
(Always_Compatible_Rep): New flag to control trampolines globally.
(Dynamic_Trampolines_Used): New flag for implementing the
No_Implicit_Dynamic_Code restriction more correctly (not yet used,
and not yet set correctly for some targets).
* s-taprop-vxworks.adb: Use stack limit method of stack checking.
Simply indirectly call s-stchop when a task is created.
New flag added: Stack_Check_Switch_Set which is set when '-fstack-check'
appears as an argument (entries A) in an ALI file.
* fe.h (Stack_Check_Limits): Declare new target parameter.
(Check_Implicit_Dynamic_Code_Allowed): New procedure.
* init.c: Declare __gnat_set_stack_limit_hook for VxWorks kernel RTS.
This variable is declared in C to be sure not subject to elaboration
(__gnat_map_signal, VxWorks): In kernel mode, map SIGILL to
*, targparm.adb (Stack_Check_Limits): New parameter.
(Always_Compatible_Rep, Dynamic_Trampolines_Used): New parameters.
* Add comments.
* s-stchop-vxworks.adb: Package almost fully rewritten to use stack
limit method of stack checking.
* New file.
2007-12-13 Robert Dewar <>
* sem_ch5.adb, s-taskin.adb, a-ciorma.adb, a-coorma.adb, a-cohama.adb,
a-cihama.adb, g-awk.adb,
s-inmaop-posix.adb: Update handling of assigned value/unreferenced
* exp_smem.adb: Update handling of assigned value/unreferenced warnings
* sem.adb: Update handling of assigned value/unreferenced warnings
* a-exexpr-gcc.adb: Add a pragma warnings off for boolean return
* Improve documentation for k xref type
* lib-xref.adb:
Update handling of assigned value/unreferenced warnings
(Generate_Reference): Warning for reference to entity for which a
pragma Unreferenced has been given should be unconditional.
If the entity is a discriminal, mark the original
discriminant as referenced.
*, sem_warn.adb
(Check_One_Unit): Test Renamed_In_Spec to control giving warning for
no entities referenced in package
(Check_One_Unit): Don't give message about no entities referenced in
a package if a pragma Unreferenced has appeared.
Handle new warning flag -gnatw.a/-gnatw.A
Update handling of assigned value/unreferenced warnings
* atree.h: Add flags up to Flag247
(Flag231): New macro.
2007-12-13 Jose Ruiz <>
* adaint.h: (__gnat_plist_init): Not defined for RTX.
* initialize.c (__gnat_initialize): Do not call __gnat_plist_init for
RTX systems.
* Add new files and s-tasinf-linux.adb.
GNATLIB_SHARED for RTX run time): Use the versions required by RTX.
* mingw32.h:
Do not define GNAT_UNICODE_SUPPORT for RTX since it is not supported.
* sysdep.c (winflush_function for RTX): Procedure that does nothing
since we only have problems with Windows 95/98, which are not
supported by RTX.
(__gnat_ttyname): Return the empty string on Nucleus, just as
done on vxworks.
2007-12-13 Robert Dewar <>
* a-textio.adb,
Extensive changes to private part for wide character encoding
* a-witeio.adb,,, a-ztexio.adb
(Look_Ahead): Fix mishandling of encoded sequences
Move declaration of Wch_Con to private part (should not be visible)
* ali.adb (Scan_ALI): Set default encoding method to brackets instead of
UTF-8. Probably this is never used, but if it is, brackets is
clearly correct.
* bindgen.adb (Get_WC_Encoding): New procedure to properly handle
setting wide character encoding for no main program case and when
encoding is specified using -W?
Initialize stack limit of environment task if stack limit method of
stack checking is enabled.
(Gen_Adainit_Ada): Use Get_WC_Encoding to output encoding method
(Gen_Adainit_C): Use Get_WC_Encoding to output encoding method
(Get_Main_Unit_Name): New function.
(Gen_Adainit_Ada): Add call to main program for .NET when needed.
(Gen_Output_File): Set Bind_Main_Program to True for .NET
* bindusg.adb: Add line for -Wx switch
* s-wchcon.adb, (Is_Start_Of_Encoding): New function
Add comments
Add new useful constant WC_Longest_Sequences
* switch-b.adb: Clean up handling of -Wx switch
For -gnatWx, set Wide_Character_Encoding_Method_Specified
* switch-c.adb: -gnatg activates warning on assertion errors
For -gnatWx, set Wide_Character_Encoding_Method_Specified
* s-wchcon.adb: (Is_Start_Of_Encoding): New function
2007-12-13 Robert Dewar <>
Ed Schonberg <>
* a-ngcoty.adb: New pragma Fast_Math
* opt.adb: New pragma Fast_Math
* par-prag.adb:
Add Implemented_By_Entry to the list of pragmas which do not require any
special processing.
(Favor_Top_Level): New pragma.
New pragma Fast_Math
* exp_attr.adb: Move Wide_[Wide_]Image routines to Exp_Imgv
(Expand_N_Attribute_Reference, Displace_Allocator_Pointer,
Expand_Allocator_Expression): Take into account VM_Target
(Expand_Attribute, case 'Identity): Handle properly the case where
the prefix is a task interface.
New pragma Fast_Math
* par.adb (Next_Token_Is): New function
(P_Pragma): Add Skipping parameter
(U_Left_Paren): New procedure
(U_Right_Paren): New procedure
New pragma Fast_Math
* par-ch10.adb (P_Subunit): Unconditional msg for missing ) after
New pragma Fast_Math
* sem_prag.adb: Add significance value to table Sig_Flag for pragma
(Analyze_Pragma): Add case for Ada 2005 pragma Implemented_By_Entry.
(Set_Inline_Flags): Do not try to link pragma Inline onto chain of rep
items, since it can apply to more than one overloadable entity. Set
new flag Has_Pragma_Inline_Always for Inline_Always case.
(Analyze_Pragma, case Complex_Representation): Improve error message.
(Analyze_Pragma, case Assert): When assertions are disabled build the
rewritten code with Sloc of expression rather than pragma, so new
warning about failing is not deleted.
(Analyze_Pragma): Allow pragma Preelaborable_Initialization to apply to
protected types and update error message to reflect that. Test whether
the protected type is allowed for the pragma (an error is issued if the
type has any entries, or components that do not have preelaborable
New pragma Fast_Math
(Analyze_Pragma, case No_Return): Handle generic instance
* snames.h,, snames.adb:
Add new predefined name for interface primitive _Disp_Requeue.
New pragma Fast_Math
*, a-tags.adb: New calling sequence for
(Secondary_Tag): New subprogram.
*, exp_imgv.adb: Move Wide_[Wide_]Image routines here
from Exp_Attr
New calling sequence for String_To_Wide_[Wide_]String
(Expand_Image_Attribute): Major rewrite. New calling sequence avoids
the use of the secondary stack for image routines.
* a-except-2005.adb,, s-wchstw.adb, s-wwdenu.adb: New
calling sequence for String_To_Wide_[Wide_]String
* par-ch3.adb (P_Declarative_Items): Recognize use of Overriding in
Ada 95 mode
(P_Unknown_Discriminant_Part_Opt): Handle missing parens gracefully
Remove Atree.Delete_Tree/Delete_Node and Nlist.Delete_List
* par-ch6.adb (P_Subprogram): Recognize use of Overriding in Ada 95 mode
(P_Formal_Part): Use Skipping parameter in P_Pragma call
to improve error recovery
* par-util.adb (Next_Token_Is): New function
(Signal_Bad_Attribute): Use new Namet.Is_Bad_Spelling_Of function
* par-ch2.adb (Skip_Pragma_Semicolon): Do not resynchronize to
semicolon if missing
(P_Pragma): Implement new Skipping parameter
Remove Atree.Delete_Tree/Delete_Node and Nlist.Delete_List
Fix location of flag for unrecognized pragma message
* par-tchk.adb (U_Left_Paren): New procedure
(U_Right_Paren): New procedure
2007-12-13 Geert Bosch <>
* a-tifiio.adb:
(Put_Int64): Use Put_Digit to advance Pos. This fixes a case where
the second or later Scaled_Divide would omit leading zeroes,
resulting in too few digits produced and a Layout_Error as result.
(Put): Initialize Pos.
2007-12-13 Robert Dewar <>, atree.adb (Flag231..Flag247): New functions
(Set_Flag231..Set_Flag247): New procedures
(Basic_Set_Convention): Rename Set_Convention to be
(Nkind_In): New functions
Remove Atree.Delete_Tree/Delete_Node and Nlist.Delete_List
* exp_ch6.adb (Expand_Call): Use new flag Has_Pragma_Inline_Always
of obsolete function Is_Always_Inlined
(Register_Predefined_DT_Entry): Initialize slots of the second
secondary dispatch table.
Remove Atree.Delete_Tree/Delete_Node and Nlist.Delete_List
(Expand_N_Function_Call): Remove special provision for stack checking.
*, exp_util.adb (Is_Predefined_Dispatching_Operation):
Include _Disp_Requeue in the list of predefined operations.
(Find_Interface_ADT): Modified to fulfill the new specification.
Remove Atree.Delete_Tree/Delete_Node and Nlist.Delete_List
* par-ch4.adb,, nlists.adb:
Remove Atree.Delete_Tree/Delete_Node and Nlist.Delete_List
*, sinfo.adb: (Nkind_In): New functions
Fix location of flag for unrecognized pragma message
* sem_ch7.adb: Use Nkind_In
2007-12-13 Vincent Celier <>
Indicate what flags are used by the Project Manager, gprbuild and
(Opt.Follow_Links_For_Dirs): New flag
(Warn_On_Assertion_Failure): New flag
(Wide_Character_Encoding_Method_Specified): New flag
(Suppress_All_Inlining): New switch set by -fno-inline
(Real_VMS_Target): New flag
New pragma Fast_Math
2007-12-13 Robert Dewar <>
* back_end.adb: Recognize -fno-inline
2007-12-13 Robert Dewar <>
* checks.adb: Fix optimization problem with short-circuited form
2007-12-13 Bob Duff <>
* clean.adb (Usage): Add line for -aP
(Check_Version_And_Help): Change Check_Version_And_Help to be generic,
with a parameter "procedure Usage", instead of passing a pointer to a
procedure. This is to eliminate trampolines (since the Usage procedure
is often nested in a main procedure, and it would be inconvenient to
unnest it).
* g-comlin.adb (For_Each_Simple_Switch): Change For_Each_Simple_Switch
to be generic, with a parameter "procedure Callback (...)", instead of
passing a pointer to a procedure. This is to eliminate trampolines
(since the Callback procedure is usually nested).
* gnatfind.adb, switch.adb,, gnatlink.adb, gnatls.adb,
gnatname.adb, gnatxref.adb, gnatchop.adb, gprep.adb, gnatbind.adb
(Check_Version_And_Help): Change Check_Version_And_Help to be generic.
* g-pehage.adb (Compute_Edges_And_Vertices, Build_Identical_Key_Sets):
Use the generic Heap_Sort_G instead of Heap_Sort_A.
2007-12-13 Hristian Kirtchev <>
*, einfo.adb: Flag 232 is now Implemented_By_Entry.
(Implemented_By_Entry, Set_Implemented_By_Entry): New routines.
(Write_Entry_Flags): Add an entry for Implemented_By_Entry.
(Renamed_In_Spec): New flag
(Has_Pragma_Inline_Always): New flag
Add missing doc for pragma Obsolescent_Warning
Add missing doc for 17 additional unused flags (230-247)
(Is_Derived_Type): Remove condition "not Is_Generic_Type".
Alphabetize with clauses.
Separate Is_Thunk and Has_Thunks flags
(Write_Entity_Flags): Add forgotten entry for Has_Thunks
(Related_Interface): Renamed to Related_Type.
(Has_Thunks/Set_Has_Thunks): Subprograms of new attribute.
(Set_Is_Flag): Restrict the assertion.
2007-12-13 Vincent Celier <>
* errout.adb (Output_Source_Line): Do not keep a trailing space after
the source line number if the source line is empty.
2007-12-13 Geert Bosch <>
* eval_fat.adb (Decompose_Int): Handle argument of zero.
(Compose): Remove special casing of zero.
(Exponent): Likewise.
(Fraction): Likewise.
(Machine): Likewise.
(Decompose): Update comment.
2007-12-13 Ed Schonberg <>
* exp_aggr.adb (Build_Record_Aggr_Code): If there is an aggregate for a
limited ancestor part, initialize controllers of enclosing record
before expanding ancestor aggregate.
(Gen_Assign): If a component of the aggregate is box-initialized, add
code to call Initialize if the component is controlled, and explicit
assignment of null if the component is an access type.
Handle properly aggregates for limited types that appear in object
declarations when the aggregate contains controlled values such as
protected types.
When expanding limited aggregates into individual components, do not
call Adjust on controlled components that are limited.
2007-12-13 Ed Schonberg <>
* expander.adb: Take into account N_Subprogram_Renaming_Declaration
2007-12-13 Hristian Kirtchev <>
* exp_ch3.adb (Predefined_Primitive_Bodies): Generate the body of
predefined primitive _Disp_Requeue.
(Make_Predefined_Primitive_Specs): Create the spec for predefined
primitive _Disp_Requeue.
(Make_Predefined_Primitive_Specs/Predefined_Primitive_Bodies): Set the
type of formal Renamed_Eq to Entity_Id (instead of Node_Id).
(Make_Predefined_Primitive_Specs): Spec of "=" needed if the parent is
an interface type. In case of limited interfaces we now declare all the
predefined primitives associated with synchronized interfaces as
(Predef_Spec_Or_Body): For interface types generate abstract subprogram
(Predefined_Primitive_Bodies): Add body of "=" if the parent of the
tagged type is an interface type and there is no user-defined equality
Add also bodies of predefined primitives associated with synchronized
(Freeze_Record_Type): Do not build bodies of predefined primitives of
interface types because they are now defined abstract.
Add missing documentation.
(Expand_Record_Controller): Update occurrence of Related_Interface
to Related_Type.
(Build_Offset_To_Top_Functions): Do nothing in case of VM.
(Expand_N_Object_Declaration): Take into account VM_Target when handling
class wide interface object declaration.
(Expand_Previous_Access_Type): Do not create a duplicate master entity
if the access type already has one.
(Expand_N_Object_Declaration): Defend against attempt to validity check
generic types. Noticed for -gnatVcf specified with previous errors.
2007-12-13 Arnaud Charlet <>
* exp_ch4.adb (Expand_N_Attribute_Reference, Displace_Allocator_Pointer,
Expand_Allocator_Expression): Take into account VM_Target
* exp_ch5.adb (Expand_N_Extended_Return_Statement): Do not use
secondary stack when VM_Target /= No_VM
2007-12-13 Javier Miranda <>
Ed Schonberg <>
* exp_ch7.adb (Expand_N_Package_Body): Replace occurrence of attribute
Is_Complation_Unit by Is_Library_Level_Entity in the code
that decides if the static dispatch tables need to be built.
(Wrap_Transient_Declaration): Do not generate a finalization call if
this is a renaming declaration and the renamed object is a component
of a controlled type.
2007-12-13 Gary Dismukes <>
*, exp_ch8.adb (Expand_N_Subprogram_Renaming_Declaration):
In the case where the renamed subprogram is a dereference, call
Force_Evaluation on the prefix.
2007-12-13 Hristian Kirtchev <>
Ed Schonberg <>
* exp_ch9.adb (Expand_N_Asynchronous_Select,
Expand_N_Conditional_Entry_Call, Expand_N_Timed_Entry_Call): Code and
comment reformatting.
(Set_Privals): Inherit aliased flag from formal. From code reading.
(Build_Simple_Entry_Call): Out parameters of an access type are passed
by copy and initialized from the actual. This includes entry parameters.
(Expand_N_Requeue_Statement): Reimplement in order to handle both Ada 95
and Ada 2005 models of requeue.
(Null_Statements): Still connsider do-end block null if it contains
Unreferenced and Warnings pragmas.
(Expand_N_Accept_Statement): Do not optimize away null do end if
dispatching policy is other than defaulted.
(Expand_N_Timed_Entry_Call): When the triggering statement is a
dispatching call, manually analyze the delay statement.
(Find_Parameter_Type): Move subprogram to Sem_Util.
2007-12-13 Hristian Kirtchev <>
Javier Miranda <>
*, exp_disp.adb (Default_Prim_Op_Position): Primitive
_Disp_Requeue occupies dispatch table slot number 15. Move
_Disp_Timed_Select to slot 16.
(Make_Disp_Requeue_Body, Make_Disp_Requeue_Spec): New routines which
generate the spec and body of _Disp_Reqeueue.
(Make_DT): Build and initialize the second dispatch table.
Handle initialization of RC_Offset when the parent
is a private type with variable size components.
(Make_Secondary_DT): Complete documentation. Add support to
initialize the second dispatch table.
(Make_Tags): Generate the tag of the second dispatch table.
(Register_Primitive): Add support to register primitives in the
second dispatch table.
2007-12-13 Pascal Obry <>
* expect.c (__gnat_kill) [WIN32]: Implement the SIGINT signal on
Windows. This signal is used by gnatmake to kill child processes for
2007-12-13 Javier Miranda <>
* exp_intr.adb (Expand_Dispatching_Constructor_Call): Add missing
support for generic dispatching constructor calls in which we need to
locate the tag of a secondary dispatch table associated with an
interface type to properly dispatch the call.
(Expand_N_Attribute_Reference [case Address],
Expand_Dispatching_Constructor_Call, Expand_Unc_Deallocation): Fix
handling of VM targets.
2007-12-13 Robert Dewar <>
Ed Schonberg <>
* exp_prag.adb (Expand_Pragma_Assert): Recognize new warning flag for
assert fail
* ug_words: Add entries for -gnatw.a -gnatw.A
* sem_res.adb (Set_String_Literal_Subtype): If the context of the
literal is a subtype with non-static constraints, use the base type of
the context as the base of the string subtype, to prevent type
mismatches in gigi.
(Resolve_Actuals): If the actual is an entity name, generate a
reference before the actual is resolved and expanded, to prevent
spurious warnings on formals of enclosing protected operations.
(Analyze_Overloaded_Selected_Component): If type of prefix if
class-wide, use visible components of base type.
(Resolve_Selected_Component): Ditto.
(Resolve_Short_Circuit): Detect case of pragma Assert argument
evaluating to False, and issue warning message.
* usage.adb: Add lines for -gnatw.a and -gnatw.A
2007-12-13 Emmanuel Briot <>
* (No_Time): New constant, to represent an uninitialized
time value
*, g-catiio.adb (Value): Added support for more date
(Month_Name_To_Number): New subprogram
* g-dirope.adb (Get_Current_Dir): On windows, normalize the drive
letter to upper-case.
2007-12-13 Robert Dewar <>
Ed Schonberg <>
* gnat1drv.adb (Gnat1drv): Properly set new flag Opt.Real_VMS_Target
* layout.adb (Resolve_Attribute, case 'Access): If designated type of
context is a limited view, use non-limited view when available. If the
non-limited view is an unconstrained array, this enforces consistency
requirements in 3.10.2 (27).
(Layout_Type): For an access type whose designated type is a limited
view, examine its declaration to determine if it is an unconstrained
array, and size the access type accordingly.
(Layout_Type): Do not force 32-bits for convention c subprogram
pointers in -gnatdm mode, only if real vms target.
* sem_attr.adb (Analyze_Access_Attribute): Use new flag
Has_Pragma_Inline_Always instead of obsolete function Is_Always_Inlined
(Analyze_Access_Attribute,Attribute_Address): Remove checks for
violations of the No_Implicit_Dynamic_Code restriction.
(Resolve_Attribute, case 'Access): If designated type of context is a
limited view, use non-limited view when available. If the non-limited
view is an unconstrained array, this enforces consistency requirements
in 3.10.2 (27).
(Layout_Type): For an access type whose designated type is a limited
view, examine its declaration to determine if it is an unconstrained
array, and size the access type accordingly.
2007-12-13 Vincent Celier <>
* gnatcmd.adb (GNATCmd): Do not issue -d= switch to gnatmetric when
object directory of main project does not exist.
On VMS, correctly set then environment variable for the source
2007-12-13 Vasiliy Fofanov <>
*, g-regist.adb (Set_Value): new parameter Expand; when
set to True this procedure will create the value of type REG_EXPAND_SZ.
It was only possible to create REG_SZ values before.
2007-12-13 Robert Dewar <>
*, g-spchge.adb, g-u3spch.adb,,
g-wispch.adb,, g-zspche.adb,,
namet-sp.adb, New files.
* g-speche.adb: Use generic routine in g-spchge
*, s-wchcnv.adb:
Minor code cleanup (make formal type consistent with spec)
* namet.adb: Update comments.
* par-endh.adb (Evaluate_End_Entry): Use new
Namet.Sp.Is_Bad_Spelling_Of function
* par-load.adb (Load): Use new Namet.Sp.Is_Bad_Spelling_Of function
* sem_aggr.adb (Resolve_Record_Aggregate): If a component of an
ancestor is an access type initialized with a box, set its type
explicitly, for use in subsequent expansion.
(Check_Misspelled_Component): Use new Namet.Sp.Is_Bad_Spelling_Of
2007-12-13 Robert Dewar <>
* g-spipat.adb (Break): Fix accessibility error (vsn taking not null
access Vstring)
2007-12-13 Robert Dewar <>
* inline.adb (Back_End_Cannot_Inline): Use new flag
Has_Pragma_Inline_Always instead of obsolete function Is_Always_Inlined
*, sem_ch6.adb (Analyze_Subprogram_Body): Use new flag
Has_Pragma_Inline_Always instead.
of obsolete function Is_Always_Inlined
(Build_Body_To_Inline): Same change
(Cannot_Inline): Same change
Do not give warning on exception raise in No_Return function
* sem_ch13.adb (Analyze_Record_Representation_Clause): If an inherited
component has two inconsistent component clauses in the same record
representation clause, favor the message that complains about
duplication rather than inconsistency.
Update comments.
(Record_Representation_Clause): Do not warn on missing component
clauses for inherited components of a type extension.
(Rep_Item_Too_Late): Do not attempt to link pragma into rep chain for
an overloadable item if it is a pragma that can apply to multiple
overloadable entities (e.g. Inline) because a pragma cannot be on
more than one chain at a time.
(Validate_Unchecked_Conversion): Add code to warn on unchecked
conversion where one of the operands is Ada.Calendar.Time.
(Analyze_Attribute_Definition_Clause): Fix typo in error message.
For now, ignore Component_Size clause on VM targets, as done for
pragma Pack.
2007-12-13 Emmanuel Briot <>
Vincent Celier <>
*, prj.adb (Is_A_Language): Now takes a Name_Id instead of a
(Must_Check_Configuration, Default_Language_Is_Ada): new flags in
(Hash): Move instantiation of System.HTable.Hash from spec to body
(prj-nmsc.adb): Optimize calls to Name_Find when on case sensitive
systems, since we do not need to recompute the Name_Id for the canonical
file name.
(Body_Suffix_Id_Of, Spec_Suffix_Id_Of): new version that takes a name_id
as a parameter. This parameter is in fact always "ada" in all calls, and
we were doing 160560 extra calls to Name_Find to convert it to Name_Ada
while loading a project with 40000 files
* prj-attr.adb: Fix name of attribute Dependency_Driver
Change the kind of indexing for attribute Root
* prj-dect.adb (Parse_Declarative_Items): Allow redeclarations of
variables already declared, in case constructions.
* prj-env.adb (Initialize): Reset Current_Source_Path_File and
Current_Object_Path_File to No_Path.
* prj-ext.adb (Initialize_Project_Path): In multi language mode, use
* prj-makr.adb: new parameter Current_Dir
*, prj-nmsc.adb (Find_Explicit_Sources): Do not look for
Ada sources when language is not Ada.
Change Opt.Follow_Links to Opt.Follow_Links_For_Files.
(Find_Excluded_Sources, Find_Explicit_Sources): new subprograms
(Must_Check_Configuration, Default_Language_Is_Ada): new flags.
(Locate_Directory): Always resolve links when computing Canonical_Path
(Look_For_Sources): Make sure that Name_Buffer contains the file name
in Source_Files before checking for the presence of a directory
Optimize calls to Name_Find when on case sensitive systems.
(Body_Suffix_Id_Of, Spec_Suffix_Id_Of): new version that takes a name_id
as a parameter.
(Prj.Nmsc.Check): new parameter Current_Dir
(Check_Ada_Naming_Schemes): Restrictions on suffixes are relaxed. They
cannot be empty and the spec suffix cannot be the same as the body or
separate suffix.
(Get_Unit): When a file name can be of several unit kinds (spec, body or
subunit), always consider the longest suffix.
(Check_Configuration): Do not issue an error if there is no compiler
for a language. Just issue a warning and ignore the sources for the
(Check_Library_Attributes): Only check Library_Dir if Library_Name is
not empty.
(Check_Naming_Schemes.Maked_Unit): Only output message if high verbosity
(Unit_Exceptions): New hash table
(Check_Naming_Schemes): Check if a file that could be a unit because of
the naming scheme is not in fact a source because there is an exception
for the unit.
(Look_For_Sources): Put the unit exceptions in hash table
(Get_Unit_Exceptions): Give initial value No_Source to local variable
Other_Part to avoid exception when code is compiled with validity
(Get_Sources_From_File): Check that there is no directory information
in the file names.
(Look_For_Sources): Check that there is no directory information in the
list of file names in Source_Files.
(Look_For_Sources): In multi-language mode, do not allow exception file
names that are excluded.
(Excluded_Sources_Htable): New hash table
(Search_Directories.Check_File): New procedure to simplify
(Search_Directories): Do not consider excluded sources
(Look_For_Sources): Populate Excluded_Sources_Htable before calling
(Get_Exceptions): Set component Lang_Kind of Source_Data
(Get_Unit_Exceptions): Ditto
(Search_Directories): Ditto
* prj-pars.adb: new parameter Current_Dir
*, prj-part.adb:
Change Opt.Follow_Links to Opt.Follow_Links_For_Files.
(Opt.Follow_Links_For_Dirs): New flag
(Project_Path_Name_Of): Cache information returned by this routine as
Locate_Regular_File is a costly routine. The code to output a log
information and the effective call to Locate_Regular_File is now
factorized into a routine (code clean-up).
(Parse, Parse_Single_Project): new parameter Current_Dir
When main project file cannot be found, indicate in the error
message the project path that was used to do the search.
*, prj-proc.adb (Opt.Follow_Links_For_Dirs): New flag
(Prj.Proc.Process*): new parameter Current_Dir
* switch-m.adb: Change Opt.Follow_Links to Opt.Follow_Links_For_Files
2007-12-13 Bob Duff <>
*, restrict.adb (Check_Implicit_Dynamic_Code_Allowed): New
procedure to be called from the back end to check the
No_Implicit_Dynamic_Code restriction.
2007-12-13 Arnaud Charlet <>
* rtsfind.adb (Check_CRT): Take into account RTE_Available_Call
Fixes another case where RTE_Available_Call was ignored instead of being
taken into account.
(Load_Fail): Ditto.
* Add new entries.
2007-12-13 Robert Dewar <>
* g-byorma.adb,, g-decstr.adb,,, g-encstr.adb,, New files.
* scn.adb: Implement BOM recognition
2007-12-13 Thomas Quinot <>
Ed Schonberg <>
* sem_ch10.adb (Check_Private_Child_Unit): A non-private library level
subprogram body that acts as its own spec may not have a non-private
WITH clause on a private sibling.
(Build_Unit_Name): If the parent unit in the name in a with_clause on a
child unit is a renaming, create an implicit with_clause on that
parent, and not on the unit it renames, to prevent visibility errors
in the current unit.
2007-12-13 Ed Schonberg <>
* sem_ch12.adb (Instantiate_Formal_Subprogram): In the subprogram
renaming declaration, use the Slocs of the formal parameters from the
declaration of the formal subprogram when creating the formal parameter
entities in the renaming declaration.
(Analyze_Formal_Type_Declaration): Change the placement of the error
message concerning illegal known discriminants. It is now posted on the
type rather than on the first discriminant. This change ensures early
error report.
(Freeze_Subprogram_Body): If the generic subprogram is nested within
the package body that contains the instance, do not generate an
out-of-place freeze node for the enclosing package.
(Collect_Previous_Instantiations): Ignore internal instantiations
generated for formal packages.
(Validate_Derived_Type_Instance): Add a check that when a formal
derived type is Known_To_Have_Preelab_Init then the actual type must
have preelaborable initialization, and issue an error when this
condition is violated.
2007-12-13 Robert Dewar <>
* s-imenne.adb, New files.
* s-imgboo.adb,, s-imgcha.adb,, s-imgdec.adb,,, s-imgint.adb,, s-imglld.adb,, s-imglli.adb,, s-imgllu.adb,,
s-imgrea.adb,, s-imguns.adb,, s-imgwch.adb, New calling sequence for Image routines to avoid sec
stack usage.
2007-12-13 Javier Miranda <>
Ed Schonberg <>
*, sem_ch3.adb (Check_Abstract_Overriding): Avoid
generation of spurious error if parent is an interface type; caused
because predefined primitive bodies will be generated later by
(Process_Subtype): The subtype inherits the Known_To_Have_Preelab_Init
(Derive_Subprograms): Handle derivations of predefined primitives
after all the user-defined primitives to ensure that they are
found in proper order in instantiations.
(Add_Interface_Tag_Components, Inherit_Components): Update occurrences
of Related_Interface to Related_Type.
(Record_Type_Declaration): Minor reordering of calls to decorate the
Tag component because the entity must have set its Ekind attribute
before setting its Is_Tag attribute.
(Analyze_Subtype_Declaration): In the case of subtypes with
Private_Kind, inherit Known_To_Have_Preelab_Init from the parent.
2007-12-13 Hristian Kirtchev <>
Ed Schonberg <>
* sem_ch4.adb (Analyze_Selected_Component): Include the requeue
statement to the list of contexts where a selected component with a
concurrent tagged type prefix should yield a primitive operation.
(Find_Primitive_Operation): Handle case of class-wide types.
(Analyze_Overloaded_Selected_Component): If type of prefix is
class-wide, use visible components of base type.
(Resolve_Selected_Component): Ditto.
(Try_Primitive_Operation, Collect_Generic_Type_Ops): If the type is a
formal of a generic subprogram. find candidate interpretations by
scanning the list of generic formal declarations.:
(Process_Implicit_Dereference_Prefix): If the prefix has an incomplete
type from a limited_with_clause, and the full view is available, use it
for subsequent semantic checks.
(Check_Misspelled_Selector): Use Namet.Sp.Is_Bad_Spelling_Of function
(Find_Primitive_Operation): New function.
(Analyze_Overloaded_Selected_Component): insert explicit dereference
only once if several interpretations of the prefix yield an access type.
(Try_Object_Operation): Code and comment cleanup.
(Analyze_Selected_Component): Reorder local variables. Minot comment and
code reformatting. When the type of the prefix is tagged concurrent, a
correct interpretation might be available in the primitive and
class-wide operations of the type.
2007-12-13 Robert Dewar <>
Ed Schonberg <>
* sem_ch8.adb (Analyze_Subprogram_Renaming): Special error message for
renaming entry as subprogram using rename-as-body if subprogram spec
(Use_One_Type): The clause is legal on an access type whose designated
type has a limited view.
(Find_Direct_Name): Use Namet.Sp.Is_Bad_Spelling_Of function
(Find_Expanded_Name): Use Namet.Sp.Is_Bad_Spelling_Of function
(Analyze_Renamed_Primitive_Operation): new procedure to determine the
operation denoted by a selected component.
(Analyze_Renamed_Entry): Resolve the prefix of the entry name, because
it can be an expression, possibly overloaded, that returns a task or
an access to one.
2007-12-13 Hristian Kirtchev <>
Gary Dismukes <>
* sem_ch9.adb (Analyze_Requeue): Add a local flag to capture whether a
requeue statement is dispatching. Do not emit an error when the name is
not an entry and the context is a dispatching select. Add code to
perform subtype conformance between the formals of the current entry
and those of the target interface primitive.
(Analyze_Asynchronous_Select, Analyze_Conditional_Entry_Call, Analyze_
Timed_Entry_Call): Analyze the triggering statement as the first step of
the processing. If this is a dispatching select, postpone the analysis
of all select statements until the Expander transforms the select. This
approach avoids generating duplicate identifiers after the Expander has
replicated some of the select statements. In case the Expander is
disabled, perform regular analysis.
(Check_Triggering_Statement): New routine.
(Analyze_Requeue): Exclude any interpretations that are not entries when
checking overloaded names in a requeue. Also test type conformance for
matching interpretations rather than requiring subtype conformance at
that point to conform with the RM's resolution rule for requeues.
2007-12-13 Ed Schonberg <>
* sem_disp.adb (Check_Dispatching_Call): If an actual in a call to an
inherited operation is a defaulted tag-indeterminate call, and there is
a statically tagged actual, use the static tag as a controlling actual
for the defaulted actual.
2007-12-13 Geert Bosch <>
* sem_eval.adb (Eval_Real_Literal): N_Constant_Declaration is a static
context, so do not call Check_Non_Static_Context.
2007-12-13 Hristian Kirtchev <>
* sem_type.adb (Function_Interp_Has_Abstract_Op): Add guard to check
whether formal E is an entity which may have parameters.
2007-12-13 Bob Duff <>
Javier Miranda <>
Robert Dewar <>
*, sem_util.adb (Is_Concurrent_Interface): New routine.
(Set_Convention): New procedure to set the Convention flag, and in
addition make sure the Favor_Top_Level flag is kept in sync (all
foreign-language conventions require Favor_Top_Level = True).
(Collect_Abstract_Interfaces): Update occurrences of Related_Interface
to Related_Type.
(Collect_Interfaces_Info): Minor update to handle the two secondary
dispatch tables. Update occurrence of Related_Interface to Related_Type.
(Generate_Parent_Ref): Add parameter to specify entity to check
(Is_Preelaborable_Expression): Allow the name of a discriminant to
initialize a component of a type with preelaborable initialization.
This includes the case of a discriminal used in such a context.
(Is_Dependent_Component_Of_Mutable_Object): Take into account the
latest Ada 2005 rules about renaming and 'Access of
discriminant-dependent components.
(Check_Nested_Access): Add handling when there are no enclosing
subprograms (e.g. case of a package body).
(Find_Parameter_Type): Factor routine from several other compiler files.
Remove routine from Find_Overridden_Synchronized_Primitive.
2007-12-13 Thomas Quinot <>
* sinput.adb (Get_Source_File_Index): Add assertion to guard against
an invalid access to an uninitialized slot in the
2007-12-13 Thomas Quinot <>
* sinput-l.adb (Load_File): Disable style checks when preprocessing.
2007-12-13 Bob Duff <>
* Apply new pragma Favor_Top_Level to all
access-to-subprogram types in this package.
2007-12-13 Olivier Hainque <>
* (Stack_Analyzer): Remove First_Is_Topmost, redundant
with Stack_Grows_Down in System.Parameters. Rename Array_Address into
Stack_Overlay_Address and document that we are using an internal
(Byte_Size, Unsigned_32_Size): Remove, now useless.
(Pattern_Type, Bytes_Per_Pattern): New subtype and constant, to be used
consistently throughout the various implementation pieces.
* s-stausa.adb (Stack_Slots): New type, abstraction for the stack
overlay we are using to fill the stack area with patterns.
(Top_Slot_Index_In, Bottom_Slot_Index_In): Operations on Stack_Slots.
(Push_Index_Step_For, Pop_Index_Step_For): Likewise.
(Fill_Stack, Compute_Result): Use the Stack_Slots abstraction.
2007-12-13 Robert Dewar <>
* s-stoele.adb ("mod"): mod negative value raises Constraint_Error
2007-12-13 Arnaud Charlet <>
* s-tassta.adb:
(Create_Task): Take into account tasks created by foreign threads.
Code clean up: use constants instead of hard coded values.
2007-12-13 Robert Dewar <>
* styleg.adb (Check_Comment): More liberal rules for comment placement
2007-12-13 Olivier Hainque <>
* tb-alvms.c (struct tb_entry_t, __gnat_backtrace): Revert back to use
of Procedure Value instead of Frame Pointer as the invocation
identifier associated with the instruction pointer in each traceback
* g-trasym-vms-alpha.adb (Traceback_Entry, PV_For, FP_For,
TB_Entry_For): Revert back to use of Procedure Value instead of Frame
Pointer as the invocation identifier passed to tbk$symbolize.
*, s-traent-vms.adb
(Traceback_Entry, PV_For, FP_For, TB_Entry_For): Revert back to use of
Procedure Value instead of Frame Pointer as the invocation identifier
passed to tbk$symbolize.
2007-12-13 Robert Dewar <>
*, tbuild.adb:
Fix location of flag for unrecognized pragma message
2007-12-13 Robert Dewar <>
*, treepr.adb: (pl): implement use of positive value
2007-12-13 Robert Dewar <>
* xeinfo.adb: Remove warnings
* xnmake.adb: Remove warnings
* xsinfo.adb: Remove warnings
* xtreeprs.adb: Remove warnings
* xsnames.adb: Remove warnings
* a-ngcoar.adb: Fix typo.
* s-interr.adb: Minor reformatting
* env.c: Minor reformatting.
* g-bytswa.adb: Minor reformatting.
* Minor documentation improvements
* s-tasinf-mingw.adb: Minor header fix
* a-clrefi.adb: Minor reformatting
* Minor documentation improvement
* Minor documentation improvement
* Minor documentation improvement
* Minor documentation improvement
* Minor documentation improvement
* Minor reformatting
* debug.adb: Add documentation for the gprbuild debug flags
* exp_ch2.adb: Use Nkind_In to simplify code throughout
* exp_pakd.adb: Minor reformatting
*, g-alleve.adb: Remove assertions.
Add comment about minor differences between targets regarding
floating-point operations.
* g-thread.adb: Remove pragma unreferenced.
* Minor reformatting
* par-ch9.adb: Minor reformatting of error messages
* sem_case.adb: Minor reformatting
* s-fileio.adb: Minor reformattinng
* Minor typo
* vxaddr2line.adb:
Take into account 'Success' value as per new GNAT warning.
2007-12-13 Vincent Celier <>
* a-direct.adb (Create_Path): Always take '/' as a directory separator,
even on Windows
2007-12-13 Robert Dewar <>
Bob Duff <>
* gnat_ugn.texi: Dcoument new rules for style check comment alignment
Document that suffixes may be terminations of each others
Add doc for -gnatw.a and -gnatw.A
Document gnatbind -Wx switch
Document BOM recognition
Document pragma Implemented_By_Entry.
Document new units.
* gnat_rm.texi: (Favor_Top_Level): Document new pragma.
Add doc for pragma Unreferenced suppressing no entities referenced msg
Add documentation of GNAT.Directory_Operations.Iteration
Add documentation of GNAT.Random_Numbers
Add documentation for pragma Shared.
Correct documentation for Bit_Order
Add documentation for the Pool_Address attribute.
Fix and improve documentation of pragma machine_attribute.
New pragma Fast_Math
Document BOM recognition
* Add entries for -gnatw.a -gnatw.A
Add /Wide_Character_Encoding for binder
Add qualifier for the new gnatpp option --no-separate-loop-then
2007-12-13 Matthew Heaney <>
*,,, Document
which generic formal operations are called for each operation.
2007-12-13 Olivier Hainque <>
* tb-gcc.c (uw_data_t, trace_callback): Only define if not GCC-SJLJ eh.
(__gnat_backtrace): Early return 0 if using GCC-SJLJ eh.
2007-12-13 Emmanuel Briot <>
*, s-os_lib.adb (Normalize_Pathname): Do not compute
Reference_Dir unless we actually need it.
2007-12-13 Vasiliy Fofanov <>
Tristan Gingold <>
* (Fd_Set_Access): make it 32-bit.
* s-osprim-vms.adb,
a-calend-vms.adb: Remove pragma warning off and add pragma
2007-12-13 Robert Dewar <>
* impunit.adb: Add entries for missing units
* Makefile.rtl: Add new run-time units.
* Update dependencies.
2007-12-13 Bob Duff <>
*, itypes.adb (Create_Itype): For access-to-subprogram
types, set Can_Use_Internal_Rep appropriately, based on
2007-12-13 Gary Dismukes <>
Arnaud Charlet <>
* make.adb (Scan_Make_Arg): Add test for -aamp_target switch, passing
it to the front end and setting the aamp_target environment variable
to the switch's argument to ensure that gnaampbind and gnaamplink will
take the specified library into account.
(Make): Only set Check_Object_Consistency to False for JVM, not for CIL
target, since the CIL compiler supports an "object" file (.il files).
2007-12-13 Vincent Celier <>
* symbols-processing-vms-ia64.adb (Process.Skip_Half): New procedure
(Process.H): Remove variable. Replace Read_Half (H) with Skip_Half.
2007-12-13 Geert Bosch <>
* s-parame-vxworks.adb:
Update comments to reflect usage of this package by Nucleus.
2007-12-13 Arnaud Charlet <>
* Kill new warning on Convention C, since changing the
spec would break code.
*, vx_stack_info.c: New files.
* Removed.
2007-12-10 Eric Botcazou <>
* ada-tree.h (TYPE_RETURNS_BY_TARGET_PTR_P): Move around.
2007-12-09 Samuel Tardieu <>
PR ada/34366
* sem_ch3.adb (Designates_T): New function.
(Mentions_T): Factor reusable part of the logic into Designates_T.
Consider non-access parameters and access and non-access result.
(Check_Anonymous_Access_Components): Set ekind of anonymous access to
E_Subprogram_Type to E_Anonymous_Access_Subprogram_Type.
* Update comment for E_Anonymous_Access_Subprogram_Type.
2007-12-07 Ludovic Brenta <>
PR ada/34361
* mlib-tgt.adb, Fix comments at the top to reflect
the new implementation of target-specific calls.
2007-12-07 Olivier Hainque <>
* decl.c (gnat_to_gnu_entity) <case E_Access_Type>: When computing
the designated full view, only follow a second level Full_View link
for Non_Limited_Views of from_limited_with references.
2007-12-07 Samuel Tardieu <>
PR ada/15805
* sem_ch6.adb (Process_Formals): Prevent an access type formal
to be initialized with an access to constant object.
* sem_ch3.adb (Analyze_Object_Declaration): Signal an error
when an access to constant is used to initialize an access
PR ada/21346
* a-direct.adb (Compose): Containing_Directory can be an empty string.
2007-12-07 Olivier Hainque <>
PR ada/34173
* decl.c (gnat_to_gnu_entity) <case E_Array_Type>: When setting
the alignment on the GCC XUA array type, set TYPE_USER_ALIGN if
this is from an alignment clause on the GNAT entity.
* utils.c (create_field_decl): Rewrite the computation of DECL_ALIGN
to distinguish the case where we set it from the type's alignment.
When so, propagate TYPE_USER_ALIGN into DECL_USER_ALIGN to indicate
whether this alignment was set from an explicit alignment clause.
2007-12-06 Eric Botcazou <>
* decl.c (make_packable_type): Revert last change.
(gnat_to_gnu_field): Avoid setting size and position multiple times.
* utils.c (finish_record_type): Retrieve the real name of the type.
2007-12-05 Eric Botcazou <>
* trans.c (lvalue_required_p): Take base node directly instead
of its parent. Rename second parameter to 'gnu_type'.
<N_Indexed_Component>: Return 0 if the node isn't the prefix.
<N_Slice>: Likewise.
(Identifier_to_gnu): Rename parent_requires_lvalue to require_lvalue.
Adjust calls to lvalue_required_p.
2007-12-05 Samuel Tardieu <>
PR ada/21489
* exp_ch9.adb (Build_Simple_Entry_Call): Initialize OUT access type
parameters of an entry call.
2007-12-03 Robert Dewar <>
Samuel Tardieu <>
PR ada/34287
* sem_util.adb (Safe_To_Capture_Value): Do not capture values
of variables declared in a library-level package.
2007-12-02 Samuel Tardieu <>
* clean.adb (Clean_Library_Directory): Use Empty_String'Access intead
of Empty_String'Unchecked_Access.
* Add support for sh4-linux.
* New file.
2007-12-01 Kostik Belousov <>
PR ada/33722
* env.c (__gnat_setenv): FreeBSD 7 has a POSIX conformant putenv()
and its argument must not be free()ed.
2007-11-29 Eric Botcazou <>
* decl.c (make_packable_type): Retrieve the real name of the type.
(maybe_pad_type): Simplify similar code.
2007-11-28 Samuel Tardieu <>
PR ada/15804
* par-ch3.adb (P_Variant_Part): Signal an error when anything other
than an identifier is used after "case" in a variant_part.
PR ada/17318
* par-ch4.adb (Is_Parameterless_Attribute): New map.
(P_Name, Scan_Apostrophe block): Parse left parenthesis following
attribute name or not depending on the new map.
* sem-attr.adb (Analyze_Attribute): Parameterless attributes
returning a string or a type will not be called with improper
* (Attribute_Class_Array): Move to
* (Attribute_Class_Array): Moved from
PR ada/32792
* sem_attr.adb (Analyze_Attribute, Attribute_Integer_Value clause):
Signal an error when attribute argument is a fixed-point value of
an unknown type.
PR ada/22559
* sem_ch3.adb (Build_Derived_Numeric_Type): Do not set RM_Size on
a derived ordinary fixed point type.
* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Recompute
RM_Size when a Small clause is found.
2007-11-26 Andreas Krebbel <>
PR 34081/C++
* trans.c (Subprogram_Body_to_gnu, Compilation_Unit_to_gnu):
Pass 'false' for the new allocate_struct_function parameter.
* utils.c (build_function_stub): Likewise.
2007-11-25 Richard Guenther <>
* utils.c (gnat_pushlevel): Use BLOCK_CHAIN.
(gnat_poplevel): Likewise.
2007-11-25 Eric Botcazou <>
* decl.c (gnat_to_gnu_entity) <E_Record_Type>: If the type has
strict alignment, no alignment clause and a known static size, cap
the type alignment to the greatest power of 2 factor of the size.
(gnat_to_gnu_field): If the field has a component clause, is aliased
or of a type with strict alignment, require that its size be equal to
that of the type.
(validate_size): Use the type size as the minimum size for a type with
strict alignment.
2007-11-23 Samuel Tardieu <>
* s-inmaop-posix.adb, s-intman-vxworks.adb, s-taprop-hpux-dce.adb,
s-taprop-irix.adb, s-taprop-linux.adb, s-taprop-lynxos.adb,
s-taprop-posix.adb, s-taprop-tru64.adb, s-taprop-vxworks.adb:
Use 'Access instead of 'Unchecked_Access in second and third
arguments of pthread_sigmask.
2007-11-23 Eric Botcazou <>
* decl.c (ceil_alignment): New function.
(gnat_to_gnu_entity): Use it to set the alignment on atomic types.
(make_packable_type): Likewise.
2007-11-22 Olivier Hainque <>
* trans.c (gnat_to_gnu) <case N_Free_Statement>: Reformat lines
to fit in 80 columns.
2007-11-21 Aurelien Jarno <>
* (To_Target_Priority): New function.
* Add EH_MECHANISM=-gcc to kfreebsd-gnu. Remove SYMLIB.
2007-11-19 Eric Botcazou <>
PR ada/34098
* misc.c (gnat_adjust_rli): Delete.
(gnat_init): Do not initialize the translation code here.
Do not call set_lang_adjust_rli.
* trans.c (init_code_table): Make static.
(gnat_init_stmt_group): Delete.
(gigi): Initialize the translation code entirely here.
Emit debug info for the common types here instead of...
* utils.c (gnat_init_decl_processing):
* gigi.h (init_code_table): Delete.
(gnat_init_stmt_group): Likewise.
2007-11-16 Olivier Hainque <>
* utils2.c (build_call_alloc_dealloc) <if gnu_obj>: Move the code
retrieving an allocator return value from a super-aligned address from
here to ...
* trans.c (gnat_to_gnu) <case N_Free_Statement>: ... here, and don't
expect a super-aligned address for a fat or thin pointer.
2007-11-14 Eric Botcazou <>
* trans.c (call_to_gnu): Always set the source location on the call
expression. If the function returns-by-target, also set it on the
address expression.
2007-11-14 Samuel Tardieu <>
* adaint.c, init.c, initialize.c, link.c: Remove system-specific
sections of non-supported Interix target.
* Removed.
* (chars_ptr): Make it a C convention type.
2007-11-13 Samuel Tardieu <>
* a-tasatt.adb: Add a comment at the beginning of the package
explaining why in general 'Unchecked_Access must be used instead
of 'Access.
* sem_prag.adb (Process_Convention): Move the test for the
entity on which the Convention pragma applies down to also
forbid pragma Convention on enumeration literals reached
through renamings.
2007-11-10 Samuel Tardieu <>
* a-tasatt.adb: Revert previous change for this file as it will
generate an error when this package is instantiated from a
local context.
2007-11-07 Samuel Tardieu <>
* a-tasatt.adb: Type Wrapper should be declared in comment instead
of already declared type Node_Access.
Use 'Access instead of 'Unchecked_Access when applicable. Local
lifetime is the one of the package.
(Set_Value): W is allocated on the heap.
* g-socket.adb: Use 'Access instead of 'Unchecked_Access when
(Get_Socket_Option): Optlen formal of C_Getsockopt is of an anonymous
access type.
(Receive_Socket): Fromlen formal of C_Recvfrom is of an anonymous
access type.
* s-taasde.adb: Use 'Access instead of 'Unchecked_Access when
(elaboration code): Timer_Queue lifetime is the one of the
* tracebak.c (i386 alternative): Remove useless comparaison
which is always false; LOWEST_ADDRESS is 0 and is never greater
than an unsigned integer.
* sem_attr.adb (Analyze_Attribute): Remove duplicate identical
embedded check for "Ada_Version >= Ada_05".
2007-11-07 Olivier Hainque <>
* decl.c (make_aligning_type): Set the mode of the RECORD_TYPE we
craft and expand comment.
2007-11-01 Eric Botcazou <>
* lang-specs.h: Move translation of -fRTS= after -gnatez switch.
2007-10-23 Eric Botcazou <>
* misc.c (gnat_handle_option): Replace call to abort with
call to gcc_unreachable.
(gnat_init): Likewise.
(gnat_expand_expr): Likewise.
(fp_prec_to_size): Likewise.
(fp_size_to_prec): Likewise.
2007-10-23 Richard Guenther <>
PR bootstrap/33608
* tracebak.c: #undef abort after including system.h.
2007-10-20 Danny Smith <>
* (LIBGNAT_TARGET_PAIRS) Add s-tasinf-mingw.adb,, a-exetim-mingw.adb,
for win32 targets.
(EXTRA_GNATRTL_TASKING_OBJS): Add a-exetim.o for win32 targets.
2007-10-15 Eric Botcazou <>
* s-osinte-tru64.adb: (Hide_Yellow_Zone): Add On parameter.
Set the protection status of the guard page based on the value of On.
* (Hide_Yellow_Zone): Add On parameter.
* s-taprop-tru64.adb: (Enter_Task): Pass True to Hide_Yellow_Zone.
(Exit_Task): Pass False to Hide_Yellow_Zone.
2007-10-15 Robert Dewar <>
* s-taprop-solaris.adb, s-taprop-vms.adb, s-taprop-mingw.adb,
s-taprop-vxworks.adb, s-taprop-posix.adb, a-calend-vms.adb,
a-calend.adb, a-nuflra.adb, a-tigeau.adb, a-wtgeau.adb,
checks.adb, bindgen.adb, eval_fat.adb, exp_fixd.adb, fmap.adb,
freeze.adb, g-awk.adb, g-calend.adb, g-diopit.adb, g-expect.adb,
gnatchop.adb, gnatlink.adb, g-spipat.adb, g-thread.adb, make.adb,
mdll.adb, mlib.adb, mlib-prj.adb, osint.adb, par-ch3.adb, prj.adb,
prj-makr.adb, sem_prag.adb, sem_type.adb, s-fatgen.adb, s-fileio.adb,, sinput-d.adb, s-taasde.adb,, s-tasren.adb,
s-tassta.adb, s-tpobop.adb, s-tposen.adb, stylesw.adb,,
uintp.adb, validsw.adb, makegpr.adb, a-rbtgso.adb, a-crbtgo.adb,
a-coorse.adb, a-convec.adb, a-coinve.adb, a-cohama.adb, a-ciorse.adb,
a-cihama.adb, a-cidlli.adb, a-chtgop.adb, a-cdlili.adb, a-cdlili.adb,
a-coormu.adb, a-ciormu.adb, a-cihase.adb, a-cohase.adb, a-ciorma.adb,
a-coorma.adb, a-ztgeau.adb, symbols-vms.adb, a-crdlli.adb,
a-calari.adb, a-calfor.adb, s-os_lib.adb, s-regpat.adb, a-ngrear.adb:
Minor reformatting.
Add Unreferenced and Warnings (Off) pragmas for cases of
variables modified calls where they are IN OUT or OUT parameters and
the resulting values are not subsequently referenced. In a few cases,
we also remove redundant code found by the new warnings.
* ug_words,, usage.adb, sem_util.adb,,
sem_warn.adb,, sem_res.adb, sem_ch7.adb, sem_ch8.adb,
sem_ch5.adb,, lib-xref.adb,, exp_smem.adb,
sem_ch11.adb, exp_ch6.adb,, einfo.adb: implement a new
warning controlled by -gnatw.o that warns on cases of out parameter
values being ignored.
2007-10-15 Geert Bosch <>
* adaint.c, socket.c, cal.c: Initial port to arm-mentor-nucleus.
* expect.c: Initial port to arm-mentor-nucleus.
Use kill for __gnat_kill() on VMS.
2007-10-15 Emmanuel Briot <>
*, ali.adb (Scan_ALI): Initialize XE.Tref to a known default
(Xref_Record): Change type for Line, since in the case of a reference to
a predefined entity (as happens for array index types), the line is set
to 0.
Add support for parsing multiple array index types info, or
multiple inherited interfaces info. This information cannot be stored
in Xref_Entity_Record, which only supports a single instance of Tref_*,
and is therefore stored in the list of references instead. It has a
special treatement later on in tools that use this information.
2007-10-15 Tristan Gingold <>
* debug.adb: Document use of -gnatd.a and -gnatd.I
* layout.adb: On OpenVMS -gnatd.a disables alignment optimization.
2007-10-15 Javier Miranda <>
* exp_attr.adb (Expand_N_Attribute_Reference): Case Access,
Unchecked_Access, and Unrestricted_Access. Cleanup code that takes
care of access to class-wide interface types plus removal of bizarre
conversion of tagged object to access type (reported by Gary
Dismukes). After this patch there is no need to perform any
additional management on these nodes in Expand_Interface_Actuals.
* exp_disp.adb (Expand_Interface_Actuals): Code cleanup. Remove code
that handles use of 'Access and 'Unchecked_Access applied to
actuals covering interface types. Such code is now
centralized in Expand_N_Attribute_Reference.
2007-10-15 Ed Schonberg <>
* exp_ch3.adb (Build_Init_Procedure): Keep separate the initialization
of tagged types whose ultimate ancestor is a CPP type.
(Freeze_Array_Type): For a packed array type, generate an initialization
procedure if the type is public, to handle properly a client that
specifies Normalize_Scalars.
2007-10-15 Hristian Kirtchev <>
* exp_ch9.adb (Actual_Index_Expression): When the expansion occurs
inside a generic body, retrieve the full view of the entry family
discrete subtype if available.
2007-10-15 Thomas Quinot <>
* exp_dist.adb (Add_RACW_Primitive_Declarations_And_Bodies): Do not
attempt to generate stubs for hidden primitive operations.
2007-10-15 Vincent Celier <>
* mlib-tgt-specific.adb (Support_For_Libraries): New function,
returning None, used when there is no platform specific body for
2007-10-15 Bob Duff <>
* sem_case.adb, sem_ch13.adb, lib-sort.adb: Replace use of Heap_Sort_A
(passing'Unrestricted_Access of nested subprograms to Sort) with use of
the generic Heap_Sort_G, in order to avoid trampolines.
2007-10-15 Vasiliy Fofanov <>
Jose Ruiz <>
* vx_stack_info.c: New file.
* New file.
* a variant of
for unsupported configurations; use it on VMS targets instead of the
real one.
vx_stack_info.{c,o} that contains the routine __gnat_get_stack_info
used by VxWorks targets to have access to task-specific data and be
able to extract the stack boundaries for stack checking.
Use on ivms.
* Update dependencies.
* sysdep.c (__gnat_get_stack_info): Move to a standalone file
2007-10-15 Vincent Celier <>
* snames.adb, Add new standard name runtime_library_dir
* (Language_Config): Add new component Runtime_Library_Dir
* prj-attr.adb: Add project level attribute Runtime_Library_Dir
* prj-env.adb (Create_Mapping_File): Do not put an entry if the path of
the source is unknown.
* prj-ext.adb: Spelling error fix
* prj-nmsc.adb (Check_Ada_Name): Reject any unit that includes an Ada
95 reserved word in its name.
(Process_Project_Level_Array_Attributes): Process new attribute
* prj-part.adb (Parse_Single_Project): Do not check the name of the
config project against the user project names.
* prj-proc.adb (Expression): In multi-language mode, indexes that do
not include a dot are always case insensitive.
(Process_Declarative_Items): Ditto
(Process_Project_Tree_Phase_1): Set Success to False in case an error is
* prj-util.adb (Value_Of (In_Array)): When Force_Lower_Case_Index is
True, compare both indexes in lower case.
2007-10-15 Robert Dewar <>
* rtsfind.adb: (Load_RTU): Turn off style checks for Load call
2007-10-15 Gary Dismukes <>
* sem_aggr.adb (Resolve_Record_Aggregate): In the case of a box
association for an access component, add an association with null as
the expression. Remove testing for array subtypes and the setting in
that case of Ctyp to the array component type, which prevented proper
inclusion of an association for null-initialized arrays. Collapse
condition that tests for array subtypes into just a test of
Is_Partially_Initialized_Type (which already covers arrays anyway).
2007-10-15 Hristian Kirtchev <>
* sem_ch12.adb: Minor code reformatting.
(Check_Generic_Child_Unit): Iterate over the homonym chain in order to
find the parent package which may have been hidden by local
2007-10-15 Gary Dismukes <>
* sem_ch3.adb (Build_Derived_Concurrent_Type): Set the Is_Constrained
flag of derived concurrent types, taking into account the flag setting
on the parent subtype and any new set of discriminants.
2007-10-15 Hristian Kirtchev <>
* sem_ch4.adb: Minor code and comment reformatting.
(Analyze_Allocator): When the designated type of an unconstrained
allocator is a record with unknown discriminants or an array with
unknown range bounds, emit a detailed error message depending on the
compilation mode and whether the designated type is limited.
2007-10-15 Tristan Gingold <>
* New file.
* Minor comment fix.
2007-10-15 Ed Schonberg <>
* sem_ch6.adb (Find_Corresponding_Spec): If the previous entity is a
body generated for a function with a controlling result that is a null
extension, discard the generated body in favor of the current explicit
2007-10-15 Ed Schonberg <>
* sem_disp.adb (Find_Controlling_Arg): Examine the call node before
examining its original form, to handle properly operator calls that
have been rewritten.
2007-10-15 Olivier Hainque <>
* tb-alvms.c (tb_entry_t, __gnat_backtrace): Store a frame pointer
instead of a procedure value in each traceback entry.
* g-trasym-vms-alpha.adb (Symbolic_Traceback): Pass frame pointer
instead of procedure value to TBK$SYMBOLIZE.
* s-traent-vms.adb (PV_For): Rename as FP_For and access the proper
(TB_Entry_For): Account for the PV/FP renaming.
* (Traceback_Entry): Rename PV component into FP and
add comment.
(Null_TB_Entry): Account for change of component name.
(PV_For): Rename as FP_For.
2007-10-15 Tristan Gingold <>
* trans.c (gnat_to_gnu): Remove the padding structure more often.
This optimize assignment to over-aligned record.
2007-10-15 Emmanuel Briot <>
* xref_lib.adb (Get_Full_Type): Add support for the 'h' entity type, ie
* xr_tabls.adb (Add_Reference): Add support for the new 'R' reference
type, for dispatching calls.
2007-10-15 Vincent Celier <>
Robert Dewar <>
* gnat_ugn.texi: Add documentation for switches --version and --help
for the GNAT tools gnatbind, gnatlink, gnatmake, gnatchop, gnatname,
gnatxref, gnatfind, gnatls, and gnatclean.
Document -gnatw.o.
Mention attribute Excluded_Source_Dirs
Replace obsolescent attribute Locally_Removed_Files with attribute
Improve documentation of -u (gnatbind)
Document how to do reliable stack checking for the environmental task
on iVMS.
* gnat_rm.texi: Rewrite section about No_Implicit_Dynamic_Code.
Document attribute Excluded_Source_Files and indicate that attribute
Locally_Removed_Files is obsolescent.
2007-10-15 Thomas Quinot <>
* Fix value of MSG_WAITALL.
* gen-soccon.c:
Update documentation to note that OpenVMS 8.3 or later must be used
to generate
* atree.adb: Add ??? comment
* exp_util.adb: Minor reformatting.
Add ??? comment in Kill_Dead_Code.
2007-10-15 Robert Dewar <>
* Comment clarification
* exp_ch4.adb (Expand_N_Allocator): Code cleanup.
(Expand_N_Op_Eq): Improve handling of array equality with -gnatVa
* Comment update
* init.c: Minor reformatting.
* sem_attr.adb: Minor formatting
* Minor reformatting
* sem_ch9.adb: Implement -gnatd.I switch
* g-comlin.adb: (Start): Fix handling of empty command line.
* gnatcmd.adb (GNATCmd): Do not put the -rules in the -cargs section,
even when -rules follows the -cargs section.
2007-10-08 Ollie Wild <>
* misc.c (LANG_HOOKS_PUSHDECL): Replaced lhd_return_tree with
(gnat_init_gcc_eh): Replaced gnat_eh_runtime_type with
(gnat_eh_runtime_type): Removed.
(gnat_return_tree): New function.
2007-10-08 Ben Elliston <>
PR ada/33454
2007-08-31 Ben Elliston <>
when compiling for powerpc64-*-linux.
* New file.
2007-09-27 Eric Botcazou <>
Mapped location support
* back_end.adb (Call_Back_End): Pass information about source
files instead of units to gigi.
* gigi.h (struct File_Info_Type): New.
(gigi): Rename and change type of number_units parameter, change
type of file_info_ptr parameter.
* trans.c (number_files): New global variable.
(gigi): Rename and change type of number_units parameter, change
type of file_info_ptr parameter.
If mapped location support is enabled, create the isomorphic mapping
between source files and line maps.
(Sloc_to_locus): If mapped location support is enabled, translate
source location into mapped location.
(annotate_with_node): Rename into set_expr_location_from_node.
Call set_expr_location instead of annotate_with_locus.
(Pragma_to_gnu): Adjust for above change.
(Loop_Statement_to_gnu): Likewise.
(call_to_gnu): Likewise.
(Handled_Sequence_Of_Statements_to_gnu): Likewise.
(gnat_to_gnu): Likewise.
(add_stmt_with_node): Likewise.
(add_cleanup): Likewise.
* utils.c (gnat_init_decl_processing): Do not set input_line.
2007-09-26 Hristian Kirtchev <>
* sem_ch8.adb (Analyze_Use_Type): Code cleanup.
(Applicable_Use): Emit a warning when a package tries to use itself.
(Use_One_Type): Add variable Is_Known_Used. Emit a warning when a type
is already in use or the package where it is declared is in use or is
declared in the current package.
(Spec_Reloaded_For_Body): New subsidiary routine for Use_One_Type.
* a-tasatt.adb, s-osprim-vxworks.adb, g-socthi-mingw.adb,
s-intman-vms.adb, g-socket.adb, g-thread.adb, s-tarest.adb,
s-tassta.adb, s-tporft.adb: Remove redundant 'use type' clause.
2007-09-26 Hristian Kirtchev <>
* a-calend-vms.adb, a-calend.adb:
Add a section on leap seconds control along with two entities used to
enable and disable leap seconds support. The array Leap_Second_Times is
now constant and contains hard time values pre-generated. Remove
all elaboration code used to populate the table of leap seconds.
* bindgen.adb:
Add entity Leap_Seconds_Support to the list of global run-time variables
along with a comment on its usage and values.
(Gen_Adainit_Ada): Add code to generate the declaration and import of
Integer variable Leap_Seconds_Support. Set its value to zero (disabled)
or one (enabled) depending on the presence of binder switch "-y".
(Gen_Adainit_C): Add code to generate the declaration of external int
__gl_leap_seconds_support. Set is value to zero (disabled) or one
(enabled) depending on the presence of binder switch "-y".
* init.c: Add __gl_leap_seconds_support to the list of global values
computed by the binder.
2007-09-26 Jerome Guitton <>
* s-taprop-lynxos.adb, s-taprop-tru64.adb, s-taprop-irix.adb,
s-taprop-hpux-dce.adb, s-taprop-linux.adb, s-taprop-dummy.adb,
s-taprop-solaris.adb, s-taprop-vms.adb, s-taprop-mingw.adb,
s-taprop-posix.adb (Stop_Task): New function, dummy implementation.
*, s-taprop-vxworks.adb (Stop_Task): New function.
* s-tasdeb.adb (Stop_All_Tasks): New function, implementing a run-time
function which can be called by the debugger to interrupt the tasks of
an Ada application asynchronously, as needed on VxWorks.
(Stop_All_Tasks_Handler): Renamed from Stop_All_Tasks.
* (Stop_All_Tasks_Handler): New function declaration,
renamed from Stop_All_Tasks. Update comments.
(Stop_All_tasks): New function declaration.
2007-09-26 Olivier Hainque <>
* adaint.c (if defined (__Lynx__)): Wrap #def/#undef VMOS_DEV around
#include <utime.h> and #define GCC_RESOURCE_H before
#include <sys/wait.h>.
Add more protections in __gnat_translate_vms.
* expect.c (if defined (__Lynx__)): #define GCC_RESOURCE_H before
#include <sys/wait.h>.
2007-09-26 Thomas Quinot <>
Sergey Rybin <>
* (PCS_Version_Number, ASIS_Version_Number): Removed.
* (PCS_Version_Number): Move from Gnatvsn to Exp_Dist,
where it belongs.
* Move ASIS_Version_Number from Gnatvsn into Tree_IO.
* rtsfind.adb (PCS_Version_Number): Move from Gnatvsn to Exp_Dist,
where it belongs.
* Minor comment fix
* Move ASIS_Version_Number from Gnatvsn into Tree_IO.
2007-09-26 Javier Miranda <>
Eric Botcazou <>
* a-tags.adb:
(Get_HT_Link/Set_HT_Link): Updated to handle the additional level of
indirection added to the HT_Link component of the TSD. This is required
to statically allocate the TSD.
Minor reordering of the declarations in the private part. Required to
add a level of indirection to the contents of the TSD component HT_Link.
This is required to statically allocate the TSD.
* decl.c (gnat_to_gnu_entity) <object>: Do not exclude objects with
Is_Statically_Allocated set from constant objects.
Do not make exported constants created by the compiler volatile.
(gnat_to_gnu_param): Do not treat an IN parameter whose address is taken
as read-only.
* trans.c (Identifier_to_gnu): For constants, unshare initializers
before returning them.
*, exp_disp.adb (Building_Static_DT): Spec moved to the
public part of the package.
(Make_DT): Move HT_Link component out of the TSD record. For this
purpose Make_DT now declares a separate object that stores the
HT_Link value, and initializes the TSD component with the address
of this new object. The addition of this level of indirection is
required to statically allocate the TSD because the TSD cannot
have variable components.
(Expand_Interface_Conversion): Improve the expanded code.
(Expand_Interface_Thunk): Set Is_Thunk in the thunk entity.
* sem_disp.adb (Check_Dispatching_Operation): In case of a body
declaring a primitive operation ---allowed by RM 3.9.2 (13.e/2)---,
if we are building static dispatch tables then we must not generate
extra code to register the primitive because the dispatch table will
be built at the end of the library package; otherwise we notify that
we cannot build the static dispatch table.
2007-09-26 Robert Dewar <>
* checks.adb, gnat1drv.adb, Improve warnings for address
*, sem_ch13.adb: Improve warnings for address overlays
(Analyze_Record_Representation_Clause): Suppress junk warning for
missing component clause.
(Analyze_Attribute_Definition_Clause, case Address): Apply the special
tests for controlled type overlay to composites with controlled
(Analyze_Record_Representation_Clause): Add reference for component name
2007-09-26 Javier Miranda <>
Gary Dismukes <>
* einfo.adb (Is_Thunk): New attribute applicable to subprograms. True
for thunks associated with interface types.
* Improve documentatation of Is_Internal
(Is_Thunk): New attribute applicable to subprograms. True for thunks
associated with interface types.
Extensive comment fixes regarding flags that appear in all entities. The
documentation is now consistent for all such flags (there were a number
of errors in the documentation in this regard).
* exp_attr.adb (Expand_N_Attribute_Reference): Minor code cleanup.
* exp_ch6.adb (Make_Build_In_Place_Call_*): Return immediately if any
of these procedures are passed a function call that already has
build-in-place actuals (testing new flag
Is_Expanded_Build_In_Place_Call). Set the flag on the function call in
the case where processing continues.
(Expand_Call): If the call is generated from a thunk body then we
propagate the extra actuals associated with the accessibility
level of the access type actuals.
* sem_ch6.adb (Analyze_Subprogram_Body): Set the Protected_Formal field
of each extra formal of a protected operation to reference the
corresponding extra formal of the subprogram denoted by the
operation's Protected_Body_Subprogram.
*, sinfo.adb (Is_Expanded_Build_In_Place_Call): New flag on
N_Function_Call nodes.
2007-09-26 Robert Dewar <>
* exp_ch5.adb: Activate memmove type processing if debug flag d.s is set
* debug.adb: Add d.s flag.
2007-09-26 Gary Dismukes <>
* exp_dbug.adb (Debug_Renaming_Declaration): Set Is_Internal on the
debug variable so that it won't be initialized when pragma
Initialize_Scalars is in effect.
2007-09-26 Gary Dismukes <>
* freeze.adb (Freeze_Entity): Remove check for preelaborable
initialization of a full view. This is moved to
* sem_ch7.adb (Analyze_Package_Specification): Add check for
preelaborable initialization of a full view in entity loop.
(Uninstall_Declarations): If entity is a use-visible compilation unit,
its child units are use-visible only if they are visible child units.
* sem_util.adb (Is_Preelaborable_Expression): New function to determine
whether an expression can be used within a type declaration that
requires preelaborable init.
(Check_Components): Replace inline code that does partial checking for
preelaborable default expressions with call to
(Has_Preelaborable_Initialization): In the case of a generic actual
subtype, (that is, Is_Generic_Actual is True), return the result of
applying Has_Preelaborable_Initialization to the generic actual's base
2007-09-26 Hristian Kirtchev <>
* g-calend.adb (Has_53_Weeks): Rename to Last_Year_Has_53_Weeks. Add a
call to Jan_1_Day _Of_Week to optimize its performance.
(Is_Leap): Move the routine to the scope of Week_In_Year.
(Jan_1_Day_Of_Week): New routine in Week_In_Year which calculates the
weekday on which January 1 falls of Year - 1 and Year + 1. This function
avoids calling Time_Of and Split, thus making it more efficent.
(Week_In_Year): Reimplemented in oder to follow ISO 8601.
* (Week_In_Year): Change comment to reflect new
2007-09-26 Emmanuel Briot <>
*, g-comlin.adb (Command_Line_Configuration,
Command_Line): New types
(Define_Alias, Define_Prefix, Free): New subprograms. These provide
support for defining how switches can be grouped on a command line (as
is the case for -gnatw... for GNAT), and how simple switches can be
used as aliases for more complex switches (-gnatwa is same as
(Set_Command_Line, Add_Switch, Remove_Switch): New subprogram
(Start, Current_*): New subprograms
Added support for parsing an array of strings in addition to the real
command line.
(Opt_Parser, Opt_Parser_Data): New type. As a result, some types had to
be moved from the body to the private part of the spec.
(*): All subprograms now have an extra parameter with default value to
specify which parser should be used. For backward compatibility, it
defaults to parsing the command line of the application. They were also
modified to properly handle cases where each of the argument does not
start at index 1 (which is always true for Ada.Command_Line, but not
when processing any Argument_List).
(Free): New subprogram
(Internal_Initialize_Option_Scan, Find_Longuest_Matching_Switch,
Argument): New subprograms
(Switch_Parameter_Type): New enum, which clarifies the code. The extra
special characters like ':', '=',... are now handled in a single place,
which makes the code more extensible eventually.
(Getopt, Full_Switch): When the switch was returned as part of the
special character '*', make sure it is prepended by the switch character
('-' in general), so that the application knows whether "foo" or "-foo"
was specified on the command line.
2007-09-26 Florian Villoing <>
* g-dirope.adb (Remove_Dir): In case we are removing directories
recursively, make sure that if an exception is raised during the
processing, the current working directory is reset to its initial
value before propagating the exception.
2007-09-26 Vincent Celier <>
* gnatbind.adb: If there are several ALI files specified and there is
a main program to bind, the first ALI is expected to contain the main
subprogram and the names of the binder generated files will be derived
from the first ALI file name.
(Gnatbind): Fix insertion character in invocation of Error_Msg
2007-09-26 Vincent Celier <>
* gnatcmd.adb (Check_Files): Do not include sources that have been
removed by attributes Exclude_Source_Files or Locally_Removed_Files.
2007-09-26 Ed Schonberg <>
*, lib-xref.adb: The entry for array types now carries
information about each of its index types, following the type
reference for its component type.
2007-09-26 Vincent Celier <>
* make.adb: (Kill): New procedure (__gnat_kill imported)
(Running_Compile, Outstanding_Compiles): Global variables that
were previously local to procedure Compile_Sources.
(Sigint_Intercepted): Send signal SIGINT to all outstanding
compilation processes.
(Gnatmake): If project files are used, create the mapping of all the
sources, so that the correct paths will be found.
*, prj-env.adb (Create_Mapping): New procedure
2007-09-26 Vincent Celier <>
* (Main_Config_Project): Moved to
*, prj.adb (Default_Language): Remove function, no longer used
Replace components Compiler_Min_Options and Binder_Min_Options with
Compiler_Required_Switches and Binder_Required_Switches in record
Remove components Default_Language and Config in Project_Tree_Data,
no longer used.
* prj-attr.adb: New attributes Required_Switches (<language>) in
packages Compiler and Binder.
* prj-nmsc.adb: Major rewrite of the processing of configuration
attributes for gprbuild. No impact on GNAT tools.
*, prj-proc.adb (Process_Project_Tree_Phase_2): No longer
process configuration attributes: this is done in Prj.Nmsc.Check.
(Recursive_Process): Make a full copy of packages inherited from project
being extended, instead of a shallow copy.
(Process_Project_Tree_Phase_1): New procedure
(Process_Project_Tree_Phase_1): New procedure
(Process): Implementation now uses the two new procedures
* prj-util.adb (Executable_Of): Get the suffix and the default suffix
from the project config, not the tree config that no longer exists.
2007-09-26 Vincent Celier <>
* Update dependencies..
2007-09-26 Vincent Celier <>
* osint.adb, Minor reformatting
* osint-b.adb, (Set_Current_File_Name_Index): New procedure
2007-09-26 Gary Dismukes <>
* par-ch4.adb (P_Record_Or_Array_Component_Association): Change Ada 95
message to cite use of <> in aggregate component associations rather
than wrongly indicating use of limited aggregates.
2007-09-26 Robert Dewar <>
* sem_attr.adb (Analyze_Access_Attribute): Fix missing set of
2007-09-26 Ed Schonberg <>
* sem_ch3.adb (Derive_Subprograms): If the interface parent is a direct
ancestor of the derived type, the operations are inherited from the
primary dispatch table of the parent.
(OK_For_Limited_Init_In_05): Remove old comment. Reject in-place calls
when the context is an explicit type conversion.
2007-09-26 Ed Schonberg <>
* sem_ch4.adb (Analyze_Qualified_Expression): Apply name resolution
rule for qualified expressions properly, to detect improper conversions
and resolve some cases of overloading.
2007-09-26 Ed Schonberg <>
* sem_res.adb (Resolve_Call): If the call is dispatching, generate the
proper kind of reference to the primitive operation, for better source
(Valid_Conversion): A tagged conversion is legal if both operands are
2007-09-26 Robert Dewar <>
* sem_warn.adb (Check_References): Catch more cases of unreferenced
2007-09-26 Vincent Celier <>
* snames.adb, Change Include_Option to Include_Switches
2007-09-26 Robert Dewar <>
* s-wchstw.adb: provide messages for run time unit exceptions
* a-witeio.adb: Minor reformatting
* exp_ch13.adb: Minor reformatting
2007-09-26 Sergey Rybin <>
* Revise gnatmetric qualifiers.
Add qualified for the new gnatbind option '-y'
* gnat_ugn.texi: Revise the gnatmetric section.
Add entry for new gnatbind option '-y'.
* gnat_rm.texi: Minor spelling correction.
Document restriction on overlaying controlled types
2007-09-26 Vincent Celier <>
* makegpr.adb (Link_Executables): Do not fail when the root project has
no sources, but is an extending project.
2007-09-25 Eric Botcazou <>
* trans.c: Fix misplaced #define.
2007-09-22 Eric Botcazou <>
* utils2.c (build_unary_op) <ADDR_EXPR> [INDIRECT_REF]: Propagate
the TYPE_REF_CAN_ALIAS_ALL flag to the result.
2007-09-21 Olivier Hainque <>
* utils.c (type_for_nonaliased_component_p): Return false for
2007-09-17 Eric Botcazou <>
* decl.c (gnat_to_gnu_entity) <object>: Make again the type of an
object covered by 13.3(19) volatile.
2007-09-12 Eric Botcazou <>
PR ada/26797
PR ada/32407
* utils.c (unchecked_convert): Use a subtype as the intermediate type
in the special VIEW_CONVERT_EXPR case.
2007-09-12 Robert Dewar <>
*,, freeze.adb: Minor reformatting.
* a-except.adb, g-hesora.adb, g-speche.adb, lib.adb,,
lib-load.adb, lib-writ.adb, s-assert.adb, s-carun8.adb,
s-casuti.adb, s-crc32.adb, s-exctab.adb, s-htable.adb, s-imgenu.adb,
s-mastop.adb, s-memory.adb,, s-secsta.adb, s-soflin.adb,
s-sopco3.adb, s-sopco4.adb, s-sopco5.adb, s-stache.adb, s-stalib.adb,
s-stoele.adb, s-strcom.adb, s-strops.adb, s-traceb.adb, s-traent.adb,
s-wchcnv.adb, s-wchcon.adb, s-wchjis.adb, s-addope.adb, s-except.adb,
s-os_lib.adb, s-string.adb, s-utf_32.adb, a-elchha.adb,,,,,,, par-prag.adb, restrict.adb,,,,,, sem_ch11.adb, sem_prag.adb,,,,, snames.adb,, snames.h,,,,,,,,,,,,,,,,,,,,,, Implement
pragma Compiler_Unit and adds it to relevant library units.
2007-09-12 Ed Schonberg <>
* sem_aggr.adb (Resolve_Record_Aggregate): An others association with
a box need not correspond to any component.
2007-09-12 Robert Dewar <>
* Document use of "with GNAT.Threads" to ensure loading
the tasking version of the Ada run time when foreign threads are
present and there are no explicit Ada tasks or tasking constructs.
* gnat_rm.texi: Clarify documentation of GNAT.Threads.
2007-09-12 Hristian Kirtchev <>
* bindusg.adb (Display): Correct comment for switch -X. Add a line for
the usage of switch -y.
* switch-b.adb (Scan_Binder_Switches): Set flag Leap_Seconds_Support
when switch -y is present.
* Add binder flag Leap_Seconds_Support used to enable/disable
leap seconds in Ada.Calendar and its children.
2007-09-12 Jose Ruiz <>
* (Timer): The discriminant is a "not null access
constant" in the Reference Manual.
(Cancel_Handler): Cancelled is an out parameter in the Reference Manual.
2007-09-12 Robert Dewar <>
* a-swuwha.adb: Remove junk RM header
2007-09-12 Vincent Celier <>
* g-bytswa-x86.adb (Swap2, Swap4, Swap8): Remove explicit "in" mode
* Minor reformatting
2007-09-12 Thomas Quinot <>
Add new constant Thread_Blocking_IO, always True by default, set False
on a per-runtime basis.
(Need_Netdb_Buffer): New constant.
2007-09-12 Arnaud Charlet <>
* (Get_Local_Partition_Id, Get_Passive_Partition_Id):
Added renames for corresponding functions in System.Partition_Interface.
2007-09-12 Doug Rupp <>
* Remove VMS specific System.CRTL packages which are no
longer needed.
* Removed.
2007-09-12 Olivier Hainque <>
* decl.c (gnat_to_gnu_entity) <E_Record_Subtype>: For a subtype
with discriminant constraints, generalize the code for BIT_FIELDs
to PACKED fields of constant size and propagate DECL_PACKED.
2007-09-11 Eric Botcazou <>
* decl.c (array_type_has_nonaliased_component): New predicate.
(gnat_to_gnu_field) <E_Array_Type>: Invoke the above predicate to
set the TYPE_NONALIASED_COMPONENT flag on the type.
<E_Array_Subtype>: Likewise.
* gigi.h (type_for_nonaliased_component_p): Declare.
* utils.c (type_for_nonaliased_component_p): New predicate.
(create_field_decl): Invoke the above predicate to set the
DECL_NONADDRESSABLE_P flag on the field.
2007-09-11 Javier Miranda <>
*, einfo.adb (Dispatch_Table_Wrapper): New attribute. Present
in library level record type entities if we are generating statically
allocated dispatch tables.
* exp_disp.adb (Make_Tags/Make_DT): Replace previous code
importing/exporting the _tag declaration by new code
importing/exporting the dispatch table wrapper. This change allows us
to statically allocate of the TSD.
(Make_DT.Export_DT): New procedure.
(Build_Static_DT): New function.
(Has_DT): New function.
* freeze.adb (Freeze_Static_Object): Code cleanup: Do not reset flags
True_Constant and Current_Value. Required to statically
allocate the dispatch tables.
(Check_Allocator): Make function iterative instead of recursive.
Also return inner allocator node, when present, so that we do not have
to look for that node again in the caller.
2007-09-11 Jan Hubicka <>
* misc.c (gnat_expand_body): Kill.
2007-09-10 Robert Dewar <>
*, exp_atag.adb, mlib-tgt-tru64.adb, mlib-tgt-aix.adb,
mlib-tgt-irix.adb, mlib-tgt-hpux.adb, mlib-tgt-linux.adb,
mlib-tgt-solaris.adb, mlib-tgt-vms-alpha.adb, mlib-tgt-vms-ia64.adb,
mlib-tgt-mingw.adb, mlib-tgt-vxworks.adb, ali.adb,,
ali-util.adb,, atree.h, back_end.adb,,
bcheck.adb,, binde.adb,, binderr.adb,,
bindgen.adb,, bindusg.adb,, butil.adb,, checks.adb,, clean.adb,, comperr.adb,, cstand.adb,, debug_a.adb,,
elists.h, errout.adb,, errutil.adb,,, eval_fat.adb,,, exp_sel.adb,
exp_aggr.adb,, expander.adb,,,, exp_ch11.adb, exp_ch12.adb,, exp_ch13.adb,, exp_ch2.adb,,, exp_ch4.adb,, exp_ch5.adb,, exp_ch6.adb,,
exp_ch7.adb,, exp_ch8.adb,, exp_ch9.adb,, exp_code.adb,, exp_dbug.adb,,, exp_dist.adb,, exp_fixd.adb,,
exp_imgv.adb,, exp_intr.adb,, exp_pakd.adb,, exp_prag.adb,, exp_smem.adb, exp_strm.adb,, exp_tss.adb,, exp_util.adb,,
exp_vfpt.adb,, fmap.adb,, fname-sf.adb,, fname-uf.adb,, frontend.adb,,
get_targ.adb,, gnat1drv.adb,, gnatbind.adb,, gnatbl.c, gnatchop.adb, gnatclean.adb, gnatcmd.adb,, gnatdll.adb, gnatfind.adb, gnatkr.adb,,
gnatlbr.adb, gnatlink.adb,, gnatls.adb,,
gnatmake.adb,, gnatmem.adb, gnatname.adb,,
gnatprep.adb,, gnatsym.adb, gnatxref.adb,
gprep.adb,, hlo.adb,, impunit.adb,,
inline.adb,, itypes.adb,, layout.adb,,
lib-load.adb,, lib-util.adb,, lib-writ.adb,, lib-xref.adb,, live.adb,,
make.adb,,, makeutl.adb, makeusg.adb,,
mdll.adb,, mdll-fil.adb,, mdll-utl.adb,, memroot.adb,, mlib.adb,,
mlib-fil.adb,, mlib-prj.adb,, mlib-tgt.adb,, mlib-utl.adb,, namet.h, nmake.adt,
osint.adb,, osint-b.adb,, osint-c.adb,, osint-l.adb,, osint-m.adb,,
par.adb,, par-ch10.adb, par-ch11.adb, par-ch12.adb,
par-ch13.adb, par-ch2.adb, par-ch3.adb, par-ch4.adb, par-ch5.adb,
par-ch6.adb, par-ch7.adb, par-ch8.adb, par-ch9.adb, par-endh.adb,
par-labl.adb, par-load.adb, par-prag.adb, par-sync.adb, par-tchk.adb,
par-util.adb, prep.adb,, prepcomp.adb,,
prj.adb,, prj-attr.adb,,,
prj-dect.adb,, prj-err.adb,, prj-ext.adb,, prj-makr.adb,, prj-nmsc.adb,,
prj-pars.adb,, prj-part.adb,,
prj-pp.adb,, prj-proc.adb,,
prj-strt.adb,, prj-tree.adb,,
prj-util.adb,, restrict.adb,,
rtsfind.adb,, scn.adb,,
scng.adb,,,,, sem_attr.adb,
sem_case.adb,, sem_cat.adb,, sem_ch10.adb,, sem_ch11.adb,,, sem_ch13.adb,, sem_ch2.adb,, sem_ch3.adb,,, sem_ch5.adb,, sem_ch6.adb,,
sem_ch7.adb,, sem_ch8.adb,, sem_ch9.adb,, sem_disp.adb,, sem_dist.adb,,
sem_elab.adb,, sem_elim.adb,, sem_eval.adb,, sem_intr.adb,, sem_maps.adb,,
sem_mech.adb,, sem_prag.adb,, sem_res.adb,, sem_smem.adb,, sem_type.adb,,
sem_util.adb,, sem_vfpt.adb,, sem_warn.adb,,, sinfo-cn.adb,, sinput-c.adb,, sinput-d.adb,, sinput-l.adb,,
sinput-p.adb,, snames.h, sprint.adb,,
stringt.h,, styleg.adb,, styleg-c.adb,, stylesw.adb,, switch.adb,,
switch-b.adb,, switch-c.adb,, switch-m.adb,, symbols.adb,, targparm.adb, tbuild.adb,, tempdir.adb,, tree_gen.adb,,
treepr.adb,, treeprs.adt,,,
types.h, uintp.h, urealp.h, usage.adb,,
validsw.adb,, vxaddr2line.adb, xeinfo.adb, xnmake.adb,
xref_lib.adb,, xr_tabls.adb,, xsinfo.adb,
xtreeprs.adb, xsnames.adb,, vms_conv.adb, xgnatugn.adb,
gprmake.adb,, makegpr.adb,, prj-attr-pm.adb,
mlib-tgt-lynxos.adb, mlib-tgt-darwin.adb, symbols-vms.adb,
symbols-processing-vms-alpha.adb, symbols-processing-vms-ia64.adb,
mlib-tgt-specific.adb,, mlib-tgt-vms.adb, Replace headers with GPL v3 headers.
2007-09-10 Emmanuel Briot <>
* s-regpat.adb (Parse_Character_Class): Fix handling of empty character
classes ("[]").
2007-09-10 Vasiliy Fofanov <>
* adaint.c (__gnat_translate_vms): new function.
2007-09-10 Gary Dismukes <>
Thomas Quinot <>
* exp_ch3.adb (Predef_Spec_Or_Body): When the type is abstract, only
create an abstract subprogram in the case of 'Input. For 'Output we now
create a real spec/body when the type is abstract, since it can
potentially be called.
(Predefined_Primitive_Bodies): Now allow the creation of a predefined
body for 'Output when the type is abstract (only the creation of the
body for 'Input is excluded when the type is abstract).
(Stream_Operation_OK): Add an additional condition in the return
statement, so that False will be returned for TTS_Stream_Input if the
associated tagged type is an abstract extension. Add comments for
return statement.
(Expand_N_Object_Declaration): For the case of a shared passive
variable, insert init proc call only after the shared variable
procedures have been processed, because the IP call needs to undergo
shared passive variable reference expansion, which requires these
procedures to be available (and elaborated).
2007-09-10 Vincent Celier <>
*, prj-env.adb (Create_Mapping_File (Language)): Remove
parameter Runtime_Project.
2007-09-10 Ed Schonberg <>
* sem_aggr.adb (Build_Record_Aggr_Code): If an aggregate component is
given a box association, the type of the component is discriminated,
and the value of the discriminant is the discriminant of the enclosing
type, retrieve its value from the aggregate itself, where it must have
been supplied.
* sem_ch4.adb (Analyze_One_Call): Further refinement to previous fix,
to remove other spurious ambiguities on arithmetic operations involving
literals and addresses, on systems where Address is a visible integer
type, when the operator is called in functional notation.
(Try_Primitive_Operation): Within an instance, a call in prefixed form
is legal when the types match, even if the operation is currently
2007-09-10 Ed Schonberg <>
* sem_ch12.adb (Build_Local_Package): A formal package with no
associations is legal if all formals have defaults. It is not
equivalent to a formal declared with a box.
2007-09-10 Sergey Rybin <>
* Add qualifier for the new gnatmetric '-lratio' option
2007-09-10 Sergey Rybin <>
* gnat_ugn.texi: Add description of the new '-lratio' option
Update 7.3.1 section about availability of the feature.
2007-09-10 Thomas Quinot <>
*, exp_smem.adb (Make_Shared_Var_Procs): Return last
inserted node.
2007-09-10 Olivier Hainque <>
* (mips-irix section): Activate build of libgmem.
2007-09-10 Eric Botcazou <>
* a-numaux-x86.adb (Logarithmic_Pow): Do not silently clobber
x87 registers.
2007-09-10 Eric Botcazou <>
* decl.c (gnat_to_gnu_entity) <object>: Deal with variable built for
a debug renaming declaration specially.
2007-09-08 Eric Botcazou <>
* decl.c (gnat_to_gnu_entity) <Object>: Simplify the condition under
which a constant renaming is treated as a normal object declaration.
* trans.c (lvalue_required_p) <N_Slice>: New case, extracted from
the N_Indexed_Component case.
<N_Indexed_Component>: Fall through to above case.
<N_Object_Renaming_Declaration>: Return true for all composite types.
2007-09-08 Eric Botcazou <>
* decl.c (make_packable_type): If the new type has been given BLKmode,
try again to get an integral mode for it.
2007-09-07 Eric Botcazou <>
Re-apply accidentally reverted change:
2007-02-07 Andreas Krebbel <>
* raise-gcc.c (get_region_description_for, get_call_site_action_for,
get_action_description_for): Replace _Unwind_Word with _uleb128_t
and _Unwind_SWord with _sleb128_t.
2007-09-06 Eric Botcazou <>
* trans.c (convert_with_check): Update call to real_2expN.
2007-09-05 Sandra Loosemore <>
* trans.c (Compilation_unit_to_gnu): Use set_cfun.
* utils.c (end_subprog_body): Likewise.
2007-09-03 Nick Clifton <>
* Change copyright header to refer to version 3 of
the GNU General Public License and to point readers at the
COPYING3 file and the FSF's license web page.
* ada-tree.def, nmake.adt, nlists.h, snames.h, utils.c,
Makefile.rtl,,, uintp.h, urealp.h,
namet.h, decl.c, utils2.c, lang.opt, elists.h, atree.h, types.h,
treeprs.adt, lang-specs.h, cuintp.c, stringt.h, gnatbl.c:
2007-08-31 Vincent Celier <>
PR ada/4720
* gnatchop.adb, gnatfind.adb, gnatlink.adb, gnatls.adb,
gnatname.adb, gnatxref.adb, gprep.adb, clean.adb gnatbind.adb
(Check_Version_And_Help): New procedure in package Switch to process
switches --version and --help.
Use Check_Version_And_Help in GNAT tools
* make.adb: Ditto.
(Compile_Sources): Make sure that sources that are "excluded" are not
(Gnatmake): Do not issue -aO. to gnatbind and only issue -I- if a
project file is used.
(Version_Switch): Remove, moved to Switch
(Help_Switch): Remove, moved to Switch
(Display_Version): Remove, moved to Switch
*, switch.adb (Check_Version_And_Help): New procedure in
package Switch to process switches --version and --help.
(Display_Version): New procedure
*, gnatvsn.adb (Copyright_Holder): New function.
2007-08-31 Javier Miranda <>
* a-tags.adb (Internal_Tag): Protect the run-time against wrong
internal tags.
2007-08-31 Hristian Kirtchev <>
* checks.adb (In_Declarative_Region_Of_Subprogram_Body): New routine.
(Mark_Non_Null): If the node for which we just generated an access check
is a reference to an *in* parameter and the reference appears in the
declarative part of a subprogram body, mark the node as known non null.
2007-08-31 Hristian Kirtchev <>
*, einfo.adb: New flag Is_Raised (Flag224). Update the
structure of E_Exception to reflect the new flag.
(Is_Raised, Set_Is_Raised): New inlined routines.
Update the usage of available flag to reflect the addition of Is_Raised.
(Is_Raised, Set_Is_Raised): Bodies of new routines.
(Write_Entity_Flags): Write the status of flag Is_Raised.
(Is_Descendent_Of_Address): New entity flag, to simplify handling of
spurious ambiguities when integer literals appear in the context of an
address type that is a visible integer type.
* sem_ch11.adb (Analyze_Exception_Handler): Add code to warn on local
exceptions never being raised.
(Analyze_Raise_Statement): When analyzing an exception, mark it as being
explicitly raised.
2007-08-31 Javier Miranda <>
* exp_ch11.adb (Expand_At_End_Handler): Avoid generation of raise
statement when compiling under restriction No_Exceptions_Proparation.
2007-08-31 Ed Schonberg <>
* exp_ch3.adb (Build_Record_Init_Proc): If there is a static
initialization aggregate for the type, generate itype references for
thetypes of its (sub)components, to prevent out-of-scope errors in gigi.
2007-08-31 Gary Dismukes <>
* exp_ch8.adb (Expand_N_Package_Renaming_Declaration): In the case of a
library-level package renaming, pass the declaration associated with
the renaming's special debug variable to Qualify_Entity_Names to ensure
that its encoded name is properly qualified.
* exp_dbug.adb (Qualify_All_Entity_Names): Check for a variable entity
occurring in the list of entities to qualify, and do not attempt to
traverse an entity list in that case. Variables associated with
` library-level package renamings can now occur in the table.
* Revise documentation of the encoding for renaming
2007-08-31 Richard Kenner <>
* layout.adb (Layout_Type): Use Underlying_Type to determine whether an
access type points to an unconstrained array.
2007-08-31 Hristian Kirtchev <>
* restrict.adb, namet.adb, par-util.adb: Remove redundant type
* sem_res.adb (Resolve_Qualified_Expression): Add machinery to detect
simple redundant qualifications. The check is performed whenever the
expression is a non-overloaded identifier.
(Resolve_Type_Conversion): Enchance the redundant type conversion check
to include loop parameters.
(Valid_Conversion): Avoid generation of spurious error message.
2007-08-31 Bob Duff <>
* par-ch4.adb (P_Simple_Expression): Fold long sequences of
concatenations of string literals into a single literal, in order to
avoid very deep recursion in the front end, which was causing stack
* sem_eval.adb (Eval_Concatenation): If the left operand is the empty
string, and the right operand is a string literal (the case of "" &
"..."), optimize by avoiding copying the right operand -- just use the
value of the right operand directly.
* stringt.adb (Store_String_Chars): Optimize by growing the
String_Chars table all at once, rather than appending characters one by
(Write_String_Table_Entry): If the string to be printed is very long,
just print the first few characters, followed by the length. Otherwise,
doing "pn(n)" in the debugger can take an extremely long time.
* sem_prag.adb (Process_Interface_Name): Replace loop doing
Store_String_Char with Store_String_Chars.
2007-08-31 Vincent Celier <>
* prj-attr.adb: Add new attribute Excluded_Source_Files
* prj-nmsc.adb: Use attribute Excluded_Source_Files before
*, snames.adb: New standard name Excluded_Source_Files
2007-08-31 Ed Schonberg <>
* sem_ch10.adb (Analyze_Subunit_Context): When analyzing context
clauses of subunits, ignore limited_with_clauses that are illegal and
have not been fully analyzed.
2007-08-31 Ed Schonberg <>
* sem_ch3.adb: The predicate Is_Descendent_Of_Address is now an entity
flag, for effiency. It is called when analyzing arithmetic operators
and also for actuals in calls that are universal_integers. The flag is
set for the predefined type address, and for any type or subtype
derived from it.
* sem_ch4.adb (Analyze_One_Call): Reject an actual that is a
Universal_Integer, when the formal is a descendent of address and the
call appears in user code.
(Analyze_Selected_Component): if the prefix is a private extension, the
tag component is visible.
*, sem_util.adb: Remove Is_Descendent_Of_Address, now an
entity flag.
2007-08-31 Robert Dewar <>
* s-fileio.adb (Open): Normalize file name to lower case in non-case
sensitive file name systems to avoid unexpected mismatch in Vista.
2007-08-31 Vincent Celier <>
* tempdir.adb: On VMS, take into account GNUTMPDIR before TMPDIR
2007-08-31 Vincent Celier <>
* symbols-vms.adb (Initialize): Read symbol files with continuation
(Finalize): If symbol is long, split the line
2007-08-31 Vincent Celier <>
* Minor comment updates
2007-08-31 GNAT Script <>
* Makefile automatically updated
2007-08-31 Bob Duff <>
* Minor comment fix.
2007-08-31 Thomas Quinot <>
* (Standard_Debug_Renaming_Type): Make comment consistent
with implementation.
Documentation cleanup only.
2007-08-31 Sergey Rybin <>
* Add new qualifier /STMT_NAME_ON_NEW_LINE for the new
gnatpp '--separate-stmt-name' option.
Add new qualifier /USE_ON_NEW_LIN for the new gnatpp '--use-on-new-line'
* gnat_ugn.texi: Add description for the new gnatpp
'--separate-stmt-name' and '--use-on-new-line' options.
2007-08-31 Ben Elliston <>
when compiling for powerpc64-*-linux.
* New file.
2007-08-22 Krister Walfridsson <>
* env.c ( __gnat_clearenv): Use the __gnat_unsetenv mechanism for
2007-08-16 Kaveh R. Ghazi <>
* misc.c (gnat_type_max_size): Constify.
2007-08-16 Gary Dismukes <>
* cstand.adb (Create_Standard): Create an entity for a zero-sized type
associated with Standard_Debug_Renaming_Type, to be used as the type of
the special variables whose names provide debugger encodings for
renaming declarations.
*, einfo.adb (Debug_Renaming_Link): Change to return Node25.
(Set_Debug_Renaming_Link): Change to set Node25.
(Write_Field13_Name): Remove case for E_Enumeration_Literal.
(Write_Field25_Name): Add case for E_Variable to output
(Write_Field23_Name): Correct the output string for "Limited_View".
* exp_dbug.adb: Add with and use of Tbuild.
(Debug_Renaming_Declaration): Replace creation of an enumeration type
and literal with creation of a variable of type
Standard_Debug_Renaming_Type whose name encodes both the renamed object
and the entity of the renaming declaration.
(Qualify_Entity_Name): Add the delayed qualification of the entity name
part of the name of a variable that has a Debug_Renaming_Link.
* (Standard_Debug_Renaming_Type): New Entity_Id denoting a
special type to be associated with variables that provide debugger
encodings for renaming declarations.
2007-08-16 Gary Dismukes <>
Ed Schonberg <>
Javier Miranda <>
* exp_aggr.adb (Build_Record_Aggr_Code): Extend the test for an
ancestor part given by an aggregate to test for an unchecked conversion,
since this can occur in some cases when the ancestor part is a function
call, and we don't want to fall into the recursive call to this
procedure in that case.
* exp_ch3.adb (Stream_Operation_OK): Revise tests for availability of
stream attributes on limited types to account for user-specified
attributes as well as whether Input (resp. Output) becomes available
due to Read (resp. Write) being available for the type. Change Boolean
variable to the more accurate name
Has_Predefined_Or_Specified_Stream_Attribute. Change convoluted
double-"not" predicate at beginning of return statement to more
understandable form.
* exp_ch5.adb (Expand_N_Extended_Return_Statement): If the extended
return has an associated N_Handled_Sequence_Of_Statements, then wrap it
in a block statement and use that as the first statement of the
expanded return rather than incorrectly using the handled sequence as
the first statement.
* exp_ch6.adb (Expand_N_Subprogram_Declaration): If this is a protected
operation, generate an explicit freeze node for it rather than
generating extra formals, to ensure that gigi has the proper order of
elaboration for anonymous subtypes in the signature of the subprograms.
(Build_In_Place_Formal): Move assertion to beginning of loop.
(Is_Build_In_Place_Function_Call): Allow for an unchecked conversion
applied to a function call (occurs for some cases of 'Input).
(Make_Build_In_Place_Call_In_*): Allow for an unchecked conversion
applied to a function call (occurs for some cases of 'Input).
* exp_strm.adb (Build_Record_Or_Elementary_Input_Function): For Ada
2005, generate an extended return statement enclosing the result object
and 'Read call.
* freeze.adb (Freeze_Record_Type): Extend the current management of
components that are access type with an allocator as default value: add
missing support to the use of qualified expressions of the
allocator (which also cause freezing of the designated type!)
(Freeze_Entity): Call Freeze_Subprogram in the case of a predefined
dispatching operation, since extra formals may be needed by calls to
build-in-place functions (such as stream 'Input).
* sem_ch6.adb (Create_Extra_Formals): Skip creation of the extra
formals for 'Constrained and accessibility level in the case of a
predefined dispatching operation.
* exp_util.adb (Insert_Actions): A protected body is a valid insertion
point, no need to find the parent node.
2007-08-16 Javier Miranda <>
* exp_attr.adb (Attribute_Priority): Add missing support for entries
and entry barriers.
2007-08-16 Javier Miranda <>
* exp_ch9.adb (Build_Protected_Entry): Undo previous change because it
is not really required and can introduce regression with the debugger.
The original problem is fixed with the patch written for checks.adb.
2007-08-16 Thomas Quinot <>
* g-dyntab.adb, g-table.adb, table.adb: (Set_Item): Suppress
Range_Check on Allocated_Table.
2007-08-16 Vincent Celier <>
* make.adb (Collect_Arguments): Call Test_If_Relative_Path with
Including_Non_Switch set to False.
(Gnatmake): For the compiler, call Test_If_Relative_Path with
Including_Non_Switch set to False.
* makeutl.adb, (Test_If_Relative_Path): New Boolean
parameter Including_Non_Switch, defaulted to True. When
Including_Non_Switch is False, options that are not switches and
appear as relative path are not converted to absolute paths.
2007-08-16 Nicolas Roche <>
* (gnatlib): Propagate FORCE_DEBUG_ADAFLAGS value to sub
* Update dependencies
2007-08-16 Hristian Kirtchev <>
* sem_ch10.adb (Has_With_Clause): If the name of the with clause
currently inspected is a selected component, retrieve the entity of
its selector.
(Install_Limited_Withed_Unit): Call Has_Limited_With_Clause starting
from the immediate ancestor of Main_Unit_Entity.
(Install_Limited_Withed_Unit): Do not install the limited view of
package P if P is reachable through an ancestor chain from package C
and C also has a with clause for P in its body.
(Has_Limited_With_Clause): New routine.
(Has_With_Clause): New routine.
2007-08-16 Ed Schonberg <>
* sem_ch12.adb (Copy_Generic_Node): A reference to a child unit of the
generic for an enclosing instance is a global reference, even though
its scope is the enclosing instance.
2007-08-16 Gary Dismukes <>
Javier Miranda <>
* sem_ch3.adb (OK_For_Limited_Init_In_05): Allow calls to 'Input to
initialize a limited object.
(Build_Derived_Record_Type): Add missing check of rules ARM 3.9.4
13/2 and 14/2.
Make sure Has_Complex_Representation is inherited by derived type.
2007-08-16 Robert Dewar <>
* sem_ch5.adb (Analyze_Assignment): Make sure we still note update in
exception case
2007-08-16 Ed Schonberg <>
* sem_disp.adb (Check_Dispatching_Operation): If the operation
implements an operation inherited from a progenitor interface, verify
that they are subtype-conformant.
2007-08-16 Hristian Kirtchev <>
Bob Duff <>
Nicolas Setton <>
* sem_res.adb (Comes_From_Predefined_Lib_Unit): New.
(Resolve): Alphabetize local variables. Add new variable From_Lib. When
the statement which is being resolved comes from a predefined library
unit, all non-predefined library interpretations are skipped.
(Resolve_Op_Concat): If string concatenation was folded in the parser,
but the "&" is user defined, give an error, because the folding would
be wrong.
*, sinfo.adb (Is_Folded_In_Parser): New flag to indicate that
the parser has folded a long sequence of concatenations of string
* trans.c (Handled_Sequence_Of_Statements_to_gnu): Mark "JMPBUF_SAVE"
and "JMP_BUF" variables as artificial.
(N_String_Literal): Do not use alloca for very long string literals. Use
xmalloc/free instead. Otherwise the stack might overflow.
* utils.c (init_gigi_decls): Mark "JMPBUF_T" type as created by the
2007-08-16 Vincent Celier <>
* vms_conv.adb (Process_Argument): Ensure that project related options
are not put in the -cargs section when using GNAT COMPILE.
2007-08-16 Robert Dewar <>
* gnat_ugn.texi: Add note on preprocessing (output file not written)
2007-08-16 Thomas Quinot <>
* a-tags.adb: Minor reformatting.
2007-08-16 Bob Duff <>
*, sem_ch4.adb: Minor reformatting.
2007-08-14 Thomas Quinot <>
*, a-excpol-interix.adb,,, Removed.
2007-08-14 Hristian Kirtchev <>
* a-calend-vms.adb, a-calend.adb ("+", "-", Add, Subtract): Remove
calls to Check_Within_Time_Bounds.
("+", "-", Add, Subtract): Remove calls to Check_Within_Time_Bounds.
(Difference): Account for possible rounding of the resulting difference
2007-08-14 Robert Dewar <>
* uintp.adb, a-ztedit.adb, s-wchcon.adb, xnmake.adb, s-wchcon.adb,
par-ch5.adb, par-ch10.adb, get_targ.adb, a-wtedit.adb, a-teioed.adb,
s-osinte-solaris.adb,,, s-osinte-freebsd.adb: Minor reformatting.
* styleg.adb,, stylesw.adb, implement style
switch -gnatyS. Enable -gnatyS in GNAT style check mode
2007-08-14 Robert Dewar <>
Ed Schonberg <>
* inline.adb,,, frontend.adb,
Suppress unmodified in-out parameter warning in some cases
This patch is a also fairly significant change to the way suppressible
checks are handled.
*, checks.adb (Install_Null_Excluding_Check): No check
needed for access to concurrent record types generated by the expander.
(Generate_Range_Check): When generating a temporary to capture the
value of a conversion that requires a range check, set the type of the
temporary before rewriting the node, so that the type is always
properly placed for back-end use.
(Apply_Float_Conversion_Check): Handle case where the conversion is
(Get_Discriminal): Code reformatting. Climb the scope stack looking
for a protected type in order to examine its discriminants.
2007-08-14 Robert Dewar <>
Gary Dismukes <>
Ed Schonberg <>
Thomas Quinot <>
* a-stzsup.adb, nlists.adb, lib-util.adb, treepr.adb,
a-stwisu.adb, a-strsup.adb: Fix warnings for range
tests optimized out.
* exp_ch4.adb (Expand_N_In): Add warnings for range tests optimized out.
(Get_Allocator_Final_List): For the case of an anonymous access type
that has a specified Associated_Final_Chain, do not go up to the
enclosing scope.
(Expand_N_Type_Conversion): Test for the case of renamings of access
parameters when deciding whether to apply a run-time accessibility
(Convert_Aggr_In_Allocator): Use Insert_Actions to place expanded
aggregate code before allocator, and ahead of declaration for
temporary, to prevent access before elaboration when the allocator is
an actual for an access parameter.
(Expand_N_Type_Conversion): On an access type conversion involving an
access parameter, do not apply an accessibility check when the
operand's original node was an attribute other than 'Access. We now
create access conversions for the expansion of 'Unchecked_Access and
'Unrestricted_Access in certain cases and clearly accessibility should
not be checked for those.
*, exp_ch6.adb (Add_Call_By_Copy_Code): For an actual that
includes a type conversion of a packed component that has been expanded,
recover the original expression for the object, and use this expression
in the post-call assignment statement, so that the assignment is made
to the object and not to a back-end temporary.
(Freeze_Subprogram): In case of primitives of tagged types not defined
at the library level force generation of code to register the primitive
in the dispatch table. In addition some code reorganization has been
done to leave the implementation clear.
(Expand_Call): When expanding an inherited implicit conversion,
preserve the type of the inherited function after the intrinsic
operation has been expanded.
*, exp_ch2.adb
(Expand_Entry_Parameter.In_Assignment_Context): An implicit dereference
of an entry formal appearing in an assignment statement does not assign
to the formal.
(Expand_Current_Value): Instead of calling a routine to determine
whether the prefix of an attribute reference should be optimized or
not, prevent the optimization of such prefixes all together.
* lib-xref.adb (Generate_Reference.Is_On_LHS): An indexed or selected
component whose prefix is known to be of an access type is an implicit
dereference and does not assign to the prefix.
2007-08-14 Ed Schonberg <>
Robert Dewar <>
*, atree.adb (New_Copy_Tree): If hash table is being used and
itype is visited, make an entry into table to link associated node and
new itype.
Add comments and correct harmless error in Build_NCT_Hash_Tables
(Array_Aggr_Subtype): Associate each itype created for an index type to
the corresponding range construct, and not to the aggregate itself. to
maintain a one-to-one correspondence between itype and its associated
node, to prevent errors when complex expression is copied.
Fix mishandling of multiple levels of parens
* sem_aggr.adb: Create a limited view of an incomplete type, to make
treatment of limited views uniform for all visible declarations in a
limited_withed package.
(New_Copy_Tree): If hash table is being used and itype is visited,
make an entry into table to link associated node and new itype.
(Resolve_Record_Aggregate): Do not add an others box association for a
discriminated record component that has only discriminants, when there
is a box association for the component itself.
* par-ch4.adb: Fix mishandling of multiple levels of parens
2007-08-14 Robert Dewar <>
* comperr.adb: Fix problem with suppressing warning messages from gigi
*, erroutc.adb,,
errout.adb (Write_Eol): Remove trailing spaces before writing the line
(Write_Eol_Keep_Blanks): New procedure to write a line, including
possible trailing spaces.
(Output_Source_Line): Call Write_Eol_Keep_Blanks to output a source line
Fix problem with suppressing warning messages from back end
Improve handling of deleted warnings
* gnat1drv.adb:
Fix problem with suppressing warning messages from back end
Handle setting of Static_Dispatch_Tables flag.
* prepcomp.adb:
Fix problem with suppressing warning messages from back end
* exp_intr.adb: Improve handling of deleted warnings
2007-08-14 Robert Dewar <>
* debug.adb: Improve -gnatdI to cover all cases of serialization
Add documentation of dZ, d.t
*, sprint.adb: Improve -gnatdI to cover all cases of
(Sprint_Node_Actual): Generate new output associated with implicit
importation and implicit exportation of object declarations.
2007-08-14 Ed Schonberg <>
Robert Dewar <>
Javier Miranda <>
Gary Dismukes <>
*, einfo.adb: Create a limited view of an incomplete type,
to make treatment of limited views uniform for all visible declarations
in a limited_withed package.
Improve warnings for in out parameters
(Set_Related_Interaface/Related_Interface): Allow the use of this
attribute with constants.
(Write_Field26_Name): Handle attribute Related_Interface in constants.
Warn on duplicate pragma Preelaborable_Initialialization
*, sem_ch6.adb (Analyze_Subprogram_Body): Force the
generation of a freezing node to ensure proper management of null
excluding access types in the backend.
(Create_Extra_Formals): Test base type of the formal when checking for
the need to add an extra accessibility-level formal. Pass the entity E
on all calls to Add_Extra_Formal (rather than Scope (Formal) as was
originally being done in a couple of cases), to ensure that the
Extra_Formals list gets set on the entity E when the first entity is
(Conforming_Types): Add missing calls to Base_Type to the code that
handles anonymous access types. This is required to handle the
general case because Process_Formals builds internal subtype entities
to handle null-excluding access types.
(Make_Controlling_Function_Wrappers): Create wrappers for constructor
functions that need it, even when not marked Requires_Overriding.
Improve warnings for in out parameters
(Analyze_Function_Return): Warn for disallowed null return
Warn on return from procedure with unset out parameter
Ensure consistent use of # in error messages
(Check_Overriding_Indicator): Add in parameter Is_Primitive.
(Analyze_Function_Return): Move call to Apply_Constraint_Check before
the implicit conversion of the expression done for anonymous access
types. This is required to generate the code of the null excluding
check (if required).
*, sem_warn.adb (Check_References.Publicly_Referenceable):
A formal parameter is never publicly referenceable outside of its body.
(Check_References): For an unreferenced formal parameter in an accept
statement, use the same warning circuitry as for subprogram formal
(Warn_On_Unreferenced_Entity): New subprogram, taken from
Output_Unreferenced_Messages, containing the part of that routine that
is now reused for entry formals as described above.
(Goto_Spec_Entity): New function
(Check_References): Do not give IN OUT warning for dispatching operation
Improve warnings for in out parameters
(Test_Ref): Check that the entity is not undefinite before calling
Scope_Within, in order to avoid infinite loops.
Warn on return from procedure with unset out parameter
Improved warnings for unused variables
2007-08-14 Robert Dewar <>
Javier Miranda <>
Gary Dismukes <>
* exp_attr.adb (Expand_N_Attribute_Reference): Handle case of child unit
(Expand_N_Attribute_Reference): Further unify the handling of the
three forms of access attributes, using common code now for all three
cases. Add a test for the case of applying an access attribute to
an explicit dereference when the context is an access-to-interface
type. In that case we need to apply the conversion to the prefix
of the explicit dereference rather than the prefix of the attribute.
(Attribute_Version, UET_Address): Set entity as internal to ensure
proper dg output of implicit importation.
(Expand_Access_To_Type): Removed.
(Expand_N_Attribute_Reference): Merge the code from the three cases
of access attributes, since the processing is largely identical for
these cases. The substantive fix here is to process the case of a
type name prefix (current instance case) before handling the case
of interface prefixes.
2007-08-14 Thomas Quinot <>
Ed Schonberg <>
Javier Miranda <>
Robert Dewar <>
*, exp_ch3.adb (Add_Final_Chain): New subprogram.
(Freeze_Array_Type, Freeze_Record_Type): For the case of a component
type that is an anonymous access to controlled object, establish
an associated finalization chain to avoid corrupting the global
finalization list when a dynamically allocated object designated
by such a component is deallocated.
(Make_Controlling_Function_Wrappers): Create wrappers for constructor
functions that need it, even when not marked Requires_Overriding.
(Initialize_Tag): Replace call to has_discriminants by call to
Is_Variable_Size_Record in the circuitry that handles the
initialization of secondary tags.
(Is_Variable_Size_Record): New implementation.
(Expand_N_Object_Declaration): Suppress call to init proc if there is a
Suppress_Initialization pragma for a derived type.
(Is_Variable_Size_Record): New subprogram.
(Build_Offset_To_Top_Functions): New implementation that simplifies the
initial version of this routine and also fixes problems causing
incomplete initialization of the table of interfaces.
(Build_Init_Procedure): Improve the generation of code to initialize the
the tag components of secondary dispatch tables.
(Init_Secondary_Tags): New implementation that simplifies the previous
version of this routine.
(Make_DT): Add parameter to indicate when type has been frozen by an
object declaration, for diagnostic purposes.
(Check_Premature_Freezing): New subsidiary procedure of Make_DT, to
diagnose attemps to freeze a subprogram when some untagged type of its
profile is a private type whose full view has not been analyzed yet.
(Freeze_Array_Type): Generate init proc for packed array if either
Initialize or Normalize_Scalars is set.
(Make_Controlling_Function_Wrappers, Make_Null_Procedure_Specs): when
constructing the new profile, copy the null_exclusion indicator for each
parameter, to ensure full conformance of the new body with the spec.
*, sem_type.adb (Make_Controlling_Function_Wrappers):
Create wrappers for constructor functions that need it, even when not
marked Requires_Overriding.
(Covers): Handle properly designated types of anonymous access types,
whose non-limited views are themselves incomplete types.
(Add_Entry): Use an entity to store the abstract operation which hides
an interpretation.
(Binary_Op_May_Be_Hidden): Rename to Binary_Op_Interp_Has_Abstract_Op.
(Collect_Interps): Use Empty as an actual for Abstract_Op in the
initialization aggregate.
(Function_Interp_May_Be_Hidden): Rename to
(Has_Compatible_Type): Remove machinery that skips interpretations if
they are labeled as potentially hidden by an abstract operator.
(Has_Hidden_Interp): Rename to Has_Abstract_Op.
(Set_May_Be_Hidden): Rename to Set_Abstract_Op.
(Write_Overloads): Output the abstract operator if present.
(Add_Entry): Before inserting a new entry into the interpretation table
for a node, determine whether the entry will be disabled by an abstract
(Binary_Op_Interp_May_Be_Hidden): New routine.
(Collect_Interps): Add value for flag May_Be_Hidden in initialization
(Function_Interp_May_Be_Hidden): New routine.
(Has_Compatible_Type): Do not consider interpretations hidden by
abstract operators when trying to determine whether two types are
(Has_Hidden_Interp): New routine.
(Set_May_Be_Hidden_Interp): New routine.
(Write_Overloads): Write the status of flag May_Be_Hidden.
2007-08-14 Ed Schonberg <>
Javier Miranda <>
*, exp_disp.adb (Build_Dispatch_Tables): Handle tagged
types declared in the declarative part of a nested package body or in
the proper body of a stub.
(Set_All_DT_Position): Add missing check to avoid wrong assignation
of the same dispatch table slot to renamed primitives.
(Make_Select_Specific_Data_Table): Handle private types.
(Tagged_Kind): Handle private types.
(Make_Tags, Make_DT): Set tag entity as internal to ensure proper dg
output of implicit importation and exportation.
(Expand_Interface_Thunk): Fix bug in the expansion assuming that the
first formal of the thunk is always associated with the controlling
type. In addition perform the following code cleanup: remove formal
Thunk_Alias which is no longer required, cleanup evaluation of the
the controlling type, and update the documentation.
Replace occurrence of Default_Prim_Op_Count by
Max_Predef_Prims. Addition of compile-time check to verify
that the value of Max_Predef_Prims is correct.
(Check_Premature_Freezing): Apply check in Ada95 mode as well.
(Make_DT): Add parameter to indicate when type has been frozen by an
object declaration, for diagnostic purposes.
(Build_Static_Dispatch_Tables): New subprogram that takes care of the
construction of statically allocated dispatch tables.
(Make_DT): In case of library-level tagged types export the declaration
of the primary tag. Remove generation of tags (now done by Make_Tags).
Additional modifications to handle non-static generation of dispatch
tables. Take care of building tables for asynchronous interface types
(Make_Tags): New subprogram that generates the entities associated with
the primary and secondary tags of Typ and fills the contents of Access_
Disp_Table. In case of library-level tagged types imports the forward
declaration of the primary tag that will be declared later by Make_DT.
(Expand_Interface_Conversion): In case of access types to interfaces
replace an itype declaration by an explicit type declaration to avoid
problems associated with the scope of such itype in transient blocks.
2007-08-14 Robert Dewar <>
Ed Schonberg <>
Javier Miranda <>
*, exp_util.adb:
This patch replaces a number of occurrences of explicit tests for N_Null
with calls to Known_Null. This improves tracking of null values, since
Known_Null also catches null constants, and variables currently known to
be null, so we get better tracking.
(Ensure_Defined): create an itype reference only in the scope of the
(Side_Effect_Free): A selected component of an access type that
denotes a component with a rep clause must be treated as not
side-effect free, because if it is part of a linked structure its
value may be affected by a renaming.
(Expand_Subtype_From_Expr): For limited objects initialized with build
in place function calls, do nothing; otherwise we prematurely introduce
an N_Reference node in the expression initializing the object, which
breaks the circuitry that detects and adds the additional arguments to
the called function. Bug found working in the new patch for statically
allocated dispatch tables.
(Is_Library_Level_Tagged_Type): New subprogram.
(Remove_Side_Effects): If the expression of an elementary type is an
operator treat as a function call.
(Make_Literal_Range): If the index type of the array is not integer, use
attributes properly to compute the constraint on the resulting aggregate
which is a string.
*, freeze.adb (Freeze_Entity): If the entity is a
class-wide type whose base type is an incomplete private type, leave
class-wide type unfrozen so that freeze nodes can be generated
properly at a later point.
(Freeze_Entity, array case): Handle case of pragma Pack and component
size attributre clause for same array.
2007-08-14 Vincent Celier <>
*, prj.adb: Update Project Manager to new attribute names for
Allow all valid declarations in configuration project files
(Reset): Initialize all tables and hash tables in the project tree data
Major update of the Project Manager and of the project aware tools,
including gprmake, so that the same sources in the GNAT repository
can be used by gprbuild.
(Slash_Id): Change type to be Path_Name_Type
(Slash): Return a Path_Name_Type instead of a File_Name_Type
*, prj-attr.adb: Remove attributes no longer used by
Update Project Manager to new attribute names for ghprbuild
Allow all valid declarations in configuration project files
Major update of the Project Manager and of the project aware tools,
including gprmake, so that the same sources in the GNAT repository
can be used by gprbuild.
Major update of the Project Manager and of the project aware tools,
including gprmake, so that the same sources in the GNAT repository
can be used by gprbuild.
* prj-dect.adb (Prj.Strt.Attribute_Reference): Set correctly the case
insensitive flag for attributes with optional index.
(Prj.Dect.Parse_Attribute_Declaration): For case insensitive associative
array attribute, put the index in lower case.
Update Project Manager to new attribute names for ghprbuild
Allow all valid declarations in configuration project files
Major update of the Project Manager and of the project aware tools,
including gprmake, so that the same sources in the GNAT repository
can be used by gprbuild.
*, prj-env.adb:
Major update of the Project Manager and of the project aware tools,
including gprmake, so that the same sources in the GNAT repository
can be used by gprbuild.
(Get_Reference): Change type of parameter Path to Path_Name_Type
*, prj-ext.adb (Initialize_Project_Path): Make sure, after
removing '-' from the path to start with the first character of the
next directory.
Major update of the Project Manager and of the project aware tools,
including gprmake, so that the same sources in the GNAT repository
can be used by gprbuild.
Major update of the Project Manager and of the project aware tools,
including gprmake, so that the same sources in the GNAT repository
can be used by gprbuild.
*, prj-nmsc.adb:
Update Project Manager to new attribute names for ghprbuild
Allow all valid declarations in configuration project files
(Search_Directories): Detect subunits that are specified with an
attribute Body in package Naming. Do not replace a source/unit in the
same project when the order of the source dirs are known. Detect
duplicate sources/units in the same project when the order of the
source dirs are not known.
(Check_Ada_Name): Allow all identifiers that are not reserved words
in Ada 95.
Major update of the Project Manager and of the project aware tools,
including gprmake, so that the same sources in the GNAT repository
can be used by gprbuild.
(Look_For_Sources): If the list of sources is empty, set the object
directory of non extending project to nil.
Change type of path name variables to be Path_Name_Type
(Locate_Directory): Make sure that on Windows '/' is converted to '\',
otherwise creating missing directories will fail.
* prj-attr-pm.adb,,, prj-proc.adb,, prj-part.adb:
Major update of the Project Manager and of the project aware tools,
including gprmake, so that the same sources in the GNAT repository
can be used by gprbuild.
* prj-strt.adb (Prj.Strt.Attribute_Reference): Set correctly the case
insensitive flag for attributes with optional index.
(Prj.Dect.Parse_Attribute_Declaration): For case insensitive associative
array attribute, put the index in lower case.
(Parse_Variable_Reference): Allow the current project name to be used in
the prefix of an attribute reference.
*, prj-util.adb
(Value_Of (for arrays)): New Boolean parameter Force_Lower_Case_Index,
defaulted to False. When True, always check against indexes in lower
*, snames.h, snames.adb:
Update Project Manager to new attribute names for gprbuild
Allow all valid declarations in configuration project files
2007-08-14 Robert Dewar <>
Ed Schonberg <>
* Warning for non-local exception propagation now off by
New switch -gnatI to disable representation clauses
Implement new pragma Implicit_Packing
* usage.adb:
Warning for non-local exception propagation now off by default
Add warning for unchecked conversion of pointers wi different
New switch -gnatI to disable representation clauses
* usage.adb: new switch -gnatyS
* gnat_ugn.texi: For the gnatcheck Non_Qualified_Aggregates rule add a
note that aggregates of anonymous array types are not flagged.
-gnatwc now includes membership tests optimized away
-gnatw.x warnings are now off by default
Added conditional compilation Appendix
Add documentation of -gnatI
Add documentation for new -gnatyS style check
Update documentation about SAL and auto-init on Windows.
* gnat_rm.texi:
Add documentation for pragma Check_Name and 'Enabled attribute
Document that Eliminate on dispatching operation is ignored
Document IDE attributes VCS_Repository_Root and VCS_Patch_Root.
Document pragma Main
Document pragma Implicit_Packing
* sem_ch13.adb: Add warning for unchecked conversion of pointers wi
different conventions
New switch -gnatI to disable representation clauses
* switch-c.adb (Scan_Front_End_Switches): When a -gnat switch is not
recognized, report the invalid characters including "-gnat" instead of
just the first character in the switch.
New switch -gnatI to disable representation clauses
Set Warn_On_Object_Renames_Function true for -gnatg
Add STATEMENTS_AFTER_THEN_ELSE as synonym for -gnatyS
Add qualifier /ADD_PROJECT_SEARCH_DIR= for different tools, equivalent
to switch -aP (add directory to project search dir).
* par-prag.adb: Implement new pragma Implicit_Packing
* sem_prag.adb (Analyze_Pragma, case Complex_Representation): Mark the
type as having a non-standard representation, to force expansion on
conversion to related types.
(Analyze_Pragma): Warn on misspelled pragma
(Analyze_Pragma, case Convention_Identifier): Fix checking of second arg
Ensure consistent use of # in error messages
Implement pragma Implicit_Packing
2007-08-14 Olivier Hainque <>
Eric Botcazou <>
* targtyps.c (get_target_maximum_default_alignment): New function.
Maximum alignment
that the compiler might choose by default for a type or object.
(get_target_default_allocator_alignment): New function. Alignment known
to be honored by the target default allocator.
(get_target_maximum_allowed_alignment): New function. Maximum alignment
we might accept for any type or object on the target.
(get_target_maximum_alignment): Now synonym of maximum_default_alignment
* gigi.h (get_target_maximum_default_alignment): Declare new function.
(get_target_default_allocator_alignment): Likewise.
(get_target_maximum_allowed_alignment): Likewise.
PR ada/19037
* decl.c (gnat_to_gnu_entity) <object>: Except for the renaming of the
result of a function call, first try to use a stabilized reference for
a constant renaming too.
(validate_alignment): Use target_maximum_allowed_alignment instead of
MAX_OFILE_ALIGNMENT as the upper bound to what we accept.
(gnat_to_gnu_entity): Use common nodes directly.
(gnat_to_gnu_entity) <object>: Pick the values of the type to annotate
alignment and size for the object.
(lvalue_required_p): Handle N_Parameter_Association like N_Function_Call
and N_Procedure_Call_Statement.
(takes_address): Rename to lvalue_required_p, add third parameter
'aliased' and adjust recursive calls.
<N_Indexed_Component>: Update 'aliased' from the array type.
<N_Selected_Component>: New case.
<N_Object_Renaming_Declaration>: New Likewise.
(Identifier_to_gnu): Adjust for above changes.
(maybe_stabilize_reference) <CONST_DECL>: New case.
* utils2.c (build_binary_op) <ARRAY_RANGE_REF>: Look through conversion
between type variants.
(build_simple_component_ref): Likewise.
(build_call_alloc_dealloc): Use target_default_allocator_alignment
instead of BIGGEST_ALIGNMENT as the threshold to trigger the super
aligning type circuitry for allocations from the default storage pool.
(build_allocator): Likewise.
(build_simple_component_ref): Manually fold the reference for a
constructor if the record type contains a template.
* utils.c (value_zerop): Delete.
(gnat_init_decl_processing): Emit debug info for common types.
(rest_of_record_type_compilation): If a union contains a field
with a non-constant qualifier, treat it as variable-sized.
(finish_record_type): Give the stub TYPE_DECL a name.
(rest_of_record_type_compilation): Likewise.
(convert) <CONSTRUCTOR>: New case. Build a new constructor if
types are equivalent array types.
(create_field_decl): Claim fields of any ARRAY_TYPE are addressable,
even if the type is not passed by reference.
(static_ctors, static_dtors): Delete.
(end_subprog_body): Do not record constructors and destructors.
(build_global_cdtor): Delete.
(gnat_write_global_declarations): Do not call build_global_cdtor.
* lang-spARGET_VXWORKS_RTP is defined, append -mrtp when
-fRTS=rtp is specified.
If CONFIG_DUAL_EXCEPTIONS is 1, append -fsjlj when -fRTS=sjlj is
* misc.c (gnat_init_gcc_eh): Use __gnat_eh_personality_sj for the name
of the personality function with SJLJ exceptions.
* raise-gcc.c (PERSONALITY_FUNCTION): Use __gnat_eh_personality_sj for
the name of the personality function with SJLJ exceptions.
2007-08-14 Robert Dewar <>
Ed Schonberg <>
*, par.adb: Improve handling of extra right parens.
(Par): Remove flag From_Limited_With_Clause.
* par-util.adb, par-ch3.adb: Improve error recovery for bad constraint
Improve handling of extra right parens.
2007-08-14 Robert Dewar <>
* par-tchk.adb (TF_Semicolon): Improve error recovery
2007-08-14 Robert Dewar <>
Ed Schonberg <>
*, sem_attr.adb (Analyze_Attribute, case Value): For
enumeration type, mark all literals as referenced.
(Eval_Attribute, case 'Image): If the argument is an enumeration
literal and names are available, constant-fold but mark nevertheless as
Clean up function names.
(Name_Modifies_Prefix): Rename to Name_Implies_Lvalue_Prefix. Clarify
(Requires_Simple_Name_Prefix): Removed.
2007-08-14 Robert Dewar <>
Ed Schonberg <>
* sem_ch11.adb: Improved warnings for unused variables
*, sem_ch3.adb (Build_Derived_Record_Type): If the ancestor
is a synchronized interface, the derived type is limited.
(Analyze_Object_Declaration): Mark the potential coextensions in the
definition and expression of an object declaration node.
(Build_Derived_Type): For the completion of a private type declaration
with a derived type declaration, chain the parent type's representation
items to the last representation item of the derived type (not the
first one) if they are not present already.
(Analyze_Object_Declaration, Constant_Redeclaration): Allow incomplete
object declaration of forward references to tags.
(Access_Subprogram_Declaration): In Ada2005, anonymous access to
subprogram types can appear as access discriminants of synchronized
(OK_For_Limited_Init_In_05): The initialization is legal is it is a call
given in prefixed form as a selected component.
(Process_Discriminants): If not all discriminants have defaults, place
error message on a default that is present.
(Analyze_Private_Extension_Declaration): Diagnose properly an attempt to
extend a synchronized tagged type.
Improved warnings for unused variables
(Is_Visible_Component): Fix a visibility hole on a component inherited
by a private extension when parent is itself declared as a private
extension, and the derivation is in a child unit.
(Find_Hidden_Interface): Move spec from the package body.
2007-08-14 Robert Dewar <>
Ed Schonberg <>
* sem_ch5.adb: Improve warnings on redundant assignments
*, sem_util.adb: (Is_Variable): Add defense against junk
(Is_Synchronized_Tagged_Type): New subprogram that returns true
in case of synchronized tagged types (AARM 3.9.4 (6/2)).
(Safe_To_Capture_Value): Can now return True for constants, even if Cond
is set to False. Improves handling of Known_[Not_]Null.
(Wrong_Type): Special case address arithmetic attempt
(Collect_Abstract_Interfaces): Add new formal to allow collecting
abstract interfaces just using the partial view of private types.
(Has_Abstract_Interfaces): Add new formal to allow checking types
covering interfaces using the partial view of private types.
(Is_Fully_Initialized_Type): Special VM case for uTag component. This
component still needs to be defined in this case, but is never
initialized as VMs are using other dispatching mechanisms.
(Abstract_Interface_List): For a protected type, use base type to get
proper declaration.
Improve warnings on redundant assignments
(Is_Variable): Handle properly an implicit dereference of a prefixed
function call.
(Build_Actual_Subtype): If this is an actual subtype for an
unconstrained formal parameter, use the sloc of the body for the new
declaration, to prevent anomalises in the debugger.
2007-08-14 Robert Dewar <>
* sem_elim.adb (Set_Eliminated): Ignore pragma Eliminate for
dispatching operation
2007-08-14 Ed Schonberg <>
Gary Dismukes <>
exp_aggr.adb (Convert_Aggr_In_Allocator): Use Insert_Actions to place
expanded aggregate code before allocator, and ahead of declaration for
temporary, to prevent access before elaboration when the allocator is
an actual for an access parameter.
(Is_Static_Dispatch_Table_Aggregate): Handle aggregates initializing
the TSD and the table of interfaces.
(Convert_To_Assignments): Augment the test for delaying aggregate
expansion for limited return statements to include the case of extended
returns, to prevent creation of an unwanted transient scope.
(Is_Static_Dispatch_Table_Aggregate): New subprogram.
(Expand_Array_Aggregate): Handle aggregates associated with
statically allocated dispatch tables.
(Expand_Record_Aggregate): Handle aggregates associated with
statically allocated dispatch tables.
(Gen_Ctrl_Actions_For_Aggr): Generate a finalization list for allocators
of anonymous access type.
2007-08-14 Ed Schonberg <>
* exp_ch5.adb (Expand_Assign_Array): If source or target of assignment
is a variable that renames a slice, use the variable itself in the
expannsion when the renamed expression itself may be modified between
the declaration of the renaming and the array assignment.
2007-08-14 Jerome Guitton <>
* s-taprop-lynxos.adb, s-taprop-tru64.adb, s-taprop-irix.adb,
s-taprop-hpux-dce.adb, s-taprop-dummy.adb, s-taprop-solaris.adb,
s-taprop-vms.adb, s-taprop-posix.adb (Continue_Task, Stop_All_Tasks):
New functions; dummy implementations.
* (Task_Stop, Task_Cont, Int_Lock, Int_Unlock): New
functions, used to implement the multi-tasks mode routines on VxWorks.
* s-osinte-vxworks.adb, s-osinte-vxworks6.adb (Task_Cont, Task_Stop):
New functions, thin
binding to the VxWorks routines which have changed between VxWorks 5
and 6.
(Int_Lock, Int_Unlock): New function, thin binding to kernel routines
which are not callable from a RTP.
* s-taprop-vxworks.adb (Stop_All_Tasks, Continue_Task): New functions,
implemented for the multi-tasks mode on VxWorks 5 and 6.
* (Stop_All_Tasks, Continue_Task): New functions.
*, s-tasdeb.adb (Continue_All_Tasks, Stop_All_Tasks): New
2007-08-14 Vincent Celier <>
* clean.adb, fmap.adb, sinput-p.adb,, gnatcmd.adb,
gnatname.adb,, makeutl.adb, makegpr.adb, mlib-tgt-vms.adb
mlib-tgt-darwin.adb, mlib-tgt-lynxos.adb, mlib-prj.adb, mlib-tgt.adb,, mlib-tgt-irix.adb mlib-tgt-hpux.adb, mlib-tgt-linux.adb,
mlib-tgt-solaris.adb, mlib-tgt-vms-alpha.adb, mlib-tgt-vms-ia64.adb,
mlib-tgt-mingw.adb, mlib-tgt-vxworks.adb, mlib-tgt-aix.adb,
mlib-tgt-tru64.adb,, mlib.adb (Create_Sym_Links): New
(Major_Id_Name): New function.
(Library_Major_Minor_Id_Supported): New function, default returns True
Most mlib-tgt-*.adb that support shared libraries and symbolic links:
(Build_Dynamic_Library): Add support for major/minor ids for shared libs
Other mlib-tgt-*.adb (aix, mingw, vms, vxworks, xi):
Implementation of Library_Major_Minor_Id_Supported returns False
(Clean_Library_Directory): If major/minor ids are supported, clean all
library files.
Major update of the Project Manager and of the project aware tools,
including gprmake, so that the same sources in the GNAT repository
can be used by gprbuild.
2007-08-14 Olivier Hainque <>
* (ZCX_By_Default): Switch to True.
(GCC_ZCX_Support): Switch to True.
* s-intman-solaris.adb (Notify_Exception): Call
Adjust_Context_For_Raise before raising, as expected for signal
handlers in general.
* s-intman-posix.adb (Notify_Exception): Remove declaration of
Adjust_Context_For_Raise, moved to the spec of this unit to be visible
to other implementation bodies.
* (Adjust_Context_For_Raise): Declare and import here, to
be visible by multiple implementation bodies.
* init.c [VMS section] (__gnat_handle_vms_condition): Adjust context
only for conditions coming from hardware.
[alpha-tru64 section] (__gnat_adjust_context_for_raise): Implement,
adjustments to signal context prior to exception raise from signal
(__gnat_map_signal for VxWorks): Map SIGSEGV to Storage_Error in RTP
Solaris section: (__gnat_adjust_context_for_raise): New function.
Implementation of the machine context adjustments to perform prior to
raise from a signal handler. Version for both sparc and x86.
(__gnat_error_handler): Expect a third argument, ucontext_t *. Adjust it
prior to raising as expected for any handler, before possible nested
faults to make sure all the contexts in a chain have been adjusted by
the time we propagate.
2007-08-14 Pascal Obry <>
* Add support for Ada.Execution_Time on Windows.
(SYSTEM_INFO): New record.
(SetThreadIdealProcessor): New imported routine needed for supporting
task_info pragma on Windows.
* s-taprop-mingw.adb (Enter_Task): Check if CPU number given in task
info can be applied to the current host.
(Create_Task): Set the ideal processor if information is present.
* s-tasinf-mingw.adb,,
a-exetim-mingw.adb, New files.
2007-08-14 Olivier Hainque <>
* s-taprop-linux.adb (Get_Stack_Attributes): New subprogram. Fetch the
stack size and initial stack pointer value for a given task.
(Enter_Task): Get the stack attributes of the task we are entering and
let the stack checking engine know about them.
* s-stchop.adb, (Notify_Stack_Attributes): New subprogram.
Let the stack-checking engine know about the initial sp value and stack
size associated with the current task.
(Set_Stack_Info): If a stack base has been notified for the current
task, honor it. Fallback to the previous less accurate method otherwise.
* s-stchop-vxworks.adb (Notify_Stack_Attributes): Dummy body.
2007-08-14 Ed Schonberg <>
* sem_ch10.adb: Create a limited view of an incomplete type, to make
treatment of limited views uniform for all visible declarations in a
limited_withed package.
Set flag indicating that a subprogram body for a child unit has a
generated spec.
(Analyze_Compilation_Unit): If unit is a subprogram body that has no
separate declaration, remove the unit name from visibility after
compilation, so that environment is clean for subsequent compilations.
(Install_Limited_Context_Clauses): Do not install a
limited_private_with_clause unless the current unit is a body or a
private child unit.
(Analyze_Subunit, Install_Parents): Treat generic and non-generic units
in the same fashion.
(Install_Limited_Withed_Unit): Do not install a limited with clause if
it applies to the declaration of the current package body.
(Remove_Private_With_Clauses): If there is a regular with_clause for
the unit, delete Private_With_Clause from context, to prevent improper
hiding when processing subsequent nested packages and instantiations.
2007-08-14 Jose Ruiz <>
* adaint.c (__gnat_is_absolute_path): For VxWorks systems we accept
dir/file, device:/dir/file, and device:drive_letter:/dir/file as
representing absolute path names.
__gnat_set_file_time_name [VMS]: Fix some 64/32 bit issues.
* cstreams.c (__gnat_full_name for VxWorks): Use
__gnat_is_absolute_path to detect whether we need to add the current
directory to normalize the path.
2007-08-14 Javier Miranda <>
a-tags.adb (Displace): Associate a message with the raised CE
(To_Addr_Ptr, To_Address, To_Dispatch_Table_Ptr,
To_Object_Specific_Data_Ptr To_Predef_Prims_Ptr,
To_Tag_Ptr, To_Type_Specific_Data_Ptr): Moved here from the package
(Default_Prim_Op_Count): Removed.
(IW_Membership, Get_Entry_Index, Get_Offset_Index, Get_Prim_Op_Kind,
Register_Tag, Set_Entry_Index, Set_Offset_To_Top, Set_Prim_Op_Kind):
Remove pragma Inline_Always.
* (Default_Prim_Op_Count): Removed
(Max_Predef_Prims): New entity
(RE_Expanded_Name): Removed
(RE_HT_Link): Removed
(RE_Iface_Tag): Remmoved
(RE_Ifaces_Table): Removed
(RE_Interfaces_Array): Removed
(RE_Interface_Data_Element): Removed
(RE_Nb_Ifaces): Removed
(RE_RC_Offset): Removed
(RE_Static_Offset_To_Top): Removed
*, exp_atag.adb (Build_Inherit_Prims): Addition of a new
(Build_Inherit_Predefined_Prims): Replace occurrences of Default_
Prim_Op_Count by Max_Predef_Prims.
2007-08-14 Thomas Quinot <>
Vincent Celier <>
* binde.adb (Elab_All_Links): Remove unnecessary call to
Generic_Separately_Compiled (if a unit satisfies this predicate, there
won't be an associated Afile).
(Elab_All_Links): Fail if a referenced unit cannot be found
* bindgen.adb:
Fix comments in bindgen regarding consistency checks done in Bcheck:
the checks are made across units within a partition, not across several
Fix generation of C binder file for VxWorks.
*, lib.adb (Generic_Separately_Compiled): Rename to
Generic_May_Lack_ALI, more descriptive of the current use of the
predicate, and update documentation.
*, lib-writ.adb (Write_With_Lines): Minor code
reorganization and documentation update for the case of predefined
library generics (for which we do not reference an Afile).
2007-08-14 Robert Dewar <>
* s-intman-irix.adb, s-osinte-irix.adb,,, s-osinte-hpux-dce.adb,,, s-intman-dummy.adb, s-tasinf-solaris.adb,, s-asthan-vms-alpha.adb, s-inmaop-vms.adb,
s-intman-vms.adb,, s-osprim-mingw.adb,,,,, s-intman-vxworks.adb,,
s-tfsetr-vxworks.adb, s-interr.adb,, a-tasatt.adb,
exp_ch13.adb,,,,,, g-eacodu.adb, par-ch12.adb,, s-stausa.adb,
a-chtgke.adb, s-asthan-vms-alpha.adb,,, s-parame-vxworks.adb,,
g-altcon.adb: Minor reformatting
ada-tree.h: Delete empty line. Minor reformatting
Clarification of comments.
Minor spelling correction
* exp_dbug.adb: Add Warnings Off to suppress new warning
* a-witeio.adb (Write): Add Warnings (Off) for unneeded IN OUT mode
* a-strunb.adb (Set_Unbounded_String): Avoid memory leak by freeing old
* a-textio.adb (Write): Remove an unnecessary IN OUT mode from
* Reorder the standard input/output/error declarations
for consistency.
* g-dirope.adb, Change Dir to mode IN for Open call
* par-ch2.adb: Recognize RM specially in errout
Change 'R'M to RM in all error messages
* scng.adb: Recognize RM specially in errout
*, sem.adb, exp_strm.adb,, expander.adb: Rename
N_Return node to be N_Simple_Return, to reflect Ada 2005 terminology.
* s-direio.adb: Add missing routine header box.
* Add ??? comments
* sem_eval.adb: Recognize RM specially in errout
Change 'R'M to RM in all error messages
* sem_maps.adb, Remove some unnecessary IN OUT modes
* Fix minor comment typo.
* a-cihama.adb: Minor comment addition
* a-ztexio.adb (Write): Add Warnings (Off) for unneeded IN OUT mode
* Fix minor comment typo.
* Comment update.
* ali-util.adb: Remove Generic_Separately_Compiled guard, not needed
* argv.c: Added protection against null gnat_argv and gnat_envp.
* bcheck.adb (Check_Consistency): Use correct markup character ({) in
warning message when Tolerate_Consistency_Errors is True.
* cstand.adb (Create_Standard): Do not call Init_Size_Alignment for
Any_Id, as this subprogram is only applicable to *type* entities (it
sets RM_Size). Instead initialize just Esize and Alignment.
2007-08-14 Bob Duff <>
*,,, a-chtgop.adb,,
a-cihase.adb,, a-cohase.adb,,,,,,,,, a-convec.adb,, a-coinve.adb,, (Next): Applied pragma Inline.
Make all Containers packages Remote_Types (unless they are already
(Previous): applied pragma Inline
(Elements_Type): is now a record instead of an array
2007-08-14 Thomas Quinot <>
* table.adb, g-table.adb, g-dyntab.adb (Append): Reimplement in terms
of Set_Item.
(Set_Item): When the new item is an element of the currently allocated
table passed by reference, save a copy on the stack if we're going
to reallocate. Also, in Table.Set_Item, make sure we test the proper
variable to determine whether to call Set_Last.
* sinput-d.adb, sinput-l.adb, stringt.adb, switch-m.adb,
symbols-vms.adb, symbols-processing-vms-alpha.adb,
symbols-processing-vms-ia64.adb, sem_elab.adb, repinfo.adb: Replace
some occurrences of the pattern
T.Table (T.Last) := Value;
with a cleaner call to
T.Append (Value);
2007-08-14 Ed Schonberg <>
Gary Dismukes <>
Thomas Quinot <>
*, sem_ch12.adb (Instantiate_Type): If the formal is a
derived type with interface progenitors use the analyzed formal as the
parent of the actual, to create renamings for all the inherited
operations in Derive_Subprograms.
(Collect_Previous_Instances): new procedure within of
Load_Parent_Of_Generic, to instantiate all bodies in the compilation
unit being loaded, to ensure that the generation of global symbols is
consistent in different compilation modes.
(Is_Tagged_Ancestor): New function testing the ancestor relation that
takes progenitor types into account.
(Validate_Derived_Type_Instance): Enforce the rule of 3.9.3(9) by
traversing over the primitives of the formal and actual types to locate
any abstract subprograms of the actual type that correspond to a
nonabstract subprogram of the formal type's ancestor type(s), and issue
an error if such is found.
(Analyze_Package_Instantiation, Analyze_Subprogram_Instantiation,
Instantiate_Package_Body, Instantiate_Subprogram_Body):
Remove bogus guard around calls to Inherit_Context.
(Reset_Entity): If the entity is the selector of a selected component
that denotes a named number, propagate constant-folding to the generic
template only if the named number is global to the generic unit.
(Set_Instance_Env): Only reset the compilation switches when compiling
a predefined or internal unit.
2007-08-14 Ed Schonberg <>
* sem_ch4.adb (Try_Class_Wide_Operation): use base type of first
parameter to determine whether operation applies to the prefix.