[Mlir-commits] [clang] [llvm] [mlir] [MC] Drop MCTargetOptions parameter from MCTargetAsmParser (PR #194120)
Fangrui Song
llvmlistbot at llvm.org
Sat Apr 25 17:03:41 PDT 2026
https://github.com/MaskRay updated https://github.com/llvm/llvm-project/pull/194120
>From a4eb032d9275b37aa34a2d189292296b1524dadd Mon Sep 17 00:00:00 2001
From: Fangrui Song <i at maskray.me>
Date: Fri, 24 Apr 2026 23:22:20 -0700
Subject: [PATCH 1/3] [MC] Drop MCTargetOptions parameter from
MCTargetAsmParser. NFC
Since #180464, MCAsmInfo holds the canonical MCTargetOptions.
The MCTargetAsmParser::MCOptions member was a redundant by-value copy,
which may be inconsistent.
Remove the field in favor of getParser().getContext().getTargetOptions,
and remove the MCTargetOptions parameter from the base ctor, all
subclass ctors, Target::createMCAsmParser, MCAsmParserCtorTy, and
RegisterMCAsmParser.
---
.../include/llvm/MC/MCParser/MCTargetAsmParser.h | 13 +++++++------
llvm/include/llvm/MC/TargetRegistry.h | 16 +++++++---------
.../CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp | 4 ++--
llvm/lib/MC/MCParser/MCTargetAsmParser.cpp | 5 ++---
llvm/lib/Object/ModuleSymbolTable.cpp | 2 +-
.../AArch64/AsmParser/AArch64AsmParser.cpp | 4 ++--
.../Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp | 4 ++--
llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp | 4 ++--
llvm/lib/Target/AVR/AsmParser/AVRAsmParser.cpp | 4 ++--
llvm/lib/Target/BPF/AsmParser/BPFAsmParser.cpp | 4 ++--
llvm/lib/Target/CSKY/AsmParser/CSKYAsmParser.cpp | 4 ++--
.../Hexagon/AsmParser/HexagonAsmParser.cpp | 5 ++---
.../Target/Lanai/AsmParser/LanaiAsmParser.cpp | 6 +++---
.../LoongArch/AsmParser/LoongArchAsmParser.cpp | 4 ++--
llvm/lib/Target/M68k/AsmParser/M68kAsmParser.cpp | 4 ++--
.../Target/MSP430/AsmParser/MSP430AsmParser.cpp | 4 ++--
llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp | 9 +++++----
.../Target/PowerPC/AsmParser/PPCAsmParser.cpp | 5 ++---
.../Target/RISCV/AsmParser/RISCVAsmParser.cpp | 6 +++---
.../Target/Sparc/AsmParser/SparcAsmParser.cpp | 4 ++--
.../SystemZ/AsmParser/SystemZAsmParser.cpp | 4 ++--
llvm/lib/Target/VE/AsmParser/VEAsmParser.cpp | 4 ++--
.../AsmParser/WebAssemblyAsmParser.cpp | 8 ++++----
llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp | 7 +++----
.../Target/Xtensa/AsmParser/XtensaAsmParser.cpp | 4 ++--
llvm/tools/llvm-exegesis/lib/SnippetFile.cpp | 3 +--
.../llvm-mc-assemble-fuzzer.cpp | 2 +-
llvm/tools/llvm-mc/llvm-mc.cpp | 2 +-
llvm/tools/llvm-mca/CodeRegionGenerator.cpp | 2 +-
llvm/tools/llvm-ml/llvm-ml.cpp | 2 +-
.../unittests/MC/SystemZ/SystemZAsmLexerTest.cpp | 3 +--
31 files changed, 73 insertions(+), 79 deletions(-)
diff --git a/llvm/include/llvm/MC/MCParser/MCTargetAsmParser.h b/llvm/include/llvm/MC/MCParser/MCTargetAsmParser.h
index 7628987b9587d..7dbca79e2880d 100644
--- a/llvm/include/llvm/MC/MCParser/MCTargetAsmParser.h
+++ b/llvm/include/llvm/MC/MCParser/MCTargetAsmParser.h
@@ -345,8 +345,7 @@ class LLVM_ABI MCTargetAsmParser : public MCAsmParserExtension {
};
protected: // Can only create subclasses.
- MCTargetAsmParser(MCTargetOptions const &, const MCSubtargetInfo &STI,
- const MCInstrInfo &MII);
+ MCTargetAsmParser(const MCSubtargetInfo &STI, const MCInstrInfo &MII);
/// Create a copy of STI and return a non-const reference to it.
MCSubtargetInfo ©STI();
@@ -361,9 +360,6 @@ class LLVM_ABI MCTargetAsmParser : public MCAsmParserExtension {
/// ms-style inline assembly.
MCAsmParserSemaCallback *SemaCallback = nullptr;
- /// Set of options which affects instrumentation of inline assembly.
- MCTargetOptions MCOptions;
-
/// Current STI.
const MCSubtargetInfo *STI;
@@ -387,7 +383,12 @@ class LLVM_ABI MCTargetAsmParser : public MCAsmParserExtension {
bool isParsingMSInlineAsm () { return ParsingMSInlineAsm; }
void setParsingMSInlineAsm (bool Value) { ParsingMSInlineAsm = Value; }
- MCTargetOptions getTargetOptions() const { return MCOptions; }
+ const MCTargetOptions &getTargetOptions() const {
+ return const_cast<MCTargetAsmParser *>(this)
+ ->getParser()
+ .getContext()
+ .getTargetOptions();
+ }
void setSemaCallback(MCAsmParserSemaCallback *Callback) {
SemaCallback = Callback;
diff --git a/llvm/include/llvm/MC/TargetRegistry.h b/llvm/include/llvm/MC/TargetRegistry.h
index 6b45274f9dc95..86ad5ad3ae710 100644
--- a/llvm/include/llvm/MC/TargetRegistry.h
+++ b/llvm/include/llvm/MC/TargetRegistry.h
@@ -176,9 +176,9 @@ class Target {
const MCSubtargetInfo &STI,
const MCRegisterInfo &MRI,
const MCTargetOptions &Options);
- using MCAsmParserCtorTy = MCTargetAsmParser *(*)(
- const MCSubtargetInfo &STI, MCAsmParser &P, const MCInstrInfo &MII,
- const MCTargetOptions &Options);
+ using MCAsmParserCtorTy = MCTargetAsmParser *(*)(const MCSubtargetInfo &STI,
+ MCAsmParser &P,
+ const MCInstrInfo &MII);
using MCDisassemblerCtorTy = MCDisassembler *(*)(const Target &T,
const MCSubtargetInfo &STI,
MCContext &Ctx);
@@ -504,11 +504,10 @@ class Target {
/// parsing and lexing.
MCTargetAsmParser *createMCAsmParser(const MCSubtargetInfo &STI,
MCAsmParser &Parser,
- const MCInstrInfo &MII,
- const MCTargetOptions &Options) const {
+ const MCInstrInfo &MII) const {
if (!MCAsmParserCtorFn)
return nullptr;
- return MCAsmParserCtorFn(STI, Parser, MII, Options);
+ return MCAsmParserCtorFn(STI, Parser, MII);
}
/// createAsmPrinter - Create a target specific assembly printer pass. This
@@ -1349,9 +1348,8 @@ template <class MCAsmParserImpl> struct RegisterMCAsmParser {
private:
static MCTargetAsmParser *Allocator(const MCSubtargetInfo &STI,
- MCAsmParser &P, const MCInstrInfo &MII,
- const MCTargetOptions &Options) {
- return new MCAsmParserImpl(STI, P, MII, Options);
+ MCAsmParser &P, const MCInstrInfo &MII) {
+ return new MCAsmParserImpl(STI, P, MII);
}
};
diff --git a/llvm/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp b/llvm/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp
index b649c41f56208..10ae995c7fdaa 100644
--- a/llvm/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp
@@ -116,8 +116,8 @@ void AsmPrinter::emitInlineAsm(StringRef Str, const MCSubtargetInfo &STI,
// because it's not subtarget dependent.
std::unique_ptr<MCInstrInfo> MII(TM.getTarget().createMCInstrInfo());
assert(MII && "Failed to create instruction info");
- std::unique_ptr<MCTargetAsmParser> TAP(TM.getTarget().createMCAsmParser(
- STI, *Parser, *MII, MCOptions));
+ std::unique_ptr<MCTargetAsmParser> TAP(
+ TM.getTarget().createMCAsmParser(STI, *Parser, *MII));
if (!TAP)
report_fatal_error("Inline asm not supported by this streamer because"
" we don't have an asm parser for this target\n");
diff --git a/llvm/lib/MC/MCParser/MCTargetAsmParser.cpp b/llvm/lib/MC/MCParser/MCTargetAsmParser.cpp
index d7b0546d70558..d9da7fdeb5f75 100644
--- a/llvm/lib/MC/MCParser/MCTargetAsmParser.cpp
+++ b/llvm/lib/MC/MCParser/MCTargetAsmParser.cpp
@@ -13,10 +13,9 @@
using namespace llvm;
-MCTargetAsmParser::MCTargetAsmParser(MCTargetOptions const &MCOptions,
- const MCSubtargetInfo &STI,
+MCTargetAsmParser::MCTargetAsmParser(const MCSubtargetInfo &STI,
const MCInstrInfo &MII)
- : MCOptions(MCOptions), STI(&STI), MII(MII) {}
+ : STI(&STI), MII(MII) {}
MCTargetAsmParser::~MCTargetAsmParser() = default;
diff --git a/llvm/lib/Object/ModuleSymbolTable.cpp b/llvm/lib/Object/ModuleSymbolTable.cpp
index ff0bc8b192de7..5e55f6d0a5acb 100644
--- a/llvm/lib/Object/ModuleSymbolTable.cpp
+++ b/llvm/lib/Object/ModuleSymbolTable.cpp
@@ -114,7 +114,7 @@ initializeRecordStreamer(const Module &M,
createMCAsmParser(SrcMgr, MCCtx, Streamer, *MAI));
std::unique_ptr<MCTargetAsmParser> TAP(
- T->createMCAsmParser(*STI, *Parser, *MCII, MCOptions));
+ T->createMCAsmParser(*STI, *Parser, *MCII));
if (!TAP)
return;
diff --git a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
index 28417db66709b..7a9a6224442d7 100644
--- a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
+++ b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
@@ -311,8 +311,8 @@ class AArch64AsmParser : public MCTargetAsmParser {
bool IsWindowsArm64EC;
AArch64AsmParser(const MCSubtargetInfo &STI, MCAsmParser &Parser,
- const MCInstrInfo &MII, const MCTargetOptions &Options)
- : MCTargetAsmParser(Options, STI, MII) {
+ const MCInstrInfo &MII)
+ : MCTargetAsmParser(STI, MII) {
IsILP32 = STI.getTargetTriple().getEnvironment() == Triple::GNUILP32;
IsWindowsArm64EC = STI.getTargetTriple().isWindowsArm64EC();
MCAsmParserExtension::Initialize(Parser);
diff --git a/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp b/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
index 2e300733b5c99..103372d6e4c5c 100644
--- a/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
+++ b/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
@@ -1468,8 +1468,8 @@ class AMDGPUAsmParser : public MCTargetAsmParser {
using OptionalImmIndexMap = std::map<AMDGPUOperand::ImmTy, unsigned>;
AMDGPUAsmParser(const MCSubtargetInfo &STI, MCAsmParser &_Parser,
- const MCInstrInfo &MII, const MCTargetOptions &Options)
- : MCTargetAsmParser(Options, STI, MII), Parser(_Parser),
+ const MCInstrInfo &MII)
+ : MCTargetAsmParser(STI, MII), Parser(_Parser),
HwMode(STI.getHwMode(MCSubtargetInfo::HwMode_RegInfo)) {
MCAsmParserExtension::Initialize(Parser);
diff --git a/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp b/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
index c7dd09120b8a0..a8fefa1803a5e 100644
--- a/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
+++ b/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
@@ -689,8 +689,8 @@ class ARMAsmParser : public MCTargetAsmParser {
};
ARMAsmParser(const MCSubtargetInfo &STI, MCAsmParser &Parser,
- const MCInstrInfo &MII, const MCTargetOptions &Options)
- : MCTargetAsmParser(Options, STI, MII), UC(Parser), MS(STI) {
+ const MCInstrInfo &MII)
+ : MCTargetAsmParser(STI, MII), UC(Parser), MS(STI) {
MCAsmParserExtension::Initialize(Parser);
// Cache the MCRegisterInfo.
diff --git a/llvm/lib/Target/AVR/AsmParser/AVRAsmParser.cpp b/llvm/lib/Target/AVR/AsmParser/AVRAsmParser.cpp
index 48452f6d9391c..4d961573a7f92 100644
--- a/llvm/lib/Target/AVR/AsmParser/AVRAsmParser.cpp
+++ b/llvm/lib/Target/AVR/AsmParser/AVRAsmParser.cpp
@@ -91,8 +91,8 @@ class AVRAsmParser : public MCTargetAsmParser {
public:
AVRAsmParser(const MCSubtargetInfo &STI, MCAsmParser &Parser,
- const MCInstrInfo &MII, const MCTargetOptions &Options)
- : MCTargetAsmParser(Options, STI, MII), Parser(Parser) {
+ const MCInstrInfo &MII)
+ : MCTargetAsmParser(STI, MII), Parser(Parser) {
MCAsmParserExtension::Initialize(Parser);
MRI = getContext().getRegisterInfo();
diff --git a/llvm/lib/Target/BPF/AsmParser/BPFAsmParser.cpp b/llvm/lib/Target/BPF/AsmParser/BPFAsmParser.cpp
index 9f86322a81b3e..8f7a147dc02e2 100644
--- a/llvm/lib/Target/BPF/AsmParser/BPFAsmParser.cpp
+++ b/llvm/lib/Target/BPF/AsmParser/BPFAsmParser.cpp
@@ -71,8 +71,8 @@ class BPFAsmParser : public MCTargetAsmParser {
};
BPFAsmParser(const MCSubtargetInfo &STI, MCAsmParser &Parser,
- const MCInstrInfo &MII, const MCTargetOptions &Options)
- : MCTargetAsmParser(Options, STI, MII) {
+ const MCInstrInfo &MII)
+ : MCTargetAsmParser(STI, MII) {
setAvailableFeatures(ComputeAvailableFeatures(STI.getFeatureBits()));
}
};
diff --git a/llvm/lib/Target/CSKY/AsmParser/CSKYAsmParser.cpp b/llvm/lib/Target/CSKY/AsmParser/CSKYAsmParser.cpp
index 5f7e1497a1ebf..1feb24999b504 100644
--- a/llvm/lib/Target/CSKY/AsmParser/CSKYAsmParser.cpp
+++ b/llvm/lib/Target/CSKY/AsmParser/CSKYAsmParser.cpp
@@ -128,8 +128,8 @@ class CSKYAsmParser : public MCTargetAsmParser {
};
CSKYAsmParser(const MCSubtargetInfo &STI, MCAsmParser &Parser,
- const MCInstrInfo &MII, const MCTargetOptions &Options)
- : MCTargetAsmParser(Options, STI, MII) {
+ const MCInstrInfo &MII)
+ : MCTargetAsmParser(STI, MII) {
MCAsmParserExtension::Initialize(Parser);
diff --git a/llvm/lib/Target/Hexagon/AsmParser/HexagonAsmParser.cpp b/llvm/lib/Target/Hexagon/AsmParser/HexagonAsmParser.cpp
index c18db982bfd97..f14ecdfb820cd 100644
--- a/llvm/lib/Target/Hexagon/AsmParser/HexagonAsmParser.cpp
+++ b/llvm/lib/Target/Hexagon/AsmParser/HexagonAsmParser.cpp
@@ -159,9 +159,8 @@ class HexagonAsmParser : public MCTargetAsmParser {
public:
HexagonAsmParser(const MCSubtargetInfo &_STI, MCAsmParser &_Parser,
- const MCInstrInfo &MII, const MCTargetOptions &Options)
- : MCTargetAsmParser(Options, _STI, MII), Parser(_Parser),
- InBrackets(false) {
+ const MCInstrInfo &MII)
+ : MCTargetAsmParser(_STI, MII), Parser(_Parser), InBrackets(false) {
MCB.setOpcode(Hexagon::BUNDLE);
setAvailableFeatures(ComputeAvailableFeatures(getSTI().getFeatureBits()));
diff --git a/llvm/lib/Target/Lanai/AsmParser/LanaiAsmParser.cpp b/llvm/lib/Target/Lanai/AsmParser/LanaiAsmParser.cpp
index 0444c865f6866..6621bdce4cbce 100644
--- a/llvm/lib/Target/Lanai/AsmParser/LanaiAsmParser.cpp
+++ b/llvm/lib/Target/Lanai/AsmParser/LanaiAsmParser.cpp
@@ -83,9 +83,9 @@ class LanaiAsmParser : public MCTargetAsmParser {
public:
LanaiAsmParser(const MCSubtargetInfo &STI, MCAsmParser &Parser,
- const MCInstrInfo &MII, const MCTargetOptions &Options)
- : MCTargetAsmParser(Options, STI, MII), Parser(Parser),
- Lexer(Parser.getLexer()), SubtargetInfo(STI) {
+ const MCInstrInfo &MII)
+ : MCTargetAsmParser(STI, MII), Parser(Parser), Lexer(Parser.getLexer()),
+ SubtargetInfo(STI) {
setAvailableFeatures(
ComputeAvailableFeatures(SubtargetInfo.getFeatureBits()));
}
diff --git a/llvm/lib/Target/LoongArch/AsmParser/LoongArchAsmParser.cpp b/llvm/lib/Target/LoongArch/AsmParser/LoongArchAsmParser.cpp
index c8c3a2bc9ce6d..1f608fa85b7b4 100644
--- a/llvm/lib/Target/LoongArch/AsmParser/LoongArchAsmParser.cpp
+++ b/llvm/lib/Target/LoongArch/AsmParser/LoongArchAsmParser.cpp
@@ -193,8 +193,8 @@ class LoongArchAsmParser : public MCTargetAsmParser {
LoongArchMCExpr::Specifier &Kind);
LoongArchAsmParser(const MCSubtargetInfo &STI, MCAsmParser &Parser,
- const MCInstrInfo &MII, const MCTargetOptions &Options)
- : MCTargetAsmParser(Options, STI, MII) {
+ const MCInstrInfo &MII)
+ : MCTargetAsmParser(STI, MII) {
Parser.addAliasForDirective(".half", ".2byte");
Parser.addAliasForDirective(".hword", ".2byte");
Parser.addAliasForDirective(".word", ".4byte");
diff --git a/llvm/lib/Target/M68k/AsmParser/M68kAsmParser.cpp b/llvm/lib/Target/M68k/AsmParser/M68kAsmParser.cpp
index fb5cd5c29d7dc..eefcee8bcc98d 100644
--- a/llvm/lib/Target/M68k/AsmParser/M68kAsmParser.cpp
+++ b/llvm/lib/Target/M68k/AsmParser/M68kAsmParser.cpp
@@ -56,8 +56,8 @@ class M68kAsmParser : public MCTargetAsmParser {
public:
M68kAsmParser(const MCSubtargetInfo &STI, MCAsmParser &Parser,
- const MCInstrInfo &MII, const MCTargetOptions &Options)
- : MCTargetAsmParser(Options, STI, MII), Parser(Parser) {
+ const MCInstrInfo &MII)
+ : MCTargetAsmParser(STI, MII), Parser(Parser) {
MCAsmParserExtension::Initialize(Parser);
MRI = getContext().getRegisterInfo();
diff --git a/llvm/lib/Target/MSP430/AsmParser/MSP430AsmParser.cpp b/llvm/lib/Target/MSP430/AsmParser/MSP430AsmParser.cpp
index a8891d686abe8..160edc30eeacc 100644
--- a/llvm/lib/Target/MSP430/AsmParser/MSP430AsmParser.cpp
+++ b/llvm/lib/Target/MSP430/AsmParser/MSP430AsmParser.cpp
@@ -77,8 +77,8 @@ class MSP430AsmParser : public MCTargetAsmParser {
public:
MSP430AsmParser(const MCSubtargetInfo &STI, MCAsmParser &Parser,
- const MCInstrInfo &MII, const MCTargetOptions &Options)
- : MCTargetAsmParser(Options, STI, MII), Parser(Parser) {
+ const MCInstrInfo &MII)
+ : MCTargetAsmParser(STI, MII), Parser(Parser) {
MCAsmParserExtension::Initialize(Parser);
MRI = getContext().getRegisterInfo();
diff --git a/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp b/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
index 092efb8d78b33..928bd03b57c60 100644
--- a/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
+++ b/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
@@ -523,10 +523,11 @@ class MipsAsmParser : public MCTargetAsmParser {
};
MipsAsmParser(const MCSubtargetInfo &sti, MCAsmParser &parser,
- const MCInstrInfo &MII, const MCTargetOptions &Options)
- : MCTargetAsmParser(Options, sti, MII),
- ABI(MipsABIInfo::computeTargetABI(sti.getTargetTriple(),
- Options.getABIName())) {
+ const MCInstrInfo &MII)
+ : MCTargetAsmParser(sti, MII),
+ ABI(MipsABIInfo::computeTargetABI(
+ sti.getTargetTriple(),
+ parser.getContext().getTargetOptions().getABIName())) {
MCAsmParserExtension::Initialize(parser);
parser.addAliasForDirective(".asciiz", ".asciz");
diff --git a/llvm/lib/Target/PowerPC/AsmParser/PPCAsmParser.cpp b/llvm/lib/Target/PowerPC/AsmParser/PPCAsmParser.cpp
index 3c2fb0bf73ecd..258239083d3dc 100644
--- a/llvm/lib/Target/PowerPC/AsmParser/PPCAsmParser.cpp
+++ b/llvm/lib/Target/PowerPC/AsmParser/PPCAsmParser.cpp
@@ -144,9 +144,8 @@ class PPCAsmParser : public MCTargetAsmParser {
public:
PPCAsmParser(const MCSubtargetInfo &STI, MCAsmParser &,
- const MCInstrInfo &MII, const MCTargetOptions &Options)
- : MCTargetAsmParser(Options, STI, MII),
- IsPPC64(STI.getTargetTriple().isPPC64()) {
+ const MCInstrInfo &MII)
+ : MCTargetAsmParser(STI, MII), IsPPC64(STI.getTargetTriple().isPPC64()) {
// Initialize the set of available features.
setAvailableFeatures(ComputeAvailableFeatures(STI.getFeatureBits()));
}
diff --git a/llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp b/llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp
index a199b0ab646b1..cbf3d0f518ac8 100644
--- a/llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp
+++ b/llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp
@@ -301,8 +301,8 @@ class RISCVAsmParser : public MCTargetAsmParser {
static bool isSymbolDiff(const MCExpr *Expr);
RISCVAsmParser(const MCSubtargetInfo &STI, MCAsmParser &Parser,
- const MCInstrInfo &MII, const MCTargetOptions &Options)
- : MCTargetAsmParser(Options, STI, MII) {
+ const MCInstrInfo &MII)
+ : MCTargetAsmParser(STI, MII) {
MCAsmParserExtension::Initialize(Parser);
Parser.addAliasForDirective(".half", ".2byte");
@@ -311,7 +311,7 @@ class RISCVAsmParser : public MCTargetAsmParser {
Parser.addAliasForDirective(".dword", ".8byte");
setAvailableFeatures(ComputeAvailableFeatures(STI.getFeatureBits()));
- auto ABIName = StringRef(Options.ABIName);
+ auto ABIName = StringRef(getTargetOptions().ABIName);
if (ABIName.ends_with("f") && !getSTI().hasFeature(RISCV::FeatureStdExtF)) {
errs() << "Hard-float 'f' ABI can't be used for a target that "
"doesn't support the F instruction set extension (ignoring "
diff --git a/llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp b/llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp
index 77b3634f4e405..f6b8e0af67150 100644
--- a/llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp
+++ b/llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp
@@ -141,8 +141,8 @@ class SparcAsmParser : public MCTargetAsmParser {
public:
SparcAsmParser(const MCSubtargetInfo &sti, MCAsmParser &parser,
- const MCInstrInfo &MII, const MCTargetOptions &Options)
- : MCTargetAsmParser(Options, sti, MII), Parser(parser),
+ const MCInstrInfo &MII)
+ : MCTargetAsmParser(sti, MII), Parser(parser),
MRI(*Parser.getContext().getRegisterInfo()) {
Parser.addAliasForDirective(".half", ".2byte");
Parser.addAliasForDirective(".uahalf", ".2byte");
diff --git a/llvm/lib/Target/SystemZ/AsmParser/SystemZAsmParser.cpp b/llvm/lib/Target/SystemZ/AsmParser/SystemZAsmParser.cpp
index 4efb305b2d55a..27ef8ff0b6515 100644
--- a/llvm/lib/Target/SystemZ/AsmParser/SystemZAsmParser.cpp
+++ b/llvm/lib/Target/SystemZ/AsmParser/SystemZAsmParser.cpp
@@ -501,8 +501,8 @@ class SystemZAsmParser : public MCTargetAsmParser {
public:
SystemZAsmParser(const MCSubtargetInfo &sti, MCAsmParser &parser,
- const MCInstrInfo &MII, const MCTargetOptions &Options)
- : MCTargetAsmParser(Options, sti, MII), Parser(parser) {
+ const MCInstrInfo &MII)
+ : MCTargetAsmParser(sti, MII), Parser(parser) {
MCAsmParserExtension::Initialize(Parser);
// Alias the .word directive to .short.
diff --git a/llvm/lib/Target/VE/AsmParser/VEAsmParser.cpp b/llvm/lib/Target/VE/AsmParser/VEAsmParser.cpp
index eceddd66e39d5..cc58efcd7b005 100644
--- a/llvm/lib/Target/VE/AsmParser/VEAsmParser.cpp
+++ b/llvm/lib/Target/VE/AsmParser/VEAsmParser.cpp
@@ -85,8 +85,8 @@ class VEAsmParser : public MCTargetAsmParser {
public:
VEAsmParser(const MCSubtargetInfo &sti, MCAsmParser &parser,
- const MCInstrInfo &MII, const MCTargetOptions &Options)
- : MCTargetAsmParser(Options, sti, MII), Parser(parser) {
+ const MCInstrInfo &MII)
+ : MCTargetAsmParser(sti, MII), Parser(parser) {
// Initialize the set of available features.
setAvailableFeatures(ComputeAvailableFeatures(getSTI().getFeatureBits()));
}
diff --git a/llvm/lib/Target/WebAssembly/AsmParser/WebAssemblyAsmParser.cpp b/llvm/lib/Target/WebAssembly/AsmParser/WebAssemblyAsmParser.cpp
index 0c2b5a857c076..33e2e1c0d48f6 100644
--- a/llvm/lib/Target/WebAssembly/AsmParser/WebAssemblyAsmParser.cpp
+++ b/llvm/lib/Target/WebAssembly/AsmParser/WebAssemblyAsmParser.cpp
@@ -273,10 +273,10 @@ class WebAssemblyAsmParser final : public MCTargetAsmParser {
public:
WebAssemblyAsmParser(const MCSubtargetInfo &STI, MCAsmParser &Parser,
- const MCInstrInfo &MII, const MCTargetOptions &Options)
- : MCTargetAsmParser(Options, STI, MII), Parser(Parser),
- Lexer(Parser.getLexer()), Is64(STI.getTargetTriple().isArch64Bit()),
- TC(Parser, MII, Is64), SkipTypeCheck(Options.MCNoTypeCheck) {
+ const MCInstrInfo &MII)
+ : MCTargetAsmParser(STI, MII), Parser(Parser), Lexer(Parser.getLexer()),
+ Is64(STI.getTargetTriple().isArch64Bit()), TC(Parser, MII, Is64),
+ SkipTypeCheck(Parser.getContext().getTargetOptions().MCNoTypeCheck) {
FeatureBitset FBS = ComputeAvailableFeatures(STI.getFeatureBits());
// bulk-memory implies bulk-memory-opt
diff --git a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp
index 9d8b74284a3de..43c591bd9cd87 100644
--- a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp
+++ b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp
@@ -1302,9 +1302,8 @@ class X86AsmParser : public MCTargetAsmParser {
};
X86AsmParser(const MCSubtargetInfo &sti, MCAsmParser &Parser,
- const MCInstrInfo &mii, const MCTargetOptions &Options)
- : MCTargetAsmParser(Options, sti, mii), InstInfo(nullptr),
- Code16GCC(false) {
+ const MCInstrInfo &mii)
+ : MCTargetAsmParser(sti, mii), InstInfo(nullptr), Code16GCC(false) {
Parser.addAliasForDirective(".word", ".2byte");
@@ -3849,7 +3848,7 @@ static bool convertSSEToAVX(MCInst &Inst) {
}
bool X86AsmParser::processInstruction(MCInst &Inst, const OperandVector &Ops) {
- if (MCOptions.X86Sse2Avx && convertSSEToAVX(Inst))
+ if (getTargetOptions().X86Sse2Avx && convertSSEToAVX(Inst))
return true;
if (ForcedOpcodePrefix != OpcodePrefix_VEX3 &&
diff --git a/llvm/lib/Target/Xtensa/AsmParser/XtensaAsmParser.cpp b/llvm/lib/Target/Xtensa/AsmParser/XtensaAsmParser.cpp
index 4001b2cfa2a6d..dc33295c16f28 100644
--- a/llvm/lib/Target/Xtensa/AsmParser/XtensaAsmParser.cpp
+++ b/llvm/lib/Target/Xtensa/AsmParser/XtensaAsmParser.cpp
@@ -92,8 +92,8 @@ class XtensaAsmParser : public MCTargetAsmParser {
};
XtensaAsmParser(const MCSubtargetInfo &STI, MCAsmParser &Parser,
- const MCInstrInfo &MII, const MCTargetOptions &Options)
- : MCTargetAsmParser(Options, STI, MII),
+ const MCInstrInfo &MII)
+ : MCTargetAsmParser(STI, MII),
MRI(*Parser.getContext().getRegisterInfo()) {
setAvailableFeatures(ComputeAvailableFeatures(STI.getFeatureBits()));
}
diff --git a/llvm/tools/llvm-exegesis/lib/SnippetFile.cpp b/llvm/tools/llvm-exegesis/lib/SnippetFile.cpp
index d67a24b5596cc..2f32b23aea4e1 100644
--- a/llvm/tools/llvm-exegesis/lib/SnippetFile.cpp
+++ b/llvm/tools/llvm-exegesis/lib/SnippetFile.cpp
@@ -272,8 +272,7 @@ Expected<std::vector<BenchmarkCode>> readSnippets(const LLVMState &State,
const std::unique_ptr<MCTargetAsmParser> TargetAsmParser(
TM.getTarget().createMCAsmParser(*TM.getMCSubtargetInfo(), *AsmParser,
- *TM.getMCInstrInfo(),
- MCTargetOptions()));
+ *TM.getMCInstrInfo()));
if (!TargetAsmParser)
return make_error<Failure>("cannot create target asm parser");
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 4781ff81e7446..794e3ce4e7534 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
@@ -115,7 +115,7 @@ static int AssembleInput(const char *ProgName, const Target *TheTarget,
createMCAsmParser(SrcMgr, Ctx, Str, MAI));
std::unique_ptr<MCTargetAsmParser> TAP(
- TheTarget->createMCAsmParser(STI, *Parser, MCII, MCOptions));
+ TheTarget->createMCAsmParser(STI, *Parser, MCII));
if (!TAP) {
errs() << ProgName
diff --git a/llvm/tools/llvm-mc/llvm-mc.cpp b/llvm/tools/llvm-mc/llvm-mc.cpp
index 5080afb2b108a..0ffe8e87672ec 100644
--- a/llvm/tools/llvm-mc/llvm-mc.cpp
+++ b/llvm/tools/llvm-mc/llvm-mc.cpp
@@ -356,7 +356,7 @@ static int AssembleInput(const char *ProgName, const Target *TheTarget,
std::unique_ptr<MCAsmParser> Parser(
createMCAsmParser(SrcMgr, Ctx, Str, MAI));
std::unique_ptr<MCTargetAsmParser> TAP(
- TheTarget->createMCAsmParser(STI, *Parser, MCII, MCOptions));
+ TheTarget->createMCAsmParser(STI, *Parser, MCII));
if (!TAP) {
WithColor::error(errs(), ProgName)
diff --git a/llvm/tools/llvm-mca/CodeRegionGenerator.cpp b/llvm/tools/llvm-mca/CodeRegionGenerator.cpp
index 146907189929e..67b90d0ebe6ce 100644
--- a/llvm/tools/llvm-mca/CodeRegionGenerator.cpp
+++ b/llvm/tools/llvm-mca/CodeRegionGenerator.cpp
@@ -54,7 +54,7 @@ Expected<const CodeRegions &> AsmCodeRegionGenerator::parseCodeRegions(
Lexer.setLexMasmIntegers(true);
std::unique_ptr<MCTargetAsmParser> TAP(
- TheTarget.createMCAsmParser(STI, *Parser, MCII, Opts));
+ TheTarget.createMCAsmParser(STI, *Parser, MCII));
if (!TAP)
return make_error<StringError>(
"This target does not support assembly parsing.",
diff --git a/llvm/tools/llvm-ml/llvm-ml.cpp b/llvm/tools/llvm-ml/llvm-ml.cpp
index 7b88576e6075c..a75d831d586b8 100644
--- a/llvm/tools/llvm-ml/llvm-ml.cpp
+++ b/llvm/tools/llvm-ml/llvm-ml.cpp
@@ -158,7 +158,7 @@ static int AssembleInput(StringRef ProgName, const Target *TheTarget,
std::unique_ptr<MCAsmParser> Parser(
createMCMasmParser(SrcMgr, Ctx, Str, MAI, TM, 0));
std::unique_ptr<MCTargetAsmParser> TAP(
- TheTarget->createMCAsmParser(STI, *Parser, MCII, MCOptions));
+ TheTarget->createMCAsmParser(STI, *Parser, MCII));
if (!TAP) {
WithColor::error(errs(), ProgName)
diff --git a/llvm/unittests/MC/SystemZ/SystemZAsmLexerTest.cpp b/llvm/unittests/MC/SystemZ/SystemZAsmLexerTest.cpp
index 74da8fe77829f..08ed15aef079a 100644
--- a/llvm/unittests/MC/SystemZ/SystemZAsmLexerTest.cpp
+++ b/llvm/unittests/MC/SystemZ/SystemZAsmLexerTest.cpp
@@ -90,8 +90,7 @@ class SystemZAsmLexerTest : public ::testing::Test {
Parser.reset(createMCAsmParser(SrcMgr, *Ctx, *Str, *MAI));
- TargetAsmParser.reset(
- TheTarget->createMCAsmParser(*STI, *Parser, *MII, MCOptions));
+ TargetAsmParser.reset(TheTarget->createMCAsmParser(*STI, *Parser, *MII));
Parser->setTargetParser(*TargetAsmParser);
}
>From 57f6d264899a84227be80063aa58a81946197550 Mon Sep 17 00:00:00 2001
From: Fangrui Song <i at maskray.me>
Date: Sat, 25 Apr 2026 11:46:47 -0700
Subject: [PATCH 2/3] fix clang cc1as_main.cpp
---
clang/lib/Parse/ParseStmtAsm.cpp | 2 +-
clang/tools/driver/cc1as_main.cpp | 3 +--
2 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/clang/lib/Parse/ParseStmtAsm.cpp b/clang/lib/Parse/ParseStmtAsm.cpp
index d434ddbae6f58..fd712b3de1e90 100644
--- a/clang/lib/Parse/ParseStmtAsm.cpp
+++ b/clang/lib/Parse/ParseStmtAsm.cpp
@@ -582,7 +582,7 @@ StmtResult Parser::ParseMicrosoftAsmStatement(SourceLocation AsmLoc) {
createMCAsmParser(TempSrcMgr, Ctx, *Str, *MAI));
std::unique_ptr<llvm::MCTargetAsmParser> TargetParser(
- TheTarget->createMCAsmParser(*STI, *Parser, *MII, MCOptions));
+ TheTarget->createMCAsmParser(*STI, *Parser, *MII));
// Target AsmParser may not be linked in clang-based tools.
if (!TargetParser) {
Diag(AsmLoc, diag::err_msasm_unable_to_create_target)
diff --git a/clang/tools/driver/cc1as_main.cpp b/clang/tools/driver/cc1as_main.cpp
index 8d343fcd634df..cacccd028fa06 100644
--- a/clang/tools/driver/cc1as_main.cpp
+++ b/clang/tools/driver/cc1as_main.cpp
@@ -625,9 +625,8 @@ static bool ExecuteAssemblerImpl(AssemblerInvocation &Opts,
std::unique_ptr<MCAsmParser> Parser(
createMCAsmParser(SrcMgr, Ctx, *Str, *MAI));
- // FIXME: init MCTargetOptions from sanitizer flags here.
std::unique_ptr<MCTargetAsmParser> TAP(
- TheTarget->createMCAsmParser(*STI, *Parser, *MCII, MCOptions));
+ TheTarget->createMCAsmParser(*STI, *Parser, *MCII));
if (!TAP)
Failed = Diags.Report(diag::err_target_unknown_triple) << Opts.Triple.str();
>From 07bff584e2794e75158235cdaf7738c98ed381fe Mon Sep 17 00:00:00 2001
From: Fangrui Song <i at maskray.me>
Date: Sat, 25 Apr 2026 17:03:29 -0700
Subject: [PATCH 3/3] fix ROCDL
---
mlir/lib/Target/LLVM/ROCDL/Target.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mlir/lib/Target/LLVM/ROCDL/Target.cpp b/mlir/lib/Target/LLVM/ROCDL/Target.cpp
index e3ad7cf8b5b04..25ed2d143e585 100644
--- a/mlir/lib/Target/LLVM/ROCDL/Target.cpp
+++ b/mlir/lib/Target/LLVM/ROCDL/Target.cpp
@@ -325,7 +325,7 @@ mlir::ROCDL::assembleIsa(StringRef isa, StringRef targetTriple, StringRef chip,
std::unique_ptr<llvm::MCAsmParser> parser(
createMCAsmParser(srcMgr, ctx, *mcStreamer, *mai));
std::unique_ptr<llvm::MCTargetAsmParser> tap(
- target->createMCAsmParser(*sti, *parser, *mcii, mcOptions));
+ target->createMCAsmParser(*sti, *parser, *mcii));
if (!tap)
return emitError() << "assembler initialization error";
More information about the Mlir-commits
mailing list