[multiple changes]
authorArnaud Charlet <charlet@gcc.gnu.org>
Tue, 24 Mar 2015 12:26:10 +0000 (13:26 +0100)
committerArnaud Charlet <charlet@gcc.gnu.org>
Tue, 24 Mar 2015 12:26:10 +0000 (13:26 +0100)
2015-03-24  Gary Dismukes  <dismukes@adacore.com>

* sem_ch3.adb: Minor typo fix (missing paren).

2015-03-24  Robert Dewar  <dewar@adacore.com>

* sinfo.ads: Update comment.

2015-03-24  Robert Dewar  <dewar@adacore.com>

* exp_attr.adb: Add entry for typ'Deref.
* sem_attr.adb (Deref): New GNAT attribute.
* sem_attr.ads: Add entry for new GNAT attribute Deref.
* snames.ads-tmpl: Add entries for new attribute Deref.

From-SVN: r221630

gcc/ada/ChangeLog
gcc/ada/exp_attr.adb
gcc/ada/sem_attr.adb
gcc/ada/sem_attr.ads
gcc/ada/sem_ch3.adb
gcc/ada/sinfo.ads
gcc/ada/snames.ads-tmpl

index e0613e527eb561efe78b6d5347a9b809e55cd262..ca430dc9da3cb3aa4d549b1101ec7fd12d6c46de 100644 (file)
@@ -1,3 +1,18 @@
+2015-03-24  Gary Dismukes  <dismukes@adacore.com>
+
+       * sem_ch3.adb: Minor typo fix (missing paren).
+
+2015-03-24  Robert Dewar  <dewar@adacore.com>
+
+       * sinfo.ads: Update comment.
+
+2015-03-24  Robert Dewar  <dewar@adacore.com>
+
+       * exp_attr.adb: Add entry for typ'Deref.
+       * sem_attr.adb (Deref): New GNAT attribute.
+       * sem_attr.ads: Add entry for new GNAT attribute Deref.
+       * snames.ads-tmpl: Add entries for new attribute Deref.
+
 2015-03-24  Ed Schonberg  <schonberg@adacore.com>
 
        * sem_ch13.adb (Rep_Item_Too_Early): allow pragma Convention
index a4f6f5a8082e1e11529714251f0d74d51e9dd0a8..d80364634b09035cc45712acb7a3b8ca58d0753a 100644 (file)
@@ -7103,6 +7103,7 @@ package body Exp_Attr is
       when Attribute_Bit_Order                    |
            Attribute_Code_Address                 |
            Attribute_Definite                     |
+           Attribute_Deref                        |
            Attribute_Null_Parameter               |
            Attribute_Passed_By_Reference          |
            Attribute_Pool_Address                 |
index 01b0cd8e8851c3b9d9f5875a4bd39aac9937c754..68901b1adf5b716f783484a4fc31bd43c0040f7a 100644 (file)
@@ -3540,6 +3540,16 @@ package body Sem_Attr is
          Check_Floating_Point_Type_0;
          Set_Etype (N, Standard_Boolean);
 
+      -----------
+      -- Deref --
+      -----------
+
+      when Attribute_Deref =>
+         Check_Type;
+         Check_E1;
+         Resolve (E1, RTE (RE_Address));
+         Set_Etype (N, P_Type);
+
       ---------------------
       -- Descriptor_Size --
       ---------------------
@@ -9642,6 +9652,7 @@ package body Sem_Attr is
            Attribute_Count                        |
            Attribute_Default_Bit_Order            |
            Attribute_Default_Scalar_Storage_Order |
+           Attribute_Deref                        |
            Attribute_Elaborated                   |
            Attribute_Elab_Body                    |
            Attribute_Elab_Spec                    |
index c2652211b21ef43f1450d18867972d6b6f85f0ad..c1e592844fabf02f127616b0706235e95ab6b51f 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- GNAT is free software;  you can  redistribute it  and/or modify it under --
 -- terms of the  GNU General Public License as published  by the Free Soft- --
@@ -42,9 +42,9 @@ package Sem_Attr is
    -- Implementation Dependent Attributes --
    -----------------------------------------
 
-   --  This section describes the implementation dependent attributes
-   --  provided in GNAT, as well as constructing an array of flags
-   --  indicating which attributes these are.
+   --  This section describes the implementation dependent attributes provided
+   --  in GNAT, as well as constructing an array of flags indicating which
+   --  attributes these are.
 
    Attribute_Impl_Def : Attribute_Class_Array := Attribute_Class_Array'(
 
@@ -152,6 +152,17 @@ package Sem_Attr is
       --  Default_Scalar_Storage_Order, or equal to Default_Bit_Order if
       --  unspecified) as a System.Bit_Order value. This is a static attribute.
 
+      -----------
+      -- Deref --
+      -----------
+
+      Attribute_Deref => True,
+      --  typ'Deref (expr) is valid only if expr is of type System'Address.
+      --  The result is an object of type typ that is obtained by treating the
+      --  address as an access-to-typ value that points to the result. It is
+      --  basically equivalent to (atyp!expr).all where atyp is an access type
+      --  for the type.
+
       ---------------
       -- Elab_Body --
       ---------------
index 8a1e132078382fee65e202b0293bd8f2e80984b7..64761f8a61b45cd1205c6fa9869a72910ca9d9f3 100644 (file)
@@ -3161,7 +3161,7 @@ package body Sem_Ch3 is
            and then No (Corresponding_Generic_Association (Parent (Obj_Id)))
 
            --  Don't give this for internally generated entities (such as the
-           --  FIRST and LAST temporaries generated for bounds.
+           --  FIRST and LAST temporaries generated for bounds).
 
            and then Comes_From_Source (Obj_Id)
          then
index 5f057f236a8c879eae342acb171a5b60ea028bdd..c2a8bf6fbc33d04f56aa1337bcf6393335db053b 100644 (file)
@@ -827,7 +827,9 @@ package Sinfo is
    --    setting tag values, etc. N_Object_Declaration nodes also have this
    --    flag defined. Here it is used to indicate that an initialization
    --    expression is valid, even where it would normally not be allowed
-   --    (e.g. where the type involved is limited).
+   --    (e.g. where the type involved is limited). It is also used to stop
+   --    a Force_Evaluation call for an unchecked conversion, but this usage
+   --    is unclear and not documented ???
 
    --  Associated_Node (Node4-Sem)
    --    Present in nodes that can denote an entity: identifiers, character
index 3781cfccc047c7ac25ad1885c4a67ff50e41df87..cd9d7f118b642529d42010422ee4a89660ad67ba 100644 (file)
@@ -845,6 +845,7 @@ package Snames is
    Name_Definite                       : constant Name_Id := N + $;
    Name_Delta                          : constant Name_Id := N + $;
    Name_Denorm                         : constant Name_Id := N + $;
+   Name_Deref                          : constant Name_Id := N + $; -- GNAT
    Name_Descriptor_Size                : constant Name_Id := N + $;
    Name_Digits                         : constant Name_Id := N + $;
    Name_Elaborated                     : constant Name_Id := N + $; -- GNAT
@@ -1476,6 +1477,7 @@ package Snames is
       Attribute_Definite,
       Attribute_Delta,
       Attribute_Denorm,
+      Attribute_Deref,
       Attribute_Descriptor_Size,
       Attribute_Digits,
       Attribute_Elaborated,