This is correct. Note that this is only valid for objects, in expressions intermediate values may lay outside the range of the type.
The question was about expressions, not objects, and I disagree with you: intermediate values may not lay outside the range of the type. Gimplification changes expressions to objects, so if what you claim were true, you could never use the type range values to deduce anything.