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;