aboutsummaryrefslogtreecommitdiff
path: root/gdb/ada-lang.c
diff options
context:
space:
mode:
authorJoel Brobecker <brobecker@gnat.com>2007-12-28 13:06:17 +0000
committerJoel Brobecker <brobecker@gnat.com>2007-12-28 13:06:17 +0000
commit000d5124032895c4ae8176491d891132a6d3c755 (patch)
treeb2d68fa7ee17557320220f6660435a34a1b5dced /gdb/ada-lang.c
parentf652e42f289ce31c0383c762ad3ae5dbe620ec57 (diff)
downloadgdb-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.c26
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;