2011-07-27  Jan Kratochvil  <jan.kratochvil@redhat.com>
	    Pedro Alves  <pedro@codesourcery.com>

	* eval.c (evaluate_subexp_standard): Remove not_lval from all calls of
	value_one.
	* valops.c (value_one): Remove parameter lv.  Do not pass it to itself.
	Assert the result kind.
	* value.h (value_one): Remove parameter lv.
This commit is contained in:
Jan Kratochvil 2011-07-27 19:31:30 +00:00
parent bb7da2bfb5
commit 18a46dbee8
4 changed files with 21 additions and 10 deletions

View File

@ -1,3 +1,12 @@
2011-07-27 Jan Kratochvil <jan.kratochvil@redhat.com>
Pedro Alves <pedro@codesourcery.com>
* eval.c (evaluate_subexp_standard): Remove not_lval from all calls of
value_one.
* valops.c (value_one): Remove parameter lv. Do not pass it to itself.
Assert the result kind.
* value.h (value_one): Remove parameter lv.
2011-07-27 Jan Kratochvil <jan.kratochvil@redhat.com>
Fix crash on lval_computed values.

View File

@ -2198,7 +2198,7 @@ evaluate_subexp_standard (struct type *expect_type,
{
struct value *v_one, *retval;
v_one = value_one (value_type (arg2), not_lval);
v_one = value_one (value_type (arg2));
binop_promote (exp->language_defn, exp->gdbarch, &arg1, &v_one);
retval = value_binop (arg1, v_one, op);
return retval;
@ -2742,7 +2742,7 @@ evaluate_subexp_standard (struct type *expect_type,
{
struct value *tmp = arg1;
arg2 = value_one (value_type (arg1), not_lval);
arg2 = value_one (value_type (arg1));
binop_promote (exp->language_defn, exp->gdbarch, &tmp, &arg2);
arg2 = value_binop (tmp, arg2, BINOP_ADD);
}
@ -2766,7 +2766,7 @@ evaluate_subexp_standard (struct type *expect_type,
{
struct value *tmp = arg1;
arg2 = value_one (value_type (arg1), not_lval);
arg2 = value_one (value_type (arg1));
binop_promote (exp->language_defn, exp->gdbarch, &tmp, &arg2);
arg2 = value_binop (tmp, arg2, BINOP_SUB);
}
@ -2792,7 +2792,7 @@ evaluate_subexp_standard (struct type *expect_type,
{
struct value *tmp = arg1;
arg2 = value_one (value_type (arg1), not_lval);
arg2 = value_one (value_type (arg1));
binop_promote (exp->language_defn, exp->gdbarch, &tmp, &arg2);
arg2 = value_binop (tmp, arg2, BINOP_ADD);
}
@ -2819,7 +2819,7 @@ evaluate_subexp_standard (struct type *expect_type,
{
struct value *tmp = arg1;
arg2 = value_one (value_type (arg1), not_lval);
arg2 = value_one (value_type (arg1));
binop_promote (exp->language_defn, exp->gdbarch, &tmp, &arg2);
arg2 = value_binop (tmp, arg2, BINOP_SUB);
}

View File

@ -864,10 +864,10 @@ value_zero (struct type *type, enum lval_type lv)
return val;
}
/* Create a value of numeric type TYPE that is one, and return it. */
/* Create a not_lval value of numeric type TYPE that is one, and return it. */
struct value *
value_one (struct type *type, enum lval_type lv)
value_one (struct type *type)
{
struct type *type1 = check_typedef (type);
struct value *val;
@ -901,7 +901,7 @@ value_one (struct type *type, enum lval_type lv)
val = allocate_value (type);
for (i = 0; i < high_bound - low_bound + 1; i++)
{
tmp = value_one (eltype, lv);
tmp = value_one (eltype);
memcpy (value_contents_writeable (val) + i * TYPE_LENGTH (eltype),
value_contents_all (tmp), TYPE_LENGTH (eltype));
}
@ -911,7 +911,9 @@ value_one (struct type *type, enum lval_type lv)
error (_("Not a numeric type."));
}
VALUE_LVAL (val) = lv;
/* value_one result is never used for assignments to. */
gdb_assert (VALUE_LVAL (val) == not_lval);
return val;
}

View File

@ -615,7 +615,7 @@ extern struct value *value_dynamic_cast (struct type *type, struct value *arg);
extern struct value *value_zero (struct type *type, enum lval_type lv);
extern struct value *value_one (struct type *type, enum lval_type lv);
extern struct value *value_one (struct type *type);
extern struct value *value_repeat (struct value *arg1, int count);