1-- { dg-do run } 2 3with Text_IO; use Text_IO; 4with TLS1_Pkg; use TLS1_Pkg; 5 6procedure TLS1 is 7 Result : Integer; 8 9 task type T is 10 entry Change (Inc : Integer); 11 entry Sum (Result : out Integer); 12 end T; 13 14 task body T is 15 begin 16 accept Change (Inc : Integer) do 17 for I in My_Array.data'range loop 18 My_Array.Data (I).Point := Inc; 19 end loop; 20 end; 21 22 accept Sum (Result : out Integer) do 23 Result := 0; 24 for I in My_Array.data'range loop 25 Result := Result + My_Array.Data (I).Point; 26 end loop; 27 end; 28 end T; 29 30 Gang : array (1..10) of T; 31 32begin 33 for J in Gang'range loop 34 Gang (J).Change (J); 35 end loop; 36 37 -- Verify the contents of each local thread storage. 38 39 for J in Gang'range loop 40 Gang (J).Sum (Result); 41 pragma Assert (Result = J * 500); 42 end loop; 43 44 -- Verify that original data is unaffected. 45 46 for J in My_Array.Data'range loop 47 Result := Result + My_Array.Data (J).Point; 48 end loop; 49 50 pragma Assert (Result = 500); 51end TLS1; 52