From 350dc5f35091e7e5635a6cf239e4cad56e992d01 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Sun, 28 Dec 2008 04:26:26 -0500 Subject: [PATCH] Use __builtin_popcount() when available (bug #17592) --- src/fccharset.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/fccharset.c b/src/fccharset.c index 98ced27..1891f08 100644 --- a/src/fccharset.c +++ b/src/fccharset.c @@ -546,10 +546,14 @@ FcCharSetHasChar (const FcCharSet *fcs, FcChar32 ucs4) static FcChar32 FcCharSetPopCount (FcChar32 c1) { +#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) + return __builtin_popcount (c1); +#else /* hackmem 169 */ FcChar32 c2 = (c1 >> 1) & 033333333333; c2 = c1 - c2 - ((c2 >> 1) & 033333333333); return (((c2 + (c2 >> 3)) & 030707070707) % 077); +#endif } FcChar32