id summary reporter owner description type status milestone component version severity resolution keywords cc 12401 UB when sizeof(std::size_t) in floor_log2 viboes Ion Gaztañaga "The line {{{ v |= v >> 32; // (*) }}} in the following function, should fall in UB, when the sizeof(std::size_t) is 4, isn't it? {{{ inline std::size_t floor_log2 (std::size_t v, integral_constant) { static const std::size_t MultiplyDeBruijnBitPosition[64] = { 63, 0, 58, 1, 59, 47, 53, 2, 60, 39, 48, 27, 54, 33, 42, 3, 61, 51, 37, 40, 49, 18, 28, 20, 55, 30, 34, 11, 43, 14, 22, 4, 62, 57, 46, 52, 38, 26, 32, 41, 50, 36, 17, 19, 29, 10, 13, 21, 56, 45, 25, 31, 35, 16, 9, 12, 44, 24, 15, 8, 23, 7, 6, 5}; v |= v >> 1; v |= v >> 2; v |= v >> 4; v |= v >> 8; v |= v >> 16; v |= v >> 32; // (*) return MultiplyDeBruijnBitPosition[((std::size_t)((v - (v >> 1))*0x07EDD5E59A4E28C2ULL)) >> 58]; } }}} " Bugs closed To Be Determined intrusive Boost 1.61.0 Problem invalid