diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 366779f2bf1f489bb5fc14ae617ce493274ca866..de097583be8dbbb922d5023d7ae32d46f7db23a7 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2006-01-29  Gabriel Dos Reis  <gdr@integrable-solutions.net>
+
+	* toplev.c: Fix thinko.
+
 2006-01-29  Gabriel Dos Reis  <gdr@integrable-solutions.net>
 	    Marcin Dalecki  <martin@dalecki.de>
 
diff --git a/gcc/toplev.c b/gcc/toplev.c
index 62c9b4ff93703861c489439627825dd5e91e3718..f6cfe7c8176bc95f9af6822075fcc2efbf6db044 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -520,7 +520,7 @@ read_integral_parameter (const char *p, const char *pname, const int  defval)
    for floor_log2 and exact_log2; see toplev.h.  That construct, however,
    conflicts with the ISO C++ One Definition Rule.   */
 
-#if !defined (__cplusplus)
+#if GCC_VERSION < 3004 || !defined (__cplusplus)
 
 /* Given X, an unsigned number, return the largest int Y such that 2**Y <= X.
    If X is 0, return -1.  */
@@ -572,7 +572,7 @@ exact_log2 (unsigned HOST_WIDE_INT x)
 #endif
 }
 
-#endif /* !defined (__cplusplus)  */
+#endif /*  GCC_VERSION < 3004 || !defined (__cplusplus)  */
 
 /* Handler for fatal signals, such as SIGSEGV.  These are transformed
    into ICE messages, which is much more user friendly.  In case the