summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gnat.dg
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gnat.dg')
-rw-r--r--gcc/testsuite/gnat.dg/controlled6.adb24
-rw-r--r--gcc/testsuite/gnat.dg/controlled6_pkg-iterators.adb21
-rw-r--r--gcc/testsuite/gnat.dg/controlled6_pkg-iterators.ads22
-rw-r--r--gcc/testsuite/gnat.dg/controlled6_pkg.ads15
-rw-r--r--gcc/testsuite/gnat.dg/pack18.adb12
-rw-r--r--gcc/testsuite/gnat.dg/pack18_pkg.ads21
-rw-r--r--gcc/testsuite/gnat.dg/specs/aggr5.ads19
-rw-r--r--gcc/testsuite/gnat.dg/vect7.adb20
-rw-r--r--gcc/testsuite/gnat.dg/vect7.ads15
9 files changed, 169 insertions, 0 deletions
diff --git a/gcc/testsuite/gnat.dg/controlled6.adb b/gcc/testsuite/gnat.dg/controlled6.adb
new file mode 100644
index 00000000000..88640de7bea
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/controlled6.adb
@@ -0,0 +1,24 @@
+-- { dg-do compile }
+-- { dg-options "-O -gnatn" }
+
+with Ada.Text_IO; use Ada.Text_IO;
+with Controlled6_Pkg;
+with Controlled6_Pkg.Iterators;
+
+procedure Controlled6 is
+
+ type String_Access is access String;
+
+ package My_Q is new Controlled6_Pkg (String_Access);
+ package My_Iterators is new My_Q.Iterators (0);
+ use My_Iterators;
+
+ Iterator : Iterator_Type := Find;
+
+begin
+ loop
+ exit when Is_Null (Iterator);
+ Put (Current (Iterator).all & ' ');
+ Find_Next (Iterator);
+ end loop;
+end;
diff --git a/gcc/testsuite/gnat.dg/controlled6_pkg-iterators.adb b/gcc/testsuite/gnat.dg/controlled6_pkg-iterators.adb
new file mode 100644
index 00000000000..201a75c94cc
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/controlled6_pkg-iterators.adb
@@ -0,0 +1,21 @@
+package body Controlled6_Pkg.Iterators is
+
+ function Find return Iterator_Type is
+ Iterator : Iterator_Type;
+ begin
+ return Iterator;
+ end Find;
+
+ function Current (Iterator : in Iterator_Type) return T is begin
+ return Iterator.Current.Item;
+ end Current;
+
+ procedure Find_Next (Iterator : in out Iterator_Type) is begin
+ Iterator.Current := null;
+ end Find_Next;
+
+ function Is_Null (Iterator : in Iterator_Type) return Boolean is begin
+ return Iterator.Current = null;
+ end Is_Null;
+
+end Controlled6_Pkg.Iterators;
diff --git a/gcc/testsuite/gnat.dg/controlled6_pkg-iterators.ads b/gcc/testsuite/gnat.dg/controlled6_pkg-iterators.ads
new file mode 100644
index 00000000000..89330f6a3ba
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/controlled6_pkg-iterators.ads
@@ -0,0 +1,22 @@
+with Ada.Finalization;
+
+generic
+
+ I : Integer;
+
+package Controlled6_Pkg.Iterators is
+
+ type Iterator_Type is new Ada.Finalization.Controlled with record
+ Current : Node_Access_Type;
+ end record;
+
+ function Find return Iterator_Type;
+
+ function Current (Iterator : in Iterator_Type) return T;
+ pragma Inline (Current);
+
+ procedure Find_Next (Iterator : in out Iterator_Type);
+
+ function Is_Null (Iterator : in Iterator_Type) return Boolean;
+
+end Controlled6_Pkg.Iterators;
diff --git a/gcc/testsuite/gnat.dg/controlled6_pkg.ads b/gcc/testsuite/gnat.dg/controlled6_pkg.ads
new file mode 100644
index 00000000000..2f1052be981
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/controlled6_pkg.ads
@@ -0,0 +1,15 @@
+with Ada.Finalization;
+
+generic
+
+ type T is private;
+
+package Controlled6_Pkg is
+
+ type Node_Type is record
+ Item : T;
+ end record;
+
+ type Node_Access_Type is access Node_Type;
+
+end Controlled6_Pkg;
diff --git a/gcc/testsuite/gnat.dg/pack18.adb b/gcc/testsuite/gnat.dg/pack18.adb
new file mode 100644
index 00000000000..857a6f9787e
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/pack18.adb
@@ -0,0 +1,12 @@
+-- { dg-do run }
+
+with Pack18_Pkg; use Pack18_Pkg;
+
+procedure Pack18 is
+ use Pack18_Pkg.Attributes_Tables;
+ Table : Instance;
+begin
+ Init (Table);
+ Set_Last (Table, 1);
+ Table.Table (Last (Table)).N := 0;
+end;
diff --git a/gcc/testsuite/gnat.dg/pack18_pkg.ads b/gcc/testsuite/gnat.dg/pack18_pkg.ads
new file mode 100644
index 00000000000..2b63fbab063
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/pack18_pkg.ads
@@ -0,0 +1,21 @@
+with GNAT.Dynamic_Tables;
+
+package Pack18_Pkg is
+
+ type String_Access is access String;
+
+ type Rec is record
+ S : String_Access;
+ B : Boolean;
+ N : Natural;
+ end record;
+ pragma Pack (Rec);
+
+ package Attributes_Tables is new GNAT.Dynamic_Tables
+ (Table_Component_Type => Rec,
+ Table_Index_Type => Natural,
+ Table_Low_Bound => 1,
+ Table_Initial => 200,
+ Table_Increment => 200);
+
+end Pack18_Pkg;
diff --git a/gcc/testsuite/gnat.dg/specs/aggr5.ads b/gcc/testsuite/gnat.dg/specs/aggr5.ads
new file mode 100644
index 00000000000..ba1e695bca2
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/specs/aggr5.ads
@@ -0,0 +1,19 @@
+-- { dg-do compile }
+
+pragma Restrictions (No_Elaboration_Code);
+
+package Aggr5 is
+
+ type R is record
+ C : Character;
+ F : Float;
+ end record;
+
+ for R use record
+ C at 0 range 0 .. 7;
+ F at 1 range 0 .. 31;
+ end record;
+
+ My_R : R := (C => 'A', F => 1.0);
+
+end Aggr5;
diff --git a/gcc/testsuite/gnat.dg/vect7.adb b/gcc/testsuite/gnat.dg/vect7.adb
new file mode 100644
index 00000000000..7911cc812c6
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/vect7.adb
@@ -0,0 +1,20 @@
+-- { dg-do compile }
+
+package body Vect7 is
+
+ procedure Assign is
+ v1 : constant v4sf := (-1.0, -2.0, -3.0, -4.0);
+ v2 : v4sf := v1;
+ v3 : v4sf;
+ begin
+ v3 := vzero;
+ v3 := vconst;
+ v3 := v1;
+ v3 := v2;
+ v3 := (1.0, -2.0, 3.0, -4.0);
+ v3 := (1.0, -2.0, 3.0, F);
+
+ v2 := vzero;
+ end;
+
+end Vect7;
diff --git a/gcc/testsuite/gnat.dg/vect7.ads b/gcc/testsuite/gnat.dg/vect7.ads
new file mode 100644
index 00000000000..faf01679e23
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/vect7.ads
@@ -0,0 +1,15 @@
+package Vect7 is
+
+ type v4sf is array (1 .. 4) of Float;
+ for v4sf'Alignment use 16;
+ pragma Machine_Attribute (v4sf, "vector_type");
+
+ vzero : constant v4sf := (0.0, 0.0, 0.0, 0.0);
+ vconst : constant v4sf := (1.0, 2.0, 3.0, 4.0);
+ vvar : v4sf := vconst;
+
+ F : Float := 5.0;
+
+ procedure Assign;
+
+end Vect7;