On Fri, Oct 7, 2011 at 6:34 PM, Michael Matz m...@suse.de wrote:
Hi,
tree-emutls.c missed to called add_referenced_var for a variable that is
referenced. That always was a bug, but meanwhile is fatal (causing a
segfault). This fixes the problem. Okay for trunk if regstrapping
succeeds?
Ok (qualifies even as obvious).
Thanks,
Richard.
The related bugreport PR50640 (fortran segfaults for similar reasons) is a
bit more involved and requires some pondering on my part. The PR50644
(LTO segfault) requires some analysis still, to know which variable causes
this.
Ciao,
Michael.
-
PR middle-end/50638
* tree-emutls.c (gen_emutls_addr): Call add_referenced_var.
Index: tree-emutls.c
===
--- tree-emutls.c (revision 179606)
+++ tree-emutls.c (working copy)
@@ -434,6 +434,7 @@ gen_emutls_addr (tree decl, struct lower
addr = create_tmp_var (build_pointer_type (TREE_TYPE (decl)), NULL);
x = gimple_build_call (d-builtin_decl, 1, build_fold_addr_expr
(cdecl));
gimple_set_location (x, d-loc);
+ add_referenced_var (cdecl);
addr = make_ssa_name (addr, x);
gimple_call_set_lhs (x, addr);