updated emutls patch

Alexandre Oliva aoliva@redhat.com
Fri Feb 9 19:58:00 GMT 2007


Ping?  http://gcc.gnu.org/ml/gcc-patches/2007-01/msg01648.html

:ADDPATCH tls:

On Jan 19, 2007, Alexandre Oliva <aoliva@redhat.com> wrote:

> for gcc/ChangeLog
> from  Richard Henderson  <rth@redhat.com>, Jakub Jelinek  <jakub@redhat.com>, Alexandre Oliva  <aoliva@redhat.com>

> 	* Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
> 	* builtin-types.def (BT_WORD): Make unsigned.
> 	(BT_FN_VOID_PTR_WORD_WORD_PTR): New.
> 	* builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
> 	(BUILT_IN_EMUTLS_REGISTER_COMMON): New.
> 	* c-decl.c (grokdeclarator): Don't error if !have_tls.
> 	* c-parser.c (c_parser_omp_threadprivate): Likewise.
> 	* dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
> 	emulated tls.
> 	* expr.c (emutls_var_address): New.
> 	(expand_expr_real_1): Expand emulated tls.
> 	(expand_expr_addr_expr_1): Likewise.
> 	* libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
> 	* output.h (emutls_finish): Declare.
> 	* toplev.c (compile_file): Call it.
> 	* tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
> 	address before wrapping in CONST.
> 	* varasm.c (emutls_htab, emutls_object_type): New.
> 	(EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
> 	(get_emutls_object_name, get_emutls_object_type): New.
> 	(get_emutls_init_templ_addr, emutls_decl): New.
> 	(emutls_common_1, emutls_finish): New.
> 	(assemble_variable): When emulating tls, swap decls; generate
> 	constructor for the emutls objects.
> 	(do_assemble_alias): When emulating tls, swap decl and target name.
> 	(default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
> 	for emulated tls.
> 	* varpool.c (decide_is_variable_needed): Look at force_output.
> 	Recurse for emulated tls.
> 	(cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
> 	with decide_is_variable_needed.
> 	* emutls.c: New file.
> 	* config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
> 	tls_object for real tls.

> for  gcc/cp/ChangeLog
> from  Richard Henderson  <rth@redhat.com>, Jakub Jelinek  <jakub@redhat.com>

> 	* decl.c (grokvardecl): Don't error if !have_tls.
> 	(grokdeclarator): Likewise.
> 	* parser.c (cp_parser_omp_threadprivate): Likewise.

> for  gcc/fortran/ChangeLog
> from  Richard Henderson  <rth@redhat.com>, Jakub Jelinek  <jakub@redhat.com>

> 	* f95-lang.c (gfc_init_builtin_functions): Add __emutls_get_address
> 	and __emutls_register_common.
> 	* openmp.c (gfc_match_omp_threadprivate): Don't error if !have_tls.
> 	* trans-common.c (build_common_decl): Don't check have_tls.
> 	* trans-decl.c (gfc_finish_var_decl): Likewise.
> 	* types.def (BT_WORD, BT_FN_PTR_PTR): New.
> 	(BT_FN_VOID_PTR_WORD_WORD_PTR): New.

> for  gcc/testsuite/ChangeLog
> from  Richard Henderson  <rth@redhat.com>

> 	* lib/target-supports.exp (check_effective_target_tls): Redefine
> 	to mean non-emulated tls.
> 	* gcc.dg/tls/alias-1.c: Remove tls requirement.
> 	* gcc.dg/tls/asm-1.c, gcc.dg/tls/debug-1.c, gcc.dg/tls/diag-1.c,
> 	gcc.dg/tls/diag-2.c, gcc.dg/tls/diag-3.c, gcc.dg/tls/diag-4.c,
> 	gcc.dg/tls/diag-5.c, gcc.dg/tls/init-1.c, gcc.dg/tls/nonpic-1.c,
> 	gcc.dg/tls/opt-10.c, gcc.dg/tls/opt-5.c, gcc.dg/tls/opt-6.c,
> 	gcc.dg/tls/opt-8.c, gcc.dg/tls/opt-9.c, gcc.dg/tls/pic-1.c,
> 	gcc.dg/tls/struct-1.c, gcc.dg/tls/trivial.c: Likewise.

-- 
Alexandre Oliva         http://www.lsd.ic.unicamp.br/~oliva/
FSF Latin America Board Member         http://www.fsfla.org/
Red Hat Compiler Engineer   aoliva@{redhat.com, gcc.gnu.org}
Free Software Evangelist  oliva@{lsd.ic.unicamp.br, gnu.org}



More information about the Gcc-patches mailing list