aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/ada/acats/tests/c4/c456001.a
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.9/gcc/testsuite/ada/acats/tests/c4/c456001.a')
-rw-r--r--gcc-4.9/gcc/testsuite/ada/acats/tests/c4/c456001.a91
1 files changed, 91 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/ada/acats/tests/c4/c456001.a b/gcc-4.9/gcc/testsuite/ada/acats/tests/c4/c456001.a
new file mode 100644
index 000000000..9062f93fc
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/ada/acats/tests/c4/c456001.a
@@ -0,0 +1,91 @@
+-- C456001.A
+--
+-- Grant of Unlimited Rights
+--
+-- The Ada Conformity Assessment Authority (ACAA) holds unlimited
+-- rights in the software and documentation contained herein. Unlimited
+-- rights are the same as those granted by the U.S. Government for older
+-- parts of the Ada Conformity Assessment Test Suite, and are defined
+-- in DFAR 252.227-7013(a)(19). By making this public release, the ACAA
+-- intends to confer upon all recipients unlimited rights equal to those
+-- held by the ACAA. These rights include rights to use, duplicate,
+-- release or disclose the released technical data and computer software
+-- in whole or in part, in any manner and for any purpose whatsoever, and
+-- to have or permit others to do so.
+--
+-- DISCLAIMER
+--
+-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
+-- DISCLOSED ARE AS IS. THE ACAA MAKES NO EXPRESS OR IMPLIED
+-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
+-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
+-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
+-- PARTICULAR PURPOSE OF SAID MATERIAL.
+--
+-- Notice
+--
+-- The ACAA has created and maintains the Ada Conformity Assessment Test
+-- Suite for the purpose of conformity assessments conducted in accordance
+-- with the International Standard ISO/IEC 18009 - Ada: Conformity
+-- assessment of a language processor. This test suite should not be used
+-- to make claims of conformance unless used in accordance with
+-- ISO/IEC 18009 and any applicable ACAA procedures.
+--
+--*
+-- OBJECTIVE:
+-- For exponentiation of floating point types, check that
+-- Constraint_Error is raised (or, if no exception is raised and
+-- Machine_Overflows is False, that a result is produced) if the
+-- result is outside of the range of the base type.
+-- This tests digits 5.
+
+-- HISTORY:
+-- 04/30/03 RLB Created test from old C45622A and C45624A.
+
+with Report;
+
+procedure C456001 is
+
+ type Flt is digits 5;
+
+ F : Flt;
+
+ function Equal_Flt (One, Two : Flt) return Boolean is
+ -- Break optimization.
+ begin
+ return One = Two * Flt (Report.Ident_Int(1));
+ end Equal_Flt;
+
+begin
+ Report.Test ("C456001", "For exponentiation of floating point types, " &
+ "check that Constraint_Error is raised (or, if " &
+ "if no exception is raised and Machine_Overflows is " &
+ "False, that a result is produced) if the result is " &
+ "outside of the range of the base type.");
+
+ begin
+ F := (Flt'Base'Last)**Report.Ident_Int (2);
+ if Flt'Machine_Overflows Then
+ Report.Failed ("Constraint_Error was not raised for " &
+ "exponentiation");
+ else
+ -- RM95 3.5.6(7) allows disobeying RM95 4.5(10) if
+ -- Machine_Overflows is False.
+ Report.Comment ("Constraint_Error was not raised for " &
+ "exponentiation and Machine_Overflows is False");
+ end if;
+ if not Equal_Flt (F, F) then
+ -- Optimization breaker, F must be evaluated.
+ Report.Comment ("Don't optimize F");
+ end if;
+ exception
+ when Constraint_Error =>
+ Report.Comment ("Constraint_Error was raised for " &
+ "exponentiation");
+ when others =>
+ Report.Failed ("An exception other than Constraint_Error " &
+ "was raised for exponentiation");
+ end;
+
+ Report.Result;
+end C456001;