Dead
[official-gcc.git] / gomp-20050608-branch / gcc / testsuite / ada / acats / tests / c4 / c456001.a
blob9062f93fc2ebb102d05c42ee428c6edca7b67447
1 -- C456001.A
2 --
3 -- Grant of Unlimited Rights
4 --
5 -- The Ada Conformity Assessment Authority (ACAA) holds unlimited
6 -- rights in the software and documentation contained herein. Unlimited
7 -- rights are the same as those granted by the U.S. Government for older
8 -- parts of the Ada Conformity Assessment Test Suite, and are defined
9 -- in DFAR 252.227-7013(a)(19). By making this public release, the ACAA
10 -- intends to confer upon all recipients unlimited rights equal to those
11 -- held by the ACAA. These rights include rights to use, duplicate,
12 -- release or disclose the released technical data and computer software
13 -- in whole or in part, in any manner and for any purpose whatsoever, and
14 -- to have or permit others to do so.
16 -- DISCLAIMER
18 -- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
19 -- DISCLOSED ARE AS IS. THE ACAA MAKES NO EXPRESS OR IMPLIED
20 -- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
21 -- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
22 -- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
23 -- PARTICULAR PURPOSE OF SAID MATERIAL.
25 -- Notice
27 -- The ACAA has created and maintains the Ada Conformity Assessment Test
28 -- Suite for the purpose of conformity assessments conducted in accordance
29 -- with the International Standard ISO/IEC 18009 - Ada: Conformity
30 -- assessment of a language processor. This test suite should not be used
31 -- to make claims of conformance unless used in accordance with
32 -- ISO/IEC 18009 and any applicable ACAA procedures.
34 --*
35 -- OBJECTIVE:
36 -- For exponentiation of floating point types, check that
37 -- Constraint_Error is raised (or, if no exception is raised and
38 -- Machine_Overflows is False, that a result is produced) if the
39 -- result is outside of the range of the base type.
40 -- This tests digits 5.
42 -- HISTORY:
43 -- 04/30/03 RLB Created test from old C45622A and C45624A.
45 with Report;
47 procedure C456001 is
49 type Flt is digits 5;
51 F : Flt;
53 function Equal_Flt (One, Two : Flt) return Boolean is
54 -- Break optimization.
55 begin
56 return One = Two * Flt (Report.Ident_Int(1));
57 end Equal_Flt;
59 begin
60 Report.Test ("C456001", "For exponentiation of floating point types, " &
61 "check that Constraint_Error is raised (or, if " &
62 "if no exception is raised and Machine_Overflows is " &
63 "False, that a result is produced) if the result is " &
64 "outside of the range of the base type.");
66 begin
67 F := (Flt'Base'Last)**Report.Ident_Int (2);
68 if Flt'Machine_Overflows Then
69 Report.Failed ("Constraint_Error was not raised for " &
70 "exponentiation");
71 else
72 -- RM95 3.5.6(7) allows disobeying RM95 4.5(10) if
73 -- Machine_Overflows is False.
74 Report.Comment ("Constraint_Error was not raised for " &
75 "exponentiation and Machine_Overflows is False");
76 end if;
77 if not Equal_Flt (F, F) then
78 -- Optimization breaker, F must be evaluated.
79 Report.Comment ("Don't optimize F");
80 end if;
81 exception
82 when Constraint_Error =>
83 Report.Comment ("Constraint_Error was raised for " &
84 "exponentiation");
85 when others =>
86 Report.Failed ("An exception other than Constraint_Error " &
87 "was raised for exponentiation");
88 end;
90 Report.Result;
91 end C456001;