void NVPTX::getNVPTXTargetFeatures(const Driver &D, const llvm::Triple &Triple,
const llvm::opt::ArgList &Args,
- std::vector<StringRef> &Features,
- Optional<clang::CudaVersion> Version) {
+ std::vector<StringRef> &Features) {
if (Args.hasArg(options::OPT_cuda_feature_EQ)) {
StringRef PtxFeature =
Args.getLastArgValue(options::OPT_cuda_feature_EQ, "+ptx42");
Features.push_back(Args.MakeArgString(PtxFeature));
return;
- } else if (!Version) {
- CudaInstallationDetector CudaInstallation(D, Triple, Args);
- Version = CudaInstallation.version();
}
+ CudaInstallationDetector CudaInstallation(D, Triple, Args);
// New CUDA versions often introduce new instructions that are only supported
// by new PTX version, so we need to raise PTX level to enable them in NVPTX
// back-end.
const char *PtxFeature = nullptr;
- switch (*Version) {
+ switch (CudaInstallation.version()) {
#define CASE_CUDA_VERSION(CUDA_VER, PTX_VER) \
case CudaVersion::CUDA_##CUDA_VER: \
PtxFeature = "+ptx" #PTX_VER; \
clang::CudaVersion CudaInstallationVersion = CudaInstallation.version();
- std::vector<StringRef> Features;
- NVPTX::getNVPTXTargetFeatures(getDriver(), getTriple(), DriverArgs, Features,
- CudaInstallationVersion);
- for (StringRef PtxFeature : Features)
- CC1Args.append({"-target-feature", DriverArgs.MakeArgString(PtxFeature)});
if (DriverArgs.hasFlag(options::OPT_fcuda_short_ptr,
options::OPT_fno_cuda_short_ptr, false))
CC1Args.append({"-mllvm", "--nvptx-short-ptr"});