aboutsummaryrefslogtreecommitdiff
path: root/gdb
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
parentf652e42f289ce31c0383c762ad3ae5dbe620ec57 (diff)
downloadfsf-binutils-gdb-000d5124032895c4ae8176491d891132a6d3c755.zip
fsf-binutils-gdb-000d5124032895c4ae8176491d891132a6d3c755.tar.gz
fsf-binutils-gdb-000d5124032895c4ae8176491d891132a6d3c755.tar.bz2
* ada-lang.c (ada_evaluate_subexp): Break two large expressions
using temporary variables.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/ada-lang.c26
2 files changed, 21 insertions, 10 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 6dd38b8..cf63790 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -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
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;