diff options
author | Artem Belevich <tra@google.com> | 2020-01-22 12:44:22 -0800 |
---|---|---|
committer | Artem Belevich <tra@google.com> | 2020-01-28 10:11:42 -0800 |
commit | 12fefeef203ab4ef52d19bcdbd4180608a4deae1 (patch) | |
tree | ae7a32684e8ec5187b6fdd79ca5be8d9609c269e /clang/lib/Basic/Cuda.cpp | |
parent | 66e47a57205b1c2a6be3c89413ae9d47b747ed38 (diff) | |
download | llvm-12fefeef203ab4ef52d19bcdbd4180608a4deae1.zip llvm-12fefeef203ab4ef52d19bcdbd4180608a4deae1.tar.gz llvm-12fefeef203ab4ef52d19bcdbd4180608a4deae1.tar.bz2 |
[CUDA] Assume the latest known CUDA version if we've found an unknown one.
This makes clang somewhat forward-compatible with new CUDA releases
without having to patch it for every minor release without adding
any new function.
If an unknown version is found, clang issues a warning (can be disabled
with -Wno-cuda-unknown-version) and assumes that it has detected
the latest known version. CUDA releases are usually supersets
of older ones feature-wise, so it should be sufficient to keep
released clang versions working with minor CUDA updates without
having to upgrade clang, too.
Differential Revision: https://reviews.llvm.org/D73231
Diffstat (limited to 'clang/lib/Basic/Cuda.cpp')
-rw-r--r-- | clang/lib/Basic/Cuda.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/clang/lib/Basic/Cuda.cpp b/clang/lib/Basic/Cuda.cpp index f2b6c8c..e06d120 100644 --- a/clang/lib/Basic/Cuda.cpp +++ b/clang/lib/Basic/Cuda.cpp @@ -2,6 +2,7 @@ #include "llvm/ADT/StringRef.h" #include "llvm/ADT/StringSwitch.h" +#include "llvm/ADT/Twine.h" #include "llvm/Support/ErrorHandling.h" #include "llvm/Support/VersionTuple.h" @@ -31,8 +32,8 @@ const char *CudaVersionToString(CudaVersion V) { llvm_unreachable("invalid enum"); } -CudaVersion CudaStringToVersion(llvm::StringRef S) { - return llvm::StringSwitch<CudaVersion>(S) +CudaVersion CudaStringToVersion(const llvm::Twine &S) { + return llvm::StringSwitch<CudaVersion>(S.str()) .Case("7.0", CudaVersion::CUDA_70) .Case("7.5", CudaVersion::CUDA_75) .Case("8.0", CudaVersion::CUDA_80) @@ -40,7 +41,8 @@ CudaVersion CudaStringToVersion(llvm::StringRef S) { .Case("9.1", CudaVersion::CUDA_91) .Case("9.2", CudaVersion::CUDA_92) .Case("10.0", CudaVersion::CUDA_100) - .Case("10.1", CudaVersion::CUDA_101); + .Case("10.1", CudaVersion::CUDA_101) + .Default(CudaVersion::UNKNOWN); } const char *CudaArchToString(CudaArch A) { |