2017-09-26 Thomas Koenig <tkoenig@gcc.gnu.org>
[official-gcc.git] / gcc / testsuite / gnat.dg / vfa1_3.adb
blobe6c9e6e2dbe9c8e13ef0a85c4fc54167c76dc83f
1 -- { dg-do compile }
2 -- { dg-options "-fdump-tree-gimple" }
4 with VFA1_Pkg; use VFA1_Pkg;
6 procedure VFA1_3 is
8 Temp : Short_Integer;
10 function F (I : Short_Integer) return Short_Integer is
11 begin
12 return I;
13 end;
15 function F2 return Short_Integer is
16 begin
17 return Short_Integer(Buffer1.A);
18 end;
20 procedure P3 (I : out Short_Integer) is
21 begin
22 null;
23 end;
25 begin
27 Temp := Buffer1.A;
28 Buffer1.B := Temp;
30 Temp := Buffer2.A;
31 Buffer2.B := Temp;
33 Temp := Buffer1.A + Buffer2.B;
35 if Buffer1.A /= Buffer2.B then
36 raise Program_Error;
37 end if;
39 Temp := F(Buffer1.A);
40 Buffer2.B := F(Temp);
42 Temp := F(Buffer2.B);
43 Buffer1.A := F(Temp);
45 Temp := F2;
46 P3 (Buffer2.B);
48 end;
50 -- { dg-final { scan-tree-dump-times "atomic_load\[^\n\r\]*&vfa1_pkg__buffer1" 7 "gimple"} }
51 -- { dg-final { scan-tree-dump-times "atomic_load\[^\n\r\]*&vfa1_pkg__buffer2" 7 "gimple"} }
52 -- { dg-final { scan-tree-dump-times "atomic_load\[^\n\r\]*&temp" 0 "gimple"} }
54 -- { dg-final { scan-tree-dump-times "atomic_store\[^\n\r\]*&vfa1_pkg__buffer1" 2 "gimple"} }
55 -- { dg-final { scan-tree-dump-times "atomic_store\[^\n\r\]*&vfa1_pkg__buffer2" 3 "gimple"} }
56 -- { dg-final { scan-tree-dump-times "atomic_store\[^\n\r\]*&temp" 0 "gimple"} }