| -- { dg-do compile } |
| -- { dg-options "-fdump-tree-gimple" } |
| |
| with VFA1_Pkg; use VFA1_Pkg; |
| |
| procedure VFA1_4 is |
| |
| Temp : Int8_t; |
| |
| function F (I : Int8_t) return Int8_t is |
| begin |
| return I; |
| end; |
| |
| function F2 return Int8_t is |
| begin |
| return Int8_t(Mixer1(1).R); |
| end; |
| |
| procedure P3 (I : out Int8_t) is |
| begin |
| null; |
| end; |
| |
| begin |
| |
| Temp := Mixer1(1).R; |
| Mixer1(2).R := Temp; |
| |
| Temp := Mixer2(1).R; |
| Mixer2(2).R := Temp; |
| |
| Temp := Mixer1(1).R + Mixer2(2).R; |
| |
| if Mixer1(1).R /= Mixer2(2).R then |
| raise Program_Error; |
| end if; |
| |
| Temp := F(Mixer1(1).R); |
| Mixer2(2).R := F(Temp); |
| |
| Temp := F(Mixer2(2).R); |
| Mixer1(1).R := F(Temp); |
| |
| Temp := F2; |
| P3 (Mixer2(2).R); |
| |
| end; |
| |
| -- { dg-final { scan-tree-dump-times "atomic_load\[^\n\r\]*&vfa1_pkg__mixer1" 7 "gimple"} } |
| -- { dg-final { scan-tree-dump-times "atomic_load\[^\n\r\]*&vfa1_pkg__mixer2" 7 "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__mixer1" 2 "gimple"} } |
| -- { dg-final { scan-tree-dump-times "atomic_store\[^\n\r\]*&vfa1_pkg__mixer2" 3 "gimple"} } |
| -- { dg-final { scan-tree-dump-times "atomic_store\[^\n\r\]*&temp" 0 "gimple"} } |
| |