Thomas Quinot [Wed, 15 Feb 2006 09:45:56 +0000 (10:45 +0100)]
sinput-d.adb (Write_Line): Update the Source_Index_Table after each line.
2006-02-13 Thomas Quinot <quinot@adacore.com>
* sinput-d.adb (Write_Line): Update the Source_Index_Table after each
line. This is necessary to allow In_Extended_Main_Unit to provide
correct results for itypes while writing out expanded source.
(Close_File): No need to update the source_index_table here since it's
now done for each line.
From-SVN: r111098
Ed Schonberg [Wed, 15 Feb 2006 09:45:43 +0000 (10:45 +0100)]
sem_warn.adb (Check_One_Unit): If the unit appears in a limited_with clause...
2006-02-13 Ed Schonberg <schonberg@adacore.com>
* sem_warn.adb (Check_One_Unit): If the unit appears in a limited_with
clause, use the limited view to determine whether any entity from it
is referenced.
From-SVN: r111097
Ed Schonberg [Wed, 15 Feb 2006 09:45:29 +0000 (10:45 +0100)]
sem_type.adb (Write_Overloads): Improve display of candidate interpretations.
2006-02-13 Ed Schonberg <schonberg@adacore.com>
Javier Miranda <miranda@adacore.com>
* sem_type.adb (Write_Overloads): Improve display of candidate
interpretations.
(Add_One_Interp): Do not add to the list of interpretations aliased
entities corresponding with an abstract interface type that is an
immediate ancestor of a tagged type; otherwise we have a dummy
conflict between this entity and the aliased entity.
(Disambiguate): The predefined equality on universal_access is not
usable if there is a user-defined equality with the proper signature,
declared in the same declarative part as the designated type.
(Find_Unique_Type): The universal_access equality operator defined under
AI-230 does not cover pool specific access types.
(Covers): If one of the types is a generic actual subtype, check whether
it matches the partial view of the other type.
From-SVN: r111096
Ed Schonberg [Wed, 15 Feb 2006 09:45:12 +0000 (10:45 +0100)]
sem_elab.adb (Same_Elaboration_Scope): A package that is a compilation unit is an elaboration scope.
2006-02-13 Ed Schonberg <schonberg@adacore.com>
Robert Dewar <dewar@adacore.com>
* sem_elab.adb (Same_Elaboration_Scope): A package that is a
compilation unit is an elaboration scope.
(Add_Task_Proc): Add '\' in 2-line warning message.
(Activate_All_Desirable): Deal with case of unit with'ed by parent
From-SVN: r111095
Javier Miranda [Wed, 15 Feb 2006 09:45:00 +0000 (10:45 +0100)]
sem_ch9.adb (Analyze_Protected_Type, [...]): Check that if this is the full-declaration associated with a private...
2006-02-13 Javier Miranda <miranda@adacore.com>
* sem_ch9.adb (Analyze_Protected_Type, Analyze_Task_Type): Check that
if this is the full-declaration associated with a private declaration
that implement interfaces, then the private type declaration must be
limited.
(Analyze_Single_Protected, Analyze_Single_Task): Do not mark the object
as aliased. The use of the 'access attribute is not available for such
object (for this purpose the object should be explicitly marked as
aliased, but being an anonymous type this is not possible).
From-SVN: r111094
Bob Duff [Wed, 15 Feb 2006 09:44:48 +0000 (10:44 +0100)]
sem_ch8.adb (Note_Redundant_Use): Suppress unhelpful warning about redundant use clauses.
2006-02-13 Bob Duff <duff@adacore.com>
* sem_ch8.adb (Note_Redundant_Use): Suppress unhelpful warning about
redundant use clauses.
In particular, if the scope of two use clauses overlaps, but one is not
entirely included in the other, we should not warn. This can happen
with nested packages.
(Analyze_Subprogram_Renaming): Protect the compiler against previously
reported errors. The bug was reported when the compiler was built
with assertions enabled.
(Find_Type): If the node is a 'Class reference and the prefix is a
synchronized type without a corresponding record, return the type
itself.
From-SVN: r111093
Ed Schonberg [Wed, 15 Feb 2006 09:44:37 +0000 (10:44 +0100)]
sem_ch4.adb (Remove_Abstract_Interpretations): Even if there are no abstract interpretations on an operator...
2006-02-13 Ed Schonberg <schonberg@adacore.com>
Javier Miranda <miranda@adacore.com>
* sem_ch4.adb (Remove_Abstract_Interpretations): Even if there are no
abstract interpretations on an operator, remove interpretations that
yield Address or a type derived from it, if one of the operands is an
integer literal.
(Try_Object_Operation.Try_Primitive_Operation,
Try_Object_Operation.Try_Class_Wide_Operation): Set proper source
location when creating the new reference to a primitive or class-wide
operation as a part of rewriting a subprogram call.
(Try_Primitive_Operations): If context requires a function, collect all
interpretations after the first match, because there may be primitive
operations of the same type with the same profile and different return
types. From code reading.
(Try_Primitive_Operation): Use the node kind to choose the proper
operation when a function and a procedure have the same parameter
profile.
(Complete_Object_Operation): If formal is an access parameter and prefix
is an object, rewrite as an Access reference, to match signature of
primitive operation.
(Find_Equality_Type, Find_One_Interp): Handle properly equality given
by an expanded name with prefix Standard, when the operands are of an
anonymous access type.
(Remove_Abstract_Operations): If the operation is abstract because it is
inherited by a user-defined type derived from Address, remove it as
well from the set of candidate interpretations of an overloaded node.
(Analyze_Membership_Op): Membership test not applicable to cpp-class
types.
From-SVN: r111092
Thomas Quinot [Wed, 15 Feb 2006 09:44:24 +0000 (10:44 +0100)]
sem_ch12.adb (Inline_Instance_Body): Remove erroneous assumption that Scope_Stack.First = 1.
2006-02-13 Thomas Quinot <quinot@adacore.com>
Robert Dewar <dewar@adacore.com>
Ed Schonberg <schonberg@adacore.com>
Javier Miranda <miranda@adacore.com>
* sem_ch12.adb (Inline_Instance_Body): Remove erroneous assumption
that Scope_Stack.First = 1.
Properly handle Ada_Version_Explicit and Ada_Version_Config, which
were not always properly handled previously.
(Formal_Entity): Complete rewrite, to handle properly some complex case
with multiple levels of parametrization by formal packages.
(Analyze_Formal_Derived_Type): Propagate Ada 2005 "limited" indicator
to the corresponding derived type declaration for proper semantics.
* sem_prag.adb (Analyze_Pragma): Remove '!' in warning message.
(Check_Component): Enforce restriction on components of
unchecked_unions: a component in a variant cannot contain tasks or
controlled types.
(Unchecked_Union): Allow nested variants and multiple discriminants, to
conform to AI-216.
Add pragma Ada_2005 (synonym for Ada_05)
Properly handle Ada_Version_Explicit and Ada_Version_Config, which
were not always properly handled previously.
Document that pragma Propagate_Exceptions has no effect
(Analyze_Pragma, case Pure): Set new flag Has_Pragma_Pure
(Set_Convention_From_Pragma): Check that if a convention is
specified for a dispatching operation, then it must be
consistent with the existing convention for the operation.
(CPP_Class): Because of the C++ ABI compatibility, the programmer is no
longer required to specify an vtable-ptr component in the record. For
compatibility reasons we leave the support for the previous definition.
(Analyze_Pragma, case No_Return): Allow multiple arguments
* sem_ch3.ads, sem_ch3.adb (Check_Abstract_Overriding): Flag a
non-overrideen inherited operation with a controlling result as
illegal only its implicit declaration comes from the derived type
declaration of its result's type.
(Check_Possible_Deferred_Completion): Relocate the object definition
node of the subtype indication of a deferred constant completion rather
than directly analyzing it. The analysis of the generated subtype will
correctly decorate the GNAT tree.
(Record_Type_Declaration): Check whether this is a declaration for a
limited derived record before analyzing components.
(Analyze_Component_Declaration): Diagnose record types not explicitly
declared limited when a component has a limited type.
(Build_Derived_Record_Type): Code reorganization to check if some of
the inherited subprograms of a tagged type cover interface primitives.
This check was missing in case of a full-type associated with a private
type declaration.
(Constant_Redeclaration): Check that the subtypes of the partial and the
full view of a constrained deferred constant statically match.
(Mentions_T): A reference to the current type in an anonymous access
component declaration must be an entity name.
(Make_Incomplete_Type_Declaration): If type is tagged, set type of
class_wide type to refer to full type, not to the incomplete one.
(Add_Interface_Tag_Components): Do nothing if RE_Interface_Tag is not
available. Required to give support to the certified run-time.
(Analyze_Component_Declaration): In case of anonymous access components
perform missing checks for AARM 3.9.2(9) and 3.10.2 (12.2).
(Process_Discriminants): For an access discriminant, use the
discriminant specification as the associated_node_for_itype, to
simplify accessibility checks.
From-SVN: r111091
Hristian Kirtchev [Wed, 15 Feb 2006 09:44:09 +0000 (10:44 +0100)]
sem_ch10.adb (Check_Redundant_Withs): New procedure in Analyze_Compilation_Unit.
2006-02-13 Hristian Kirtchev <kirtchev@adacore.com>
Ed Schonberg <schonberg@adacore.com>
Gary Dismukes <dismukes@adacore.com>
* sem_ch10.adb (Check_Redundant_Withs): New procedure in
Analyze_Compilation_Unit.
Detect and warn on redundant with clauses detected in a package spec
and/or body when -gnatwr is used.
(Analyze_Context): Analyze config pragmas before other items
(Install_Context_Items): Don't analyze config pragmas here
(Install_Limited_Withed_Unit): Set limited entity of package in
with_clause so that cross-reference information or warning messages on
unused packages can be properly generated
(Is_Visible_Through_Renamings): Return false if the limited_with_clause
has Error_Posted set. Prevent infinite loops in illegal programs.
(Check_Private_Child_Unit): Move test for a nonprivate with clause down
to the point of the error test requiring the current unit to be private.
This ensures that private with clauses are not exempted from the basic
checking for being a descendant of the same library unit parent as a
withed private descendant unit.
(Check_Private_Limited_Withed_Unit): Revise the checking algorithm to
handle private with clauses properly, as well as to account for cases
where the withed unit is a public descendant of a private ancestor
(in which case the current unit must be a descendant of the private
ancestor's parent). The spec comments were updated accordingly. Also,
the old error message in this subprogram was replaced with error
messages that mirror the errors tested and reported by
Check_Private_Child_Unit.
Parameter and variable names improved for readability.
(Install_Limited_Context_Clauses): Remove test for a withed unit being
private as the precondition for calling
Check_Private_Limited_Withed_Unit since that subprogram has been
revised to test public units as well as private units.
From-SVN: r111090
Javier Miranda [Wed, 15 Feb 2006 09:43:54 +0000 (10:43 +0100)]
sem_attr.adb (Analyze_Attribute): In case of 'Class applied to an abstract interface type call...
2006-02-13 Javier Miranda <miranda@adacore.com>
Ed Schonberg <schonberg@adacore.com>
* sem_attr.adb (Analyze_Attribute): In case of 'Class applied to an
abstract interface type call analyze_and_resolve to expand the type
conversion into the corresponding displacement of the
reference to the base of the object.
(Eval_Attribute, case Width): For systems where IEEE extended precision
is supported, the maximum exponent occupies 4 decimal digits.
(Accessibility_Message): Add '\' in 2-line warning message.
(Resolve_Attribute): Likewise.
(case Attribute_Access): Significantly revise checks
for illegal access-to-subprogram Access attributes to properly enforce
the rules of 3.10.2(32/2).
Diagnose use of current instance with an illegal attribute.
* sem_util.ads, sem_util.adb (Enclosing_Generic_Body): Change formal
to a Node_Id.
(Enclosing_Generic_Unit): New function to return a node's innermost
enclosing generic declaration node.
(Compile_Time_Constraint_Error): Remove '!' in warning messages.
(Type_Access_Level): The accessibility level of anonymous acccess types
associated with discriminants is that of the current instance of the
type, and that's deeper than the type itself (AARM 3.10.2 (12.3.21)).
(Compile_Time_Constraint_Error): Handle case of conditional expression.
(Kill_Current_Values_For_Entity): New function
(Enter_Name): Change formal type to Entity_Id
From-SVN: r111089
Javier Miranda [Wed, 15 Feb 2006 09:43:43 +0000 (10:43 +0100)]
sem_aggr.adb (Resolve_Record_Aggregate): Restructure the code that handles default-initialized components to keep...
2006-02-13 Javier Miranda <miranda@adacore.com>
* sem_aggr.adb (Resolve_Record_Aggregate): Restructure the code that
handles default-initialized components to keep separate the management
of this feature but also avoid the unrequired resolution and
expansion of components that do not have partially initialized
values.
(Collect_Aggr_Bounds): Add '\' in 2-line warning message.
(Check_Bounds): Likewise.
(Check_Length): Likewise.
From-SVN: r111088
Doug Rupp [Wed, 15 Feb 2006 09:43:32 +0000 (10:43 +0100)]
s-auxdec-vms_64.ads (Short_Address): Wrap it in a type.
2006-02-13 Douglas Rupp <rupp@adacore.com>
* s-auxdec-vms_64.ads (Short_Address): Wrap it in a type.
From-SVN: r111087
Javier Miranda [Wed, 15 Feb 2006 09:43:23 +0000 (10:43 +0100)]
restrict.ads (No_Dispatching_Calls): New GNAT restriction.
2006-02-13 Javier Miranda <miranda@adacore.com>
Gary Dismukes <dismukes@adacore.com>
Robert Dewar <dewar@adacore.com>
* restrict.ads (No_Dispatching_Calls): New GNAT restriction.
* sem_disp.adb (Override_Dispatching_Operation): Traverse the list of
aliased entities to look for the overriden abstract interface
subprogram.
(Is_Interface_Subprogram): Complete documentation.
(Check_Dispatching_Operation): Do not generate code to register the
operation in the dispatch table if the source is compiled with
restriction No_Dispatching_Calls.
(Override_Dispatching_Operation): Check for illegal attempt to override
No_Return procedure with procedure that is not No_Return
(Check_Dispatching_Call): Suppress the check for an abstract operation
when the original node of an actual is a tag-indeterminate attribute
call, since the attribute, which must be 'Input, can never be abstract.
(Is_Tag_Indeterminate): Handle checking of tag indeterminacy of a
call to the Input attribute (even when rewritten).
(Propagate_Tag): Augment comment to indicate the possibility of a call
to an Input attribute.
* sem_disp.ads (Override_Dispatching_Operation): Moved to spec to allow
calling it from Exp_Ch3.Make_Controlling_Function_Wrappers.
* s-rident.ads: (No_Dispatching_Calls): New GNAT restriction.
No_Wide_Characters is no longer partition-wide
No_Implementation_Attributes/Pragmas are now Ada 2005 (AI-257)
rather than GNAT
From-SVN: r111086
Vincent Celier [Wed, 15 Feb 2006 09:43:11 +0000 (10:43 +0100)]
prj-makr.adb (Make): Preserve the comments from the original project file.
2006-02-13 Vincent Celier <celier@adacore.com>
* prj-makr.adb (Make): Preserve the comments from the original project
file.
When removing nodes (attributes Source_Dirs, Source_Files,
Source_List_File and package Naming), save the comments and attach the
saved comments to the newly created nodes.
Do not add a with clause for the naming package if one already exists.
From-SVN: r111085
Vincent Celier [Wed, 15 Feb 2006 09:43:00 +0000 (10:43 +0100)]
prj.ads (Error_Warning): New enumeration type
2006-02-13 Vincent Celier <celier@adacore.com>
* prj.ads (Error_Warning): New enumeration type
* prj-nmsc.ads, prj-nmsc.adb (Error_Msg): If location parameter is
unknown, use the location of the project to report the error.
(When_No_Sources): New global variable
(Report_No_Ada_Sources): New procedure
(Check): New parameter When_No_Sources. Set value of global variable
When_No_Sources,
(Find_Sources): Call Report_No_Ada_Sources when appropriate
(Get_Sources_From_File): Ditto
(Warn_If_Not_Sources): Better warning messages indicating the unit name
and the file name.
* prj-pars.ads, prj-pars.adb (Parse): New parameter When_No_Sources.
Call Prj.Proc.Process with parameter When_No_Sources.
* prj-proc.ads, prj-proc.adb (Check): New parameter When_No_Sources.
Call Recursive_Check with parameter When_No_Sources.
(Recursive_Check): New parameter When_No_Sources. Call itself and
Prj.Nmsc.Check with parameter When_No_Sources.
(Process): New parameter When_No_Sources. Call Check with parameter
When_No_Sources.
(Copy_Package_Declarations): New procedure to copy renamed parameters
and setting the location of the declared attributes to the location
of the renamed package.
(Process_Declarative_Items): Call Copy_Package_Declarations for renamed
packages.
From-SVN: r111084
Vincent Celier [Wed, 15 Feb 2006 09:42:47 +0000 (10:42 +0100)]
prj.adb (Reset): Initialize the first element of table Namings with the standard naming data.
2006-02-13 Vincent Celier <celier@adacore.com>
* prj.adb (Reset): Initialize the first element of table Namings with
the standard naming data.
From-SVN: r111083
Javier Miranda [Wed, 15 Feb 2006 09:42:38 +0000 (10:42 +0100)]
par-endh.adb (Explicit_Start_Label): Add code to protect the parser against source containing syntax errors.
2006-02-13 Javier Miranda <miranda@adacore.com>
* par-endh.adb (Explicit_Start_Label): Add code to protect the parser
against source containing syntax errors.
From-SVN: r111082
Robert Dewar [Wed, 15 Feb 2006 09:42:27 +0000 (10:42 +0100)]
par-ch6.adb, [...]: Implement -gnatyI switch (MODE_IN)
2006-02-13 Robert Dewar <dewar@adacore.com>
* par-ch6.adb, style.ads, styleg.adb, styleg.ads, stylesw.adb,
stylesw.ads, usage.adb, vms_data.ads: Implement -gnatyI switch
(MODE_IN)
From-SVN: r111081
Javier Miranda [Wed, 15 Feb 2006 09:42:14 +0000 (10:42 +0100)]
re PR ada/23973 (without -gnat05, GNAT warns that interface is new kw, but misses one frequent occurence)
2006-02-13 Javier Miranda <miranda@adacore.com>
PR ada/23973
* par-ch3.adb (P_Derived_Type_Def_Or_Private_Ext_Decl): Reorganize the
code to improve the error message reported when the program has
declarations of abstract interface types and it is not compiled with
the -gnat05 switch.
(P_Access_Definition): Reorganize the code to improve the error
message reported when the new Ada 2005 syntax for anonymous
access types is used and the program is not compiled with the
-gnat05 switch.
From-SVN: r111080
Vincent Celier [Wed, 15 Feb 2006 09:42:01 +0000 (10:42 +0100)]
mlib-prj.adb (Index): New function
2006-02-13 Vincent Celier <celier@adacore.com>
* mlib-prj.adb (Index): New function
(Build_Library): When building a shared library, add to the run path
the directory of the shared version of libgcc.
(Build_Library): Output shared decgnat library.
(Process_Binder_File): Test for shared decgnat library.
From-SVN: r111079
Vincent Celier [Wed, 15 Feb 2006 09:41:49 +0000 (10:41 +0100)]
make.adb (Collect_Arguments_And_Compile): For VMS...
2006-02-13 Vincent Celier <celier@adacore.com>
* make.adb (Collect_Arguments_And_Compile): For VMS, when compiling the
main source, add switch -mdebug-main=_ada_ so that the executable can
be debugged by the standard VMS debugger.
(Gnatmake): Set No_Main_Subprogram to True when there is no main
subprogram, to avoid issuing -mdebug-main=_ada_ for VMS uselessly.
Exit the Multi_Main_Loop when Unique_Compile is True after compilation
of the last source, as the binding and linking phases are never
performed.
Set all executable obsolete when rebuilding a library.
* makeutl.adb (Linker_Options_Switches): Do not process empty linker
options.
From-SVN: r111078
Ed Schonberg [Wed, 15 Feb 2006 09:41:35 +0000 (10:41 +0100)]
lib-xref.adb (Get_Type_Reference): For a private type whose full view is an array type...
2006-02-13 Ed Schonberg <schonberg@adacore.com>
Robert Dewar <dewar@adacore.com>
* lib-xref.adb (Get_Type_Reference): For a private type whose full
view is an array type, indicate the component type as well, for
navigation purposes.
(Generate_Reference): Don't consider array ref on LHS to be a case
of violating pragma Unreferenced.
Do not give Ada 2005 warning except on real reference.
From-SVN: r111077
Robert Dewar [Wed, 15 Feb 2006 09:41:22 +0000 (10:41 +0100)]
g-spipat.adb (Image, [...]): These two cases were generating incorrect output...
2006-02-13 Robert Dewar <dewar@adacore.com>
* g-spipat.adb (Image, case PC_Assign_Imm and case PC_Assign_OnM):
These two cases were generating incorrect output, and if this unit
was built with checks on, generated a discriminant mismatch constraint
error.
From-SVN: r111076
Vincent Celier [Wed, 15 Feb 2006 09:41:11 +0000 (10:41 +0100)]
gnatcmd.adb (Rules_Switches): New table
2006-02-13 Vincent Celier <celier@adacore.com>
* gnatcmd.adb (Rules_Switches): New table
(Add_To_Rules_Switches): New procedure
(GNATCmd): For command CHECK, put all options following "-rules" in the
Rules_Switches table. Append these -rules switches after the -cargs
switches.
From-SVN: r111075
Arnaud Charlet [Wed, 15 Feb 2006 09:41:02 +0000 (10:41 +0100)]
gnatbind.adb (Scan_Bind_Arg): Replace error by warning on -M and native platforms.
* gnatbind.adb (Scan_Bind_Arg): Replace error by warning on -M and
native platforms.
(Gnatbind): Do not call Exit_Program (E_Success) at the end, so that
finalization can occur normally.
From-SVN: r111074
Matthew Heaney [Wed, 15 Feb 2006 09:40:52 +0000 (10:40 +0100)]
g-dyntab.adb (Index_Of): conversion from Natural can no longer raise Constraint_Error.
2006-02-13 Matthew Heaney <heaney@adacore.com>
* g-dyntab.adb (Index_Of): conversion from Natural can no longer raise
Constraint_Error.
From-SVN: r111073
Pascal Obry [Wed, 15 Feb 2006 09:40:43 +0000 (10:40 +0100)]
g-catiio.adb (Sec_Number): New type used to compute the number of seconds since 1-1-1970.
2006-02-13 Pascal Obry <obry@adacore.com>
* g-catiio.adb (Sec_Number): New type used to compute the number of
seconds since 1-1-1970.
(Image) [Natural]: The parameter was an Integer, as we can't deal with
negative numbers (years, months...) it is better to have a Natural here.
Code clean-up.
(Image) [Number]: Change parameter from Long_Integer to Number.
(Image): Use Number type to compute the seconds since 1-1-1970 to fix an
overflow for dates past year 2038.
From-SVN: r111072
Olivier Hainque [Wed, 15 Feb 2006 09:40:32 +0000 (10:40 +0100)]
g-altive.ads (VECTOR_ALIGNMENT): Set to Min (16...
2006-02-13 Olivier Hainque <hainque@adacore.com>
* g-altive.ads (VECTOR_ALIGNMENT): Set to Min (16, Max_Alignment),
to avoid useless and space inefficient overalignments on targets where
Max_Alignment is larger than 16.
From-SVN: r111071
Javier Miranda [Wed, 15 Feb 2006 09:40:24 +0000 (10:40 +0100)]
freeze.adb (Freeze_Entity): Handle subtypes of protected types and task types when...
2006-02-13 Javier Miranda <miranda@adacore.com>
* freeze.adb (Freeze_Entity): Handle subtypes of protected types and
task types when accessing to the corresponding record type.
Remove '!' in warning message.
From-SVN: r111070
Ed Schonberg [Wed, 15 Feb 2006 09:40:13 +0000 (10:40 +0100)]
re PR ada/18819 (ACATS
cdd2a02 fail at runtime)
2006-02-13 Ed Schonberg <schonberg@adacore.com>
Javier Miranda <miranda@adacore.com>
Eric Botcazou <ebotcazou@adacore.com>
* exp_util.ads, exp_util.adb (Find_Prim_Op,
Is_Predefined_Primitive_Operation): When
searching for the predefined equality operator, verify that operands
have the same type.
(Is_Predefined_Dispatching_Operation): Remove the code that looks
for the last entity in the list of aliased subprograms. This code
was wrong in case of renamings.
(Set_Renamed_Subprogram): New procedure
(Remove_Side_Effects): Replace calls to Etype (Exp) with use of the
Exp_Type constant computed when entering this subprogram.
(Known_Null): New function
(OK_To_Do_Constant_Replacement): New function
(Known_Non_Null): Check scope before believing Is_Known_Non_Null flag
(Side_Effect_Free): An attribute reference 'Input is not free of
side effect, unlike other attributes that are functions. (from code
reading).
(Remove_Side_Effects): Expressions that involve packed arrays or records
are copied at the point of reference, and therefore must be marked as
renamings of objects.
(Is_Predefined_Dispatching_Operation): Return false if the operation is
not a dispatching operation.
PR ada/18819
(Remove_Side_Effects): Lift enclosing type conversion nodes for
elementary types in all cases.
From-SVN: r111069
Thomas Quinot [Wed, 15 Feb 2006 09:39:54 +0000 (10:39 +0100)]
exp_pakd.ads: Fix typos in comments.
2006-02-13 Thomas Quinot <quinot@adacore.com>
* exp_pakd.ads: Fix typos in comments.
* exp_pakd.adb (Convert_To_PAT_Type): For the case of a bit packed
array reference that is an explicit dereference, mark the converted
(packed) array reference as analyzed to prevent a forthcoming
reanalysis from resetting its type to the original (non-packed) array
type.
From-SVN: r111068
Robert Dewar [Wed, 15 Feb 2006 09:39:41 +0000 (10:39 +0100)]
exp_intr.adb (Expand_Unc_Deallocation): Correct error of bad analyze call.
2006-02-13 Robert Dewar <dewar@adacore.com>
* exp_intr.adb (Expand_Unc_Deallocation): Correct error of bad analyze
call.
From-SVN: r111067
Pascal Obry [Wed, 15 Feb 2006 09:39:28 +0000 (10:39 +0100)]
expect.c (__gnat_expect_portable_execvp): New implementation.
2006-02-13 Pascal Obry <obry@adacore.com>
* expect.c (__gnat_expect_portable_execvp): New implementation. The
previous implementation was using the C runtime spawnve routine but
the corresponding wait was using directly the Win32 API. This was
causing some times a lock when waiting for an event using
WaitForSingleObject in __gnat_waitpid. This new implementation uses
the Win32 CreateProcess routine. Avoiding mixing C runtime and Win32
API fixes this problem.
From-SVN: r111066
Ed Schonberg [Wed, 15 Feb 2006 09:39:18 +0000 (10:39 +0100)]
exp_dist.adb (Copy_Specification): For access parameters...
2006-02-13 Ed Schonberg <schonberg@adacore.com>
* exp_dist.adb (Copy_Specification): For access parameters, copy
Null_Exclusion flag, which will have been set for stream subprograms
in
Ada2005 mode.
From-SVN: r111065
Javier Miranda [Wed, 15 Feb 2006 09:39:06 +0000 (10:39 +0100)]
exp_disp.ads, [...] (Expand_Dispatching_Call): If the controlling argument of the dispatching call is an abstract interface...
2006-02-13 Javier Miranda <miranda@adacore.com>
* exp_disp.ads, exp_disp.adb (Expand_Dispatching_Call): If the
controlling argument of the dispatching call is an abstract interface
class-wide type then we use it directly.
Check No_Dispatching_Calls restriction.
(Default_Prim_Op_Position): Remove the code that looks for the last
entity in the list of aliased subprograms. This code was wrong in
case of renamings.
(Fill_DT_Entry): Add assertion to avoid the use of this subprogram
when the source is compiled with the No_Dispatching_Calls restriction.
(Init_Predefined_Interface_Primitives): No need to inherit primitives
if we are compiling with restriction No_Dispatching_Calls.
(Make_Disp_XXX): Addition of assertion to avoid the use of all these
subprograms if we are compiling under No_Dispatching_Calls restriction.
(Make_DT): Generate a dispatch table with a single dummy entry if
we are compiling with the No_Dispatching_Calls restriction. In
addition, in this case we don't generate code that calls to the
following run-time subprograms: Set_Type_Kind, Inherit_DT.
(Make_Select_Specific_Data_Table): Add assertion to avoid the use
of this subprogram if compiling with the No_Dispatching_Calls
restriction.
(Expand_Type_Conversion): Instead of using the actual parameter,
the argument passed as parameter to the conversion function was
erroneously referenced by the expander.
(Ada_Actions): Addition of Get_Predefined_Prim_Op_Address,
Set_Predefined_Primitive_Op_Address and Set_Signature.
(Expand_Dispatching_Call): Generate call to
Get_Predefined_Prim_Op_Address for predefined primitives.
(Fill_DT_Entry): Generate call to Set_Predefined_Prim_Op_Address for
predefined primitives.
(Make_DT, Make_Secondary_DT): If the tagged type has no user defined
primitives we reserve one dummy entry to ensure that the tag does not
point to some memory that is associated with some other object. In
addition, remove all the old code that generated the assignments
associated with the signature of the dispatch table and replace them
by a call to the new subprogram Set_Signature.
(Set_All_DT_Position): Change the algorithm because now we have a
separate dispatch table associated with predefined primitive operations.
(Expand_Interface_Conversion): In case of non-static offset_to_top
add explicit dereference to get access to the object after the call
to displace the pointer to the object.
(Expand_Interface_Thunk): Modify the generation of the actual used
in the calls to the run-time function Offset_To_Top to fulfil its
new interface.
(Make_DT): Add the new actuals required to call Set_Offset_To_Top.
From-SVN: r111064
Ed Schonberg [Wed, 15 Feb 2006 09:38:53 +0000 (10:38 +0100)]
exp_ch9.adb (Expand_N_Protected_Type_Declaration): When creating the components of the corresponding record...
2006-02-13 Ed Schonberg <schonberg@adacore.com>
Hristian Kirtchev <kirtchev@adacore.com>
* exp_ch9.adb (Expand_N_Protected_Type_Declaration): When creating the
components of the corresponding record, take into account component
definitions that are access definitions.
(Expand_N_Asynchronous_Select): A delay unit statement rewritten as a
procedure is not considered a dispatching call and will be expanded
properly.
From-SVN: r111063
Ed Schonberg [Wed, 15 Feb 2006 09:38:39 +0000 (10:38 +0100)]
re PR ada/25885 (Tree checking failure on ASIS)
2006-02-13 Ed Schonberg <schonberg@adacore.com>
Javier Miranda <miranda@adacore.com>
Robert Dewar <dewar@adacore.com>
Gary Dismukes <dismukes@adacore.com>
* exp_ch6.adb (Expand_Inlined_Call): Handle calls to functions that
return unconstrained arrays.
Update comments.
(Expand_Call): An indirect call through an access parameter of a
protected operation is not a protected call.
Add circuit to raise CE in Ada 2005 mode following call
to Raise_Exception.
(Register_DT_Entry): Do nothing if
the run-time does not give support to abstract interfaces.
(Freeze_Subprogram): In case of dispatching operations, do not generate
code to register the operation in the dispatch table if the source
is compiled with No_Dispatching_Calls.
(Register_Predefined_DT_Entry): Generate code that calls the new
run-time subprogram Set_Predefined_Prim_Op_Address instead of
Set_Prim_Op_Address.
* sem_ch5.adb (Analyze_Assignment_Statement): Do not apply length checks
on array assignments if the right-hand side is a function call that has
been inlined. Check is performed on the assignment in the block.
(Process_Bounds): If bounds and range are overloaded, apply preference
rule for root operations to disambiguate, and diagnose true ambiguity.
(Analyze_Assignment): Propagate the tag for a class-wide assignment with
a tag-indeterminate right-hand side even when Expander_Active is True.
Needed to ensure that dispatching calls to T'Input are allowed and
get the tag of the target class-wide object.
* sem_ch6.adb (New_Overloaded_Entity): Handle entities that override
an inherited primitive operation that already overrides several
abstract interface primitives. For transitivity, the new entity must
also override all the abstract interface primitives covered by the
inherited overriden primitive.
Emit warning if new entity differs from homograph in same scope only in
that one has an access parameter and the other one has a parameter of
a general access type with the same designated type, at the same
position in the signature.
(Make_Inequality_Operator): Use source locations of parameters and
subtype marks from corresponding equality operator when creating the
tree structure for the implicit declaration of "/=". This does not
change anything in behaviour except that the decoration of the
components of the subtree created for "/=" allows ASIS to get the
string images of the corresponding identifiers.
(Analyze_Return_Statement): Remove '!' in warning message.
(Check_Statement_Sequence): Likewise.
(Analyze_Subprogram_Body): For an access parameter whose designated type
is an incomplete type imported through a limited_with clause, use the
type of the corresponding formal in the body.
(Check_Returns): Implicit return in No_Return procedure now raises
Program_Error with a compile time warning, instead of beging illegal.
(Has_Single_Return): Function returning unconstrained type cannot be
inlined if expression in unique return statement is not an identifier.
(Build_Body_To_Inline): It is possible to inline a function call that
returns an unconstrained type if all return statements in the function
return the same local variable. Subsidiary procedure Has_Single_Return
verifies that the body conforms to this restriction.
* sem_res.adb (Resolve_Equality_Op): If the operands do not have the
same type, and one of them is of an anonymous access type, convert
the other operand to it, so that this is a valid binary operation for
gigi.
(Resolve_Type_Conversion): Handle subtypes of protected types and
task types when accessing to the corresponding record type.
(Resolve_Allocator): Add '\' in 2-line warning message.
Remove '!' in warning message.
(Resolve_Call): Add '\' in 2-line warning message.
(Valid_Conversion): Likewise.
(Resolve_Overloaded_Selected_Component): If disambiguation succeeds, the
resulting type may be an access type with an implicit dereference.
Obtain the proper component from the designated type.
(Make_Call_Into_Operator): Handle properly a call to predefined equality
given by an expanded name with prefix Standard, when the operands are
of an anonymous access type.
(Check_Fully_Declared_Prefix): New procedure, subsidiary of Resolve_
Explicit_Dereference and Resolve_Selected_Component, to verify that the
prefix of the expression is not of an incomplete type. Allows full
diagnoses of all semantic errors.
(Resolve_Actuals): If the actual is an allocator whose directly
designated type is a class-wide interface we build an anonymous
access type to use it as the type of the allocator. Later, when
the subprogram call is expanded, if the interface has a secondary
dispatch table the expander will add a type conversion to force
the displacement of the pointer.
(Resolve_Call): If a function that returns an unconstrained type is
marked Inlined_Always and inlined, the call will be inlined and does
not require the creation of a transient scope.
(Check_Direct_Boolean_Op): Removed
(Resolve_Comparison_Op): Remove call to above
(Resolve_Equality_Op): Remove call to above
(Resolve_Logical_Op): Inline above, since this is only call.
(Valid_Conversion): Handle properly conversions between arrays of
convertible anonymous access types.
PR ada/25885
(Set_Literal_String_Subtype): If the lower bound is not static, wrap
the literal in an unchecked conversion, because GCC 4.x needs a static
value for a string bound.
From-SVN: r111062
Ed Schonberg [Wed, 15 Feb 2006 09:38:19 +0000 (10:38 +0100)]
exp_ch5.adb (Expand_Assign_Array): If the right-hand side is a string...
2006-02-13 Ed Schonberg <schonberg@adacore.com>
* exp_ch5.adb (Expand_Assign_Array): If the right-hand side is a
string, and the context requires a loop for the assignment (e.g.
because the left-hand side is packed), generate a unique name for the
temporary that holds the string, to prevent spurious name clashes.
From-SVN: r111061
Thomas Quinot [Wed, 15 Feb 2006 09:38:10 +0000 (10:38 +0100)]
exp_ch4.adb (Expand_Allocator_Expression): Pass Allocator => True to Make_Adjust_Call done for a newly-allocated object.
2006-02-13 Thomas Quinot <quinot@adacore.com>
Ed Schonberg <schonberg@adacore.com>
* exp_ch4.adb (Expand_Allocator_Expression): Pass Allocator => True to
Make_Adjust_Call done for a newly-allocated object.
* exp_ch7.ads, exp_ch7.adb (Expand_Cleanup_Actions): If the statements
in a subprogram are wrapped in a cleanup block, indicate that the
subprogram contains an inner block with an exception handler.
(Make_Adjust_Call): New Boolean formal Allocator indicating whether the
Adjust call is for a newly-allocated object. In that case we must not
assume that the finalization list chain pointers are correct (since they
come from a bit-for-bit copy of the original object's pointers) so if
the attach level would otherwise be zero (no change), we set it to 4
instead to cause the pointers to be reset to null.
* s-finimp.adb (Attach_To_Final_List): New attach level: 4, meaning
reset chain pointers to null.
From-SVN: r111060
Javier Miranda [Wed, 15 Feb 2006 09:38:00 +0000 (10:38 +0100)]
exp_ch3.adb (Component_Needs_Simple_Initialization): Add check for availability of RE_Interface_Tag.
2006-02-13 Javier Miranda <miranda@adacore.com>
Gary Dismukes <dismukes@adacore.com>
* exp_ch3.adb (Component_Needs_Simple_Initialization): Add check for
availability of RE_Interface_Tag.
(Build_Initialization_Call): Fix wrong access to the discriminant value.
(Freeze_Record_Type): Do not generate the tables associated with
timed and conditional dispatching calls through synchronized
interfaces if compiling under No_Dispatching_Calls restriction.
When compiling for Ada 2005, for a nonabstract
type with a null extension, call Make_Controlling_Function_Wrappers
and insert the wrapper function declarations and bodies (the latter
being appended as freeze actions).
(Predefined_Primitive_Bodies): Do not generate the bodies of the
predefined primitives associated with timed and conditional
dispatching calls through synchronized interfaces if we are
compiling under No_Dispatching_Calls.
(Build_Init_Procedure): Use RTE_Available to check if a run-time
service is available before generating a call.
(Make_Controlling_Function_Wrappers): New procedure.
(Expand_N_Full_Type_Declaration): Create a class-wide master for
access-to-limited-interfaces because they can be used to reference
tasks that implement such limited interface.
(Build_Offset_To_Top_Functions): Build the tree corresponding to the
procedure spec and body of the Offset_To_Top function that is generated
when the parent of a type with discriminants has secondary dispatch
tables.
(Init_Secondary_Tags): Handle the case in which the parent of the type
containing secondary dispatch tables has discriminants to generate the
correct arguments to call Set_Offset_To_Top.
(Build_Record_Init_Proc): Add call to Build_Offset_To_Top_Functions.
* a-tags.ads, a-tags.adb: (Check_Index): Removed.
Add Wide_[Wide_]Expanded_Name.
(Get_Predefined_Prim_Op_Address): New subprogram that provides exactly
the same functionality of Get_Prim_Op_Address but applied to predefined
primitive operations because the pointers to the predefined primitives
are now saved in a separate table.
(Parent_Size): Modified to get access to the separate table of primitive
operations or the parent type.
(Set_Predefined_Prim_Op_Address): New subprogram that provides the same
functionality of Set_Prim_Op_Address but applied to predefined primitive
operations.
(Set_Signature): New subprogram used to store the signature of a DT.
(Displace): If the Offset_To_Top value is not static then call the
function generated by the expander to get such value; otherwise use
the value stored in the table of interfaces.
(Offset_To_Top): The type of the actual has been changed to Address to
give the correct support to tagged types with discriminants. In this
case this value is stored just immediately after the tag field.
(Set_Offset_To_Top): Two new formals have been added to indicate if the
offset_to_top value is static and hence pass this value to the run-time
to store it in the table of interfaces, or else if this value is dynamic
and then pass to the run-time the address of a function that is
generated by the expander to provide this value for each object of the
type.
* rtsfind.ads (Default_Prin_Op_Count): Removed.
(Default_Prim_Op_Count): New entity
(Get_Predefined_Prim_Op_Address): New entity
(Set_Predefined_Prim_Op_Address): New entity
(RE_Set_Signature): New entity
From-SVN: r111059
Robert Dewar [Wed, 15 Feb 2006 09:37:43 +0000 (10:37 +0100)]
exp_attr.adb (Expand_N_Attribute_Reference, [...]): If attribute Mechanism_Code is applied to renamed subprogram...
2006-02-13 Robert Dewar <dewar@adacore.com>
* exp_attr.adb (Expand_N_Attribute_Reference, case Mechanism_Code): If
attribute Mechanism_Code is applied to renamed subprogram, modify
prefix to point to base subprogram.
Max/Min attributes now violate Restriction No_Implicit_Conditionals
* sinfo.ads: Document that Mechanism_Code cannot be applied to
renamed subprograms so that the front-end must replace the prefix
appropriately.
From-SVN: r111058
Ed Schonberg [Wed, 15 Feb 2006 09:37:33 +0000 (10:37 +0100)]
exp_aggr.adb (Build_Array_Aggr_Code): Rename variable "Others_Mbox_Present" to "Others_Box_Present" because the mbox...
2006-02-13 Ed Schonberg <schonberg@adacore.com>
* exp_aggr.adb (Build_Array_Aggr_Code): Rename variable
"Others_Mbox_Present" to "Others_Box_Present" because the mbox concept
does not exist in the Ada RM.
(Compatible_Int_Bounds): Determine whether two integer range bounds
are of equal length and have the same start and end values.
(Is_Int_Range_Bounds): Determine whether a node is an integer range.
(Build_Record_Aggr_Code): Perform proper sliding of a nested array
aggregate when it is part of an object declaration.
(Build_Record_Aggr_Code) If the aggregate ttype is a derived type that
constrains discriminants of its parent, add explicitly the discriminant
constraints of the ancestor by retrieving them from the
stored_constraint of the parent.
From-SVN: r111057
Quentin Ochem [Wed, 15 Feb 2006 09:37:21 +0000 (10:37 +0100)]
bindusg.adb: Updated documentation for -d and -D switches.
2006-02-13 Quentin Ochem <ochem@adacore.com>
Olivier Hainque <hainque@adacore.com>
* bindusg.adb: Updated documentation for -d and -D switches.
* raise.h (__gnat_set_globals): added new parameter for
Default_Stack_Size.
* init.c (__gnat_adjust_context_for_raise) <alpha-vms case>: Implement.
(__gnat_handle_vms_condition): Adjust context before raise.
(__gnat_install_handler): Restore the global vector setup for GCC
versions before 3.4, as the frame based circtuitry is not available
in this case.
(__gnat_set_globals): added a parameter default_stack_size
(__gl_default_stack_size): new variable.
From-SVN: r111056
Javier Miranda [Wed, 15 Feb 2006 09:37:10 +0000 (10:37 +0100)]
einfo.ads, einfo.adb (First_Tag_Component): Protect the frontend against errors in the source program...
2006-02-13 Javier Miranda <miranda@adacore.com>
Robert Dewar <dewar@adacore.com>
Ed Schonberg <schonberg@adacore.com>
* einfo.ads, einfo.adb (First_Tag_Component): Protect the frontend
against errors in the source program: a private types for which the
corresponding full type declaration is missing and pragma CPP_Virtual
is used.
(Is_Unchecked_Union): Check flag on Implementation_Base_Type.
(Is_Known_Null): New flag
(Has_Pragma_Pure): New flag
(No_Return): Present in all entities, set only for procedures
(Is_Limited_Type): A type whose ancestor is an interface is limited if
explicitly declared limited.
(DT_Offset_To_Top_Func): New attribute that is present in E_Component
entities. Only used for component marked Is_Tag. If present it stores
the Offset_To_Top function used to provide this value in tagged types
whose ancestor has discriminants.
* exp_ch2.adb: Update status of new Is_Known_Null flag
* sem_ch7.adb: Maintain status of new Is_Known_Null flag
* sem_cat.adb (Get_Categorization): Don't treat function as Pure in
the categorization sense if Is_Pure was set by pragma Pure_Function.
From-SVN: r111055
Robert Dewar [Wed, 15 Feb 2006 09:36:57 +0000 (10:36 +0100)]
opt.ads opt.adb: Add Ada_Version_Explicit_Config along with save/restore routines.
2006-02-13 Robert Dewar <dewar@adacore.com>
Serguei Rybin <rybin@adacore.com>
* opt.ads opt.adb: Add Ada_Version_Explicit_Config along with
save/restore routines.
Properly handle Ada_Version_Explicit and Ada_Version_Config, which
were not always properly handled previously.
Since we are changing the tree format anyway, also get rid of the
junk obsolete Immediate_Errors flag.
(Tree_Read): Change the way of reading Tree_Version_String - now we
read the version string from the tree even if its length is not the
same as the length of the version string computed from Gnatvsn.
(Search_Directory_Present): New Boolean flag for the compiler.
Define Tree_Version_String as a dynamic string.
(Default_Stack_Size): new variable, used to handle switch -d.
* par-prag.adb:
For pragma Ada_2005, remove stuff about setting Ada_Version_Explicit
only for main unit.
Add pragma Ada_2005 (synonym for Ada_05)
Properly handle Ada_Version_Explicit and Ada_Version_Config, which
were not always properly handled previously.
* directio.ads, ioexcept.ads, sequenio.ads, text_io.ads: Change
explicit Ada_95 to Ada_2005.
From-SVN: r111054
Robert Dewar [Wed, 15 Feb 2006 09:36:45 +0000 (10:36 +0100)]
debug.adb: Eliminate numeric switches for binder/gnatmake
2006-02-13 Robert Dewar <dewar@adacore.com>
Vincent Celier <celier@adacore.com>
* debug.adb: Eliminate numeric switches for binder/gnatmake
* switch-m.adb (Normalize_Compiler_Switches): Record numeric debug
switches for the compiler.
(Scan_Make_Switches): Do not allow numeric debug switches for gnatmake
(Scan_Make_Switches): When failing with an illegal switch, output an
error message with the full switch.
Eliminate numeric switches for binder/gnatmake
* switch.ads, switch.adb (Bad_Switch): New procedure
* switch-b.adb (Scan_Binder_Switches): Do not accept combined switches.
Remove 0-9 as debug flag character possibilities
-d is now controlling the primary stack size when its value is a
positive. Also add checks against invalid values, and support for kb,
mb. Ditto for -D switch.
From-SVN: r111053
Ed Schonberg [Wed, 15 Feb 2006 09:36:35 +0000 (10:36 +0100)]
checks.adb (Build_Discriminant_Checks): If the expression being checks is an aggregate retrieve the values of its...
2006-02-13 Ed Schonberg <schonberg@adacore.com>
Thomas Quinot <quinot@adacore.com>
* checks.adb (Build_Discriminant_Checks): If the expression being
checks is an aggregate retrieve the values of its discriminants to
generate the check, rather than creating a temporary and a reference
to it.
(Apply_Access_Check): Rewritten to handle new Is_Known_Null flag
(Install_Null_Excluding_Check): Ditto
(Selected_Length_Checks): Build actual subtype for the original Ck_Node,
not for the renamed object, so that the actual itype is attached in the
proper context.
From-SVN: r111052
Vincent Celier [Wed, 15 Feb 2006 09:36:23 +0000 (10:36 +0100)]
a-direct.adb (Duration_To_Time, [...]): New Unchecked_Conversion functions.
2006-02-13 Vincent Celier <celier@adacore.com>
* a-direct.adb (Duration_To_Time, OS_Time_To_Long_Integer): New
Unchecked_Conversion functions.
(Modification_Time): Use direct conversion of OS_Time to Calendar time
when OpenVMS returns False.
* a-dirval-mingw.adb, a-dirval-vms.adb, a-dirval.ads,
a-dirval.adb (OpenVMS): New Boolean function
From-SVN: r111051
Eric Botcazou [Wed, 15 Feb 2006 09:36:13 +0000 (10:36 +0100)]
s-stchop.adb (Stack_Check): Raise Storage_Error if the argument has wrapped around.
2006-02-13 Eric Botcazou <ebotcazou@adacore.com>
* s-stchop.adb (Stack_Check): Raise Storage_Error if the argument has
wrapped around.
From-SVN: r111050
Robert Dewar [Wed, 15 Feb 2006 09:36:02 +0000 (10:36 +0100)]
err_vars.ads: Suppress range checks for a couple of assignments which otherwise cause...
2006-02-13 Robert Dewar <dewar@adacore.com>
Eric Botcazou <ebotcazou@adacore.com>
* err_vars.ads: Suppress range checks for a couple of assignments
which otherwise cause validity checks with validity checking turned on.
Update comments.
* errout.adb (Error_Msg_Internal): Do not suppress warning messages.
Make message unconditional if it is a warning.
(Error_Msg_NEL): Always output warning messages.
Suppress range checks for a couple of assignments which otherwise
cause validity checks with validity checking turned on.
* errout.ads (Message Insertion Characters): Document that '!' is
implied by '?' in error messages.
* gnat1drv.adb: (Bad_Body): Remove '!' in warning message.
(Gnat1drv): Use a goto to end of main subprogram instead of
Exit_Program (E_Success) so that finalization can occur normally.
From-SVN: r111049
Robert Dewar [Wed, 15 Feb 2006 09:35:45 +0000 (10:35 +0100)]
erroutc.ads, [...] (Set_Message_Blank): Don't insert space after hyphen (small aesthetic change useful for a range of...
2006-02-13 Robert Dewar <dewar@adacore.com>
* erroutc.ads, erroutc.adb (Set_Message_Blank): Don't insert space
after hyphen (small aesthetic change useful for a range of numbers
using ^-^.
Suppress range checks for a couple of assignments which otherwise
cause validity checks with validity checking turned on.
* sem_ch13.adb (Analyze_Attribute_Definition_Clause, case Size):
Improvement in error message for object.
(Rep_Item_Too_Late): Remove '!' in warning message.
From-SVN: r111048
Robert Dewar [Wed, 15 Feb 2006 09:35:33 +0000 (10:35 +0100)]
gnatvsn.ads (Current_Year): New constant, used to easily update copyright on all GNAT tools.
2006-02-13 Robert Dewar <dewar@adacore.com>
* gnatvsn.ads (Current_Year): New constant, used to easily update
copyright on all GNAT tools.
* gnatls.adb, gnatname.adb, vms_conv.adb: Add 2006 to displayed
copyright notice.
From-SVN: r111047
Vincent Celier [Wed, 15 Feb 2006 09:35:23 +0000 (10:35 +0100)]
gnatlink.adb (Process_Binder_File): If -shared is specified, invoke gcc to link with option -shared-libgcc.
2006-02-13 Vincent Celier <celier@adacore.com>
* gnatlink.adb (Process_Binder_File): If -shared is specified, invoke
gcc to link with option -shared-libgcc.
(Gnatlink): Remove duplicate switches -shared-libgcc
From-SVN: r111046
Joel Brobecker [Wed, 15 Feb 2006 09:35:12 +0000 (10:35 +0100)]
bindgen.adb (Gen_Main_C): declare the ensure_reference variable as volatile...
2006-02-13 Joel Brobecker <brobecke@adacore.com>
* bindgen.adb (Gen_Main_C): declare the ensure_reference variable as
volatile, to tell the compiler to preserve this variable at any level
of optimization.
(Gen_Versions_Ada): Temporarily work around codegen bug.
From-SVN: r111045
Vincent Celier [Wed, 15 Feb 2006 09:34:58 +0000 (10:34 +0100)]
back_end.adb (Scan_Compiler_Arguments): Check if Search_Directory_Present is True and...
2006-02-13 Vincent Celier <celier@adacore.com>
* back_end.adb (Scan_Compiler_Arguments): Check if
Search_Directory_Present is True and, if it is, add the argument in
the source search directory path.
* switch-c.adb (Scan_Front_End_Switches): Accept switch "-I". Set
Search_Directory_Present to True.
From-SVN: r111044
Geert Bosch [Wed, 15 Feb 2006 09:34:48 +0000 (10:34 +0100)]
re PR ada/20753 (ACATS
ce3810b segfaults at runtime)
2006-02-13 Geert Bosch <bosch@adacore.com>
Gary Dismukes <dismukes@adacore.com>
* a-tifiio.adb (Put_Digits): Test Last against To'First - 1 instead of
0, since the lower bound of the actual string may be greater than one.
PR ada/20753
(Put): Fix condition to raise Layout_Error when invalid
layout is requested.
From-SVN: r111043
Robert Dewar [Wed, 15 Feb 2006 09:34:36 +0000 (10:34 +0100)]
rtsfind.adb, [...]: Minor code reorganization (not Present should be No)
2006-02-13 Robert Dewar <dewar@adacore.com>
* rtsfind.adb, exp_prag.adb, lib-writ.adb, par-labl.adb,
sem_case.adb: Minor code reorganization (not Present should be No)
From-SVN: r111042
Hristian Kirtchev [Wed, 15 Feb 2006 09:34:21 +0000 (10:34 +0100)]
a-tiboio.adb, [...]: New files.
2006-02-13 Hristian Kirtchev <kirtchev@adacore.com>
* a-tiboio.adb, a-tiboio.ads, a-wwboio.adb,
a-wwboio.ads, a-zzboio.adb, a-zzboio.ads: New files.
* impunit.adb, Makefile.rtl: Added new Ada 2005 units.
From-SVN: r111041
Pat Rogers [Wed, 15 Feb 2006 09:33:57 +0000 (10:33 +0100)]
a-rttiev.adb, [...]: New files.
2006-02-13 Pat Rogers <rogers@adacore.com>
* a-rttiev.adb, a-rttiev.ads: New files.
From-SVN: r111040
Nicolas Roche [Wed, 15 Feb 2006 09:33:38 +0000 (10:33 +0100)]
a-envvar.adb, [...]: New files.
2006-02-13 Nicolas Roche <roche@adacore.com>
* a-envvar.adb, a-envvar.ads: New files.
From-SVN: r111039
Robert Dewar [Wed, 15 Feb 2006 09:33:28 +0000 (10:33 +0100)]
a-ticoio.ads, [...]: Add use clause (moved here from spec)
2006-02-13 Robert Dewar <dewar@adacore.com>
* a-ticoio.ads, a-ticoio.adb: Add use clause (moved here from spec)
* a-coteio.ads, a-lcteio.ads, a-llctio.ads, a-scteio.ads: New files.
From-SVN: r111038
Eric Botcazou [Wed, 15 Feb 2006 09:33:16 +0000 (10:33 +0100)]
lang.opt: Wvariadic-macros: New option.
2006-02-13 Eric Botcazou <ebotcazou@adacore.com>
* lang.opt: Wvariadic-macros: New option.
Wold-style-definition: Likewise.
Wmissing-format-attribute: Likewise.
* misc.c (gnat_handle_option): New cases for -Wvariadic-macros,
-Wold-style-definition and -Wmissing-format-attribute.
From-SVN: r111037
Matthew Heaney [Wed, 15 Feb 2006 09:33:04 +0000 (10:33 +0100)]
a-cgcaso.adb, [...]: Implemented using heapsort instead of quicksort.
2006-02-13 Matthew Heaney <heaney@adacore.com>
* a-cgcaso.adb, a-cgaaso.adb: Implemented using heapsort instead of
quicksort.
From-SVN: r111036
Matthew Heaney [Wed, 15 Feb 2006 09:32:52 +0000 (10:32 +0100)]
a-rbtgso.adb, [...]: All explicit raise statements now include an exception message.
2006-02-13 Matthew Heaney <heaney@adacore.com>
* a-rbtgso.adb, a-crbtgo.adb, a-crbtgk.adb, a-coorse.adb,
a-cohama.adb, a-ciorse.adb, a-cihama.adb, a-cihase.adb,
a-cohase.adb: All explicit raise statements now include an exception
message.
* a-ciormu.ads, a-ciormu.adb, a-coormu.ads, a-coormu.adb
(Update_Element_Preserving_Key): renamed op to just Update_Element.
Explicit raise statements now include an exception message
* a-cihase.ads, a-cohase.ads: Removed comment.
* a-stboha.ads, a-stboha.adb, a-stfiha.ads, a-envvar.adb,
a-envvar.ads, a-swbwha.ads, a-swbwha.adb, a-swfwha.ads, a-szbzha.ads,
a-szbzha.adb, a-szfzha.ads: New files.
From-SVN: r111035
Arnaud Charlet [Wed, 15 Feb 2006 09:32:35 +0000 (10:32 +0100)]
s-parame-mingw.adb, [...]: Removed, replaced by s-parame.adb
* s-parame-mingw.adb, s-parame-linux.adb,
s-parame-solaris.adb: Removed, replaced by s-parame.adb
* s-parame-vxworks.ads: Fix typo.
* s-parame-vxworks.adb: New file.
* s-parame.adb: Version now used by all native platforms.
(Default_Stack_Size): Use 2 megs for default stack size and use
__gl_default_stack_size when available.
(Minimum_Stack_Size): Use 12K.
* s-taprop-mingw.adb: Set default stack size linker switch to 2megs.
(Create_Task): Refine implementation taking advantage of the XP stack
size support. On XP, we now create the thread using the flag
STACK_SIZE_PARAM_IS_A_RESERVATION.
* s-osinte-mingw.ads (Stack_Size_Param_Is_A_Reservation): New constant.
* sysdep.c (__gnat_is_windows_xp): New routine, returns 1 on Windows
XP and 0 on older Windows versions.
* interfac-vms.ads: Removed, no longer used.
From-SVN: r111034
Arnaud Charlet [Wed, 15 Feb 2006 09:32:25 +0000 (10:32 +0100)]
a-stwisu.adb, [...] (Super_Slice): Fix slice index.
* a-stwisu.adb, a-strsup.adb, a-stzsup.adb (Super_Slice): Fix slice
index.
* a-stwima.adb (To_Set): Add extra check when N = 0.
* g-regpat.adb: (Match_Simple_Operator): Avoid possible overflow.
From-SVN: r111033
Thomas Quinot [Wed, 15 Feb 2006 09:32:12 +0000 (10:32 +0100)]
ali-util.adb (Get_File_Checksum): Update to account for change in profile of Initialize_Scanner.
2006-02-13 Thomas Quinot <quinot@adacore.com>
Vincent Celier <celier@adacore.com>
Robert Dewar <dewar@adacore.com>
* ali-util.adb (Get_File_Checksum): Update to account for change in
profile of Initialize_Scanner.
* gprep.adb (Gnatprep): Update to account for change in profile of
Initialize_Scanner.
(Process_One_File): Same.
* lib.adb (Get_Code_Or_Source_Unit): New subprogram factoring the
common code between Get_Code_Unit and Get_Source_Unit. Reimplement
that behaviour using the new Unit information recorded in the source
files table, rather than going through all units every time.
(Get_Code_Unit): Reimplement in terms of Get_Code_Or_Source_Unit.
(Get_Source_Unit): Same.
* prepcomp.adb (Parse_Preprocessing_Data_File): Update to account for
change in profile of Initialize_Scanner.
(Prepare_To_Preprocess): Same.
* lib.ads: Fix typo in comment (templace -> template).
* prj-part.adb (Parse_Single_Project): Update to account for change in
profile of Initialize_Scanner.
* scn.adb (Initialize_Scanner): Account for change in profile of
Scng.Initialize_Scanner: set Current_Source_Unit in Scn instead of Scng.
Also record the association of the given Source_File_Index to the
corresponding Unit_Number_Type.
* scng.ads, scng.adb (Initialize_Scanner.Set_Reserved): Remove
procedure.
(Initialize_Scanner): Call Scans.Initialize_Ada_Keywords.
Remove Unit formal for generic scanner: this formal
is only relevant to Scn (the scanner instance used to parse Ada source
files), not to other instances. Update comment accordingly.
(Scan): Use new function Snames.Is_Keyword_Name.
* sinfo-cn.adb: Fix typo in comment.
* sinput.adb (Unit, Set_Unit): Accessors for new source file attribute
Unit.
* sinput.ads (Source_File_Record): New component Unit, used to capture
the unit identifier (if any) associated to a source file.
* sinput-c.adb, sinput-l.adb (Load_File): Initialize new component
Unit in Source_File_Record.
* sinput-p.adb (Source_File_Is_Subunit): Update to account for change
in profile of Initialize_Scanner.
* scans.adb (Initialize_Ada_Keywords): New procedure
* scans.ads (Initialize_Ada_Keywords): New procedure to initialize the
Ada keywords in the Namet table, without the need to call
Initialize_Scanner.
* snames.adb: Add pragma Ada_2005 (synonym for Ada_05)
(Is_Keyword_Name): New function
* snames.ads: Add subtype Configuration_Pragma_Names
Add pragma Ada_2005 (synonym for Ada_05)
(Is_Keyword_Name): New function
* snames.h: Add pragma Ada_2005 (synonym for Ada_05)
From-SVN: r111032
Arnaud Charlet [Wed, 15 Feb 2006 09:31:54 +0000 (10:31 +0100)]
2006-02-13 Arnaud Charlet <charlet@adacore.com>
Robert Dewar <dewar@adacore.com>
* a-exexpr.adb, a-exexpr-gcc.adb
(Process_Raise_Exception): Removed, merged with Propagate_Exception.
(Propagate_Exception): Now take extra From_Signal_Handler parameter.
Remove code unused for exception propagation for the compiler itself
from a-except.adb and update to still share separate packages.
* a-except.ads, a-except.adb: Ditto.
Add comments that this version is now used only by the compiler and
other basic tools. The full version that includes the Ada 2005 stuff
is in separate files a-except-2005.ads/adb. The reason is that we do
not want to cause bootstrap problems with compilers not recognizing
Wide_Wide_String.
Add exception reason code PE_Implicit_Return
Add new exception reason code (Null Exception_Id)
* a-except-2005.adb, a-except-2005.ads: New files.
* s-wchcon.ads: (Get_WC_Encoding_Method): New function.
* s-wchcon.adb: New file.
* Makefile.in (LIBGNAT_SRCS): Add tb-gcc.c.
(traceback.o deps): Likewise.
(SPARC/Solaris): Accept sparc[64|v9]-sun-solaris.
Activate build of GMEM instrumentation library on VMS targets.
(gnatlib-sjlj, gnatlib-zcx): Pass EH_MECHANISM to make gnatlib.
Use a-except-2005.ads/adb for all run-time library builds unless
specified otherwise.
[VMS] (LIBGNAT_TARGET_PAIRS_AUX1,2): Rename s-parame-vms.ads to
s-parame-vms-alpha.ads and add s-parame-vms-ia64.ads.
Use s-parame.adb on all native platforms.
Use s-parame-vxworks.adb on all vxworks platforms.
Add env.c env.h in LIBGNAT_SRCS
Add env.o in LIBGNAT_OBJS
(GNATMAKE_OBJS): Remove ctrl_c.o object.
(LIBGNAT_TARGET_PAIRS for x86-vxworks): Use an specialized version of
s-osinte.adb, s-tpopsp.adb, and system.ads for the run time that
supports VxWorks 6 RTPs.
(EXTRA_GNATRTL_NONTASKING_OBJS for x86-vxworks): Remove the use of
i-vxworks and i-vxwoio from the run time that supports VxWorks 6 RTPs.
* types.h, types.ads (Terminate_Program): New exception
Add comment on modifying multiple versions of a-except.adb when the
table of exception reasons is modified.
Add exception reason code PE_Implicit_Return
Add new exception reason code (Null Exception_Id)
* clean.adb (Initialize): Get the target parameters before checking
if target is OpenVMS. Move the OpenVMS specific code here from package
body elaboration code.
From-SVN: r111031
Richard Kenner [Wed, 15 Feb 2006 09:31:40 +0000 (10:31 +0100)]
re PR ada/26096 (Ada bootstrap fails in g-alleve.adb)
2006-02-13 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
Olivier Hainque <hainque@adacore.com>
Eric Botcazou <ebotcazou@adacore.com>
* ada-tree.h: (TYPE_UNCHECKED_UNION_P): Deleted.
* gigi.h (value_factor_p): Add prototype and description, now public.
* decl.c (gnat_to_gnu_field): Don't attempt BLKmode to integral type
promotion for field with rep clause if the associated size was proven
to be in error.
Expand comments describing attempts to use a packable type.
(gnat_to_gnu_entity) <E_Signed_Integer_Subtype,
E_Floating_Point_Subtype>: Inherit alias set of what we are making a
subtype of to ensure conflicts amongst all subtypes in a hierarchy,
necessary since these are not different types and pointers may
actually designate any subtype in this hierarchy.
(gnat_to_gnu_entity, case E_Record_Type): Always make fields for
discriminants but put them into record only if not Unchecked_Union;
pass flag to components_to_record showing Unchecked_Union.
(make_dummy_type): Use UNION_TYPE only if Unchecked_Union and no
components before variants; don't set TYPE_UNCHECKED_UNION_P.
(components_to_record): New argument UNCHECKED_UNION.
Remove special case code for Unchecked_Union and instead use main code
with small changes.
PR ada/26096
(gnat_to_gnu_entity) <E_Variable>: Do not initialize the
aligning variable with the expression being built, only its inner
field.
* trans.c (Handled_Sequence_Of_Statements_to_gnu): Remove call to
emit_sequence_entry_statements.
(emit_sequence_entry_statements, body_with_handlers_p): Delete.
(establish_gnat_vms_condition_handler): Move before
Subprogram_Body_to_gnu.
(Subprogram_Body_to_gnu): On VMS, establish_gnat_vms_condition_handler
for a subprogram if it has a foreign convention or is exported.
(Identifier_to_gnu): Manually unshare the DECL_INITIAL tree when it is
substituted for a CONST_DECL.
(tree_transform, case N_Aggregate): Remove code for UNION_TYPE and pass
Etype to assoc_to_constructor.
(assoc_to_constructor): New argument, GNAT_ENTITY; use it to ignore
discriminants of Unchecked_Union.
(TARGET_ABI_OPEN_VMS): Define to 0 if not defined, so that later uses
don't need cluttering preprocessor directives.
(establish_gnat_vms_condition_handler): New function. Establish the GNAT
condition handler as current in the compiled function.
(body_with_handlers_p): New function. Tell whether a given sequence of
statements node is attached to a package or subprogram body and involves
exception handlers possibly nested within inner block statements.
(emit_sequence_entry_statements): New function, to emit special
statements on entry of sequences when necessary. Establish GNAT
condition handler in the proper cases for VMS.
(Handled_Sequence_Of_Statements_to_gnu): Start block code with
emit_sequence_entry_statements.
* utils2.c (find_common_type): If both input types are BLKmode and
have a constant size, use the smaller one.
(build_simple_component_ref): Also match if FIELD and NEW_FIELD are
the same.
* utils.c (value_factor_p): Make public, to allow uses from other gigi
units.
(create_type_decl): Do not set the flag DECL_IGNORED_P for dummy types.
(convert, case UNION_TYPE): Remove special treatment for unchecked
unions.
PR ada/18659
(update_pointer_to): Update variants of pointer types to
unconstrained arrays by attaching the list of fields of the main
variant.
From-SVN: r111030
Pascal Obry [Wed, 15 Feb 2006 09:30:39 +0000 (10:30 +0100)]
adaint.h, adaint.c (DIR_SEPARATOR): Use _T() macro for Unicode support.
2006-02-13 Pascal Obry <obry@adacore.com>
Nicolas Roche <roche@adacore.com>
Arnaud Charlet <charlet@adacore.com>
* adaint.h, adaint.c (DIR_SEPARATOR): Use _T() macro for Unicode
support.
(__gnat_try_lock): Add unicode support by using a specific section on
Windows.
(__gnat_get_current_dir): Idem.
(__gnat_open_read): Idem.
(__gnat_open_rw): Idem.
(__gnat_open_create): Idem.
(__gnat_create_output_file): Idem.
(__gnat_open_append): Idem.
(__gnat_open_new): Idem.
(__gnat_file_time_name): Idem.
(__gnat_set_file_time_name): Idem.
(__gnat_stat): Idem.
(win32_no_block_spawn): Idem.
(__gnat_locate_exec_on_path): Idem.
(__gnat_opendir): New routine.
(__gnat_closedir): Idem.
(__gnat_readdir): Add new parameter length (pointer to int). Update
implementation to use it and add specific Win32 code for Unicode
support.
(__gnat_get_env_value_ptr): Remove. Replaced by __gnat_getenv in env.c
(__gnat_set_env_value): Remove. Replaced by __gnat_setenv in env.c
(convert_addresses): Do not define this dummy routine on VMS.
* mingw32.h (GNAT_UNICODE_SUPPORT): New definition, if set the GNAT
runtime Unicode support will be activated.
(S2WS): String to Wide-String conversion. This version just copy a
string in non Unicode version.
(WS2S): Wide-String to String conversion. This version just copy a
string in non Unicode version.
* g-dirope.adb: (Close): Now import __gnat_closedir from adaint.c.
(Open): Now import __gnat_opendir from adaint.c.
(Read): Change the implementation to support unicode characters. It is
not possible to use strlen() on Windows as this version supports only
standard ASCII characters. So the length of the directory entry is now
returned from the imported __gnat_readdir routine.
Update copyright notice.
* s-crtl-vms64.ads, s-crtl.ads: (closedir): Moved to adaint.c.
(opendir): Moved to adaint.c.
* g-os_lib.adb (Copy_Time_Stamp): Fix off-by-one range computation.
(Get_Directory): Fix wrong indexing.
(Getenv): replace __gnat_get_env_value_ptr from adaint.c by
__gnat_getenv from env.c
(Setenv): replace __gnat_set_env_value from adaint.c by __gnat_setenv
from env.c
* env.h, env.c: New file.
* s-scaval.adb (Initialize): Replace __gnat_get_env_value_ptr from
adaint.c by __gnat_getenv from env.c
* s-shasto.adb (Initialize): replace __gnat_get_env_value_ptr from
adaint.c by __gnat_getenv from env.c
* Make-lang.in: Add env.o in the list of C object needed by gnat1
and gnatbind.
Update dependencies.
From-SVN: r111029
Nicolas Setton [Wed, 15 Feb 2006 09:30:24 +0000 (10:30 +0100)]
adadecode.h, [...]: (__gnat_decode): Improve support of types.
2006-02-13 Nicolas Setton <setton@adacore.com>
* adadecode.h, adadecode.c: (__gnat_decode): Improve support of types.
(get_encoding): New subprogram. Extracts the encodings from an encoded
Ada name.
From-SVN: r111028
Pascal Obry [Wed, 15 Feb 2006 09:30:12 +0000 (10:30 +0100)]
system-mingw.ads (Underlying_Priorities): Update the priority mapping table to take advantage of the 16 priority levels...
2006-02-13 Pascal Obry <obry@adacore.com>
* system-mingw.ads (Underlying_Priorities): Update the priority mapping
table to take advantage of the 16 priority levels available on Windows
2000 and XP. On NT4 there are only 7 priority levels, this is properly
supported by this new mapping.
From-SVN: r111027
Pascal Obry [Wed, 15 Feb 2006 09:29:59 +0000 (10:29 +0100)]
s-taprop-posix.adb, [...] (Create_Task): Remove task adjustment code.
2006-02-13 Pascal Obry <obry@adacore.com>
* s-taprop-posix.adb, s-taprop-vxworks.adb, s-taprop-tru64.adb,
s-taprop-lynxos.adb, s-taprop-irix.adb, s-taprop-hpux-dce.adb,
s-taprop-linux.adb, s-taprop-solaris.adb,
s-taprop-vms.adb (Create_Task): Remove task adjustment code. This
adjustement is already done when calling this routine.
From-SVN: r111026
Arnaud Charlet [Wed, 15 Feb 2006 09:29:34 +0000 (10:29 +0100)]
s-osinte-darwin.adb, [...] (sigset_t_ptr): Removed, replaced by anonymous access type.
* s-osinte-darwin.adb, s-osinte-darwin.ads, s-osinte-vxworks.ads,
s-osinte-solaris.ads, s-osinte-linux.ads, s-osinte-freebsd.ads,
s-osinte-solaris-posix.ads, s-osinte-lynxos-3.ads, s-osinte-lynxos.ads,
s-osinte-tru64.ads, s-osinte-aix.ads, s-osinte-irix.ads,
s-osinte-hpux-dce.ads, s-osinte-linux-hppa.ads,
s-osinte-linux-alpha.ads, s-inmaop-posix.adb (sigset_t_ptr): Removed,
replaced by anonymous access type.
(pthread_sigmask): Now take an access sigset_t
* s-osinte-hpux.ads: Ditto.
(pthread_mutex_t, pthread_cond_t): Update definitions to support
properly 32 and 64 bit ABIs.
From-SVN: r111025
Hristian Kirtchev [Wed, 15 Feb 2006 09:29:17 +0000 (10:29 +0100)]
a-tasatt.adb, [...]: Remove redundant with clauses.
2006-02-13 Hristian Kirtchev <kirtchev@adacore.com>
* a-tasatt.adb, s-osinte-lynxos-3.adb, s-osinte-lynxos.adb,
s-osinte-aix.adb, s-interr-sigaction.adb, s-asthan-vms-alpha.adb,
s-interr-vms.adb, s-intman-vms.adb, s-interr-vxworks.adb,
s-intman-vxworks.adb, s-asthan-vms-alpha.adb, a-ztexio.adb,
a-reatim.adb, a-taside.adb, a-textio.adb, a-witeio.adb, prj-attr.adb,
s-intman-irix.adb, s-intman-solaris.adb, s-intman-posix.adb,
a-dynpri.adb, a-interr.adb, g-dynhta.adb, s-asthan.adb, s-interr.adb,
s-pooglo.adb, s-pooloc.adb, s-poosiz.adb, s-tasren.adb, s-tasuti.adb,
s-tataat.adb, s-tpobop.adb: Remove redundant with clauses.
From-SVN: r111024
Robert Dewar [Wed, 15 Feb 2006 09:28:43 +0000 (10:28 +0100)]
s-gloloc-mingw.adb, [...]: Minor reformatting.
2006-02-13 Robert Dewar <dewar@adacore.com>
* s-gloloc-mingw.adb, a-cgaaso.ads, a-stzmap.adb, a-stzmap.adb,
a-stzmap.ads, a-ztcoio.adb, a-ztedit.adb, a-ztedit.ads, a-ztenau.adb,
a-ztenau.ads, a-colien.adb, a-colien.ads, a-colire.adb, a-colire.ads,
a-comlin.adb, a-decima.adb, a-decima.ads, a-direio.adb, a-direio.adb,
a-direio.adb, a-direio.ads, a-ngcoty.adb, a-ngcoty.ads, a-nuflra.adb,
a-nuflra.ads, a-sequio.adb, a-sequio.ads, a-sequio.ads, a-storio.ads,
a-stream.ads, a-ststio.adb, a-ststio.adb, a-ststio.ads, a-ststio.ads,
a-stwima.adb, a-stwima.adb, a-stwima.ads, a-stwise.adb, a-teioed.adb,
a-teioed.ads, a-ticoau.adb, a-ticoau.ads, a-ticoio.adb, a-tasatt.ads,
a-tideau.adb, a-tideau.ads, a-tideio.adb, a-tideio.ads, a-tienau.adb,
a-tienau.ads, a-tienio.adb, a-tienio.ads, a-tifiio.ads, a-tiflau.adb,
a-tiflau.ads, a-tiflio.adb, a-tiflio.adb, a-tiflio.ads, a-tigeau.ads,
a-tiinau.adb, a-tiinau.ads, a-tiinio.adb, a-tiinio.ads, a-timoio.adb,
a-timoio.ads, a-titest.adb, a-titest.ads, a-wtcoio.adb, a-wtdeau.adb,
a-wtdeau.ads, a-wtdeio.adb, a-wtdeio.ads, a-wtedit.adb, a-wtedit.adb,
a-wtedit.ads, a-wtenau.adb, a-wtenau.ads, a-wtenau.ads, a-wtenio.adb,
a-wtenio.ads, a-wtfiio.adb, a-wtfiio.ads, a-wtflau.adb, a-wtflau.ads,
a-wtflio.adb, a-wtflio.adb, a-wtflio.ads, a-wtgeau.ads, a-wtinau.adb,
a-wtinau.ads, a-wtinio.adb, a-wtinio.ads, a-wtmoau.adb, a-wtmoau.ads,
a-wtmoio.adb, a-wtmoio.ads, xref_lib.adb, xref_lib.ads, xr_tabls.adb,
g-boubuf.adb, g-boubuf.ads, g-cgideb.adb, g-io.adb, gnatdll.adb,
g-pehage.adb, i-c.ads, g-spitbo.adb, g-spitbo.ads, mdll.adb,
mlib-fil.adb, mlib-utl.adb, mlib-utl.ads, prj-env.adb, prj-tree.adb,
prj-tree.ads, prj-util.adb, s-arit64.adb, s-asthan.ads, s-auxdec.adb,
s-auxdec.ads, s-chepoo.ads, s-direio.adb, s-direio.ads, s-errrep.adb,
s-errrep.ads, s-fileio.adb, s-fileio.ads, s-finroo.adb, s-finroo.ads,
s-gloloc.adb, s-gloloc.ads, s-io.adb, s-io.ads, s-rpc.adb,
s-rpc.ads, s-shasto.ads, s-sequio.adb, s-stopoo.ads, s-stratt.adb,
s-stratt.ads, s-taasde.adb, s-taasde.ads, s-tadert.adb, s-sequio.ads,
s-taskin.adb, s-tasque.adb, s-tasque.ads, s-wchjis.ads, makegpr.adb,
a-coinve.adb, a-cidlli.adb, eval_fat.adb, exp_dist.ads, exp_smem.adb,
fmap.adb, g-dyntab.ads, g-expect.adb, lib-xref.ads, osint.adb,
par-load.adb, restrict.adb, sinput-c.ads, a-cdlili.adb,
system-vms.ads, system-vms-zcx.ads, system-vms_64.ads: Minor
reformatting.
From-SVN: r111023
Jose Ruiz [Wed, 15 Feb 2006 09:28:13 +0000 (10:28 +0100)]
a-taster.adb (Current_Task_Fallback_Handler): Document why explicit protection against race conditions is not needed.
2006-02-13 Jose Ruiz <ruiz@adacore.com>
* a-taster.adb (Current_Task_Fallback_Handler): Document why explicit
protection against race conditions is not needed.
(Set_Dependents_Fallback_Handler): Add mutual exclusive access to the
fallback handler.
(Set_Specific_Handler): Add mutual exclusive access to the specific
handler.
(Specific_Handler): Add mutual exclusive access for retrieving the
specific handler.
* s-tarest.adb (Task_Wrapper): Add mutual exclusive access to the fall
back handler.
* s-taskin.ads (Common_ATCB): Remove pragma Atomic for
Fall_Back_Handler and Specific_Handler.
* s-tassta.adb (Task_Wrapper): Add mutual exclusive access to the task
termination handlers.
Set two different owerflow depending on the maximal stack size.
* s-solita.adb (Task_Termination_Handler_T): Document why explicit
protection against race conditions is not needed when executing the
task termination handler.
From-SVN: r111022
Arnaud Charlet [Wed, 15 Feb 2006 09:27:57 +0000 (10:27 +0100)]
a-intnam-os2.ads, [...]: Removed, no longer used.
* a-intnam-os2.ads, a-intnam-unixware.ads, g-soccon-unixware.ads,
g-soliop-unixware.ads, i-os2err.ads, i-os2lib.adb, i-os2lib.ads,
i-os2syn.ads, i-os2thr.ads, s-intman-irix-athread.adb,
s-osinte-aix-fsu.ads, s-osinte-fsu.adb, s-parame-os2.adb,
s-osinte-irix-athread.ads, s-osinte-linux-fsu.ads, s-osinte-os2.adb,
s-osinte-os2.ads, s-osinte-solaris-fsu.ads, s-osinte-unixware.adb,
s-osinte-unixware.ads, s-osprim-os2.adb, s-taprop-irix-athread.adb,
s-taprop-os2.adb, s-tasinf-irix-athread.adb, s-tasinf-irix-athread.ads,
s-taspri-os2.ads, system-os2.ads, system-unixware.ads: Removed,
no longer used.
From-SVN: r111021
Paolo Bonzini [Wed, 15 Feb 2006 09:15:56 +0000 (09:15 +0000)]
cfg.c (dump_flow_info): Get dump flags as an additional parameter.
2006-02-15 Paolo Bonzini <bonzini@gnu.org>
* cfg.c (dump_flow_info): Get dump flags as an additional parameter.
(debug_flow_info): Pass it.
* alias.c (rest_of_handle_cfg): Adjust calls to dump_flow_info.
* bb-reorder.c (reorder_basic_blocks): Likewise.
* cfgcleanup.c (rest_of_handle_jump2): Likewise.
* cse.c (rest_of_handle_cse, rest_of_handle_cse2): Likewise.
* flow.c (life_analysis, recompute_reg_usage): Likewise.
* gcse.c (gcse_main, bypass_jumps): Likewise.
* ifcvt.c (rest_of_handle_if_conversion): Likewise.
* local-alloc.c (rest_of_handle_local_alloc): Likewise.
* loop-init.c (rtl_loop_init, rtl_loop_done): Likewise.
* profile.c (compute_branch_probabilities, branch_prob): Likewise.
* rtl.h (dump_flow_info): Adjust prototype.
* tracer.c (rest_of_handle_tracer, tracer): Likewise.
* var-tracking.c (variable_tracking_main): Likewise.
* passes.c (execute_todo): Obey TDF_BLOCKS for RTL.
* tree-dump.c (enable_rtl_dump_file): Enable the details and blocks
options.
From-SVN: r111020
Marcin Dalecki [Wed, 15 Feb 2006 07:58:22 +0000 (08:58 +0100)]
tree-ssa-dom.c (dom_thread_across_edge): fix tag expression construction.
2006-02-15 Marcin Dalecki <martin@dalecki.de>
* tree-ssa-dom.c (dom_thread_across_edge): fix tag expression
construction.
From-SVN: r111019
Jakub Jelinek [Wed, 15 Feb 2006 07:46:39 +0000 (08:46 +0100)]
re PR libgomp/25938 (libgomp installs header files in version and target independent location)
PR libgomp/25938
PR libgomp/25984
fortran/
* Make-lang.in (install-finclude-dir): New goal.
(fortran.install-common): Depend on install-finclude-dir.
* lang-specs.h: If not -nostdinc, add -I finclude.
libgomp/
* Makefile.am (fincludedir): New variable.
(nodist_include_HEADERS): Remove Fortran files.
(nodist_finclude_HEADERS): New variable.
* Makefile.in: Regenerated.
From-SVN: r111018
Matthias Klose [Wed, 15 Feb 2006 03:47:02 +0000 (03:47 +0000)]
charset, [...]: Remove empty directories.
2006-02-15 Matthias Klose <doko@debian.org>
* gnu/java/nio/charset, gnu/java/net/protocol/file,
gnu/regexp: Remove empty directories.
From-SVN: r111015
Jerry DeLisle [Wed, 15 Feb 2006 01:25:03 +0000 (01:25 +0000)]
MAINTAINERS: Add self to fortran 95 maintainers.
2006-02-14 Jerry DeLisle <jvdelisle@gcc.gnu.org>
* MAINTAINERS: Add self to fortran 95 maintainers.
From-SVN: r111009
GCC Administrator [Wed, 15 Feb 2006 00:17:33 +0000 (00:17 +0000)]
Daily bump.
From-SVN: r111005
Zdenek Dvorak [Tue, 14 Feb 2006 23:55:22 +0000 (23:55 +0000)]
re PR tree-optimization/26209 (Specific code causes g++ 4.1.0 dominance ICE when compiled with -O3)
PR tree-optimization/26209
* tree-ssa-loop.c (pass_scev_cprop): Add TODO_cleanup_cfg.
* tree-cfgcleanup.c (cleanup_control_flow): Remove dead
eh edges.
* tree-cfg.c (replace_uses_by): Do not alter cfg.
From-SVN: r110999
Thomas Koenig [Tue, 14 Feb 2006 22:35:10 +0000 (22:35 +0000)]
MAINTAINERS (Write After Approval): Remove myself.
2006-02-16 Thomas Koenig <Thomas.Koenig@online.de>
* MAINTAINERS (Write After Approval): Remove myself.
(Language Front End Maintainers): Add myself as
fortran 95 maintainer.
From-SVN: r110998
Roger Sayle [Tue, 14 Feb 2006 21:08:52 +0000 (21:08 +0000)]
re PR middle-end/23670 (Fold does not fold (a|b)&b to b likewise for (a&b) | b to b)
PR middle-end/23670
* fold-const.c (fold_binary) <BIT_IOR_EXPR>: Optimize (X&Y)|Y into
(X,Y) and the corresponding symmetry related transformations.
(fold_binary) <BIT_AND_EXPR>: Likewise, optimize (X|Y)&Y into
(X,Y) and its symmetry related transformations.
* gcc.dg/tree-ssa/andor-2.c: New test case.
From-SVN: r110997
Thomas Koenig [Tue, 14 Feb 2006 19:25:36 +0000 (19:25 +0000)]
re PR fortran/25045 ([4.1 only] DIM argument of PRODUCT is not optional)
2006-02-14 Thomas Koenig <Thomas.Koenig@online.de>
PR fortran/25045
* check.c (dim_check): Perform all checks if dim is optional.
(gfc_check_minloc_maxloc): Use dim_check and dim_rank_check
to check dim argument.
(check_reduction): Likewise.
2006-02-14 Thomas Koenig <Thomas.Koenig@online.de>
PR fortran/25045
* optional_dim.f90: New test.
From-SVN: r110994
Tobias Schlüter [Tue, 14 Feb 2006 19:21:07 +0000 (20:21 +0100)]
re PR fortran/26277 (false warning about unused label for a warning used in err=)
fortran/
PR fortran/26277
* io.c (match_ltag): Mark label as referenced.
testsuite/
PR fortran/26277
* gfortran.dg/label_4.f90: New.
From-SVN: r110993
Roger Sayle [Tue, 14 Feb 2006 17:54:41 +0000 (17:54 +0000)]
dojump.c (do_compare_rtx_and_jump): Also handle multi-word GTU and GEU.
* dojump.c (do_compare_rtx_and_jump): Also handle multi-word GTU
and GEU.
From-SVN: r110992
Adam Nemet [Tue, 14 Feb 2006 17:45:55 +0000 (17:45 +0000)]
* simplify-rtx.c (simplify_subreg): Combine SUBREG and TRUNCATE.
From-SVN: r110990
Rainer Orth [Tue, 14 Feb 2006 16:46:04 +0000 (16:46 +0000)]
re PR bootstrap/26053 (Misdetection of COMDAT group support with GNU as and non-GNU ld)
PR bootstrap/26053
* configure.ac (HAVE_COMDAT_GROUP): Don't assume non-GNU linkers
support COMDAT group.
* configure: Regenerate.
From-SVN: r110985
Jakub Jelinek [Tue, 14 Feb 2006 16:38:03 +0000 (17:38 +0100)]
re PR fortran/25162 (Issue with OpenMP COPYIN and gfortran)
gcc/fortran/
2006-02-14 Jakub Jelinek <jakub@redhat.com>
Richard Henderson <rth@redhat.com>
Diego Novillo <dnovillo@redhat.com>
* invoke.texi: Document -fopenmp.
* gfortran.texi (Extensions): Document OpenMP.
Backport from gomp-
20050608-branch
* trans-openmp.c: Call build_omp_clause instead of
make_node when creating OMP_CLAUSE_* trees.
(gfc_trans_omp_reduction_list): Remove argument 'code'.
Adjust all callers.
* trans.h (build4_v): Define.
* trans-openmp.c: Call build4_v to create OMP_PARALLEL nodes.
Call build3_v to create OMP_SECTIONS nodes.
PR fortran/25162
* openmp.c (gfc_match_omp_variable_list): Call gfc_set_sym_referenced
on all symbols added to the variable list.
* openmp.c (gfc_match_omp_clauses): Fix check for non-INTRINSIC
procedure symbol in REDUCTION.
* trans-openmp.c (gfc_trans_omp_array_reduction): Use gfc_add
for MINUS_EXPR OMP_CLAUSE_REDUCTION_CODE.
* trans-openmp.c (gfc_trans_omp_do): Add PBLOCK argument. If PBLOCK
is non-NULL, evaluate INIT/COND/INCR and chunk size expressions in
that statement block.
(gfc_trans_omp_parallel_do): Pass non-NULL PBLOCK to gfc_trans_omp_do
for non-ordered non-static combined loops.
(gfc_trans_omp_directive): Pass NULL PBLOCK to gfc_trans_omp_do.
* openmp.c: Include target.h and toplev.h.
(gfc_match_omp_threadprivate): Emit diagnostic if target does
not support TLS.
* Make-lang.in (fortran/openmp.o): Add dependencies on
target.h and toplev.h.
* trans-decl.c (gfc_get_fake_result_decl): Set GFC_DECL_RESULT.
* trans-openmp.c (gfc_omp_privatize_by_reference): Make
DECL_ARTIFICIAL vars predetermined shared except GFC_DECL_RESULT.
(gfc_omp_disregard_value_expr): Handle GFC_DECL_RESULT.
(gfc_trans_omp_variable): New function.
(gfc_trans_omp_variable_list, gfc_trans_omp_reduction_list): Use it.
* trans.h (GFC_DECL_RESULT): Define.
* trans-openmp.c (gfc_omp_firstprivatize_type_sizes): New function.
* f95-lang.c (LANG_HOOKS_OMP_FIRSTPRIVATIZE_TYPE_SIZES): Define.
* trans.h (gfc_omp_firstprivatize_type_sizes): New prototype.
* trans-openmp.c (gfc_omp_privatize_by_reference): Return
true if a pointer has GFC_DECL_SAVED_DESCRIPTOR set.
(gfc_trans_omp_array_reduction, gfc_trans_omp_reduction_list): New
functions.
(gfc_trans_omp_clauses): Add WHERE argument. Call
gfc_trans_omp_reduction_list rather than gfc_trans_omp_variable_list
for reductions.
(gfc_trans_omp_do, gfc_trans_omp_parallel, gfc_trans_omp_parallel_do,
gfc_trans_omp_parallel_sections, gfc_trans_omp_parallel_workshare,
gfc_trans_omp_sections, gfc_trans_omp_single): Adjust
gfc_trans_omp_clauses callers.
* openmp.c (omp_current_do_code): New var.
(gfc_resolve_omp_do_blocks): New function.
(gfc_resolve_omp_parallel_blocks): Call it.
(gfc_resolve_do_iterator): Add CODE argument. Don't propagate
predetermination if argument is !$omp do or !$omp parallel do
iteration variable.
* resolve.c (resolve_code): Call gfc_resolve_omp_do_blocks
for EXEC_OMP_DO. Adjust gfc_resolve_do_iterator caller.
* fortran.h (gfc_resolve_omp_do_blocks): New prototype.
(gfc_resolve_do_iterator): Add CODE argument.
* trans.h (gfc_omp_predetermined_sharing,
gfc_omp_disregard_value_expr, gfc_omp_private_debug_clause): New
prototypes.
(GFC_DECL_COMMON_OR_EQUIV, GFC_DECL_CRAY_POINTEE): Define.
* trans-openmp.c (gfc_omp_predetermined_sharing,
gfc_omp_disregard_value_expr, gfc_omp_private_debug_clause): New
functions.
* trans-common.c (build_equiv_decl, build_common_decl,
create_common): Set GFC_DECL_COMMON_OR_EQUIV flag on the decls.
* trans-decl.c (gfc_finish_cray_pointee): Set GFC_DECL_CRAY_POINTEE
on the decl.
* f95-lang.c (LANG_HOOKS_OMP_PREDETERMINED_SHARING,
LANG_HOOKS_OMP_DISREGARD_VALUE_EXPR,
LANG_HOOKS_OMP_PRIVATE_DEBUG_CLAUSE): Define.
* openmp.c (resolve_omp_clauses): Remove extraneous comma.
* symbol.c (check_conflict): Add conflict between cray_pointee and
threadprivate.
* openmp.c (gfc_match_omp_threadprivate): Fail if
gfc_add_threadprivate returned FAILURE.
(resolve_omp_clauses): Diagnose Cray pointees in SHARED,
{,FIRST,LAST}PRIVATE and REDUCTION clauses and Cray pointers in
{FIRST,LAST}PRIVATE and REDUCTION clauses.
* resolve.c (omp_workshare_flag): New variable.
(resolve_function): Diagnose use of non-ELEMENTAL user defined
function in WORKSHARE construct.
(resolve_code): Cleanup forall_save use. Make sure omp_workshare_flag
is set to correct value in different contexts.
* openmp.c (resolve_omp_clauses): Replace %s with '%s' when printing
variable name.
(resolve_omp_atomic): Likewise.
PR fortran/24493
* scanner.c (skip_free_comments): Set at_bol at the beginning of the
loop, not before it.
(skip_fixed_comments): Handle ! comments in the middle of line here
as well.
(gfc_skip_comments): Use skip_fixed_comments for FIXED_FORM even if
not at BOL.
(gfc_next_char_literal): Fix expected canonicalized *$omp string.
* trans-openmp.c (gfc_trans_omp_do): Use make_node and explicit
initialization to build OMP_FOR instead of build.
* trans-decl.c (gfc_gimplify_function): Invoke
diagnose_omp_structured_block_errors.
* trans-openmp.c (gfc_trans_omp_master): Use OMP_MASTER.
(gfc_trans_omp_ordered): Use OMP_ORDERED.
* gfortran.h (gfc_resolve_do_iterator, gfc_resolve_blocks,
gfc_resolve_omp_parallel_blocks): New prototypes.
* resolve.c (resolve_blocks): Renamed to...
(gfc_resolve_blocks): ... this. Remove static.
(gfc_resolve_forall): Adjust caller.
(resolve_code): Only call gfc_resolve_blocks if code->block != 0
and not for EXEC_OMP_PARALLEL* directives. Call
gfc_resolve_omp_parallel_blocks for EXEC_OMP_PARALLEL* directives.
Call gfc_resolve_do_iterator if resolved successfully EXEC_DO
iterator.
* openmp.c: Include pointer-set.h.
(omp_current_ctx): New variable.
(gfc_resolve_omp_parallel_blocks, gfc_resolve_do_iterator): New
functions.
* Make-lang.in (fortran/openmp.o): Depend on pointer-set.h.
* openmp.c (gfc_match_omp_clauses): For max/min/iand/ior/ieor,
look up symbol if it exists, use its name instead and, if it is not
INTRINSIC, issue diagnostics.
* parse.c (parse_omp_do): Handle implied end do properly.
(parse_executable): If parse_omp_do returned ST_IMPLIED_ENDDO,
return it instead of continuing.
* trans-openmp.c (gfc_trans_omp_critical): Update for changed
operand numbering.
(gfc_trans_omp_do, gfc_trans_omp_parallel, gfc_trans_omp_parallel_do,
gfc_trans_omp_parallel_sections, gfc_trans_omp_parallel_workshare,
gfc_trans_omp_sections, gfc_trans_omp_single): Likewise.
* trans.h (gfc_omp_privatize_by_reference): New prototype.
* f95-lang.c (LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Redefine
to gfc_omp_privatize_by_reference.
* trans-openmp.c (gfc_omp_privatize_by_reference): New function.
* trans-stmt.h (gfc_trans_omp_directive): Add comment.
* openmp.c (gfc_match_omp_variable_list): Add ALLOW_COMMON argument.
Disallow COMMON matching if it is set.
(gfc_match_omp_clauses, gfc_match_omp_flush): Adjust all callers.
(resolve_omp_clauses): Show locus in error messages. Check that
variable types in reduction clauses are appropriate for reduction
operators.
* resolve.c (resolve_symbol): Don't error if a threadprivate module
variable isn't SAVEd.
* trans-openmp.c (gfc_trans_omp_do): Put count into BLOCK, not BODY.
Fix typo in condition. Fix DOVAR initialization.
* openmp.c (gfc_match_omp_clauses): Match min/iand/ior/ieor
rather than .min. etc.
* trans-openmpc.c (omp_not_yet): Remove.
(gfc_trans_omp_parallel_do): Keep listprivate clause on parallel.
Force creation of BIND_EXPR around the workshare construct.
(gfc_trans_omp_parallel_sections): Likewise.
(gfc_trans_omp_parallel_workshare): Likewise.
* types.def (BT_I16, BT_FN_I16_VPTR_I16,
BT_FN_BOOL_VPTR_I16_I16, BT_FN_I16_VPTR_I16_I16): Add.
* trans-openmp.c (gfc_trans_omp_clauses): Create OMP_CLAUSE_DEFAULT.
(gfc_trans_omp_code): New function.
(gfc_trans_omp_do): Use it, remove omp_not_yet uses.
(gfc_trans_omp_parallel, gfc_trans_omp_single): Likewise.
(gfc_trans_omp_sections): Likewise. Only treat empty last section
specially if lastprivate clause is present.
* f95-lang.c (gfc_init_builtin_functions): Create BUILT_IN_TRAP
builtin.
* trans-openmp.c (gfc_trans_omp_variable_list): Update for
OMP_CLAUSE_DECL name change.
(gfc_trans_omp_do): Likewise.
* trans-openmp.c (gfc_trans_omp_clauses): Create OMP_CLAUSE_REDUCTION
clauses.
(gfc_trans_omp_atomic): Build OMP_ATOMIC instead of expanding
sync builtins directly.
(gfc_trans_omp_single): Build OMP_SINGLE statement.
* trans-openmp.c (gfc_trans_add_clause): New.
(gfc_trans_omp_variable_list): Take a tree code and build the clause
node here. Link it to the head of a list.
(gfc_trans_omp_clauses): Update to match.
(gfc_trans_omp_do): Use gfc_trans_add_clause.
* trans-openmp.c (gfc_trans_omp_clauses): Change second argument to
gfc_omp_clauses *. Use gfc_evaluate_now instead of creating
temporaries by hand.
(gfc_trans_omp_atomic, gfc_trans_omp_critical): Use buildN_v macros.
(gfc_trans_omp_do): New function.
(gfc_trans_omp_master): Dont' check for gfc_trans_code returning NULL.
(gfc_trans_omp_parallel): Adjust gfc_trans_omp_clauses caller.
Use buildN_v macros.
(gfc_trans_omp_parallel_do, gfc_trans_omp_parallel_sections,
gfc_trans_omp_parallel_workshare, gfc_trans_omp_sections,
gfc_trans_omp_single, gfc_trans_omp_workshare): New functions.
(gfc_trans_omp_directive): Use them.
* parse.c (parse_omp_do): Allow new_st.op == EXEC_NOP.
* openmp.c (resolve_omp_clauses): Check for list items present
in multiple clauses.
(resolve_omp_do): Check that iteration variable is not THREADPRIVATE
and is not present in any clause variable lists other than PRIVATE
or LASTPRIVATE.
* gfortran.h (symbol_attribute): Add threadprivate bit.
(gfc_common_head): Add threadprivate member, change use_assoc
and saved into char to save space.
(gfc_add_threadprivate): New prototype.
* symbol.c (check_conflict): Handle threadprivate.
(gfc_add_threadprivate): New function.
(gfc_copy_attr): Copy threadprivate.
* trans-openmp.c (gfc_trans_omp_clauses): Avoid creating a temporary
if IF or NUM_THREADS is constant. Create OMP_CLAUSE_SCHEDULE and
OMP_CLAUSE_ORDERED.
* resolve.c (resolve_symbol): Complain if a THREADPRIVATE symbol
outside a module and not in COMMON has is not SAVEd.
(resolve_equivalence): Ensure THREADPRIVATE objects don't get
EQUIVALENCEd.
* trans-common.c: Include target.h and rtl.h.
(build_common_decl): Set DECL_TLS_MODEL if THREADPRIVATE.
* trans-decl.c: Include rtl.h.
(gfc_finish_var_decl): Set DECL_TLS_MODEL if THREADPRIVATE.
* dump-parse-tree.c (gfc_show_attr): Handle THREADPRIVATE.
* Make-lang.in (fortran/trans-decl.o): Depend on $(RTL_H).
(fortran/trans-common.o): Depend on $(RTL_H) and $(TARGET_H).
* openmp.c (gfc_match_omp_variable_list): Ensure COMMON block
is from current namespace.
(gfc_match_omp_threadprivate): Rewrite.
(resolve_omp_clauses): Check some clause restrictions.
* module.c (ab_attribute): Add AB_THREADPRIVATE.
(attr_bits): Add THREADPRIVATE.
(mio_symbol_attribute, mio_symbol_attribute): Handle threadprivate.
(load_commons, write_common, write_blank_common): Adjust for type
change of saved, store/load threadprivate bit from the integer
as well.
* types.def (BT_FN_UINT_UINT): New.
(BT_FN_VOID_UINT_UINT): Remove.
* trans-openmp.c (gfc_trans_omp_clauses, gfc_trans_omp_barrier,
gfc_trans_omp_critical, gfc_trans_omp_flush, gfc_trans_omp_master,
gfc_trans_omp_ordered, gfc_trans_omp_parallel): New functions.
(gfc_trans_omp_directive): Use them.
* openmp.c (expr_references_sym): Add SE argument, don't look
into SE tree.
(is_conversion): New function.
(resolve_omp_atomic): Adjust expr_references_sym callers. Handle
promoted expressions.
* trans-openmp.c (gfc_trans_omp_atomic): New function.
(gfc_trans_omp_directive): Call it.
* f95-lang.c (builtin_type_for_size): New function.
(gfc_init_builtin_functions): Initialize synchronization and
OpenMP builtins.
* types.def: New file.
* Make-lang.in (f95-lang.o): Depend on $(BUILTINS_DEF) and
fortran/types.def.
* trans-openmp.c: Rename GOMP_* tree codes into OMP_*.
* dump-parse-tree.c (show_symtree): Don't crash if ns->proc_name
is NULL.
* dump-parse-tree.c (gfc_show_namelist, gfc_show_omp_node): New
functions.
(gfc_show_code_node): Call gfc_show_omp_node for EXEC_OMP_* nodes.
* parse.c (parse_omp_do): Call pop_state before next_statement.
* openmp.c (expr_references_sym, resolve_omp_atomic, resolve_omp_do):
New functions.
(gfc_resolve_omp_directive): Call them.
* match.c (match_exit_cycle): Issue error if EXIT or CYCLE statement
leaves an OpenMP structured block or if EXIT terminates !$omp do
loop.
* Make-lang.in (F95_PARSER_OBJS): Add fortran/openmp.o.
(F95_OBJS): Add fortran/trans-openmp.o.
(fortran/trans-openmp.o): Depend on $(GFORTRAN_TRANS_DEPS).
* lang.opt: Add -fopenmp option.
* options.c (gfc_init_options): Initialize it.
(gfc_handle_option): Handle it.
* gfortran.h (ST_OMP_ATOMIC, ST_OMP_BARRIER, ST_OMP_CRITICAL,
ST_OMP_END_CRITICAL, ST_OMP_END_DO, ST_OMP_END_MASTER,
ST_OMP_END_ORDERED, ST_OMP_END_PARALLEL, ST_OMP_END_PARALLEL_DO,
ST_OMP_END_PARALLEL_SECTIONS, ST_OMP_END_PARALLEL_WORKSHARE,
ST_OMP_END_SECTIONS, ST_OMP_END_SINGLE, ST_OMP_END_WORKSHARE,
ST_OMP_DO, ST_OMP_FLUSH, ST_OMP_MASTER, ST_OMP_ORDERED,
ST_OMP_PARALLEL, ST_OMP_PARALLEL_DO, ST_OMP_PARALLEL_SECTIONS,
ST_OMP_PARALLEL_WORKSHARE, ST_OMP_SECTIONS, ST_OMP_SECTION,
ST_OMP_SINGLE, ST_OMP_THREADPRIVATE, ST_OMP_WORKSHARE): New
statement codes.
(OMP_LIST_PRIVATE, OMP_LIST_FIRSTPRIVATE, OMP_LIST_LASTPRIVATE,
OMP_LIST_COPYPRIVATE, OMP_LIST_SHARED, OMP_LIST_COPYIN,
OMP_LIST_PLUS, OMP_LIST_REDUCTION_FIRST, OMP_LIST_MULT,
OMP_LIST_SUB, OMP_LIST_AND, OMP_LIST_OR, OMP_LIST_EQV,
OMP_LIST_NEQV, OMP_LIST_MAX, OMP_LIST_MIN, OMP_LIST_IAND,
OMP_LIST_IOR, OMP_LIST_IEOR, OMP_LIST_REDUCTION_LAST, OMP_LIST_NUM):
New OpenMP variable list types.
(gfc_omp_clauses): New typedef.
(gfc_get_omp_clauses): Define.
(EXEC_OMP_CRITICAL, EXEC_OMP_DO, EXEC_OMP_FLUSH, EXEC_OMP_MASTER,
EXEC_OMP_ORDERED, EXEC_OMP_PARALLEL, EXEC_OMP_PARALLEL_DO,
EXEC_OMP_PARALLEL_SECTIONS, EXEC_OMP_PARALLEL_WORKSHARE,
EXEC_OMP_SECTIONS, EXEC_OMP_SINGLE, EXEC_OMP_WORKSHARE,
EXEC_OMP_ATOMIC, EXEC_OMP_BARRIER, EXEC_OMP_END_NOWAIT,
EXEC_OMP_END_SINGLE): New OpenMP gfc_exec_op codes.
(struct gfc_code): Add omp_clauses, omp_name, omp_namelist
and omp_bool fields to ext union.
(flag_openmp): Declare.
(gfc_free_omp_clauses, gfc_resolve_omp_directive): New prototypes.
* scanner.c (openmp_flag, openmp_locus): New variables.
(skip_free_comments, skip_fixed_comments, gfc_next_char_literal):
Handle OpenMP directive lines and conditional compilation magic
comments.
* parse.h (COMP_OMP_STRUCTURED_BLOCK): New compile state.
* parse.c (decode_omp_directive, parse_omp_do, parse_omp_atomic,
parse_omp_structured_block): New functions.
(next_free, next_fixed): Parse OpenMP directives.
(case_executable, case_exec_markers, case_decl): Add ST_OMP_*
codes.
(gfc_ascii_statement): Handle ST_OMP_* codes.
(parse_executable): Rearrange the loop slightly, so that
parse_omp_do can return next_statement.
* match.h (gfc_match_omp_eos, gfc_match_omp_atomic,
gfc_match_omp_barrier, gfc_match_omp_critical, gfc_match_omp_do,
gfc_match_omp_flush, gfc_match_omp_master, gfc_match_omp_ordered,
gfc_match_omp_parallel, gfc_match_omp_parallel_do,
gfc_match_omp_parallel_sections, gfc_match_omp_parallel_workshare,
gfc_match_omp_sections, gfc_match_omp_single,
gfc_match_omp_threadprivate, gfc_match_omp_workshare,
gfc_match_omp_end_nowait, gfc_match_omp_end_single): New prototypes.
* resolve.c (resolve_blocks): Ignore EXEC_OMP_* block directives.
(resolve_code): Call gfc_resolve_omp_directive on EXEC_OMP_*
directives.
* trans.c (gfc_trans_code): Call gfc_trans_omp_directive for
EXEC_OMP_* directives.
* st.c (gfc_free_statement): Handle EXEC_OMP_* statement freeing.
* trans-stmt.h (gfc_trans_omp_directive): New prototype.
* openmp.c: New file.
* trans-openmp.c: New file.
gcc/testsuite/
2006-02-14 Jakub Jelinek <jakub@redhat.com>
Diego Novillo <dnovillo@redhat.com>
Uros Bizjak <uros@kss-loka.si>
* gfortran.dg/gomp: New directory.
libgomp/
2006-02-14 Jakub Jelinek <jakub@redhat.com>
* testsuite/libgomp.fortran/vla7.f90: Add -w to options.
Remove tests for returning assumed character length arrays.
Co-Authored-By: Diego Novillo <dnovillo@redhat.com>
Co-Authored-By: Richard Henderson <rth@redhat.com>
Co-Authored-By: Uros Bizjak <uros@kss-loka.si>
From-SVN: r110984
Roger Sayle [Tue, 14 Feb 2006 16:26:16 +0000 (16:26 +0000)]
re PR middle-end/26279 (ICE in do_compare_rtx_and_jump)
PR middle-end/26279
PR middle-end/26280
PR middle-end/26283
* dojump.c (do_compare_rtx_and_jump): Handle multi-word LE.
From-SVN: r110983
Volker Reichelt [Tue, 14 Feb 2006 15:54:34 +0000 (15:54 +0000)]
call.c (standard_conversion): Return NULL instead of 0.
* call.c (standard_conversion): Return NULL instead of 0.
(build_user_type_conversion_1): Likewise.
(tourney): Likewise.
* decl.c (redeclaration_error_message): Likewise.
* error.c (language_to_string): Likewise.
From-SVN: r110976
Daniel Berlin [Tue, 14 Feb 2006 14:49:13 +0000 (14:49 +0000)]
re PR tree-optimization/26260 (PTA is slow with large structs (hits clisp))
2006-02-14 Daniel Berlin <dberlin@dberlin.org>
Fix PR tree-optimization/26260
* doc/invoke.texi (max-fields-for-field-sensitive): Document
param.
* params.h (MAX_FIELDS_FOR_FIELD_SENSITIVE): New.
* params.def (PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE): Ditto.
* tree-ssa-structalias.c (create_variable_info_for): Use
MAX_FIELDS_FOR_FIELD_SENSITIVE.
From-SVN: r110972
Zdenek Dvorak [Tue, 14 Feb 2006 13:51:51 +0000 (13:51 +0000)]
Add forgotten file.
From-SVN: r110965
Zdenek Dvorak [Tue, 14 Feb 2006 12:22:11 +0000 (13:22 +0100)]
invoke.texi (-fprefetch-loop-arrays, [...]): Document.
* doc/invoke.texi (-fprefetch-loop-arrays, -fprefetch-loop-arrays-rtl):
Document.
* tree-ssa-loop-niter.c (number_of_iterations_ne,
number_of_iterations_lt, number_of_iterations_cond): Remember the shape
of the ending condition.
* tree-ssa-loop-manip.c: Include params.h.
(build_if_stmt, can_unroll_loop_p, determine_exit_conditions,
tree_unroll_loop): New functions.
* tree-pass.h (pass_loop_prefetch): Declare.
* loop.c (rest_of_handle_loop_optimize): Test for
-fprefetch-loop-arrays-rtl.
* tree-scalar-evolution.h (affine_iv): Moved to tree-flow.h.
* timevar.def (TV_TREE_PREFETCH): New timevar.
* tree-ssa-loop.c (tree_ssa_loop_prefetch, gate_tree_ssa_loop_prefetch,
pass_loop_prefetch): New.
* tree-cfgcleanup.c: Include tree-scalar-evolution.h.
(cleanup_tree_cfg_loop): Call scev_reset.
* common.opt (fprefetch-loop-arrays-rtl): Add.
* tree-ssa-loop-prefetch.c: New file.
* tree-outof-ssa.c (struct value_expr_d): Add expr_vars field.
(new_temp_expr_table): Initialize expr_vars.
(free_temp_expr_table): Cleanup expr_vars.
(check_replaceable, find_replaceable_in_bb): Prevent accumulating
expressions from being merged into one.
* tree-flow.h (affine_iv): Moved from tree-scalar-evolution.h.
(struct tree_niter_desc): Add control, bound and cmp fields.
(tree_ssa_prefetch_arrays, can_unroll_loop_p, tree_unroll_loop):
Declare.
* Makefile.in (tree-ssa-loop-prefetch.o): Add.
(tree-cfgcleanup.o): Add SCEV_H dependency.
(tree-ssa-loop-manip.o): Add PARAMS_H dependency.
* passes.c (init_optimization_passes): Add pass_loop_prefetch.
From-SVN: r110964
Richard Guenther [Tue, 14 Feb 2006 09:58:57 +0000 (09:58 +0000)]
re PR tree-optimization/26258 (Wrong alias information for struct addresses in PHIs)
2006-02-14 Richard Guenther <rguenther@suse.de>
PR tree-optimization/26258
* tree-ssa-structalias.c (find_func_aliases): Handle aggregates
in PHI argument processing.
* gcc.dg/torture/pr26258.c: New testcase.
From-SVN: r110963
Paolo Bonzini [Tue, 14 Feb 2006 09:36:24 +0000 (09:36 +0000)]
[multiple changes]
2006-02-14 Paolo Bonzini <bonzini@gnu.org>
Sync from src:
2005-12-27 Leif Ekblad <leif@rdos.net>
* configure.in: Add support for RDOS target.
* configure: Regenerate.
2006-02-14 Paolo Bonzini <bonzini@gnu.org>
Andreas Schwab <schwab@suse.de>
* configure: Regenerate.
config:
2006-02-14 Paolo Bonzini <bonzini@gnu.org>
Andreas Schwab <schwab@suse.de>
* acx.m4 (NCN_STRICT_CHECK_TARGET_TOOLS): Use correct program name.
(ACX_CHECK_INSTALLED_TARGET_TOOL): Likewise, and always set $1.
Co-Authored-By: Andreas Schwab <schwab@suse.de>
From-SVN: r110961