diff options
author | Hristian Kirtchev <kirtchev@adacore.com> | 2012-05-15 12:09:44 +0000 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2012-05-15 14:09:44 +0200 |
commit | b0d7135584eb90c1d4de57d754c8963b1703fcc6 (patch) | |
tree | e54aec67d2825cbc15550a9abbb2f2b48bcfcc7b /gcc/ada/sinfo.adb | |
parent | 5b5b27adff45664299c19f4666e078f4acecfdf7 (diff) | |
download | gcc-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.adb | 16 |
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 |