aboutsummaryrefslogtreecommitdiff
path: root/gdb/stack.c
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2020-12-15 18:14:42 -0700
committerTom Tromey <tom@tromey.com>2020-12-15 18:24:02 -0700
commit2adab65cc07f07a581d57b05dfbc100952fab748 (patch)
treecf31db8beca37152fd15d8fc9308350dc3cb0150 /gdb/stack.c
parent1ab8280d7dbe01f51929d221621d38450f31895d (diff)
downloadgdb-2adab65cc07f07a581d57b05dfbc100952fab748.zip
gdb-2adab65cc07f07a581d57b05dfbc100952fab748.tar.gz
gdb-2adab65cc07f07a581d57b05dfbc100952fab748.tar.bz2
Introduce expression::first_opcode
This adds a new helper method, expression::first_opcode, that extracts the outermost opcode of an expression. This simplifies some patches in the expression rewrite series. Note that this patch requires the earlier patch to avoid manual dissection of OP_TYPE operations. 2020-12-15 Tom Tromey <tom@tromey.com> * varobj.c (varobj_create): Use first_opcode. * value.c (init_if_undefined_command): Use first_opcode. * typeprint.c (whatis_exp): Use first_opcode. * tracepoint.c (validate_actionline): Use first_opcode. (encode_actions_1): Use first_opcode. * stack.c (return_command): Use first_opcode. * expression.h (struct expression) <first_opcode>: New method. * eval.c (parse_and_eval_type): Use first_opcode. * dtrace-probe.c (dtrace_process_dof_probe): Use first_opcode.
Diffstat (limited to 'gdb/stack.c')
-rw-r--r--gdb/stack.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/gdb/stack.c b/gdb/stack.c
index 7618f72..943b3db 100644
--- a/gdb/stack.c
+++ b/gdb/stack.c
@@ -2770,8 +2770,8 @@ return_command (const char *retval_exp, int from_tty)
return_type = TYPE_TARGET_TYPE (SYMBOL_TYPE (thisfun));
if (return_type == NULL)
{
- if (retval_expr->elts[0].opcode != UNOP_CAST
- && retval_expr->elts[0].opcode != UNOP_CAST_TYPE)
+ if (retval_expr->first_opcode () != UNOP_CAST
+ && retval_expr->first_opcode () != UNOP_CAST_TYPE)
error (_("Return value type not available for selected "
"stack frame.\n"
"Please use an explicit cast of the value to return."));