[Ada] Fix Is_Volatile_Function for functions declared in protected bodies
authorPiotr Trojanek <trojanek@adacore.com>
Wed, 3 Mar 2021 20:19:39 +0000 (21:19 +0100)
committerPierre-Marie de Rodat <derodat@adacore.com>
Wed, 16 Jun 2021 08:43:05 +0000 (04:43 -0400)
gcc/ada/

* sem_util.adb (Is_Volatile_Function): Follow the exact wording
of SPARK (regarding volatile functions) and Ada (regarding
protected functions).

gcc/ada/sem_util.adb

index 6376b4e..6481d86 100644 (file)
@@ -21105,9 +21105,11 @@ package body Sem_Util is
    begin
       pragma Assert (Ekind (Func_Id) in E_Function | E_Generic_Function);
 
-      --  A function declared within a protected type is volatile
+      --  A protected function is volatile
 
-      if Is_Protected_Type (Scope (Func_Id)) then
+      if Nkind (Parent (Unit_Declaration_Node (Func_Id))) =
+           N_Protected_Definition
+      then
          return True;
 
       --  An instance of Ada.Unchecked_Conversion is a volatile function if