On Thu, 9 May 2024 at 11:08, Linus Torvalds <torva...@linux-foundation.org> wrote: > > Any half-way decent compiler will end up optimizing away the shifts > and adds for the high bits because they see the assignment to > 'all_bits'. There's no point in generating high bits that just get > thrown away.
.. it might also actually be a good idea *IF* we were to have some kind of "implicit cast drops bits" warning, in that the compiler for that case wouldn't remove the upper bits calculation, but would trigger a warning if they are non-zero. So there are actually potential advantages to just always apparently doing the full 64-bit arithmetic. Without debug warnings, it's a no-op that the compiler will just skip. And with some hypothetical debug flag, it would be a "you are now losing the high bits of the time value when assigning the result to a limited 32-bit time_t" warning. Linus