diff options
Diffstat (limited to 'clang/lib/Interpreter/DeviceOffload.cpp')
| -rw-r--r-- | clang/lib/Interpreter/DeviceOffload.cpp | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/clang/lib/Interpreter/DeviceOffload.cpp b/clang/lib/Interpreter/DeviceOffload.cpp index 07c9e3005e5f..1999d63d1aa0 100644 --- a/clang/lib/Interpreter/DeviceOffload.cpp +++ b/clang/lib/Interpreter/DeviceOffload.cpp @@ -15,6 +15,7 @@ #include "clang/Basic/TargetOptions.h" #include "clang/CodeGen/ModuleBuilder.h" #include "clang/Frontend/CompilerInstance.h" +#include "clang/Interpreter/PartialTranslationUnit.h" #include "llvm/IR/LegacyPassManager.h" #include "llvm/IR/Module.h" @@ -24,15 +25,17 @@ namespace clang { IncrementalCUDADeviceParser::IncrementalCUDADeviceParser( - Interpreter &Interp, std::unique_ptr<CompilerInstance> Instance, - IncrementalParser &HostParser, llvm::LLVMContext &LLVMCtx, + std::unique_ptr<CompilerInstance> DeviceInstance, + CompilerInstance &HostInstance, llvm::IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem> FS, - llvm::Error &Err) - : IncrementalParser(Interp, std::move(Instance), LLVMCtx, Err), - HostParser(HostParser), VFS(FS) { + llvm::Error &Err, const std::list<PartialTranslationUnit> &PTUs) + : IncrementalParser(*DeviceInstance, Err), PTUs(PTUs), VFS(FS), + CodeGenOpts(HostInstance.getCodeGenOpts()), + TargetOpts(HostInstance.getTargetOpts()) { if (Err) return; - StringRef Arch = CI->getTargetOpts().CPU; + DeviceCI = std::move(DeviceInstance); + StringRef Arch = TargetOpts.CPU; if (!Arch.starts_with("sm_") || Arch.substr(3).getAsInteger(10, SMVersion)) { Err = llvm::joinErrors(std::move(Err), llvm::make_error<llvm::StringError>( "Invalid CUDA architecture", @@ -41,7 +44,7 @@ IncrementalCUDADeviceParser::IncrementalCUDADeviceParser( } } -llvm::Expected<PartialTranslationUnit &> +llvm::Expected<TranslationUnitDecl *> IncrementalCUDADeviceParser::Parse(llvm::StringRef Input) { auto PTU = IncrementalParser::Parse(Input); if (!PTU) @@ -62,7 +65,7 @@ IncrementalCUDADeviceParser::Parse(llvm::StringRef Input) { llvm::StringRef(FatbinContent.data(), FatbinContent.size()), "", false)); - HostParser.getCI()->getCodeGenOpts().CudaGpuBinaryFileName = FatbinFileName; + CodeGenOpts.CudaGpuBinaryFileName = FatbinFileName; FatbinContent.clear(); @@ -80,7 +83,7 @@ llvm::Expected<llvm::StringRef> IncrementalCUDADeviceParser::GeneratePTX() { std::error_code()); llvm::TargetOptions TO = llvm::TargetOptions(); llvm::TargetMachine *TargetMachine = Target->createTargetMachine( - PTU.TheModule->getTargetTriple(), getCI()->getTargetOpts().CPU, "", TO, + PTU.TheModule->getTargetTriple(), TargetOpts.CPU, "", TO, llvm::Reloc::Model::PIC_); PTU.TheModule->setDataLayout(TargetMachine->createDataLayout()); |
