exp_ch4.adb (Expand_Allocator_Expression): Pass Allocator => True to Make_Adjust_Call...
authorThomas Quinot <quinot@adacore.com>
Wed, 15 Feb 2006 09:38:10 +0000 (10:38 +0100)
committerArnaud Charlet <charlet@gcc.gnu.org>
Wed, 15 Feb 2006 09:38:10 +0000 (10:38 +0100)
commitdfd99a80f01f7020727987fe981a2fe17ad034e5
tree206359c222e19b3caaae36b5e2fbd40231df7656
parenta05e99a2693109e7a2b4fffe853890946cd0320d
exp_ch4.adb (Expand_Allocator_Expression): Pass Allocator => True to Make_Adjust_Call done for a newly-allocated object.

2006-02-13  Thomas Quinot  <quinot@adacore.com>
    Ed Schonberg  <schonberg@adacore.com>

* exp_ch4.adb (Expand_Allocator_Expression): Pass Allocator => True to
Make_Adjust_Call done for a newly-allocated object.

* exp_ch7.ads, exp_ch7.adb (Expand_Cleanup_Actions): If the statements
in a subprogram are wrapped in a cleanup block, indicate that the
subprogram contains an inner block with an exception handler.
(Make_Adjust_Call): New Boolean formal Allocator indicating whether the
Adjust call is for a newly-allocated object. In that case we must not
assume that the finalization list chain pointers are correct (since they
come from a bit-for-bit copy of the original object's pointers) so if
the attach level would otherwise be zero (no change), we set it to 4
instead to cause the pointers to be reset to null.

* s-finimp.adb (Attach_To_Final_List): New attach level: 4, meaning
reset chain pointers to null.

From-SVN: r111060
gcc/ada/exp_ch4.adb
gcc/ada/exp_ch7.adb
gcc/ada/exp_ch7.ads
gcc/ada/s-finimp.adb