Which is prime example as to how C does not consider timing to be observable behavior. What the code does is that it tries to specify the operation in sufficiently complex way that makes compiler give up on any optimizations.
(but then the compiler may still do other unrelated transformations that end up making the code non-constant time again)