On 05/11/2015 10:20, Richard Henderson wrote: > >> /* Ugly code */ >> int64_t scaled = (uint64_t)(int64_t)src << scale; > > You mean > > int64_t scaled = (int64_t)((uint64_t)src << scale);
No, that also looks like a typo. I mean: - unnecessary cast to int64_t to get the sign extension while avoiding the impression of a typo - cast to uint64_t to avoid overflow - the shift is done in the uint64_t type - finally there is an implicit cast to int64_t Paolo