Upon a potential integer overflow of either it's min or max range, shouldn't the result be set to [min:type-min-value, max:type-max-value], without the necessity of any further designations?
As this would seem to most accurately and simply represent the effective bounds of an underflowed integer value constrained to an arbitrarily sized integer type size for all targets I can think of, with the exception of DSP's which tend to uniquely support saturating integer arithmetic, in which case only the min or max range would be saturated correspondingly.