* ada-lang.c (ada_evaluate_subexp): Break two large expressions
authorJoel Brobecker <brobecker@gnat.com>
Fri, 28 Dec 2007 13:06:17 +0000 (13:06 +0000)
committerJoel Brobecker <brobecker@gnat.com>
Fri, 28 Dec 2007 13:06:17 +0000 (13:06 +0000)
        using temporary variables.

gdb/ChangeLog
gdb/ada-lang.c

index 6dd38b8103b76e622aed9954c00fa15c33bcb6f5..cf6379078fa655b84c3f96a03564e7b68c12d52a 100644 (file)
@@ -1,3 +1,8 @@
+2007-12-28  Joel Brobecker  <brobecker@adacore.com>
+
+       * ada-lang.c (ada_evaluate_subexp): Break two large expressions
+       using temporary variables.
+
 2007-12-27  Joel Brobecker  <brobecker@adacore.com>
 
        * ada-lang.c (ada_value_cast): New function, extracted out from
index 1a0422e7f81bf45f04732b037d2e1b185fbe2894..93b5dec67ffa32c92874593421079496aca8634e 100644 (file)
@@ -8163,20 +8163,26 @@ ada_evaluate_subexp (struct type *expect_type, struct expression *exp,
     case BINOP_LOGICAL_AND:
     case BINOP_LOGICAL_OR:
     case UNOP_LOGICAL_NOT:
-      *pos -= 1;
-      return value_cast (LA_BOOL_TYPE, 
-                        evaluate_subexp_standard (expect_type, exp,
-                                                  pos, noside));
+      {
+        struct value *val;
+
+        *pos -= 1;
+        val = evaluate_subexp_standard (expect_type, exp, pos, noside);
+        return value_cast (LA_BOOL_TYPE, val);
+      }
 
     case BINOP_BITWISE_AND:
     case BINOP_BITWISE_IOR:
     case BINOP_BITWISE_XOR:
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
-      *pos = pc;
-      return value_cast (value_type (arg1),
-                        evaluate_subexp_standard (expect_type, exp,
-                                                  pos, noside));
-                        
+      {
+        struct value *val;
+
+        arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
+        *pos = pc;
+        val = evaluate_subexp_standard (expect_type, exp, pos, noside);
+
+        return value_cast (value_type (arg1), val);
+      }
 
     case OP_VAR_VALUE:
       *pos -= 1;