aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/tree-profile.c
diff options
context:
space:
mode:
authorYiran Wang <yiran@google.com>2015-06-23 15:33:17 -0700
committerYiran Wang <yiran@google.com>2015-06-29 10:56:28 -0700
commit1d9fec7937f45dde5e04cac966a2d9a12f2fc15a (patch)
tree3fbcd18a379a05fd6d43491a107e1f36bc61b185 /gcc-4.9/gcc/tree-profile.c
parentf378ebf14df0952eae870c9865bab8326aa8f137 (diff)
downloadtoolchain_gcc-1d9fec7937f45dde5e04cac966a2d9a12f2fc15a.tar.gz
toolchain_gcc-1d9fec7937f45dde5e04cac966a2d9a12f2fc15a.tar.bz2
toolchain_gcc-1d9fec7937f45dde5e04cac966a2d9a12f2fc15a.zip
Synchronize with google/gcc-4_9 to r224707 (from r214835)
Change-Id: I3d6f06fc613c8f8b6a82143dc44b7338483aac5d
Diffstat (limited to 'gcc-4.9/gcc/tree-profile.c')
-rw-r--r--gcc-4.9/gcc/tree-profile.c35
1 files changed, 26 insertions, 9 deletions
diff --git a/gcc-4.9/gcc/tree-profile.c b/gcc-4.9/gcc/tree-profile.c
index b16525181..6e1d643ce 100644
--- a/gcc-4.9/gcc/tree-profile.c
+++ b/gcc-4.9/gcc/tree-profile.c
@@ -96,6 +96,11 @@ static GTY(()) tree dc_gcov_type_ptr_var;
static GTY(()) tree ptr_void;
static GTY(()) tree gcov_info_decl;
+/* When -D__KERNEL__ is in the option list, we assume this is a
+ compilation for Linux Kernel. This is checked and set in
+ coverage.c. */
+bool is_kernel_build;
+
/* Do initialization work for the edge profiler. */
/* Add code:
@@ -123,7 +128,7 @@ init_ic_make_global_vars (void)
ptr_void);
TREE_PUBLIC (ic_void_ptr_var) = 1;
DECL_EXTERNAL (ic_void_ptr_var) = 1;
- if (targetm.have_tls)
+ if (targetm.have_tls && !is_kernel_build)
DECL_TLS_MODEL (ic_void_ptr_var) =
decl_default_tls_model (ic_void_ptr_var);
gcov_type_ptr = build_pointer_type (get_gcov_type ());
@@ -133,7 +138,7 @@ init_ic_make_global_vars (void)
gcov_type_ptr);
TREE_PUBLIC (ic_gcov_type_ptr_var) = 1;
DECL_EXTERNAL (ic_gcov_type_ptr_var) = 1;
- if (targetm.have_tls)
+ if (targetm.have_tls && !is_kernel_build)
DECL_TLS_MODEL (ic_gcov_type_ptr_var) =
decl_default_tls_model (ic_gcov_type_ptr_var);
}
@@ -164,7 +169,7 @@ init_ic_make_global_vars (void)
TREE_STATIC (ic_void_ptr_var) = 1;
DECL_ARTIFICIAL (ic_void_ptr_var) = 1;
DECL_INITIAL (ic_void_ptr_var) = NULL;
- if (targetm.have_tls)
+ if (targetm.have_tls && !is_kernel_build)
DECL_TLS_MODEL (ic_void_ptr_var) =
decl_default_tls_model (ic_void_ptr_var);
@@ -195,7 +200,7 @@ init_ic_make_global_vars (void)
TREE_STATIC (ic_gcov_type_ptr_var) = 1;
DECL_ARTIFICIAL (ic_gcov_type_ptr_var) = 1;
DECL_INITIAL (ic_gcov_type_ptr_var) = NULL;
- if (targetm.have_tls)
+ if (targetm.have_tls && !is_kernel_build)
DECL_TLS_MODEL (ic_gcov_type_ptr_var) =
decl_default_tls_model (ic_gcov_type_ptr_var);
@@ -259,6 +264,9 @@ static tree GTY(()) gcov_lipo_strict_inclusion = NULL_TREE;
/* extern gcov_unsigned_t __gcov_lipo_comdat_algorithm */
static tree GTY(()) gcov_lipo_comdat_algorithm = NULL_TREE;
+/* extern gcov_unsigned_t __gcov_lipo_sampling_period */
+static tree GTY(()) gcov_lipo_sampling_period = NULL_TREE;
+
/* Insert STMT_IF around given sequence of consecutive statements in the
same basic block starting with STMT_START, ending with STMT_END.
PROB is the probability of the taken branch. */
@@ -503,6 +511,13 @@ tree_init_dyn_ipa_parameters (void)
get_gcov_unsigned_t ());
init_comdat_decl (gcov_lipo_comdat_algorithm,
PARAM_LIPO_COMDAT_ALGORITHM);
+ gcov_lipo_sampling_period = build_decl (
+ UNKNOWN_LOCATION,
+ VAR_DECL,
+ get_identifier ("__gcov_lipo_sampling_period"),
+ get_gcov_unsigned_t ());
+ init_comdat_decl (gcov_lipo_sampling_period,
+ PARAM_LIPO_SAMPLING_PERIOD);
}
}
@@ -639,7 +654,7 @@ tree_init_instrumentation_sampling (void)
TREE_PUBLIC (gcov_sample_counter_decl) = 1;
DECL_EXTERNAL (gcov_sample_counter_decl) = 1;
DECL_ARTIFICIAL (gcov_sample_counter_decl) = 1;
- if (targetm.have_tls)
+ if (targetm.have_tls && !is_kernel_build)
DECL_TLS_MODEL (gcov_sample_counter_decl) =
decl_default_tls_model (gcov_sample_counter_decl);
}
@@ -1404,8 +1419,9 @@ direct_call_profiling (void)
build_pointer_type (gcov_type_node));
DECL_ARTIFICIAL (dc_gcov_type_ptr_var) = 1;
DECL_EXTERNAL (dc_gcov_type_ptr_var) = 1;
- DECL_TLS_MODEL (dc_gcov_type_ptr_var) =
- decl_default_tls_model (dc_gcov_type_ptr_var);
+ if (targetm.have_tls && !is_kernel_build)
+ DECL_TLS_MODEL (dc_gcov_type_ptr_var) =
+ decl_default_tls_model (dc_gcov_type_ptr_var);
dc_void_ptr_var =
build_decl (UNKNOWN_LOCATION, VAR_DECL,
@@ -1413,8 +1429,9 @@ direct_call_profiling (void)
ptr_void);
DECL_ARTIFICIAL (dc_void_ptr_var) = 1;
DECL_EXTERNAL (dc_void_ptr_var) = 1;
- DECL_TLS_MODEL (dc_void_ptr_var) =
- decl_default_tls_model (dc_void_ptr_var);
+ if (targetm.have_tls && !is_kernel_build)
+ DECL_TLS_MODEL (dc_void_ptr_var) =
+ decl_default_tls_model (dc_void_ptr_var);
}
if (!DECL_STATIC_CONSTRUCTOR (current_function_decl))