diff mbox

[PR,libstdc++/58804,PR,libstdc++/58729] tr2/dynamic_bitset issues.

Message ID 52646F0F.6020200@verizon.net
State New
Headers show

Commit Message

Ed Smith-Rowland Oct. 21, 2013, 12:02 a.m. UTC
Greetings.

Here is a patch to correct tr2/dynamic_bitset to use __builtin_xxxll for 
long long instead of the long versions.

Relevant bugs:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58804
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58729

Builds and *really* tests clean on x86_64-linux.

OK?

2013-10-20  Edward Smith-Rowland  <3dw4rd@verizon.net>

	PR libstdc++/58804
	PR libstdc++/58729
	* include/tr2/dynamic_bitset
	(__dynamic_bitset_base<_WordT, _Alloc>::_M_are_all_aux,
	__dynamic_bitset_base<_WordT, _Alloc>::_M_do_count):
	Use __builtin_popcountll() instead of __builtin_popcountl().
	* include/tr2/dynamic_bitset.tcc
	(__dynamic_bitset_base<_WordT, _Alloc>::_M_do_find_first,
	__dynamic_bitset_base<_WordT, _Alloc>::_M_do_find_next):
	Use __builtin_ctzll() instead of __builtin_ctzl().

Comments

Paolo Carlini Oct. 21, 2013, 8:31 a.m. UTC | #1
On 10/21/2013 02:02 AM, Ed Smith-Rowland wrote:
> Greetings.
>
> Here is a patch to correct tr2/dynamic_bitset to use __builtin_xxxll 
> for long long instead of the long versions.
>
> Relevant bugs:
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58804
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58729
>
> Builds and *really* tests clean on x86_64-linux.
>
> OK?
Ok, thanks. Remember to close the Bugs.

Paolo.
diff mbox

Patch

Index: include/tr2/dynamic_bitset
===================================================================
--- include/tr2/dynamic_bitset	(revision 203841)
+++ include/tr2/dynamic_bitset	(working copy)
@@ -287,7 +287,7 @@ 
 	  if (_M_w[__i] != ~static_cast<block_type>(0))
 	    return 0;
 	return ((this->_M_w.size() - 1) * _S_bits_per_block
-		+ __builtin_popcountl(this->_M_hiword()));
+		+ __builtin_popcountll(this->_M_hiword()));
       }
 
       bool
@@ -332,7 +332,7 @@ 
       {
 	size_t __result = 0;
 	for (size_t __i = 0; __i < this->_M_w.size(); ++__i)
-	  __result += __builtin_popcountl(this->_M_w[__i]);
+	  __result += __builtin_popcountll(this->_M_w[__i]);
 	return __result;
       }
 
Index: include/tr2/dynamic_bitset.tcc
===================================================================
--- include/tr2/dynamic_bitset.tcc	(revision 203841)
+++ include/tr2/dynamic_bitset.tcc	(working copy)
@@ -131,7 +131,7 @@ 
 	  _WordT __thisword = this->_M_w[__i];
 	  if (__thisword != static_cast<_WordT>(0))
 	    return (__i * _S_bits_per_block
-		    + __builtin_ctzl(__thisword));
+		    + __builtin_ctzll(__thisword));
 	}
       // not found, so return an indication of failure.
       return __not_found;
@@ -158,7 +158,7 @@ 
 
       if (__thisword != static_cast<_WordT>(0))
 	return (__i * _S_bits_per_block
-		+ __builtin_ctzl(__thisword));
+		+ __builtin_ctzll(__thisword));
 
       // check subsequent words
       for (++__i; __i < this->_M_w.size(); ++__i)
@@ -166,7 +166,7 @@ 
 	  __thisword = this->_M_w[__i];
 	  if (__thisword != static_cast<_WordT>(0))
 	    return (__i * _S_bits_per_block
-		    + __builtin_ctzl(__thisword));
+		    + __builtin_ctzll(__thisword));
 	}
       // not found, so return an indication of failure.
       return __not_found;