| -- { 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; |