From a1b294260f4e43cfb7edb2a917accb82945ed310 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Thu, 19 Jan 2023 20:21:10 -0700 Subject: [PATCH] Remove ALL_BLOCK_SYMBOLS_WITH_NAME This removes ALL_BLOCK_SYMBOLS_WITH_NAME in favor of foreach. --- gdb/block.c | 12 +++--------- gdb/block.h | 10 ---------- gdb/cp-support.c | 5 +---- gdb/python/py-block.c | 22 ++++++++-------------- gdb/symtab.c | 5 +---- 5 files changed, 13 insertions(+), 41 deletions(-) diff --git a/gdb/block.c b/gdb/block.c index e7a51af8cea..0870793dcd4 100644 --- a/gdb/block.c +++ b/gdb/block.c @@ -692,16 +692,13 @@ block_lookup_symbol (const struct block *block, const char *name, symbol_name_match_type match_type, const domain_enum domain) { - struct block_iterator iter; - struct symbol *sym; - lookup_name_info lookup_name (name, match_type); if (!block->function ()) { struct symbol *other = NULL; - ALL_BLOCK_SYMBOLS_WITH_NAME (block, lookup_name, iter, sym) + for (struct symbol *sym : block_iterator_range (block, &lookup_name)) { /* See comment related to PR gcc/debug/91507 in block_lookup_symbol_primary. */ @@ -730,7 +727,7 @@ block_lookup_symbol (const struct block *block, const char *name, struct symbol *sym_found = NULL; - ALL_BLOCK_SYMBOLS_WITH_NAME (block, lookup_name, iter, sym) + for (struct symbol *sym : block_iterator_range (block, &lookup_name)) { if (symbol_matches_domain (sym->language (), sym->domain (), domain)) @@ -815,16 +812,13 @@ block_find_symbol (const struct block *block, const char *name, const domain_enum domain, block_symbol_matcher_ftype *matcher, void *data) { - struct block_iterator iter; - struct symbol *sym; - lookup_name_info lookup_name (name, symbol_name_match_type::FULL); /* Verify BLOCK is STATIC_BLOCK or GLOBAL_BLOCK. */ gdb_assert (block->superblock () == NULL || block->superblock ()->superblock () == NULL); - ALL_BLOCK_SYMBOLS_WITH_NAME (block, lookup_name, iter, sym) + for (struct symbol *sym : block_iterator_range (block, &lookup_name)) { /* MATCHER is deliberately called second here so that it never sees a non-domain-matching symbol. */ diff --git a/gdb/block.h b/gdb/block.h index 7341d03a07e..35c41377f2c 100644 --- a/gdb/block.h +++ b/gdb/block.h @@ -604,16 +604,6 @@ extern int block_find_non_opaque_type_preferred (struct symbol *sym, (sym); \ (sym) = block_iterator_next (&(iter))) -/* Macro to loop through all symbols in BLOCK with a name that matches - NAME, in no particular order. ITER helps keep track of the - iteration, and must be a struct block_iterator. SYM points to the - current symbol. */ - -#define ALL_BLOCK_SYMBOLS_WITH_NAME(block, name, iter, sym) \ - for ((sym) = block_iterator_first ((block), &(iter), &(name)); \ - (sym) != NULL; \ - (sym) = block_iterator_next (&(iter))) - /* Given a vector of pairs, allocate and build an obstack allocated blockranges struct for a block. */ struct blockranges *make_blockranges (struct objfile *objfile, diff --git a/gdb/cp-support.c b/gdb/cp-support.c index c434d5aade4..78eacd05e97 100644 --- a/gdb/cp-support.c +++ b/gdb/cp-support.c @@ -1274,12 +1274,9 @@ add_symbol_overload_list_block (const char *name, const struct block *block, std::vector *overload_list) { - struct block_iterator iter; - struct symbol *sym; - lookup_name_info lookup_name (name, symbol_name_match_type::FULL); - ALL_BLOCK_SYMBOLS_WITH_NAME (block, lookup_name, iter, sym) + for (struct symbol *sym : block_iterator_range (block, &lookup_name)) overload_list_add_symbol (sym, name, overload_list); } diff --git a/gdb/python/py-block.c b/gdb/python/py-block.c index bd2ce7fc181..da33d4cdd94 100644 --- a/gdb/python/py-block.c +++ b/gdb/python/py-block.c @@ -265,24 +265,18 @@ blpy_getitem (PyObject *self, PyObject *key) lookup_name_info lookup_name (name.get(), symbol_name_match_type::FULL); - /* We use ALL_BLOCK_SYMBOLS_WITH_NAME instead of block_lookup_symbol so - that we can look up symbols irrespective of the domain, matching the - iterator. It would be confusing if the iterator returns symbols you - can't find via getitem. */ - struct block_iterator iter; - struct symbol *sym = nullptr; - ALL_BLOCK_SYMBOLS_WITH_NAME (block, lookup_name, iter, sym) + /* We use an iterator instead of block_lookup_symbol so that we can + look up symbols irrespective of the domain, matching the + iterator. It would be confusing if the iterator returns symbols + you can't find via getitem. */ + for (struct symbol *sym : block_iterator_range (block, &lookup_name)) { /* Just stop at the first match */ - break; + return symbol_to_symbol_object (sym); } - if (sym == nullptr) - { - PyErr_SetObject (PyExc_KeyError, key); - return nullptr; - } - return symbol_to_symbol_object (sym); + PyErr_SetObject (PyExc_KeyError, key); + return nullptr; } static void diff --git a/gdb/symtab.c b/gdb/symtab.c index d6dc323e83f..9508dcfc504 100644 --- a/gdb/symtab.c +++ b/gdb/symtab.c @@ -2771,10 +2771,7 @@ iterate_over_symbols (const struct block *block, const domain_enum domain, gdb::function_view callback) { - struct block_iterator iter; - struct symbol *sym; - - ALL_BLOCK_SYMBOLS_WITH_NAME (block, name, iter, sym) + for (struct symbol *sym : block_iterator_range (block, &name)) { if (symbol_matches_domain (sym->language (), sym->domain (), domain)) { -- 2.30.2