Skip to content

Commit 5227576

Browse files
committed
Fixed uses of addPassesToEmitFile and addPassesToEmitMC that weren't migrated to the new TargetMachine API.
1 parent bc983ff commit 5227576

File tree

5 files changed

+35
-12
lines changed

5 files changed

+35
-12
lines changed

clang/lib/Interpreter/Wasm.cpp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,10 @@
1313
#include "Wasm.h"
1414
#include "IncrementalExecutor.h"
1515

16+
#include <llvm/CodeGen/MachineModuleInfo.h>
1617
#include <llvm/IR/LegacyPassManager.h>
1718
#include <llvm/IR/Module.h>
19+
#include <llvm/MC/MCContext.h>
1820
#include <llvm/MC/TargetRegistry.h>
1921
#include <llvm/Target/TargetMachine.h>
2022

@@ -57,8 +59,13 @@ llvm::Error WasmIncrementalExecutor::addModule(PartialTranslationUnit &PTU) {
5759
llvm::raw_fd_ostream OutputFile(llvm::StringRef(OutputFileName), Error);
5860

5961
llvm::legacy::PassManager PM;
60-
if (TargetMachine->addPassesToEmitFile(PM, OutputFile, nullptr,
61-
llvm::CodeGenFileType::ObjectFile)) {
62+
llvm::MCContext MCCtx(
63+
TargetMachine->getTargetTriple(), TargetMachine->getMCAsmInfo(),
64+
TargetMachine->getMCRegisterInfo(), TargetMachine->getMCSubtargetInfo(),
65+
nullptr, &TargetMachine->Options.MCOptions, false);
66+
auto MMI = TargetMachine->createMachineModuleInfo(MCCtx);
67+
if (TargetMachine->addPassesToEmitFile(
68+
PM, OutputFile, nullptr, llvm::CodeGenFileType::ObjectFile, *MMI)) {
6269
return llvm::make_error<llvm::StringError>(
6370
"Wasm backend cannot produce object.", llvm::inconvertibleErrorCode());
6471
}

flang/lib/Frontend/FrontendActions.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,15 @@
5151
#include "llvm/Analysis/TargetLibraryInfo.h"
5252
#include "llvm/Analysis/TargetTransformInfo.h"
5353
#include "llvm/Bitcode/BitcodeWriterPass.h"
54+
#include "llvm/CodeGen/MachineModuleInfo.h"
5455
#include "llvm/CodeGen/MachineOptimizationRemarkEmitter.h"
5556
#include "llvm/IR/LLVMRemarkStreamer.h"
5657
#include "llvm/IR/LegacyPassManager.h"
5758
#include "llvm/IR/Verifier.h"
5859
#include "llvm/IRPrinter/IRPrintingPasses.h"
5960
#include "llvm/IRReader/IRReader.h"
6061
#include "llvm/Linker/Linker.h"
62+
#include "llvm/MC/MCContext.h"
6163
#include "llvm/Object/OffloadBinary.h"
6264
#include "llvm/Passes/PassBuilder.h"
6365
#include "llvm/Passes/PassPlugin.h"
@@ -944,7 +946,11 @@ static void generateMachineCodeOrAssemblyImpl(clang::DiagnosticsEngine &diags,
944946
llvm::CodeGenFileType cgft = (act == BackendActionTy::Backend_EmitAssembly)
945947
? llvm::CodeGenFileType::AssemblyFile
946948
: llvm::CodeGenFileType::ObjectFile;
947-
if (tm.addPassesToEmitFile(codeGenPasses, os, nullptr, cgft)) {
949+
llvm::MCContext mcCtx(tm.getTargetTriple(), tm.getMCAsmInfo(),
950+
tm.getMCRegisterInfo(), tm.getMCSubtargetInfo(),
951+
nullptr, &tm.Options.MCOptions, false);
952+
auto mmi = tm.createMachineModuleInfo(mcCtx);
953+
if (tm.addPassesToEmitFile(codeGenPasses, os, nullptr, cgft, *mmi)) {
948954
unsigned diagID =
949955
diags.getCustomDiagID(clang::DiagnosticsEngine::Error,
950956
"emission of this file type is not supported");

llvm/unittests/CodeGen/GlobalISel/GISelMITest.h

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,9 @@ std::ostream &
5454
operator<<(std::ostream &OS, const MachineFunction &MF);
5555
}
5656

57-
static std::unique_ptr<Module> parseMIR(LLVMContext &Context,
58-
std::unique_ptr<MIRParser> &MIR,
59-
const TargetMachine &TM,
60-
StringRef MIRCode,
61-
MachineModuleInfo &MMI) {
57+
static std::unique_ptr<Module>
58+
parseMIR(LLVMContext &Context, std::unique_ptr<MIRParser> &MIR,
59+
const TargetMachine &TM, StringRef MIRCode, MachineModuleInfo &MMI) {
6260
SMDiagnostic Diagnostic;
6361
std::unique_ptr<MemoryBuffer> MBuffer = MemoryBuffer::getMemBuffer(MIRCode);
6462
MIR = createMIRParser(std::move(MBuffer), Context);

mlir/lib/Target/LLVM/ModuleToObject.cpp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,11 @@
2020
#include "mlir/Target/LLVMIR/ModuleTranslation.h"
2121

2222
#include "llvm/Bitcode/BitcodeWriter.h"
23+
#include "llvm/CodeGen/MachineModuleInfo.h"
2324
#include "llvm/IR/LegacyPassManager.h"
2425
#include "llvm/IRReader/IRReader.h"
2526
#include "llvm/Linker/Linker.h"
27+
#include "llvm/MC/MCContext.h"
2628
#include "llvm/MC/TargetRegistry.h"
2729
#include "llvm/Support/FileSystem.h"
2830
#include "llvm/Support/Path.h"
@@ -175,9 +177,15 @@ ModuleToObject::translateToISA(llvm::Module &llvmModule,
175177
{ // Drop pstream after this to prevent the ISA from being stuck buffering
176178
llvm::buffer_ostream pstream(stream);
177179
llvm::legacy::PassManager codegenPasses;
180+
llvm::MCContext mcCtx(
181+
targetMachine.getTargetTriple(), targetMachine.getMCAsmInfo(),
182+
targetMachine.getMCRegisterInfo(), targetMachine.getMCSubtargetInfo(),
183+
nullptr, &targetMachine.Options.MCOptions, false);
184+
auto mmi = targetMachine.createMachineModuleInfo(mcCtx);
178185

179186
if (targetMachine.addPassesToEmitFile(codegenPasses, pstream, nullptr,
180-
llvm::CodeGenFileType::AssemblyFile))
187+
llvm::CodeGenFileType::AssemblyFile,
188+
*mmi))
181189
return std::nullopt;
182190

183191
codegenPasses.run(llvmModule);

offload/plugins-nextgen/common/src/JIT.cpp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
#include "llvm/IR/LegacyPassManager.h"
2525
#include "llvm/IRReader/IRReader.h"
2626
#include "llvm/InitializePasses.h"
27+
#include "llvm/MC/MCContext.h"
2728
#include "llvm/MC/TargetRegistry.h"
2829
#include "llvm/Object/IRObjectFile.h"
2930
#include "llvm/Passes/OptimizationLevel.h"
@@ -175,12 +176,15 @@ void JITEngine::codegen(TargetMachine *TM, TargetLibraryInfoImpl *TLII,
175176
Module &M, raw_pwrite_stream &OS) {
176177
legacy::PassManager PM;
177178
PM.add(new TargetLibraryInfoWrapperPass(*TLII));
178-
MachineModuleInfoWrapperPass *MMIWP = new MachineModuleInfoWrapperPass(
179-
reinterpret_cast<LLVMTargetMachine *>(TM));
179+
llvm::MCContext MCCtx(
180+
TargetMachine->getTargetTriple(), TargetMachine->getMCAsmInfo(),
181+
TargetMachine->getMCRegisterInfo(), TargetMachine->getMCSubtargetInfo(),
182+
nullptr, &TargetMachine->Options.MCOptions, false);
183+
auto MMI = TargetMachine->createMachineModuleInfo(MCCtx);
180184
TM->addPassesToEmitFile(PM, OS, nullptr,
181185
TT.isNVPTX() ? CodeGenFileType::AssemblyFile
182186
: CodeGenFileType::ObjectFile,
183-
/*DisableVerify=*/false, MMIWP);
187+
*MMI, /*DisableVerify=*/false);
184188

185189
PM.run(M);
186190
}

0 commit comments

Comments
 (0)