diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 784f271d8e..a409c4d6e7 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2009-03-19 Jerome Guitton + + * gdb.ada/fixed_points/fixed_points.adb: Add a test on overprecise + deltas. + * gdb.ada/fixed_points.exp: Ditto. + 2009-03-18 Pedro Alves * return-nodebug.c: Don't include stdio.h. diff --git a/gdb/testsuite/gdb.ada/fixed_points.exp b/gdb/testsuite/gdb.ada/fixed_points.exp index b3992446ac..abc94c8530 100644 --- a/gdb/testsuite/gdb.ada/fixed_points.exp +++ b/gdb/testsuite/gdb.ada/fixed_points.exp @@ -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" diff --git a/gdb/testsuite/gdb.ada/fixed_points/fixed_points.adb b/gdb/testsuite/gdb.ada/fixed_points/fixed_points.adb index eab016f91a..f3e4cf0158 100644 --- a/gdb/testsuite/gdb.ada/fixed_points/fixed_points.adb +++ b/gdb/testsuite/gdb.ada/fixed_points/fixed_points.adb @@ -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; + 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; + + 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;