aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPiotr Trojanek <trojanek@adacore.com>2022-10-14 20:22:34 +0200
committerMarc Poulhiès <poulhies@adacore.com>2022-11-07 09:36:34 +0100
commit7dee088c9db6a420b60379dd576493d12c055ffd (patch)
tree2771ffbf848218ba7a7d91d2d7c6b852a91f53fa /gcc
parent90908af3f8648567f1027260d38e5979e45066a3 (diff)
downloadgcc-7dee088c9db6a420b60379dd576493d12c055ffd.zip
gcc-7dee088c9db6a420b60379dd576493d12c055ffd.tar.gz
gcc-7dee088c9db6a420b60379dd576493d12c055ffd.tar.bz2
ada: Fix detection of external calls to protected objects in instances
Detection of external-vs-internal calls to protected objects relied on the scope stack. This didn't work when the call appeared in an instance of generic unit, because instances are analyzed in different context to where they appear. gcc/ada/ * exp_ch6.adb (Expand_Protected_Subprogram_Call): Examine scope tree and not the scope stack.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/exp_ch6.adb2
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/ada/exp_ch6.adb b/gcc/ada/exp_ch6.adb
index 9380f3d..0fa9768 100644
--- a/gcc/ada/exp_ch6.adb
+++ b/gcc/ada/exp_ch6.adb
@@ -6240,7 +6240,7 @@ package body Exp_Ch6 is
-- The object may be a component of some other data structure, in which
-- case this must be handled as an inter-object call.
- if not In_Open_Scopes (Scop)
+ if not Scope_Within_Or_Same (Inner => Current_Scope, Outer => Scop)
or else Is_Entry_Wrapper (Current_Scope)
or else not Is_Entity_Name (Name (N))
then