[Ada] Fix detection of access-to-variable types
authorPiotr Trojanek <trojanek@adacore.com>
Thu, 11 Feb 2021 23:11:03 +0000 (00:11 +0100)
committerPierre-Marie de Rodat <derodat@adacore.com>
Tue, 15 Jun 2021 10:19:33 +0000 (06:19 -0400)
gcc/ada/

* sem_prag.adb: Fix typos in comments related to access types.
* sem_util.adb (Is_Access_Variable): Stronger condition.

gcc/ada/sem_prag.adb
gcc/ada/sem_util.adb

index 67b2f25..d52ad5c 100644 (file)
@@ -2464,7 +2464,7 @@ package body Sem_Prag is
 
                   if Global_Mode in Name_In_Out | Name_Output then
 
-                     --  Constant of a access-to-variable type is a read-write
+                     --  Constant of an access-to-variable type is a read-write
                      --  item in procedures, generic procedures, protected
                      --  entries and tasks.
 
@@ -13431,7 +13431,7 @@ package body Sem_Prag is
                     Arg1);
                end if;
 
-            --  Only other possibility is Access-to-class-wide type
+            --  Only other possibility is access-to-class-wide type
 
             elsif Is_Access_Type (Nm)
               and then Is_Class_Wide_Type (Designated_Type (Nm))
index 2024682..c9a2c9f 100644 (file)
@@ -15386,8 +15386,9 @@ package body Sem_Util is
 
    function Is_Access_Variable (E : Entity_Id) return Boolean is
    begin
-      return Is_Access_Object_Type (E)
-        and then not Is_Access_Constant (E);
+      return Is_Access_Type (E)
+        and then not Is_Access_Constant (E)
+        and then Ekind (Directly_Designated_Type (E)) /= E_Subprogram_Type;
    end Is_Access_Variable;
 
    -----------------------------