$OpenBSD: patch-src_fingerprint_cpp,v 1.1 2008/09/01 08:51:03 brad Exp $
--- src/fingerprint.cpp.orig	Sun Aug 31 22:57:28 2008
+++ src/fingerprint.cpp	Sun Aug 31 22:58:30 2008
@@ -100,7 +100,11 @@ namespace OpenBabel
         int andfp = vec1[i] & vec2[i];
         int orfp = vec1[i] | vec2[i];
         //Count bits
-#ifdef __GNUC__
+      /* GCC 3.4 supports a "population count" builtin, which on many targets is
+         implemented with a single instruction.  There is a fallback definition
+         in libgcc in case a target does not have one, which should be just as
+         good as the static function below.  */
+#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
         andbits += __builtin_popcount(andfp);
         orbits += __builtin_popcount(orfp);
 #else
