aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2011-05-17 13:53:26 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2011-05-17 13:53:26 +0000
commitcc0fd50a42ec4bdb6f055b0d760c92994845128d (patch)
treed0fcbaad931040359e71713bb3a52e4761ce8e23 /gcc
parent008bad7a3e6acb60189dd289f3b2367b2f18a923 (diff)
downloadgcc-cc0fd50a42ec4bdb6f055b0d760c92994845128d.zip
gcc-cc0fd50a42ec4bdb6f055b0d760c92994845128d.tar.gz
gcc-cc0fd50a42ec4bdb6f055b0d760c92994845128d.tar.bz2
* gnat.dg/invalid1.adb: New test.
From-SVN: r173831
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gnat.dg/invalid1.adb49
2 files changed, 53 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index d0fa8a6..841c72d 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2011-05-17 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/invalid1.adb: New test.
+
2011-05-16 Uros Bizjak <ubizjak@gmail.com>
* gcc.target/i386/avx-vzeroupper-16.c: Update scan-assembler-times
diff --git a/gcc/testsuite/gnat.dg/invalid1.adb b/gcc/testsuite/gnat.dg/invalid1.adb
new file mode 100644
index 0000000..ff9b34a
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/invalid1.adb
@@ -0,0 +1,49 @@
+-- { dg-do run }
+-- { dg-options "-gnatws -gnatVa" }
+
+pragma Initialize_Scalars;
+
+procedure Invalid1 is
+
+ X : Boolean;
+ A : Boolean := False;
+
+ procedure Uninit (B : out Boolean) is
+ begin
+ if A then
+ B := True;
+ raise Program_Error;
+ end if;
+ end;
+
+begin
+
+ -- first, check that initialize_scalars is enabled
+ begin
+ if X then
+ A := False;
+ end if;
+ raise Program_Error;
+ exception
+ when Constraint_Error => null;
+ end;
+
+ -- second, check if copyback of an invalid value raises constraint error
+ begin
+ Uninit (A);
+ if A then
+ -- we expect constraint error in the 'if' above according to gnat ug:
+ -- ....
+ -- call. Note that there is no specific option to test `out'
+ -- parameters, but any reference within the subprogram will be tested
+ -- in the usual manner, and if an invalid value is copied back, any
+ -- reference to it will be subject to validity checking.
+ -- ...
+ raise Program_Error;
+ end if;
+ raise Program_Error;
+ exception
+ when Constraint_Error => null;
+ end;
+
+end;