aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/inline.adb
diff options
context:
space:
mode:
authorEd Schonberg <schonberg@adacore.com>2008-05-26 11:40:31 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2008-05-26 11:40:31 +0200
commit1b762d7b0b7b32700e60e895992d3dbbba80b10b (patch)
tree4d9294303cc6fa17fcdfc14d6422540b55788648 /gcc/ada/inline.adb
parent0359c57c615ea92fce5934a4b066cb6d9b9377ae (diff)
downloadgcc-1b762d7b0b7b32700e60e895992d3dbbba80b10b.zip
gcc-1b762d7b0b7b32700e60e895992d3dbbba80b10b.tar.gz
gcc-1b762d7b0b7b32700e60e895992d3dbbba80b10b.tar.bz2
2008-05-26 Ed Schonberg <schonberg@adacore.com>
* inline.adb: (Cleanup_Scopes): For a protected operation, transfer finalization list to protected body subprogram, to force cleanup actions when needed. From-SVN: r135900
Diffstat (limited to 'gcc/ada/inline.adb')
-rw-r--r--gcc/ada/inline.adb6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/ada/inline.adb b/gcc/ada/inline.adb
index 332994e..296ff6b 100644
--- a/gcc/ada/inline.adb
+++ b/gcc/ada/inline.adb
@@ -847,11 +847,15 @@ package body Inline is
-- cleanup operations have been delayed, and the subprogram
-- has been rewritten in the expansion of the enclosing
-- protected body. It is the corresponding subprogram that
- -- may require the cleanup operations.
+ -- may require the cleanup operations, so propagate the
+ -- information that triggers cleanup activity.
Set_Uses_Sec_Stack
(Protected_Body_Subprogram (Scop),
Uses_Sec_Stack (Scop));
+ Set_Finalization_Chain_Entity
+ (Protected_Body_Subprogram (Scop),
+ Finalization_Chain_Entity (Scop));
Scop := Protected_Body_Subprogram (Scop);
end if;