[Ada] Spurious dynamic accessibility check on allocator

gcc/ada/

	* sem_util.adb (Accessibility_Level): Remove spurious special
	case for protected type components.
	* exp_ch4.adb (Generate_Accessibility_Check): Use general
	Accessibility_Level instead of the low-level function
	Type_Access_Level.
This commit is contained in:
Justin Squirek 2021-07-08 20:33:05 -04:00 committed by Pierre-Marie de Rodat
parent f6ccb788f2
commit 7d9735bbb8
2 changed files with 1 additions and 13 deletions

View File

@ -767,8 +767,7 @@ package body Exp_Ch4 is
Cond :=
Make_Op_Gt (Loc,
Left_Opnd => Cond,
Right_Opnd =>
Make_Integer_Literal (Loc, Type_Access_Level (PtrT)));
Right_Opnd => Accessibility_Level (N, Dynamic_Level));
-- Due to the complexity and side effects of the check, utilize an
-- if statement instead of the regular Program_Error circuitry.

View File

@ -728,17 +728,6 @@ package body Sem_Util is
return Make_Level_Literal
(Typ_Access_Level (Etype (E)));
-- When E is a component of the current instance of a
-- protected type, we assume the level to be deeper than that of
-- the type itself.
elsif not Is_Overloadable (E)
and then Ekind (Scope (E)) = E_Protected_Type
and then Comes_From_Source (Scope (E))
then
return Make_Level_Literal
(Scope_Depth (Enclosing_Dynamic_Scope (E)) + 1);
-- Check if E is an expansion-generated renaming of an iterator
-- by examining Related_Expression. If so, determine the
-- accessibility level based on the original expression.