forked from Imagelibrary/binutils-gdb
Split out eval_op_type
This splits OP_TYPE into a new function for future use. gdb/ChangeLog 2021-03-08 Tom Tromey <tom@tromey.com> * eval.c (eval_op_type): New function. (evaluate_subexp_standard): Use it.
This commit is contained in:
@@ -1,3 +1,8 @@
|
|||||||
|
2021-03-08 Tom Tromey <tom@tromey.com>
|
||||||
|
|
||||||
|
* eval.c (eval_op_type): New function.
|
||||||
|
(evaluate_subexp_standard): Use it.
|
||||||
|
|
||||||
2021-03-08 Tom Tromey <tom@tromey.com>
|
2021-03-08 Tom Tromey <tom@tromey.com>
|
||||||
|
|
||||||
* eval.c (eval_op_postdec): New function.
|
* eval.c (eval_op_postdec): New function.
|
||||||
|
|||||||
21
gdb/eval.c
21
gdb/eval.c
@@ -2039,6 +2039,20 @@ eval_op_postdec (struct type *expect_type, struct expression *exp,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* A helper function for OP_TYPE. */
|
||||||
|
|
||||||
|
static struct value *
|
||||||
|
eval_op_type (struct type *expect_type, struct expression *exp,
|
||||||
|
enum noside noside, struct type *type)
|
||||||
|
{
|
||||||
|
if (noside == EVAL_SKIP)
|
||||||
|
return eval_skip_value (exp);
|
||||||
|
else if (noside == EVAL_AVOID_SIDE_EFFECTS)
|
||||||
|
return allocate_value (type);
|
||||||
|
else
|
||||||
|
error (_("Attempt to use a type name as an expression"));
|
||||||
|
}
|
||||||
|
|
||||||
struct value *
|
struct value *
|
||||||
evaluate_subexp_standard (struct type *expect_type,
|
evaluate_subexp_standard (struct type *expect_type,
|
||||||
struct expression *exp, int *pos,
|
struct expression *exp, int *pos,
|
||||||
@@ -2994,12 +3008,7 @@ evaluate_subexp_standard (struct type *expect_type,
|
|||||||
/* The value is not supposed to be used. This is here to make it
|
/* The value is not supposed to be used. This is here to make it
|
||||||
easier to accommodate expressions that contain types. */
|
easier to accommodate expressions that contain types. */
|
||||||
(*pos) += 2;
|
(*pos) += 2;
|
||||||
if (noside == EVAL_SKIP)
|
return eval_op_type (expect_type, exp, noside, exp->elts[pc + 1].type);
|
||||||
return eval_skip_value (exp);
|
|
||||||
else if (noside == EVAL_AVOID_SIDE_EFFECTS)
|
|
||||||
return allocate_value (exp->elts[pc + 1].type);
|
|
||||||
else
|
|
||||||
error (_("Attempt to use a type name as an expression"));
|
|
||||||
|
|
||||||
case OP_TYPEOF:
|
case OP_TYPEOF:
|
||||||
case OP_DECLTYPE:
|
case OP_DECLTYPE:
|
||||||
|
|||||||
Reference in New Issue
Block a user