]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ggc-page.c (ggc_alloc_stat): Use __builtin_ctzl instead of a loop to look for a free...
authorSteven Bosscher <stevenb@suse.de>
Sun, 16 Jan 2005 21:09:24 +0000 (21:09 +0000)
committerSteven Bosscher <steven@gcc.gnu.org>
Sun, 16 Jan 2005 21:09:24 +0000 (21:09 +0000)
* ggc-page.c (ggc_alloc_stat): Use __builtin_ctzl instead of a
loop to look for a free slot in a page entry.

From-SVN: r93738

gcc/ChangeLog
gcc/ggc-page.c

index 9bff84f653c37609d2c18240e4533b5257dc909d..a3015093f73e4982ac3dfd5242a718a2e5fad36f 100644 (file)
@@ -1,3 +1,8 @@
+2005-01-16  Steven Bosscher  <stevenb@suse.de>
+
+       * ggc-page.c (ggc_alloc_stat): Use __builtin_ctzl instead of a
+       loop to look for a free slot in a page entry.
+
 2005-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
 
        PR target/16304
index e0dfb1610d404fc26d734486d7623b16daaab0b9..362bfe19763ccf9f8716f643f8d0d9b87b8ec66d 100644 (file)
@@ -1139,8 +1139,14 @@ ggc_alloc_stat (size_t size MEM_STAT_DECL)
          word = bit = 0;
          while (~entry->in_use_p[word] == 0)
            ++word;
+
+#if GCC_VERSION >= 3004
+         bit = __builtin_ctzl (~entry->in_use_p[word]);
+#else
          while ((entry->in_use_p[word] >> bit) & 1)
            ++bit;
+#endif
+
          hint = word * HOST_BITS_PER_LONG + bit;
        }