OSDN Git Service

2012-07-30 Vincent Pucci <pucci@adacore.com>
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 30 Jul 2012 15:12:15 +0000 (15:12 +0000)
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 30 Jul 2012 15:12:15 +0000 (15:12 +0000)
* sem_ch9.adb (Allows_Lock_Free_Implementation): Restrict implicit
dereferences of access values.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@189975 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ada/ChangeLog
gcc/ada/sem_ch9.adb

index d425a70..c87a444 100644 (file)
@@ -1,3 +1,8 @@
+2012-07-30  Vincent Pucci  <pucci@adacore.com>
+
+       * sem_ch9.adb (Allows_Lock_Free_Implementation): Restrict implicit
+       dereferences of access values.
+
 2012-07-27  Iain Sandoe  <iain@codesourcery.com>
 
        * system-darwin-ppc64.ads: Add Support_Atomic_Primitives, set to True.
index 1420ba8..c392dcc 100644 (file)
@@ -411,12 +411,15 @@ package body Sem_Ch9 is
 
                         return Abandon;
 
-                     --  Explicit dereferences restricted (i.e. dereferences of
-                     --  access values).
+                     --  Dereferences of access values restricted
 
-                     elsif Kind = N_Explicit_Dereference then
+                     elsif Kind = N_Explicit_Dereference
+                       or else (Kind = N_Selected_Component
+                                 and then Is_Access_Type (Etype (Prefix (N))))
+                     then
                         if Lock_Free_Given then
-                           Error_Msg_N ("explicit dereference not allowed", N);
+                           Error_Msg_N ("dereference of access value " &
+                                        "not allowed", N);
                            return Skip;
                         end if;