[clang] Use a StringRef instead of a raw char pointer to store builtin and call information

This avoids recomputing string length that is already known at compile
time.

It has a slight impact on preprocessing / compile time, see

https://llvm-compile-time-tracker.com/compare.php?from=3f36d2d579d8b0e8824d9dd99bfa79f456858f88&to=e49640c507ddc6615b5e503144301c8e41f8f434&stat=instructions:u

This is a recommit of 719d98dfa8 with a
change to llvm/utils/TableGen/OptParserEmitter.cpp to cope with GCC bug
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108158

Differential Revision: https://reviews.llvm.org/D139881
This commit is contained in:
serge-sans-paille
2022-12-12 17:02:15 +01:00
parent b7b1e5c96f
commit 5ce4e92264
70 changed files with 593 additions and 557 deletions

View File

@@ -101,12 +101,13 @@ bool link(ArrayRef<const char *> args, llvm::raw_ostream &stdoutOS,
}
// Create prefix string literals used in Options.td
#define PREFIX(NAME, VALUE) const char *const NAME[] = VALUE;
#define PREFIX(NAME, VALUE) \
static constexpr std::initializer_list<StringLiteral> NAME = VALUE;
#include "Options.inc"
#undef PREFIX
// Create table mapping all options defined in Options.td
static constexpr opt::OptTable::Info optInfo[] = {
static constexpr std::initializer_list<opt::OptTable::Info> optInfo = {
#define OPTION(X1, X2, ID, KIND, GROUP, ALIAS, X7, X8, X9, X10, X11, X12) \
{X1, X2, X10, X11, OPT_##ID, opt::Option::KIND##Class, \
X9, X8, OPT_##GROUP, OPT_##ALIAS, X7, X12},