2011-12-15 Javier Miranda <miranda@adacore.com>
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 15 Dec 2011 11:52:26 +0000 (11:52 +0000)
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 15 Dec 2011 11:52:26 +0000 (11:52 +0000)
* exp_attr.adb (Expand_N_Attribute_Reference): For 'alignment
applied to a class-wide type under VM targets generate code which
invokes the function Get_Alignment to retrieve the value of the
alignment from the TSD.
* rtsfind.ads (RE_Get_Alignment): New entity.

2011-12-15  Robert Dewar  <dewar@adacore.com>

* g-comlin.adb: Fix header.

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

gcc/ada/ChangeLog
gcc/ada/exp_attr.adb
gcc/ada/g-comlin.adb
gcc/ada/rtsfind.ads

index 2e39fcc..d9e3eeb 100644 (file)
@@ -1,3 +1,15 @@
+2011-12-15  Javier Miranda  <miranda@adacore.com>
+
+       * exp_attr.adb (Expand_N_Attribute_Reference): For 'alignment
+       applied to a class-wide type under VM targets generate code which
+       invokes the function Get_Alignment to retrieve the value of the
+       alignment from the TSD.
+       * rtsfind.ads (RE_Get_Alignment): New entity.
+
+2011-12-15  Robert Dewar  <dewar@adacore.com>
+
+       * g-comlin.adb: Fix header.
+
 2011-12-15  Tristan Gingold  <gingold@adacore.com>
 
        * gnatls.adb: Fix typo.
index 111dc8d..ef0e70b 100644 (file)
@@ -1120,10 +1120,18 @@ package body Exp_Attr is
 
          elsif Is_Class_Wide_Type (Ptyp) then
             New_Node :=
-              Build_Get_Alignment (Loc,
-                Make_Attribute_Reference (Loc,
-                  Prefix         => Pref,
-                  Attribute_Name => Name_Tag));
+              Make_Attribute_Reference (Loc,
+                Prefix         => Pref,
+                Attribute_Name => Name_Tag);
+
+            if VM_Target = No_VM then
+               New_Node := Build_Get_Alignment (Loc, New_Node);
+            else
+               New_Node :=
+                 Make_Function_Call (Loc,
+                   Name => New_Reference_To (RTE (RE_Get_Alignment), Loc),
+                   Parameter_Associations => New_List (New_Node));
+            end if;
 
             --  Case where the context is a specific integer type with which
             --  the original attribute was compatible. The function has a
index 07b0163..60dde35 100644 (file)
 -- additional permissions described in the GCC Runtime Library Exception,   --
 -- version 3.1, as published by the Free Software Foundation.               --
 --                                                                          --
--- In particular,  you can freely  distribute your programs  built with the --
--- GNAT Pro compiler, including any required library run-time units,  using --
--- any licensing terms  of your choosing.  See the AdaCore Software License --
--- for full details.                                                        --
+-- You should have received a copy of the GNU General Public License and    --
+-- a copy of the GCC Runtime Library Exception along with this program;     --
+-- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+-- <http://www.gnu.org/licenses/>.                                          --
 --                                                                          --
 -- GNAT was originally developed  by the GNAT team at  New York University. --
 -- Extensive contributions were provided by Ada Core Technologies Inc.      --
index e6ae088..8cd7771 100644 (file)
@@ -588,6 +588,7 @@ package Rtsfind is
      RE_External_Tag,                    -- Ada.Tags
      RO_TA_External_Tag,                 -- Ada.Tags
      RE_Get_Access_Level,                -- Ada.Tags
+     RE_Get_Alignment,                   -- Ada.Tags
      RE_Get_Entry_Index,                 -- Ada.Tags
      RE_Get_Offset_Index,                -- Ada.Tags
      RE_Get_Prim_Op_Kind,                -- Ada.Tags
@@ -1787,6 +1788,7 @@ package Rtsfind is
      RE_External_Tag                     => Ada_Tags,
      RO_TA_External_Tag                  => Ada_Tags,
      RE_Get_Access_Level                 => Ada_Tags,
+     RE_Get_Alignment                    => Ada_Tags,
      RE_Get_Entry_Index                  => Ada_Tags,
      RE_Get_Offset_Index                 => Ada_Tags,
      RE_Get_Prim_Op_Kind                 => Ada_Tags,