[gcc r16-6754] c++/modules: Update lang_decl_bool streaming
Nathaniel Shead
nshead@gcc.gnu.org
Tue Jan 13 21:56:08 GMT 2026
https://gcc.gnu.org/g:ccb4ef5bd0a7cb001e2c8d883a5b9280d0773018
commit r16-6754-gccb4ef5bd0a7cb001e2c8d883a5b9280d0773018
Author: Nathaniel Shead <nathanieloshead@gmail.com>
Date: Sat Jan 10 13:52:37 2026 +1100
c++/modules: Update lang_decl_bool streaming
The set of lang_decl flags that we were streaming had gotten out of sync
with the current list; update them.
One notable change is that anticipated_p, which had previously been
deliberately skipped, is now only used for DECL_OMP_PRIVATIZED_MEMBER,
and so should probably be streamed as well.
gcc/cp/ChangeLog:
* module.cc (trees_out::lang_decl_bools): Update list of flags.
(trees_in::lang_decl_bools): Likewise.
Reviewed-by: Jason Merrill <jason@redhat.com>
Signed-off-by: Nathaniel Shead <nathanieloshead@gmail.com>
Diff:
---
gcc/cp/module.cc | 28 ++++++++++++++++++++++------
1 file changed, 22 insertions(+), 6 deletions(-)
diff --git a/gcc/cp/module.cc b/gcc/cp/module.cc
index af0730ba9743..174bebff01c6 100644
--- a/gcc/cp/module.cc
+++ b/gcc/cp/module.cc
@@ -6085,9 +6085,9 @@ trees_out::lang_decl_bools (tree t, bits_out& bits)
/* Do not write lang->u.base.not_really_extern, importer will set
when reading the definition (if any). */
WB (lang->u.base.initialized_in_class);
+
WB (lang->u.base.threadprivate_or_deleted_p);
- /* Do not write lang->u.base.anticipated_p, it is a property of the
- current TU. */
+ WB (lang->u.base.anticipated_p);
WB (lang->u.base.friend_or_tls);
WB (lang->u.base.unknown_bound_p);
/* Do not write lang->u.base.odr_used, importer will recalculate if
@@ -6095,12 +6095,18 @@ trees_out::lang_decl_bools (tree t, bits_out& bits)
WB (lang->u.base.concept_p);
WB (lang->u.base.var_declared_inline_p);
WB (lang->u.base.dependent_init_p);
+
/* When building a header unit, everthing is marked as purview, (so
we know which decls to write). But when we import them we do not
want to mark them as in module purview. */
WB (lang->u.base.module_purview_p && !header_module_p ());
WB (lang->u.base.module_attach_p);
+ /* Importer will set module_import_p and module_entity_p themselves
+ as appropriate. */
WB (lang->u.base.module_keyed_decls_p);
+
+ WB (lang->u.base.omp_declare_mapper_p);
+
switch (lang->u.base.selector)
{
default:
@@ -6109,6 +6115,7 @@ trees_out::lang_decl_bools (tree t, bits_out& bits)
case lds_fn: /* lang_decl_fn. */
WB (lang->u.fn.global_ctor_p);
WB (lang->u.fn.global_dtor_p);
+
WB (lang->u.fn.static_function);
WB (lang->u.fn.pure_virtual);
WB (lang->u.fn.defaulted_p);
@@ -6118,13 +6125,13 @@ trees_out::lang_decl_bools (tree t, bits_out& bits)
gcc_assert (!lang->u.fn.pending_inline_p);
WB (lang->u.fn.nonconverting);
WB (lang->u.fn.thunk_p);
+
WB (lang->u.fn.this_thunk_p);
- /* Do not stream lang->u.hidden_friend_p, it is a property of
- the TU. */
WB (lang->u.fn.omp_declare_reduction_p);
WB (lang->u.fn.has_dependent_explicit_spec_p);
WB (lang->u.fn.immediate_fn_p);
WB (lang->u.fn.maybe_deleted);
+ WB (lang->u.fn.coroutine_p);
WB (lang->u.fn.implicit_constexpr);
WB (lang->u.fn.escalated_p);
WB (lang->u.fn.xobj_func);
@@ -6164,17 +6171,23 @@ trees_in::lang_decl_bools (tree t, bits_in& bits)
lang->u.base.use_template = v;
/* lang->u.base.not_really_extern is not streamed. */
RB (lang->u.base.initialized_in_class);
+
RB (lang->u.base.threadprivate_or_deleted_p);
- /* lang->u.base.anticipated_p is not streamed. */
+ RB (lang->u.base.anticipated_p);
RB (lang->u.base.friend_or_tls);
RB (lang->u.base.unknown_bound_p);
/* lang->u.base.odr_used is not streamed. */
RB (lang->u.base.concept_p);
RB (lang->u.base.var_declared_inline_p);
RB (lang->u.base.dependent_init_p);
+
RB (lang->u.base.module_purview_p);
RB (lang->u.base.module_attach_p);
+ /* module_import_p and module_entity_p are not streamed. */
RB (lang->u.base.module_keyed_decls_p);
+
+ RB (lang->u.base.omp_declare_mapper_p);
+
switch (lang->u.base.selector)
{
default:
@@ -6183,19 +6196,22 @@ trees_in::lang_decl_bools (tree t, bits_in& bits)
case lds_fn: /* lang_decl_fn. */
RB (lang->u.fn.global_ctor_p);
RB (lang->u.fn.global_dtor_p);
+
RB (lang->u.fn.static_function);
RB (lang->u.fn.pure_virtual);
RB (lang->u.fn.defaulted_p);
RB (lang->u.fn.has_in_charge_parm_p);
RB (lang->u.fn.has_vtt_parm_p);
+ /* lang->u.f.n.pending_inline_p is not streamed. */
RB (lang->u.fn.nonconverting);
RB (lang->u.fn.thunk_p);
+
RB (lang->u.fn.this_thunk_p);
- /* lang->u.fn.hidden_friend_p is not streamed. */
RB (lang->u.fn.omp_declare_reduction_p);
RB (lang->u.fn.has_dependent_explicit_spec_p);
RB (lang->u.fn.immediate_fn_p);
RB (lang->u.fn.maybe_deleted);
+ RB (lang->u.fn.coroutine_p);
RB (lang->u.fn.implicit_constexpr);
RB (lang->u.fn.escalated_p);
RB (lang->u.fn.xobj_func);
More information about the Gcc-cvs
mailing list