c++: Elide calls to NOP module initializers
authorNathan Sidwell <nathan@acm.org>
Thu, 9 Jun 2022 18:18:19 +0000 (11:18 -0700)
committerNathan Sidwell <nathan@acm.org>
Tue, 14 Jun 2022 14:57:36 +0000 (07:57 -0700)
commite8609768fbbc1ec650fe245cb45ee6d893ade3d7
tree798f89f4fab1132a892b639ffcbacec44a4ac901
parent8f6c317b3a16350698f3c9e0accb43a9b4acb4ae
c++: Elide calls to NOP module initializers

gcc/cp
* cp-tree.h (fini_modules): Add has_inits parm.
* decl2.cc (c_parse_final_cleanups): Check for
inits, adjust fini_modules flags.
* module.cc (module_state): Rename call_init_p to
active_init_p.
(module_state::write_config): Write active_init.
(module_state::read_config): Read it.
(module_determine_import_inits): Clear active_init_p
of covered inits.
(late_finish_module): Add has_init parm.  Record it.
(fini_modules): Adjust.

gcc/testsuite/
* g++.dg/modules/init-2_a.C: Adjust.
* g++.dg/modules/init-2_c.C: Adjust.
* g++.dg/modules/init-2_d.C: New.
gcc/cp/cp-tree.h
gcc/cp/decl2.cc
gcc/cp/module.cc
gcc/testsuite/g++.dg/modules/init-2_a.C
gcc/testsuite/g++.dg/modules/init-2_c.C
gcc/testsuite/g++.dg/modules/init-2_d.C [new file with mode: 0644]