diff options
author | Piotr Trojanek <trojanek@adacore.com> | 2021-03-25 13:15:30 +0100 |
---|---|---|
committer | Pierre-Marie de Rodat <derodat@adacore.com> | 2021-06-21 06:44:59 -0400 |
commit | 58484cdf4e7c95dbdc503cf4a8427f44bfe02921 (patch) | |
tree | 05e749a08bd2ef421cc79ff5164a7c7e90d07273 /gcc | |
parent | 3045dd3c1769f9016a5d8f8ea3fd7e1f50a28232 (diff) | |
download | gcc-58484cdf4e7c95dbdc503cf4a8427f44bfe02921.zip gcc-58484cdf4e7c95dbdc503cf4a8427f44bfe02921.tar.gz gcc-58484cdf4e7c95dbdc503cf4a8427f44bfe02921.tar.bz2 |
[Ada] Fix detection of overlapping actuals with renamings
gcc/ada/
* sem_util.adb (Is_Object_Renaming): Rename from Is_Renaming;
simplify; adapt callers.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ada/sem_util.adb | 45 |
1 files changed, 13 insertions, 32 deletions
diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb index fb44823..6727e15 100644 --- a/gcc/ada/sem_util.adb +++ b/gcc/ada/sem_util.adb @@ -7262,8 +7262,8 @@ package body Sem_Util is ------------------------- function Denotes_Same_Object (A1, A2 : Node_Id) return Boolean is - function Is_Renaming (N : Node_Id) return Boolean; - -- Return true if N names a renaming entity + function Is_Object_Renaming (N : Node_Id) return Boolean; + -- Return true if N names an object renaming entity function Is_Valid_Renaming (N : Node_Id) return Boolean; -- For renamings, return False if the prefix of any dereference within @@ -7271,35 +7271,16 @@ package body Sem_Util is -- renamed object_name contains references to variables or calls on -- nonstatic functions; otherwise return True (RM 6.4.1(6.10/3)) - ----------------- - -- Is_Renaming -- - ----------------- + ------------------------ + -- Is_Object_Renaming -- + ------------------------ - function Is_Renaming (N : Node_Id) return Boolean is + function Is_Object_Renaming (N : Node_Id) return Boolean is begin - if not Is_Entity_Name (N) then - return False; - end if; - - case Ekind (Entity (N)) is - when E_Variable | E_Constant => - return Present (Renamed_Object (Entity (N))); - - when E_Exception - | E_Function - | E_Generic_Function - | E_Generic_Package - | E_Generic_Procedure - | E_Operator - | E_Package - | E_Procedure - => - return Present (Renamed_Entity (Entity (N))); - - when others => - return False; - end case; - end Is_Renaming; + return Is_Entity_Name (N) + and then Ekind (Entity (N)) in E_Variable | E_Constant + and then Present (Renamed_Object (Entity (N))); + end Is_Object_Renaming; ----------------------- -- Is_Valid_Renaming -- @@ -7307,7 +7288,7 @@ package body Sem_Util is function Is_Valid_Renaming (N : Node_Id) return Boolean is begin - if Is_Renaming (N) + if Is_Object_Renaming (N) and then not Is_Valid_Renaming (Renamed_Entity (Entity (N))) then return False; @@ -7494,12 +7475,12 @@ package body Sem_Util is -- no references to variables nor calls on nonstatic functions (RM -- 6.4.1(6.11/3)). - elsif Is_Renaming (A1) + elsif Is_Object_Renaming (A1) and then Is_Valid_Renaming (A1) then return Denotes_Same_Object (Renamed_Entity (Entity (A1)), A2); - elsif Is_Renaming (A2) + elsif Is_Object_Renaming (A2) and then Is_Valid_Renaming (A2) then return Denotes_Same_Object (A1, Renamed_Entity (Entity (A2))); |