Hi, this patch fixes a bug I apparently intoduced while updating the code for new alias API. Instead of creating alias of emutls var it now creates alias of target var that leads to ICE later (or a wrong code when ICE is worked around).
Bootstrapped/regtested x86_64-linux with emutls and comitted. Index: ChangeLog =================================================================== --- ChangeLog (revision 187114) +++ ChangeLog (working copy) @@ -1,5 +1,10 @@ 2012-05-03 Jan Hubicka <j...@suse.cz> + PR middle-end/53093 + * tree-emutls.c (new_emutls_decl): Fix handling of aliases. + +2012-05-03 Jan Hubicka <j...@suse.cz> + PR middle-end/53106 * ipa.c (cgraph_remove_unreachable_nodes): Fix handling of clones. Index: tree-emutls.c =================================================================== --- tree-emutls.c (revision 187011) +++ tree-emutls.c (working copy) @@ -338,7 +338,7 @@ new_emutls_decl (tree decl, tree alias_o else varpool_create_variable_alias (to, varpool_node_for_asm - (DECL_ASSEMBLER_NAME (alias_of))->symbol.decl); + (DECL_ASSEMBLER_NAME (DECL_VALUE_EXPR (alias_of)))->symbol.decl); return to; }