[COMMITTED] ada: Fix detection of external calls to protected objects in instances

Message ID 20221107084055.151501-1-poulhies@adacore.com
State Unresolved
Headers
Series [COMMITTED] ada: Fix detection of external calls to protected objects in instances |

Checks

Context Check Description
snail/gcc-patch-check warning Git am fail log

Commit Message

Marc Poulhiès Nov. 7, 2022, 8:40 a.m. UTC
  From: Piotr Trojanek <trojanek@adacore.com>

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.

Tested on x86_64-pc-linux-gnu, committed on master.

---
 gcc/ada/exp_ch6.adb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Patch

diff --git a/gcc/ada/exp_ch6.adb b/gcc/ada/exp_ch6.adb
index 9380f3dab0f..0fa97688c5b 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