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]

[commit/ada+testsuite] fix comparison between fixed point and litteral


This patch fixes a problem when comparing a fixed-point variable
with a litteral value (either a float or an integer). For instance:

    procedure Fixed is
       type Fixed_Point_Type is delta 0.001 range 0.0 .. 1000.0;
    
       My_Var : Fixed_Point_Type := 14.0;
    begin
       Do_Nothing (My_Var'Address);  -- STOP
    end Fixed;

The code above is part of the testcase that I am checking in
with this patch. Stop at "Do_Nothing", and do the following:

        (gdb) p my_var
        $1 = 14
        (gdb) p my_var > 10
        $2 = true
        (gdb) p my_var > 20
 !!! -> $3 = true
        (gdb) p my_var > 20.0
 !!! -> $4 = true

The expected output is:

        (gdb) p my_var > 20
        $3 = false
        (gdb) p my_var > 20.0
        $4 = false

The problem boils down to us comparing apples and oranges...
Fixed thusly:

2007-12-27  Joel Brobecker  <brobecker@adacore.com>

        * ada-lang.c (ada_value_cast): New function, extracted out from
        the code in ada_evaluate_subexp, case UNOP_CAST.  The code handling
        the obscure case has been removed as we think that it is actually
        unnecessary.
        (ada_evaluate_subexp): Add type case when evaluating an OP_DOUBLE
        or an OP_LONG with a non-null expect_type. Replace extracted-out
        code with call to new ada_value_cast function.

Tested on x86-linux. Checked in.

I also committed the following simple testcase for it:

2007-12-27  Joel Brobecker  <brobecker@adacore.com>

        * gdb.ada/fixed_cmp/pck.ads, gdb.ada/fixed_cmp/pck.adb,
        gdb.ada/fixed_cmp/fixed.adb: New files.
        * gdb.ada/fixed_cmp.exp: New testcase.

Also tested on x86-linux.

-- 
Joel

Attachment: fixed-cmp.diff
Description: Text document

Attachment: pck.adb
Description: Text document

Attachment: pck.ads
Description: Text document

Attachment: fixed.adb
Description: Text document

Attachment: fixed_cmp.exp
Description: Text document


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