From 2cee58d81076c99ab3db3305c1850bf79fa12f17 Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Mon, 16 Dec 2019 10:34:27 +0000 Subject: [Ada] Fully propagate representation aspects through renaming 2019-12-16 Eric Botcazou 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 --- gcc/ada/sem_ch8.adb | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) (limited to 'gcc/ada/sem_ch8.adb') diff --git a/gcc/ada/sem_ch8.adb b/gcc/ada/sem_ch8.adb index 8897b25..a1a5274 100644 --- a/gcc/ada/sem_ch8.adb +++ b/gcc/ada/sem_ch8.adb @@ -1358,19 +1358,13 @@ package body Sem_Ch8 is end if; -- The entity of the renaming declaration needs to reflect whether the - -- renamed object is volatile. Is_Volatile is set if the renamed object - -- is volatile in the RM legality sense. + -- renamed object is atomic, independent, volatile or VFA. These flags + -- are set on the renamed object in the RM legality sense. - Set_Is_Volatile (Id, Is_Volatile_Object (Nam)); - - -- Also copy settings of Atomic/Independent/Volatile_Full_Access - - if Is_Entity_Name (Nam) then - Set_Is_Atomic (Id, Is_Atomic (Entity (Nam))); - Set_Is_Independent (Id, Is_Independent (Entity (Nam))); - Set_Is_Volatile_Full_Access (Id, - Is_Volatile_Full_Access (Entity (Nam))); - end if; + Set_Is_Atomic (Id, Is_Atomic_Object (Nam)); + Set_Is_Independent (Id, Is_Independent_Object (Nam)); + Set_Is_Volatile (Id, Is_Volatile_Object (Nam)); + Set_Is_Volatile_Full_Access (Id, Is_Volatile_Full_Access_Object (Nam)); -- Treat as volatile if we just set the Volatile flag -- cgit v1.1