[ADT] Migrate StringSwitch Cases with 6+ arguments to new overload. NFC. (#163549)
Switch to the `.Cases({S0, S1, ...}, Value)` overload instead, and the
manually-enumerated overloads with 6+ arguments are getting deprecated
in https://github.com/llvm/llvm-project/pull/163405.
This pre-commits API updates ahead of the deprecation to make potential
reverts cleaner. This was already reviewed in #163405.
This commit is contained in:
parent
bfee9db785
commit
2ed7baafc3
@ -140,8 +140,8 @@ public:
|
||||
// It might be great to reuse FrontendOptions::getInputKindForExtension()
|
||||
// but for now it doesn't discriminate between code and header files.
|
||||
return llvm::StringSwitch<bool>(SM.getFilename(SL).rsplit('.').second)
|
||||
.Cases("c", "m", "mm", "C", "cc", "cp", true)
|
||||
.Cases("cpp", "CPP", "c++", "cxx", "cppm", true)
|
||||
.Cases({"c", "m", "mm", "C", "cc", "cp"}, true)
|
||||
.Cases({"cpp", "CPP", "c++", "cxx", "cppm"}, true)
|
||||
.Default(false);
|
||||
}
|
||||
|
||||
|
||||
@ -420,23 +420,23 @@ static MCUInfo AVRMcus[] = {
|
||||
|
||||
static bool ArchHasELPM(StringRef Arch) {
|
||||
return llvm::StringSwitch<bool>(Arch)
|
||||
.Cases("31", "51", "6", true)
|
||||
.Cases("102", "104", "105", "106", "107", true)
|
||||
.Default(false);
|
||||
.Cases({"31", "51", "6"}, true)
|
||||
.Cases({"102", "104", "105", "106", "107"}, true)
|
||||
.Default(false);
|
||||
}
|
||||
|
||||
static bool ArchHasELPMX(StringRef Arch) {
|
||||
return llvm::StringSwitch<bool>(Arch)
|
||||
.Cases("51", "6", true)
|
||||
.Cases("102", "104", "105", "106", "107", true)
|
||||
.Default(false);
|
||||
.Cases({"51", "6"}, true)
|
||||
.Cases({"102", "104", "105", "106", "107"}, true)
|
||||
.Default(false);
|
||||
}
|
||||
|
||||
static bool ArchHasMOVW(StringRef Arch) {
|
||||
return llvm::StringSwitch<bool>(Arch)
|
||||
.Cases("25", "35", "4", "5", "51", "6", true)
|
||||
.Cases("102", "103", "104", "105", "106", "107", true)
|
||||
.Default(false);
|
||||
.Cases({"25", "35", "4", "5", "51", "6"}, true)
|
||||
.Cases({"102", "103", "104", "105", "106", "107"}, true)
|
||||
.Default(false);
|
||||
}
|
||||
|
||||
static bool ArchHasLPMX(StringRef Arch) {
|
||||
@ -445,16 +445,16 @@ static bool ArchHasLPMX(StringRef Arch) {
|
||||
|
||||
static bool ArchHasMUL(StringRef Arch) {
|
||||
return llvm::StringSwitch<bool>(Arch)
|
||||
.Cases("4", "5", "51", "6", true)
|
||||
.Cases("102", "103", "104", "105", "106", "107", true)
|
||||
.Default(false);
|
||||
.Cases({"4", "5", "51", "6"}, true)
|
||||
.Cases({"102", "103", "104", "105", "106", "107"}, true)
|
||||
.Default(false);
|
||||
}
|
||||
|
||||
static bool ArchHasJMPCALL(StringRef Arch) {
|
||||
return llvm::StringSwitch<bool>(Arch)
|
||||
.Cases("3", "31", "35", "5", "51", "6", true)
|
||||
.Cases("102", "103", "104", "105", "106", "107", true)
|
||||
.Default(false);
|
||||
.Cases({"3", "31", "35", "5", "51", "6"}, true)
|
||||
.Cases({"102", "103", "104", "105", "106", "107"}, true)
|
||||
.Default(false);
|
||||
}
|
||||
|
||||
static bool ArchHas3BytePC(StringRef Arch) {
|
||||
|
||||
@ -57,24 +57,25 @@ static bool skipArgs(const char *Flag, bool HaveCrashVFS, int &SkipNum,
|
||||
SkipNum = 2;
|
||||
// These flags are all of the form -Flag <Arg> and are treated as two
|
||||
// arguments. Therefore, we need to skip the flag and the next argument.
|
||||
bool ShouldSkip = llvm::StringSwitch<bool>(Flag)
|
||||
.Cases("-MF", "-MT", "-MQ", "-serialize-diagnostic-file", true)
|
||||
.Cases("-o", "-dependency-file", true)
|
||||
.Cases("-fdebug-compilation-dir", "-diagnostic-log-file", true)
|
||||
.Cases("-dwarf-debug-flags", "-ivfsoverlay", true)
|
||||
.Default(false);
|
||||
bool ShouldSkip =
|
||||
llvm::StringSwitch<bool>(Flag)
|
||||
.Cases({"-MF", "-MT", "-MQ", "-serialize-diagnostic-file"}, true)
|
||||
.Cases({"-o", "-dependency-file"}, true)
|
||||
.Cases({"-fdebug-compilation-dir", "-diagnostic-log-file"}, true)
|
||||
.Cases({"-dwarf-debug-flags", "-ivfsoverlay"}, true)
|
||||
.Default(false);
|
||||
if (ShouldSkip)
|
||||
return true;
|
||||
|
||||
// Some include flags shouldn't be skipped if we have a crash VFS
|
||||
IsInclude =
|
||||
llvm::StringSwitch<bool>(Flag)
|
||||
.Cases("-include", "-header-include-file", true)
|
||||
.Cases("-idirafter", "-internal-isystem", "-iwithprefix", true)
|
||||
.Cases("-internal-externc-isystem", "-iprefix", true)
|
||||
.Cases("-iwithprefixbefore", "-isystem", "-iquote", true)
|
||||
.Cases("-isysroot", "-I", "-F", "-resource-dir", true)
|
||||
.Cases("-internal-iframework", "-iframework", "-include-pch", true)
|
||||
.Cases({"-include", "-header-include-file"}, true)
|
||||
.Cases({"-idirafter", "-internal-isystem", "-iwithprefix"}, true)
|
||||
.Cases({"-internal-externc-isystem", "-iprefix"}, true)
|
||||
.Cases({"-iwithprefixbefore", "-isystem", "-iquote"}, true)
|
||||
.Cases({"-isysroot", "-I", "-F", "-resource-dir"}, true)
|
||||
.Cases({"-internal-iframework", "-iframework", "-include-pch"}, true)
|
||||
.Default(false);
|
||||
if (IsInclude)
|
||||
return !HaveCrashVFS;
|
||||
@ -83,9 +84,9 @@ static bool skipArgs(const char *Flag, bool HaveCrashVFS, int &SkipNum,
|
||||
|
||||
// These flags are all of the form -Flag and have no second argument.
|
||||
ShouldSkip = llvm::StringSwitch<bool>(Flag)
|
||||
.Cases("-M", "-MM", "-MG", "-MP", "-MD", true)
|
||||
.Case("-MMD", true)
|
||||
.Default(false);
|
||||
.Cases({"-M", "-MM", "-MG", "-MP", "-MD"}, true)
|
||||
.Case("-MMD", true)
|
||||
.Default(false);
|
||||
|
||||
// Match found.
|
||||
SkipNum = 1;
|
||||
|
||||
@ -105,8 +105,9 @@ XRayArgs::XRayArgs(const ToolChain &TC, const ArgList &Args) {
|
||||
for (const auto &P : BundleParts) {
|
||||
// TODO: Automate the generation of the string case table.
|
||||
auto Valid = llvm::StringSwitch<bool>(P)
|
||||
.Cases("none", "all", "function", "function-entry",
|
||||
"function-exit", "custom", true)
|
||||
.Cases({"none", "all", "function", "function-entry",
|
||||
"function-exit", "custom"},
|
||||
true)
|
||||
.Default(false);
|
||||
|
||||
if (!Valid) {
|
||||
|
||||
@ -14,25 +14,26 @@ using namespace clang;
|
||||
|
||||
InputKind FrontendOptions::getInputKindForExtension(StringRef Extension) {
|
||||
return llvm::StringSwitch<InputKind>(Extension)
|
||||
.Cases("ast", "pcm", InputKind(Language::Unknown, InputKind::Precompiled))
|
||||
.Cases({"ast", "pcm"},
|
||||
InputKind(Language::Unknown, InputKind::Precompiled))
|
||||
.Case("c", Language::C)
|
||||
.Cases("S", "s", Language::Asm)
|
||||
.Cases({"S", "s"}, Language::Asm)
|
||||
.Case("i", InputKind(Language::C).getPreprocessed())
|
||||
.Case("ii", InputKind(Language::CXX).getPreprocessed())
|
||||
.Case("cui", InputKind(Language::CUDA).getPreprocessed())
|
||||
.Case("m", Language::ObjC)
|
||||
.Case("mi", InputKind(Language::ObjC).getPreprocessed())
|
||||
.Cases("mm", "M", Language::ObjCXX)
|
||||
.Cases({"mm", "M"}, Language::ObjCXX)
|
||||
.Case("mii", InputKind(Language::ObjCXX).getPreprocessed())
|
||||
.Cases("C", "cc", "cp", Language::CXX)
|
||||
.Cases("cpp", "CPP", "c++", "cxx", "hpp", "hxx", Language::CXX)
|
||||
.Cases({"C", "cc", "cp"}, Language::CXX)
|
||||
.Cases({"cpp", "CPP", "c++", "cxx", "hpp", "hxx"}, Language::CXX)
|
||||
.Case("cppm", Language::CXX)
|
||||
.Cases("iim", "iih", InputKind(Language::CXX).getPreprocessed())
|
||||
.Cases({"iim", "iih"}, InputKind(Language::CXX).getPreprocessed())
|
||||
.Case("cl", Language::OpenCL)
|
||||
.Case("clcpp", Language::OpenCLCXX)
|
||||
.Cases("cu", "cuh", Language::CUDA)
|
||||
.Cases({"cu", "cuh"}, Language::CUDA)
|
||||
.Case("hip", Language::HIP)
|
||||
.Cases("ll", "bc", Language::LLVM_IR)
|
||||
.Cases({"ll", "bc"}, Language::LLVM_IR)
|
||||
.Case("hlsl", Language::HLSL)
|
||||
.Case("cir", Language::CIR)
|
||||
.Default(Language::Unknown);
|
||||
|
||||
@ -38,7 +38,7 @@ std::optional<std::string> createIncludeHeaderName(const StringRef FullPath) {
|
||||
|
||||
bool isHeaderFile(StringRef Path) {
|
||||
return StringSwitch<bool>(sys::path::extension(Path))
|
||||
.Cases(".h", ".H", ".hh", ".hpp", ".hxx", true)
|
||||
.Cases({".h", ".H", ".hh", ".hpp", ".hxx"}, true)
|
||||
.Default(false);
|
||||
}
|
||||
|
||||
|
||||
@ -248,50 +248,67 @@ static bool warnByDefaultOnWrongCase(StringRef Include) {
|
||||
|
||||
// The standard C/C++ and Posix headers
|
||||
return llvm::StringSwitch<bool>(LowerInclude)
|
||||
// C library headers
|
||||
.Cases("assert.h", "complex.h", "ctype.h", "errno.h", "fenv.h", true)
|
||||
.Cases("float.h", "inttypes.h", "iso646.h", "limits.h", "locale.h", true)
|
||||
.Cases("math.h", "setjmp.h", "signal.h", "stdalign.h", "stdarg.h", true)
|
||||
.Cases("stdatomic.h", "stdbool.h", "stdckdint.h", "stdcountof.h", true)
|
||||
.Cases("stddef.h", "stdint.h", "stdio.h", "stdlib.h", "stdnoreturn.h", true)
|
||||
.Cases("string.h", "tgmath.h", "threads.h", "time.h", "uchar.h", true)
|
||||
.Cases("wchar.h", "wctype.h", true)
|
||||
// C library headers
|
||||
.Cases({"assert.h", "complex.h", "ctype.h", "errno.h", "fenv.h"}, true)
|
||||
.Cases({"float.h", "inttypes.h", "iso646.h", "limits.h", "locale.h"},
|
||||
true)
|
||||
.Cases({"math.h", "setjmp.h", "signal.h", "stdalign.h", "stdarg.h"}, true)
|
||||
.Cases({"stdatomic.h", "stdbool.h", "stdckdint.h", "stdcountof.h"}, true)
|
||||
.Cases({"stddef.h", "stdint.h", "stdio.h", "stdlib.h", "stdnoreturn.h"},
|
||||
true)
|
||||
.Cases({"string.h", "tgmath.h", "threads.h", "time.h", "uchar.h"}, true)
|
||||
.Cases({"wchar.h", "wctype.h"}, true)
|
||||
|
||||
// C++ headers for C library facilities
|
||||
.Cases("cassert", "ccomplex", "cctype", "cerrno", "cfenv", true)
|
||||
.Cases("cfloat", "cinttypes", "ciso646", "climits", "clocale", true)
|
||||
.Cases("cmath", "csetjmp", "csignal", "cstdalign", "cstdarg", true)
|
||||
.Cases("cstdbool", "cstddef", "cstdint", "cstdio", "cstdlib", true)
|
||||
.Cases("cstring", "ctgmath", "ctime", "cuchar", "cwchar", true)
|
||||
.Case("cwctype", true)
|
||||
// C++ headers for C library facilities
|
||||
.Cases({"cassert", "ccomplex", "cctype", "cerrno", "cfenv"}, true)
|
||||
.Cases({"cfloat", "cinttypes", "ciso646", "climits", "clocale"}, true)
|
||||
.Cases({"cmath", "csetjmp", "csignal", "cstdalign", "cstdarg"}, true)
|
||||
.Cases({"cstdbool", "cstddef", "cstdint", "cstdio", "cstdlib"}, true)
|
||||
.Cases({"cstring", "ctgmath", "ctime", "cuchar", "cwchar"}, true)
|
||||
.Case("cwctype", true)
|
||||
|
||||
// C++ library headers
|
||||
.Cases("algorithm", "fstream", "list", "regex", "thread", true)
|
||||
.Cases("array", "functional", "locale", "scoped_allocator", "tuple", true)
|
||||
.Cases("atomic", "future", "map", "set", "type_traits", true)
|
||||
.Cases("bitset", "initializer_list", "memory", "shared_mutex", "typeindex", true)
|
||||
.Cases("chrono", "iomanip", "mutex", "sstream", "typeinfo", true)
|
||||
.Cases("codecvt", "ios", "new", "stack", "unordered_map", true)
|
||||
.Cases("complex", "iosfwd", "numeric", "stdexcept", "unordered_set", true)
|
||||
.Cases("condition_variable", "iostream", "ostream", "streambuf", "utility", true)
|
||||
.Cases("deque", "istream", "queue", "string", "valarray", true)
|
||||
.Cases("exception", "iterator", "random", "strstream", "vector", true)
|
||||
.Cases("forward_list", "limits", "ratio", "system_error", true)
|
||||
// C++ library headers
|
||||
.Cases({"algorithm", "fstream", "list", "regex", "thread"}, true)
|
||||
.Cases({"array", "functional", "locale", "scoped_allocator", "tuple"},
|
||||
true)
|
||||
.Cases({"atomic", "future", "map", "set", "type_traits"}, true)
|
||||
.Cases(
|
||||
{"bitset", "initializer_list", "memory", "shared_mutex", "typeindex"},
|
||||
true)
|
||||
.Cases({"chrono", "iomanip", "mutex", "sstream", "typeinfo"}, true)
|
||||
.Cases({"codecvt", "ios", "new", "stack", "unordered_map"}, true)
|
||||
.Cases({"complex", "iosfwd", "numeric", "stdexcept", "unordered_set"},
|
||||
true)
|
||||
.Cases(
|
||||
{"condition_variable", "iostream", "ostream", "streambuf", "utility"},
|
||||
true)
|
||||
.Cases({"deque", "istream", "queue", "string", "valarray"}, true)
|
||||
.Cases({"exception", "iterator", "random", "strstream", "vector"}, true)
|
||||
.Cases({"forward_list", "limits", "ratio", "system_error"}, true)
|
||||
|
||||
// POSIX headers (which aren't also C headers)
|
||||
.Cases("aio.h", "arpa/inet.h", "cpio.h", "dirent.h", "dlfcn.h", true)
|
||||
.Cases("fcntl.h", "fmtmsg.h", "fnmatch.h", "ftw.h", "glob.h", true)
|
||||
.Cases("grp.h", "iconv.h", "langinfo.h", "libgen.h", "monetary.h", true)
|
||||
.Cases("mqueue.h", "ndbm.h", "net/if.h", "netdb.h", "netinet/in.h", true)
|
||||
.Cases("netinet/tcp.h", "nl_types.h", "poll.h", "pthread.h", "pwd.h", true)
|
||||
.Cases("regex.h", "sched.h", "search.h", "semaphore.h", "spawn.h", true)
|
||||
.Cases("strings.h", "stropts.h", "sys/ipc.h", "sys/mman.h", "sys/msg.h", true)
|
||||
.Cases("sys/resource.h", "sys/select.h", "sys/sem.h", "sys/shm.h", "sys/socket.h", true)
|
||||
.Cases("sys/stat.h", "sys/statvfs.h", "sys/time.h", "sys/times.h", "sys/types.h", true)
|
||||
.Cases("sys/uio.h", "sys/un.h", "sys/utsname.h", "sys/wait.h", "syslog.h", true)
|
||||
.Cases("tar.h", "termios.h", "trace.h", "ulimit.h", true)
|
||||
.Cases("unistd.h", "utime.h", "utmpx.h", "wordexp.h", true)
|
||||
.Default(false);
|
||||
// POSIX headers (which aren't also C headers)
|
||||
.Cases({"aio.h", "arpa/inet.h", "cpio.h", "dirent.h", "dlfcn.h"}, true)
|
||||
.Cases({"fcntl.h", "fmtmsg.h", "fnmatch.h", "ftw.h", "glob.h"}, true)
|
||||
.Cases({"grp.h", "iconv.h", "langinfo.h", "libgen.h", "monetary.h"}, true)
|
||||
.Cases({"mqueue.h", "ndbm.h", "net/if.h", "netdb.h", "netinet/in.h"},
|
||||
true)
|
||||
.Cases({"netinet/tcp.h", "nl_types.h", "poll.h", "pthread.h", "pwd.h"},
|
||||
true)
|
||||
.Cases({"regex.h", "sched.h", "search.h", "semaphore.h", "spawn.h"}, true)
|
||||
.Cases({"strings.h", "stropts.h", "sys/ipc.h", "sys/mman.h", "sys/msg.h"},
|
||||
true)
|
||||
.Cases({"sys/resource.h", "sys/select.h", "sys/sem.h", "sys/shm.h",
|
||||
"sys/socket.h"},
|
||||
true)
|
||||
.Cases({"sys/stat.h", "sys/statvfs.h", "sys/time.h", "sys/times.h",
|
||||
"sys/types.h"},
|
||||
true)
|
||||
.Cases(
|
||||
{"sys/uio.h", "sys/un.h", "sys/utsname.h", "sys/wait.h", "syslog.h"},
|
||||
true)
|
||||
.Cases({"tar.h", "termios.h", "trace.h", "ulimit.h"}, true)
|
||||
.Cases({"unistd.h", "utime.h", "utmpx.h", "wordexp.h"}, true)
|
||||
.Default(false);
|
||||
}
|
||||
|
||||
/// Find a similar string in `Candidates`.
|
||||
|
||||
@ -361,11 +361,11 @@ static bool shouldTrackImplicitObjectArg(const CXXMethodDecl *Callee) {
|
||||
if (!Callee->getIdentifier())
|
||||
return false;
|
||||
return llvm::StringSwitch<bool>(Callee->getName())
|
||||
.Cases("begin", "rbegin", "cbegin", "crbegin", true)
|
||||
.Cases("end", "rend", "cend", "crend", true)
|
||||
.Cases("c_str", "data", "get", true)
|
||||
.Cases({"begin", "rbegin", "cbegin", "crbegin"}, true)
|
||||
.Cases({"end", "rend", "cend", "crend"}, true)
|
||||
.Cases({"c_str", "data", "get"}, true)
|
||||
// Map and set types.
|
||||
.Cases("find", "equal_range", "lower_bound", "upper_bound", true)
|
||||
.Cases({"find", "equal_range", "lower_bound", "upper_bound"}, true)
|
||||
.Default(false);
|
||||
}
|
||||
if (Callee->getReturnType()->isReferenceType()) {
|
||||
@ -377,7 +377,7 @@ static bool shouldTrackImplicitObjectArg(const CXXMethodDecl *Callee) {
|
||||
OO == OverloadedOperatorKind::OO_Star;
|
||||
}
|
||||
return llvm::StringSwitch<bool>(Callee->getName())
|
||||
.Cases("front", "back", "at", "top", "value", true)
|
||||
.Cases({"front", "back", "at", "top", "value"}, true)
|
||||
.Default(false);
|
||||
}
|
||||
return false;
|
||||
@ -394,14 +394,14 @@ static bool shouldTrackFirstArgument(const FunctionDecl *FD) {
|
||||
if (FD->getReturnType()->isPointerType() ||
|
||||
isRecordWithAttr<PointerAttr>(FD->getReturnType())) {
|
||||
return llvm::StringSwitch<bool>(FD->getName())
|
||||
.Cases("begin", "rbegin", "cbegin", "crbegin", true)
|
||||
.Cases("end", "rend", "cend", "crend", true)
|
||||
.Cases({"begin", "rbegin", "cbegin", "crbegin"}, true)
|
||||
.Cases({"end", "rend", "cend", "crend"}, true)
|
||||
.Case("data", true)
|
||||
.Default(false);
|
||||
}
|
||||
if (FD->getReturnType()->isReferenceType()) {
|
||||
return llvm::StringSwitch<bool>(FD->getName())
|
||||
.Cases("get", "any_cast", true)
|
||||
.Cases({"get", "any_cast"}, true)
|
||||
.Default(false);
|
||||
}
|
||||
return false;
|
||||
|
||||
@ -3629,18 +3629,20 @@ static FormatAttrKind getFormatAttrKind(StringRef Format) {
|
||||
// Check for formats that get handled specially.
|
||||
.Case("NSString", NSStringFormat)
|
||||
.Case("CFString", CFStringFormat)
|
||||
.Cases("gnu_strftime", "strftime", StrftimeFormat)
|
||||
.Cases({"gnu_strftime", "strftime"}, StrftimeFormat)
|
||||
|
||||
// Otherwise, check for supported formats.
|
||||
.Cases("gnu_scanf", "scanf", "gnu_printf", "printf", "printf0",
|
||||
"gnu_strfmon", "strfmon", SupportedFormat)
|
||||
.Cases("cmn_err", "vcmn_err", "zcmn_err", SupportedFormat)
|
||||
.Cases("kprintf", "syslog", SupportedFormat) // OpenBSD.
|
||||
.Case("freebsd_kprintf", SupportedFormat) // FreeBSD.
|
||||
.Cases({"gnu_scanf", "scanf", "gnu_printf", "printf", "printf0",
|
||||
"gnu_strfmon", "strfmon"},
|
||||
SupportedFormat)
|
||||
.Cases({"cmn_err", "vcmn_err", "zcmn_err"}, SupportedFormat)
|
||||
.Cases({"kprintf", "syslog"}, SupportedFormat) // OpenBSD.
|
||||
.Case("freebsd_kprintf", SupportedFormat) // FreeBSD.
|
||||
.Case("os_trace", SupportedFormat)
|
||||
.Case("os_log", SupportedFormat)
|
||||
|
||||
.Cases("gcc_diag", "gcc_cdiag", "gcc_cxxdiag", "gcc_tdiag", IgnoredFormat)
|
||||
.Cases({"gcc_diag", "gcc_cdiag", "gcc_cxxdiag", "gcc_tdiag"},
|
||||
IgnoredFormat)
|
||||
.Default(InvalidFormat);
|
||||
}
|
||||
|
||||
|
||||
@ -154,15 +154,15 @@ void WalkAST::VisitCallExpr(CallExpr *CE) {
|
||||
.Case("mkstemp", &WalkAST::checkCall_mkstemp)
|
||||
.Case("mkdtemp", &WalkAST::checkCall_mkstemp)
|
||||
.Case("mkstemps", &WalkAST::checkCall_mkstemp)
|
||||
.Cases("strcpy", "__strcpy_chk", &WalkAST::checkCall_strcpy)
|
||||
.Cases("strcat", "__strcat_chk", &WalkAST::checkCall_strcat)
|
||||
.Cases("sprintf", "vsprintf", "scanf", "wscanf", "fscanf", "fwscanf",
|
||||
"vscanf", "vwscanf", "vfscanf", "vfwscanf",
|
||||
.Cases({"strcpy", "__strcpy_chk"}, &WalkAST::checkCall_strcpy)
|
||||
.Cases({"strcat", "__strcat_chk"}, &WalkAST::checkCall_strcat)
|
||||
.Cases({"sprintf", "vsprintf", "scanf", "wscanf", "fscanf", "fwscanf",
|
||||
"vscanf", "vwscanf", "vfscanf", "vfwscanf"},
|
||||
&WalkAST::checkDeprecatedOrUnsafeBufferHandling)
|
||||
.Cases("sscanf", "swscanf", "vsscanf", "vswscanf", "swprintf",
|
||||
"snprintf", "vswprintf", "vsnprintf", "memcpy", "memmove",
|
||||
.Cases({"sscanf", "swscanf", "vsscanf", "vswscanf", "swprintf",
|
||||
"snprintf", "vswprintf", "vsnprintf", "memcpy", "memmove"},
|
||||
&WalkAST::checkDeprecatedOrUnsafeBufferHandling)
|
||||
.Cases("strncpy", "strncat", "memset", "fprintf",
|
||||
.Cases({"strncpy", "strncat", "memset", "fprintf"},
|
||||
&WalkAST::checkDeprecatedOrUnsafeBufferHandling)
|
||||
.Case("drand48", &WalkAST::checkCall_rand)
|
||||
.Case("erand48", &WalkAST::checkCall_rand)
|
||||
@ -766,12 +766,14 @@ void WalkAST::checkDeprecatedOrUnsafeBufferHandling(const CallExpr *CE,
|
||||
|
||||
int ArgIndex =
|
||||
llvm::StringSwitch<int>(Name)
|
||||
.Cases("scanf", "wscanf", "vscanf", "vwscanf", 0)
|
||||
.Cases("fscanf", "fwscanf", "vfscanf", "vfwscanf", "sscanf",
|
||||
"swscanf", "vsscanf", "vswscanf", 1)
|
||||
.Cases("sprintf", "vsprintf", "fprintf", 1)
|
||||
.Cases("swprintf", "snprintf", "vswprintf", "vsnprintf", "memcpy",
|
||||
"memmove", "memset", "strncpy", "strncat", DEPR_ONLY)
|
||||
.Cases({"scanf", "wscanf", "vscanf", "vwscanf"}, 0)
|
||||
.Cases({"fscanf", "fwscanf", "vfscanf", "vfwscanf", "sscanf",
|
||||
"swscanf", "vsscanf", "vswscanf"},
|
||||
1)
|
||||
.Cases({"sprintf", "vsprintf", "fprintf"}, 1)
|
||||
.Cases({"swprintf", "snprintf", "vswprintf", "vsnprintf", "memcpy",
|
||||
"memmove", "memset", "strncpy", "strncat"},
|
||||
DEPR_ONLY)
|
||||
.Default(UNKNOWN_CALL);
|
||||
|
||||
assert(ArgIndex != UNKNOWN_CALL && "Unsupported function");
|
||||
|
||||
@ -597,15 +597,16 @@ bool ABISysV_loongarch::RegisterIsCalleeSaved(const RegisterInfo *reg_info) {
|
||||
|
||||
return llvm::StringSwitch<bool>(name)
|
||||
// integer ABI names
|
||||
.Cases("ra", "sp", "fp", true)
|
||||
.Cases("s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", true)
|
||||
.Cases({"ra", "sp", "fp"}, true)
|
||||
.Cases({"s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9"}, true)
|
||||
// integer hardware names
|
||||
.Cases("r1", "r3", "r22", true)
|
||||
.Cases("r23", "r24", "r25", "r26", "r27", "r28", "r29", "r30", "31", true)
|
||||
.Cases({"r1", "r3", "r22"}, true)
|
||||
.Cases({"r23", "r24", "r25", "r26", "r27", "r28", "r29", "r30", "31"},
|
||||
true)
|
||||
// floating point ABI names
|
||||
.Cases("fs0", "fs1", "fs2", "fs3", "fs4", "fs5", "fs6", "fs7", is_hw_fp)
|
||||
.Cases({"fs0", "fs1", "fs2", "fs3", "fs4", "fs5", "fs6", "fs7"}, is_hw_fp)
|
||||
// floating point hardware names
|
||||
.Cases("f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31", is_hw_fp)
|
||||
.Cases({"f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31"}, is_hw_fp)
|
||||
.Default(false);
|
||||
}
|
||||
|
||||
|
||||
@ -783,21 +783,22 @@ bool ABISysV_riscv::RegisterIsCalleeSaved(const RegisterInfo *reg_info) {
|
||||
bool is_callee_saved =
|
||||
llvm::StringSwitch<bool>(name)
|
||||
// integer ABI names
|
||||
.Cases("ra", "sp", "fp", true)
|
||||
.Cases("s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9",
|
||||
.Cases({"ra", "sp", "fp"}, true)
|
||||
.Cases({"s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9"},
|
||||
true)
|
||||
.Cases("s10", "s11", true)
|
||||
.Cases({"s10", "s11"}, true)
|
||||
// integer hardware names
|
||||
.Cases("x1", "x2", "x8", "x9", "x18", "x19", "x20", "x21", "x22",
|
||||
.Cases({"x1", "x2", "x8", "x9", "x18", "x19", "x20", "x21", "x22"},
|
||||
true)
|
||||
.Cases("x23", "x24", "x25", "x26", "x27", true)
|
||||
.Cases({"x23", "x24", "x25", "x26", "x27"}, true)
|
||||
// floating point ABI names
|
||||
.Cases("fs0", "fs1", "fs2", "fs3", "fs4", "fs5", "fs6", "fs7",
|
||||
.Cases({"fs0", "fs1", "fs2", "fs3", "fs4", "fs5", "fs6", "fs7"},
|
||||
is_hw_fp)
|
||||
.Cases("fs8", "fs9", "fs10", "fs11", is_hw_fp)
|
||||
.Cases({"fs8", "fs9", "fs10", "fs11"}, is_hw_fp)
|
||||
// floating point hardware names
|
||||
.Cases("f8", "f9", "f18", "f19", "f20", "f21", "f22", "f23", is_hw_fp)
|
||||
.Cases("f24", "f25", "f26", "f27", is_hw_fp)
|
||||
.Cases({"f8", "f9", "f18", "f19", "f20", "f21", "f22", "f23"},
|
||||
is_hw_fp)
|
||||
.Cases({"f24", "f25", "f26", "f27"}, is_hw_fp)
|
||||
.Default(false);
|
||||
|
||||
return is_callee_saved;
|
||||
|
||||
@ -929,8 +929,8 @@ bool ABISysV_x86_64::RegisterIsCalleeSaved(const RegisterInfo *reg_info) {
|
||||
std::string Name = std::string(reg_info->name);
|
||||
bool IsCalleeSaved =
|
||||
llvm::StringSwitch<bool>(Name)
|
||||
.Cases("r12", "r13", "r14", "r15", "rbp", "ebp", "rbx", "ebx", true)
|
||||
.Cases("rip", "eip", "rsp", "esp", "sp", "fp", "pc", true)
|
||||
.Cases({"r12", "r13", "r14", "r15", "rbp", "ebp", "rbx", "ebx"}, true)
|
||||
.Cases({"rip", "eip", "rsp", "esp", "sp", "fp", "pc"}, true)
|
||||
.Default(false);
|
||||
return IsCalleeSaved;
|
||||
}
|
||||
|
||||
@ -797,10 +797,11 @@ bool ABIWindows_x86_64::RegisterIsCalleeSaved(const RegisterInfo *reg_info) {
|
||||
std::string Name = std::string(reg_info->name);
|
||||
bool IsCalleeSaved =
|
||||
llvm::StringSwitch<bool>(Name)
|
||||
.Cases("rbx", "ebx", "rbp", "ebp", "rdi", "edi", "rsi", "esi", true)
|
||||
.Cases("rsp", "esp", "r12", "r13", "r14", "r15", "sp", "fp", true)
|
||||
.Cases("xmm6", "xmm7", "xmm8", "xmm9", "xmm10", "xmm11", "xmm12",
|
||||
"xmm13", "xmm14", "xmm15", true)
|
||||
.Cases({"rbx", "ebx", "rbp", "ebp", "rdi", "edi", "rsi", "esi"}, true)
|
||||
.Cases({"rsp", "esp", "r12", "r13", "r14", "r15", "sp", "fp"}, true)
|
||||
.Cases({"xmm6", "xmm7", "xmm8", "xmm9", "xmm10", "xmm11", "xmm12",
|
||||
"xmm13", "xmm14", "xmm15"},
|
||||
true)
|
||||
.Default(false);
|
||||
return IsCalleeSaved;
|
||||
}
|
||||
|
||||
@ -112,26 +112,26 @@ StringRef XCOFF::getNameForTracebackTableLanguageId(
|
||||
XCOFF::CFileCpuId XCOFF::getCpuID(StringRef CPUName) {
|
||||
StringRef CPU = PPC::normalizeCPUName(CPUName);
|
||||
return StringSwitch<XCOFF::CFileCpuId>(CPU)
|
||||
.Cases("generic", "COM", XCOFF::TCPU_COM)
|
||||
.Cases({"generic", "COM"}, XCOFF::TCPU_COM)
|
||||
.Case("601", XCOFF::TCPU_601)
|
||||
.Cases("602", "603", "603e", "603ev", XCOFF::TCPU_603)
|
||||
.Cases("604", "604e", XCOFF::TCPU_604)
|
||||
.Cases({"602", "603", "603e", "603ev"}, XCOFF::TCPU_603)
|
||||
.Cases({"604", "604e"}, XCOFF::TCPU_604)
|
||||
.Case("620", XCOFF::TCPU_620)
|
||||
.Case("970", XCOFF::TCPU_970)
|
||||
.Cases("a2", "g3", "g4", "g5", "e500", XCOFF::TCPU_COM)
|
||||
.Cases("pwr3", "pwr4", XCOFF::TCPU_COM)
|
||||
.Cases("pwr5", "PWR5", XCOFF::TCPU_PWR5)
|
||||
.Cases("pwr5x", "PWR5X", XCOFF::TCPU_PWR5X)
|
||||
.Cases("pwr6", "PWR6", XCOFF::TCPU_PWR6)
|
||||
.Cases("pwr6x", "PWR6E", XCOFF::TCPU_PWR6E)
|
||||
.Cases("pwr7", "PWR7", XCOFF::TCPU_PWR7)
|
||||
.Cases("pwr8", "PWR8", XCOFF::TCPU_PWR8)
|
||||
.Cases("pwr9", "PWR9", XCOFF::TCPU_PWR9)
|
||||
.Cases("pwr10", "PWR10", XCOFF::TCPU_PWR10)
|
||||
.Cases("ppc", "PPC", "ppc32", "ppc64", XCOFF::TCPU_COM)
|
||||
.Cases({"a2", "g3", "g4", "g5", "e500"}, XCOFF::TCPU_COM)
|
||||
.Cases({"pwr3", "pwr4"}, XCOFF::TCPU_COM)
|
||||
.Cases({"pwr5", "PWR5"}, XCOFF::TCPU_PWR5)
|
||||
.Cases({"pwr5x", "PWR5X"}, XCOFF::TCPU_PWR5X)
|
||||
.Cases({"pwr6", "PWR6"}, XCOFF::TCPU_PWR6)
|
||||
.Cases({"pwr6x", "PWR6E"}, XCOFF::TCPU_PWR6E)
|
||||
.Cases({"pwr7", "PWR7"}, XCOFF::TCPU_PWR7)
|
||||
.Cases({"pwr8", "PWR8"}, XCOFF::TCPU_PWR8)
|
||||
.Cases({"pwr9", "PWR9"}, XCOFF::TCPU_PWR9)
|
||||
.Cases({"pwr10", "PWR10"}, XCOFF::TCPU_PWR10)
|
||||
.Cases({"ppc", "PPC", "ppc32", "ppc64"}, XCOFF::TCPU_COM)
|
||||
.Case("ppc64le", XCOFF::TCPU_PWR8)
|
||||
.Case("future", XCOFF::TCPU_PWR10)
|
||||
.Cases("any", "ANY", XCOFF::TCPU_ANY)
|
||||
.Cases({"any", "ANY"}, XCOFF::TCPU_ANY)
|
||||
.Default(XCOFF::TCPU_INVALID);
|
||||
}
|
||||
|
||||
|
||||
@ -3356,10 +3356,10 @@ bool RISCVAsmParser::parseDirectiveAttribute() {
|
||||
|
||||
bool isValidInsnFormat(StringRef Format, const MCSubtargetInfo &STI) {
|
||||
return StringSwitch<bool>(Format)
|
||||
.Cases("r", "r4", "i", "b", "sb", "u", "j", "uj", "s", true)
|
||||
.Cases("cr", "ci", "ciw", "css", "cl", "cs", "ca", "cb", "cj",
|
||||
.Cases({"r", "r4", "i", "b", "sb", "u", "j", "uj", "s"}, true)
|
||||
.Cases({"cr", "ci", "ciw", "css", "cl", "cs", "ca", "cb", "cj"},
|
||||
STI.hasFeature(RISCV::FeatureStdExtZca))
|
||||
.Cases("qc.eai", "qc.ei", "qc.eb", "qc.ej", "qc.es",
|
||||
.Cases({"qc.eai", "qc.ei", "qc.eb", "qc.ej", "qc.es"},
|
||||
!STI.hasFeature(RISCV::Feature64Bit))
|
||||
.Default(false);
|
||||
}
|
||||
|
||||
@ -43,7 +43,7 @@ const llvm::StringRef RISCVLMULInstrument::DESC_NAME = "RISCV-LMUL";
|
||||
bool RISCVLMULInstrument::isDataValid(llvm::StringRef Data) {
|
||||
// Return true if not one of the valid LMUL strings
|
||||
return StringSwitch<bool>(Data)
|
||||
.Cases("M1", "M2", "M4", "M8", "MF2", "MF4", "MF8", true)
|
||||
.Cases({"M1", "M2", "M4", "M8", "MF2", "MF4", "MF8"}, true)
|
||||
.Default(false);
|
||||
}
|
||||
|
||||
|
||||
@ -23,7 +23,7 @@ std::optional<wasm::ValType> WebAssembly::parseType(StringRef Type) {
|
||||
.Case("i64", wasm::ValType::I64)
|
||||
.Case("f32", wasm::ValType::F32)
|
||||
.Case("f64", wasm::ValType::F64)
|
||||
.Cases("v128", "i8x16", "i16x8", "i32x4", "i64x2", "f32x4", "f64x2",
|
||||
.Cases({"v128", "i8x16", "i16x8", "i32x4", "i64x2", "f32x4", "f64x2"},
|
||||
wasm::ValType::V128)
|
||||
.Case("funcref", wasm::ValType::FUNCREF)
|
||||
.Case("externref", wasm::ValType::EXTERNREF)
|
||||
|
||||
@ -3514,15 +3514,16 @@ bool X86AsmParser::parseInstruction(ParseInstructionInfo &Info, StringRef Name,
|
||||
// xacquire <insn> ; xacquire must be accompanied by 'lock'
|
||||
bool IsPrefix =
|
||||
StringSwitch<bool>(Name)
|
||||
.Cases("cs", "ds", "es", "fs", "gs", "ss", true)
|
||||
.Cases("rex64", "data32", "data16", "addr32", "addr16", true)
|
||||
.Cases("xacquire", "xrelease", true)
|
||||
.Cases("acquire", "release", isParsingIntelSyntax())
|
||||
.Cases({"cs", "ds", "es", "fs", "gs", "ss"}, true)
|
||||
.Cases({"rex64", "data32", "data16", "addr32", "addr16"}, true)
|
||||
.Cases({"xacquire", "xrelease"}, true)
|
||||
.Cases({"acquire", "release"}, isParsingIntelSyntax())
|
||||
.Default(false);
|
||||
|
||||
auto isLockRepeatNtPrefix = [](StringRef N) {
|
||||
return StringSwitch<bool>(N)
|
||||
.Cases("lock", "rep", "repe", "repz", "repne", "repnz", "notrack", true)
|
||||
.Cases({"lock", "rep", "repe", "repz", "repne", "repnz", "notrack"},
|
||||
true)
|
||||
.Default(false);
|
||||
};
|
||||
|
||||
|
||||
@ -22,13 +22,13 @@ StringRef ARM::getArchSynonym(StringRef Arch) {
|
||||
.Case("v5e", "v5te")
|
||||
.Case("v6j", "v6")
|
||||
.Case("v6hl", "v6k")
|
||||
.Cases("v6m", "v6sm", "v6s-m", "v6-m")
|
||||
.Cases("v6z", "v6zk", "v6kz")
|
||||
.Cases("v7", "v7a", "v7hl", "v7l", "v7-a")
|
||||
.Cases({"v6m", "v6sm", "v6s-m"}, "v6-m")
|
||||
.Cases({"v6z", "v6zk"}, "v6kz")
|
||||
.Cases({"v7", "v7a", "v7hl", "v7l"}, "v7-a")
|
||||
.Case("v7r", "v7-r")
|
||||
.Case("v7m", "v7-m")
|
||||
.Case("v7em", "v7e-m")
|
||||
.Cases("v8", "v8a", "v8l", "aarch64", "arm64", "v8-a")
|
||||
.Cases({"v8", "v8a", "v8l", "aarch64", "arm64"}, "v8-a")
|
||||
.Case("v8.1a", "v8.1-a")
|
||||
.Case("v8.2a", "v8.2-a")
|
||||
.Case("v8.3a", "v8.3-a")
|
||||
@ -39,7 +39,7 @@ StringRef ARM::getArchSynonym(StringRef Arch) {
|
||||
.Case("v8.8a", "v8.8-a")
|
||||
.Case("v8.9a", "v8.9-a")
|
||||
.Case("v8r", "v8-r")
|
||||
.Cases("v9", "v9a", "v9-a")
|
||||
.Cases({"v9", "v9a"}, "v9-a")
|
||||
.Case("v9.1a", "v9.1-a")
|
||||
.Case("v9.2a", "v9.2-a")
|
||||
.Case("v9.3a", "v9.3-a")
|
||||
|
||||
@ -579,87 +579,89 @@ static Triple::ArchType parseARMArch(StringRef ArchName) {
|
||||
}
|
||||
|
||||
static Triple::ArchType parseArch(StringRef ArchName) {
|
||||
auto AT = StringSwitch<Triple::ArchType>(ArchName)
|
||||
.Cases("i386", "i486", "i586", "i686", Triple::x86)
|
||||
// FIXME: Do we need to support these?
|
||||
.Cases("i786", "i886", "i986", Triple::x86)
|
||||
.Cases("amd64", "x86_64", "x86_64h", Triple::x86_64)
|
||||
.Cases("powerpc", "powerpcspe", "ppc", "ppc32", Triple::ppc)
|
||||
.Cases("powerpcle", "ppcle", "ppc32le", Triple::ppcle)
|
||||
.Cases("powerpc64", "ppu", "ppc64", Triple::ppc64)
|
||||
.Cases("powerpc64le", "ppc64le", Triple::ppc64le)
|
||||
.Case("xscale", Triple::arm)
|
||||
.Case("xscaleeb", Triple::armeb)
|
||||
.Case("aarch64", Triple::aarch64)
|
||||
.Case("aarch64_be", Triple::aarch64_be)
|
||||
.Case("aarch64_32", Triple::aarch64_32)
|
||||
.Case("arc", Triple::arc)
|
||||
.Case("arm64", Triple::aarch64)
|
||||
.Case("arm64_32", Triple::aarch64_32)
|
||||
.Case("arm64e", Triple::aarch64)
|
||||
.Case("arm64ec", Triple::aarch64)
|
||||
.Case("arm", Triple::arm)
|
||||
.Case("armeb", Triple::armeb)
|
||||
.Case("thumb", Triple::thumb)
|
||||
.Case("thumbeb", Triple::thumbeb)
|
||||
.Case("avr", Triple::avr)
|
||||
.Case("m68k", Triple::m68k)
|
||||
.Case("msp430", Triple::msp430)
|
||||
.Cases("mips", "mipseb", "mipsallegrex", "mipsisa32r6",
|
||||
"mipsr6", Triple::mips)
|
||||
.Cases("mipsel", "mipsallegrexel", "mipsisa32r6el", "mipsr6el",
|
||||
Triple::mipsel)
|
||||
.Cases("mips64", "mips64eb", "mipsn32", "mipsisa64r6",
|
||||
"mips64r6", "mipsn32r6", Triple::mips64)
|
||||
.Cases("mips64el", "mipsn32el", "mipsisa64r6el", "mips64r6el",
|
||||
"mipsn32r6el", Triple::mips64el)
|
||||
.Case("r600", Triple::r600)
|
||||
.Case("amdgcn", Triple::amdgcn)
|
||||
.Case("riscv32", Triple::riscv32)
|
||||
.Case("riscv64", Triple::riscv64)
|
||||
.Case("riscv32be", Triple::riscv32be)
|
||||
.Case("riscv64be", Triple::riscv64be)
|
||||
.Case("hexagon", Triple::hexagon)
|
||||
.Cases("s390x", "systemz", Triple::systemz)
|
||||
.Case("sparc", Triple::sparc)
|
||||
.Case("sparcel", Triple::sparcel)
|
||||
.Cases("sparcv9", "sparc64", Triple::sparcv9)
|
||||
.Case("tce", Triple::tce)
|
||||
.Case("tcele", Triple::tcele)
|
||||
.Case("xcore", Triple::xcore)
|
||||
.Case("nvptx", Triple::nvptx)
|
||||
.Case("nvptx64", Triple::nvptx64)
|
||||
.Case("amdil", Triple::amdil)
|
||||
.Case("amdil64", Triple::amdil64)
|
||||
.Case("hsail", Triple::hsail)
|
||||
.Case("hsail64", Triple::hsail64)
|
||||
.Case("spir", Triple::spir)
|
||||
.Case("spir64", Triple::spir64)
|
||||
.Cases("spirv", "spirv1.5", "spirv1.6", Triple::spirv)
|
||||
.Cases("spirv32", "spirv32v1.0", "spirv32v1.1", "spirv32v1.2",
|
||||
"spirv32v1.3", "spirv32v1.4", "spirv32v1.5",
|
||||
"spirv32v1.6", Triple::spirv32)
|
||||
.Cases("spirv64", "spirv64v1.0", "spirv64v1.1", "spirv64v1.2",
|
||||
"spirv64v1.3", "spirv64v1.4", "spirv64v1.5",
|
||||
"spirv64v1.6", Triple::spirv64)
|
||||
.StartsWith("kalimba", Triple::kalimba)
|
||||
.Case("lanai", Triple::lanai)
|
||||
.Case("renderscript32", Triple::renderscript32)
|
||||
.Case("renderscript64", Triple::renderscript64)
|
||||
.Case("shave", Triple::shave)
|
||||
.Case("ve", Triple::ve)
|
||||
.Case("wasm32", Triple::wasm32)
|
||||
.Case("wasm64", Triple::wasm64)
|
||||
.Case("csky", Triple::csky)
|
||||
.Case("loongarch32", Triple::loongarch32)
|
||||
.Case("loongarch64", Triple::loongarch64)
|
||||
.Cases("dxil", "dxilv1.0", "dxilv1.1", "dxilv1.2", "dxilv1.3",
|
||||
"dxilv1.4", "dxilv1.5", "dxilv1.6", "dxilv1.7",
|
||||
"dxilv1.8", Triple::dxil)
|
||||
// Note: Cases has max limit of 10.
|
||||
.Case("dxilv1.9", Triple::dxil)
|
||||
.Case("xtensa", Triple::xtensa)
|
||||
.Default(Triple::UnknownArch);
|
||||
auto AT =
|
||||
StringSwitch<Triple::ArchType>(ArchName)
|
||||
.Cases({"i386", "i486", "i586", "i686"}, Triple::x86)
|
||||
// FIXME: Do we need to support these?
|
||||
.Cases({"i786", "i886", "i986"}, Triple::x86)
|
||||
.Cases({"amd64", "x86_64", "x86_64h"}, Triple::x86_64)
|
||||
.Cases({"powerpc", "powerpcspe", "ppc", "ppc32"}, Triple::ppc)
|
||||
.Cases({"powerpcle", "ppcle", "ppc32le"}, Triple::ppcle)
|
||||
.Cases({"powerpc64", "ppu", "ppc64"}, Triple::ppc64)
|
||||
.Cases({"powerpc64le", "ppc64le"}, Triple::ppc64le)
|
||||
.Case("xscale", Triple::arm)
|
||||
.Case("xscaleeb", Triple::armeb)
|
||||
.Case("aarch64", Triple::aarch64)
|
||||
.Case("aarch64_be", Triple::aarch64_be)
|
||||
.Case("aarch64_32", Triple::aarch64_32)
|
||||
.Case("arc", Triple::arc)
|
||||
.Case("arm64", Triple::aarch64)
|
||||
.Case("arm64_32", Triple::aarch64_32)
|
||||
.Case("arm64e", Triple::aarch64)
|
||||
.Case("arm64ec", Triple::aarch64)
|
||||
.Case("arm", Triple::arm)
|
||||
.Case("armeb", Triple::armeb)
|
||||
.Case("thumb", Triple::thumb)
|
||||
.Case("thumbeb", Triple::thumbeb)
|
||||
.Case("avr", Triple::avr)
|
||||
.Case("m68k", Triple::m68k)
|
||||
.Case("msp430", Triple::msp430)
|
||||
.Cases({"mips", "mipseb", "mipsallegrex", "mipsisa32r6", "mipsr6"},
|
||||
Triple::mips)
|
||||
.Cases({"mipsel", "mipsallegrexel", "mipsisa32r6el", "mipsr6el"},
|
||||
Triple::mipsel)
|
||||
.Cases({"mips64", "mips64eb", "mipsn32", "mipsisa64r6", "mips64r6",
|
||||
"mipsn32r6"},
|
||||
Triple::mips64)
|
||||
.Cases({"mips64el", "mipsn32el", "mipsisa64r6el", "mips64r6el",
|
||||
"mipsn32r6el"},
|
||||
Triple::mips64el)
|
||||
.Case("r600", Triple::r600)
|
||||
.Case("amdgcn", Triple::amdgcn)
|
||||
.Case("riscv32", Triple::riscv32)
|
||||
.Case("riscv64", Triple::riscv64)
|
||||
.Case("riscv32be", Triple::riscv32be)
|
||||
.Case("riscv64be", Triple::riscv64be)
|
||||
.Case("hexagon", Triple::hexagon)
|
||||
.Cases({"s390x", "systemz"}, Triple::systemz)
|
||||
.Case("sparc", Triple::sparc)
|
||||
.Case("sparcel", Triple::sparcel)
|
||||
.Cases({"sparcv9", "sparc64"}, Triple::sparcv9)
|
||||
.Case("tce", Triple::tce)
|
||||
.Case("tcele", Triple::tcele)
|
||||
.Case("xcore", Triple::xcore)
|
||||
.Case("nvptx", Triple::nvptx)
|
||||
.Case("nvptx64", Triple::nvptx64)
|
||||
.Case("amdil", Triple::amdil)
|
||||
.Case("amdil64", Triple::amdil64)
|
||||
.Case("hsail", Triple::hsail)
|
||||
.Case("hsail64", Triple::hsail64)
|
||||
.Case("spir", Triple::spir)
|
||||
.Case("spir64", Triple::spir64)
|
||||
.Cases({"spirv", "spirv1.5", "spirv1.6"}, Triple::spirv)
|
||||
.Cases({"spirv32", "spirv32v1.0", "spirv32v1.1", "spirv32v1.2",
|
||||
"spirv32v1.3", "spirv32v1.4", "spirv32v1.5", "spirv32v1.6"},
|
||||
Triple::spirv32)
|
||||
.Cases({"spirv64", "spirv64v1.0", "spirv64v1.1", "spirv64v1.2",
|
||||
"spirv64v1.3", "spirv64v1.4", "spirv64v1.5", "spirv64v1.6"},
|
||||
Triple::spirv64)
|
||||
.StartsWith("kalimba", Triple::kalimba)
|
||||
.Case("lanai", Triple::lanai)
|
||||
.Case("renderscript32", Triple::renderscript32)
|
||||
.Case("renderscript64", Triple::renderscript64)
|
||||
.Case("shave", Triple::shave)
|
||||
.Case("ve", Triple::ve)
|
||||
.Case("wasm32", Triple::wasm32)
|
||||
.Case("wasm64", Triple::wasm64)
|
||||
.Case("csky", Triple::csky)
|
||||
.Case("loongarch32", Triple::loongarch32)
|
||||
.Case("loongarch64", Triple::loongarch64)
|
||||
.Cases({"dxil", "dxilv1.0", "dxilv1.1", "dxilv1.2", "dxilv1.3",
|
||||
"dxilv1.4", "dxilv1.5", "dxilv1.6", "dxilv1.7", "dxilv1.8",
|
||||
"dxilv1.9"},
|
||||
Triple::dxil)
|
||||
.Case("xtensa", Triple::xtensa)
|
||||
.Default(Triple::UnknownArch);
|
||||
|
||||
// Some architectures require special parsing logic just to compute the
|
||||
// ArchType result.
|
||||
@ -1071,7 +1073,7 @@ Triple::Triple(std::string &&Str) : Data(std::move(Str)) {
|
||||
.StartsWith("mips64", Triple::GNUABI64)
|
||||
.StartsWith("mipsisa64", Triple::GNUABI64)
|
||||
.StartsWith("mipsisa32", Triple::GNU)
|
||||
.Cases("mips", "mipsel", "mipsr6", "mipsr6el", Triple::GNU)
|
||||
.Cases({"mips", "mipsel", "mipsr6", "mipsr6el"}, Triple::GNU)
|
||||
.Default(UnknownEnvironment);
|
||||
}
|
||||
}
|
||||
|
||||
@ -555,7 +555,7 @@ void FastISelMap::collectPatterns(const CodeGenDAGPatterns &CGP) {
|
||||
raw_string_ostream SuffixOS(ManglingSuffix);
|
||||
Operands.PrintManglingSuffix(SuffixOS, ImmediatePredicates, true);
|
||||
if (!StringSwitch<bool>(ManglingSuffix)
|
||||
.Cases("", "r", "rr", "ri", "i", "f", true)
|
||||
.Cases({"", "r", "rr", "ri", "i", "f"}, true)
|
||||
.Default(false))
|
||||
continue;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user