diff options
author | Mark Mitchell <mark@codesourcery.com> | 2007-02-25 18:47:05 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 2007-02-25 18:47:05 +0000 |
commit | fc8600f9c12ccb952cb38fbad4a2f34e0d958473 (patch) | |
tree | cfcdaf9660cd0bdc1216594b6e66f5e22560aa3e /gcc/varasm.c | |
parent | 2a025b54f6867e218f4ec07a70c57833162c0c32 (diff) | |
download | gcc-fc8600f9c12ccb952cb38fbad4a2f34e0d958473.zip gcc-fc8600f9c12ccb952cb38fbad4a2f34e0d958473.tar.gz gcc-fc8600f9c12ccb952cb38fbad4a2f34e0d958473.tar.bz2 |
extend.texi: Document optional priority argument to constructors and destructors.
* doc/extend.texi: Document optional priority argument to
constructors and destructors.
* tree.c (init_priority_for_decl): Adjust GTY markers.
(init_ttree): Use priority-info hash functions for
init_priority_for_decl.
(tree_map_eq): Rename to ...
(tree_map_base_eq): ... this.
(tree_map_marked_p): Rename to ...
(tree_map_base_marked_p): ... this.
(tree_map_base_hash): New function.
(decl_init_priority_lookup): Rework.
(decl_fini_priority_lookup): New function.
(decl_priority_info): New function.
(decl_init_priority_insert): Use it.
(decl_fini_priority_insert): Likewise.
(decl_restrict_base_lookup): Adjust for refactoring of tree_map
hierarchy.
(decl_restrict_base_insert): Likewise.
(decl_debug_expr_insert): Likewise.
(decl_value_expr_lookup): Likewise.
(decl_value_expr_insert): Likewise.
* tree.h (priority_type): New type.
(decl_init_priority_lookup): Use priority_type.
(decl_fini_priority_lookup): New function.
(decl_init_priority_insert): Use priority_type.
(decl_fini_priority_insert): New function.
(DECL_HAS_INIT_PRIORITY): Tweak comments.
(DECL_INIT_PRIORITY): Likewise.
(SET_DECL_INIT_PRIORITY): Add comment.
(DECL_FINI_PRIORITY): New macro.
(SET_DECL_FINI_PRIORITY): Likewise.
(DEFAULT_INIT_PRIORITY): Document.
(MAX_INIT_PRIORITY): Likewise.
(MAX_RESERVED_INIT_PRIORITY): Likewise.
(tree_map_base): New type.
(tree_map_base_eq): New function.
(tree_map_base_hash): Likewise.
(tree_map_base_marked_p): Likewise.
(tree_map): Inherit from tree_map_base.
(tree_map_eq): Make it a macro.
(tree_map_marked_p): Likewise.
(tree_int_map): Inherit from tree_map_base.
(tree_int_map_eq): Make it a macro.
(tree_int_map_hash): Likewise.
(tree_int_map_marked_p): Likewise.
(tree_priority_map): New type.
(tree_priority_map_eq): New macro.
(tree_priority_map_hash): Likewise.
(tree_priority_map_marked_p): Likewise.
* varasm.c (emults_decl): Adjust for refactoring of tree_map
hierarchy.
(emutls_common_1): Likewise.
* lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
* tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
of tree_map hierarchy.
* tree-cfg.c (move_stmt_r): Likewise.
(new_label_mapper): Likewise.
* c-tree.h (c_expand_body): Move to ...
* c-common.h (c_expand_body): ... here.
* c-decl.c (c_expand_body): Move to ...
* c-common.c (c_expand_body): ... here.
(c_common_attribute_table): Allow 1 argument for the constructor
and destructor attributes.
(get_priority): New function.
(handle_constructor_attribute): Set DECL_INIT_PRIORITY.
(handle_destructor_attribute): Set DECL_FINI_PRIORITY.
* cp-tree.h (static_ctors): Remove.
* cp-tree.h (static_dtors): Likewise.
* cp-objcp-common.c (decl_shadowed_for_var_lookup): Adjust for
refactoring of tree_map hierarchy.
(decl_shadowed_for_var_insert): Likewise.
* semantics.c (expand_body): Use c_expand_body.
(expand_or_defer_fn): Don't update static_ctors or static_dtors.
* decl2.c (static_ctors): Remove.
(static_dtors): Likewise.
(generate_ctor_or_dtor_function): Pass NULL_TREE to
objc_generate_static_init_call. Do not call static_[cd]tors.
(generate_ctor_and_dtor_functions_for_priority): Do not check for
static_[cd]tors.
(cp_write_global_declarations): Likewise.
* decl.c (annotate_value): Adjust for refactoring of tree_map
hierarchy.
* gcc.dg/initpri1.c: New test.
* gcc.dg/initpri2.c: Likewise.
* g++.dg/special/initpri1.C: New test.
* g++.dg/special/initpri2.C: Likewise.
* g++.dg/special/conpr-1.C: Use init_priority effective target.
* g++.dg/special/conpr-2.C: Likewise.
* g++.dg/special/conpr-3.C: Likewise.
* g++.dg/special/conpr-4.C: Likewise.
* g++.dg/special/initp1.C: Likewise.
* g++.dg/special/ecos.exp: Remove code to detect availability of
constructor priorities.
* lib/target-support.exp (target_init_priority): New function.
From-SVN: r122315
Diffstat (limited to 'gcc/varasm.c')
-rw-r--r-- | gcc/varasm.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/gcc/varasm.c b/gcc/varasm.c index 5671864..6c22145 100644 --- a/gcc/varasm.c +++ b/gcc/varasm.c @@ -343,7 +343,7 @@ emutls_decl (tree decl) of the decl's pointer. In emutls_finish we iterate through the hash table, and we want this traversal to be predictable. */ in.hash = htab_hash_string (IDENTIFIER_POINTER (name)); - in.from = decl; + in.base.from = decl; loc = htab_find_slot_with_hash (emutls_htab, &in, in.hash, INSERT); h = *loc; if (h != NULL) @@ -355,7 +355,7 @@ emutls_decl (tree decl) h = ggc_alloc (sizeof (struct tree_map)); h->hash = in.hash; - h->from = decl; + h->base.from = decl; h->to = to; *(struct tree_map **) loc = h; @@ -394,9 +394,9 @@ emutls_common_1 (void **loc, void *xstmts) tree args, x, *pstmts = (tree *) xstmts; tree word_type_node; - if (! DECL_COMMON (h->from) - || (DECL_INITIAL (h->from) - && DECL_INITIAL (h->from) != error_mark_node)) + if (! DECL_COMMON (h->base.from) + || (DECL_INITIAL (h->base.from) + && DECL_INITIAL (h->base.from) != error_mark_node)) return 1; word_type_node = lang_hooks.types.type_for_mode (word_mode, 1); @@ -407,9 +407,9 @@ emutls_common_1 (void **loc, void *xstmts) output. */ x = null_pointer_node; args = tree_cons (NULL, x, NULL); - x = build_int_cst (word_type_node, DECL_ALIGN_UNIT (h->from)); + x = build_int_cst (word_type_node, DECL_ALIGN_UNIT (h->base.from)); args = tree_cons (NULL, x, args); - x = fold_convert (word_type_node, DECL_SIZE_UNIT (h->from)); + x = fold_convert (word_type_node, DECL_SIZE_UNIT (h->base.from)); args = tree_cons (NULL, x, args); x = build_fold_addr_expr (h->to); args = tree_cons (NULL, x, args); |