diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index 2746d04fe4af918fd4a7a4139b53b63736615bc6..c2045f940fe1be814c70e09d4dbc43f060a4c9c0 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,8 @@
+2012-01-18  Richard Guenther  <rguenther@suse.de>
+
+	* c-opts.c (c_common_post_options): Reset LTO flags if
+	we are about to generate a PCH.
+
 2012-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
 
 	PR c++/51777
diff --git a/gcc/c-family/c-opts.c b/gcc/c-family/c-opts.c
index 4f0d8861470b2ea243b2f498cdaf54ea71180c3d..f2a7971781d3f00f709d37ac7435277ce25891a5 100644
--- a/gcc/c-family/c-opts.c
+++ b/gcc/c-family/c-opts.c
@@ -1058,6 +1058,13 @@ c_common_post_options (const char **pfilename)
       && flag_preprocess_only && !flag_no_line_commands)
     pp_dir_change (parse_in, get_src_pwd ());
 
+  /* Disable LTO output when outputting a precompiled header.  */
+  if (pch_file && flag_lto)
+    {
+      flag_lto = 0;
+      flag_generate_lto = 0;
+    }
+
   return flag_preprocess_only;
 }