* ada-lang.c (cast_to_fixed): Do not cast to builtin_type_double.
authorUlrich Weigand <uweigand@de.ibm.com>
Thu, 11 Sep 2008 14:18:34 +0000 (14:18 +0000)
committerUlrich Weigand <uweigand@de.ibm.com>
Thu, 11 Sep 2008 14:18:34 +0000 (14:18 +0000)
(cast_from_fixed_to_double): Rename to ...
(cast_from_fixed): ... this.  Add TYPE parameter.  Use it instead
of builtin_type_double.
(ada_value_cast): Use cast_from_fixed instead of casting result
of cast_from_fixed_to_double.
(ada_evaluate_subexp): Update calls to cast_from_fixed_to_double.

gdb/ChangeLog
gdb/ada-lang.c

index aedacce09fb0aeb624f8308a8195d26c26e0c6de..b95c73532e2e9c9d4604bc84872f0999d58519b7 100644 (file)
@@ -1,3 +1,13 @@
+2008-09-11  Ulrich Weigand  <uweigand@de.ibm.com>
+
+       * ada-lang.c (cast_to_fixed): Do not cast to builtin_type_double.
+       (cast_from_fixed_to_double): Rename to ...
+       (cast_from_fixed): ... this.  Add TYPE parameter.  Use it instead
+       of builtin_type_double.
+       (ada_value_cast): Use cast_from_fixed instead of casting result
+       of cast_from_fixed_to_double.
+       (ada_evaluate_subexp): Update calls to cast_from_fixed_to_double. 
+
 2008-09-11  Ulrich Weigand  <uweigand@de.ibm.com>
 
        * valops.c (value_ind): No longer allow dereferencing an
index 75a98289544ac8709d235d3dc18f8a8d1453785e..74b2194d908355cce0ad8abe0d3de33fdfe58941 100644 (file)
@@ -7882,8 +7882,7 @@ cast_to_fixed (struct type *type, struct value *arg)
                                                   value_as_long (arg)));
   else
     {
-      DOUBLEST argd =
-        value_as_double (value_cast (builtin_type_double, value_copy (arg)));
+      DOUBLEST argd = value_as_double (arg);
       val = ada_float_to_fixed (type, argd);
     }
 
@@ -7891,11 +7890,11 @@ cast_to_fixed (struct type *type, struct value *arg)
 }
 
 static struct value *
-cast_from_fixed_to_double (struct value *arg)
+cast_from_fixed (struct type *type, struct value *arg)
 {
   DOUBLEST val = ada_fixed_to_float (value_type (arg),
                                      value_as_long (arg));
-  return value_from_double (builtin_type_double, val);
+  return value_from_double (type, val);
 }
 
 /* Coerce VAL as necessary for assignment to an lval of type TYPE, and
@@ -8349,7 +8348,7 @@ ada_value_cast (struct type *type, struct value *arg2, enum noside noside)
     return (cast_to_fixed (type, arg2));
 
   if (ada_is_fixed_point_type (value_type (arg2)))
-    return value_cast (type, cast_from_fixed_to_double (arg2));
+    return cast_from_fixed (type, arg2);
 
   return value_cast (type, arg2);
 }
@@ -8499,10 +8498,11 @@ ada_evaluate_subexp (struct type *expect_type, struct expression *exp,
         return value_zero (value_type (arg1), not_lval);
       else
         {
+          type = builtin_type (exp->gdbarch)->builtin_double;
           if (ada_is_fixed_point_type (value_type (arg1)))
-            arg1 = cast_from_fixed_to_double (arg1);
+            arg1 = cast_from_fixed (type, arg1);
           if (ada_is_fixed_point_type (value_type (arg2)))
-            arg2 = cast_from_fixed_to_double (arg2);
+            arg2 = cast_from_fixed (type, arg2);
           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
           return ada_value_binop (arg1, arg2, op);
         }