If the upper bound of a subrange is 0 and the lower bound is positive, the type is a floating point type, and the lower bound of the subrange indicates the number of bytes in the type:
.stabs "float:t12=r1;4;0;",128,0,0,0 .stabs "double:t13=r1;8;0;",128,0,0,0
However, GCC writes
long double the same way it writes
double, so there is no way to distinguish.
.stabs "long double:t14=r1;8;0;",128,0,0,0
Complex types are defined the same way as floating-point types; there is no way to distinguish a single-precision complex from a double-precision floating-point type.
void type is defined as itself:
I'm not sure how a boolean type is represented.