60 lines
1.3 KiB
Ada
60 lines
1.3 KiB
Ada
-- { dg-do compile }
|
|
-- { dg-options "-fdump-tree-gimple" }
|
|
|
|
with VFA1_Pkg; use VFA1_Pkg;
|
|
|
|
procedure VFA1_1 is
|
|
Temp : Integer;
|
|
|
|
function F (I : Integer) return Integer is
|
|
begin
|
|
return I;
|
|
end;
|
|
|
|
function F2 return Integer is
|
|
begin
|
|
return Integer(Counter1);
|
|
end;
|
|
|
|
procedure P3 (I : Out Integer) is
|
|
begin
|
|
null;
|
|
end;
|
|
|
|
begin
|
|
|
|
Counter1 := Int(Counter2);
|
|
Counter2 := Integer(Counter1);
|
|
|
|
Temp := Integer(Counter1);
|
|
Counter1 := Int(Temp);
|
|
|
|
Temp := Counter2;
|
|
Counter2 := Temp;
|
|
|
|
Temp := Integer (Counter1) + Counter2;
|
|
|
|
if Counter1 /= Int (Counter2) then
|
|
raise Program_Error;
|
|
end if;
|
|
|
|
Temp := F(Integer (Counter1));
|
|
Counter1 := Int(F(Temp));
|
|
|
|
Temp := F(Counter2);
|
|
Counter2 := F(Temp);
|
|
|
|
Temp := F2;
|
|
P3 (Counter2);
|
|
|
|
end;
|
|
|
|
-- { dg-final { scan-tree-dump-times "atomic_load\[^\n\r\]*&vfa1_pkg__counter1" 6 "gimple"} }
|
|
-- { dg-final { scan-tree-dump-times "atomic_load\[^\n\r\]*&vfa1_pkg__counter2" 5 "gimple"} }
|
|
-- { dg-final { scan-tree-dump-times "atomic_load\[^\n\r\]*&temp" 0 "gimple"} }
|
|
|
|
-- { dg-final { scan-tree-dump-times "atomic_store\[^\n\r\]*&vfa1_pkg__counter1" 3 "gimple"} }
|
|
-- { dg-final { scan-tree-dump-times "atomic_store\[^\n\r\]*&vfa1_pkg__counter2" 4 "gimple"} }
|
|
-- { dg-final { scan-tree-dump-times "atomic_store\[^\n\r\]*&temp" 0 "gimple"} }
|
|
|