I wasn't sure what to do with that array, since it was static and couldn't have "empty" slots in them like the arrays in tree.h. Also, do we need to have *every* type in that list? What's the rule for whether a type gets installed there or not? The comment says "guaranteed to be in the runtime support" but does that mean "for this particular build" (wrt multilibs) as not all intN types are guaranteed (even the int128 types were not guaranteed to be supported before my patch). In other parts of the patch, just taking out the special case for __int128 was sufficient to "do the right thing" for all __intN types.
I can certainly put the intN types in there, but note that it would mean regenerating the fundamentals[] array at runtime to include those types which are supported at the time. Do the entries in the array need to be in a particular order?