https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99212
--- Comment #6 from David Malcolm <dmalcolm at gcc dot gnu.org> --- Answering my own question: https://gcc.gnu.org/onlinedocs/gccint/Types.html INTEGER_TYPE Used to represent the various integral types, including char, short, int, long, and long long. This code is not used for enumeration types, nor for the bool type. The TYPE_PRECISION is the number of bits used in the representation, represented as an unsigned int. (Note that in the general case this is not the same value as TYPE_SIZE; suppose that there were a 24-bit integer type, but that alignment requirements for the ABI required 32-bit alignment. Then, TYPE_SIZE would be an INTEGER_CST for 32, while TYPE_PRECISION would be 24.) The integer type is unsigned if TYPE_UNSIGNED holds; otherwise, it is signed.