diff options
| -rw-r--r-- | gcc/ChangeLog | 7 | ||||
| -rw-r--r-- | gcc/tree-emutls.c | 14 |
2 files changed, 19 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 70b8027..bd5fd5b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2010-11-21 Jan Hubicka <jh@suse.cz> + Dominique d'Humieres <dominiq@lps.ens.ft> + + PR target/46510 + * tree-emutls.c (get_emutls_init_templ_addr, new_emutls_decl): Do not + finalize external decls. + 2010-11-21 John David Anglin <dave.anglin@nrc-cnrc.gc.ca> PR target/9468 diff --git a/gcc/tree-emutls.c b/gcc/tree-emutls.c index 2a1ec06..899888d 100644 --- a/gcc/tree-emutls.c +++ b/gcc/tree-emutls.c @@ -257,7 +257,12 @@ get_emutls_init_templ_addr (tree decl) targetm.emutls.tmpl_section); } - varpool_finalize_decl (to); + /* Create varpool node for the new variable and finalize it if it is + not external one. */ + if (DECL_EXTERNAL (to)) + varpool_node (to); + else + varpool_finalize_decl (to); return build_fold_addr_expr (to); } @@ -324,7 +329,12 @@ new_emutls_decl (tree decl) record_references_in_initializer (to, false); } - varpool_finalize_decl (to); + /* Create varpool node for the new variable and finalize it if it is + not external one. */ + if (DECL_EXTERNAL (to)) + varpool_node (to); + else + varpool_finalize_decl (to); return to; } |
