| -- { 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"} } |
| |