https://gcc.gnu.org/g:8f9034c840c2ff9063e04ba52520065c90ff56ad
commit r16-6983-g8f9034c840c2ff9063e04ba52520065c90ff56ad Author: Marek Polacek <[email protected]> Date: Wed Jan 21 12:30:37 2026 -0500 c++/reflection: refactor type_linkage_name This patch simplifies and renames type_linkage_name as per <https://gcc.gnu.org/pipermail/gcc-patches/2026-January/706420.html>. gcc/cp/ChangeLog: * reflect.cc (type_linkage_name): Rename to... (reflection_type_linkage_name): ...this. (eval_has_internal_linkage): Call reflection_type_linkage_name instead of type_linkage_name. (eval_has_module_linkage): Likewise. (eval_has_external_linkage): Likewise. (eval_has_c_language_linkage): Likewise. (eval_has_linkage): Likewise. Co-authored-by: Jason Merrill <[email protected]> Reviewed-by: Jason Merrill <[email protected]> Diff: --- gcc/cp/reflect.cc | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/gcc/cp/reflect.cc b/gcc/cp/reflect.cc index 788c00c6f305..9f979b5c0e73 100644 --- a/gcc/cp/reflect.cc +++ b/gcc/cp/reflect.cc @@ -1849,19 +1849,15 @@ eval_is_enumerator (const_tree r) return boolean_false_node; } -/* Get the linkage name for T, or NULL_TREE, if N/A. */ +/* Get the linkage name for T, or NULL_TREE for types with no name + or for typedefs. */ static tree -type_linkage_name (tree t) +reflection_type_linkage_name (tree t) { - if (TYPE_NAME (t) == NULL_TREE - || !DECL_P (TYPE_NAME (t)) - || (!DECL_IMPLICIT_TYPEDEF_P (TYPE_NAME (t)) - && TYPE_NAME (t) == TYPE_NAME (TYPE_MAIN_VARIANT (t)) - && !TYPE_MAIN_DECL (t))) - return NULL_TREE; - - return TYPE_NAME (t); + if (OVERLOAD_TYPE_P (t) && !typedef_variant_p (t)) + return TYPE_NAME (t); + return NULL_TREE; } /* Process std::meta::has_internal_linkage. @@ -1881,7 +1877,7 @@ eval_has_internal_linkage (tree r, reflect_kind kind) r = STRIP_TEMPLATE (r); if (TYPE_P (r)) { - r = type_linkage_name (r); + r = reflection_type_linkage_name (r); if (!r) return boolean_false_node; } @@ -1908,7 +1904,7 @@ eval_has_module_linkage (tree r, reflect_kind kind) r = STRIP_TEMPLATE (r); if (TYPE_P (r)) { - r = type_linkage_name (r); + r = reflection_type_linkage_name (r); if (!r) return boolean_false_node; } @@ -1938,7 +1934,7 @@ eval_has_external_linkage (tree r, reflect_kind kind) r = STRIP_TEMPLATE (r); if (TYPE_P (r)) { - r = type_linkage_name (r); + r = reflection_type_linkage_name (r); if (!r) return boolean_false_node; } @@ -1966,7 +1962,7 @@ eval_has_c_language_linkage (tree r, reflect_kind kind) r = STRIP_TEMPLATE (r); if (TYPE_P (r)) { - r = type_linkage_name (r); + r = reflection_type_linkage_name (r); if (!r) return boolean_false_node; } @@ -1993,7 +1989,7 @@ eval_has_linkage (tree r, reflect_kind kind) r = STRIP_TEMPLATE (r); if (TYPE_P (r)) { - r = type_linkage_name (r); + r = reflection_type_linkage_name (r); if (!r) return boolean_false_node; }
