From 21d0fa1ef08190fcfe68bd0d00ac3da0ad7afa1b Mon Sep 17 00:00:00 2001
From: Arnaud Charlet <charlet@gcc.gnu.org>
Date: Thu, 16 Aug 2007 15:51:43 +0200
Subject: [PATCH] Add new tests.

From-SVN: r127555
---
 gcc/testsuite/gnat.dg/deref1.ads         |  4 +++
 gcc/testsuite/gnat.dg/deref2.ads         | 13 ++++++++++
 gcc/testsuite/gnat.dg/deref3.adb         | 10 ++++++++
 gcc/testsuite/gnat.dg/discr_test.adb     | 31 ++++++++++++++++++++++++
 gcc/testsuite/gnat.dg/elim1.adb          |  6 +++++
 gcc/testsuite/gnat.dg/elim1.ads          |  5 ++++
 gcc/testsuite/gnat.dg/elim2.adb          |  7 ++++++
 gcc/testsuite/gnat.dg/specs/limited1.ads | 12 +++++++++
 8 files changed, 88 insertions(+)
 create mode 100644 gcc/testsuite/gnat.dg/deref1.ads
 create mode 100644 gcc/testsuite/gnat.dg/deref2.ads
 create mode 100644 gcc/testsuite/gnat.dg/deref3.adb
 create mode 100644 gcc/testsuite/gnat.dg/discr_test.adb
 create mode 100644 gcc/testsuite/gnat.dg/elim1.adb
 create mode 100644 gcc/testsuite/gnat.dg/elim1.ads
 create mode 100644 gcc/testsuite/gnat.dg/elim2.adb
 create mode 100644 gcc/testsuite/gnat.dg/specs/limited1.ads

diff --git a/gcc/testsuite/gnat.dg/deref1.ads b/gcc/testsuite/gnat.dg/deref1.ads
new file mode 100644
index 000000000000..3da99ab0ae57
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/deref1.ads
@@ -0,0 +1,4 @@
+package deref1 is
+  type T is tagged limited null record;
+   procedure Op (Obj : in out T);
+end deref1;
diff --git a/gcc/testsuite/gnat.dg/deref2.ads b/gcc/testsuite/gnat.dg/deref2.ads
new file mode 100644
index 000000000000..84d509f91510
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/deref2.ads
@@ -0,0 +1,13 @@
+with deref1;
+package deref2 is
+   type NT is tagged limited private;
+   
+   function PT_View (Obj : not null access NT)
+     return not null access deref1.T'Class;
+private
+   type PT (Obj : not null access NT) is new deref1.T with null record;
+   
+   type NT is tagged limited record
+      PT_View : aliased PT (NT'Access);
+   end record;
+end;
diff --git a/gcc/testsuite/gnat.dg/deref3.adb b/gcc/testsuite/gnat.dg/deref3.adb
new file mode 100644
index 000000000000..b0edb18fb52c
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/deref3.adb
@@ -0,0 +1,10 @@
+--  { dg-do compile }
+
+with deref2;
+procedure deref3 is
+   Obj : aliased deref2.NT;
+begin
+   deref2.PT_View (Obj'Access).Op;
+   Obj.PT_View.all.Op;
+   Obj.PT_View.Op;
+end;
diff --git a/gcc/testsuite/gnat.dg/discr_test.adb b/gcc/testsuite/gnat.dg/discr_test.adb
new file mode 100644
index 000000000000..1a6a4d21d8db
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/discr_test.adb
@@ -0,0 +1,31 @@
+--  { dg-do compile }
+
+procedure Discr_Test is
+  procedure P is begin null; end P;
+
+  task type Tsk1 is
+    entry rvT;
+  end Tsk1;
+
+  task body Tsk1 is
+  begin
+    accept rvT;
+  end Tsk1;
+
+  task type Tsk2 (pS : not null access procedure) is
+    entry rvT;
+  end Tsk2;
+
+  task body Tsk2 is
+    tskT : Tsk1;
+  begin
+    accept rvT do
+      requeue tskT.rvT;
+    end rvT;
+    pS.all;
+  end;
+
+  Obj : Tsk2 (P'access);
+begin
+  Obj.rvT;
+end;
diff --git a/gcc/testsuite/gnat.dg/elim1.adb b/gcc/testsuite/gnat.dg/elim1.adb
new file mode 100644
index 000000000000..7d2ddd193d9e
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/elim1.adb
@@ -0,0 +1,6 @@
+package body elim1 is
+   procedure d (a : t) is
+   begin
+      null;
+   end; 
+end;
diff --git a/gcc/testsuite/gnat.dg/elim1.ads b/gcc/testsuite/gnat.dg/elim1.ads
new file mode 100644
index 000000000000..7a7bd3588b48
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/elim1.ads
@@ -0,0 +1,5 @@
+pragma Eliminate (p, d);
+package elim1 is
+   type t is tagged null record;
+   procedure d (a : t);       
+end;
diff --git a/gcc/testsuite/gnat.dg/elim2.adb b/gcc/testsuite/gnat.dg/elim2.adb
new file mode 100644
index 000000000000..a816f0890301
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/elim2.adb
@@ -0,0 +1,7 @@
+--  { dg-do run }
+
+with elim1;
+procedure elim2 is
+begin
+   null;
+end;
diff --git a/gcc/testsuite/gnat.dg/specs/limited1.ads b/gcc/testsuite/gnat.dg/specs/limited1.ads
new file mode 100644
index 000000000000..268eb227a320
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/specs/limited1.ads
@@ -0,0 +1,12 @@
+--  { dg-do compile }
+
+package limited1 is
+   pragma Pure;
+   
+   type Buffer is limited interface;
+   type Synchronous_Buffer_Type is synchronized interface and Buffer;
+   type Client_Buffer_Type is new Synchronous_Buffer_Type with private;
+
+private
+   type Client_Buffer_Type is new Synchronous_Buffer_Type with null record;
+end limited1;
-- 
GitLab