Index: lib/Frontend/CompilerInvocation.cpp =================================================================== --- lib/Frontend/CompilerInvocation.cpp +++ lib/Frontend/CompilerInvocation.cpp @@ -1840,8 +1840,15 @@ Opts.Triple = llvm::Triple::normalize(Args.getLastArgValue(OPT_triple)); // Use the default target triple if unspecified. - if (Opts.Triple.empty()) - Opts.Triple = llvm::sys::getDefaultTargetTriple(); + if (Opts.Triple.empty()) { + if (Args.hasArg(OPT_fcuda_is_device)) { + llvm::Triple HostTriple(llvm::sys::getDefaultTargetTriple()); + Opts.Triple = HostTriple.isArch64Bit() + ? llvm::Triple::normalize("nvptx64-unknown-cuda") + : llvm::Triple::normalize("nvptx-unknown-cuda"); + } else + Opts.Triple = llvm::sys::getDefaultTargetTriple(); + } } bool CompilerInvocation::CreateFromArgs(CompilerInvocation &Res,