mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-26 17:18:55 +00:00
gdb:
* value.h (value_non_lval): Declare. * value.c (value_non_lval): New function. * eval.c (evaluate_subexp_standard) <UNOP_POSTINCREMENT, UNOP_POSTDECREMENT>: Call value_non_lval to ensure to return a non-lvalue. gdb/testsuite: * gdb.base/exprs.exp: Add tests for pre-/post- in-/decrement operators.
This commit is contained in:
@@ -2782,6 +2782,8 @@ evaluate_subexp_standard (struct type *expect_type,
|
||||
}
|
||||
else
|
||||
{
|
||||
arg3 = value_non_lval (arg1);
|
||||
|
||||
if (ptrmath_type_p (exp->language_defn, value_type (arg1)))
|
||||
arg2 = value_ptradd (arg1, 1);
|
||||
else
|
||||
@@ -2794,7 +2796,7 @@ evaluate_subexp_standard (struct type *expect_type,
|
||||
}
|
||||
|
||||
value_assign (arg1, arg2);
|
||||
return arg1;
|
||||
return arg3;
|
||||
}
|
||||
|
||||
case UNOP_POSTDECREMENT:
|
||||
@@ -2807,6 +2809,8 @@ evaluate_subexp_standard (struct type *expect_type,
|
||||
}
|
||||
else
|
||||
{
|
||||
arg3 = value_non_lval (arg1);
|
||||
|
||||
if (ptrmath_type_p (exp->language_defn, value_type (arg1)))
|
||||
arg2 = value_ptradd (arg1, -1);
|
||||
else
|
||||
@@ -2819,7 +2823,7 @@ evaluate_subexp_standard (struct type *expect_type,
|
||||
}
|
||||
|
||||
value_assign (arg1, arg2);
|
||||
return arg1;
|
||||
return arg3;
|
||||
}
|
||||
|
||||
case OP_THIS:
|
||||
|
||||
Reference in New Issue
Block a user