* gnat.dg/discr45.adb: New test.
authorEric Botcazou <ebotcazou@adacore.com>
Sat, 31 Oct 2015 17:13:32 +0000 (17:13 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Sat, 31 Oct 2015 17:13:32 +0000 (17:13 +0000)
From-SVN: r229630

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

index 85dff2ef2f7ee84ad85986084db691fc2497e7fd..d6956cf95ff07bf61d325756e167307a1d84b650 100644 (file)
@@ -1,3 +1,7 @@
+2015-10-31  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gnat.dg/discr45.adb: New test.
+
 2015-10-31  Tom de Vries  <tom@codesourcery.com>
 
        * gfortran.dg/assumed_type_2.f90: Update test.
diff --git a/gcc/testsuite/gnat.dg/discr45.adb b/gcc/testsuite/gnat.dg/discr45.adb
new file mode 100644 (file)
index 0000000..0d0b4dc
--- /dev/null
@@ -0,0 +1,44 @@
+-- { dg-do run }
+-- { dg-options "-O2 -gnatws" }
+
+procedure Discr45 is
+
+  function Ident_Int (I : Integer) return Integer is
+  begin
+    return I;
+  end;
+
+  procedure Proc (Signal : Boolean) is
+
+    subtype Index is Integer range 1..10;
+
+    type My_Arr is array (Index range <>) OF Integer;
+
+    type Rec (D3 : Integer := Ident_Int(1)) is record
+      case D3 is
+        when -5..10 => C1 : My_Arr(D3..Ident_Int(11));
+        when Others => C2 : Integer := Ident_Int(5);
+      end case;
+    end record;
+
+    X : Rec;
+
+    function Value return Rec;
+    pragma No_Inline (Value);
+
+    function Value return Rec is
+    begin
+      return X;
+    end;
+
+  begin
+    if X /= Value then
+      raise Constraint_Error;
+    elsif Signal then
+      raise Program_Error;
+    end if;
+  end;
+
+begin
+  Proc (True);
+end;