diff options
Diffstat (limited to 'gcc/testsuite/gnat.dg/sso/init2.ads')
-rw-r--r-- | gcc/testsuite/gnat.dg/sso/init2.ads | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/gcc/testsuite/gnat.dg/sso/init2.ads b/gcc/testsuite/gnat.dg/sso/init2.ads new file mode 100644 index 00000000000..48a1962b3bd --- /dev/null +++ b/gcc/testsuite/gnat.dg/sso/init2.ads @@ -0,0 +1,69 @@ +with System; + +package Init2 is + + type Small is mod 2**2; + for Small'Size use 2; + + type Count is mod 2**9; + for Count'Size use 9; + + type Arr1 is array (1 .. 3) of Count; + pragma Pack (Arr1); + for Arr1'Size use 27; + for Arr1'Scalar_Storage_Order use System.Low_Order_First; + + type R1 is record + S1 : Small; + I : Integer; + S2 : Small; + A : Arr1; + B : Boolean; + end record; + for R1'Bit_Order use System.Low_Order_First; + for R1'Scalar_Storage_Order use System.Low_Order_First; + for R1 use record + S1 at 0 range 0 .. 1; + I at 0 range 2 .. 33; + S2 at 0 range 34 .. 35; + A at 0 range 36 .. 62; + B at 0 range 63 .. 63; + end record; + for R1'Size use 64; + + type Arr2 is array (1 .. 3) of Count; + pragma Pack (Arr2); + for Arr2'Size use 27; + for Arr2'Scalar_Storage_Order use System.High_Order_First; + + type R2 is record + S1 : Small; + I : Integer; + S2 : Small; + A : Arr2; + B : Boolean; + end record; + for R2'Bit_Order use System.High_Order_First; + for R2'Scalar_Storage_Order use System.High_Order_First; + for R2 use record + S1 at 0 range 0 .. 1; + I at 0 range 2 .. 33; + S2 at 0 range 34 .. 35; + A at 0 range 36 .. 62; + B at 0 range 63 .. 63; + end record; + for R2'Size use 64; + + My_R1 : constant R1 := (S1 => 2, + I => 16#12345678#, + S2 => 1, + A => (16#AB#, 16#CD#, 16#EF#), + B => True); + + My_R2 : constant R2 := (S1 => 2, + I => 16#12345678#, + S2 => 1, + A => (16#AB#, 16#CD#, 16#EF#), + B => True); + +end Init2; |