The compiler crashes on compiling a return statement of a function whose result
type has a component whose type is specified with Relaxed_Finalization. The
compiler was attempting to retrieve a nonexistent BIP_Collection extra formal
from the enclosing function, which may not exist in the case of result types
with Relaxed_Finalization.
gcc/ada/ChangeLog:
* exp_ch3.adb (Build_Heap_Or_Pool_Allocator): Test not Has_Relaxed_Finalization
as a guard against retrieving BIP_Collection formal (and related code).
-- Processing for objects that require finalization actions
- if Needs_Finalization (Ret_Typ) then
+ if Needs_Finalization (Ret_Typ)
+ and then not Has_Relaxed_Finalization (Ret_Typ)
+ then
declare
Decls : constant List_Id := New_List;
Fin_Coll_Id : constant Entity_Id :=