aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gnat.dg/nested_proc1.adb
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gnat.dg/nested_proc1.adb')
-rw-r--r--gcc/testsuite/gnat.dg/nested_proc1.adb33
1 files changed, 33 insertions, 0 deletions
diff --git a/gcc/testsuite/gnat.dg/nested_proc1.adb b/gcc/testsuite/gnat.dg/nested_proc1.adb
new file mode 100644
index 00000000000..b3abf262578
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/nested_proc1.adb
@@ -0,0 +1,33 @@
+-- { dg-do run }
+-- Test that a static link is correctly passed to a subprogram which is
+-- indirectly called through an aggregate.
+
+procedure Nested_Proc1 is
+
+ I : Integer := 0;
+
+ procedure P1 (X : Integer) is
+ begin
+ I := X;
+ end;
+
+ type Func_Ptr is access procedure (X : Integer);
+
+ type Arr is array (1..64) of Integer;
+
+ type Rec is record
+ F : Func_Ptr;
+ A : Arr;
+ end record;
+
+ procedure P2 (R : Rec) is
+ begin
+ R.F (1);
+ end;
+
+begin
+ P2 ((F => P1'Access, A => (others => 0)));
+ if I /= 1 then
+ raise Program_Error;
+ end if;
+end;