aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Blandy <jimb@codesourcery.com>2007-01-07 15:35:44 +0000
committerJim Blandy <jimb@codesourcery.com>2007-01-07 15:35:44 +0000
commit44a8177417b268fdcf9d619ae14af64156b2b5f5 (patch)
tree18a6a4a7faab5f8db50637e71ac1e2f1bbf77310
parentf42683e3c95f11f1c3de38c0539289695197e7d7 (diff)
downloadgdb-44a8177417b268fdcf9d619ae14af64156b2b5f5.zip
gdb-44a8177417b268fdcf9d619ae14af64156b2b5f5.tar.gz
gdb-44a8177417b268fdcf9d619ae14af64156b2b5f5.tar.bz2
* ax-general.c (ax_const_l): Select proper opcode for the given
value.
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/ax-general.c8
2 files changed, 11 insertions, 2 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 25dac41..2fa60c1 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2007-01-07 Jim Blandy <jimb@codesourcery.com>
+
+ * ax-general.c (ax_const_l): Select proper opcode for the given
+ value.
+
2007-01-04 Vladimir Prus <vladimir@codesourcery.com>
* varobj.c (c_value_of_root): Don't select frame if variable
diff --git a/gdb/ax-general.c b/gdb/ax-general.c
index c08272a..8c1dfe1 100644
--- a/gdb/ax-general.c
+++ b/gdb/ax-general.c
@@ -231,8 +231,12 @@ ax_const_l (struct agent_expr *x, LONGEST l)
signed or unsigned; we always reproduce the value exactly, and
use the shortest representation. */
for (op = 0, size = 8; size < 64; size *= 2, op++)
- if (-((LONGEST) 1 << size) <= l && l < ((LONGEST) 1 << size))
- break;
+ {
+ LONGEST lim = 1 << (size - 1);
+
+ if (-lim <= l && l <= lim - 1)
+ break;
+ }
/* Emit the right opcode... */
ax_simple (x, ops[op]);