summaryrefslogtreecommitdiffstats
path: root/gcc/ada/exp_util.ads
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2011-08-04 13:13:59 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2011-08-04 13:13:59 +0000
commitfd68eaab3678112594a8ad686aba36d941f28a2c (patch)
treeeebd9dc812e5d2083834dcc4dc232956690041f3 /gcc/ada/exp_util.ads
parente0b2c764476478c895fcf755ea8ad7562a834f6e (diff)
downloadppe42-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.ads20
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
OpenPOWER on IntegriCloud