|
17 | 17 | #include "clang/Frontend/CompilerInstance.h" |
18 | 18 | #include "clang/Interpreter/PartialTranslationUnit.h" |
19 | 19 |
|
| 20 | +#include "llvm/CodeGen/MachineModuleInfo.h" |
20 | 21 | #include "llvm/IR/LegacyPassManager.h" |
21 | 22 | #include "llvm/IR/Module.h" |
22 | 23 | #include "llvm/MC/TargetRegistry.h" |
@@ -82,16 +83,18 @@ llvm::Expected<llvm::StringRef> IncrementalCUDADeviceParser::GeneratePTX() { |
82 | 83 | return llvm::make_error<llvm::StringError>(std::move(Error), |
83 | 84 | std::error_code()); |
84 | 85 | llvm::TargetOptions TO = llvm::TargetOptions(); |
85 | | - llvm::TargetMachine *TargetMachine = Target->createTargetMachine( |
86 | | - PTU.TheModule->getTargetTriple(), TargetOpts.CPU, "", TO, |
87 | | - llvm::Reloc::Model::PIC_); |
| 86 | + llvm::LLVMTargetMachine *TargetMachine = |
| 87 | + static_cast<llvm::LLVMTargetMachine *>(Target->createTargetMachine( |
| 88 | + PTU.TheModule->getTargetTriple(), TargetOpts.CPU, "", TO, |
| 89 | + llvm::Reloc::Model::PIC_)); |
88 | 90 | PTU.TheModule->setDataLayout(TargetMachine->createDataLayout()); |
89 | 91 |
|
90 | 92 | PTXCode.clear(); |
91 | 93 | llvm::raw_svector_ostream dest(PTXCode); |
92 | 94 |
|
93 | 95 | llvm::legacy::PassManager PM; |
94 | | - if (TargetMachine->addPassesToEmitFile(PM, dest, nullptr, |
| 96 | + llvm::MachineModuleInfo MMI(TargetMachine); |
| 97 | + if (TargetMachine->addPassesToEmitFile(PM, MMI, dest, nullptr, |
95 | 98 | llvm::CodeGenFileType::AssemblyFile)) { |
96 | 99 | return llvm::make_error<llvm::StringError>( |
97 | 100 | "NVPTX backend cannot produce PTX code.", |
|
0 commit comments