https://gcc.gnu.org/g:9dc1f699a879c9078d873d9c12811b864a1f4c33

commit r16-5810-g9dc1f699a879c9078d873d9c12811b864a1f4c33
Author: Nathaniel Shead <[email protected]>
Date:   Sun Nov 30 14:43:33 2025 +1100

    c++/modules: Fix assertion in write_function_def for DECL_LOCAL_DECL_P
    
    I hadn't retested r16-5727-g858f3007278337 on trunk before pushing and
    I'd missed that it interacts badly with the assertion added by
    r16-5305-gc38bf35f0c7fa1.  This adjusts the assertion to not check OMP
    user-defined reductions (as they won't have import_export_decl called on
    them anyway).
    
            PR c++/119864
            PR c++/122939
    
    gcc/cp/ChangeLog:
    
            * module.cc (trees_out::write_function_def): Don't crash on
            OMP used-defined type reduction function definitions.
    
    Signed-off-by: Nathaniel Shead <[email protected]>
    Reviewed-by: Patrick Palka <[email protected]>

Diff:
---
 gcc/cp/module.cc | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/gcc/cp/module.cc b/gcc/cp/module.cc
index ea22cef24a5b..7b3f9326a2a2 100644
--- a/gcc/cp/module.cc
+++ b/gcc/cp/module.cc
@@ -12935,6 +12935,9 @@ trees_out::write_function_def (tree decl)
       /* Make sure DECL_REALLY_EXTERN and DECL_INTERFACE_KNOWN are consistent
         on non-templates or we'll crash later in import_export_decl.  */
       gcc_checking_assert (flags || DECL_INTERFACE_KNOWN (decl)
+                          || (DECL_LANG_SPECIFIC (decl)
+                              && DECL_LOCAL_DECL_P (decl)
+                              && DECL_OMP_DECLARE_REDUCTION_P (decl))
                           || (DECL_LANG_SPECIFIC (decl)
                               && DECL_TEMPLATE_INFO (decl)
                               && uses_template_parms (DECL_TI_ARGS (decl))));

Reply via email to