diff options
author | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-07-20 13:06:01 +0000 |
---|---|---|
committer | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-07-20 13:06:01 +0000 |
commit | d2b860b429d3193f405e86e718daad04dd400807 (patch) | |
tree | d18d20b93c356cb855681e19f4cae6b09a57c073 /gcc/ada/exp_util.ads | |
parent | acecfc91539df33c7fa9f6d8601efb4cb1437bb6 (diff) | |
download | gcc-d2b860b429d3193f405e86e718daad04dd400807.tar.gz |
2009-07-20 Robert Dewar <dewar@adacore.com>
* vms_data.ads: Minor reformatting
* einfo.ads, einfo.adb (Parent_Subtype): Now allowed on record subtype,
applies to base type.
(Parent_Subtype): Now allowed on record subtype, applies to base type
* exp_ch5.adb (Expand_Assign_Record): Handle Componentwise_Assignment
for case of fully repped tagged type.
(Make_Tag_Ctrl_Assignment): Set Componentwise_Assignment and avoid
tag save/restore for fully repped tagged type case.
* exp_util.ads, exp_util.adb (Is_Fully_Repped_Tagged_Type): New function
* fe.h (Is_Fully_Repped_Tagged_Type): New function
* sem_ch13.adb (Analyze_Recorrd_Representation_Clause): Check for
overlap of tagged type components with parent type if parent type is
fully repped.
* sinfo.ads, sinfo.adb (Componentwise_Assignment): New flag
* sem_res.adb (Check_No_Direct_Boolean_Operators): Remove handling of
comparisons.
(Resolve_Comparison_Operators): Remove No_Direct_Boolean_Operators check
(Resolve_Equality_Op): Remove No_Direct_Boolean_Operators check
* gnat_rm.texi: Restriction No_Direct_Boolean_Operators includes only
logical operators (AND/OR/XOR), not comparison operators.
* sprint.ads: Minor reformatting
2009-07-20 Ed Schonberg <schonberg@adacore.com>
* sem_intr.adb (Check_Intrinsic_Call): For Import_Value and related
intrinsics, check that argument is a string literal, rather than
checking for staticness.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@149811 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/exp_util.ads')
-rw-r--r-- | gcc/ada/exp_util.ads | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/ada/exp_util.ads b/gcc/ada/exp_util.ads index c310a211aa3..1f3c9e8a211 100644 --- a/gcc/ada/exp_util.ads +++ b/gcc/ada/exp_util.ads @@ -466,6 +466,15 @@ package Exp_Util is -- False otherwise. True for an empty list. It is an error to call this -- routine with No_List as the argument. + function Is_Fully_Repped_Tagged_Type (T : Entity_Id) return Boolean; + -- Tests given type T, and returns True if T is a non-discriminated tagged + -- type which has a record representation clause that specifies the layout + -- of all the components, including recursively components in all parent + -- types. We exclude discriminated types for convenience, it is extremely + -- unlikely that the special processing associated with the use of this + -- routine is useful for the case of a discriminated type, and testing for + -- component overlap would be a pain. + function Is_Library_Level_Tagged_Type (Typ : Entity_Id) return Boolean; -- Return True if Typ is a library level tagged type. Currently we use -- this information to build statically allocated dispatch tables. |