From d984c8ef7d4c467e80159dc010358c703dfa7fce Mon Sep 17 00:00:00 2001
From: Xinliang David Li <davidxl@google.com>
Date: Fri, 29 Apr 2011 17:13:23 +0000
Subject: [PATCH] use tls for ic vars

From-SVN: r173177
---
 gcc/ChangeLog      |  7 +++++++
 gcc/coverage.c     |  2 +-
 gcc/tree-profile.c | 10 ++++++++++
 3 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b1ee31f63a04..ced5c1f13f6e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2011-04-27  Xinliang David Li  <davidxl@google.com>
+
+	* tree-profile.c (init_ic_make_global_vars): Set
+	tls attribute on ic vars.
+	* coverage.c (coverage_end_function): Initialize
+	function_list with zero.
+
 2011-04-29  Richard Guenther  <rguenther@suse.de>
 
 	* builtins.c (fold_builtin_classify_type): Use integer_type_node
diff --git a/gcc/coverage.c b/gcc/coverage.c
index 1efd714c9409..cf045d54dd41 100644
--- a/gcc/coverage.c
+++ b/gcc/coverage.c
@@ -647,7 +647,7 @@ coverage_end_function (unsigned lineno_checksum, unsigned cfg_checksum)
     {
       struct function_list *item;
 
-      item = XNEW (struct function_list);
+      item = XCNEW (struct function_list);
 
       *functions_tail = item;
       functions_tail = &item->next;
diff --git a/gcc/tree-profile.c b/gcc/tree-profile.c
index c296dffe3c38..69d77f07892e 100644
--- a/gcc/tree-profile.c
+++ b/gcc/tree-profile.c
@@ -44,6 +44,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "value-prof.h"
 #include "cgraph.h"
 #include "profile.h"
+#include "target.h"
+#include "output.h"
 
 static GTY(()) tree gcov_type_node;
 static GTY(()) tree gcov_type_tmp_var;
@@ -80,6 +82,10 @@ init_ic_make_global_vars (void)
   TREE_PUBLIC (ic_void_ptr_var) = 0;
   DECL_ARTIFICIAL (ic_void_ptr_var) = 1;
   DECL_INITIAL (ic_void_ptr_var) = NULL;
+  if (targetm.have_tls)
+    DECL_TLS_MODEL (ic_void_ptr_var) =
+      decl_default_tls_model (ic_void_ptr_var);
+
   varpool_finalize_decl (ic_void_ptr_var);
   varpool_mark_needed_node (varpool_node (ic_void_ptr_var));
 
@@ -92,6 +98,10 @@ init_ic_make_global_vars (void)
   TREE_PUBLIC (ic_gcov_type_ptr_var) = 0;
   DECL_ARTIFICIAL (ic_gcov_type_ptr_var) = 1;
   DECL_INITIAL (ic_gcov_type_ptr_var) = NULL;
+  if (targetm.have_tls)
+    DECL_TLS_MODEL (ic_gcov_type_ptr_var) =
+      decl_default_tls_model (ic_gcov_type_ptr_var);
+
   varpool_finalize_decl (ic_gcov_type_ptr_var);
   varpool_mark_needed_node (varpool_node (ic_gcov_type_ptr_var));
 }
-- 
GitLab