https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117350
--- Comment #19 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to ak from comment #18) > Okay I looked into need_assembler_name_p. For __ct function_decl it bails > out due to > I assume that means HAS_DECL_ASSEMBLER_NAME_P returns false. HAS_DECL_ASSEMBLER_NAME_P is: #define HAS_DECL_ASSEMBLER_NAME_P(NODE) \ (CODE_CONTAINS_STRUCT (TREE_CODE (NODE), TS_DECL_WITH_VIS)) FUNCTION_DECL is defined as: DEFTREECODE (FUNCTION_DECL, "function_decl", tcc_declaration, 0) #define MARK_TS_DECL_WITH_VIS(C) \ (MARK_TS_DECL_WRTL (C), \ tree_contains_struct[C][TS_DECL_WITH_VIS] = true) #define MARK_TS_DECL_NON_COMMON(C) \ (MARK_TS_DECL_WITH_VIS (C), \ tree_contains_struct[C][TS_DECL_NON_COMMON] = true) initialize_tree_contains_struct does: code = (enum tree_code) i; ts_code = tree_node_structure_for_code (code); /* Mark the TS structure itself. */ tree_contains_struct[code][ts_code] = 1; /* Mark all the structures that TS is derived from. */ switch (ts_code) ... case TS_TYPE_DECL: case TS_FUNCTION_DECL: MARK_TS_DECL_NON_COMMON (code); break; tree_node_structure_for_code is defined by: static inline enum tree_node_structure_enum tree_node_structure_for_code (enum tree_code code) { switch (TREE_CODE_CLASS (code)) { case tcc_declaration: switch (code) { case CONST_DECL: return TS_CONST_DECL; case DEBUG_EXPR_DECL: return TS_DECL_WRTL; case FIELD_DECL: return TS_FIELD_DECL; case FUNCTION_DECL: return TS_FUNCTION_DECL; So the answer to `HAS_DECL_ASSEMBLER_NAME_P return false` is no it does not. Are you sure looking at the correct `__ct` function_decl? There are a couple of clones of the constructor decl due to in-charge ABI reasons.