diff options
author | Tom de Vries <tdevries@suse.de> | 2024-06-25 07:59:13 +0200 |
---|---|---|
committer | Tom de Vries <tdevries@suse.de> | 2024-06-25 07:59:13 +0200 |
commit | bd54c881cd14af32f2347dab5ce51823ed631a88 (patch) | |
tree | 9159166ec6d1adbd164c4a0cf4e10dd5786d430b /gdb/dwarf2 | |
parent | 218bb9dcdbb8ee5a15977dc1ffe7ed7422803368 (diff) | |
download | gdb-bd54c881cd14af32f2347dab5ce51823ed631a88.zip gdb-bd54c881cd14af32f2347dab5ce51823ed631a88.tar.gz gdb-bd54c881cd14af32f2347dab5ce51823ed631a88.tar.bz2 |
[gdb/symtab] Remove dead code in parse_macro_definition
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>
Diffstat (limited to 'gdb/dwarf2')
-rw-r--r-- | gdb/dwarf2/macro.c | 117 |
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. |