summaryrefslogtreecommitdiff
path: root/gcc/ada/einfo.adb
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2014-02-06 10:13:42 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2014-02-06 10:13:42 +0000
commit285cdf4d0663c52b6e776453dee51fd3ed967b44 (patch)
tree42e7228e879dc2072cd4a58fb61298bb9c4c44e2 /gcc/ada/einfo.adb
parent27cc55125ea9dc6ebdc80a2801bb3db4ef00f86b (diff)
downloadgcc-285cdf4d0663c52b6e776453dee51fd3ed967b44.tar.gz
2014-02-06 Sergey Rybin <rybin@adacore.com frybin>
* gnat_ugn.texi, vms_data.ads: Add documentation of -j option for gnatelim. 2014-02-06 Eric Botcazou <ebotcazou@adacore.com> * gnat_rm.texi (Pragma Optimize_Alignment): Document the effect of the pragma on individual objects. 2014-02-06 Hristian Kirtchev <kirtchev@adacore.com> * einfo.adb Node29 is now used as BIP_Initialization_Call. (BIP_Initialization_Call): New routine. (Set_BIP_Initialization_Call): New routine. (Write_Field29_Name): Add an entry for constants and variables. * einfo.ads Add new attribute BIP_Initialization_Call and update its usage in nodes. (BIP_Initialization_Call): New routine along with pragma Inline. (Set_BIP_Initialization_Call): New routine along with pragma Inline. * exp_ch6.adb (Make_Build_In_Place_Call_In_Object_Declaration): Add local declaration Res_Decl. Capture the build-in-place initialization call when the related object declaration has created a transient block. * exp_ch7.adb (Process_Transient_Objects): Add local variable Fin_Insrt. Recognize a scenario where an object declaration acts as a transient context and is initialized by a build-in-place function call. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@207543 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/einfo.adb')
-rw-r--r--gcc/ada/einfo.adb17
1 files changed, 17 insertions, 0 deletions
diff --git a/gcc/ada/einfo.adb b/gcc/ada/einfo.adb
index d684663e4a0..c1e0dd17849 100644
--- a/gcc/ada/einfo.adb
+++ b/gcc/ada/einfo.adb
@@ -242,6 +242,7 @@ package body Einfo is
-- Initialization_Statements Node28
-- Underlying_Record_View Node28
+ -- BIP_Initialization_Call Node29
-- Subprograms_For_Type Node29
-- Corresponding_Equality Node30
@@ -767,6 +768,12 @@ package body Einfo is
return Elist16 (Id);
end Body_References;
+ function BIP_Initialization_Call (Id : E) return N is
+ begin
+ pragma Assert (Ekind_In (Id, E_Constant, E_Variable));
+ return Node29 (Id);
+ end BIP_Initialization_Call;
+
function C_Pass_By_Copy (Id : E) return B is
begin
pragma Assert (Is_Record_Type (Id));
@@ -3434,6 +3441,12 @@ package body Einfo is
Set_Elist16 (Id, V);
end Set_Body_References;
+ procedure Set_BIP_Initialization_Call (Id : E; V : N) is
+ begin
+ pragma Assert (Ekind_In (Id, E_Constant, E_Variable));
+ Set_Node29 (Id, V);
+ end Set_BIP_Initialization_Call;
+
procedure Set_C_Pass_By_Copy (Id : E; V : B := True) is
begin
pragma Assert (Is_Record_Type (Id) and then Is_Base_Type (Id));
@@ -9419,6 +9432,10 @@ package body Einfo is
procedure Write_Field29_Name (Id : Entity_Id) is
begin
case Ekind (Id) is
+ when E_Constant |
+ E_Variable =>
+ Write_Str ("BIP_Initialization_Call");
+
when Type_Kind =>
Write_Str ("Subprograms_For_Type");