diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 6dd38b8103..cf6379078f 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2007-12-28 Joel Brobecker + + * ada-lang.c (ada_evaluate_subexp): Break two large expressions + using temporary variables. + 2007-12-27 Joel Brobecker * ada-lang.c (ada_value_cast): New function, extracted out from diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c index 1a0422e7f8..93b5dec67f 100644 --- a/gdb/ada-lang.c +++ b/gdb/ada-lang.c @@ -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;