diff options
Diffstat (limited to 'gcc/testsuite/gnat.dg/specs')
-rw-r--r-- | gcc/testsuite/gnat.dg/specs/import_abstract.ads | 6 | ||||
-rw-r--r-- | gcc/testsuite/gnat.dg/specs/pack4.ads | 12 | ||||
-rw-r--r-- | gcc/testsuite/gnat.dg/specs/pack5.ads | 13 | ||||
-rw-r--r-- | gcc/testsuite/gnat.dg/specs/rep_clause4.ads | 42 |
4 files changed, 73 insertions, 0 deletions
diff --git a/gcc/testsuite/gnat.dg/specs/import_abstract.ads b/gcc/testsuite/gnat.dg/specs/import_abstract.ads new file mode 100644 index 00000000000..9d05f0c1ceb --- /dev/null +++ b/gcc/testsuite/gnat.dg/specs/import_abstract.ads @@ -0,0 +1,6 @@ +-- { dg-do compile } +package Import_Abstract is + type T1 is abstract tagged null record; + procedure p1(X : T1) is abstract; + pragma Import (Ada, p1); -- { dg-error "cannot import abstract subprogram" } +end Import_Abstract; diff --git a/gcc/testsuite/gnat.dg/specs/pack4.ads b/gcc/testsuite/gnat.dg/specs/pack4.ads new file mode 100644 index 00000000000..82b76d2f457 --- /dev/null +++ b/gcc/testsuite/gnat.dg/specs/pack4.ads @@ -0,0 +1,12 @@ +package Pack4 is + + type Buffer is array (Natural range <>) of Boolean; + + type Root (Size : Natural) is tagged record + Data : Buffer (1..Size); + end record; + pragma Pack (Root); + + type Derived is new Root with null record; + +end Pack4; diff --git a/gcc/testsuite/gnat.dg/specs/pack5.ads b/gcc/testsuite/gnat.dg/specs/pack5.ads new file mode 100644 index 00000000000..65c8fc744de --- /dev/null +++ b/gcc/testsuite/gnat.dg/specs/pack5.ads @@ -0,0 +1,13 @@ +package Pack5 is + + type Small is range -32 .. 31; + + type Arr is array (Integer range <>) of Small; + pragma Pack (Arr); + + type Rec is record + Y: Arr (1 .. 10); + end record; + pragma Pack (Rec); + +end Pack5; diff --git a/gcc/testsuite/gnat.dg/specs/rep_clause4.ads b/gcc/testsuite/gnat.dg/specs/rep_clause4.ads new file mode 100644 index 00000000000..8009f876cf2 --- /dev/null +++ b/gcc/testsuite/gnat.dg/specs/rep_clause4.ads @@ -0,0 +1,42 @@ +-- { dg-do compile } +-- { dg-options "-O" } + +package Rep_Clause4 is + + type Uns16 is mod 2**16; + + type Rec32 is + record + W1 : Uns16 := 1; + W2 : Uns16 := 2; + end record; + for Rec32 use + record + W1 at 0 range 0..15; + W2 at 2 range 0..15; + end record; + for Rec32'size use 32; + + type Rec48 is + record + W1andW2 : Rec32; + W3 : Uns16; + end record; + for Rec48 use + record + W1andW2 at 0 range 0..31; + W3 at 4 range 0..15; + end record; + for Rec48'size use 48; + + type Rec_Type is + record + Field1 : Rec48; + end record; + for Rec_Type use + record + Field1 at 0 range 0 .. 47; + end record; + for Rec_Type'size use 48; + +end Rep_Clause4; |