diff options
author | Joel Brobecker <brobecker@gnat.com> | 2007-12-28 13:06:17 +0000 |
---|---|---|
committer | Joel Brobecker <brobecker@gnat.com> | 2007-12-28 13:06:17 +0000 |
commit | 000d5124032895c4ae8176491d891132a6d3c755 (patch) | |
tree | b2d68fa7ee17557320220f6660435a34a1b5dced /gdb/ada-lang.c | |
parent | f652e42f289ce31c0383c762ad3ae5dbe620ec57 (diff) | |
download | gdb-000d5124032895c4ae8176491d891132a6d3c755.zip gdb-000d5124032895c4ae8176491d891132a6d3c755.tar.gz gdb-000d5124032895c4ae8176491d891132a6d3c755.tar.bz2 |
* ada-lang.c (ada_evaluate_subexp): Break two large expressions
using temporary variables.
Diffstat (limited to 'gdb/ada-lang.c')
-rw-r--r-- | gdb/ada-lang.c | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c index 1a0422e..93b5dec 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; |