[StaticAnalyzer] Use llvm::StringLiteral instead of StringRef in few places

StringRef's constexpr constructor seems to be extremely slow in MSVC
2017, so don't use it for generated tables. Should make PR43369 a bit
better, no functionality change.

llvm-svn: 372386
This commit is contained in:
Benjamin Kramer 2019-09-20 12:59:29 +00:00
parent 6192ad2622
commit 8599ffa4b1
1 changed files with 7 additions and 6 deletions

View File

@ -278,13 +278,13 @@ public:
// Create an array of all -analyzer-config command line options. Sort it in // Create an array of all -analyzer-config command line options. Sort it in
// the constructor. // the constructor.
std::vector<StringRef> AnalyzerConfigCmdFlags = { std::vector<llvm::StringLiteral> AnalyzerConfigCmdFlags = {
#define ANALYZER_OPTION_DEPENDS_ON_USER_MODE(TYPE, NAME, CMDFLAG, DESC, \ #define ANALYZER_OPTION_DEPENDS_ON_USER_MODE(TYPE, NAME, CMDFLAG, DESC, \
SHALLOW_VAL, DEEP_VAL) \ SHALLOW_VAL, DEEP_VAL) \
ANALYZER_OPTION(TYPE, NAME, CMDFLAG, DESC, SHALLOW_VAL) ANALYZER_OPTION(TYPE, NAME, CMDFLAG, DESC, SHALLOW_VAL)
#define ANALYZER_OPTION(TYPE, NAME, CMDFLAG, DESC, DEFAULT_VAL) \ #define ANALYZER_OPTION(TYPE, NAME, CMDFLAG, DESC, DEFAULT_VAL) \
CMDFLAG, llvm::StringLiteral(CMDFLAG),
#include "clang/StaticAnalyzer/Core/AnalyzerOptions.def" #include "clang/StaticAnalyzer/Core/AnalyzerOptions.def"
#undef ANALYZER_OPTION #undef ANALYZER_OPTION
@ -415,9 +415,10 @@ inline UserModeKind AnalyzerOptions::getUserMode() const {
inline std::vector<StringRef> inline std::vector<StringRef>
AnalyzerOptions::getRegisteredCheckers(bool IncludeExperimental) { AnalyzerOptions::getRegisteredCheckers(bool IncludeExperimental) {
static const StringRef StaticAnalyzerCheckerNames[] = { static constexpr llvm::StringLiteral StaticAnalyzerCheckerNames[] = {
#define GET_CHECKERS #define GET_CHECKERS
#define CHECKER(FULLNAME, CLASS, HELPTEXT, DOC_URI, IS_HIDDEN) FULLNAME, #define CHECKER(FULLNAME, CLASS, HELPTEXT, DOC_URI, IS_HIDDEN) \
llvm::StringLiteral(FULLNAME),
#include "clang/StaticAnalyzer/Checkers/Checkers.inc" #include "clang/StaticAnalyzer/Checkers/Checkers.inc"
#undef CHECKER #undef CHECKER
#undef GET_CHECKERS #undef GET_CHECKERS
@ -433,9 +434,9 @@ AnalyzerOptions::getRegisteredCheckers(bool IncludeExperimental) {
inline std::vector<StringRef> inline std::vector<StringRef>
AnalyzerOptions::getRegisteredPackages(bool IncludeExperimental) { AnalyzerOptions::getRegisteredPackages(bool IncludeExperimental) {
static const StringRef StaticAnalyzerPackageNames[] = { static constexpr llvm::StringLiteral StaticAnalyzerPackageNames[] = {
#define GET_PACKAGES #define GET_PACKAGES
#define PACKAGE(FULLNAME) FULLNAME, #define PACKAGE(FULLNAME) llvm::StringLiteral(FULLNAME),
#include "clang/StaticAnalyzer/Checkers/Checkers.inc" #include "clang/StaticAnalyzer/Checkers/Checkers.inc"
#undef PACKAGE #undef PACKAGE
#undef GET_PACKAGES #undef GET_PACKAGES