aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ada/ChangeLog6
-rw-r--r--gcc/ada/exp_ch4.adb7
2 files changed, 9 insertions, 4 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 8ccc29b..a3679dd 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,9 @@
+2011-12-12 Hristian Kirtchev <kirtchev@adacore.com>
+
+ * exp_ch4.adb (Expand_N_Allocator): Update the master of an
+ anonymous access-to-controlled type to utilize the heterogeneous
+ master associated with the current unit.
+
2011-12-12 Ed Schonberg <schonberg@adacore.com>
* sem_ch6.adb (Analyze_Expression_Function): If the function
diff --git a/gcc/ada/exp_ch4.adb b/gcc/ada/exp_ch4.adb
index 12980a7..f45ea08 100644
--- a/gcc/ada/exp_ch4.adb
+++ b/gcc/ada/exp_ch4.adb
@@ -3510,11 +3510,10 @@ package body Exp_Ch4 is
-- The finalization master must be inserted and analyzed as part of
-- the current semantic unit. This form of expansion is not carried
- -- out in Alfa mode because it is useless.
+ -- out in Alfa mode because it is useless. Note that the master is
+ -- updated when analysis changes current units.
- if No (Finalization_Master (PtrT))
- and then not Alfa_Mode
- then
+ if not Alfa_Mode then
Set_Finalization_Master (PtrT, Current_Anonymous_Master);
end if;
end if;