-- >8 --
A lot of places use (*modules)[0] to refer to the module state for the
current TU. This is a bit awkward to type and not particularly clear
what it represents; make a helper function to clarify it.
gcc/cp/ChangeLog:
* module.cc (this_module): New function.
(import_entity_module): Use it.
(trees_out::decl_node): Likewise.
(get_module): Likewise.
(module_state::check_not_purview): Likewise.
(module_state::read_imports): Likewise.
(module_state::read_using_directives): Likewise.
(module_state::read_initial): Likewise.
(get_import_bitmap): Likewise.
(module_may_redeclare): Likewise.
(direct_import): Likewise.
(declare_module): Likewise.
(name_pending_imports): Likewise.
(preprocess_module): Likewise.
(finish_module_processing): Likewise.
(late_finish_module): Likewise.
Signed-off-by: Nathaniel Shead <nathanielosh...@gmail.com>
---
gcc/cp/module.cc | 46 +++++++++++++++++++++++++++-------------------
1 file changed, 27 insertions(+), 19 deletions(-)
diff --git a/gcc/cp/module.cc b/gcc/cp/module.cc
index 5ab340afe36..50fc1af0354 100644
--- a/gcc/cp/module.cc
+++ b/gcc/cp/module.cc
@@ -4097,6 +4097,13 @@ static unsigned lazy_hard_limit; /* Hard limit on open
modules. */
current TU; imports start at 1. */
static GTY(()) vec<module_state *, va_gc> *modules;
+/* Get the module state for the current TU's module. */
+
+static module_state *
+this_module() {
+ return (*modules)[0];
+}
+
/* Hash of module state, findable by {name, parent}. */
static GTY(()) hash_table<module_state_hash> *modules_hash;
@@ -4247,7 +4254,7 @@ import_entity_module (unsigned index)
{
if (index > ~(~0u >> 1))
/* This is an index for an exported entity. */
- return (*modules)[0];
+ return this_module ();
/* Do not include the current TU (not an off-by-one error). */
unsigned pos = 1;
@@ -9394,7 +9401,7 @@ trees_out::decl_node (tree decl, walk_kind ref)
if (streaming_p () && dump (dumper::TREE))
{
char const *kind = "import";
- module_state *from = (*modules)[0];
+ module_state *from = this_module ();
if (dep->is_import ())
/* Rediscover the unremapped index. */
from = import_entity_module (import_entity_index (decl));
@@ -15890,7 +15897,7 @@ get_module (tree name, module_state *parent, bool
partition)
if (partition)
{
if (!parent)
- parent = get_primary ((*modules)[0]);
+ parent = get_primary (this_module ());
if (!parent->is_partition () && !parent->flatname)
parent->set_flatname ();
@@ -15994,7 +16001,7 @@ recursive_lazy (unsigned snum = ~0u)
bool
module_state::check_not_purview (location_t from)
{
- module_state *imp = (*modules)[0];
+ module_state *imp = this_module ();
if (imp && !imp->name)
imp = imp->parent;
if (imp == this)
@@ -16295,7 +16302,7 @@ module_state::read_imports (bytes_in &sec, cpp_reader
*reader, line_maps *lmaps)
module as this TU. */
if (imp && imp->is_partition () &&
(!named_module_p ()
- || (get_primary ((*modules)[0]) != get_primary (imp))))
+ || (get_primary (this_module ()) != get_primary (imp))))
imp = NULL;
if (!imp)
@@ -17327,7 +17334,7 @@ module_state::write_using_directives (elf_out *to,
depset::hash &table,
bool
module_state::read_using_directives (unsigned num)
{
- if (!bitmap_bit_p ((*modules)[0]->imports, mod))
+ if (!bitmap_bit_p (this_module ()->imports, mod))
{
dump () && dump ("Ignoring using-directives because module %M "
"is not visible in this TU", this);
@@ -20550,7 +20557,7 @@ module_state::read_initial (cpp_reader *reader)
/* Determine the module's number. */
gcc_checking_assert (mod == MODULE_UNKNOWN);
- gcc_checking_assert (this != (*modules)[0]);
+ gcc_checking_assert (this != this_module ());
{
/* Allocate space in the entities array now -- that array must be
@@ -20901,7 +20908,7 @@ module_name (unsigned ix, bool header_ok)
bitmap
get_import_bitmap ()
{
- return (*modules)[0]->imports;
+ return this_module ()->imports;
}
/* Return the visible imports and path of instantiation for an
@@ -21141,7 +21148,7 @@ module_may_redeclare (tree olddecl, tree newdecl)
// FIXME: Should we be checking this in more places on the scope chain?
return true;
- module_state *old_mod = (*modules)[0];
+ module_state *old_mod = this_module ();
module_state *new_mod = old_mod;
tree old_origin = get_originating_module_decl (decl);
@@ -21781,7 +21788,7 @@ direct_import (module_state *import, cpp_reader *reader)
if (!import->do_import (reader, true))
gcc_unreachable ();
- (*modules)[0]->set_import (import, import->exported_p);
+ this_module ()->set_import (import, import->exported_p);
if (import->loadedness < ML_LANGUAGE)
{
@@ -21837,7 +21844,7 @@ declare_module (module_state *module, location_t
from_loc, bool exporting_p,
{
gcc_assert (global_namespace == current_scope ());
- module_state *current = (*modules)[0];
+ module_state *current = this_module ();
if (module_purview_p () || module->loadedness > ML_CONFIG)
{
auto_diagnostic_group d;
@@ -21853,7 +21860,7 @@ declare_module (module_state *module, location_t
from_loc, bool exporting_p,
return;
}
- gcc_checking_assert (module->module_p);
+ gcc_checking_assert (module->is_module ());
gcc_checking_assert (module->is_direct () && module->has_location ());
/* Yer a module, 'arry. */
@@ -22225,8 +22232,9 @@ name_pending_imports (cpp_reader *reader)
gcc_checking_assert (module->is_direct ());
if (!module->filename && !module->visited_p)
{
- bool export_p = (module->module_p
- && (module->is_partition () || module->exported_p));
+ bool export_p = (module->is_module ()
+ && (module->is_partition ()
+ || module->is_exported ()));
Cody::Flags flags = Cody::Flags::None;
if (flag_preprocess_only
@@ -22357,8 +22365,8 @@ preprocess_module (module_state *module, location_t
from_loc,
for (unsigned ix = 0; ix != pending_imports->length (); ix++)
{
auto *import = (*pending_imports)[ix];
- if (!(import->module_p
- && (import->is_partition () || import->exported_p))
+ if (!(import->is_module ()
+ && (import->is_partition () || import->is_exported ()))
&& import->loadedness == ML_NONE
&& (import->is_header () || !flag_preprocess_only))
{
@@ -22757,7 +22765,7 @@ finish_module_processing (cpp_reader *reader)
if (header_module_p ())
module_kind &= ~MK_EXPORTING;
- if (!modules || !(*modules)[0]->name)
+ if (!modules || !this_module ()->name)
{
if (flag_module_only)
warning (0, "%<-fmodule-only%> used for non-interface");
@@ -22776,7 +22784,7 @@ finish_module_processing (cpp_reader *reader)
/* We write to a tmpname, and then atomically rename. */
char *cmi_name = NULL;
char *tmp_name = NULL;
- module_state *state = (*modules)[0];
+ module_state *state = this_module ();
unsigned n = dump.push (state);
state->announce ("creating");
@@ -22860,7 +22868,7 @@ late_finish_module (cpp_reader *reader,
module_processing_cookie *cookie,
{
timevar_start (TV_MODULE_EXPORT);
- module_state *state = (*modules)[0];
+ module_state *state = this_module ();
unsigned n = dump.push (state);
state->announce ("finishing");