diff options
author | Ed Schonberg <schonberg@adacore.com> | 2008-08-04 11:49:42 +0200 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2008-08-04 11:49:42 +0200 |
commit | 9450205a0ccc2f227a24bc6f5c5c8f3d5ab1c710 (patch) | |
tree | e7547ada839b13810d2b13de0e3cd99cf78ccffe | |
parent | c18b3a998d1d0533759a5071d4309a34848a8ea3 (diff) | |
download | gcc-9450205a0ccc2f227a24bc6f5c5c8f3d5ab1c710.zip gcc-9450205a0ccc2f227a24bc6f5c5c8f3d5ab1c710.tar.gz gcc-9450205a0ccc2f227a24bc6f5c5c8f3d5ab1c710.tar.bz2 |
exp_ch4.adb (Get_Allocator_Final_List): Freeze anonymous type for chain at once...
2008-08-04 Ed Schonberg <schonberg@adacore.com>
* exp_ch4.adb (Get_Allocator_Final_List): Freeze anonymous type for
chain at once, to ensure that type is properly decorated for back-end,
when allocator appears within a loop.
From-SVN: r138597
-rw-r--r-- | gcc/ada/exp_ch4.adb | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/gcc/ada/exp_ch4.adb b/gcc/ada/exp_ch4.adb index ba09aa6..1bef500 100644 --- a/gcc/ada/exp_ch4.adb +++ b/gcc/ada/exp_ch4.adb @@ -977,8 +977,7 @@ package body Exp_Ch4 is -- not allow sliding, but this check does (a relaxation from Ada 83). if Is_Constrained (DesigT) - and then not Subtypes_Statically_Match - (T, DesigT) + and then not Subtypes_Statically_Match (T, DesigT) then Apply_Constraint_Check (Exp, DesigT, No_Sliding => False); @@ -8354,7 +8353,9 @@ package body Exp_Ch4 is -- chain. The Final_Chain that is thus created is shared by the -- access parameter. The access type is tested against the result -- type of the function to exclude allocators whose type is an - -- anonymous access result type. + -- anonymous access result type. We freeze the type at once to + -- ensure that it is properly decorated for the back-end, even + -- if the context and current scope is a loop. if Nkind (Associated_Node_For_Itype (PtrT)) in N_Subprogram_Specification @@ -8371,6 +8372,7 @@ package body Exp_Ch4 is Subtype_Indication => New_Occurrence_Of (T, Loc)))); + Freeze_Before (N, Owner); Build_Final_List (N, Owner); Set_Associated_Final_Chain (PtrT, Associated_Final_Chain (Owner)); |