From 146ea83af978384b0f7dabc8176f8bf98892ce2a Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Thu, 10 Mar 2022 11:11:32 +0100 Subject: [PATCH] [Ada] Fix internal error on mix of controlled and protected types The key is that the protected type is a (limited) private type, which fools a test in Cleanup_Scopes. gcc/ada/ * inline.adb (Cleanup_Scopes): Test the underlying type. --- gcc/ada/inline.adb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/ada/inline.adb b/gcc/ada/inline.adb index 5944aed..a1d2254 100644 --- a/gcc/ada/inline.adb +++ b/gcc/ada/inline.adb @@ -2773,7 +2773,7 @@ package body Inline is Scop := Protected_Body_Subprogram (Scop); elsif Is_Subprogram (Scop) - and then Is_Protected_Type (Scope (Scop)) + and then Is_Protected_Type (Underlying_Type (Scope (Scop))) and then Present (Protected_Body_Subprogram (Scop)) then -- If a protected operation contains an instance, its cleanup -- 2.7.4