aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom de Vries <tdevries@suse.de>2024-06-25 07:59:13 +0200
committerTom de Vries <tdevries@suse.de>2024-06-25 07:59:13 +0200
commitbd54c881cd14af32f2347dab5ce51823ed631a88 (patch)
tree9159166ec6d1adbd164c4a0cf4e10dd5786d430b
parent218bb9dcdbb8ee5a15977dc1ffe7ed7422803368 (diff)
downloadfsf-binutils-gdb-master.zip
fsf-binutils-gdb-master.tar.gz
fsf-binutils-gdb-master.tar.bz2
[gdb/symtab] Remove dead code in parse_macro_definitionHEADmaster
In parse_macro_definition, there's a loop: ... for (p = body; *p; p++) if (*p == ' ' || *p == '(') break; ... whose post-condition is: ... gdb_assert (*p == ' ' || *p == '(' || *p == '\0'); ... Consequently, in the following: ... if (*p == ' ' || *p == '\0') <BODY1> else if (*p == '(') <BODY2> else <BODY3> ... BODY3 is dead code. Remove it, and get rid of unnecessary indentation by using an early-exit: .... if (*p == ' ' || *p == '\0') { <BODY1> return; } gdb_assert (*p == '('); <BODY2> ... Tested on aarch64-linux. Reviewed-By: Alexandra Petlanova Hajkova <ahajkova@redhat.com> Approved-By: Tom Tromey <tom@tromey.com>
-rw-r--r--gdb/dwarf2/macro.c117
1 files changed, 56 insertions, 61 deletions
diff --git a/gdb/dwarf2/macro.c b/gdb/dwarf2/macro.c
index a511d0a..bc781c2 100644
--- a/gdb/dwarf2/macro.c
+++ b/gdb/dwarf2/macro.c
@@ -154,88 +154,83 @@ parse_macro_definition (struct macro_source_file *file, int line,
}
macro_define_object (file, line, name.c_str (), replacement);
+ return;
}
- else if (*p == '(')
- {
- /* It's a function-like macro. */
- std::string name (body, p - body);
- int argc = 0;
- int argv_size = 1;
- char **argv = XNEWVEC (char *, argv_size);
-
- p++;
- p = consume_improper_spaces (p, body);
+ /* It's a function-like macro. */
+ gdb_assert (*p == '(');
+ std::string name (body, p - body);
+ int argc = 0;
+ int argv_size = 1;
+ char **argv = XNEWVEC (char *, argv_size);
- /* Parse the formal argument list. */
- while (*p && *p != ')')
- {
- /* Find the extent of the current argument name. */
- const char *arg_start = p;
+ p++;
- while (*p && *p != ',' && *p != ')' && *p != ' ')
- p++;
-
- if (! *p || p == arg_start)
- dwarf2_macro_malformed_definition_complaint (body);
- else
- {
- /* Make sure argv has room for the new argument. */
- if (argc >= argv_size)
- {
- argv_size *= 2;
- argv = XRESIZEVEC (char *, argv, argv_size);
- }
+ p = consume_improper_spaces (p, body);
- argv[argc++] = savestring (arg_start, p - arg_start);
- }
+ /* Parse the formal argument list. */
+ while (*p && *p != ')')
+ {
+ /* Find the extent of the current argument name. */
+ const char *arg_start = p;
- p = consume_improper_spaces (p, body);
+ while (*p && *p != ',' && *p != ')' && *p != ' ')
+ p++;
- /* Consume the comma, if present. */
- if (*p == ',')
+ if (! *p || p == arg_start)
+ dwarf2_macro_malformed_definition_complaint (body);
+ else
+ {
+ /* Make sure argv has room for the new argument. */
+ if (argc >= argv_size)
{
- p++;
-
- p = consume_improper_spaces (p, body);
+ argv_size *= 2;
+ argv = XRESIZEVEC (char *, argv, argv_size);
}
+
+ argv[argc++] = savestring (arg_start, p - arg_start);
}
- if (*p == ')')
+ p = consume_improper_spaces (p, body);
+
+ /* Consume the comma, if present. */
+ if (*p == ',')
{
p++;
- if (*p == ' ')
- /* Perfectly formed definition, no complaints. */
- macro_define_function (file, line, name.c_str (),
- argc, (const char **) argv,
- p + 1);
- else if (*p == '\0')
- {
- /* Complain, but do define it. */
- dwarf2_macro_malformed_definition_complaint (body);
- macro_define_function (file, line, name.c_str (),
- argc, (const char **) argv,
- p);
- }
- else
- /* Just complain. */
- dwarf2_macro_malformed_definition_complaint (body);
+ p = consume_improper_spaces (p, body);
+ }
+ }
+
+ if (*p == ')')
+ {
+ p++;
+
+ if (*p == ' ')
+ /* Perfectly formed definition, no complaints. */
+ macro_define_function (file, line, name.c_str (),
+ argc, (const char **) argv,
+ p + 1);
+ else if (*p == '\0')
+ {
+ /* Complain, but do define it. */
+ dwarf2_macro_malformed_definition_complaint (body);
+ macro_define_function (file, line, name.c_str (),
+ argc, (const char **) argv,
+ p);
}
else
/* Just complain. */
dwarf2_macro_malformed_definition_complaint (body);
-
- {
- int i;
-
- for (i = 0; i < argc; i++)
- xfree (argv[i]);
- }
- xfree (argv);
}
else
+ /* Just complain. */
dwarf2_macro_malformed_definition_complaint (body);
+
+ for (int i = 0; i < argc; i++)
+ xfree (argv[i]);
+
+ xfree (argv);
}
/* Skip some bytes from BYTES according to the form given in FORM.