gcc/libstdc++-v3/testsuite/tr2
Jonathan Wakely bd3a312728
libstdc++: Fix std::tr2::dynamic_bitset shift operations [PR115399]
The shift operations for dynamic_bitset fail to zero out words where the
non-zero bits were shifted to a completely different word.

For a right shift we don't need to sanitize the unused bits in the high
word, because we know they were already clear and a right shift doesn't
change that.

libstdc++-v3/ChangeLog:

	PR libstdc++/115399
	* include/tr2/dynamic_bitset (operator>>=): Remove redundant
	call to _M_do_sanitize.
	* include/tr2/dynamic_bitset.tcc (_M_do_left_shift): Zero out
	low bits in words that should no longer be populated.
	(_M_do_right_shift): Likewise for high bits.
	* testsuite/tr2/dynamic_bitset/pr115399.cc: New test.
2024-06-12 15:06:47 +01:00
..
bases
direct_bases
dynamic_bitset libstdc++: Fix std::tr2::dynamic_bitset shift operations [PR115399] 2024-06-12 15:06:47 +01:00
headers