aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/ada')
-rw-r--r--gcc/ada/ChangeLog12
-rw-r--r--gcc/ada/exp_attr.adb16
-rw-r--r--gcc/ada/g-comlin.adb8
-rw-r--r--gcc/ada/rtsfind.ads2
4 files changed, 30 insertions, 8 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 2e39fcc..d9e3eeb 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -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.
diff --git a/gcc/ada/exp_attr.adb b/gcc/ada/exp_attr.adb
index 111dc8d..ef0e70b 100644
--- a/gcc/ada/exp_attr.adb
+++ b/gcc/ada/exp_attr.adb
@@ -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
diff --git a/gcc/ada/g-comlin.adb b/gcc/ada/g-comlin.adb
index 07b0163..60dde35 100644
--- a/gcc/ada/g-comlin.adb
+++ b/gcc/ada/g-comlin.adb
@@ -19,10 +19,10 @@
-- 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. --
diff --git a/gcc/ada/rtsfind.ads b/gcc/ada/rtsfind.ads
index e6ae088..8cd7771 100644
--- a/gcc/ada/rtsfind.ads
+++ b/gcc/ada/rtsfind.ads
@@ -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,