https://gcc.gnu.org/g:ccb4ef5bd0a7cb001e2c8d883a5b9280d0773018

commit r16-6754-gccb4ef5bd0a7cb001e2c8d883a5b9280d0773018
Author: Nathaniel Shead <[email protected]>
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 <[email protected]>
    Signed-off-by: Nathaniel Shead <[email protected]>

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);

Reply via email to