Skip to content
Snippets Groups Projects
Commit d5ae0ba6 authored by Teresa Johnson's avatar Teresa Johnson Committed by Teresa Johnson
Browse files

Fix PR gcov-profile/55734 by using methods from hwint.c instead of builtins...


Fix PR gcov-profile/55734 by using methods from hwint.c instead of
builtins, to handle non-GCC and older versions of GCC. When building
libgcov.a, however, hwint.c is not available, but we are always using
the bootstrapped compiler and can therefore use the builtins.

Use __builtin_popcount instead of __builtin_popcountll, since we
are operating on an int.

Use floor_log2 directly, instead of clz_hwi for the non-libgcov case,
and handle situations where the size of the gcov_type is bigger than
HOST_WIDE_INT. Verified that the various cases compiled by forcing
different HOST_BITS_PER_WIDE_INT values.

2012-12-20  Teresa Johnson  <tejohnson@google.com>
            Jakub Jelinek  <jakub@redhat.com>

        PR gcov-profile/55734
	* gcov-io.c (gcov_read_summary): Use __builtin_popcount instead
        of __builtin_popcountll when building libgcov.a, otherwise use
        popcount_hwi.
	(gcov_histo_index): When not building libgcov.a, use floor_log2
        instead of __builtin_clzll.

Co-Authored-By: default avatarJakub Jelinek <jakub@redhat.com>

From-SVN: r194634
parent 63f2ff0f
No related branches found
No related tags found
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment