From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 7871) id 404C53858283; Mon, 7 Nov 2022 08:39:38 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 404C53858283 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1667810378; bh=QvuH0a4t9t1iFw3JUSoQRl6+gQib6/XvY4bFqXLSRYY=; h=From:To:Subject:Date:From; b=rtEeJXdPPhuh6TQNHIRSV3UfIf9XhVLwpl/ybeTg83IMaRf2l5VU0/PTXu9hb+gwl iVl5fSBb6ujUgNQ7S5VTYWaSCWAI3lb8EM4bMpVHsWKh/UnAqFumi2GlnSsqIDwXsz 1rSXETHZcNElqaDUXnenE1P04sW77+8xAXxd0D38= MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Marc Poulhi?s To: gcc-cvs@gcc.gnu.org Subject: [gcc r13-3737] ada: Fix detection of external calls to protected objects in instances X-Act-Checkin: gcc X-Git-Author: Piotr Trojanek X-Git-Refname: refs/heads/master X-Git-Oldrev: 90908af3f8648567f1027260d38e5979e45066a3 X-Git-Newrev: 7dee088c9db6a420b60379dd576493d12c055ffd Message-Id: <20221107083938.404C53858283@sourceware.org> Date: Mon, 7 Nov 2022 08:39:38 +0000 (GMT) List-Id: https://gcc.gnu.org/g:7dee088c9db6a420b60379dd576493d12c055ffd commit r13-3737-g7dee088c9db6a420b60379dd576493d12c055ffd Author: Piotr Trojanek Date: Fri Oct 14 20:22:34 2022 +0200 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. Diff: --- gcc/ada/exp_ch6.adb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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