-- { dg-do run } procedure Atomic8 is V : array (1 .. 2) of Natural := (0,0) with Atomic_Components; task type TT1; task body TT1 is begin while V (1) + V (2) < 1_000_000 loop V (1) := V (1) + 1; end loop; end TT1; task type TT2; task body TT2 is begin while V (1) + V (2) < 1_000_000 loop V (2) := V (2) + 1; end loop; end TT2; begin declare T1 : TT1; T2 : TT2; begin null; end; if V (1) + V (2) not in 1_000_000 | 1_000_001 then raise Program_Error; end if; end;