[clang] [llvm] [mlir] [MC] Take MCAsmInfo by reference in MCContext and TargetMachine. NFC (PR #194280)
via cfe-commits
cfe-commits at lists.llvm.org
Sun Apr 26 20:08:32 PDT 2026
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-powerpc
@llvm/pr-subscribers-backend-hexagon
Author: Fangrui Song (MaskRay)
<details>
<summary>Changes</summary>
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.
---
Patch is 77.07 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/194280.diff
89 Files Affected:
- (modified) bolt/include/bolt/Core/BinaryContext.h (+1-1)
- (modified) bolt/lib/Core/BinaryContext.cpp (+1-1)
- (modified) clang/lib/Parse/ParseStmtAsm.cpp (+1-1)
- (modified) clang/tools/driver/cc1as_main.cpp (+1-1)
- (modified) llvm/include/llvm/MC/MCContext.h (+1-1)
- (modified) llvm/include/llvm/Passes/CodeGenPassBuilder.h (+2-3)
- (modified) llvm/include/llvm/Target/TargetMachine.h (+1-1)
- (modified) llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp (+2-2)
- (modified) llvm/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp (+2-4)
- (modified) llvm/lib/CodeGen/CodeGenTargetMachineImpl.cpp (+1-1)
- (modified) llvm/lib/CodeGen/MachineVerifier.cpp (+3-4)
- (modified) llvm/lib/CodeGen/ShrinkWrap.cpp (+1-1)
- (modified) llvm/lib/CodeGen/TargetFrameLoweringImpl.cpp (+1-1)
- (modified) llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp (+1-2)
- (modified) llvm/lib/CodeGen/TargetPassConfig.cpp (+2-3)
- (modified) llvm/lib/DWARFLinker/Classic/DWARFStreamer.cpp (+2-2)
- (modified) llvm/lib/DWARFLinker/Parallel/DWARFEmitterImpl.cpp (+2-2)
- (modified) llvm/lib/DWARFLinker/Parallel/DebugLineSectionEmitter.h (+1-1)
- (modified) llvm/lib/DebugInfo/LogicalView/Readers/LVBinaryReader.cpp (+1-1)
- (modified) llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldChecker.cpp (+2-2)
- (modified) llvm/lib/MC/MCContext.cpp (+2-3)
- (modified) llvm/lib/MC/MCDisassembler/Disassembler.cpp (+1-1)
- (modified) llvm/lib/Object/ModuleSymbolTable.cpp (+1-1)
- (modified) llvm/lib/Target/AArch64/AArch64FrameLowering.cpp (+3-3)
- (modified) llvm/lib/Target/AArch64/AArch64InstrInfo.cpp (+6-6)
- (modified) llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp (+1-1)
- (modified) llvm/lib/Target/AArch64/AArch64MachineFunctionInfo.cpp (+2-2)
- (modified) llvm/lib/Target/AArch64/AArch64TargetMachine.cpp (+2-2)
- (modified) llvm/lib/Target/AMDGPU/AMDGPUMCInstLower.cpp (+1-1)
- (modified) llvm/lib/Target/AMDGPU/SIInstrInfo.cpp (+1-1)
- (modified) llvm/lib/Target/ARC/ARCInstrInfo.cpp (+1-1)
- (modified) llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp (+2-2)
- (modified) llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp (+1-1)
- (modified) llvm/lib/Target/ARM/ARMFrameLowering.cpp (+5-5)
- (modified) llvm/lib/Target/ARM/ARMSubtarget.cpp (+1-1)
- (modified) llvm/lib/Target/ARM/ARMTargetObjectFile.cpp (+1-1)
- (modified) llvm/lib/Target/ARM/Thumb2SizeReduction.cpp (+1-1)
- (modified) llvm/lib/Target/AVR/AVRInstrInfo.cpp (+1-1)
- (modified) llvm/lib/Target/CSKY/CSKYInstrInfo.cpp (+1-1)
- (modified) llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp (+2-2)
- (modified) llvm/lib/Target/LoongArch/LoongArchInstrInfo.cpp (+2-2)
- (modified) llvm/lib/Target/M68k/M68kMCInstLower.cpp (+1-1)
- (modified) llvm/lib/Target/MSP430/MSP430InstrInfo.cpp (+1-1)
- (modified) llvm/lib/Target/Mips/MipsInstrInfo.cpp (+1-1)
- (modified) llvm/lib/Target/PowerPC/PPCInstrInfo.cpp (+1-1)
- (modified) llvm/lib/Target/RISCV/RISCVInstrInfo.cpp (+1-1)
- (modified) llvm/lib/Target/Sparc/SparcInstrInfo.cpp (+1-1)
- (modified) llvm/lib/Target/SystemZ/SystemZInstrInfo.cpp (+1-1)
- (modified) llvm/lib/Target/WebAssembly/WebAssemblyCFGStackify.cpp (+5-5)
- (modified) llvm/lib/Target/WebAssembly/WebAssemblyExceptionInfo.cpp (+1-1)
- (modified) llvm/lib/Target/WebAssembly/WebAssemblyFrameLowering.cpp (+1-1)
- (modified) llvm/lib/Target/WebAssembly/WebAssemblyLateEHPrepare.cpp (+1-1)
- (modified) llvm/lib/Target/X86/X86CodeGenPassBuilder.cpp (+2-2)
- (modified) llvm/lib/Target/X86/X86FastISel.cpp (+1-1)
- (modified) llvm/lib/Target/X86/X86FrameLowering.cpp (+6-6)
- (modified) llvm/lib/Target/X86/X86ISelLowering.cpp (+2-2)
- (modified) llvm/lib/Target/X86/X86InstrInfo.cpp (+1-1)
- (modified) llvm/lib/Target/X86/X86MCInstLower.cpp (+1-1)
- (modified) llvm/lib/Target/X86/X86TargetMachine.cpp (+2-2)
- (modified) llvm/lib/Target/Xtensa/XtensaInstrInfo.cpp (+1-1)
- (modified) llvm/tools/llvm-cfi-verify/lib/FileAnalysis.cpp (+2-2)
- (modified) llvm/tools/llvm-dwp/llvm-dwp.cpp (+1-1)
- (modified) llvm/tools/llvm-exegesis/lib/DisassemblerHelper.cpp (+1-1)
- (modified) llvm/tools/llvm-exegesis/lib/SnippetFile.cpp (+3-3)
- (modified) llvm/tools/llvm-jitlink/llvm-jitlink.cpp (+2-2)
- (modified) llvm/tools/llvm-mc-assemble-fuzzer/llvm-mc-assemble-fuzzer.cpp (+1-1)
- (modified) llvm/tools/llvm-mc/llvm-mc.cpp (+1-1)
- (modified) llvm/tools/llvm-mca/llvm-mca.cpp (+2-2)
- (modified) llvm/tools/llvm-ml/Disassembler.cpp (+1-1)
- (modified) llvm/tools/llvm-ml/llvm-ml.cpp (+1-1)
- (modified) llvm/tools/llvm-objdump/MachODump.cpp (+3-3)
- (modified) llvm/tools/llvm-objdump/llvm-objdump.cpp (+2-2)
- (modified) llvm/tools/llvm-profgen/ProfiledBinary.cpp (+1-1)
- (modified) llvm/tools/llvm-rtdyld/llvm-rtdyld.cpp (+1-1)
- (modified) llvm/tools/sancov/sancov.cpp (+1-1)
- (modified) llvm/unittests/CodeGen/MachineInstrTest.cpp (+4-4)
- (modified) llvm/unittests/CodeGen/MachineOperandTest.cpp (+1-1)
- (modified) llvm/unittests/DebugInfo/DWARF/DWARFExpressionCopyBytesTest.cpp (+2-3)
- (modified) llvm/unittests/DebugInfo/DWARF/DwarfGenerator.cpp (+1-1)
- (modified) llvm/unittests/MC/AMDGPU/Disassembler.cpp (+2-2)
- (modified) llvm/unittests/MC/DwarfDebugFrameCIE.cpp (+1-1)
- (modified) llvm/unittests/MC/DwarfLineTableHeaders.cpp (+1-1)
- (modified) llvm/unittests/MC/DwarfLineTables.cpp (+1-1)
- (modified) llvm/unittests/MC/SystemZ/SystemZAsmLexerTest.cpp (+1-1)
- (modified) llvm/unittests/MC/SystemZ/SystemZMCDisassemblerTest.cpp (+1-1)
- (modified) llvm/unittests/MC/X86/X86MCDisassemblerTest.cpp (+1-2)
- (modified) llvm/unittests/Target/AArch64/AArch64InstPrinterTest.cpp (+1-1)
- (modified) llvm/unittests/tools/llvm-mca/MCATestBase.cpp (+1-1)
- (modified) mlir/lib/Target/LLVM/ROCDL/Target.cpp (+1-1)
``````````diff
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-ins...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/194280
More information about the cfe-commits
mailing list