Consider this code (bits.c):
bits.c
#include #include #include static uint64_t pick_bits(unsigned
My assumption is that gcc is inlining pick_bits and thus compiling with the knowledge that hi == lo+3 which allows it to assume that hi >= lo is always true as long as lo is low enough that lo+3 doesn't overflow.
hi == lo+3
hi >= lo
lo
lo+3