* gnat.dg/pack10.adb: New test.
authorEric Botcazou <ebotcazou@adacore.com>
Tue, 1 Jul 2008 08:21:31 +0000 (08:21 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Tue, 1 Jul 2008 08:21:31 +0000 (08:21 +0000)
From-SVN: r137311

gcc/testsuite/ChangeLog
gcc/testsuite/gnat.dg/pack10.adb [new file with mode: 0644]

index 07999bd238473f50b0af69d6ef906eead40762b7..b833faa44cb3cd2fa2dc44c08b13b5771542f890 100644 (file)
@@ -1,3 +1,7 @@
+2008-07-01  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gnat.dg/pack10.adb: New test.
+
 2008-06-30  Andy Hutchinson  <hutchinsonandy@aim.com>
 
        PR target/36598
diff --git a/gcc/testsuite/gnat.dg/pack10.adb b/gcc/testsuite/gnat.dg/pack10.adb
new file mode 100644 (file)
index 0000000..945e404
--- /dev/null
@@ -0,0 +1,34 @@
+-- { dg-do run }
+
+procedure Pack10 is
+
+  type U16 is mod 2**16;
+  type U8 is mod 2**8;
+
+  type R is record
+    A : U16;
+    B : U8;
+  end record;
+
+  type M is array (1..2) of R;
+  pragma Pack (M);
+  -- This size clause can actually be omitted
+  for M'Size use 48;
+
+  type R2 is record
+    C : M;
+    D : U8;
+  end record;
+  for R2 use record
+    C at 0 range 0 .. 24*2-1;
+  end record;
+
+  My_R2 : R2;
+
+begin
+  My_R2.D := 1;
+  My_R2.C(2).B := 0;
+  if My_R2.D /=1 then
+    raise Program_Error;
+  end if;
+end;