diff options
author | Justin Squirek <squirek@adacore.com> | 2021-07-08 20:33:05 -0400 |
---|---|---|
committer | Pierre-Marie de Rodat <derodat@adacore.com> | 2021-09-21 15:25:03 +0000 |
commit | 7d9735bbb88b6e61e5405d7c99e6cc97112e7a41 (patch) | |
tree | e7521b7ac2ee2ec6c56337137bf1e403ebd8b4f7 /gcc/ada | |
parent | f6ccb788f29ce79af3a5dad0bd96f0db98a5c028 (diff) | |
download | gcc-7d9735bbb88b6e61e5405d7c99e6cc97112e7a41.zip gcc-7d9735bbb88b6e61e5405d7c99e6cc97112e7a41.tar.gz gcc-7d9735bbb88b6e61e5405d7c99e6cc97112e7a41.tar.bz2 |
[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.
Diffstat (limited to 'gcc/ada')
-rw-r--r-- | gcc/ada/exp_ch4.adb | 3 | ||||
-rw-r--r-- | gcc/ada/sem_util.adb | 11 |
2 files changed, 1 insertions, 13 deletions
diff --git a/gcc/ada/exp_ch4.adb b/gcc/ada/exp_ch4.adb index cf9899d..497a52b 100644 --- a/gcc/ada/exp_ch4.adb +++ b/gcc/ada/exp_ch4.adb @@ -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. diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb index 5fd7266..45a338a 100644 --- a/gcc/ada/sem_util.adb +++ b/gcc/ada/sem_util.adb @@ -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. |