id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc	os	architecture	failure	difficulty	testcase	blockedby	blocking	related
5414	Add unsafeShift to Data.Bits	tibbe	simonmar	"`shiftL` and `shiftR` introduce an extra branch to check for overflows (i.e. shifts with an amount larger than 32/64). This branch gets removed if the shift amount is statically known, but otherwise leaves a branch in the optimized code, slowing down bit manipulation code.

`unsafeShiftL` and `unsafeShiftR` translate directly to the underlying hardware operation (which is undefined for shift amount larger than the architectures word size).
"	feature request	closed	normal	7.4.1	libraries/base	7.2.1	fixed			Unknown/Multiple	Unknown/Multiple	None/Unknown					
