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?
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);