aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/sinfo.adb
diff options
context:
space:
mode:
authorHristian Kirtchev <kirtchev@adacore.com>2012-05-15 12:09:44 +0000
committerArnaud Charlet <charlet@gcc.gnu.org>2012-05-15 14:09:44 +0200
commitb0d7135584eb90c1d4de57d754c8963b1703fcc6 (patch)
treee54aec67d2825cbc15550a9abbb2f2b48bcfcc7b /gcc/ada/sinfo.adb
parent5b5b27adff45664299c19f4666e078f4acecfdf7 (diff)
downloadgcc-b0d7135584eb90c1d4de57d754c8963b1703fcc6.zip
gcc-b0d7135584eb90c1d4de57d754c8963b1703fcc6.tar.gz
gcc-b0d7135584eb90c1d4de57d754c8963b1703fcc6.tar.bz2
exp_ch4.adb (Insert_Dereference_Action): Reimplemented.
2012-05-15 Hristian Kirtchev <kirtchev@adacore.com> * exp_ch4.adb (Insert_Dereference_Action): Reimplemented. The routine performs address and size adjustments for dereferences of heap-allocated controlled objects. This manipulation is needed in order to restore the original state of the memory at the time it was allocated by the finalization machinery. * rtsfind.ads: Add RE_Adjust_Controlled_Dereference to tables RE_Id and RE_Unit_Table. * sinfo.adb (Has_Dereference_Action): New routine. (Set_Has_Dereference_Action): New routine. * sinfo.ads: Add new semantic flag Has_Dereference_Action along its association in nodes. (Has_Dereference_Action): New routine and pragma Inline. (Set_Has_Dereference_Action): New routine and pragma Inline. * s-stposu.ads, s-stposu.adb (Adjust_Controlled_Dereference): New routine. From-SVN: r187530
Diffstat (limited to 'gcc/ada/sinfo.adb')
-rw-r--r--gcc/ada/sinfo.adb16
1 files changed, 16 insertions, 0 deletions
diff --git a/gcc/ada/sinfo.adb b/gcc/ada/sinfo.adb
index a89f9b2..e7ad52e 100644
--- a/gcc/ada/sinfo.adb
+++ b/gcc/ada/sinfo.adb
@@ -1427,6 +1427,14 @@ package body Sinfo is
return Flag15 (N);
end Has_Created_Identifier;
+ function Has_Dereference_Action
+ (N : Node_Id) return Boolean is
+ begin
+ pragma Assert (False
+ or else NT (N).Nkind = N_Explicit_Dereference);
+ return Flag13 (N);
+ end Has_Dereference_Action;
+
function Has_Dynamic_Length_Check
(N : Node_Id) return Boolean is
begin
@@ -4515,6 +4523,14 @@ package body Sinfo is
Set_Flag15 (N, Val);
end Set_Has_Created_Identifier;
+ procedure Set_Has_Dereference_Action
+ (N : Node_Id; Val : Boolean := True) is
+ begin
+ pragma Assert (False
+ or else NT (N).Nkind = N_Explicit_Dereference);
+ Set_Flag13 (N, Val);
+ end Set_Has_Dereference_Action;
+
procedure Set_Has_Dynamic_Length_Check
(N : Node_Id; Val : Boolean := True) is
begin