diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index daf7fa187a06fbd40943b7528ac6de9ae7089550..00aa275e3fbe0afc468515384b73bc6f6d34f37d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2010-11-30  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
+
+	* ggc-zone.c (ggc_pch_read): Fix conditional compilation.
+	* ggc-none.c (ggc_internal_alloc_zone_stat)
+	(ggc_internal_cleared_alloc_zone_stat): New.
+
 2010-11-29  Joakim Tjernlund  <Joakim.Tjernlund@transmode.se>
 
 	* config/rs6000/rs6000.c (rs6000_reg_live_or_pic_offset_p): Check
diff --git a/gcc/ggc-none.c b/gcc/ggc-none.c
index f9c48cb8cc5902c3179bafe46e584a39f6ddc4f2..97d25b9b6536c48bab0d00ef4ad1534689b2885a 100644
--- a/gcc/ggc-none.c
+++ b/gcc/ggc-none.c
@@ -71,3 +71,22 @@ struct alloc_zone
 struct alloc_zone rtl_zone;
 struct alloc_zone tree_zone;
 struct alloc_zone tree_id_zone;
+
+#if defined (GGC_ZONE) && !defined (GENERATOR_FILE)
+
+void *
+ggc_internal_alloc_zone_stat (size_t size,
+                              struct alloc_zone * ARG_UNUSED(z) MEM_STAT_DECL)
+{
+    return xmalloc (size);
+}
+
+void *
+ggc_internal_cleared_alloc_zone_stat (size_t size,
+                                      struct alloc_zone * ARG_UNUSED(z)
+                                      MEM_STAT_DECL)
+{
+    return xcalloc (size, 1);
+}
+
+#endif
diff --git a/gcc/ggc-zone.c b/gcc/ggc-zone.c
index bd68008f63b7459e2af348c3932007d893e92671..43472be79bd17c8c78286e08af631e8bb7720470 100644
--- a/gcc/ggc-zone.c
+++ b/gcc/ggc-zone.c
@@ -2464,7 +2464,7 @@ ggc_pch_read (FILE *f, void *addr)
 
   /* We've just read in a PCH file.  So, every object that used to be
      allocated is now free.  */
-#ifdef 0 && GATHER_STATISTICS
+#ifdef GATHER_STATISTICS
   zone_allocate_marks ();
   ggc_prune_overhead_list ();
   zone_free_marks ();