diff --git a/ChangeLog b/ChangeLog
index 81f99853cd10ba92551a9622bbc21cc192dc87d8..b4e998cb0757a65a3e164e5c2419bab4a6a4f74c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2003-01-30  Alexandre Oliva  <aoliva@redhat.com>
+
+	* config.if: If gcc_version is already set, just use it.  Don't set
+	gcc_version_trigger if it's already set, otherwise set it to
+	gcc/version.c, but only if the file exists.  If it is not set and
+	gcc/version.c does not exist, try to extract the version number from
+	$CC.
+
 2003-01-29  Andreas Tobler  <a.tobler@schweiz.ch>
 
         * MAINTAINERS: Add myself to write-after-approval list.
diff --git a/config.if b/config.if
index aa35a3f8140ce28cc15328337e2247b4e6746d35..c38b59c841e7a4493da268e1efe2393a302846b0 100644
--- a/config.if
+++ b/config.if
@@ -22,9 +22,18 @@ fi
 
 # Set libstdcxx_incdir.
 # This is the same as gcc/configure.in and libstdc++-v3/acinclude.m4. 
-gcc_version_trigger=${if_topsrcdir}/gcc/version.c
-gcc_version_full=`grep version_string ${gcc_version_trigger} | sed -e 's/.*"\([^"]*\)".*/\1/'`
-gcc_version=`echo ${gcc_version_full} | sed -e 's/\([^ ]*\) .*/\1/'`
+if test -z "$gcc_version"; then
+  if test -z "${gcc_version_trigger}" \
+     && test -f ${if_topsrcdir}/gcc/version.c; then
+    gcc_version_trigger=${if_topsrcdir}/gcc/version.c
+  fi    
+  if test -f "${gcc_version_trigger}"; then
+    gcc_version_full=`grep version_string "${gcc_version_trigger}" | sed -e 's/.*"\([^"]*\)".*/\1/'`
+  else
+    gcc_version_full=`$CC -v 2>&1 | sed -n 's/^gcc version //p'`
+  fi
+  gcc_version=`echo ${gcc_version_full} | sed -e 's/\([^ ]*\) .*/\1/'`
+fi
 libstdcxx_incdir=c++/${gcc_version}
 
 # The trickiest part is libc_interface.