This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[RFA/testsuite/ada] fixed-point types with overprecise deltas


This is a new testcase for a bug with Ada fixed-point types, fixed by
this patch:

http://sourceware.org/ml/gdb-patches/2009-03/msg00186.html

OK to apply?

2009-03-19  Jerome Guitton  <guitton@adacore.com>

	* gdb.ada/fixed_points/fixed_points.adb: Add a test on overprecise
	deltas.
	* gdb.ada/fixed_points.exp: Ditto.

Index: fixed_points.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.ada/fixed_points.exp,v
retrieving revision 1.10
diff -u -p -r1.10 fixed_points.exp
--- fixed_points.exp	3 Jan 2009 05:57:58 -0000	1.10
+++ fixed_points.exp	19 Mar 2009 12:09:59 -0000
@@ -37,6 +37,8 @@ gdb_load ${binfile}
 set bp_location [gdb_get_line_number "Set breakpoint here" ${testdir}/fixed_points.adb]
 runto "fixed_points.adb:$bp_location"
 
+# Fixed point subtypes:
+
 gdb_test "print base_object" \
          "= -50" \
          "p on a fixed point type"
@@ -48,3 +50,11 @@ gdb_test "print subtype_object" \
 gdb_test "print new_type_object" \
          "= -50" \
          "p on a new fixed point type"
+
+# Overprecise delta:
+
+gdb_test "print Overprecise_Object" \
+         "= 0.13579135791"
+
+gdb_test "ptype Overprecise_Object" \
+         "= delta 0.135791"
Index: fixed_points/fixed_points.adb
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.ada/fixed_points/fixed_points.adb,v
retrieving revision 1.5
diff -u -p -r1.5 fixed_points.adb
--- fixed_points/fixed_points.adb	3 Jan 2009 05:57:59 -0000	1.5
+++ fixed_points/fixed_points.adb	19 Mar 2009 12:09:59 -0000
@@ -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;

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]