In RegionStore::getBinding we call evalCast unconditionally to align
the stored value's type to the one that is being queried. However, the
stored type might be the same, so we may end up having redundant
SymbolCasts emitted.
The solution is to check whether the to and from type are the same
in makeNonLoc.
Note, we can't just do type equivalence check at the beginning of evalCast
because when evalCast is called from getBinding then the original type
(OriginalTy) is not set, so one operand is missing for the comparison. In
evalCastSubKind(nonloc::SymbolVal) when the original type is not set,
we get the from type via SymbolVal::getType().
Should we account for qualified types?
If not, could we assert that?