merge from gcc
[external/binutils.git] / gdb / testsuite / gdb.ada / fixed_points / fixed_points.adb
index edc7702..8e949a2 100644 (file)
@@ -1,4 +1,4 @@
---  Copyright 2004, 2007 Free Software Foundation, Inc.
+--  Copyright 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
 --
 --  This program is free software; you can redistribute it and/or modify
 --  it under the terms of the GNU General Public License as published by
@@ -17,22 +17,47 @@ with System;
 
 procedure Fixed_Points is
 
+   ------------
+   -- Test 1 --
+   ------------
+
+   --  Fixed point subtypes
+
    type Base_Fixed_Point_Type is
      delta 1.0 / 16.0
        range (System.Min_Int / 2) * 1.0 / 16.0 ..
        (System.Max_Int / 2) * 1.0 / 16.0;
 
-     subtype Fixed_Point_Subtype is
-       Base_Fixed_Point_Type range -50.0 .. 50.0;
+   subtype Fixed_Point_Subtype is
+     Base_Fixed_Point_Type range -50.0 .. 50.0;
+
+   type New_Fixed_Point_Type is
+     new Base_Fixed_Point_Type range -50.0 .. 50.0;
+
+   Base_Object            : Base_Fixed_Point_Type := -50.0;
+   Subtype_Object         : Fixed_Point_Subtype := -50.0;
+   New_Type_Object        : New_Fixed_Point_Type := -50.0;
+
+
+   ------------
+   -- Test 2 --
+   ------------
+
+   --  Overprecise delta
+
+   Overprecise_Delta : constant := 0.135791357913579;
+   --  delta whose significant figures cannot be stored into a long.
+
+   type Overprecise_Fixed_Point is
+     delta Overprecise_Delta range 0.0 .. 200.0;
+   for Overprecise_Fixed_Point'Small use Overprecise_Delta;
 
-     type New_Fixed_Point_Type is
-       new Base_Fixed_Point_Type range -50.0 .. 50.0;
+   Overprecise_Object : Overprecise_Fixed_Point :=
+     Overprecise_Fixed_Point'Small;
 
-     Base_Object            : Base_Fixed_Point_Type := -50.0;
-     Subtype_Object         : Fixed_Point_Subtype := -50.0;
-     New_Type_Object        : New_Fixed_Point_Type := -50.0;
 begin
    Base_Object := 1.0/16.0;   -- Set breakpoint here
    Subtype_Object := 1.0/16.0;
    New_Type_Object := 1.0/16.0;
+   Overprecise_Object := Overprecise_Fixed_Point'Small * 2;
 end Fixed_Points;