[clang] [lldb] [llvm] [mlir] [MC] Take MCAsmInfo by reference in MCContext and TargetMachine. NFC (PR #194280)
Fangrui Song via cfe-commits
cfe-commits at lists.llvm.org
Mon Apr 27 00:05:14 PDT 2026
https://github.com/MaskRay updated https://github.com/llvm/llvm-project/pull/194280
>From 1465e68ee1aab2639a317a5be26bab596a198ece Mon Sep 17 00:00:00 2001
From: Fangrui Song <i at maskray.me>
Date: Sun, 26 Apr 2026 12:57:58 -0700
Subject: [PATCH 1/2] [MC] Take MCAsmInfo by reference in MCContext and
TargetMachine. NFC
Both MCContext::MCContext and TargetMachine::getMCAsmInfo treat
MCAsmInfo as a pointer that must be non-null. Make the contract
explicit:
* MCContext's constructor takes `const MCAsmInfo &MAI`.
* TargetMachine::getMCAsmInfo returns `const MCAsmInfo &`.
Make this change now since the MCContext ctor has recently been updated.
---
bolt/include/bolt/Core/BinaryContext.h | 2 +-
bolt/lib/Core/BinaryContext.cpp | 2 +-
clang/lib/Parse/ParseStmtAsm.cpp | 2 +-
clang/tools/driver/cc1as_main.cpp | 2 +-
llvm/include/llvm/MC/MCContext.h | 2 +-
llvm/include/llvm/Passes/CodeGenPassBuilder.h | 5 ++---
llvm/include/llvm/Target/TargetMachine.h | 2 +-
llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp | 4 ++--
llvm/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp | 6 ++----
llvm/lib/CodeGen/CodeGenTargetMachineImpl.cpp | 2 +-
llvm/lib/CodeGen/MachineVerifier.cpp | 7 +++----
llvm/lib/CodeGen/ShrinkWrap.cpp | 2 +-
llvm/lib/CodeGen/TargetFrameLoweringImpl.cpp | 2 +-
llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp | 3 +--
llvm/lib/CodeGen/TargetPassConfig.cpp | 5 ++---
llvm/lib/DWARFLinker/Classic/DWARFStreamer.cpp | 4 ++--
llvm/lib/DWARFLinker/Parallel/DWARFEmitterImpl.cpp | 4 ++--
.../DWARFLinker/Parallel/DebugLineSectionEmitter.h | 2 +-
.../DebugInfo/LogicalView/Readers/LVBinaryReader.cpp | 2 +-
.../RuntimeDyld/RuntimeDyldChecker.cpp | 4 ++--
llvm/lib/MC/MCContext.cpp | 5 ++---
llvm/lib/MC/MCDisassembler/Disassembler.cpp | 2 +-
llvm/lib/Object/ModuleSymbolTable.cpp | 2 +-
llvm/lib/Target/AArch64/AArch64FrameLowering.cpp | 6 +++---
llvm/lib/Target/AArch64/AArch64InstrInfo.cpp | 12 ++++++------
.../lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp | 2 +-
.../Target/AArch64/AArch64MachineFunctionInfo.cpp | 4 ++--
llvm/lib/Target/AArch64/AArch64TargetMachine.cpp | 4 ++--
llvm/lib/Target/AMDGPU/AMDGPUMCInstLower.cpp | 2 +-
llvm/lib/Target/AMDGPU/SIInstrInfo.cpp | 2 +-
llvm/lib/Target/ARC/ARCInstrInfo.cpp | 2 +-
llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp | 4 ++--
llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp | 2 +-
llvm/lib/Target/ARM/ARMFrameLowering.cpp | 10 +++++-----
llvm/lib/Target/ARM/ARMSubtarget.cpp | 2 +-
llvm/lib/Target/ARM/ARMTargetObjectFile.cpp | 2 +-
llvm/lib/Target/ARM/Thumb2SizeReduction.cpp | 2 +-
llvm/lib/Target/AVR/AVRInstrInfo.cpp | 2 +-
llvm/lib/Target/CSKY/CSKYInstrInfo.cpp | 2 +-
llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp | 4 ++--
llvm/lib/Target/LoongArch/LoongArchInstrInfo.cpp | 4 ++--
llvm/lib/Target/M68k/M68kMCInstLower.cpp | 2 +-
llvm/lib/Target/MSP430/MSP430InstrInfo.cpp | 2 +-
llvm/lib/Target/Mips/MipsInstrInfo.cpp | 2 +-
llvm/lib/Target/PowerPC/PPCInstrInfo.cpp | 2 +-
llvm/lib/Target/RISCV/RISCVInstrInfo.cpp | 2 +-
llvm/lib/Target/Sparc/SparcInstrInfo.cpp | 2 +-
llvm/lib/Target/SystemZ/SystemZInstrInfo.cpp | 2 +-
.../Target/WebAssembly/WebAssemblyCFGStackify.cpp | 10 +++++-----
.../Target/WebAssembly/WebAssemblyExceptionInfo.cpp | 2 +-
.../Target/WebAssembly/WebAssemblyFrameLowering.cpp | 2 +-
.../Target/WebAssembly/WebAssemblyLateEHPrepare.cpp | 2 +-
llvm/lib/Target/X86/X86CodeGenPassBuilder.cpp | 4 ++--
llvm/lib/Target/X86/X86FastISel.cpp | 2 +-
llvm/lib/Target/X86/X86FrameLowering.cpp | 12 ++++++------
llvm/lib/Target/X86/X86ISelLowering.cpp | 4 ++--
llvm/lib/Target/X86/X86InstrInfo.cpp | 2 +-
llvm/lib/Target/X86/X86MCInstLower.cpp | 2 +-
llvm/lib/Target/X86/X86TargetMachine.cpp | 4 ++--
llvm/lib/Target/Xtensa/XtensaInstrInfo.cpp | 2 +-
llvm/tools/llvm-cfi-verify/lib/FileAnalysis.cpp | 4 ++--
llvm/tools/llvm-dwp/llvm-dwp.cpp | 2 +-
llvm/tools/llvm-exegesis/lib/DisassemblerHelper.cpp | 2 +-
llvm/tools/llvm-exegesis/lib/SnippetFile.cpp | 6 +++---
llvm/tools/llvm-jitlink/llvm-jitlink.cpp | 4 ++--
.../llvm-mc-assemble-fuzzer.cpp | 2 +-
llvm/tools/llvm-mc/llvm-mc.cpp | 2 +-
llvm/tools/llvm-mca/llvm-mca.cpp | 4 ++--
llvm/tools/llvm-ml/Disassembler.cpp | 2 +-
llvm/tools/llvm-ml/llvm-ml.cpp | 2 +-
llvm/tools/llvm-objdump/MachODump.cpp | 6 +++---
llvm/tools/llvm-objdump/llvm-objdump.cpp | 4 ++--
llvm/tools/llvm-profgen/ProfiledBinary.cpp | 2 +-
llvm/tools/llvm-rtdyld/llvm-rtdyld.cpp | 2 +-
llvm/tools/sancov/sancov.cpp | 2 +-
llvm/unittests/CodeGen/MachineInstrTest.cpp | 8 ++++----
llvm/unittests/CodeGen/MachineOperandTest.cpp | 2 +-
.../DebugInfo/DWARF/DWARFExpressionCopyBytesTest.cpp | 5 ++---
llvm/unittests/DebugInfo/DWARF/DwarfGenerator.cpp | 2 +-
llvm/unittests/MC/AMDGPU/Disassembler.cpp | 4 ++--
llvm/unittests/MC/DwarfDebugFrameCIE.cpp | 2 +-
llvm/unittests/MC/DwarfLineTableHeaders.cpp | 2 +-
llvm/unittests/MC/DwarfLineTables.cpp | 2 +-
llvm/unittests/MC/SystemZ/SystemZAsmLexerTest.cpp | 2 +-
.../MC/SystemZ/SystemZMCDisassemblerTest.cpp | 2 +-
llvm/unittests/MC/X86/X86MCDisassemblerTest.cpp | 3 +--
.../Target/AArch64/AArch64InstPrinterTest.cpp | 2 +-
llvm/unittests/tools/llvm-mca/MCATestBase.cpp | 2 +-
mlir/lib/Target/LLVM/ROCDL/Target.cpp | 2 +-
89 files changed, 140 insertions(+), 149 deletions(-)
diff --git a/bolt/include/bolt/Core/BinaryContext.h b/bolt/include/bolt/Core/BinaryContext.h
index 2635f6080be0d..23e86fac58798 100644
--- a/bolt/include/bolt/Core/BinaryContext.h
+++ b/bolt/include/bolt/Core/BinaryContext.h
@@ -1546,7 +1546,7 @@ class BinaryContext {
IndependentCodeEmitter createIndependentMCCodeEmitter() const {
IndependentCodeEmitter MCEInstance;
MCEInstance.LocalCtx.reset(
- new MCContext(*TheTriple, AsmInfo.get(), MRI.get(), STI.get()));
+ new MCContext(*TheTriple, *AsmInfo, MRI.get(), STI.get()));
MCEInstance.LocalMOFI.reset(
TheTarget->createMCObjectFileInfo(*MCEInstance.LocalCtx,
/*PIC=*/!HasFixedLoadAddress));
diff --git a/bolt/lib/Core/BinaryContext.cpp b/bolt/lib/Core/BinaryContext.cpp
index 6694024cc777a..9172f4e5be7fa 100644
--- a/bolt/lib/Core/BinaryContext.cpp
+++ b/bolt/lib/Core/BinaryContext.cpp
@@ -255,7 +255,7 @@ Expected<std::unique_ptr<BinaryContext>> BinaryContext::createBinaryContext(
Twine("BOLT-ERROR: no instruction info for target ", TripleName));
std::unique_ptr<MCContext> Ctx(
- new MCContext(TheTriple, AsmInfo.get(), MRI.get(), STI.get()));
+ new MCContext(TheTriple, *AsmInfo, MRI.get(), STI.get()));
std::unique_ptr<MCObjectFileInfo> MOFI(
TheTarget->createMCObjectFileInfo(*Ctx, IsPIC));
Ctx->setObjectFileInfo(MOFI.get());
diff --git a/clang/lib/Parse/ParseStmtAsm.cpp b/clang/lib/Parse/ParseStmtAsm.cpp
index fd712b3de1e90..b6a757a7817ec 100644
--- a/clang/lib/Parse/ParseStmtAsm.cpp
+++ b/clang/lib/Parse/ParseStmtAsm.cpp
@@ -566,7 +566,7 @@ StmtResult Parser::ParseMicrosoftAsmStatement(SourceLocation AsmLoc) {
}
llvm::SourceMgr TempSrcMgr;
- llvm::MCContext Ctx(TheTriple, MAI.get(), MRI.get(), STI.get(), &TempSrcMgr);
+ llvm::MCContext Ctx(TheTriple, *MAI, MRI.get(), STI.get(), &TempSrcMgr);
std::unique_ptr<llvm::MCObjectFileInfo> MOFI(
TheTarget->createMCObjectFileInfo(Ctx, /*PIC=*/false));
Ctx.setObjectFileInfo(MOFI.get());
diff --git a/clang/tools/driver/cc1as_main.cpp b/clang/tools/driver/cc1as_main.cpp
index cacccd028fa06..5bfcc9b0e17c5 100644
--- a/clang/tools/driver/cc1as_main.cpp
+++ b/clang/tools/driver/cc1as_main.cpp
@@ -506,7 +506,7 @@ static bool ExecuteAssemblerImpl(AssemblerInvocation &Opts,
<< Opts.CPU << FS.empty() << FS;
}
- MCContext Ctx(Triple(Opts.Triple), MAI.get(), MRI.get(), STI.get(), &SrcMgr);
+ MCContext Ctx(Triple(Opts.Triple), *MAI, MRI.get(), STI.get(), &SrcMgr);
bool PIC = false;
if (Opts.RelocationModel == "static") {
diff --git a/llvm/include/llvm/MC/MCContext.h b/llvm/include/llvm/MC/MCContext.h
index 7b24679c6876d..5b20a33334a31 100644
--- a/llvm/include/llvm/MC/MCContext.h
+++ b/llvm/include/llvm/MC/MCContext.h
@@ -376,7 +376,7 @@ class MCContext {
DenseSet<StringRef> ELFSeenGenericMergeableSections;
public:
- LLVM_ABI explicit MCContext(const Triple &TheTriple, const MCAsmInfo *MAI,
+ LLVM_ABI explicit MCContext(const Triple &TheTriple, const MCAsmInfo &MAI,
const MCRegisterInfo *MRI,
const MCSubtargetInfo *MSTI,
const SourceMgr *Mgr = nullptr,
diff --git a/llvm/include/llvm/Passes/CodeGenPassBuilder.h b/llvm/include/llvm/Passes/CodeGenPassBuilder.h
index 42625b6ea0229..0e0568610ebd8 100644
--- a/llvm/include/llvm/Passes/CodeGenPassBuilder.h
+++ b/llvm/include/llvm/Passes/CodeGenPassBuilder.h
@@ -791,9 +791,8 @@ void CodeGenPassBuilder<Derived, TargetMachineT>::addIRPasses(
template <typename Derived, typename TargetMachineT>
void CodeGenPassBuilder<Derived, TargetMachineT>::addPassesToHandleExceptions(
PassManagerWrapper &PMW) const {
- const MCAsmInfo *MCAI = TM.getMCAsmInfo();
- assert(MCAI && "No MCAsmInfo");
- switch (MCAI->getExceptionHandlingType()) {
+ const MCAsmInfo &MCAI = TM.getMCAsmInfo();
+ switch (MCAI.getExceptionHandlingType()) {
case ExceptionHandling::SjLj:
// SjLj piggy-backs on dwarf for this bit. The cleanups done apply to both
// Dwarf EH prepare needs to be run after SjLj prepare. Otherwise,
diff --git a/llvm/include/llvm/Target/TargetMachine.h b/llvm/include/llvm/Target/TargetMachine.h
index 44eb57f6c621f..7363306b556dc 100644
--- a/llvm/include/llvm/Target/TargetMachine.h
+++ b/llvm/include/llvm/Target/TargetMachine.h
@@ -237,7 +237,7 @@ class LLVM_ABI TargetMachine {
void resetTargetOptions(const Function &F) const;
/// Return target specific asm information.
- const MCAsmInfo *getMCAsmInfo() const { return AsmInfo.get(); }
+ const MCAsmInfo &getMCAsmInfo() const { return *AsmInfo; }
const MCRegisterInfo *getMCRegisterInfo() const { return MRI.get(); }
const MCInstrInfo *getMCInstrInfo() const { return MII.get(); }
diff --git a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
index 8c75ca7c17f7e..a07dfdbd55fa0 100644
--- a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
@@ -409,7 +409,7 @@ Align AsmPrinter::getGVAlignment(const GlobalObject *GV, const DataLayout &DL,
AsmPrinter::AsmPrinter(TargetMachine &tm, std::unique_ptr<MCStreamer> Streamer,
char &ID)
- : MachineFunctionPass(ID), TM(tm), MAI(tm.getMCAsmInfo()),
+ : MachineFunctionPass(ID), TM(tm), MAI(&tm.getMCAsmInfo()),
OutContext(Streamer->getContext()), OutStreamer(std::move(Streamer)),
SM(*this) {
VerboseAsm = OutStreamer->isVerboseAsm();
@@ -629,7 +629,7 @@ bool AsmPrinter::doInitialization(Module &M) {
emitInlineAsm(
M.getModuleInlineAsm() + "\n", *TM.getMCSubtargetInfo(),
TM.Options.MCOptions, nullptr,
- InlineAsm::AsmDialect(TM.getMCAsmInfo()->getAssemblerDialect()));
+ InlineAsm::AsmDialect(TM.getMCAsmInfo().getAssemblerDialect()));
OutStreamer->AddComment("End of file scope inline assembly");
OutStreamer->addBlankLine();
}
diff --git a/llvm/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp b/llvm/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp
index 10ae995c7fdaa..a5045f1ce9a45 100644
--- a/llvm/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp
@@ -87,10 +87,8 @@ void AsmPrinter::emitInlineAsm(StringRef Str, const MCSubtargetInfo &STI,
// Otherwise parse the asm and emit it via MC support.
// This is useful in case the asm parser doesn't handle something but the
// system assembler does.
- const MCAsmInfo *MCAI = TM.getMCAsmInfo();
- assert(MCAI && "No MCAsmInfo");
- if (!MCAI->useIntegratedAssembler() &&
- !MCAI->parseInlineAsmUsingAsmParser() &&
+ const MCAsmInfo &MCAI = TM.getMCAsmInfo();
+ if (!MCAI.useIntegratedAssembler() && !MCAI.parseInlineAsmUsingAsmParser() &&
!OutStreamer->isIntegratedAssemblerRequired()) {
emitInlineAsmStart();
OutStreamer->emitRawText(Str);
diff --git a/llvm/lib/CodeGen/CodeGenTargetMachineImpl.cpp b/llvm/lib/CodeGen/CodeGenTargetMachineImpl.cpp
index b5773569a431b..061e79b6d8a3d 100644
--- a/llvm/lib/CodeGen/CodeGenTargetMachineImpl.cpp
+++ b/llvm/lib/CodeGen/CodeGenTargetMachineImpl.cpp
@@ -170,7 +170,7 @@ CodeGenTargetMachineImpl::createMCStreamer(raw_pwrite_stream &Out,
CodeGenFileType FileType,
MCContext &Context) {
const MCSubtargetInfo &STI = *getMCSubtargetInfo();
- const MCAsmInfo &MAI = *getMCAsmInfo();
+ const MCAsmInfo &MAI = getMCAsmInfo();
const MCRegisterInfo &MRI = *getMCRegisterInfo();
const MCInstrInfo &MII = *getMCInstrInfo();
diff --git a/llvm/lib/CodeGen/MachineVerifier.cpp b/llvm/lib/CodeGen/MachineVerifier.cpp
index c3be06384e317..ed62f4cd921e6 100644
--- a/llvm/lib/CodeGen/MachineVerifier.cpp
+++ b/llvm/lib/CodeGen/MachineVerifier.cpp
@@ -769,13 +769,12 @@ MachineVerifier::visitMachineBasicBlockBefore(const MachineBasicBlock *MBB) {
}
}
- const MCAsmInfo *AsmInfo = TM->getMCAsmInfo();
+ const MCAsmInfo &AsmInfo = TM->getMCAsmInfo();
const BasicBlock *BB = MBB->getBasicBlock();
const Function &F = MF->getFunction();
if (LandingPadSuccs.size() > 1 &&
- !(AsmInfo &&
- AsmInfo->getExceptionHandlingType() == ExceptionHandling::SjLj &&
- BB && isa<SwitchInst>(BB->getTerminator())) &&
+ !(AsmInfo.getExceptionHandlingType() == ExceptionHandling::SjLj && BB &&
+ isa<SwitchInst>(BB->getTerminator())) &&
!isScopedEHPersonality(classifyEHPersonality(F.getPersonalityFn())))
report("MBB has more than one landing pad successor", MBB);
diff --git a/llvm/lib/CodeGen/ShrinkWrap.cpp b/llvm/lib/CodeGen/ShrinkWrap.cpp
index b27139ca7ac18..ff71bb07dab05 100644
--- a/llvm/lib/CodeGen/ShrinkWrap.cpp
+++ b/llvm/lib/CodeGen/ShrinkWrap.cpp
@@ -1036,7 +1036,7 @@ bool ShrinkWrapImpl::isShrinkWrapEnabled(const MachineFunction &MF) {
return TFI->enableShrinkWrapping(MF) &&
// Windows with CFI has some limitations that make it impossible
// to use shrink-wrapping.
- !MF.getTarget().getMCAsmInfo()->usesWindowsCFI() &&
+ !MF.getTarget().getMCAsmInfo().usesWindowsCFI() &&
// Sanitizers look at the value of the stack at the location
// of the crash. Since a crash can happen anywhere, the
// frame must be lowered before anything else happen for the
diff --git a/llvm/lib/CodeGen/TargetFrameLoweringImpl.cpp b/llvm/lib/CodeGen/TargetFrameLoweringImpl.cpp
index ebf6d1a52448e..06f1676ff72a0 100644
--- a/llvm/lib/CodeGen/TargetFrameLoweringImpl.cpp
+++ b/llvm/lib/CodeGen/TargetFrameLoweringImpl.cpp
@@ -38,7 +38,7 @@ bool TargetFrameLowering::enableCalleeSaveSkip(const MachineFunction &MF) const
bool TargetFrameLowering::enableCFIFixup(const MachineFunction &MF) const {
return MF.needsFrameMoves() &&
- !MF.getTarget().getMCAsmInfo()->usesWindowsCFI();
+ !MF.getTarget().getMCAsmInfo().usesWindowsCFI();
}
/// Returns the displacement from the frame register to the stack
diff --git a/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp b/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
index da1e030c12229..9058b6ca7ca3b 100644
--- a/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
+++ b/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
@@ -1637,8 +1637,7 @@ void TargetLoweringObjectFileMachO::getNameWithPrefix(
if (auto *GO = GV->getAliaseeObject()) {
SectionKind GOKind = TargetLoweringObjectFile::getKindForGlobal(GO, TM);
const MCSection *TheSection = SectionForGlobal(GO, GOKind, TM);
- CannotUsePrivateLabel =
- !canUsePrivateLabel(*TM.getMCAsmInfo(), *TheSection);
+ CannotUsePrivateLabel = !canUsePrivateLabel(TM.getMCAsmInfo(), *TheSection);
}
getMangler().getNameWithPrefix(OutName, GV, CannotUsePrivateLabel);
}
diff --git a/llvm/lib/CodeGen/TargetPassConfig.cpp b/llvm/lib/CodeGen/TargetPassConfig.cpp
index 8e5b0f0d4221e..096e9a6f2b1dc 100644
--- a/llvm/lib/CodeGen/TargetPassConfig.cpp
+++ b/llvm/lib/CodeGen/TargetPassConfig.cpp
@@ -912,9 +912,8 @@ void TargetPassConfig::addIRPasses() {
/// Turn exception handling constructs into something the code generators can
/// handle.
void TargetPassConfig::addPassesToHandleExceptions() {
- const MCAsmInfo *MCAI = TM->getMCAsmInfo();
- assert(MCAI && "No MCAsmInfo");
- switch (MCAI->getExceptionHandlingType()) {
+ const MCAsmInfo &MCAI = TM->getMCAsmInfo();
+ switch (MCAI.getExceptionHandlingType()) {
case ExceptionHandling::SjLj:
// SjLj piggy-backs on dwarf for this bit. The cleanups done apply to both
// Dwarf EH prepare needs to be run after SjLj prepare. Otherwise,
diff --git a/llvm/lib/DWARFLinker/Classic/DWARFStreamer.cpp b/llvm/lib/DWARFLinker/Classic/DWARFStreamer.cpp
index 06ab3cad93f0e..a7360f91d3e9b 100644
--- a/llvm/lib/DWARFLinker/Classic/DWARFStreamer.cpp
+++ b/llvm/lib/DWARFLinker/Classic/DWARFStreamer.cpp
@@ -75,8 +75,8 @@ Error DwarfStreamer::init(Triple TheTriple,
"no subtarget info for target %s",
TripleName.c_str());
- MC.reset(new MCContext(TheTriple, MAI.get(), MRI.get(), MSTI.get(), nullptr,
- true, Swift5ReflectionSegmentName));
+ MC.reset(new MCContext(TheTriple, *MAI, MRI.get(), MSTI.get(), nullptr, true,
+ Swift5ReflectionSegmentName));
MOFI.reset(TheTarget->createMCObjectFileInfo(*MC, /*PIC=*/false, false));
MC->setObjectFileInfo(MOFI.get());
diff --git a/llvm/lib/DWARFLinker/Parallel/DWARFEmitterImpl.cpp b/llvm/lib/DWARFLinker/Parallel/DWARFEmitterImpl.cpp
index 22580759f3b69..4b0e710f7618b 100644
--- a/llvm/lib/DWARFLinker/Parallel/DWARFEmitterImpl.cpp
+++ b/llvm/lib/DWARFLinker/Parallel/DWARFEmitterImpl.cpp
@@ -55,8 +55,8 @@ Error DwarfEmitterImpl::init(Triple TheTriple,
"no subtarget info for target %s",
TripleName.c_str());
- MC.reset(new MCContext(TheTriple, MAI.get(), MRI.get(), MSTI.get(), nullptr,
- true, Swift5ReflectionSegmentName));
+ MC.reset(new MCContext(TheTriple, *MAI, MRI.get(), MSTI.get(), nullptr, true,
+ Swift5ReflectionSegmentName));
MOFI.reset(TheTarget->createMCObjectFileInfo(*MC, /*PIC=*/false, false));
MC->setObjectFileInfo(MOFI.get());
diff --git a/llvm/lib/DWARFLinker/Parallel/DebugLineSectionEmitter.h b/llvm/lib/DWARFLinker/Parallel/DebugLineSectionEmitter.h
index 7231916a38dbe..21cdf5887813f 100644
--- a/llvm/lib/DWARFLinker/Parallel/DebugLineSectionEmitter.h
+++ b/llvm/lib/DWARFLinker/Parallel/DebugLineSectionEmitter.h
@@ -91,7 +91,7 @@ class DebugLineSectionEmitter {
"no subtarget info for target %s",
TripleName.c_str());
- MC.reset(new MCContext(TheTriple, MAI.get(), MRI.get(), MSTI.get(), nullptr,
+ MC.reset(new MCContext(TheTriple, *MAI, MRI.get(), MSTI.get(), nullptr,
true, "__DWARF"));
return Error::success();
diff --git a/llvm/lib/DebugInfo/LogicalView/Readers/LVBinaryReader.cpp b/llvm/lib/DebugInfo/LogicalView/Readers/LVBinaryReader.cpp
index c3d745f3fd113..18a1bad09bccb 100644
--- a/llvm/lib/DebugInfo/LogicalView/Readers/LVBinaryReader.cpp
+++ b/llvm/lib/DebugInfo/LogicalView/Readers/LVBinaryReader.cpp
@@ -313,7 +313,7 @@ Error LVBinaryReader::loadGenericTargetInfo(StringRef TripleName,
"no instruction info for target " + TripleName);
MII.reset(InstructionInfo);
- MC = std::make_unique<MCContext>(Triple(TheTriple), MAI.get(), MRI.get(),
+ MC = std::make_unique<MCContext>(Triple(TheTriple), *MAI, MRI.get(),
STI.get());
// Assembler.
diff --git a/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldChecker.cpp b/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldChecker.cpp
index afe3b671547d8..ccc8150ca6f94 100644
--- a/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldChecker.cpp
+++ b/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldChecker.cpp
@@ -785,8 +785,8 @@ class RuntimeDyldCheckerExprEval {
TT.str(),
inconvertibleErrorCode());
- auto Ctx = std::make_unique<MCContext>(Triple(TT.str()), MAI.get(),
- MRI.get(), STI.get());
+ auto Ctx = std::make_unique<MCContext>(Triple(TT.str()), *MAI, MRI.get(),
+ STI.get());
std::unique_ptr<MCDisassembler> Disassembler(
TheTarget->createMCDisassembler(*STI, *Ctx));
diff --git a/llvm/lib/MC/MCContext.cpp b/llvm/lib/MC/MCContext.cpp
index 1ff16fee83bcd..cb5a3c84ee0db 100644
--- a/llvm/lib/MC/MCContext.cpp
+++ b/llvm/lib/MC/MCContext.cpp
@@ -62,17 +62,16 @@ static void defaultDiagHandler(const SMDiagnostic &SMD, bool, const SourceMgr &,
SMD.print(nullptr, errs());
}
-MCContext::MCContext(const Triple &TheTriple, const MCAsmInfo *mai,
+MCContext::MCContext(const Triple &TheTriple, const MCAsmInfo &mai,
const MCRegisterInfo *mri, const MCSubtargetInfo *msti,
const SourceMgr *mgr, bool DoAutoReset,
StringRef Swift5ReflSegmentName)
: Swift5ReflectionSegmentName(Swift5ReflSegmentName), TT(TheTriple),
SrcMgr(mgr), InlineSrcMgr(nullptr), DiagHandler(defaultDiagHandler),
- MAI(mai), MRI(mri), MSTI(msti), Symbols(Allocator),
+ MAI(&mai), MRI(mri), MSTI(msti), Symbols(Allocator),
InlineAsmUsedLabelNames(Allocator),
CurrentDwarfLoc(0, 0, 0, DWARF2_FLAG_IS_STMT, 0, 0),
AutoReset(DoAutoReset) {
- assert(MAI && "MCAsmInfo must be available");
const MCTargetOptions &TO = getTargetOptions();
SaveTempLabels = TO.MCSaveTempLabels;
if (SaveTempLabels)
diff --git a/llvm/lib/MC/MCDisassembler/Disassembler.cpp b/llvm/lib/MC/MCDisassembler/Disassembler.cpp
index 0429227f0fecf..5f13cd535be0c 100644
--- a/llvm/lib/MC/MCDisassembler/Disassembler.cpp
+++ b/llvm/lib/MC/MCDisassembler/Disassembler.cpp
@@ -75,7 +75,7 @@ LLVMCreateDisasmCPUFeatures(const char *TT, const char *CPU,
// Set up the MCContext for creating symbols and MCExpr's.
std::unique_ptr<MCContext> Ctx(
- new MCContext(TheTriple, MAI.get(), MRI.get(), STI.get()));
+ new MCContext(TheTriple, *MAI, MRI.get(), STI.get()));
if (!Ctx)
return nullptr;
diff --git a/llvm/lib/Object/ModuleSymbolTable.cpp b/llvm/lib/Object/ModuleSymbolTable.cpp
index 5e55f6d0a5acb..ac5529a9b2e86 100644
--- a/llvm/lib/Object/ModuleSymbolTable.cpp
+++ b/llvm/lib/Object/ModuleSymbolTable.cpp
@@ -103,7 +103,7 @@ initializeRecordStreamer(const Module &M,
SourceMgr SrcMgr;
SrcMgr.AddNewSourceBuffer(std::move(Buffer), SMLoc());
- MCContext MCCtx(TT, MAI.get(), MRI.get(), STI.get(), &SrcMgr);
+ MCContext MCCtx(TT, *MAI, MRI.get(), STI.get(), &SrcMgr);
std::unique_ptr<MCObjectFileInfo> MOFI(
T->createMCObjectFileInfo(MCCtx, /*PIC=*/false));
MCCtx.setObjectFileInfo(MOFI.get());
diff --git a/llvm/lib/Target/AArch64/AArch64FrameLowering.cpp b/llvm/lib/Target/AArch64/AArch64FrameLowering.cpp
index 396f7d8ff5f9c..2c68e379205ce 100644
--- a/llvm/lib/Target/AArch64/AArch64FrameLowering.cpp
+++ b/llvm/lib/Target/AArch64/AArch64FrameLowering.cpp
@@ -384,7 +384,7 @@ static bool isLikelyToHaveSVEStack(const AArch64FrameLowering &AFL,
}
static bool isTargetWindows(const MachineFunction &MF) {
- return MF.getTarget().getMCAsmInfo()->usesWindowsCFI();
+ return MF.getTarget().getMCAsmInfo().usesWindowsCFI();
}
bool AArch64FrameLowering::hasSVECalleeSavesAboveFrameRecord(
@@ -972,7 +972,7 @@ bool AArch64FrameLowering::canUseAsPrologue(
bool AArch64FrameLowering::needsWinCFI(const MachineFunction &MF) const {
const Function &F = MF.getFunction();
- return MF.getTarget().getMCAsmInfo()->usesWindowsCFI() &&
+ return MF.getTarget().getMCAsmInfo().usesWindowsCFI() &&
F.needsUnwindTableEntry();
}
@@ -980,7 +980,7 @@ bool AArch64FrameLowering::shouldSignReturnAddressEverywhere(
const MachineFunction &MF) const {
// FIXME: With WinCFI, extra care should be taken to place SEH_PACSignLR
// and SEH_EpilogEnd instructions in the correct order.
- if (MF.getTarget().getMCAsmInfo()->usesWindowsCFI())
+ if (MF.getTarget().getMCAsmInfo().usesWindowsCFI())
return false;
const AArch64FunctionInfo *AFI = MF.getInfo<AArch64FunctionInfo>();
return AFI->getSignReturnAddressCondition() == SignReturnAddress::All;
diff --git a/llvm/lib/Target/AArch64/AArch64InstrInfo.cpp b/llvm/lib/Target/AArch64/AArch64InstrInfo.cpp
index b6fd8eb2a5815..844adc3eb54c4 100644
--- a/llvm/lib/Target/AArch64/AArch64InstrInfo.cpp
+++ b/llvm/lib/Target/AArch64/AArch64InstrInfo.cpp
@@ -150,12 +150,12 @@ unsigned AArch64InstrInfo::getInstSizeInBytes(const MachineInstr &MI) const {
const MachineBasicBlock &MBB = *MI.getParent();
const MachineFunction *MF = MBB.getParent();
const Function &F = MF->getFunction();
- const MCAsmInfo *MAI = MF->getTarget().getMCAsmInfo();
+ const MCAsmInfo &MAI = MF->getTarget().getMCAsmInfo();
{
auto Op = MI.getOpcode();
if (Op == AArch64::INLINEASM || Op == AArch64::INLINEASM_BR)
- return getInlineAsmLength(MI.getOperand(0).getSymbolName(), *MAI);
+ return getInlineAsmLength(MI.getOperand(0).getSymbolName(), MAI);
}
// Meta-instructions emit no code.
@@ -3369,9 +3369,9 @@ bool AArch64InstrInfo::isCandidateToMergeOrPair(const MachineInstr &MI) const {
// prologue/epilogue if the CFI information encoded the operations as separate
// instructions, as that will cause the size of the actual prologue to mismatch
// with the prologue size recorded in the Windows CFI.
- const MCAsmInfo *MAI = MI.getMF()->getTarget().getMCAsmInfo();
- bool NeedsWinCFI = MAI->usesWindowsCFI() &&
- MI.getMF()->getFunction().needsUnwindTableEntry();
+ const MCAsmInfo &MAI = MI.getMF()->getTarget().getMCAsmInfo();
+ bool NeedsWinCFI =
+ MAI.usesWindowsCFI() && MI.getMF()->getFunction().needsUnwindTableEntry();
if (NeedsWinCFI && (MI.getFlag(MachineInstr::FrameSetup) ||
MI.getFlag(MachineInstr::FrameDestroy)))
return false;
@@ -10528,7 +10528,7 @@ bool AArch64InstrInfo::isFunctionSafeToOutlineFrom(
return false;
// FIXME: Teach the outliner to generate/handle Windows unwind info.
- if (MF.getTarget().getMCAsmInfo()->usesWindowsCFI())
+ if (MF.getTarget().getMCAsmInfo().usesWindowsCFI())
return false;
// It's safe to outline from MF.
diff --git a/llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp b/llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp
index 0b444ecd191f3..34d46e5c37569 100644
--- a/llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp
+++ b/llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp
@@ -1664,7 +1664,7 @@ bool AArch64LoadStoreOpt::findMatchingStore(
}
static bool needsWinCFI(const MachineFunction *MF) {
- return MF->getTarget().getMCAsmInfo()->usesWindowsCFI() &&
+ return MF->getTarget().getMCAsmInfo().usesWindowsCFI() &&
MF->getFunction().needsUnwindTableEntry();
}
diff --git a/llvm/lib/Target/AArch64/AArch64MachineFunctionInfo.cpp b/llvm/lib/Target/AArch64/AArch64MachineFunctionInfo.cpp
index baeab6a33ff6a..90dbd7304ec85 100644
--- a/llvm/lib/Target/AArch64/AArch64MachineFunctionInfo.cpp
+++ b/llvm/lib/Target/AArch64/AArch64MachineFunctionInfo.cpp
@@ -206,8 +206,8 @@ bool AArch64FunctionInfo::needsShadowCallStackPrologueEpilogue(
bool AArch64FunctionInfo::needsDwarfUnwindInfo(
const MachineFunction &MF) const {
if (!NeedsDwarfUnwindInfo)
- NeedsDwarfUnwindInfo = MF.needsFrameMoves() &&
- !MF.getTarget().getMCAsmInfo()->usesWindowsCFI();
+ NeedsDwarfUnwindInfo =
+ MF.needsFrameMoves() && !MF.getTarget().getMCAsmInfo().usesWindowsCFI();
return *NeedsDwarfUnwindInfo;
}
diff --git a/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp b/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp
index 5ffae6deb6944..e07245a600c4f 100644
--- a/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp
+++ b/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp
@@ -359,7 +359,7 @@ AArch64TargetMachine::AArch64TargetMachine(const Target &T, const Triple &TT,
this->Options.NoTrapAfterNoreturn = true;
}
- if (getMCAsmInfo()->usesWindowsCFI()) {
+ if (getMCAsmInfo().usesWindowsCFI()) {
// Unwinding can get confused if the last instruction in an
// exception-handling region (function, funclet, try block, etc.)
// is a call.
@@ -409,7 +409,7 @@ AArch64TargetMachine::AArch64TargetMachine(const Target &T, const Triple &TT,
setSupportsDebugEntryValues(true);
// AArch64 supports fixing up the DWARF unwind information.
- if (!getMCAsmInfo()->usesWindowsCFI())
+ if (!getMCAsmInfo().usesWindowsCFI())
setCFIFixup(true);
}
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUMCInstLower.cpp b/llvm/lib/Target/AMDGPU/AMDGPUMCInstLower.cpp
index 56592bde3b1c7..535d1282f8504 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUMCInstLower.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUMCInstLower.cpp
@@ -484,7 +484,7 @@ void AMDGPUAsmPrinter::emitInstruction(const MachineInstr *MI) {
std::string &DisasmLine = DisasmLines.back();
raw_string_ostream DisasmStream(DisasmLine);
- AMDGPUInstPrinter InstPrinter(*TM.getMCAsmInfo(), *STI.getInstrInfo(),
+ AMDGPUInstPrinter InstPrinter(TM.getMCAsmInfo(), *STI.getInstrInfo(),
*STI.getRegisterInfo());
InstPrinter.printInst(&TmpInst, 0, StringRef(), STI, DisasmStream);
diff --git a/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp b/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
index 77b0eac77fc51..03f4eb02376c2 100644
--- a/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
+++ b/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
@@ -9976,7 +9976,7 @@ unsigned SIInstrInfo::getInstSizeInBytes(const MachineInstr &MI) const {
case TargetOpcode::INLINEASM_BR: {
const MachineFunction *MF = MI.getMF();
const char *AsmStr = MI.getOperand(0).getSymbolName();
- return getInlineAsmLength(AsmStr, *MF->getTarget().getMCAsmInfo(), &ST);
+ return getInlineAsmLength(AsmStr, MF->getTarget().getMCAsmInfo(), &ST);
}
default:
if (MI.isMetaInstruction())
diff --git a/llvm/lib/Target/ARC/ARCInstrInfo.cpp b/llvm/lib/Target/ARC/ARCInstrInfo.cpp
index f43dc550ec5d5..1f1420c402fec 100644
--- a/llvm/lib/Target/ARC/ARCInstrInfo.cpp
+++ b/llvm/lib/Target/ARC/ARCInstrInfo.cpp
@@ -405,7 +405,7 @@ unsigned ARCInstrInfo::getInstSizeInBytes(const MachineInstr &MI) const {
if (MI.isInlineAsm()) {
const MachineFunction *MF = MI.getParent()->getParent();
const char *AsmStr = MI.getOperand(0).getSymbolName();
- return getInlineAsmLength(AsmStr, *MF->getTarget().getMCAsmInfo());
+ return getInlineAsmLength(AsmStr, MF->getTarget().getMCAsmInfo());
}
return MI.getDesc().getSize();
}
diff --git a/llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp b/llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp
index d121c3160b24e..eb8ff794ad8a6 100644
--- a/llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp
+++ b/llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp
@@ -605,7 +605,7 @@ template <> bool IsCPSRDead<MachineInstr>(const MachineInstr *MI) {
unsigned ARMBaseInstrInfo::getInstSizeInBytes(const MachineInstr &MI) const {
const MachineBasicBlock &MBB = *MI.getParent();
const MachineFunction *MF = MBB.getParent();
- const MCAsmInfo *MAI = MF->getTarget().getMCAsmInfo();
+ const MCAsmInfo &MAI = MF->getTarget().getMCAsmInfo();
const MCInstrDesc &MCID = MI.getDesc();
@@ -637,7 +637,7 @@ unsigned ARMBaseInstrInfo::getInstSizeInBytes(const MachineInstr &MI) const {
case ARM::INLINEASM:
case ARM::INLINEASM_BR: {
// If this machine instr is an inline asm, measure it.
- unsigned Size = getInlineAsmLength(MI.getOperand(0).getSymbolName(), *MAI);
+ unsigned Size = getInlineAsmLength(MI.getOperand(0).getSymbolName(), MAI);
if (!MF->getInfo<ARMFunctionInfo>()->isThumbFunction())
Size = alignTo(Size, 4);
return Size;
diff --git a/llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp b/llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp
index 276736333fb5d..d6eaa861ea291 100644
--- a/llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp
+++ b/llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp
@@ -2268,7 +2268,7 @@ bool ARMExpandPseudo::ExpandMI(MachineBasicBlock &MBB,
// Jump to label or value in register.
if (RetOpcode == ARM::TCRETURNdi) {
MachineFunction *MF = MBB.getParent();
- bool NeedsWinCFI = MF->getTarget().getMCAsmInfo()->usesWindowsCFI() &&
+ bool NeedsWinCFI = MF->getTarget().getMCAsmInfo().usesWindowsCFI() &&
MF->getFunction().needsUnwindTableEntry();
unsigned TCOpcode =
STI->isThumb()
diff --git a/llvm/lib/Target/ARM/ARMFrameLowering.cpp b/llvm/lib/Target/ARM/ARMFrameLowering.cpp
index 3abace4f6a958..8e5ad779b112a 100644
--- a/llvm/lib/Target/ARM/ARMFrameLowering.cpp
+++ b/llvm/lib/Target/ARM/ARMFrameLowering.cpp
@@ -420,7 +420,7 @@ static int getArgumentStackToRestore(MachineFunction &MF,
static bool needsWinCFI(const MachineFunction &MF) {
const Function &F = MF.getFunction();
- return MF.getTarget().getMCAsmInfo()->usesWindowsCFI() &&
+ return MF.getTarget().getMCAsmInfo().usesWindowsCFI() &&
F.needsUnwindTableEntry();
}
@@ -3400,7 +3400,7 @@ void ARMFrameLowering::adjustForSegmentedStacks(
// Emit the relevant DWARF information about the change in stack pointer as
// well as where to find both r4 and r5 (the callee-save registers)
- if (!MF.getTarget().getMCAsmInfo()->usesWindowsCFI()) {
+ if (!MF.getTarget().getMCAsmInfo().usesWindowsCFI()) {
CFIInstBuilder CFIBuilder(PrevStackMBB, MachineInstr::NoFlags);
CFIBuilder.buildDefCFAOffset(8);
CFIBuilder.buildOffset(ScratchReg1, -4);
@@ -3612,7 +3612,7 @@ void ARMFrameLowering::adjustForSegmentedStacks(
// Emit the DWARF info about the change in stack as well as where to find the
// previous link register
- if (!MF.getTarget().getMCAsmInfo()->usesWindowsCFI()) {
+ if (!MF.getTarget().getMCAsmInfo().usesWindowsCFI()) {
CFIInstBuilder CFIBuilder(AllocMBB, MachineInstr::NoFlags);
CFIBuilder.buildDefCFAOffset(12);
CFIBuilder.buildOffset(ARM::LR, -12);
@@ -3672,7 +3672,7 @@ void ARMFrameLowering::adjustForSegmentedStacks(
}
// Update the CFA offset now that we've popped
- if (!MF.getTarget().getMCAsmInfo()->usesWindowsCFI())
+ if (!MF.getTarget().getMCAsmInfo().usesWindowsCFI())
CFIInstBuilder(AllocMBB, MachineInstr::NoFlags).buildDefCFAOffset(0);
// Return from this function.
@@ -3695,7 +3695,7 @@ void ARMFrameLowering::adjustForSegmentedStacks(
}
// Update the CFA offset now that we've popped
- if (!MF.getTarget().getMCAsmInfo()->usesWindowsCFI()) {
+ if (!MF.getTarget().getMCAsmInfo().usesWindowsCFI()) {
CFIInstBuilder CFIBuilder(PostStackMBB, MachineInstr::NoFlags);
CFIBuilder.buildDefCFAOffset(0);
diff --git a/llvm/lib/Target/ARM/ARMSubtarget.cpp b/llvm/lib/Target/ARM/ARMSubtarget.cpp
index 5cd64058374b5..4893d8d3a9ef1 100644
--- a/llvm/lib/Target/ARM/ARMSubtarget.cpp
+++ b/llvm/lib/Target/ARM/ARMSubtarget.cpp
@@ -543,7 +543,7 @@ ARMSubtarget::getPushPopSplitVariation(const MachineFunction &MF) const {
// This stack unwinding cannot be expressed with SEH unwind opcodes when done
// with a single push, making it necessary to split the push into r4-r10, and
// another containing r11+lr.
- if (MF.getTarget().getMCAsmInfo()->usesWindowsCFI() &&
+ if (MF.getTarget().getMCAsmInfo().usesWindowsCFI() &&
F.needsUnwindTableEntry() &&
(MFI.hasVarSizedObjects() || getRegisterInfo()->hasStackRealignment(MF)))
return SplitR11WindowsSEH;
diff --git a/llvm/lib/Target/ARM/ARMTargetObjectFile.cpp b/llvm/lib/Target/ARM/ARMTargetObjectFile.cpp
index 3692eeeaaa64f..6e218a1e31c3c 100644
--- a/llvm/lib/Target/ARM/ARMTargetObjectFile.cpp
+++ b/llvm/lib/Target/ARM/ARMTargetObjectFile.cpp
@@ -80,7 +80,7 @@ getIndirectSymViaRWPI(const MCSymbol *Sym) const {
const MCExpr *ARMElfTargetObjectFile::getTTypeGlobalReference(
const GlobalValue *GV, unsigned Encoding, const TargetMachine &TM,
MachineModuleInfo *MMI, MCStreamer &Streamer) const {
- if (TM.getMCAsmInfo()->getExceptionHandlingType() != ExceptionHandling::ARM)
+ if (TM.getMCAsmInfo().getExceptionHandlingType() != ExceptionHandling::ARM)
return TargetLoweringObjectFileELF::getTTypeGlobalReference(
GV, Encoding, TM, MMI, Streamer);
diff --git a/llvm/lib/Target/ARM/Thumb2SizeReduction.cpp b/llvm/lib/Target/ARM/Thumb2SizeReduction.cpp
index 2e2d6e4268928..e497845742ef5 100644
--- a/llvm/lib/Target/ARM/Thumb2SizeReduction.cpp
+++ b/llvm/lib/Target/ARM/Thumb2SizeReduction.cpp
@@ -1148,7 +1148,7 @@ bool Thumb2SizeReduce::runOnMachineFunction(MachineFunction &MF) {
// predecessors.
ReversePostOrderTraversal<MachineFunction*> RPOT(&MF);
bool Modified = false;
- bool NeedsWinCFI = MF.getTarget().getMCAsmInfo()->usesWindowsCFI() &&
+ bool NeedsWinCFI = MF.getTarget().getMCAsmInfo().usesWindowsCFI() &&
MF.getFunction().needsUnwindTableEntry();
for (MachineBasicBlock *MBB : RPOT)
Modified |= ReduceMBB(*MBB, /*SkipPrologueEpilogue=*/NeedsWinCFI);
diff --git a/llvm/lib/Target/AVR/AVRInstrInfo.cpp b/llvm/lib/Target/AVR/AVRInstrInfo.cpp
index 3d9fa1854719f..f58dbdae46dd9 100644
--- a/llvm/lib/Target/AVR/AVRInstrInfo.cpp
+++ b/llvm/lib/Target/AVR/AVRInstrInfo.cpp
@@ -492,7 +492,7 @@ unsigned AVRInstrInfo::getInstSizeInBytes(const MachineInstr &MI) const {
static_cast<const AVRTargetMachine &>(MF.getTarget());
const TargetInstrInfo &TII = *STI.getInstrInfo();
return TII.getInlineAsmLength(MI.getOperand(0).getSymbolName(),
- *TM.getMCAsmInfo());
+ TM.getMCAsmInfo());
}
}
}
diff --git a/llvm/lib/Target/CSKY/CSKYInstrInfo.cpp b/llvm/lib/Target/CSKY/CSKYInstrInfo.cpp
index d10308a0c0613..1a76913be3cb5 100644
--- a/llvm/lib/Target/CSKY/CSKYInstrInfo.cpp
+++ b/llvm/lib/Target/CSKY/CSKYInstrInfo.cpp
@@ -616,7 +616,7 @@ unsigned CSKYInstrInfo::getInstSizeInBytes(const MachineInstr &MI) const {
case TargetOpcode::INLINEASM: {
const MachineFunction *MF = MI.getParent()->getParent();
const char *AsmStr = MI.getOperand(0).getSymbolName();
- return getInlineAsmLength(AsmStr, *MF->getTarget().getMCAsmInfo());
+ return getInlineAsmLength(AsmStr, MF->getTarget().getMCAsmInfo());
}
case TargetOpcode::BUNDLE:
return getInstBundleSize(MI);
diff --git a/llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp b/llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp
index 732256f61556f..6c95d54bf111b 100644
--- a/llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp
+++ b/llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp
@@ -4631,7 +4631,7 @@ unsigned HexagonInstrInfo::getSize(const MachineInstr &MI) const {
if (BranchRelaxAsmLarge && MI.getOpcode() == Hexagon::INLINEASM) {
const MachineBasicBlock &MBB = *MI.getParent();
const MachineFunction *MF = MBB.getParent();
- const MCAsmInfo *MAI = MF->getTarget().getMCAsmInfo();
+ const MCAsmInfo &MAI = MF->getTarget().getMCAsmInfo();
// Count the number of register definitions to find the asm string.
unsigned NumDefs = 0;
@@ -4642,7 +4642,7 @@ unsigned HexagonInstrInfo::getSize(const MachineInstr &MI) const {
assert(MI.getOperand(NumDefs).isSymbol() && "No asm string?");
// Disassemble the AsmStr and approximate number of instructions.
const char *AsmStr = MI.getOperand(NumDefs).getSymbolName();
- Size = getInlineAsmLength(AsmStr, *MAI);
+ Size = getInlineAsmLength(AsmStr, MAI);
}
return Size;
diff --git a/llvm/lib/Target/LoongArch/LoongArchInstrInfo.cpp b/llvm/lib/Target/LoongArch/LoongArchInstrInfo.cpp
index 631565b963b79..40c245971a190 100644
--- a/llvm/lib/Target/LoongArch/LoongArchInstrInfo.cpp
+++ b/llvm/lib/Target/LoongArch/LoongArchInstrInfo.cpp
@@ -243,8 +243,8 @@ unsigned LoongArchInstrInfo::getInstSizeInBytes(const MachineInstr &MI) const {
if (Opcode == TargetOpcode::INLINEASM ||
Opcode == TargetOpcode::INLINEASM_BR) {
const MachineFunction *MF = MI.getParent()->getParent();
- const MCAsmInfo *MAI = MF->getTarget().getMCAsmInfo();
- return getInlineAsmLength(MI.getOperand(0).getSymbolName(), *MAI);
+ const MCAsmInfo &MAI = MF->getTarget().getMCAsmInfo();
+ return getInlineAsmLength(MI.getOperand(0).getSymbolName(), MAI);
}
unsigned NumBytes = 0;
diff --git a/llvm/lib/Target/M68k/M68kMCInstLower.cpp b/llvm/lib/Target/M68k/M68kMCInstLower.cpp
index 13a1d742893ab..774a3ba9b1609 100644
--- a/llvm/lib/Target/M68k/M68kMCInstLower.cpp
+++ b/llvm/lib/Target/M68k/M68kMCInstLower.cpp
@@ -33,7 +33,7 @@ using namespace llvm;
#define DEBUG_TYPE "m68k-mc-inst-lower"
M68kMCInstLower::M68kMCInstLower(MachineFunction &MF, M68kAsmPrinter &AP)
- : Ctx(AP.OutContext), MF(MF), TM(MF.getTarget()), MAI(*TM.getMCAsmInfo()),
+ : Ctx(AP.OutContext), MF(MF), TM(MF.getTarget()), MAI(TM.getMCAsmInfo()),
AsmPrinter(AP) {}
MCSymbol *
diff --git a/llvm/lib/Target/MSP430/MSP430InstrInfo.cpp b/llvm/lib/Target/MSP430/MSP430InstrInfo.cpp
index 61ecb3e13669d..f77e3359db95d 100644
--- a/llvm/lib/Target/MSP430/MSP430InstrInfo.cpp
+++ b/llvm/lib/Target/MSP430/MSP430InstrInfo.cpp
@@ -298,7 +298,7 @@ unsigned MSP430InstrInfo::getInstSizeInBytes(const MachineInstr &MI) const {
const MachineFunction *MF = MI.getParent()->getParent();
const TargetInstrInfo &TII = *MF->getSubtarget().getInstrInfo();
return TII.getInlineAsmLength(MI.getOperand(0).getSymbolName(),
- *MF->getTarget().getMCAsmInfo());
+ MF->getTarget().getMCAsmInfo());
}
case TargetOpcode::BUNDLE:
return getInstBundleSize(MI);
diff --git a/llvm/lib/Target/Mips/MipsInstrInfo.cpp b/llvm/lib/Target/Mips/MipsInstrInfo.cpp
index 77b216cfc33e3..8648aa0836693 100644
--- a/llvm/lib/Target/Mips/MipsInstrInfo.cpp
+++ b/llvm/lib/Target/Mips/MipsInstrInfo.cpp
@@ -713,7 +713,7 @@ unsigned MipsInstrInfo::getInstSizeInBytes(const MachineInstr &MI) const {
case TargetOpcode::INLINEASM_BR: { // Inline Asm: Variable size.
const MachineFunction *MF = MI.getParent()->getParent();
const char *AsmStr = MI.getOperand(0).getSymbolName();
- return getInlineAsmLength(AsmStr, *MF->getTarget().getMCAsmInfo());
+ return getInlineAsmLength(AsmStr, MF->getTarget().getMCAsmInfo());
}
case TargetOpcode::BUNDLE:
return getInstBundleSize(MI);
diff --git a/llvm/lib/Target/PowerPC/PPCInstrInfo.cpp b/llvm/lib/Target/PowerPC/PPCInstrInfo.cpp
index f854dca003964..b7a77a857deb2 100644
--- a/llvm/lib/Target/PowerPC/PPCInstrInfo.cpp
+++ b/llvm/lib/Target/PowerPC/PPCInstrInfo.cpp
@@ -3010,7 +3010,7 @@ unsigned PPCInstrInfo::getInstSizeInBytes(const MachineInstr &MI) const {
case PPC::INLINEASM_BR: {
const MachineFunction *MF = MI.getParent()->getParent();
const char *AsmStr = MI.getOperand(0).getSymbolName();
- return getInlineAsmLength(AsmStr, *MF->getTarget().getMCAsmInfo());
+ return getInlineAsmLength(AsmStr, MF->getTarget().getMCAsmInfo());
}
case TargetOpcode::STACKMAP: {
StackMapOpers Opers(&MI);
diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfo.cpp b/llvm/lib/Target/RISCV/RISCVInstrInfo.cpp
index 6671669a8942b..15024404b05ca 100644
--- a/llvm/lib/Target/RISCV/RISCVInstrInfo.cpp
+++ b/llvm/lib/Target/RISCV/RISCVInstrInfo.cpp
@@ -1983,7 +1983,7 @@ unsigned RISCVInstrInfo::getInstSizeInBytes(const MachineInstr &MI) const {
Opcode == TargetOpcode::INLINEASM_BR) {
const MachineFunction &MF = *MI.getParent()->getParent();
return getInlineAsmLength(MI.getOperand(0).getSymbolName(),
- *MF.getTarget().getMCAsmInfo());
+ MF.getTarget().getMCAsmInfo());
}
if (requiresNTLHint(MI)) {
diff --git a/llvm/lib/Target/Sparc/SparcInstrInfo.cpp b/llvm/lib/Target/Sparc/SparcInstrInfo.cpp
index d6d7a238d336e..602277b219879 100644
--- a/llvm/lib/Target/Sparc/SparcInstrInfo.cpp
+++ b/llvm/lib/Target/Sparc/SparcInstrInfo.cpp
@@ -662,7 +662,7 @@ unsigned SparcInstrInfo::getInstSizeInBytes(const MachineInstr &MI) const {
if (MI.isInlineAsm()) {
const MachineFunction *MF = MI.getParent()->getParent();
const char *AsmStr = MI.getOperand(0).getSymbolName();
- return getInlineAsmLength(AsmStr, *MF->getTarget().getMCAsmInfo());
+ return getInlineAsmLength(AsmStr, MF->getTarget().getMCAsmInfo());
}
if (Opcode == TargetOpcode::BUNDLE)
diff --git a/llvm/lib/Target/SystemZ/SystemZInstrInfo.cpp b/llvm/lib/Target/SystemZ/SystemZInstrInfo.cpp
index 84e79ce5114b6..988dc87cad96f 100644
--- a/llvm/lib/Target/SystemZ/SystemZInstrInfo.cpp
+++ b/llvm/lib/Target/SystemZ/SystemZInstrInfo.cpp
@@ -1820,7 +1820,7 @@ unsigned SystemZInstrInfo::getInstSizeInBytes(const MachineInstr &MI) const {
if (MI.isInlineAsm()) {
const MachineFunction *MF = MI.getParent()->getParent();
const char *AsmStr = MI.getOperand(0).getSymbolName();
- return getInlineAsmLength(AsmStr, *MF->getTarget().getMCAsmInfo());
+ return getInlineAsmLength(AsmStr, MF->getTarget().getMCAsmInfo());
}
else if (MI.getOpcode() == SystemZ::PATCHPOINT)
return PatchPointOpers(&MI).getNumPatchBytes();
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyCFGStackify.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyCFGStackify.cpp
index 540388cb17b68..c9b5de7c9cd8f 100644
--- a/llvm/lib/Target/WebAssembly/WebAssemblyCFGStackify.cpp
+++ b/llvm/lib/Target/WebAssembly/WebAssemblyCFGStackify.cpp
@@ -2458,11 +2458,11 @@ void WebAssemblyCFGStackify::placeMarkers(MachineFunction &MF) {
for (auto &MBB : MF)
placeLoopMarker(MBB);
- const MCAsmInfo *MCAI = MF.getTarget().getMCAsmInfo();
+ const MCAsmInfo &MCAI = MF.getTarget().getMCAsmInfo();
for (auto &MBB : MF) {
if (MBB.isEHPad()) {
// Place the TRY/TRY_TABLE for MBB if MBB is the EH pad of an exception.
- if (MCAI->getExceptionHandlingType() == ExceptionHandling::Wasm &&
+ if (MCAI.getExceptionHandlingType() == ExceptionHandling::Wasm &&
MF.getFunction().hasPersonalityFn()) {
if (WebAssembly::WasmUseLegacyEH)
placeTryMarker(MBB);
@@ -2475,7 +2475,7 @@ void WebAssemblyCFGStackify::placeMarkers(MachineFunction &MF) {
}
}
- if (MCAI->getExceptionHandlingType() == ExceptionHandling::Wasm &&
+ if (MCAI.getExceptionHandlingType() == ExceptionHandling::Wasm &&
MF.getFunction().hasPersonalityFn()) {
const auto &TII = *MF.getSubtarget<WebAssemblySubtarget>().getInstrInfo();
// Add an 'unreachable' after 'end_try_table's.
@@ -2646,7 +2646,7 @@ bool WebAssemblyCFGStackify::runOnMachineFunction(MachineFunction &MF) {
LLVM_DEBUG(dbgs() << "********** CFG Stackifying **********\n"
"********** Function: "
<< MF.getName() << '\n');
- const MCAsmInfo *MCAI = MF.getTarget().getMCAsmInfo();
+ const MCAsmInfo &MCAI = MF.getTarget().getMCAsmInfo();
MDT = &getAnalysis<MachineDominatorTreeWrapperPass>().getDomTree();
releaseMemory();
@@ -2659,7 +2659,7 @@ bool WebAssemblyCFGStackify::runOnMachineFunction(MachineFunction &MF) {
placeMarkers(MF);
// Remove unnecessary instructions possibly introduced by try/end_trys.
- if (MCAI->getExceptionHandlingType() == ExceptionHandling::Wasm &&
+ if (MCAI.getExceptionHandlingType() == ExceptionHandling::Wasm &&
MF.getFunction().hasPersonalityFn() && WebAssembly::WasmUseLegacyEH)
removeUnnecessaryInstrs(MF);
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyExceptionInfo.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyExceptionInfo.cpp
index 97d5ab5c5fb0a..ae6a7fb79aead 100644
--- a/llvm/lib/Target/WebAssembly/WebAssemblyExceptionInfo.cpp
+++ b/llvm/lib/Target/WebAssembly/WebAssemblyExceptionInfo.cpp
@@ -39,7 +39,7 @@ bool WebAssemblyExceptionInfo::runOnMachineFunction(MachineFunction &MF) {
"********** Function: "
<< MF.getName() << '\n');
releaseMemory();
- if (MF.getTarget().getMCAsmInfo()->getExceptionHandlingType() !=
+ if (MF.getTarget().getMCAsmInfo().getExceptionHandlingType() !=
ExceptionHandling::Wasm ||
!MF.getFunction().hasPersonalityFn())
return false;
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyFrameLowering.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyFrameLowering.cpp
index 5a1779c2c80fb..e0e72316b7e2c 100644
--- a/llvm/lib/Target/WebAssembly/WebAssemblyFrameLowering.cpp
+++ b/llvm/lib/Target/WebAssembly/WebAssemblyFrameLowering.cpp
@@ -144,7 +144,7 @@ bool WebAssemblyFrameLowering::needsSPForLocalFrame(
// restoring __stack_pointer after an exception is caught.
bool WebAssemblyFrameLowering::needsPrologForEH(
const MachineFunction &MF) const {
- auto EHType = MF.getTarget().getMCAsmInfo()->getExceptionHandlingType();
+ auto EHType = MF.getTarget().getMCAsmInfo().getExceptionHandlingType();
return EHType == ExceptionHandling::Wasm &&
MF.getFunction().hasPersonalityFn() && MF.getFrameInfo().hasCalls();
}
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyLateEHPrepare.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyLateEHPrepare.cpp
index 8ac32f939c5f2..8082ded8a5a14 100644
--- a/llvm/lib/Target/WebAssembly/WebAssemblyLateEHPrepare.cpp
+++ b/llvm/lib/Target/WebAssembly/WebAssemblyLateEHPrepare.cpp
@@ -117,7 +117,7 @@ bool WebAssemblyLateEHPrepare::runOnMachineFunction(MachineFunction &MF) {
"********** Function: "
<< MF.getName() << '\n');
- if (MF.getTarget().getMCAsmInfo()->getExceptionHandlingType() !=
+ if (MF.getTarget().getMCAsmInfo().getExceptionHandlingType() !=
ExceptionHandling::Wasm)
return false;
diff --git a/llvm/lib/Target/X86/X86CodeGenPassBuilder.cpp b/llvm/lib/Target/X86/X86CodeGenPassBuilder.cpp
index 8cb397893f0b1..18901c65f1be0 100644
--- a/llvm/lib/Target/X86/X86CodeGenPassBuilder.cpp
+++ b/llvm/lib/Target/X86/X86CodeGenPassBuilder.cpp
@@ -196,7 +196,7 @@ void X86CodeGenPassBuilder::addPreEmitPass(PassManagerWrapper &PMW) const {
void X86CodeGenPassBuilder::addPreEmitPass2(PassManagerWrapper &PMW) const {
const Triple &TT = TM.getTargetTriple();
- const MCAsmInfo *MAI = TM.getMCAsmInfo();
+ const MCAsmInfo &MAI = TM.getMCAsmInfo();
// The X86 Speculative Execution Pass must run after all control
// flow graph modifying passes. As a result it was listed to run right before
@@ -223,7 +223,7 @@ void X86CodeGenPassBuilder::addPreEmitPass2(PassManagerWrapper &PMW) const {
// instructions.
if (!TT.isOSDarwin() &&
(!TT.isOSWindows() ||
- MAI->getExceptionHandlingType() == ExceptionHandling::DwarfCFI)) {
+ MAI.getExceptionHandlingType() == ExceptionHandling::DwarfCFI)) {
// TODO(boomanaiden154): Add CFInstrInserterPass here when it has been
// ported.
}
diff --git a/llvm/lib/Target/X86/X86FastISel.cpp b/llvm/lib/Target/X86/X86FastISel.cpp
index 2017897166f3c..d36a9581a3638 100644
--- a/llvm/lib/Target/X86/X86FastISel.cpp
+++ b/llvm/lib/Target/X86/X86FastISel.cpp
@@ -2635,7 +2635,7 @@ bool X86FastISel::fastLowerIntrinsicCall(const IntrinsicInst *II) {
return false;
case Intrinsic::frameaddress: {
MachineFunction *MF = FuncInfo.MF;
- if (MF->getTarget().getMCAsmInfo()->usesWindowsCFI())
+ if (MF->getTarget().getMCAsmInfo().usesWindowsCFI())
return false;
Type *RetTy = II->getCalledFunction()->getReturnType();
diff --git a/llvm/lib/Target/X86/X86FrameLowering.cpp b/llvm/lib/Target/X86/X86FrameLowering.cpp
index 438ba03554dfd..79ed59fcc1d34 100644
--- a/llvm/lib/Target/X86/X86FrameLowering.cpp
+++ b/llvm/lib/Target/X86/X86FrameLowering.cpp
@@ -1464,7 +1464,7 @@ bool X86FrameLowering::has128ByteRedZone(const MachineFunction &MF) const {
/// epilogue code patterns that can be described with WinCFI (.seh_*
/// directives).
bool X86FrameLowering::isWin64Prologue(const MachineFunction &MF) const {
- return MF.getTarget().getMCAsmInfo()->usesWindowsCFI();
+ return MF.getTarget().getMCAsmInfo().usesWindowsCFI();
}
bool X86FrameLowering::needsDwarfCFI(const MachineFunction &MF) const {
@@ -2327,7 +2327,7 @@ bool X86FrameLowering::canUseLEAForSPInEpilogue(
// This means that we can use LEA for SP in two situations:
// 1. We *aren't* using the Win64 ABI which means we are free to use LEA.
// 2. We *have* a frame pointer which means we are permitted to use LEA.
- return !MF.getTarget().getMCAsmInfo()->usesWindowsCFI() || hasFP(MF);
+ return !MF.getTarget().getMCAsmInfo().usesWindowsCFI() || hasFP(MF);
}
static bool isFuncletReturnInstr(MachineInstr &MI) {
@@ -2419,7 +2419,7 @@ void X86FrameLowering::emitEpilogue(MachineFunction &MF,
Register MachineFramePtr =
Is64BitILP32 ? Register(getX86SubSuperRegister(FramePtr, 64)) : FramePtr;
- bool IsWin64Prologue = MF.getTarget().getMCAsmInfo()->usesWindowsCFI();
+ bool IsWin64Prologue = MF.getTarget().getMCAsmInfo().usesWindowsCFI();
bool NeedsWin64CFI =
IsWin64Prologue && MF.getFunction().needsUnwindTableEntry();
bool IsFunclet = MBBI == MBB.end() ? false : isFuncletReturnInstr(*MBBI);
@@ -2683,7 +2683,7 @@ StackOffset X86FrameLowering::getFrameIndexReference(const MachineFunction &MF,
const X86MachineFunctionInfo *X86FI = MF.getInfo<X86MachineFunctionInfo>();
unsigned CSSize = X86FI->getCalleeSavedFrameSize();
uint64_t StackSize = MFI.getStackSize();
- bool IsWin64Prologue = MF.getTarget().getMCAsmInfo()->usesWindowsCFI();
+ bool IsWin64Prologue = MF.getTarget().getMCAsmInfo().usesWindowsCFI();
int64_t FPDelta = 0;
// In an x86 interrupt, remove the offset we added to account for the return
@@ -3823,7 +3823,7 @@ MachineBasicBlock::iterator X86FrameLowering::eliminateCallFramePseudoInstr(
Amount = alignTo(Amount, getStackAlign());
const Function &F = MF.getFunction();
- bool WindowsCFI = MF.getTarget().getMCAsmInfo()->usesWindowsCFI();
+ bool WindowsCFI = MF.getTarget().getMCAsmInfo().usesWindowsCFI();
bool DwarfCFI = !WindowsCFI && MF.needsFrameMoves();
// If we have any exception handlers in this function, and we adjust
@@ -4230,7 +4230,7 @@ void X86FrameLowering::processFunctionBeforeFrameFinalized(
// If we are using Windows x64 CFI, ensure that the stack is always 8 byte
// aligned. The format doesn't support misaligned stack adjustments.
- if (MF.getTarget().getMCAsmInfo()->usesWindowsCFI())
+ if (MF.getTarget().getMCAsmInfo().usesWindowsCFI())
MF.getFrameInfo().ensureMaxAlignment(Align(SlotSize));
// If this function isn't doing Win64-style C++ EH, we don't need to do
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index ea31ee666559b..90071d2e90671 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -28219,7 +28219,7 @@ bool X86::isExtendedSwiftAsyncFrameSupported(const X86Subtarget &Subtarget,
return false;
// 64-bit targets support extended Swift async frame setup,
// except for targets that use the windows 64 prologue.
- return !MF.getTarget().getMCAsmInfo()->usesWindowsCFI();
+ return !MF.getTarget().getMCAsmInfo().usesWindowsCFI();
}
static SDValue LowerINTRINSIC_W_CHAIN(SDValue Op, const X86Subtarget &Subtarget,
@@ -28766,7 +28766,7 @@ SDValue X86TargetLowering::LowerFRAMEADDR(SDValue Op, SelectionDAG &DAG) const {
MFI.setFrameAddressIsTaken(true);
- if (MF.getTarget().getMCAsmInfo()->usesWindowsCFI()) {
+ if (MF.getTarget().getMCAsmInfo().usesWindowsCFI()) {
// Depth > 0 makes no sense on targets which use Windows unwind codes. It
// is not possible to crawl up the stack without looking at the unwind codes
// simultaneously.
diff --git a/llvm/lib/Target/X86/X86InstrInfo.cpp b/llvm/lib/Target/X86/X86InstrInfo.cpp
index 8e68b0876cb73..5d4db845c5030 100644
--- a/llvm/lib/Target/X86/X86InstrInfo.cpp
+++ b/llvm/lib/Target/X86/X86InstrInfo.cpp
@@ -6028,7 +6028,7 @@ static bool ExpandMOVImmSExti8(MachineInstrBuilder &MIB,
// Build CFI if necessary.
MachineFunction &MF = *MBB.getParent();
const X86FrameLowering *TFL = Subtarget.getFrameLowering();
- bool IsWin64Prologue = MF.getTarget().getMCAsmInfo()->usesWindowsCFI();
+ bool IsWin64Prologue = MF.getTarget().getMCAsmInfo().usesWindowsCFI();
bool NeedsDwarfCFI = !IsWin64Prologue && MF.needsFrameMoves();
bool EmitCFI = !TFL->hasFP(MF) && NeedsDwarfCFI;
if (EmitCFI) {
diff --git a/llvm/lib/Target/X86/X86MCInstLower.cpp b/llvm/lib/Target/X86/X86MCInstLower.cpp
index 04d0fe9935509..960027492ae1f 100644
--- a/llvm/lib/Target/X86/X86MCInstLower.cpp
+++ b/llvm/lib/Target/X86/X86MCInstLower.cpp
@@ -145,7 +145,7 @@ void X86AsmPrinter::EmitAndCountInstruction(MCInst &Inst) {
X86MCInstLower::X86MCInstLower(const MachineFunction &mf,
X86AsmPrinter &asmprinter)
: Ctx(asmprinter.OutContext), MF(mf), TM(mf.getTarget()),
- MAI(*TM.getMCAsmInfo()), AsmPrinter(asmprinter) {}
+ MAI(TM.getMCAsmInfo()), AsmPrinter(asmprinter) {}
MachineModuleInfoMachO &X86MCInstLower::getMachOMMI() const {
return AsmPrinter.MMI->getObjFileInfo<MachineModuleInfoMachO>();
diff --git a/llvm/lib/Target/X86/X86TargetMachine.cpp b/llvm/lib/Target/X86/X86TargetMachine.cpp
index 1c3bb8baa8789..6de566b39d045 100644
--- a/llvm/lib/Target/X86/X86TargetMachine.cpp
+++ b/llvm/lib/Target/X86/X86TargetMachine.cpp
@@ -580,7 +580,7 @@ void X86PassConfig::addPreEmitPass() {
void X86PassConfig::addPreEmitPass2() {
const Triple &TT = TM->getTargetTriple();
- const MCAsmInfo *MAI = TM->getMCAsmInfo();
+ const MCAsmInfo &MAI = TM->getMCAsmInfo();
// The X86 Speculative Execution Pass must run after all control
// flow graph modifying passes. As a result it was listed to run right before
@@ -605,7 +605,7 @@ void X86PassConfig::addPreEmitPass2() {
// instructions.
if (!TT.isOSDarwin() &&
(!TT.isOSWindows() ||
- MAI->getExceptionHandlingType() == ExceptionHandling::DwarfCFI))
+ MAI.getExceptionHandlingType() == ExceptionHandling::DwarfCFI))
addPass(createCFIInstrInserter());
if (TT.isOSWindows()) {
diff --git a/llvm/lib/Target/Xtensa/XtensaInstrInfo.cpp b/llvm/lib/Target/Xtensa/XtensaInstrInfo.cpp
index 36ffb921d7c91..e04cd222d5702 100644
--- a/llvm/lib/Target/Xtensa/XtensaInstrInfo.cpp
+++ b/llvm/lib/Target/Xtensa/XtensaInstrInfo.cpp
@@ -221,7 +221,7 @@ unsigned XtensaInstrInfo::getInstSizeInBytes(const MachineInstr &MI) const {
case TargetOpcode::INLINEASM: { // Inline Asm: Variable size.
const MachineFunction *MF = MI.getParent()->getParent();
const char *AsmStr = MI.getOperand(0).getSymbolName();
- return getInlineAsmLength(AsmStr, *MF->getTarget().getMCAsmInfo());
+ return getInlineAsmLength(AsmStr, MF->getTarget().getMCAsmInfo());
}
case TargetOpcode::BUNDLE:
return getInstBundleSize(MI);
diff --git a/llvm/tools/llvm-cfi-verify/lib/FileAnalysis.cpp b/llvm/tools/llvm-cfi-verify/lib/FileAnalysis.cpp
index 4209e235e165b..e49c93aa60480 100644
--- a/llvm/tools/llvm-cfi-verify/lib/FileAnalysis.cpp
+++ b/llvm/tools/llvm-cfi-verify/lib/FileAnalysis.cpp
@@ -412,8 +412,8 @@ Error FileAnalysis::initialiseDisassemblyMembers() {
if (!MII)
return make_error<UnsupportedDisassembly>("Failed to initialise MII.");
- Context.reset(new MCContext(Triple(TripleName), AsmInfo.get(),
- RegisterInfo.get(), SubtargetInfo.get()));
+ Context.reset(new MCContext(Triple(TripleName), *AsmInfo, RegisterInfo.get(),
+ SubtargetInfo.get()));
Disassembler.reset(
ObjectTarget->createMCDisassembler(*SubtargetInfo, *Context));
diff --git a/llvm/tools/llvm-dwp/llvm-dwp.cpp b/llvm/tools/llvm-dwp/llvm-dwp.cpp
index c0131111ed22d..c30f6a51f6c5b 100644
--- a/llvm/tools/llvm-dwp/llvm-dwp.cpp
+++ b/llvm/tools/llvm-dwp/llvm-dwp.cpp
@@ -288,7 +288,7 @@ int llvm_dwp_main(int argc, char **argv, const llvm::ToolContext &) {
if (!MSTI)
return error("no subtarget info for target " + TripleName, Context);
- MCContext MC(*ErrOrTriple, MAI.get(), MRI.get(), MSTI.get());
+ MCContext MC(*ErrOrTriple, *MAI, MRI.get(), MSTI.get());
std::unique_ptr<MCObjectFileInfo> MOFI(
TheTarget->createMCObjectFileInfo(MC, /*PIC=*/false));
MC.setObjectFileInfo(MOFI.get());
diff --git a/llvm/tools/llvm-exegesis/lib/DisassemblerHelper.cpp b/llvm/tools/llvm-exegesis/lib/DisassemblerHelper.cpp
index caa66b1be2520..2f7a60221563e 100644
--- a/llvm/tools/llvm-exegesis/lib/DisassemblerHelper.cpp
+++ b/llvm/tools/llvm-exegesis/lib/DisassemblerHelper.cpp
@@ -23,7 +23,7 @@ DisassemblerHelper::DisassemblerHelper(const LLVMState &State) : State_(State) {
State_.getRegInfo()));
Context_ = std::make_unique<MCContext>(
- Triple, AsmInfo_.get(), &State_.getRegInfo(), &State_.getSubtargetInfo());
+ Triple, *AsmInfo_, &State_.getRegInfo(), &State_.getSubtargetInfo());
Disasm_.reset(TM.getTarget().createMCDisassembler(State_.getSubtargetInfo(),
*Context_));
assert(Disasm_ && "cannot create MCDisassembler. missing call to "
diff --git a/llvm/tools/llvm-exegesis/lib/SnippetFile.cpp b/llvm/tools/llvm-exegesis/lib/SnippetFile.cpp
index 2f32b23aea4e1..25345d9777bd8 100644
--- a/llvm/tools/llvm-exegesis/lib/SnippetFile.cpp
+++ b/llvm/tools/llvm-exegesis/lib/SnippetFile.cpp
@@ -256,8 +256,8 @@ Expected<std::vector<BenchmarkCode>> readSnippets(const LLVMState &State,
formatted_raw_ostream InstPrinterOStream(ErrorStream);
const std::unique_ptr<MCInstPrinter> InstPrinter(
TM.getTarget().createMCInstPrinter(
- TM.getTargetTriple(), TM.getMCAsmInfo()->getAssemblerDialect(),
- *TM.getMCAsmInfo(), *TM.getMCInstrInfo(), *TM.getMCRegisterInfo()));
+ TM.getTargetTriple(), TM.getMCAsmInfo().getAssemblerDialect(),
+ TM.getMCAsmInfo(), *TM.getMCInstrInfo(), *TM.getMCRegisterInfo()));
// The following call will take care of calling Streamer.setTargetStreamer.
TM.getTarget().createAsmTargetStreamer(Streamer, InstPrinterOStream,
InstPrinter.get());
@@ -265,7 +265,7 @@ Expected<std::vector<BenchmarkCode>> readSnippets(const LLVMState &State,
return make_error<Failure>("cannot create target asm streamer");
const std::unique_ptr<MCAsmParser> AsmParser(
- createMCAsmParser(SM, Context, Streamer, *TM.getMCAsmInfo()));
+ createMCAsmParser(SM, Context, Streamer, TM.getMCAsmInfo()));
if (!AsmParser)
return make_error<Failure>("cannot create asm parser");
AsmParser->getLexer().setCommentConsumer(&Streamer);
diff --git a/llvm/tools/llvm-jitlink/llvm-jitlink.cpp b/llvm/tools/llvm-jitlink/llvm-jitlink.cpp
index 945939967087a..8ec31fe2b98d3 100644
--- a/llvm/tools/llvm-jitlink/llvm-jitlink.cpp
+++ b/llvm/tools/llvm-jitlink/llvm-jitlink.cpp
@@ -2753,8 +2753,8 @@ getTargetInfo(const Triple &TT,
make_error<StringError>("Unable to create target asm info " + TT.str(),
inconvertibleErrorCode()));
- auto Ctx = std::make_unique<MCContext>(Triple(TT.str()), MAI.get(), MRI.get(),
- STI.get());
+ auto Ctx =
+ std::make_unique<MCContext>(Triple(TT.str()), *MAI, MRI.get(), STI.get());
std::unique_ptr<MCDisassembler> Disassembler(
TheTarget->createMCDisassembler(*STI, *Ctx));
diff --git a/llvm/tools/llvm-mc-assemble-fuzzer/llvm-mc-assemble-fuzzer.cpp b/llvm/tools/llvm-mc-assemble-fuzzer/llvm-mc-assemble-fuzzer.cpp
index 794e3ce4e7534..538b0c1b9cdcf 100644
--- a/llvm/tools/llvm-mc-assemble-fuzzer/llvm-mc-assemble-fuzzer.cpp
+++ b/llvm/tools/llvm-mc-assemble-fuzzer/llvm-mc-assemble-fuzzer.cpp
@@ -176,7 +176,7 @@ int AssembleOneInput(const uint8_t *Data, size_t Size) {
abort();
}
- MCContext Ctx(TheTriple, MAI.get(), MRI.get(), STI.get(), &SrcMgr);
+ MCContext Ctx(TheTriple, *MAI, MRI.get(), STI.get(), &SrcMgr);
std::unique_ptr<MCObjectFileInfo> MOFI(
TheTarget->createMCObjectFileInfo(Ctx, /*PIC=*/false));
Ctx.setObjectFileInfo(MOFI.get());
diff --git a/llvm/tools/llvm-mc/llvm-mc.cpp b/llvm/tools/llvm-mc/llvm-mc.cpp
index 0ffe8e87672ec..ee6bc33e2c033 100644
--- a/llvm/tools/llvm-mc/llvm-mc.cpp
+++ b/llvm/tools/llvm-mc/llvm-mc.cpp
@@ -491,7 +491,7 @@ int main(int argc, char **argv) {
// FIXME: This is not pretty. MCContext has a ptr to MCObjectFileInfo and
// MCObjectFileInfo needs a MCContext reference in order to initialize itself.
- MCContext Ctx(TheTriple, MAI.get(), MRI.get(), STI.get(), &SrcMgr);
+ MCContext Ctx(TheTriple, *MAI, MRI.get(), STI.get(), &SrcMgr);
std::unique_ptr<MCObjectFileInfo> MOFI(
TheTarget->createMCObjectFileInfo(Ctx, PIC, LargeCodeModel));
Ctx.setObjectFileInfo(MOFI.get());
diff --git a/llvm/tools/llvm-mca/llvm-mca.cpp b/llvm/tools/llvm-mca/llvm-mca.cpp
index 2ea193da48768..b839f538d321c 100644
--- a/llvm/tools/llvm-mca/llvm-mca.cpp
+++ b/llvm/tools/llvm-mca/llvm-mca.cpp
@@ -486,7 +486,7 @@ int main(int argc, char **argv) {
}
// Parse the input and create CodeRegions that llvm-mca can analyze.
- MCContext ACtx(TheTriple, MAI.get(), MRI.get(), STI.get(), &SrcMgr);
+ MCContext ACtx(TheTriple, *MAI, MRI.get(), STI.get(), &SrcMgr);
std::unique_ptr<MCObjectFileInfo> AMOFI(
TheTarget->createMCObjectFileInfo(ACtx, /*PIC=*/false));
ACtx.setObjectFileInfo(AMOFI.get());
@@ -534,7 +534,7 @@ int main(int argc, char **argv) {
// Parse the input and create InstrumentRegion that llvm-mca
// can use to improve analysis.
- MCContext ICtx(TheTriple, MAI.get(), MRI.get(), STI.get(), &SrcMgr);
+ MCContext ICtx(TheTriple, *MAI, MRI.get(), STI.get(), &SrcMgr);
std::unique_ptr<MCObjectFileInfo> IMOFI(
TheTarget->createMCObjectFileInfo(ICtx, /*PIC=*/false));
ICtx.setObjectFileInfo(IMOFI.get());
diff --git a/llvm/tools/llvm-ml/Disassembler.cpp b/llvm/tools/llvm-ml/Disassembler.cpp
index 330f54e9242cf..5538b606d9025 100644
--- a/llvm/tools/llvm-ml/Disassembler.cpp
+++ b/llvm/tools/llvm-ml/Disassembler.cpp
@@ -143,7 +143,7 @@ int Disassembler::disassemble(const Target &T, const std::string &TripleName,
}
// Set up the MCContext for creating symbols and MCExpr's.
- MCContext Ctx(Triple(TripleName), MAI.get(), MRI.get(), &STI);
+ MCContext Ctx(Triple(TripleName), *MAI, MRI.get(), &STI);
std::unique_ptr<const MCDisassembler> DisAsm(
T.createMCDisassembler(STI, Ctx));
diff --git a/llvm/tools/llvm-ml/llvm-ml.cpp b/llvm/tools/llvm-ml/llvm-ml.cpp
index a75d831d586b8..170394122b6c2 100644
--- a/llvm/tools/llvm-ml/llvm-ml.cpp
+++ b/llvm/tools/llvm-ml/llvm-ml.cpp
@@ -334,7 +334,7 @@ int llvm_ml_main(int Argc, char **Argv, const llvm::ToolContext &) {
// FIXME: This is not pretty. MCContext has a ptr to MCObjectFileInfo and
// MCObjectFileInfo needs a MCContext reference in order to initialize itself.
- MCContext Ctx(TheTriple, MAI.get(), MRI.get(), STI.get(), &SrcMgr);
+ MCContext Ctx(TheTriple, *MAI, MRI.get(), STI.get(), &SrcMgr);
std::unique_ptr<MCObjectFileInfo> MOFI(TheTarget->createMCObjectFileInfo(
Ctx, /*PIC=*/false, /*LargeCodeModel=*/true));
Ctx.setObjectFileInfo(MOFI.get());
diff --git a/llvm/tools/llvm-objdump/MachODump.cpp b/llvm/tools/llvm-objdump/MachODump.cpp
index 25fbd4d60ecc3..2aa7e47737077 100644
--- a/llvm/tools/llvm-objdump/MachODump.cpp
+++ b/llvm/tools/llvm-objdump/MachODump.cpp
@@ -7328,7 +7328,7 @@ static void DisassembleMachO(StringRef Filename, MachOObjectFile *MachOOF,
std::unique_ptr<const MCSubtargetInfo> STI(
TheTarget->createMCSubtargetInfo(TheTriple, MachOMCPU, FeaturesStr));
CHECK_TARGET_INFO_CREATION(STI);
- MCContext Ctx(TheTriple, AsmInfo.get(), MRI.get(), STI.get());
+ MCContext Ctx(TheTriple, *AsmInfo, MRI.get(), STI.get());
std::unique_ptr<MCDisassembler> DisAsm(
TheTarget->createMCDisassembler(*STI, Ctx));
CHECK_TARGET_INFO_CREATION(DisAsm);
@@ -7382,8 +7382,8 @@ static void DisassembleMachO(StringRef Filename, MachOObjectFile *MachOOF,
ThumbSTI.reset(ThumbTarget->createMCSubtargetInfo(ThumbTriple, MachOMCPU,
FeaturesStr));
CHECK_THUMB_TARGET_INFO_CREATION(ThumbSTI);
- ThumbCtx.reset(new MCContext(ThumbTriple, ThumbAsmInfo.get(),
- ThumbMRI.get(), ThumbSTI.get()));
+ ThumbCtx.reset(new MCContext(ThumbTriple, *ThumbAsmInfo, ThumbMRI.get(),
+ ThumbSTI.get()));
ThumbDisAsm.reset(ThumbTarget->createMCDisassembler(*ThumbSTI, *ThumbCtx));
CHECK_THUMB_TARGET_INFO_CREATION(ThumbDisAsm);
MCContext *PtrThumbCtx = ThumbCtx.get();
diff --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp
index a8a856e79dff8..a4ac1fd132dc8 100644
--- a/llvm/tools/llvm-objdump/llvm-objdump.cpp
+++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp
@@ -1186,8 +1186,8 @@ DisassemblerTarget::DisassemblerTarget(const Target *TheTarget, ObjectFile &Obj,
if (!InstrInfo)
reportError(Obj.getFileName(),
"no instruction info for target " + TripleName);
- Context = std::make_shared<MCContext>(
- TheTriple, AsmInfo.get(), RegisterInfo.get(), SubtargetInfo.get());
+ Context = std::make_shared<MCContext>(TheTriple, *AsmInfo, RegisterInfo.get(),
+ SubtargetInfo.get());
// FIXME: for now initialize MCObjectFileInfo with default values
ObjectFileInfo.reset(
diff --git a/llvm/tools/llvm-profgen/ProfiledBinary.cpp b/llvm/tools/llvm-profgen/ProfiledBinary.cpp
index 1e61a2864c4e5..6d355b6141e2c 100644
--- a/llvm/tools/llvm-profgen/ProfiledBinary.cpp
+++ b/llvm/tools/llvm-profgen/ProfiledBinary.cpp
@@ -753,7 +753,7 @@ void ProfiledBinary::setUpDisassembler(const ObjectFile *Obj) {
exitWithError("no instruction info for target " + TheTriple.str(),
FileName);
- MCContext Ctx(TheTriple, AsmInfo.get(), MRI.get(), STI.get());
+ MCContext Ctx(TheTriple, *AsmInfo, MRI.get(), STI.get());
std::unique_ptr<MCObjectFileInfo> MOFI(
TheTarget->createMCObjectFileInfo(Ctx, /*PIC=*/false));
Ctx.setObjectFileInfo(MOFI.get());
diff --git a/llvm/tools/llvm-rtdyld/llvm-rtdyld.cpp b/llvm/tools/llvm-rtdyld/llvm-rtdyld.cpp
index d13b89e667bf5..9eb4a7b84e1f1 100644
--- a/llvm/tools/llvm-rtdyld/llvm-rtdyld.cpp
+++ b/llvm/tools/llvm-rtdyld/llvm-rtdyld.cpp
@@ -805,7 +805,7 @@ static int linkAndVerify() {
if (!MAI)
ErrorAndExit("Unable to create target asm info!");
- MCContext Ctx(TheTriple, MAI.get(), MRI.get(), STI.get());
+ MCContext Ctx(TheTriple, *MAI, MRI.get(), STI.get());
std::unique_ptr<MCDisassembler> Disassembler(
TheTarget->createMCDisassembler(*STI, Ctx));
diff --git a/llvm/tools/sancov/sancov.cpp b/llvm/tools/sancov/sancov.cpp
index 45caa5f8c9933..d8135e6a2927d 100644
--- a/llvm/tools/sancov/sancov.cpp
+++ b/llvm/tools/sancov/sancov.cpp
@@ -769,7 +769,7 @@ static void getObjectCoveragePoints(const object::ObjectFile &O,
TheTarget->createMCAsmInfo(*MRI, TheTriple, MCOptions));
failIfEmpty(AsmInfo, "no asm info for target " + TripleName);
- MCContext Ctx(TheTriple, AsmInfo.get(), MRI.get(), STI.get());
+ MCContext Ctx(TheTriple, *AsmInfo, MRI.get(), STI.get());
std::unique_ptr<MCDisassembler> DisAsm(
TheTarget->createMCDisassembler(*STI, Ctx));
failIfEmpty(DisAsm, "no disassembler info for target " + TripleName);
diff --git a/llvm/unittests/CodeGen/MachineInstrTest.cpp b/llvm/unittests/CodeGen/MachineInstrTest.cpp
index 0698d9182bcc8..368596e68d67b 100644
--- a/llvm/unittests/CodeGen/MachineInstrTest.cpp
+++ b/llvm/unittests/CodeGen/MachineInstrTest.cpp
@@ -39,7 +39,7 @@ namespace {
MCTargetOptions MCOptions;
-std::unique_ptr<MCContext> createMCContext(MCAsmInfo *AsmInfo) {
+std::unique_ptr<MCContext> createMCContext(const MCAsmInfo &AsmInfo) {
Triple TheTriple(/*ArchStr=*/"", /*VendorStr=*/"", /*OSStr=*/"",
/*EnvironmentStr=*/"elf");
return std::make_unique<MCContext>(TheTriple, AsmInfo, nullptr, nullptr,
@@ -271,7 +271,7 @@ TEST(MachineInstrExtraInfo, AddExtraInfo) {
auto MI = MF->CreateMachineInstr(MCID, DebugLoc());
auto MAI = MCAsmInfo(MCOptions);
- auto MC = createMCContext(&MAI);
+ auto MC = createMCContext(MAI);
auto MMO = MF->getMachineMemOperand(MachinePointerInfo(),
MachineMemOperand::MOLoad, 8, Align(8));
SmallVector<MachineMemOperand *, 2> MMOs;
@@ -352,7 +352,7 @@ TEST(MachineInstrExtraInfo, ChangeExtraInfo) {
auto MI = MF->CreateMachineInstr(MCID, DebugLoc());
auto MAI = MCAsmInfo(MCOptions);
- auto MC = createMCContext(&MAI);
+ auto MC = createMCContext(MAI);
auto MMO = MF->getMachineMemOperand(MachinePointerInfo(),
MachineMemOperand::MOLoad, 8, Align(8));
SmallVector<MachineMemOperand *, 2> MMOs;
@@ -407,7 +407,7 @@ TEST(MachineInstrExtraInfo, RemoveExtraInfo) {
auto MI = MF->CreateMachineInstr(MCID, DebugLoc());
auto MAI = MCAsmInfo(MCOptions);
- auto MC = createMCContext(&MAI);
+ auto MC = createMCContext(MAI);
auto MMO = MF->getMachineMemOperand(MachinePointerInfo(),
MachineMemOperand::MOLoad, 8, Align(8));
SmallVector<MachineMemOperand *, 2> MMOs;
diff --git a/llvm/unittests/CodeGen/MachineOperandTest.cpp b/llvm/unittests/CodeGen/MachineOperandTest.cpp
index 3c66aad3a1873..d5959843ac0cb 100644
--- a/llvm/unittests/CodeGen/MachineOperandTest.cpp
+++ b/llvm/unittests/CodeGen/MachineOperandTest.cpp
@@ -352,7 +352,7 @@ TEST(MachineOperandTest, PrintMCSymbol) {
MCTargetOptions MCOptions;
MCAsmInfo MAI(MCOptions);
Triple T = Triple("unknown-unknown-unknown");
- MCContext Ctx(T, &MAI, /*MRI=*/nullptr, /*MSTI=*/nullptr);
+ MCContext Ctx(T, MAI, /*MRI=*/nullptr, /*MSTI=*/nullptr);
MCSymbol *Sym = Ctx.getOrCreateSymbol("foo");
// Create a MachineOperand with a metadata and print it.
diff --git a/llvm/unittests/DebugInfo/DWARF/DWARFExpressionCopyBytesTest.cpp b/llvm/unittests/DebugInfo/DWARF/DWARFExpressionCopyBytesTest.cpp
index 4c277ca0bc8bc..0696d49523ff4 100644
--- a/llvm/unittests/DebugInfo/DWARF/DWARFExpressionCopyBytesTest.cpp
+++ b/llvm/unittests/DebugInfo/DWARF/DWARFExpressionCopyBytesTest.cpp
@@ -101,9 +101,8 @@ class DWARFExpressionCopyBytesTest : public ::testing::Test {
DWARFExpressionCopyBytesTest::StreamerContext
DWARFExpressionCopyBytesTest::createStreamer(raw_pwrite_stream &OS) {
StreamerContext Res;
- Res.Ctx =
- std::make_unique<MCContext>(Triple(TripleName), MAI.get(), MRI.get(),
- /*MSTI=*/nullptr);
+ Res.Ctx = std::make_unique<MCContext>(Triple(TripleName), *MAI, MRI.get(),
+ /*MSTI=*/nullptr);
Res.MOFI.reset(TheTarget->createMCObjectFileInfo(*Res.Ctx,
/*PIC=*/false));
Res.Ctx->setObjectFileInfo(Res.MOFI.get());
diff --git a/llvm/unittests/DebugInfo/DWARF/DwarfGenerator.cpp b/llvm/unittests/DebugInfo/DWARF/DwarfGenerator.cpp
index 71f90a8d27a8f..5ca475991fb8c 100644
--- a/llvm/unittests/DebugInfo/DWARF/DwarfGenerator.cpp
+++ b/llvm/unittests/DebugInfo/DWARF/DwarfGenerator.cpp
@@ -488,7 +488,7 @@ llvm::Error dwarfgen::Generator::init(Triple TheTriple, uint16_t V) {
return make_error<StringError>("no target machine for target " + TripleName,
inconvertibleErrorCode());
- MC.reset(new MCContext(TheTriple, MAI.get(), MRI.get(), MSTI.get()));
+ MC.reset(new MCContext(TheTriple, *MAI, MRI.get(), MSTI.get()));
TLOF = TM->getObjFileLowering();
TLOF->Initialize(*MC, *TM);
MC->setObjectFileInfo(TLOF);
diff --git a/llvm/unittests/MC/AMDGPU/Disassembler.cpp b/llvm/unittests/MC/AMDGPU/Disassembler.cpp
index f824b0791153d..6535c2acb3c9d 100644
--- a/llvm/unittests/MC/AMDGPU/Disassembler.cpp
+++ b/llvm/unittests/MC/AMDGPU/Disassembler.cpp
@@ -85,7 +85,7 @@ TEST(AMDGPUDisassembler, MultiDisassembler) {
std::unique_ptr<const MCInstrInfo> MII(TheTarget->createMCInstrInfo());
std::unique_ptr<MCSubtargetInfo> STI(
TheTarget->createMCSubtargetInfo(TT, CPUName, ""));
- auto Ctx = std::make_unique<MCContext>(TT, MAI.get(), MRI.get(), STI.get());
+ auto Ctx = std::make_unique<MCContext>(TT, *MAI, MRI.get(), STI.get());
int AsmPrinterVariant = MAI->getAssemblerDialect();
std::unique_ptr<MCInstPrinter> IP(
@@ -157,7 +157,7 @@ TEST(AMDGPUDisassembler, UCVersionOverride) {
std::unique_ptr<const MCInstrInfo> MII(TheTarget->createMCInstrInfo());
std::unique_ptr<MCSubtargetInfo> STI(
TheTarget->createMCSubtargetInfo(TT, CPUName, ""));
- auto Ctx = std::make_unique<MCContext>(TT, MAI.get(), MRI.get(), STI.get());
+ auto Ctx = std::make_unique<MCContext>(TT, *MAI, MRI.get(), STI.get());
// Define custom UC_VERSION before initializing disassembler.
const uint8_t UC_VERSION_GFX10_DEFAULT = 0x04;
diff --git a/llvm/unittests/MC/DwarfDebugFrameCIE.cpp b/llvm/unittests/MC/DwarfDebugFrameCIE.cpp
index a76191db93169..9e36f5ae09379 100644
--- a/llvm/unittests/MC/DwarfDebugFrameCIE.cpp
+++ b/llvm/unittests/MC/DwarfDebugFrameCIE.cpp
@@ -75,7 +75,7 @@ class DwarfDebugFrameCIE : public ::testing::Test {
StreamerContext createStreamer(raw_pwrite_stream &OS) {
StreamerContext Res;
- Res.Ctx = std::make_unique<MCContext>(TT, MAI.get(), MRI.get(),
+ Res.Ctx = std::make_unique<MCContext>(TT, *MAI, MRI.get(),
/*MSTI=*/nullptr);
Res.MOFI.reset(TheTarget->createMCObjectFileInfo(*Res.Ctx, /*PIC=*/false));
Res.Ctx->setObjectFileInfo(Res.MOFI.get());
diff --git a/llvm/unittests/MC/DwarfLineTableHeaders.cpp b/llvm/unittests/MC/DwarfLineTableHeaders.cpp
index a0d16a926a582..f95a46d0c1017 100644
--- a/llvm/unittests/MC/DwarfLineTableHeaders.cpp
+++ b/llvm/unittests/MC/DwarfLineTableHeaders.cpp
@@ -70,7 +70,7 @@ class DwarfLineTableHeaders : public ::testing::Test {
/// Create all data structures necessary to operate an assembler
StreamerContext createStreamer(raw_pwrite_stream &OS) {
StreamerContext Res;
- Res.Ctx = std::make_unique<MCContext>(TT, MAI.get(), MRI.get(),
+ Res.Ctx = std::make_unique<MCContext>(TT, *MAI, MRI.get(),
/*MSTI=*/nullptr);
Res.MOFI.reset(TheTarget->createMCObjectFileInfo(*Res.Ctx,
/*PIC=*/false));
diff --git a/llvm/unittests/MC/DwarfLineTables.cpp b/llvm/unittests/MC/DwarfLineTables.cpp
index 479b4a896dcd0..bff7d23330755 100644
--- a/llvm/unittests/MC/DwarfLineTables.cpp
+++ b/llvm/unittests/MC/DwarfLineTables.cpp
@@ -42,7 +42,7 @@ struct Context {
MRI.reset(TheTarget->createMCRegInfo(TT));
MCTargetOptions MCOptions;
MAI.reset(TheTarget->createMCAsmInfo(*MRI, TT, MCOptions));
- Ctx = std::make_unique<MCContext>(TT, MAI.get(), MRI.get(),
+ Ctx = std::make_unique<MCContext>(TT, *MAI, MRI.get(),
/*MSTI=*/nullptr);
}
diff --git a/llvm/unittests/MC/SystemZ/SystemZAsmLexerTest.cpp b/llvm/unittests/MC/SystemZ/SystemZAsmLexerTest.cpp
index 08ed15aef079a..41b591158e6ea 100644
--- a/llvm/unittests/MC/SystemZ/SystemZAsmLexerTest.cpp
+++ b/llvm/unittests/MC/SystemZ/SystemZAsmLexerTest.cpp
@@ -81,7 +81,7 @@ class SystemZAsmLexerTest : public ::testing::Test {
SrcMgr.AddNewSourceBuffer(std::move(Buffer), SMLoc());
EXPECT_EQ(Buffer, nullptr);
- Ctx.reset(new MCContext(Triple, MAI.get(), MRI.get(), STI.get(), &SrcMgr));
+ Ctx.reset(new MCContext(Triple, *MAI, MRI.get(), STI.get(), &SrcMgr));
MOFI.reset(TheTarget->createMCObjectFileInfo(*Ctx, /*PIC=*/false,
/*LargeCodeModel=*/false));
Ctx->setObjectFileInfo(MOFI.get());
diff --git a/llvm/unittests/MC/SystemZ/SystemZMCDisassemblerTest.cpp b/llvm/unittests/MC/SystemZ/SystemZMCDisassemblerTest.cpp
index 406dfdb589345..8ab7a6b53fb3a 100644
--- a/llvm/unittests/MC/SystemZ/SystemZMCDisassemblerTest.cpp
+++ b/llvm/unittests/MC/SystemZ/SystemZMCDisassemblerTest.cpp
@@ -46,7 +46,7 @@ struct Context {
MRI.reset(TheTarget->createMCRegInfo(TT));
MAI.reset(TheTarget->createMCAsmInfo(*MRI, TT, MCOptions));
STI.reset(TheTarget->createMCSubtargetInfo(TT, "", ""));
- Ctx = std::make_unique<MCContext>(TT, MAI.get(), MRI.get(), STI.get());
+ Ctx = std::make_unique<MCContext>(TT, *MAI, MRI.get(), STI.get());
DisAsm.reset(TheTarget->createMCDisassembler(*STI, *Ctx));
}
diff --git a/llvm/unittests/MC/X86/X86MCDisassemblerTest.cpp b/llvm/unittests/MC/X86/X86MCDisassemblerTest.cpp
index 0f236bcb5308a..8cf0241333d43 100644
--- a/llvm/unittests/MC/X86/X86MCDisassemblerTest.cpp
+++ b/llvm/unittests/MC/X86/X86MCDisassemblerTest.cpp
@@ -46,8 +46,7 @@ struct Context {
MRI.reset(TheTarget->createMCRegInfo(TheTriple));
MAI.reset(TheTarget->createMCAsmInfo(*MRI, TheTriple, MCOptions));
STI.reset(TheTarget->createMCSubtargetInfo(TheTriple, "", ""));
- Ctx =
- std::make_unique<MCContext>(TheTriple, MAI.get(), MRI.get(), STI.get());
+ Ctx = std::make_unique<MCContext>(TheTriple, *MAI, MRI.get(), STI.get());
DisAsm.reset(TheTarget->createMCDisassembler(*STI, *Ctx));
}
diff --git a/llvm/unittests/Target/AArch64/AArch64InstPrinterTest.cpp b/llvm/unittests/Target/AArch64/AArch64InstPrinterTest.cpp
index a0692d5a718d6..b4237c656bf6a 100644
--- a/llvm/unittests/Target/AArch64/AArch64InstPrinterTest.cpp
+++ b/llvm/unittests/Target/AArch64/AArch64InstPrinterTest.cpp
@@ -40,7 +40,7 @@ static std::string AArch64InstPrinterTestPrintAlignedLabel(uint64_t value) {
MCRegisterInfo MRI;
MCSubtargetInfo STI(Triple(""), "", "", "", {}, {}, {}, nullptr, nullptr,
nullptr, nullptr, nullptr, nullptr);
- MCContext Ctx(Triple(""), &MAI, &MRI, &STI);
+ MCContext Ctx(Triple(""), MAI, &MRI, &STI);
MCInst MI;
MI.addOperand(MCOperand::createExpr(MCConstantExpr::create(value, Ctx)));
diff --git a/llvm/unittests/tools/llvm-mca/MCATestBase.cpp b/llvm/unittests/tools/llvm-mca/MCATestBase.cpp
index c47ac4828fc40..8a07eff43b560 100644
--- a/llvm/unittests/tools/llvm-mca/MCATestBase.cpp
+++ b/llvm/unittests/tools/llvm-mca/MCATestBase.cpp
@@ -42,7 +42,7 @@ void MCATestBase::SetUp() {
MAI.reset(TheTarget->createMCAsmInfo(*MRI, TheTriple, MCOptions));
ASSERT_TRUE(MAI);
- Ctx = std::make_unique<MCContext>(TheTriple, MAI.get(), MRI.get(), STI.get());
+ Ctx = std::make_unique<MCContext>(TheTriple, *MAI, MRI.get(), STI.get());
MOFI.reset(TheTarget->createMCObjectFileInfo(*Ctx, /*PIC=*/false));
Ctx->setObjectFileInfo(MOFI.get());
diff --git a/mlir/lib/Target/LLVM/ROCDL/Target.cpp b/mlir/lib/Target/LLVM/ROCDL/Target.cpp
index 25ed2d143e585..a9a515b9e4329 100644
--- a/mlir/lib/Target/LLVM/ROCDL/Target.cpp
+++ b/mlir/lib/Target/LLVM/ROCDL/Target.cpp
@@ -303,7 +303,7 @@ mlir::ROCDL::assembleIsa(StringRef isa, StringRef targetTriple, StringRef chip,
std::unique_ptr<llvm::MCSubtargetInfo> sti(
target->createMCSubtargetInfo(triple, chip, features));
- llvm::MCContext ctx(triple, mai.get(), mri.get(), sti.get(), &srcMgr);
+ llvm::MCContext ctx(triple, *mai, mri.get(), sti.get(), &srcMgr);
std::unique_ptr<llvm::MCObjectFileInfo> mofi(target->createMCObjectFileInfo(
ctx, /*PIC=*/false, /*LargeCodeModel=*/false));
ctx.setObjectFileInfo(mofi.get());
>From 28e1aa1e5643c3d0160b3c11f7d5ff80f08c2ed5 Mon Sep 17 00:00:00 2001
From: Fangrui Song <i at maskray.me>
Date: Mon, 27 Apr 2026 00:05:02 -0700
Subject: [PATCH 2/2] fix lldb
---
lldb/source/Plugins/Disassembler/LLVMC/DisassemblerLLVMC.cpp | 4 ++--
.../Plugins/Instruction/MIPS/EmulateInstructionMIPS.cpp | 2 +-
.../Plugins/Instruction/MIPS64/EmulateInstructionMIPS64.cpp | 2 +-
3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/lldb/source/Plugins/Disassembler/LLVMC/DisassemblerLLVMC.cpp b/lldb/source/Plugins/Disassembler/LLVMC/DisassemblerLLVMC.cpp
index 534f04804e811..5b0143a1050d2 100644
--- a/lldb/source/Plugins/Disassembler/LLVMC/DisassemblerLLVMC.cpp
+++ b/lldb/source/Plugins/Disassembler/LLVMC/DisassemblerLLVMC.cpp
@@ -1284,8 +1284,8 @@ DisassemblerLLVMC::MCDisasmInstance::Create(const char *triple_name,
return Instance();
std::unique_ptr<llvm::MCContext> context_up(
- new llvm::MCContext(llvm::Triple(triple), asm_info_up.get(),
- reg_info_up.get(), subtarget_info_up.get()));
+ new llvm::MCContext(llvm::Triple(triple), *asm_info_up, reg_info_up.get(),
+ subtarget_info_up.get()));
if (!context_up)
return Instance();
diff --git a/lldb/source/Plugins/Instruction/MIPS/EmulateInstructionMIPS.cpp b/lldb/source/Plugins/Instruction/MIPS/EmulateInstructionMIPS.cpp
index b835fe0e896ad..5b08d8292915f 100644
--- a/lldb/source/Plugins/Instruction/MIPS/EmulateInstructionMIPS.cpp
+++ b/lldb/source/Plugins/Instruction/MIPS/EmulateInstructionMIPS.cpp
@@ -158,7 +158,7 @@ EmulateInstructionMIPS::EmulateInstructionMIPS(
assert(m_asm_info.get() && m_subtype_info.get());
m_context = std::make_unique<llvm::MCContext>(
- triple, m_asm_info.get(), m_reg_info.get(), m_subtype_info.get());
+ triple, *m_asm_info, m_reg_info.get(), m_subtype_info.get());
assert(m_context.get());
m_disasm.reset(target->createMCDisassembler(*m_subtype_info, *m_context));
diff --git a/lldb/source/Plugins/Instruction/MIPS64/EmulateInstructionMIPS64.cpp b/lldb/source/Plugins/Instruction/MIPS64/EmulateInstructionMIPS64.cpp
index e842bb99045e3..47bac02510374 100644
--- a/lldb/source/Plugins/Instruction/MIPS64/EmulateInstructionMIPS64.cpp
+++ b/lldb/source/Plugins/Instruction/MIPS64/EmulateInstructionMIPS64.cpp
@@ -162,7 +162,7 @@ EmulateInstructionMIPS64::EmulateInstructionMIPS64(
assert(m_asm_info.get() && m_subtype_info.get());
m_context = std::make_unique<llvm::MCContext>(
- triple, m_asm_info.get(), m_reg_info.get(), m_subtype_info.get());
+ triple, *m_asm_info, m_reg_info.get(), m_subtype_info.get());
assert(m_context.get());
m_disasm.reset(target->createMCDisassembler(*m_subtype_info, *m_context));
More information about the cfe-commits
mailing list