diff options
author | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-08-04 13:13:59 +0000 |
---|---|---|
committer | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-08-04 13:13:59 +0000 |
commit | fd68eaab3678112594a8ad686aba36d941f28a2c (patch) | |
tree | eebd9dc812e5d2083834dcc4dc232956690041f3 /gcc/ada/exp_util.ads | |
parent | e0b2c764476478c895fcf755ea8ad7562a834f6e (diff) | |
download | ppe42-gcc-fd68eaab3678112594a8ad686aba36d941f28a2c.tar.gz ppe42-gcc-fd68eaab3678112594a8ad686aba36d941f28a2c.zip |
2011-08-04 Hristian Kirtchev <kirtchev@adacore.com>
* a-tags.ads, a-tags.adb (Unregister_Tag): New routine.
Remove the external tag of a tagged type from the internal hash table.
* exp_ch7.adb (Build_Cleanup_Statements): Update the comment on the
expanded usage of the routine. Strenghten the check for Is_Master. Add
processing for tagged types.
(Build_Finalizer): Create all the necessary lists used in finalizer
creation when the processed context is a package that may contain
tagged types.
(Expand_Cleanup_Actions): Rename the call to Has_Controlled_Objects to
Requires_Cleanup_Actions.
(Expand_N_Package_Body): Package bodies may need clean up code
depending on whether they contain tagged types.
(Expand_N_Package_Declaration): Package declarations may need clean up
code depending on whether they contain tagged types.
(Unregister_Tagged_Types): New routine. Search through a list of
declarations or statements, looking for non-abstract Ada tagged types.
For each such type, generate code to unregister the external tag.
* exp_util.adb (Has_Controlled_Objects (Node_Id)): Renamed to
Requires_Cleanup_Actions.
(Requires_Cleanup_Actions (List_Id, Boolean)): New routine. Search
through a list of declarations or statements looking for non-abstract
Ada tagged types or controlled objects.
* exp_util.ads (Has_Controlled_Objects (Node_Id)): Renamed to
Requires_Cleanup_Actions.
(Has_Controlled_Objects (List_Id, Boolean)): Removed.
* rtsfind.ads: Add entry RE_Unregister_Tag to tables RE_Id and
RE_Unit_Table.
2011-08-04 Vincent Celier <celier@adacore.com>
* prj-env.adb (For_All_Source_Dirs.For_Project): Check if project Prj
has Ada sources, not project Project, because if the root project
Project has no sources of its own, all projects will be deemed without
sources.
2011-08-04 Gary Dismukes <dismukes@adacore.com>
* bindgen.adb (Gen_Adainit_Ada): Move the generation of the declaration
of the No_Param_Proc acc-to-subp type used for initialization of
__gnat_finalize_library_objects so that it's declared at library level
rather than nested inside of the adainit routine.
2011-08-04 Javier Miranda <miranda@adacore.com>
* exp_disp.adb (Make_DT): Generate code to check the external tag ONLY
if the tagged type has a representation clause which specifies its
external tag.
2011-08-04 Ed Schonberg <schonberg@adacore.com>
* einfo.ads, einfo.adb (Has_Private_Ancestor): now a flag on types.
Remove previous procedure with that name.
* sem_ch3.adb (Build_Derived_Record_Type): set Has_Private_Ancestor
when appropriate.
* sem_aggr.adb (Resolve_Extension_Aggregate): if the ancestor part is a
subtype mark, the ancestor cannot have unknown discriminants.
(Resolve_Record_Aggregate): if the type has invisible components
because of a private ancestor, the aggregate is illegal.
2011-08-04 Vincent Celier <celier@adacore.com>
* switch-m.adb (Normalize_Compiler_Switches): Recognize and take into
account switches -gnat2005, -gnat12 and -gnat2012.
2011-08-04 Bob Duff <duff@adacore.com>
* s-tasdeb.ads: Minor comment fix.
2011-08-04 Arnaud Charlet <charlet@adacore.com>
* gnatlink.adb (Gnatlink): Pass -gnat83/95/05/12 switch to gcc in
CodePeer mode.
* switch.ads, switch.adb (Is_Language_Switch): New function.
2011-08-04 Vincent Celier <celier@adacore.com>
* switch-c.adb: Minor comment addition.
2011-08-04 Vincent Celier <celier@adacore.com>
* vms_conv.adb (Process_Argument): Fail graciously when qualifier
ending with '=' is followed by a space (missing file name).
2011-08-04 Pascal Obry <obry@adacore.com>
* g-regist.ads: Fix size of HKEY on x86_64-windows.
2011-08-04 Ed Schonberg <schonberg@adacore.com>
* sem_ch12.adb (Analyze_Associations): New routine
Check_Overloaded_Formal_Subprogram to reject a formal package when
there is a named association or a box initialisation for an overloaded
formal subprogram of the corresponding generic.
2011-08-04 Yannick Moy <moy@adacore.com>
* alfa.ads (ALFA_Xref_Record): add component for type of entity
* get_alfa.adb, put_alfa.adb: Read and write new component of
cross-reference.
* lib-xref-alfa.adb (Collect_ALFA): generate new component.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@177378 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/exp_util.ads')
-rw-r--r-- | gcc/ada/exp_util.ads | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/gcc/ada/exp_util.ads b/gcc/ada/exp_util.ads index 67cdceba0b9..a60f40ffd32 100644 --- a/gcc/ada/exp_util.ads +++ b/gcc/ada/exp_util.ads @@ -486,17 +486,6 @@ package Exp_Util is function Has_Access_Constraint (E : Entity_Id) return Boolean; -- Given object or type E, determine if a discriminant is of an access type - function Has_Controlled_Objects (N : Node_Id) return Boolean; - -- Given a node N, determine if it has a declarative or a statement part - -- and whether those lists contain at least one controlled object. - - function Has_Controlled_Objects - (L : List_Id; - For_Package : Boolean) return Boolean; - -- Given a list, determine whether L contains at least one controlled - -- object. Flag For_Package should be set when the list comes from a - -- package spec or body. - function Has_Following_Address_Clause (D : Node_Id) return Boolean; -- D is the node for an object declaration. This function searches the -- current declarative part to look for an address clause for the object @@ -738,6 +727,15 @@ package Exp_Util is -- terms is scalar. This is true for scalars in the Ada sense, and for -- packed arrays which are represented by a scalar (modular) type. + function Requires_Cleanup_Actions (N : Node_Id) return Boolean; + -- Given a node N, determine whether its declarative and/or statement list + -- contains one of the following: + -- + -- 1) controlled objects + -- 2) library-level tagged types + -- + -- The above cases require special actions on scope exit. + function Safe_Unchecked_Type_Conversion (Exp : Node_Id) return Boolean; -- Given the node for an N_Unchecked_Type_Conversion, return True if this -- is an unchecked conversion that Gigi can handle directly. Otherwise |