Sink the interesting parts of StringMapEntry::Create into a new function
StringMapEntryBase::allocateWithKey that's only templated on the
allocator, taking the entry size and alignment as parameters.
I double-checked this doesn't impact clang's compile time performance here:
https://llvm-compile-time-tracker.com/compare.php?from=2d430f902d72b8a1d3bc036a80273ca80af1e338&to=63e5ea3bf2a2b59508e452aee6a9dc0eb369f527&stat=instructions
Took me a minute to figure out why this was a member function - since it doesn't need access to any members, etc. Perhaps it could be a free function in a detail or implementation namespace? Not sure if we have a strong convention of how that's done in LLVM.