[Mesa-dev] [PATCH] gallium/util: Don't use __builtin_clrsb in util_last_bit().
Roland Scheidegger
sroland at vmware.com
Tue Feb 3 05:37:13 PST 2015
Am 03.02.2015 um 02:28 schrieb Matt Turner:
> Unclear circumstances lead to undefined symbols on x86.
>
> Bugzilla: https://urldefense.proofpoint.com/v2/url?u=https-3A__bugs.gentoo.org_show-5Fbug.cgi-3Fid-3D536916&d=AwIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=Vjtt0vs_iqoI31UfJxBl7yv9I2FeiaeAYgMTLKRBc_I&m=MGEUCqG6f2VdOqZHSyX6LIUPo4REk4_ehZWPRWGSuQI&s=faytCFpyY97_7ti4xOHK34hphsVRE0YwSdvqU3DYl2k&e=
> ---
> src/gallium/auxiliary/util/u_math.h | 4 ----
> 1 file changed, 4 deletions(-)
>
> diff --git a/src/gallium/auxiliary/util/u_math.h b/src/gallium/auxiliary/util/u_math.h
> index 19c7343..ca6d0f1 100644
> --- a/src/gallium/auxiliary/util/u_math.h
> +++ b/src/gallium/auxiliary/util/u_math.h
> @@ -561,14 +561,10 @@ util_last_bit(unsigned u)
> static INLINE unsigned
> util_last_bit_signed(int i)
> {
> -#if defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 407) && !defined(__INTEL_COMPILER)
> - return 31 - __builtin_clrsb(i);
> -#else
> if (i >= 0)
> return util_last_bit(i);
> else
> return util_last_bit(~(unsigned)i);
> -#endif
> }
>
> /* Destructively loop over all of the bits in a mask as in:
>
This looks like a gcc bug to me, right?
If so it should probably be reported there.
(I guess I can live with the patch since I have no idea if it could be
narrowed down further when the builtin doesn't work but I don't
especially like it.)
Roland
More information about the mesa-dev
mailing list