aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Basic/Cuda.cpp
diff options
context:
space:
mode:
authorArtem Belevich <tra@google.com>2020-01-22 12:44:22 -0800
committerArtem Belevich <tra@google.com>2020-01-28 10:11:42 -0800
commit12fefeef203ab4ef52d19bcdbd4180608a4deae1 (patch)
treeae7a32684e8ec5187b6fdd79ca5be8d9609c269e /clang/lib/Basic/Cuda.cpp
parent66e47a57205b1c2a6be3c89413ae9d47b747ed38 (diff)
downloadllvm-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.cpp8
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) {