2005-11-14 Cyrille Comar <comar@adacore.com>
Robert Dewar <dewar@adacore.com>
Vincent Celier <celier@adacore.com>
Ben Brosgol <brosgol@adacore.com>
Jose Ruiz <ruiz@adacore.com>
Pascal Obry <obry@adacore.com>
* gnat_ugn.texi:
Document that -fstack-check is needed for strict compliance with the
Ada 95 Reference Manual.
Correct reference to VAX systems to meet HP guidelines
Add documentation for new gnatmake switches -vl, -vm and -vh
Replace DEC Ada by HP Ada
Replace DIGITAL by HP
Remove empty section on tools in compatibility section
Clarify the Windows convention semantics.
Document the Win32 calling convention.
The Stdcall, Win32 and DLL convention are synonyms.
Add a note in -gnatR description about zero size record components
Note on new >= and <= warnings for -gnatwc
Document that equal sign after -gnatm is optional.
Note that strip is working fine on DLL built with a Library
Project. The restriction apply only to DLL built with gnatdll.
Update section about the way to debug a DLL.
Update information about the DLL convention.
Document -C switch for gnatprep
Document new attribute Library_ALI_Dir
Update elaboration doc to include implicit Elaborate pragmas now
generated for subprogram instantiations.
Document limitation on executable names that include spaces for --GCC,
--GNATBIND, and --GNATLINK switches.
Document that -w causes -gnatws to be added at start of gcc switches
* gnat_rm.texi: Document that -mieee is needed for generating infinite
and NaN values in case of overflow on machines that are not fully
compliant with the IEEE floating-point standard.
Create a section describing the set of compiler options needed for
strict compliance with the Ada 95 Reference Manual.
Add documentation for pragma Obsolescent applied to a package
Clarify potential issues of mixed language programs related to the
I/O buffering enabling in the elaboration of the GNAT runtime.
Add extra documentation for pragma Restrictions (No_Elaboration_Code)
This documentation only patch adds extra documentsion for pragma
Restrictions (No_Elaboration_Code), explaining why it is not possible
to document this restriction in terms of allowed source constructs.
Document string literal form of pragma Warnings
Document new attribute Library_ALI_Dir
Add documentation on stable attributes in project files that was missing
* gnat-style.texi: Indicate that paragraphs within a single comment
should be separated by empty comment lines
* ug_words: Added replacements for -gnat95 and -gnat05 (/95 and
/05 respectively)
* bindusg.adb: Minor cleanup, put -m before -M for consistency
From-SVN: r107015
2005-11-14 Vincent Celier <celier@adacore.com>
* makegpr.adb (Gprmake): Do not attempt to build the global archive if
there is no object directory.
2005-11-14 Robert Dewar <dewar@adacore.com>
* usage.adb: Minor adjustment to output format, use nn instead of nnn
(so that -gnateInnn does not run into next column)
2005-11-14 Ed Falis <falis@adacore.com>
* s-bitops.adb (Bits_Array): corrected comment: "unconstrained" =>
"constrained"
2005-11-14 Cyrille Comar <comar@adacore.com>
* s-chepoo.ads: Add comments on Dereference.
Remove unnecessary inherited abstract primitives.
Cosmetic cleanup.
2005-11-14 Robert Dewar <dewar@adacore.com>
* sem_cat.ads (Validate_Access_Type_Declaration): Remove declaration
node parameter, not needed, since it is available as Declaration_Node.
2005-11-14 Geert Bosch <bosch@adacore.com>
* s-exnllf.adb (Exn_LLF): Fix comment to be more precise and
grammatically correct.
2005-11-14 Vincent Celier <celier@adacore.com>
* s-fileio.ads: Correct spelling error in comment
From-SVN: r107014
2005-11-14 Vincent Celier <celier@adacore.com>
* tempdir.adb (Tempdir): Do not use environment variable TMPDIR if it
designates a non existent directory.
From-SVN: r107012
2005-11-14 Vincent Celier <celier@adacore.com>
* switch.adb (Bad_Switch): New procedure
(Scan_Nat, Scan_Pos): Directly call Osint.Fail with the appropriate
message when in error.
* switch.ads (Bad_Switch, Bad_Switch_Value, Missing_Switch_Value,
Too_Many_Output_Files): Remove declarations, no longer used.
(Scan_Nat): New parameter Switch
(Scan_Pos): Ditto
(Bad_Switch): New procedure
* switch-b.adb (Scan_Binder_Switches): Replace "raise Bad_Switch;"
with call to new procedure Bad_Switch. Call Scan_Pos and Scan_Natwith
new parameter Switch. Replace "raise Too_Many_Output_Files;" with call
to Osint.Fail. Do not handle any exception.
From-SVN: r107011
2005-11-14 Ed Schonberg <schonberg@adacore.com>
Robert Dewar <dewar@adacore.com>
* sem_warn.ads, sem_warn.adb (Publicly_Referenceable): Generic formals
of a generic subprogram are not visible outside the body.
(Set_Warning_Switch): New procedure (code to set warning mode moved
here from Switch.C so that it can be shared by pragma processing.
(Check_References): Special case warning for non-modified non-imported
volatile objects.
* par-prag.adb: Modify processing of pragma Warnings to accomodate new
form with a string literal argument
From-SVN: r107008
2005-11-14 Robert Dewar <dewar@adacore.com>
Thomas Quinot <quinot@adacore.com>
Hristian Kirtchev <kirtchev@adacore.com>
Ed Schonberg <schonberg@adacore.com>
* sem_util.ads, sem_util.adb: Change name Is_Package to
Is_Package_Or_Generic_Package.
(Check_Obsolescent): New procedure.
(Set_Is_Public): Remove obsolete junk test.
(Set_Public_Status): Do not set Is_Public on an object whose declaration
occurs within a handled_sequence_of_statemets.
(Is_Controlling_Limited_Procedure): Factor some of the logic, account
for a parameterless procedure.
(Enter_Name): Recognize renaming declarations created for private
component of a protected type within protected operations, so that
the source name of the component can be used in the debugger.
From-SVN: r107007
2005-11-14 Ed Schonberg <schonberg@adacore.com>
Javier Miranda <miranda@adacore.com>
PR ada/15604
* sem_type.adb (Covers): In an inlined body, a composite type matches
a private type whose full view is a composite type.
(Interface_Present_In_Ancestor): Protect the frontend against
previously detected errors to ensure that its compilation
with assertions enabled gives the same output that its
compilation without assertions.
(Interface_Present_In_Ancestor): Add support for private types.
Change name In_Actual to In_Generic_Actual (clean up)
(Disambiguate): New predicate In_Actual, to recognize expressions that
appear in the renaming declaration generated for generic actuals, and
which must be resolved in the outer context.
From-SVN: r107006
2005-11-14 Hristian Kirtchev <kirtchev@adacore.com>
Ed Schonberg <schonberg@adacore.com>
Robert Dewar <dewar@adacore.com>
Thomas Quinot <quinot@adacore.com>
* sem_res.adb (Resolve_Call): Provide a better error message whenever
a procedure call is used as a select statement trigger and is not an
entry renaming or a primitive of a limited interface.
(Valid_Conversion): If the operand has a single interpretation do not
remove address operations.
(Check_Infinite_Recursion): Skip freeze nodes when looking for a raise
statement to inhibit warning.
(Resolve_Unary_Op): Do not produce a warning when
processing an expression of the form -(A mod B)
Use Universal_Real instead of Long_Long_Float when we need a high
precision float type for the generated code (prevents gratuitous
Vax_Float stuff when pragma Float_Representation (Vax_Float) used)
(Resolve_Concatenation_Arg): Improve error message when argument is an
ambiguous call to a function that returns an array.
(Make_Call_Into_Operator, Operand_Type_In_Scope): Do not check that
there is an implicit operator in the given scope if we are within an
instance: legality check has been performed on the generic.
(Resolve_Unary_Op): Apply warnings checks on argument of Abs operator
after resolving operand, to avoid false warnings on overloaded calls.
From-SVN: r107005
2005-11-14 Robert Dewar <dewar@adacore.com>
Ed Schonberg <schonberg@adacore.com>
* sem_eval.adb: Implement d.f flag
(Subtype_Statically_Match): A generic actual type has unknown
discriminants when the corresponding actual has a similar partial view.
If the routine is called to validate the signature of an inherited
operation in a child instance, the generic actual matches the full view,
From-SVN: r107004
2005-11-14 Ed Schonberg <schonberg@adacore.com>
* sem_ch8.adb (Analyze_Subprogram_Renaming): In a generic context, do
not try to rewrite a renamed stream attribute, because the operations
on the type may not have been generated.
Handle properly a renaming_as_body generated for a stream operation
whose default is abstract because the object type itself is abstract.
(Find_Type): If the type is incomplete and appears as the prefix of a
'Class reference, it is tagged, and its list of primitive operations
must be initialized properly.
(Chain_Use_Clauses): When chaining the use clauses that appear in the
private declaration of a parent unit, prior to compiling the private
part of a child unit, find on the scope stack the proper parent entity
on which to link the use clause.
(Note_Redundant_Use): Emit a warning when a redundant use clause is
detected.
(Analyze_Object_Renaming): An attribute reference is not a legal object
if it is not a function call.
From-SVN: r107003
2005-11-14 Gary Dismukes <dismukes@adacore.com>
Ed Schonberg <schonberg@adacore.com>
* sem_ch7.adb (Install_Parent_Private_Declarations): New procedure
nested within Analyze_Package_Specification to install the private
declarations and use clauses within each of the parent units of a
package instance of a generic child package.
(Analyze_Package_Specification): When entering a private part of a
package associated with a generic instance or formal package, the
private declarations of the parent must be installed (by calling new
procedure Install_Parent_Private_Declarations).
Change name Is_Package to Is_Package_Or_Generic_Package
(Preserve_Full_Attributes): For a synchronized type, the corresponding
record is absent in a generic context, which does not indicate a
compiler error.
From-SVN: r107002
2005-11-14 Javier Miranda <miranda@adacore.com>
Ed Schonberg <schonberg@adacore.com>
* sem_ch6.adb (Check_Conformance): The null-exclusion feature can be
omitted in case of stream attribute subprograms.
(Check_Inline_Pragma): Handle Inline and Inline_Always pragmas that
appear immediately after a subprogram body, when there is no previous
subprogram declaration.
Change name Is_Package to Is_Package_Or_Generic_Package
(Process_Formals): A non null qualifier on a non null named access
type is not an error, and is a warning only if Redundant_Constructs
are flagged.
From-SVN: r107001
2005-11-14 Ed Schonberg <schonberg@adacore.com>
Javier Miranda <miranda@adacore.com>
* sem_ch3.ads, sem_ch3.adb (Build_Discriminal): Add link to original
discriminant.
(Build_Private_Derived_Type): The entity of the created full view of the
derived type does not come from source. If after installing the private
declarations of the parent scope the parent is still private, use its
full view to construct the full declaration of the derived type.
(Build_Derived_Record_Type): Relax the condition that controls the
execution of the check that verifies that the partial view and
the full view agree in the set of implemented interfaces. In
addition, this test now only takes into account the progenitors.
(Derive_Interface_Subprograms): No need to derive subprograms
of ancestors that are interfaces.
(Derive_Subprograms): Remove formal No_Predefined_Prims and the
associated code.
Change name Is_Package to Is_Package_Or_Generic_Package
(Complete_Subprograms_Derivation): Handle the case in which the full
view is a transitive derivation of the ancestor of the partial view.
(Process_Full_View): Rename local subprogram Find_Interface_In_
Descendant to Find_Ancestor_Interface to leave the code more clear.
Remove wrong code that avoids the generation of an error message
when the immediate ancestor of the partial view is an interface.
In addition some minor reorganization of the code has been done to
leave it more clear.
(Analyze_Type_Declaration): If type has previous incomplete tagged
partial view, inherit properly its primitive operations.
(Collect_Interfaces): Make public, for analysis of formal
interfaces.
(Analyze_Interface_Declaration): New procedure for use for regular and
formal interface declarations.
(Build_Derived_Record_Type): Add support for private types to the code
that checks if a tagged type implements abstract interfaces.
(Check_Aliased_Component_Type): The test applies in the spec of an
instance as well.
(Access_Type_Declaration): Clean up declaration of malformed type
declared as an access to its own classwide type, to prevent cascaded
crash.
(Collect_Interfaces): For private extensions and for derived task types
and derived protected types, the parent may be an interface that must
be included in the interface list.
(Access_Definition): If the designated type is an interface that may
contain tasks, create Master_Id for it before analyzing the expression
of the declaration, which may be an allocator.
(Record_Type_Declaration): Set properly the interface kind, for use
in allocators, the creation of master id's for task interfaces, etc.
From-SVN: r107000
2005-11-14 Gary Dismukes <dismukes@adacore.com>
Ed Schonberg <schonberg@adacore.com>
Gary Dismukes <dismukes@adacore.com>
Thomas Quinot <quinot@adacore.com>
* sem_ch12.ads, sem_ch12.adb (Map_Entities): Exclude entities whose
names are internal, because they will not have a corresponding partner
in the actual package.
(Analyze_Formal_Package): Move the setting of the formal package spec's
Generic_Parent field so that it occurs prior to analyzing the package,
to allow proper operation of Install_Parent_Private_Declarations.
(Analyze_Package_Instantiation): Set the instantiated package entity's
Package_Instantiation field.
(Get_Package_Instantiation_Node): Move declaration to package spec.
Retrieve the N_Package_Instantiation node when the Package_Instantiation
field is present.
(Check_Generic_Child_Unit): Within an inlined call, the only possible
instantiation is Unchecked_Conversion, for which no parents are needed.
(Inline_Instance_Body): Deinstall and record the use_clauses for all
parent scopes of a scope being removed prior to inlining an instance
body.
(Analyze_Package_Instantiation): Do not perform front-end inlining when
the current context is itself an instance within a non-instance child
unit, to prevent scope stack errors.
(Save_References): If the node is an aggregate that is an actual in a
call, rewrite as a qualified expression to preserve some type
information, to resolve possible ambiguities in the instance.
(Instance_Parent_Unit): New global variable to record the ultimate
parent unit associated with a generic child unit instance (associated
with the existing Parent_Unit_Visible flag).
(type Instance_Env): New component Instance_Parent_Unit for stacking
parents recorded in the global Instance_Parent_Unit.
(Init_Env): Save value of Instance_Parent_Unit in the Instance_Env
stack.
(Install_Spec): Save the parent unit entity in Instance_Parent_Unit when
it's not a top-level unit, and only do this if Instance_Parent_Unit is
not already set. Replace test of Is_Child_Unit with test of parent's
scope against package Standard. Add comments and a ??? comment.
(Remove_Parent): Revise condition for resetting Is_Immediately_Visible
on a child instance parent to test that the parent equals
Instance_Parent rather than simply checking that the unit is not a
child unit.
(Restore_Env): Restore value of Instance_Parent_Unit from Instance_Env.
(Validate_Derived_Interface_Type_Instance): Verify that all ancestors of
a formal interface are ancestors of the corresponding actual.
(Validate_Formal_Interface_Type): Additional legality checks.
(Analyze_Formal_Derived_Interface_Type): New procedure to handle formal
interface types with ancestors.
(Analyze_Formal_Package): If formal is a renaming, use renamed entity
to diagnose attempts to use generic within its own declaration.
From-SVN: r106999
2005-11-14 Robert Dewar <dewar@adacore.com>
Ed Schonberg <schonberg@adacore.com>
* sem_ch10.adb: Change name Is_Package to Is_Package_Or_Generic_Package
Do not give obsolescent warning on with of subprogram (since we
diagnose calls)
(Analyze_With_Clause): Add test for obsolescent package
(Install_Context_Clauses): If the unit is the body of a child unit, do
not install twice the private declarations of the parents, to prevent
circular lists of Use_Clauses in a parent.
(Implicit_With_On_Parent): Do add duplicate with_clause on parent when
compiling body of child unit.
Use new class N_Subprogram_Instantiation
(Expand_With_Clause): If this is a private with_clause for a child unit,
appearing in the context of a package declaration, then the implicit
with_clauses generated for parent units are private as well.
(License_Check): Do not generate message if with'ed unit is internal
From-SVN: r106998
2005-11-14 Ed Schonberg <schonberg@adacore.com>
* sem_aggr.adb (Resolve_Aggregate): An others choice is legal on the
rhs of an assignment even if the type is unconstrained, when the
context is non-expanding.
In an inlined body, if the context type is private,
resolve with its full view, which must be a composite type.
From-SVN: r106997
2005-11-14 Emmanuel Briot <briot@adacore.com>
* prj-pp.adb (Print): Do not output the with statement if the
associated name is empty, which happens for virtual extending projects.
(Print): Preserve the "extends all" attribute when printing the project.
* prj-tree.ads (String_Value_Of): Add comment about returned value for
a virtual extending project.
From-SVN: r106996
2005-11-14 Vincent Celier <celier@adacore.com>
* prj-part.adb (Create_Virtual_Extending_Project): Put virtual project
into Prj.Tree.Tree_Private_Part.Projects_Htable for GPS.
From-SVN: r106995
2005-11-14 Vincent Celier <celier@adacore.com>
* prj-ext.adb: Take into account new environment variable
GPR_PROJECT_PATH. Warn if both GPR_PROJECT_PATH and ADA_PROJECT_PATH
are defined.
(Prj.Ext elaboration): For each directory in the ADA_PROJECT_PATH,
normalize its path name, making it absolute and resolving symbolic
links, and replace the original if resolved path is different.
From-SVN: r106994
2005-11-14 Robert Dewar <dewar@adacore.com>
* par-ch10.adb (P_Compilation_Unit): Add defenses against junk unit
syntax, which could cause compiler hangs.
From-SVN: r106993
2005-11-14 Pascal Obry <obry@adacore.com>
* mdll.adb (Build_Reloc_DLL): Fix parameter handling when a map file is
used.
(Ada_Build_Reloc_DLL): Fix parameter handling when a map file is used.
In both cases the last argument was dropped.
From-SVN: r106991
2005-11-14 Vincent Celier <celier@adacore.com>
* make.adb (Compile_Sources): Change verbose message to minimum
verbosity level High for "is in an Ada library", "is a read-only
library" and "is an internal library",
(Create_Binder_Mapping_File): Path name of ALI file for library project
must include the library directory, not the object directory.
(Scan_Make_Arg): Make sure that Switch.M.Scan_Make_Switches is called
for new switches -vl, -vm and -vh.
(Verbose_Msg): Add new defaulted parameter Minimum_Verbosity
(Check): Use minimum verbosity Medium for some Verbose_Msg calls
(Compile_Sources): Do not attempt to compile if an ALI file is missing
in a project that is externally built.
(Compute_All_Imported_Projects): New procedure
(Gnatmake): Check if importing libraries should be regenerated because
at least an imported library is more recent.
(Initialize): For each project compute the list of the projects it
imports directly or indirectly.
(Add_Library_Search_Dir): New procedure, used in place of
Add_Lib_Search_Dir in procedure Scan_Make_Arg so that absolute paths are
put in the search paths.
(Add_Source_Search_Dir): New procedure, used in place of
Add_Src_Search_Dir in procedure Scan_Make_Arg so that absolute paths are
put in the search paths.
(Mark_Directory): Resolve the absolute path the directory before marking
it.
* switch-m.adb (Scan_Make_Switches): Replace "raise Bad_Switch;" with
call to new procedure Bad_Switch. Call Scan_Pos with new parameter
Switch. Do not handle any exception.
(Scan_Make_Switches): Increment Ptr for new switches -vl, -vm and -vh
so that the switch is recognized as valid.
(Scan_Make_Switches): Implement new switches -vl, -vm and -vh.
From-SVN: r106989
2005-11-14 Ed Schonberg <schonberg@adacore.com>
* lib-xref.adb (Generate_Definition, Generate_Reference): Treat the
internal entity created for the declaration of a child subprogram body
with no spec as coming from source, to generate proper cross-reference
information.
From-SVN: r106988
2005-11-14 Robert Dewar <dewar@adacore.com>
* interfac.ads: Change declarations of IEEE float types so that we no
longer need a separate version of this package for VMS.
From-SVN: r106987
2005-11-14 Robert Dewar <dewar@adacore.com>
Vincent Celier <celier@adacore.com>
* gprep.adb: Implement -C switch to scan comments
* scng.adb: Scan comment symbol separately if Replace_In_Comments set
* scans.ads: Comment updates (including new use of Tok_Comment in
preprocessing)
* opt.ads: Add documentation for flags that are used by gprmake,
currently and in the next version of gprmake.
(Verbosity_Level): New variable
Add Replace_In_Comments switch
* vms_data.ads: Add VMS equivalent for new gnatmake switches -vl, -vm
and -vm.
Add /REPLACE_IN_COMMENTS for gnatprep -C switch
From-SVN: r106983
2005-11-14 Pascal Obry <obry@adacore.com>
* gnatbind.adb (Is_Cross_Compiler): New function returning True for
cross-compiler.
(Scan_Bind_Arg): Fail with an error message if -M option is used
on a native compiler.
From-SVN: r106982
2005-11-14 Robert Dewar <dewar@adacore.com>
* g-debpoo.adb (Set_Valid): Use Integer_Address instead of
Storage_Offset to avoid wrap around causing invalid results.
From-SVN: r106981
2005-11-14 Ed Schonberg <schonberg@adacore.com>
* freeze.adb (Freeze_Entity): For an access formal that is an access
to subprogram, freeze the anonymous subprogram type at the same time,
to prevent later freezing in the wrong scope, such as the enclosing
subprogram body.
(Freeze_Entity): Freeze the equivalent_type of an access_to_protected_
subprogram whenever available.
From-SVN: r106979
2005-11-14 Javier Miranda <miranda@adacore.com>
* exp_strm.adb (Build_Stream_Attr_Profile, Build_Stream_Function,
Build_Stream_Procedure): Add the null-excluding attribute to the first
formal.
This has no semantic meaning under Ada95 mode but it is a
requirement under Ada05 mode.
* par-ch3.adb (P_Access_Definition): Addition of warning message if
the null exclusion is used under Ada95 mode
(P_Null_Exclusion): The qualifier has no semantic meaning in Ada 95.
(P_Access_Definition): Remove assertion that forbids the use of
the null-exclusion feature in Ada95.
From-SVN: r106977
2005-11-14 Thomas Quinot <quinot@adacore.com>
Robert Dewar <dewar@adacore.com>
Ed Schonberg <schonberg@adacore.com>
* exp_intr.adb (Expand_Unc_Deallocation): If GIGI needs an actual
subtype to compute the size of the designated object at run-time,
create such a subtype and store it in the Actual_Designated_Subtype
attribute of the N_Free_Statement.
Generate itype for classwide designated object in both cases of
user-specified storage pool: specific and class-wide, not only in the
specific case.
Raise CE when trying to set a not null access type object to null.
(Expand_Dispatching_Constructor_Call): Retrieve subprogram actual with
an explicit loop, because freeze nodes make its position variable.
* sem_intr.adb (Check_Intrinsic_Call): Given warning for freeing not
null object.
From-SVN: r106976
2005-11-14 Robert Dewar <dewar@adacore.com>
* exp_fixd.adb: Use Universal_Real instead of Long_Long_Float when we
need a high precision float type for the generated code (prevents
gratuitous Vax_Float stuff when pragma Float_Representation (Vax_Float)
used).
* exp_imgv.adb: Use Universal_Real instead of Long_Long_Float when we
need a high precision float type for the generated code (prevents
gratuitous Vax_Float stuff when pragma Float_Representation (Vax_Float)
used).
(Expand_Width_Attribute): In configurable run-time, the attribute is not
allowed on non-static enumeration subtypes. Force a load error to emit
the correct diagnostic.
From-SVN: r106975