2020-06-19 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* sem_res.adb (Resolve_Qualified_Expression): Do not override the
type of the node when it is unconstrained if it is for an allocator.
-- If the target type is unconstrained, then we reset the type of the
-- result from the type of the expression. For other cases, the actual
- -- subtype of the expression is the target type.
+ -- subtype of the expression is the target type. But we avoid doing it
+ -- for an allocator since this is not needed and might be problematic.
if Is_Composite_Type (Target_Typ)
and then not Is_Constrained (Target_Typ)
+ and then Nkind (Parent (N)) /= N_Allocator
then
Set_Etype (N, Etype (Expr));
end if;