blob: d45105d719c9b4aab7d8e1c84f44e455b9d767be [file] [log] [blame]
-- { dg-do run }
with Text_IO; use Text_IO;
with TLS1_Pkg; use TLS1_Pkg;
procedure TLS1 is
Result : Integer;
task type T is
entry Change (Inc : Integer);
entry Sum (Result : out Integer);
end T;
task body T is
begin
accept Change (Inc : Integer) do
for I in My_Array.data'range loop
My_Array.Data (I).Point := Inc;
end loop;
end;
accept Sum (Result : out Integer) do
Result := 0;
for I in My_Array.data'range loop
Result := Result + My_Array.Data (I).Point;
end loop;
end;
end T;
Gang : array (1..10) of T;
begin
for J in Gang'range loop
Gang (J).Change (J);
end loop;
-- Verify the contents of each local thread storage.
for J in Gang'range loop
Gang (J).Sum (Result);
pragma Assert (Result = J * 500);
end loop;
-- Verify that original data is unaffected.
for J in My_Array.Data'range loop
Result := Result + My_Array.Data (J).Point;
end loop;
pragma Assert (Result = 500);
end TLS1;