[Ada] Disable warnings on entities when building finalizers
authorGhjuvan Lacambre <lacambre@adacore.com>
Thu, 23 Jul 2020 07:51:43 +0000 (09:51 +0200)
committerPierre-Marie de Rodat <derodat@adacore.com>
Wed, 21 Oct 2020 07:22:44 +0000 (03:22 -0400)
gcc/ada/

* exp_ch7.adb (Build_Finalizer): Disable warnings on referenced
entity.

gcc/ada/exp_ch7.adb

index 1264eebeb85ecb3b9d7a0d761276863a333971d4..b58a3c1d224ed8766a378a176bc14a153220d3f6 100644 (file)
@@ -3157,6 +3157,14 @@ package body Exp_Ch7 is
 
          Append_To (Finalizer_Stmts, Label);
 
+         --  Disable warnings on Obj_Id. This works around an issue where GCC
+         --  is not able to detect that Obj_Id is protected by a counter and
+         --  emits spurious warnings.
+
+         if not Comes_From_Source (Obj_Id) then
+            Set_Warnings_Off (Obj_Id);
+         end if;
+
          --  Processing for simple protected objects. Such objects require
          --  manual finalization of their lock managers.