diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e81b1cb54d00ac5aa0daf985cfbfb95aee5eadfe..c59906c026269c1be8aa8f9ad49d16169dbccc39 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2013-12-10  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* basic-block.h (gcov_working_set_t): Put back typedef. 
+	* gcov-io.h (gcov_bucket_type): Likewise.
+	(gcov_working_set_info, gcov_working_set_t): Likewise.
+
 2013-12-10  Oleg Endo  <olegendo@gcc.gnu.org>
 
 	* cgraph.h (cgraph_node_set_iterator, varpool_node_set_iterator):
diff --git a/gcc/basic-block.h b/gcc/basic-block.h
index bcd1a6ea2211a756e937ba1568c26a85a457b1a5..3fa319b4d4c210d987f59c0999fa6959362cbe0f 100644
--- a/gcc/basic-block.h
+++ b/gcc/basic-block.h
@@ -939,7 +939,7 @@ extern void rtl_profile_for_edge (edge);
 extern void default_rtl_profile (void);
 
 /* In profile.c.  */
-struct gcov_working_set_t;
+typedef struct gcov_working_set_info gcov_working_set_t;
 extern gcov_working_set_t *find_working_set (unsigned pct_times_10);
 
 /* Check tha probability is sane.  */
diff --git a/gcc/gcov-io.h b/gcc/gcov-io.h
index 93b2d4d1cdeee728482826c9301d81f65e329a99..fb3857d18080b600e72f0e19ec3d88c0ec9f0878 100644
--- a/gcc/gcov-io.h
+++ b/gcc/gcov-io.h
@@ -401,7 +401,7 @@ typedef unsigned HOST_WIDEST_INT gcov_type_unsigned;
 /* Structured records.  */
 
 /* Structure used for each bucket of the log2 histogram of counter values.  */
-struct gcov_bucket_type
+typedef struct
 {
   /* Number of counters whose profile count falls within the bucket.  */
   gcov_unsigned_t num_counters;
@@ -409,7 +409,7 @@ struct gcov_bucket_type
   gcov_type min_value;
   /* Cumulative value of the profile counts in this bucket.  */
   gcov_type cum_value;
-};
+} gcov_bucket_type;
 
 /* For a log2 scale histogram with each range split into 4
    linear sub-ranges, there will be at most 64 (max gcov_type bit size) - 1 log2
@@ -634,13 +634,13 @@ GCOV_LINKAGE void gcov_write_length (gcov_position_t /*position*/);
 
 /* Working set size statistics for a given percentage of the entire
    profile (sum_all from the counter summary).  */
-struct gcov_working_set_t
+typedef struct gcov_working_set_info
 {
   /* Number of hot counters included in this working set.  */
   unsigned num_counters;
   /* Smallest counter included in this working set.  */
   gcov_type min_counter;
-};
+} gcov_working_set_t;
 
 GCOV_LINKAGE void compute_working_sets (const struct gcov_ctr_summary *summary,
                                         gcov_working_set_t *gcov_working_sets);