Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d31605dc authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'core-types-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull hweight type fix from Ingo Molnar:
 "This lone commit makes sure that __const_hweight8() is unsigned, which
  addresses a build warning if code is built with -Wsign-compare.

  I hope the type cast in this cleanup is fine - another option would be
  to eliminate the double unary negation and use a construct with more
  obvious integer type characteristics, along the lines of:

        ((w) & (1ULL << 1) ? 1U : 0U)

  or so"

* 'core-types-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  bitops: Fix signedness of compile-time hweight implementations
parents b3fd4ea9 c32fa99f
Loading
Loading
Loading
Loading
+9 −8
Original line number Diff line number Diff line
@@ -5,6 +5,7 @@
 * Compile time versions of __arch_hweightN()
 */
#define __const_hweight8(w)		\
	((unsigned int)			\
	 ((!!((w) & (1ULL << 0))) +	\
	  (!!((w) & (1ULL << 1))) +	\
	  (!!((w) & (1ULL << 2))) +	\
@@ -12,7 +13,7 @@
	  (!!((w) & (1ULL << 4))) +	\
	  (!!((w) & (1ULL << 5))) +	\
	  (!!((w) & (1ULL << 6))) +	\
	(!!((w) & (1ULL << 7)))	)
	  (!!((w) & (1ULL << 7)))))

#define __const_hweight16(w) (__const_hweight8(w)  + __const_hweight8((w)  >> 8 ))
#define __const_hweight32(w) (__const_hweight16(w) + __const_hweight16((w) >> 16))