aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2011-08-02 16:39:06 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2011-08-02 16:39:06 +0200
commite526d0c765b77d4f41ce36ef42eda5a12c275e15 (patch)
tree3ed100ea6f52f8e75b9c390d9b63d1834d2a0a1c
parent5b1e6aca6a6a9957a08823e04393f50fa2d48150 (diff)
downloadgcc-e526d0c765b77d4f41ce36ef42eda5a12c275e15.zip
gcc-e526d0c765b77d4f41ce36ef42eda5a12c275e15.tar.gz
gcc-e526d0c765b77d4f41ce36ef42eda5a12c275e15.tar.bz2
[multiple changes]
2011-08-02 Javier Miranda <miranda@adacore.com> * exp_disp.adb (Make_DT): Generate call to Check_TSD in Ada 2005 mode. 2011-08-02 Robert Dewar <dewar@adacore.com> * s-imenne.ads: Minor reformatting. 2011-08-02 Robert Dewar <dewar@adacore.com> * a-stunau.ads: Add pragma Suppress_Initialization for Big_String * freeze.adb (Warn_Overlay): Don't warn if initialization suppressed * s-stalib.ads: Add pragma Suppress_Initialization for Big_String 2011-08-02 Robert Dewar <dewar@adacore.com> * einfo.ads (Materialize_Entity): Document this is only for renamings * exp_ch3.adb (Expand_N_Object_Declaration): Make sure we generate required debug information in the case where we transform the object declaration into a renaming declaration. * exp_ch4.adb (Expand_Concatenate): Generate debug info for result object * exp_dbug.ads (Debug_Renaming_Declaration): Document setting of Materialize_Entity. From-SVN: r177162
-rw-r--r--gcc/ada/ChangeLog25
-rw-r--r--gcc/ada/a-stunau.ads13
-rw-r--r--gcc/ada/einfo.ads9
-rw-r--r--gcc/ada/exp_ch3.adb21
-rw-r--r--gcc/ada/exp_ch4.adb4
-rw-r--r--gcc/ada/exp_dbug.ads3
-rw-r--r--gcc/ada/exp_disp.adb11
-rw-r--r--gcc/ada/freeze.adb11
-rw-r--r--gcc/ada/s-imenne.ads10
-rw-r--r--gcc/ada/s-stalib.ads14
10 files changed, 99 insertions, 22 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 9f6b629..61efaa8 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,28 @@
+2011-08-02 Javier Miranda <miranda@adacore.com>
+
+ * exp_disp.adb (Make_DT): Generate call to Check_TSD in Ada 2005 mode.
+
+2011-08-02 Robert Dewar <dewar@adacore.com>
+
+ * s-imenne.ads: Minor reformatting.
+
+2011-08-02 Robert Dewar <dewar@adacore.com>
+
+ * a-stunau.ads: Add pragma Suppress_Initialization for Big_String
+ * freeze.adb (Warn_Overlay): Don't warn if initialization suppressed
+ * s-stalib.ads: Add pragma Suppress_Initialization for Big_String
+
+2011-08-02 Robert Dewar <dewar@adacore.com>
+
+ * einfo.ads (Materialize_Entity): Document this is only for renamings
+ * exp_ch3.adb (Expand_N_Object_Declaration): Make sure we generate
+ required debug information in the case where we transform the object
+ declaration into a renaming declaration.
+ * exp_ch4.adb (Expand_Concatenate): Generate debug info for result
+ object
+ * exp_dbug.ads (Debug_Renaming_Declaration): Document setting of
+ Materialize_Entity.
+
2011-08-02 Robert Dewar <dewar@adacore.com>
* einfo.ads, einfo.adb (Suppress_Initialization): Replaces
diff --git a/gcc/ada/a-stunau.ads b/gcc/ada/a-stunau.ads
index 8cff44f..fa82740 100644
--- a/gcc/ada/a-stunau.ads
+++ b/gcc/ada/a-stunau.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2009, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2010, 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- --
@@ -38,7 +38,18 @@ package Ada.Strings.Unbounded.Aux is
pragma Preelaborate;
subtype Big_String is String (1 .. Positive'Last);
+ pragma Suppress_Initialization (Big_String);
+ -- Type used to obtain string access to given address. Initialization is
+ -- suppressed, since we never want to have variables of this type, and
+ -- we never want to attempt initialiazation of virtual variables of this
+ -- type (e.g. when pragma Normalize_Scalars is used).
+
type Big_String_Access is access all Big_String;
+ for Big_String_Access'Storage_Size use 0;
+ -- We use this access type to pass a pointer to an area of storage to be
+ -- accessed as a string. Of course when this pointer is used, it is the
+ -- responsibility of the accessor to ensure proper bounds. The storage
+ -- size clause ensures we do not allocate variables of this type.
procedure Get_String
(U : Unbounded_String;
diff --git a/gcc/ada/einfo.ads b/gcc/ada/einfo.ads
index e070e5e..ae89212 100644
--- a/gcc/ada/einfo.ads
+++ b/gcc/ada/einfo.ads
@@ -2943,11 +2943,10 @@ package Einfo is
-- used to reference tasks implementing such interface.
-- Materialize_Entity (Flag168)
--- Present in all entities. Set only for constant or renamed entities
--- which should be materialized for debugging purposes. In the case of
--- a constant, a memory location should be allocated containing the
--- value. In the case of a renaming, a memory location containing the
--- renamed address should be allocated.
+-- Present in all entities. Set only for renamed obects which should be
+-- materialized for debugging purposes. This means that a memory location
+-- containing the renamed address should be allocated. This is needed so
+-- that the debugger can find the entity.
-- Mechanism (Uint8) (returned as Mechanism_Type)
-- Present in functions and non-generic formal parameters. Indicates
diff --git a/gcc/ada/exp_ch3.adb b/gcc/ada/exp_ch3.adb
index eb1c6dc..561b138 100644
--- a/gcc/ada/exp_ch3.adb
+++ b/gcc/ada/exp_ch3.adb
@@ -34,6 +34,7 @@ with Exp_Ch6; use Exp_Ch6;
with Exp_Ch7; use Exp_Ch7;
with Exp_Ch9; use Exp_Ch9;
with Exp_Ch11; use Exp_Ch11;
+with Exp_Dbug; use Exp_Dbug;
with Exp_Disp; use Exp_Disp;
with Exp_Dist; use Exp_Dist;
with Exp_Smem; use Exp_Smem;
@@ -5215,6 +5216,26 @@ package body Exp_Ch3 is
Set_Renamed_Object (Defining_Identifier (N), Expr_Q);
Set_Analyzed (N);
+
+ -- We do need to deal with debug issues for this renaming
+
+ -- First, if entity comes from source, then mark it as needing
+ -- debug information, even though it is defined by a generated
+ -- renaming that does not come from source.
+
+ if Comes_From_Source (Defining_Identifier (N)) then
+ Set_Needs_Debug_Info (Defining_Identifier (N));
+ end if;
+
+ -- Now call the routine to generate debug info for the renaming
+
+ declare
+ Decl : constant Node_Id := Debug_Renaming_Declaration (N);
+ begin
+ if Present (Decl) then
+ Insert_Action (N, Decl);
+ end if;
+ end;
end if;
end if;
diff --git a/gcc/ada/exp_ch4.adb b/gcc/ada/exp_ch4.adb
index 85e9d57..e92e106 100644
--- a/gcc/ada/exp_ch4.adb
+++ b/gcc/ada/exp_ch4.adb
@@ -2875,10 +2875,12 @@ package body Exp_Ch4 is
-- Now we construct an array object with appropriate bounds. We mark
-- the target as internal to prevent useless initialization when
- -- Initialize_Scalars is enabled.
+ -- Initialize_Scalars is enabled. Also since this is the actual result
+ -- entity, we make sure we have debug information for the result.
Ent := Make_Temporary (Loc, 'S');
Set_Is_Internal (Ent);
+ Set_Needs_Debug_Info (Ent);
-- If the bound is statically known to be out of range, we do not want
-- to abort, we want a warning and a runtime constraint error. Note that
diff --git a/gcc/ada/exp_dbug.ads b/gcc/ada/exp_dbug.ads
index 5dcbd91..ac722d7 100644
--- a/gcc/ada/exp_dbug.ads
+++ b/gcc/ada/exp_dbug.ads
@@ -1082,7 +1082,8 @@ package Exp_Dbug is
function Debug_Renaming_Declaration (N : Node_Id) return Node_Id;
-- The argument N is a renaming declaration. The result is a variable
-- declaration as described in the above paragraphs. If N is not a special
- -- debug declaration, then Empty is returned.
+ -- debug declaration, then Empty is returned. This function also takes care
+ -- of setting Materialize_Entity on the renamed entity where required.
---------------------------
-- Packed Array Encoding --
diff --git a/gcc/ada/exp_disp.adb b/gcc/ada/exp_disp.adb
index 9a7b330..541abe7 100644
--- a/gcc/ada/exp_disp.adb
+++ b/gcc/ada/exp_disp.adb
@@ -5995,10 +5995,17 @@ package body Exp_Disp is
-- Check_TSD (TSD'Unrestricted_Access);
- -- Seems wrong to restrict this BI to Ada 2012 ???
+ -- This check is a consequence of AI05-0113-1/06, so it officially
+ -- applies to Ada 2005 (and Ada 2012). It might be argued that it is
+ -- a desirable check to add in Ada 95 mode, but we hesitate to make
+ -- this change, as it would be incompatible, and could conceivably
+ -- cause a problem in existing Aa 95 code.
+
+ -- We check for No_Run_Time_Mode here, because we do not want to pick
+ -- up the RE_Check_TSD entity and call it in No_Run_Time mode.
if not No_Run_Time_Mode
- and then Ada_Version >= Ada_2012
+ and then Ada_Version >= Ada_2005
and then RTE_Available (RE_Check_TSD)
then
Append_To (Elab_Code,
diff --git a/gcc/ada/freeze.adb b/gcc/ada/freeze.adb
index f1699db..c9d47bd 100644
--- a/gcc/ada/freeze.adb
+++ b/gcc/ada/freeze.adb
@@ -5874,15 +5874,16 @@ package body Freeze is
-- tested for because predefined String types are initialized by inline
-- code rather than by an init_proc). Note that we do not give the
-- warning for Initialize_Scalars, since we suppressed initialization
- -- in this case.
+ -- in this case. Also, do not warn if Suppress_Initialization is set.
if Present (Expr)
and then not Is_Imported (Ent)
+ and then not Initialization_Suppressed (Typ)
and then (Has_Non_Null_Base_Init_Proc (Typ)
- or else Is_Access_Type (Typ)
- or else (Normalize_Scalars
- and then (Is_Scalar_Type (Typ)
- or else Is_String_Type (Typ))))
+ or else Is_Access_Type (Typ)
+ or else (Normalize_Scalars
+ and then (Is_Scalar_Type (Typ)
+ or else Is_String_Type (Typ))))
then
if Nkind (Expr) = N_Attribute_Reference
and then Is_Entity_Name (Prefix (Expr))
diff --git a/gcc/ada/s-imenne.ads b/gcc/ada/s-imenne.ads
index a76883d..7d0c114 100644
--- a/gcc/ada/s-imenne.ads
+++ b/gcc/ada/s-imenne.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2000-2009, Free Software Foundation, Inc. --
+-- Copyright (C) 2000-2010, 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- --
@@ -70,8 +70,8 @@ package System.Img_Enum_New is
P : out Natural;
Names : String;
Indexes : System.Address);
- -- Identical to Set_Image_Enumeration_8 except that it handles types
- -- using array (0 .. Num) of Natural_16 for the Indexes table.
+ -- Identical to Set_Image_Enumeration_8 except that it handles types using
+ -- array (0 .. Num) of Natural_16 for the Indexes table.
procedure Image_Enumeration_32
(Pos : Natural;
@@ -79,7 +79,7 @@ package System.Img_Enum_New is
P : out Natural;
Names : String;
Indexes : System.Address);
- -- Identical to Set_Image_Enumeration_8 except that it handles types
- -- using array (0 .. Num) of Natural_32 for the Indexes table.
+ -- Identical to Set_Image_Enumeration_8 except that it handles types using
+ -- array (0 .. Num) of Natural_32 for the Indexes table.
end System.Img_Enum_New;
diff --git a/gcc/ada/s-stalib.ads b/gcc/ada/s-stalib.ads
index 6b3d864..4f1b90a 100644
--- a/gcc/ada/s-stalib.ads
+++ b/gcc/ada/s-stalib.ads
@@ -57,9 +57,19 @@ package System.Standard_Library is
pragma Preelaborate_05;
pragma Warnings (On);
- type Big_String_Ptr is access all String (Positive);
+ subtype Big_String is String (1 .. Positive'Last);
+ pragma Suppress_Initialization (Big_String);
+ -- Type used to obtain string access to given address. Initialization is
+ -- suppressed, since we never want to have variables of this type, and
+ -- we never want to attempt initialiazation of virtual variables of this
+ -- type (e.g. when pragma Normalize_Scalars is used).
+
+ type Big_String_Ptr is access all Big_String;
for Big_String_Ptr'Storage_Size use 0;
- -- A non-fat pointer type for null terminated strings
+ -- We use this access type to pass a pointer to an area of storage to be
+ -- accessed as a string. Of course when this pointer is used, it is the
+ -- responsibility of the accessor to ensure proper bounds. The storage
+ -- size clause ensures we do not allocate variables of this type.
function To_Ptr is
new Ada.Unchecked_Conversion (System.Address, Big_String_Ptr);