• jason's avatar
    Allow dynamic initialization of thread_locals. · 462819c8
    jason authored
    gcc/cp/
    	* decl.c: Define tls_aggregates.
    	(expand_static_init): Remove sorry.  Add to tls_aggregates.
    	* cp-tree.h: Declare tls_aggregates.
    	* call.c (set_up_extended_ref_temp): Add to tls_aggregates.
    	* decl2.c (var_needs_tls_wrapper): New.
    	(var_defined_without_dynamic_init): New.
    	(get_tls_init_fn, get_tls_wrapper_fn): New.
    	(generate_tls_wrapper, handle_tls_init): New.
    	(cp_write_global_declarations): Call handle_tls_init and
    	enerate_tls_wrapper.
    	* mangle.c (write_guarded_var_name): Split out from..
    	(mangle_guard_variable): ...here.
    	(mangle_tls_init_fn, mangle_tls_wrapper_fn): Use it.
    	(decl_tls_wrapper_p): New.
    	* semantics.c (finish_id_expression): Replace use of thread_local
    	variable with a call to its wrapper.
    libiberty/
    	* cp-demangle.c (d_special_name, d_dump): Handle TH and TW.
    	(d_make_comp, d_print_comp): Likewise.
    include/
    	* demangle.h (enum demangle_component_type): Add
    	DEMANGLE_COMPONENT_TLS_INIT and DEMANGLE_COMPONENT_TLS_WRAPPER.
    
    git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@192211 138bc75d-0d04-0410-961f-82ee72b054a4
    462819c8
ChangeLog 29.3 KB