aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gnat.dg/vfa1_1.adb
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gnat.dg/vfa1_1.adb')
-rw-r--r--gcc/testsuite/gnat.dg/vfa1_1.adb60
1 files changed, 60 insertions, 0 deletions
diff --git a/gcc/testsuite/gnat.dg/vfa1_1.adb b/gcc/testsuite/gnat.dg/vfa1_1.adb
new file mode 100644
index 0000000..ac27a3c
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/vfa1_1.adb
@@ -0,0 +1,60 @@
+-- { 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"} }
+
+-- { dg-final { cleanup-tree-dump "gimple" } }