Skip to content

Commit 337b9ff

Browse files
committed
c++: Fix GC with TU_LOCAL_ENTITY [PR119564]
When adding TU_LOCAL_ENTITY in r15-6379 I neglected to add it to cp_tree_node_structure, so garbage collection was crashing on it. PR c++/119564 gcc/cp/ChangeLog: * decl.cc (cp_tree_node_structure): Add TU_LOCAL_ENTITY; fix formatting. gcc/testsuite/ChangeLog: * g++.dg/modules/gc-3_a.C: New test. * g++.dg/modules/gc-3_b.C: New test. Signed-off-by: Nathaniel Shead <[email protected]> Reviewed-by: Jason Merrill <[email protected]>
1 parent b8e8829 commit 337b9ff

File tree

3 files changed

+15
-3
lines changed

3 files changed

+15
-3
lines changed

gcc/cp/decl.cc

+4-3
Original file line numberDiff line numberDiff line change
@@ -19834,21 +19834,22 @@ cp_tree_node_structure (union lang_tree_node * t)
1983419834
{
1983519835
switch (TREE_CODE (&t->generic))
1983619836
{
19837-
case ARGUMENT_PACK_SELECT: return TS_CP_ARGUMENT_PACK_SELECT;
19837+
case ARGUMENT_PACK_SELECT: return TS_CP_ARGUMENT_PACK_SELECT;
1983819838
case BASELINK: return TS_CP_BASELINK;
19839-
case CONSTRAINT_INFO: return TS_CP_CONSTRAINT_INFO;
19839+
case CONSTRAINT_INFO: return TS_CP_CONSTRAINT_INFO;
1984019840
case DEFERRED_NOEXCEPT: return TS_CP_DEFERRED_NOEXCEPT;
1984119841
case DEFERRED_PARSE: return TS_CP_DEFERRED_PARSE;
1984219842
case IDENTIFIER_NODE: return TS_CP_IDENTIFIER;
1984319843
case LAMBDA_EXPR: return TS_CP_LAMBDA_EXPR;
19844-
case BINDING_VECTOR: return TS_CP_BINDING_VECTOR;
19844+
case BINDING_VECTOR: return TS_CP_BINDING_VECTOR;
1984519845
case OVERLOAD: return TS_CP_OVERLOAD;
1984619846
case PTRMEM_CST: return TS_CP_PTRMEM;
1984719847
case STATIC_ASSERT: return TS_CP_STATIC_ASSERT;
1984819848
case TEMPLATE_DECL: return TS_CP_TEMPLATE_DECL;
1984919849
case TEMPLATE_INFO: return TS_CP_TEMPLATE_INFO;
1985019850
case TEMPLATE_PARM_INDEX: return TS_CP_TPI;
1985119851
case TRAIT_EXPR: return TS_CP_TRAIT_EXPR;
19852+
case TU_LOCAL_ENTITY: return TS_CP_TU_LOCAL_ENTITY;
1985219853
case USERDEF_LITERAL: return TS_CP_USERDEF_LITERAL;
1985319854
default: return TS_CP_GENERIC;
1985419855
}

gcc/testsuite/g++.dg/modules/gc-3_a.C

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
// PR c++/119564
2+
// { dg-additional-options "-fmodules -Wtemplate-names-tu-local" }
3+
// { dg-module-cmi M }
4+
5+
export module M;
6+
static void foo() {}; // { dg-message "declared" }
7+
template <typename> void bar() { foo(); } // { dg-warning "TU-local" }

gcc/testsuite/g++.dg/modules/gc-3_b.C

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
// PR c++/119564
2+
// { dg-additional-options "-fmodules -fno-module-lazy --param=ggc-min-expand=0 --param=ggc-min-heapsize=0" }
3+
4+
import M;

0 commit comments

Comments
 (0)