> This seems mostly plausible, though I don't see anything to ensure that > __intN does not exist at all if the size matches one of the standard C > types, or if the mode fails targetm.scalar_mode_supported_p.
What do we check against for this? Is there some table of standard types we can read the bitsize of in toplev.c, or should we use the macros as below? What about float/vector/complex types? I assume we don't check those since the __intN types are integer types. Also, should we special-case the int128 case so we always get __int128 if the backend supports TImode? static bool standard_type_bitsize (int bitsize) { if (bitsize == 128) return false; if (bitsize == CHAR_TYPE_SIZE || bitsize == SHORT_TYPE_SIZE || bitsize == INT_TYPE_SIZE || bitsize == LONG_TYPE_SIZE || bitsize == LONG_LONG_TYPE_SIZE) return true; return false; }