diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 1f01cd3149f..b320d5d725a 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,8 @@ 1999-04-13 Jason Merrill + * decl2.c (setup_initp): Compare DECL_ASSEMBLER_NAME instead + of the decls themselves. + * pt.c (tsubst_function_type): Copy attributes over. * tree.c (cp_valid_lang_attribute): New fn. Handle init_priority diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index 0ba19fdc8fa..4ea3035099c 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -2897,7 +2897,14 @@ setup_initp () p = &static_aggregates; for (; *p; ) { - t = value_member (TREE_VALUE (*p), static_aggregates_initp); + /* We check for symbol equivalence rather than identical decls + because decl_attributes is run before duplicate_decls. + XXX change to use DECL_MACHINE_ATTRIBUTES instead of + static_aggregates_initp. */ + for (t = static_aggregates_initp; t; t = TREE_CHAIN (t)) + if (DECL_ASSEMBLER_NAME (TREE_VALUE (t)) + == DECL_ASSEMBLER_NAME (TREE_VALUE (*p))) + break; if (t) {