With volatile it could be changed by an interrupt service routine between reads, so it makes sense.
Or, it could be hardware that has a "clear flag on read" type behavior.
Or, it could be hardware that has a "clear flag on read" type behavior.