[Ada] Task arrays trigger spurious unreferenced warnings
authorJustin Squirek <squirek@adacore.com>
Thu, 23 Dec 2021 04:09:05 +0000 (04:09 +0000)
committerPierre-Marie de Rodat <derodat@adacore.com>
Mon, 10 Jan 2022 09:38:43 +0000 (09:38 +0000)
gcc/ada/

* sem_warn.adb (Check_References): Handle arrays of tasks
similar to task objects.

gcc/ada/sem_warn.adb

index 85d5365..63a5406 100644 (file)
@@ -1700,7 +1700,14 @@ package body Sem_Warn is
               and then ((Ekind (E1) /= E_Variable
                           and then Ekind (E1) /= E_Constant
                           and then Ekind (E1) /= E_Component)
-                         or else not Is_Task_Type (E1T))
+
+                         --  Check that E1T is not a task or an array of them
+
+                         or else not
+                           (Is_Task_Type (E1T)
+                             or else (Ekind (E1T) in Array_Kind
+                                       and then Is_Task_Type
+                                                  (Component_Type (E1T)))))
 
               --  For subunits, only place warnings on the main unit itself,
               --  since parent units are not completely compiled.