From fc53c8e02183b61a9df0224de1d7016fb52960ba Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Mon, 24 Apr 2023 13:03:03 -0600 Subject: [PATCH] Remove some "goto"s from parse.c parser_state::push_dollar has some unnecessary "goto"s. Replacing them cleans up the code. Regression tested on x86-64 Fedora 36. Approved-By: Simon Marchi --- gdb/parse.c | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/gdb/parse.c b/gdb/parse.c index 0588c0618c6..85a6caf14ba 100644 --- a/gdb/parse.c +++ b/gdb/parse.c @@ -268,7 +268,8 @@ parser_state::push_dollar (struct stoken str) { /* Just dollars (one or two). */ i = -negate; - goto handle_last; + push_new (i); + return; } /* Is the rest of the token digits? */ for (; i < str.length; i++) @@ -279,7 +280,8 @@ parser_state::push_dollar (struct stoken str) i = atoi (str.ptr + 1 + negate); if (negate) i = -i; - goto handle_last; + push_new (i); + return; } /* Handle tokens that refer to machine registers: @@ -287,7 +289,14 @@ parser_state::push_dollar (struct stoken str) i = user_reg_map_name_to_regnum (gdbarch (), str.ptr + 1, str.length - 1); if (i >= 0) - goto handle_register; + { + str.length--; + str.ptr++; + push_new (copy_name (str)); + block_tracker->update (expression_context_block, + INNERMOST_BLOCK_FOR_REGISTERS); + return; + } /* Any names starting with $ are probably debugger internal variables. */ @@ -319,17 +328,6 @@ parser_state::push_dollar (struct stoken str) push_new (create_internalvar (copy.c_str () + 1)); - return; -handle_last: - push_new (i); - return; -handle_register: - str.length--; - str.ptr++; - push_new (copy_name (str)); - block_tracker->update (expression_context_block, - INNERMOST_BLOCK_FOR_REGISTERS); - return; } -- 2.30.2