runtime: allow preemption in fast syscall return
[official-gcc.git] / gcc / testsuite / gnat.dg / vfa1_1.adb
blobf173c3f95a53abbad0bbd70559566b727fd8b2bd
1 -- { dg-do compile }
2 -- { dg-options "-fdump-tree-gimple" }
4 with VFA1_Pkg; use VFA1_Pkg;
6 procedure VFA1_1 is
7 Temp : Integer;
9 function F (I : Integer) return Integer is
10 begin
11 return I;
12 end;
14 function F2 return Integer is
15 begin
16 return Integer(Counter1);
17 end;
19 procedure P3 (I : Out Integer) is
20 begin
21 null;
22 end;
24 begin
26 Counter1 := Int(Counter2);
27 Counter2 := Integer(Counter1);
29 Temp := Integer(Counter1);
30 Counter1 := Int(Temp);
32 Temp := Counter2;
33 Counter2 := Temp;
35 Temp := Integer (Counter1) + Counter2;
37 if Counter1 /= Int (Counter2) then
38 raise Program_Error;
39 end if;
41 Temp := F(Integer (Counter1));
42 Counter1 := Int(F(Temp));
44 Temp := F(Counter2);
45 Counter2 := F(Temp);
47 Temp := F2;
48 P3 (Counter2);
50 end;
52 -- { dg-final { scan-tree-dump-times "atomic_load\[^\n\r\]*&vfa1_pkg__counter1" 6 "gimple"} }
53 -- { dg-final { scan-tree-dump-times "atomic_load\[^\n\r\]*&vfa1_pkg__counter2" 5 "gimple"} }
54 -- { dg-final { scan-tree-dump-times "atomic_load\[^\n\r\]*&temp" 0 "gimple"} }
56 -- { dg-final { scan-tree-dump-times "atomic_store\[^\n\r\]*&vfa1_pkg__counter1" 3 "gimple"} }
57 -- { dg-final { scan-tree-dump-times "atomic_store\[^\n\r\]*&vfa1_pkg__counter2" 4 "gimple"} }
58 -- { dg-final { scan-tree-dump-times "atomic_store\[^\n\r\]*&temp" 0 "gimple"} }