This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Fix PR50638 (segfault with emutls)


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]