diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2019-12-16 10:34:27 +0000 |
---|---|---|
committer | Pierre-Marie de Rodat <pmderodat@gcc.gnu.org> | 2019-12-16 10:34:27 +0000 |
commit | 2cee58d81076c99ab3db3305c1850bf79fa12f17 (patch) | |
tree | 0161b2c951d4dd1cdd64eee3a940052271d687ed /gcc/ada/sem_util.ads | |
parent | 0bba838d7f4e9b851416d463d077b28aff0b561f (diff) | |
download | gcc-2cee58d81076c99ab3db3305c1850bf79fa12f17.zip gcc-2cee58d81076c99ab3db3305c1850bf79fa12f17.tar.gz gcc-2cee58d81076c99ab3db3305c1850bf79fa12f17.tar.bz2 |
[Ada] Fully propagate representation aspects through renaming
2019-12-16 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* sem_ch8.adb (Analyze_Object_Renaming): Set Atomic, Independent
and Volatile_Full_Access aspects on the entity of the renaming
the same way as the Volatile aspect is set.
* sem_util.ads (Is_Atomic_Object_Entity): Move declaration to...
(Is_Independent_Object): New function.
(Is_Volatile_Full_Access_Object): Likewise.
* sem_util.adb (Is_Atomic_Object_Entity): ...here.
(Prefix_Has_Atomic_Components): Minor tweak.
(Is_Atomic_Object): Test Is_Atomic on the Etype uniformly.
(Is_Atomic_Or_VFA_Object): Call Is_Volatile_Full_Access_Object.
(Is_Independent_Object): New predicate.
(Is_Subcomponent_Of_Atomic_Object): Remove redundant test.
(Is_Volatile_Full_Access_Object): New predicate.
(Is_Volatile_Prefix): Rename into...
(Prefix_Has_Volatile_Components): ... and call
Is_Volatile_Object.
(Object_Has_Volatile_Components): Delete.
(Is_Volatile_Object): Simplify.
* gcc-interface/trans.c (node_is_volatile_full_access): Adjust
comment.
From-SVN: r279429
Diffstat (limited to 'gcc/ada/sem_util.ads')
-rw-r--r-- | gcc/ada/sem_util.ads | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/gcc/ada/sem_util.ads b/gcc/ada/sem_util.ads index a665b5e..2882917 100644 --- a/gcc/ada/sem_util.ads +++ b/gcc/ada/sem_util.ads @@ -1531,11 +1531,7 @@ package Sem_Util is function Is_Atomic_Object (N : Node_Id) return Boolean; -- Determine whether arbitrary node N denotes a reference to an atomic - -- object as per Ada RM C.6(7) and the crucial remark in C.6(8). - - function Is_Atomic_Object_Entity (Id : Entity_Id) return Boolean; - -- Determine whether arbitrary entity Id denotes an atomic object as per - -- Ada RM C.6(7). + -- object as per RM C.6(7) and the crucial remark in RM C.6(8). function Is_Atomic_Or_VFA_Object (N : Node_Id) return Boolean; -- Determine whether arbitrary node N denotes a reference to an object @@ -1749,6 +1745,10 @@ package Sem_Util is -- Determine whether arbitrary declaration Decl denotes a generic package, -- a generic subprogram or a generic body. + function Is_Independent_Object (N : Node_Id) return Boolean; + -- Determine whether arbitrary node N denotes a reference to an independent + -- object as per RM C.6(8). + function Is_Inherited_Operation (E : Entity_Id) return Boolean; -- E is a subprogram. Return True is E is an implicit operation inherited -- by a derived type declaration. @@ -1996,7 +1996,7 @@ package Sem_Util is function Is_Subcomponent_Of_Atomic_Object (N : Node_Id) return Boolean; -- Determine whether arbitrary node N denotes a reference to a subcomponent - -- of an atomic object as per Ada RM C.6(7). + -- of an atomic object as per RM C.6(7). function Is_Subprogram_Contract_Annotation (Item : Node_Id) return Boolean; -- Determine whether aspect specification or pragma Item is one of the @@ -2095,16 +2095,20 @@ package Sem_Util is -- Initialize/Adjust/Finalize subprogram does not override the inherited -- one. + function Is_Volatile_Full_Access_Object (N : Node_Id) return Boolean; + -- Determine whether arbitrary node N denotes a reference to an object + -- which is Volatile_Full_Access. + function Is_Volatile_Function (Func_Id : Entity_Id) return Boolean; -- Determine whether [generic] function Func_Id is subject to enabled -- pragma Volatile_Function. Protected functions are treated as volatile -- (SPARK RM 7.1.2). function Is_Volatile_Object (N : Node_Id) return Boolean; - -- Determines if the given node denotes an volatile object in the sense of - -- the legality checks described in RM C.6(12). Note that the test here is - -- for something actually declared as volatile, not for an object that gets - -- treated as volatile (see Einfo.Treat_As_Volatile). + -- Determine whether arbitrary node N denotes a reference to a volatile + -- object as per RM C.6(8). Note that the test here is for something that + -- is actually declared as volatile, not for an object that gets treated + -- as volatile (see Einfo.Treat_As_Volatile). generic with procedure Handle_Parameter (Formal : Entity_Id; Actual : Node_Id); |