[gcc/devel/gccgo] [Ada] Incorrect accessibility checks on functions calls
Ian Lance Taylor
ian@gcc.gnu.org
Sun Jul 12 19:34:52 GMT 2020
https://gcc.gnu.org/g:f142237e2f70fe336b4fbe02c8f10d60ab38df67
commit f142237e2f70fe336b4fbe02c8f10d60ab38df67
Author: Justin Squirek <squirek@adacore.com>
Date: Mon Mar 30 05:35:22 2020 -0400
[Ada] Incorrect accessibility checks on functions calls
2020-06-15 Justin Squirek <squirek@adacore.com>
gcc/ada/
* sem_res.adb (Valid_Conversion): Add missing condition to
trigger proper static accessiblity failiures when the target
type is an anonymous access.
Diff:
---
gcc/ada/sem_res.adb | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/gcc/ada/sem_res.adb b/gcc/ada/sem_res.adb
index 89d78518bd3..13d925c7f18 100644
--- a/gcc/ada/sem_res.adb
+++ b/gcc/ada/sem_res.adb
@@ -13239,13 +13239,16 @@ package body Sem_Res is
-- Check if the operand is deeper than the target type, taking
-- care to avoid the case where we are converting a result of a
-- function returning an anonymous access type since the "master
- -- of the call" would be target type of the conversion in all
- -- cases - see RM 10.3/3.
+ -- of the call" would be target type of the conversion unless
+ -- the target type is anonymous access as well - see RM 3.10.2
+ -- (10.3/3).
elsif Type_Access_Level (Opnd_Type) >
Deepest_Type_Access_Level (Target_Type)
- and then not (Nkind (Associated_Node_For_Itype (Opnd_Type)) =
- N_Function_Specification)
+ and then (Nkind (Associated_Node_For_Itype (Opnd_Type)) /=
+ N_Function_Specification
+ or else Ekind (Target_Type) in
+ Anonymous_Access_Kind)
then
-- In an instance, this is a run-time check, but one we know
-- will fail, so generate an appropriate warning. The raise
More information about the Gcc-cvs
mailing list