[llvm] [NFC][MC] Use `StringRef` for Modifier in Inst/Asm Printers (PR #135403)
Rahul Joshi via llvm-commits
llvm-commits at lists.llvm.org
Sat Apr 12 11:19:39 PDT 2025
https://github.com/jurahul updated https://github.com/llvm/llvm-project/pull/135403
>From 1b7a0accc76f4a620ad8ddc06a9f575fea9ba4f8 Mon Sep 17 00:00:00 2001
From: Rahul Joshi <rjoshi at nvidia.com>
Date: Fri, 11 Apr 2025 09:58:15 -0700
Subject: [PATCH] [NFC][LLVM] Use `StringRef` for Modifier in Inst/ASM Printers
- Change various Inst/Asm Printer functions to use a StringRef
for the Modifier parameter (instead of a const char *).
- This simplifies various string comparisons used within these
functions.
---
.../BPF/MCTargetDesc/BPFInstPrinter.cpp | 7 ++--
.../Target/BPF/MCTargetDesc/BPFInstPrinter.h | 6 +--
.../CSKY/MCTargetDesc/CSKYInstPrinter.cpp | 4 +-
.../CSKY/MCTargetDesc/CSKYInstPrinter.h | 2 +-
.../Lanai/MCTargetDesc/LanaiInstPrinter.cpp | 12 ++----
.../Lanai/MCTargetDesc/LanaiInstPrinter.h | 12 ++----
.../MSP430/MCTargetDesc/MSP430InstPrinter.cpp | 6 +--
.../MSP430/MCTargetDesc/MSP430InstPrinter.h | 6 +--
llvm/lib/Target/MSP430/MSP430AsmPrinter.cpp | 12 +++---
llvm/lib/Target/Mips/MipsAsmPrinter.cpp | 5 +--
llvm/lib/Target/Mips/MipsAsmPrinter.h | 3 +-
.../PowerPC/MCTargetDesc/PPCInstPrinter.cpp | 9 ++---
.../PowerPC/MCTargetDesc/PPCInstPrinter.h | 2 +-
.../RISCV/MCTargetDesc/RISCVInstPrinter.cpp | 5 +--
.../RISCV/MCTargetDesc/RISCVInstPrinter.h | 2 +-
.../SPIRV/MCTargetDesc/SPIRVInstPrinter.cpp | 3 +-
.../SPIRV/MCTargetDesc/SPIRVInstPrinter.h | 3 +-
.../Target/VE/MCTargetDesc/VEInstPrinter.cpp | 40 ++-----------------
.../Target/VE/MCTargetDesc/VEInstPrinter.h | 12 ++----
llvm/lib/Target/X86/X86AsmPrinter.cpp | 35 ++++++++--------
llvm/lib/Target/X86/X86AsmPrinter.h | 8 ++--
21 files changed, 66 insertions(+), 128 deletions(-)
diff --git a/llvm/lib/Target/BPF/MCTargetDesc/BPFInstPrinter.cpp b/llvm/lib/Target/BPF/MCTargetDesc/BPFInstPrinter.cpp
index 792aa47e77a0a..89893b10f3846 100644
--- a/llvm/lib/Target/BPF/MCTargetDesc/BPFInstPrinter.cpp
+++ b/llvm/lib/Target/BPF/MCTargetDesc/BPFInstPrinter.cpp
@@ -51,8 +51,7 @@ static void printExpr(const MCExpr *Expr, raw_ostream &O) {
}
void BPFInstPrinter::printOperand(const MCInst *MI, unsigned OpNo,
- raw_ostream &O, const char *Modifier) {
- assert((Modifier == nullptr || Modifier[0] == 0) && "No modifiers supported");
+ raw_ostream &O) {
const MCOperand &Op = MI->getOperand(OpNo);
if (Op.isReg()) {
O << getRegisterName(Op.getReg());
@@ -64,8 +63,8 @@ void BPFInstPrinter::printOperand(const MCInst *MI, unsigned OpNo,
}
}
-void BPFInstPrinter::printMemOperand(const MCInst *MI, int OpNo, raw_ostream &O,
- const char *Modifier) {
+void BPFInstPrinter::printMemOperand(const MCInst *MI, int OpNo,
+ raw_ostream &O) {
const MCOperand &RegOp = MI->getOperand(OpNo);
const MCOperand &OffsetOp = MI->getOperand(OpNo + 1);
diff --git a/llvm/lib/Target/BPF/MCTargetDesc/BPFInstPrinter.h b/llvm/lib/Target/BPF/MCTargetDesc/BPFInstPrinter.h
index 41835bb2d10d8..c8c4642868f01 100644
--- a/llvm/lib/Target/BPF/MCTargetDesc/BPFInstPrinter.h
+++ b/llvm/lib/Target/BPF/MCTargetDesc/BPFInstPrinter.h
@@ -24,10 +24,8 @@ class BPFInstPrinter : public MCInstPrinter {
void printInst(const MCInst *MI, uint64_t Address, StringRef Annot,
const MCSubtargetInfo &STI, raw_ostream &O) override;
- void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O,
- const char *Modifier = nullptr);
- void printMemOperand(const MCInst *MI, int OpNo, raw_ostream &O,
- const char *Modifier = nullptr);
+ void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
+ void printMemOperand(const MCInst *MI, int OpNo, raw_ostream &O);
void printImm64Operand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
void printBrTargetOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
diff --git a/llvm/lib/Target/CSKY/MCTargetDesc/CSKYInstPrinter.cpp b/llvm/lib/Target/CSKY/MCTargetDesc/CSKYInstPrinter.cpp
index a4b0d8488cf53..47c05d67296e3 100644
--- a/llvm/lib/Target/CSKY/MCTargetDesc/CSKYInstPrinter.cpp
+++ b/llvm/lib/Target/CSKY/MCTargetDesc/CSKYInstPrinter.cpp
@@ -98,9 +98,7 @@ void CSKYInstPrinter::printFPRRegName(raw_ostream &O, unsigned RegNo) const {
}
void CSKYInstPrinter::printOperand(const MCInst *MI, unsigned OpNo,
- const MCSubtargetInfo &STI, raw_ostream &O,
- const char *Modifier) {
- assert((Modifier == 0 || Modifier[0] == 0) && "No modifiers supported");
+ const MCSubtargetInfo &STI, raw_ostream &O) {
const MCOperand &MO = MI->getOperand(OpNo);
if (MO.isReg()) {
diff --git a/llvm/lib/Target/CSKY/MCTargetDesc/CSKYInstPrinter.h b/llvm/lib/Target/CSKY/MCTargetDesc/CSKYInstPrinter.h
index 6640add076b4b..da77bf7f009e4 100644
--- a/llvm/lib/Target/CSKY/MCTargetDesc/CSKYInstPrinter.h
+++ b/llvm/lib/Target/CSKY/MCTargetDesc/CSKYInstPrinter.h
@@ -34,7 +34,7 @@ class CSKYInstPrinter : public MCInstPrinter {
void printRegName(raw_ostream &O, MCRegister Reg) override;
void printOperand(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI,
- raw_ostream &O, const char *Modifier = nullptr);
+ raw_ostream &O);
void printFPRRegName(raw_ostream &O, unsigned RegNo) const;
diff --git a/llvm/lib/Target/Lanai/MCTargetDesc/LanaiInstPrinter.cpp b/llvm/lib/Target/Lanai/MCTargetDesc/LanaiInstPrinter.cpp
index 2cad5cf6cafbd..837d8fea1c896 100644
--- a/llvm/lib/Target/Lanai/MCTargetDesc/LanaiInstPrinter.cpp
+++ b/llvm/lib/Target/Lanai/MCTargetDesc/LanaiInstPrinter.cpp
@@ -144,8 +144,7 @@ void LanaiInstPrinter::printInst(const MCInst *MI, uint64_t Address,
}
void LanaiInstPrinter::printOperand(const MCInst *MI, unsigned OpNo,
- raw_ostream &OS, const char *Modifier) {
- assert((Modifier == nullptr || Modifier[0] == 0) && "No modifiers supported");
+ raw_ostream &OS) {
const MCOperand &Op = MI->getOperand(OpNo);
if (Op.isReg())
OS << "%" << getRegisterName(Op.getReg());
@@ -232,8 +231,7 @@ static void printMemoryImmediateOffset(const MCAsmInfo &MAI,
}
void LanaiInstPrinter::printMemRiOperand(const MCInst *MI, int OpNo,
- raw_ostream &OS,
- const char * /*Modifier*/) {
+ raw_ostream &OS) {
const MCOperand &RegOp = MI->getOperand(OpNo);
const MCOperand &OffsetOp = MI->getOperand(OpNo + 1);
const MCOperand &AluOp = MI->getOperand(OpNo + 2);
@@ -247,8 +245,7 @@ void LanaiInstPrinter::printMemRiOperand(const MCInst *MI, int OpNo,
}
void LanaiInstPrinter::printMemRrOperand(const MCInst *MI, int OpNo,
- raw_ostream &OS,
- const char * /*Modifier*/) {
+ raw_ostream &OS) {
const MCOperand &RegOp = MI->getOperand(OpNo);
const MCOperand &OffsetOp = MI->getOperand(OpNo + 1);
const MCOperand &AluOp = MI->getOperand(OpNo + 2);
@@ -268,8 +265,7 @@ void LanaiInstPrinter::printMemRrOperand(const MCInst *MI, int OpNo,
}
void LanaiInstPrinter::printMemSplsOperand(const MCInst *MI, int OpNo,
- raw_ostream &OS,
- const char * /*Modifier*/) {
+ raw_ostream &OS) {
const MCOperand &RegOp = MI->getOperand(OpNo);
const MCOperand &OffsetOp = MI->getOperand(OpNo + 1);
const MCOperand &AluOp = MI->getOperand(OpNo + 2);
diff --git a/llvm/lib/Target/Lanai/MCTargetDesc/LanaiInstPrinter.h b/llvm/lib/Target/Lanai/MCTargetDesc/LanaiInstPrinter.h
index de3cb8c178d8d..9bd2ff789bc4c 100644
--- a/llvm/lib/Target/Lanai/MCTargetDesc/LanaiInstPrinter.h
+++ b/llvm/lib/Target/Lanai/MCTargetDesc/LanaiInstPrinter.h
@@ -26,15 +26,11 @@ class LanaiInstPrinter : public MCInstPrinter {
void printInst(const MCInst *MI, uint64_t Address, StringRef Annot,
const MCSubtargetInfo &STI, raw_ostream &O) override;
- void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O,
- const char *Modifier = nullptr);
+ void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
void printPredicateOperand(const MCInst *MI, unsigned OpNum, raw_ostream &O);
- void printMemRiOperand(const MCInst *MI, int OpNo, raw_ostream &O,
- const char *Modifier = nullptr);
- void printMemRrOperand(const MCInst *MI, int OpNo, raw_ostream &O,
- const char *Modifier = nullptr);
- void printMemSplsOperand(const MCInst *MI, int OpNo, raw_ostream &O,
- const char *Modifier = nullptr);
+ void printMemRiOperand(const MCInst *MI, int OpNo, raw_ostream &O);
+ void printMemRrOperand(const MCInst *MI, int OpNo, raw_ostream &O);
+ void printMemSplsOperand(const MCInst *MI, int OpNo, raw_ostream &O);
void printCCOperand(const MCInst *MI, int OpNo, raw_ostream &O);
void printHi16ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
void printHi16AndImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
diff --git a/llvm/lib/Target/MSP430/MCTargetDesc/MSP430InstPrinter.cpp b/llvm/lib/Target/MSP430/MCTargetDesc/MSP430InstPrinter.cpp
index 57e23d2472042..f925a1efc88f5 100644
--- a/llvm/lib/Target/MSP430/MCTargetDesc/MSP430InstPrinter.cpp
+++ b/llvm/lib/Target/MSP430/MCTargetDesc/MSP430InstPrinter.cpp
@@ -53,8 +53,7 @@ void MSP430InstPrinter::printPCRelImmOperand(const MCInst *MI, unsigned OpNo,
}
void MSP430InstPrinter::printOperand(const MCInst *MI, unsigned OpNo,
- raw_ostream &O, const char *Modifier) {
- assert((Modifier == nullptr || Modifier[0] == 0) && "No modifiers supported");
+ raw_ostream &O) {
const MCOperand &Op = MI->getOperand(OpNo);
if (Op.isReg()) {
O << getRegisterName(Op.getReg());
@@ -68,8 +67,7 @@ void MSP430InstPrinter::printOperand(const MCInst *MI, unsigned OpNo,
}
void MSP430InstPrinter::printSrcMemOperand(const MCInst *MI, unsigned OpNo,
- raw_ostream &O,
- const char *Modifier) {
+ raw_ostream &O) {
const MCOperand &Base = MI->getOperand(OpNo);
const MCOperand &Disp = MI->getOperand(OpNo+1);
diff --git a/llvm/lib/Target/MSP430/MCTargetDesc/MSP430InstPrinter.h b/llvm/lib/Target/MSP430/MCTargetDesc/MSP430InstPrinter.h
index e1785c98bd5c7..eed0074d72631 100644
--- a/llvm/lib/Target/MSP430/MCTargetDesc/MSP430InstPrinter.h
+++ b/llvm/lib/Target/MSP430/MCTargetDesc/MSP430InstPrinter.h
@@ -38,11 +38,9 @@ namespace llvm {
static const char *getRegisterName(MCRegister Reg);
private:
- void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O,
- const char *Modifier = nullptr);
+ void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
void printPCRelImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
- void printSrcMemOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O,
- const char *Modifier = nullptr);
+ void printSrcMemOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
void printIndRegOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
void printPostIndRegOperand(const MCInst *MI, unsigned OpNo,
raw_ostream &O);
diff --git a/llvm/lib/Target/MSP430/MSP430AsmPrinter.cpp b/llvm/lib/Target/MSP430/MSP430AsmPrinter.cpp
index 247054343a85a..27319877f5eb1 100644
--- a/llvm/lib/Target/MSP430/MSP430AsmPrinter.cpp
+++ b/llvm/lib/Target/MSP430/MSP430AsmPrinter.cpp
@@ -43,8 +43,8 @@ namespace {
bool runOnMachineFunction(MachineFunction &MF) override;
void PrintSymbolOperand(const MachineOperand &MO, raw_ostream &O) override;
- void printOperand(const MachineInstr *MI, int OpNum,
- raw_ostream &O, const char* Modifier = nullptr);
+ void printOperand(const MachineInstr *MI, int OpNum, raw_ostream &O,
+ bool PrefixHash = true);
void printSrcMemOperand(const MachineInstr *MI, int OpNum,
raw_ostream &O);
bool PrintAsmOperand(const MachineInstr *MI, unsigned OpNo,
@@ -70,7 +70,7 @@ void MSP430AsmPrinter::PrintSymbolOperand(const MachineOperand &MO,
}
void MSP430AsmPrinter::printOperand(const MachineInstr *MI, int OpNum,
- raw_ostream &O, const char *Modifier) {
+ raw_ostream &O, bool PrefixHash) {
const MachineOperand &MO = MI->getOperand(OpNum);
switch (MO.getType()) {
default: llvm_unreachable("Not implemented yet!");
@@ -78,7 +78,7 @@ void MSP430AsmPrinter::printOperand(const MachineInstr *MI, int OpNum,
O << MSP430InstPrinter::getRegisterName(MO.getReg());
return;
case MachineOperand::MO_Immediate:
- if (!Modifier || strcmp(Modifier, "nohash"))
+ if (PrefixHash)
O << '#';
O << MO.getImm();
return;
@@ -90,7 +90,7 @@ void MSP430AsmPrinter::printOperand(const MachineInstr *MI, int OpNum,
// register base, we should not emit any prefix symbol here, e.g.
// mov.w glb(r1), r2
// Otherwise (!) msp430-as will silently miscompile the output :(
- if (!Modifier || strcmp(Modifier, "nohash"))
+ if (PrefixHash)
O << '#';
PrintSymbolOperand(MO, O);
return;
@@ -108,7 +108,7 @@ void MSP430AsmPrinter::printSrcMemOperand(const MachineInstr *MI, int OpNum,
// Imm here is in fact global address - print extra modifier.
if (Disp.isImm() && Base.getReg() == MSP430::SR)
O << '&';
- printOperand(MI, OpNum+1, O, "nohash");
+ printOperand(MI, OpNum + 1, O, /*PrefixHash=*/false);
// Print register base field
if (Base.getReg() != MSP430::SR && Base.getReg() != MSP430::PC) {
diff --git a/llvm/lib/Target/Mips/MipsAsmPrinter.cpp b/llvm/lib/Target/Mips/MipsAsmPrinter.cpp
index b411056b332f7..8233fdfe81254 100644
--- a/llvm/lib/Target/Mips/MipsAsmPrinter.cpp
+++ b/llvm/lib/Target/Mips/MipsAsmPrinter.cpp
@@ -714,9 +714,8 @@ printMemOperandEA(const MachineInstr *MI, int opNum, raw_ostream &O) {
printOperand(MI, opNum+1, O);
}
-void MipsAsmPrinter::
-printFCCOperand(const MachineInstr *MI, int opNum, raw_ostream &O,
- const char *Modifier) {
+void MipsAsmPrinter::printFCCOperand(const MachineInstr *MI, int opNum,
+ raw_ostream &O) {
const MachineOperand &MO = MI->getOperand(opNum);
O << Mips::MipsFCCToString((Mips::CondCode)MO.getImm());
}
diff --git a/llvm/lib/Target/Mips/MipsAsmPrinter.h b/llvm/lib/Target/Mips/MipsAsmPrinter.h
index 060bba6ef65e0..5a878e4b90fd9 100644
--- a/llvm/lib/Target/Mips/MipsAsmPrinter.h
+++ b/llvm/lib/Target/Mips/MipsAsmPrinter.h
@@ -152,8 +152,7 @@ class LLVM_LIBRARY_VISIBILITY MipsAsmPrinter : public AsmPrinter {
void printOperand(const MachineInstr *MI, int opNum, raw_ostream &O);
void printMemOperand(const MachineInstr *MI, int opNum, raw_ostream &O);
void printMemOperandEA(const MachineInstr *MI, int opNum, raw_ostream &O);
- void printFCCOperand(const MachineInstr *MI, int opNum, raw_ostream &O,
- const char *Modifier = nullptr);
+ void printFCCOperand(const MachineInstr *MI, int opNum, raw_ostream &O);
void printRegisterList(const MachineInstr *MI, int opNum, raw_ostream &O);
void emitStartOfAsmFile(Module &M) override;
void emitEndOfAsmFile(Module &M) override;
diff --git a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCInstPrinter.cpp b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCInstPrinter.cpp
index ee4a7009535c7..0e1b28af691d5 100644
--- a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCInstPrinter.cpp
+++ b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCInstPrinter.cpp
@@ -218,11 +218,10 @@ void PPCInstPrinter::printInst(const MCInst *MI, uint64_t Address,
void PPCInstPrinter::printPredicateOperand(const MCInst *MI, unsigned OpNo,
const MCSubtargetInfo &STI,
- raw_ostream &O,
- const char *Modifier) {
+ raw_ostream &O, StringRef Modifier) {
unsigned Code = MI->getOperand(OpNo).getImm();
- if (StringRef(Modifier) == "cc") {
+ if (Modifier == "cc") {
switch ((PPC::Predicate)Code) {
case PPC::PRED_LT_MINUS:
case PPC::PRED_LT_PLUS:
@@ -271,7 +270,7 @@ void PPCInstPrinter::printPredicateOperand(const MCInst *MI, unsigned OpNo,
llvm_unreachable("Invalid predicate code");
}
- if (StringRef(Modifier) == "pm") {
+ if (Modifier == "pm") {
switch ((PPC::Predicate)Code) {
case PPC::PRED_LT:
case PPC::PRED_LE:
@@ -309,7 +308,7 @@ void PPCInstPrinter::printPredicateOperand(const MCInst *MI, unsigned OpNo,
llvm_unreachable("Invalid predicate code");
}
- assert(StringRef(Modifier) == "reg" &&
+ assert(Modifier == "reg" &&
"Need to specify 'cc', 'pm' or 'reg' as predicate op modifier!");
printOperand(MI, OpNo + 1, STI, O);
}
diff --git a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCInstPrinter.h b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCInstPrinter.h
index 2286484c8a2dd..48f66ca26958e 100644
--- a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCInstPrinter.h
+++ b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCInstPrinter.h
@@ -52,7 +52,7 @@ class PPCInstPrinter : public MCInstPrinter {
raw_ostream &O);
void printPredicateOperand(const MCInst *MI, unsigned OpNo,
const MCSubtargetInfo &STI, raw_ostream &O,
- const char *Modifier = nullptr);
+ StringRef Modifier = {});
void printATBitsAsHint(const MCInst *MI, unsigned OpNo,
const MCSubtargetInfo &STI, raw_ostream &O);
diff --git a/llvm/lib/Target/RISCV/MCTargetDesc/RISCVInstPrinter.cpp b/llvm/lib/Target/RISCV/MCTargetDesc/RISCVInstPrinter.cpp
index 83ecf805489c1..b4b20e9e764bd 100644
--- a/llvm/lib/Target/RISCV/MCTargetDesc/RISCVInstPrinter.cpp
+++ b/llvm/lib/Target/RISCV/MCTargetDesc/RISCVInstPrinter.cpp
@@ -78,9 +78,8 @@ void RISCVInstPrinter::printRegName(raw_ostream &O, MCRegister Reg) {
}
void RISCVInstPrinter::printOperand(const MCInst *MI, unsigned OpNo,
- const MCSubtargetInfo &STI, raw_ostream &O,
- const char *Modifier) {
- assert((Modifier == nullptr || Modifier[0] == 0) && "No modifiers supported");
+ const MCSubtargetInfo &STI,
+ raw_ostream &O) {
const MCOperand &MO = MI->getOperand(OpNo);
if (MO.isReg()) {
diff --git a/llvm/lib/Target/RISCV/MCTargetDesc/RISCVInstPrinter.h b/llvm/lib/Target/RISCV/MCTargetDesc/RISCVInstPrinter.h
index 7463088d1bebf..8a6129926d4f2 100644
--- a/llvm/lib/Target/RISCV/MCTargetDesc/RISCVInstPrinter.h
+++ b/llvm/lib/Target/RISCV/MCTargetDesc/RISCVInstPrinter.h
@@ -31,7 +31,7 @@ class RISCVInstPrinter : public MCInstPrinter {
void printRegName(raw_ostream &O, MCRegister Reg) override;
void printOperand(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI,
- raw_ostream &O, const char *Modifier = nullptr);
+ raw_ostream &O);
void printBranchOperand(const MCInst *MI, uint64_t Address, unsigned OpNo,
const MCSubtargetInfo &STI, raw_ostream &O);
void printCSRSystemRegister(const MCInst *MI, unsigned OpNo,
diff --git a/llvm/lib/Target/SPIRV/MCTargetDesc/SPIRVInstPrinter.cpp b/llvm/lib/Target/SPIRV/MCTargetDesc/SPIRVInstPrinter.cpp
index e559aa2483f26..b486132077e3b 100644
--- a/llvm/lib/Target/SPIRV/MCTargetDesc/SPIRVInstPrinter.cpp
+++ b/llvm/lib/Target/SPIRV/MCTargetDesc/SPIRVInstPrinter.cpp
@@ -359,8 +359,7 @@ static void printExpr(const MCExpr *Expr, raw_ostream &O) {
}
void SPIRVInstPrinter::printOperand(const MCInst *MI, unsigned OpNo,
- raw_ostream &O, const char *Modifier) {
- assert((Modifier == 0 || Modifier[0] == 0) && "No modifiers supported");
+ raw_ostream &O) {
if (OpNo < MI->getNumOperands()) {
const MCOperand &Op = MI->getOperand(OpNo);
if (Op.isReg())
diff --git a/llvm/lib/Target/SPIRV/MCTargetDesc/SPIRVInstPrinter.h b/llvm/lib/Target/SPIRV/MCTargetDesc/SPIRVInstPrinter.h
index a7b38a6951c51..0c9c3bc51f433 100644
--- a/llvm/lib/Target/SPIRV/MCTargetDesc/SPIRVInstPrinter.h
+++ b/llvm/lib/Target/SPIRV/MCTargetDesc/SPIRVInstPrinter.h
@@ -28,8 +28,7 @@ class SPIRVInstPrinter : public MCInstPrinter {
void printInst(const MCInst *MI, uint64_t Address, StringRef Annot,
const MCSubtargetInfo &STI, raw_ostream &OS) override;
- void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O,
- const char *Modifier = nullptr);
+ void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
void printStringImm(const MCInst *MI, unsigned OpNo, raw_ostream &O);
diff --git a/llvm/lib/Target/VE/MCTargetDesc/VEInstPrinter.cpp b/llvm/lib/Target/VE/MCTargetDesc/VEInstPrinter.cpp
index 47455a9a0274c..77bd30e96f7b2 100644
--- a/llvm/lib/Target/VE/MCTargetDesc/VEInstPrinter.cpp
+++ b/llvm/lib/Target/VE/MCTargetDesc/VEInstPrinter.cpp
@@ -66,15 +66,7 @@ void VEInstPrinter::printOperand(const MCInst *MI, int OpNum,
void VEInstPrinter::printMemASXOperand(const MCInst *MI, int OpNum,
const MCSubtargetInfo &STI,
- raw_ostream &O, const char *Modifier) {
- // If this is an ADD operand, emit it like normal operands.
- if (Modifier && !strcmp(Modifier, "arith")) {
- printOperand(MI, OpNum, STI, O);
- O << ", ";
- printOperand(MI, OpNum + 1, STI, O);
- return;
- }
-
+ raw_ostream &O) {
if (MI->getOperand(OpNum + 2).isImm() &&
MI->getOperand(OpNum + 2).getImm() == 0) {
// don't print "+0"
@@ -110,15 +102,7 @@ void VEInstPrinter::printMemASXOperand(const MCInst *MI, int OpNum,
void VEInstPrinter::printMemASOperandASX(const MCInst *MI, int OpNum,
const MCSubtargetInfo &STI,
- raw_ostream &O, const char *Modifier) {
- // If this is an ADD operand, emit it like normal operands.
- if (Modifier && !strcmp(Modifier, "arith")) {
- printOperand(MI, OpNum, STI, O);
- O << ", ";
- printOperand(MI, OpNum + 1, STI, O);
- return;
- }
-
+ raw_ostream &O) {
if (MI->getOperand(OpNum + 1).isImm() &&
MI->getOperand(OpNum + 1).getImm() == 0) {
// don't print "+0"
@@ -141,15 +125,7 @@ void VEInstPrinter::printMemASOperandASX(const MCInst *MI, int OpNum,
void VEInstPrinter::printMemASOperandRRM(const MCInst *MI, int OpNum,
const MCSubtargetInfo &STI,
- raw_ostream &O, const char *Modifier) {
- // If this is an ADD operand, emit it like normal operands.
- if (Modifier && !strcmp(Modifier, "arith")) {
- printOperand(MI, OpNum, STI, O);
- O << ", ";
- printOperand(MI, OpNum + 1, STI, O);
- return;
- }
-
+ raw_ostream &O) {
if (MI->getOperand(OpNum + 1).isImm() &&
MI->getOperand(OpNum + 1).getImm() == 0) {
// don't print "+0"
@@ -172,15 +148,7 @@ void VEInstPrinter::printMemASOperandRRM(const MCInst *MI, int OpNum,
void VEInstPrinter::printMemASOperandHM(const MCInst *MI, int OpNum,
const MCSubtargetInfo &STI,
- raw_ostream &O, const char *Modifier) {
- // If this is an ADD operand, emit it like normal operands.
- if (Modifier && !strcmp(Modifier, "arith")) {
- printOperand(MI, OpNum, STI, O);
- O << ", ";
- printOperand(MI, OpNum + 1, STI, O);
- return;
- }
-
+ raw_ostream &O) {
if (MI->getOperand(OpNum + 1).isImm() &&
MI->getOperand(OpNum + 1).getImm() == 0) {
// don't print "+0"
diff --git a/llvm/lib/Target/VE/MCTargetDesc/VEInstPrinter.h b/llvm/lib/Target/VE/MCTargetDesc/VEInstPrinter.h
index aa3b003aaba14..fa33b29fa47f5 100644
--- a/llvm/lib/Target/VE/MCTargetDesc/VEInstPrinter.h
+++ b/llvm/lib/Target/VE/MCTargetDesc/VEInstPrinter.h
@@ -41,17 +41,13 @@ class VEInstPrinter : public MCInstPrinter {
void printOperand(const MCInst *MI, int OpNum, const MCSubtargetInfo &STI,
raw_ostream &OS);
void printMemASXOperand(const MCInst *MI, int OpNum,
- const MCSubtargetInfo &STI, raw_ostream &OS,
- const char *Modifier = nullptr);
+ const MCSubtargetInfo &STI, raw_ostream &OS);
void printMemASOperandASX(const MCInst *MI, int OpNum,
- const MCSubtargetInfo &STI, raw_ostream &OS,
- const char *Modifier = nullptr);
+ const MCSubtargetInfo &STI, raw_ostream &OS);
void printMemASOperandRRM(const MCInst *MI, int OpNum,
- const MCSubtargetInfo &STI, raw_ostream &OS,
- const char *Modifier = nullptr);
+ const MCSubtargetInfo &STI, raw_ostream &OS);
void printMemASOperandHM(const MCInst *MI, int OpNum,
- const MCSubtargetInfo &STI, raw_ostream &OS,
- const char *Modifier = nullptr);
+ const MCSubtargetInfo &STI, raw_ostream &OS);
void printMImmOperand(const MCInst *MI, int OpNum, const MCSubtargetInfo &STI,
raw_ostream &OS);
void printCCOperand(const MCInst *MI, int OpNum, const MCSubtargetInfo &STI,
diff --git a/llvm/lib/Target/X86/X86AsmPrinter.cpp b/llvm/lib/Target/X86/X86AsmPrinter.cpp
index a227afe37d737..29ec14e8cf46d 100644
--- a/llvm/lib/Target/X86/X86AsmPrinter.cpp
+++ b/llvm/lib/Target/X86/X86AsmPrinter.cpp
@@ -362,17 +362,18 @@ void X86AsmPrinter::PrintOperand(const MachineInstr *MI, unsigned OpNo,
/// deferring to PrintOperand() if no modifier was supplied or if operand is not
/// a register.
void X86AsmPrinter::PrintModifiedOperand(const MachineInstr *MI, unsigned OpNo,
- raw_ostream &O, const char *Modifier) {
+ raw_ostream &O, StringRef Modifier) {
const MachineOperand &MO = MI->getOperand(OpNo);
- if (!Modifier || !MO.isReg())
+ if (Modifier.empty() || !MO.isReg())
return PrintOperand(MI, OpNo, O);
if (MI->getInlineAsmDialect() == InlineAsm::AD_ATT)
O << '%';
Register Reg = MO.getReg();
- if (strncmp(Modifier, "subreg", strlen("subreg")) == 0) {
- unsigned Size = (strcmp(Modifier+6,"64") == 0) ? 64 :
- (strcmp(Modifier+6,"32") == 0) ? 32 :
- (strcmp(Modifier+6,"16") == 0) ? 16 : 8;
+ if (Modifier.consume_front("subreg")) {
+ unsigned Size = (Modifier == "64") ? 64
+ : (Modifier == "32") ? 32
+ : (Modifier == "16") ? 16
+ : 8;
Reg = getX86SubSuperRegister(Reg, Size);
}
O << X86ATTInstPrinter::getRegisterName(Reg);
@@ -400,15 +401,14 @@ void X86AsmPrinter::PrintPCRelImm(const MachineInstr *MI, unsigned OpNo,
}
void X86AsmPrinter::PrintLeaMemReference(const MachineInstr *MI, unsigned OpNo,
- raw_ostream &O, const char *Modifier) {
+ raw_ostream &O, StringRef Modifier) {
const MachineOperand &BaseReg = MI->getOperand(OpNo + X86::AddrBaseReg);
const MachineOperand &IndexReg = MI->getOperand(OpNo + X86::AddrIndexReg);
const MachineOperand &DispSpec = MI->getOperand(OpNo + X86::AddrDisp);
// If we really don't want to print out (rip), don't.
bool HasBaseReg = BaseReg.getReg() != 0;
- if (HasBaseReg && Modifier && !strcmp(Modifier, "no-rip") &&
- BaseReg.getReg() == X86::RIP)
+ if (HasBaseReg && Modifier == "no-rip" && BaseReg.getReg() == X86::RIP)
HasBaseReg = false;
// HasParenPart - True if we will print out the () part of the mem ref.
@@ -429,7 +429,7 @@ void X86AsmPrinter::PrintLeaMemReference(const MachineInstr *MI, unsigned OpNo,
break;
}
- if (Modifier && strcmp(Modifier, "H") == 0)
+ if (Modifier == "H")
O << "+8";
if (HasParenPart) {
@@ -483,7 +483,7 @@ void X86AsmPrinter::emitBasicBlockEnd(const MachineBasicBlock &MBB) {
}
void X86AsmPrinter::PrintMemReference(const MachineInstr *MI, unsigned OpNo,
- raw_ostream &O, const char *Modifier) {
+ raw_ostream &O, StringRef Modifier) {
assert(isMem(*MI, OpNo) && "Invalid memory reference!");
const MachineOperand &Segment = MI->getOperand(OpNo + X86::AddrSegmentReg);
if (Segment.getReg()) {
@@ -493,10 +493,9 @@ void X86AsmPrinter::PrintMemReference(const MachineInstr *MI, unsigned OpNo,
PrintLeaMemReference(MI, OpNo, O, Modifier);
}
-
void X86AsmPrinter::PrintIntelMemReference(const MachineInstr *MI,
unsigned OpNo, raw_ostream &O,
- const char *Modifier) {
+ StringRef Modifier) {
const MachineOperand &BaseReg = MI->getOperand(OpNo + X86::AddrBaseReg);
unsigned ScaleVal = MI->getOperand(OpNo + X86::AddrScaleAmt).getImm();
const MachineOperand &IndexReg = MI->getOperand(OpNo + X86::AddrIndexReg);
@@ -505,13 +504,11 @@ void X86AsmPrinter::PrintIntelMemReference(const MachineInstr *MI,
// If we really don't want to print out (rip), don't.
bool HasBaseReg = BaseReg.getReg() != 0;
- if (HasBaseReg && Modifier && !strcmp(Modifier, "no-rip") &&
- BaseReg.getReg() == X86::RIP)
+ if (HasBaseReg && Modifier == "no-rip" && BaseReg.getReg() == X86::RIP)
HasBaseReg = false;
// If we really just want to print out displacement.
- if (Modifier && (DispSpec.isGlobal() || DispSpec.isSymbol()) &&
- !strcmp(Modifier, "disp-only")) {
+ if ((DispSpec.isGlobal() || DispSpec.isSymbol()) && Modifier == "disp-only") {
HasBaseReg = false;
}
@@ -863,9 +860,9 @@ bool X86AsmPrinter::PrintAsmMemoryOperand(const MachineInstr *MI, unsigned OpNo,
}
}
if (MI->getInlineAsmDialect() == InlineAsm::AD_Intel) {
- PrintIntelMemReference(MI, OpNo, O, nullptr);
+ PrintIntelMemReference(MI, OpNo, O);
} else {
- PrintMemReference(MI, OpNo, O, nullptr);
+ PrintMemReference(MI, OpNo, O);
}
return false;
}
diff --git a/llvm/lib/Target/X86/X86AsmPrinter.h b/llvm/lib/Target/X86/X86AsmPrinter.h
index 693021eca3295..8dd7fa4431680 100644
--- a/llvm/lib/Target/X86/X86AsmPrinter.h
+++ b/llvm/lib/Target/X86/X86AsmPrinter.h
@@ -112,14 +112,14 @@ class LLVM_LIBRARY_VISIBILITY X86AsmPrinter : public AsmPrinter {
void PrintSymbolOperand(const MachineOperand &MO, raw_ostream &O) override;
void PrintOperand(const MachineInstr *MI, unsigned OpNo, raw_ostream &O);
void PrintModifiedOperand(const MachineInstr *MI, unsigned OpNo,
- raw_ostream &O, const char *Modifier);
+ raw_ostream &O, StringRef Modifier = {});
void PrintPCRelImm(const MachineInstr *MI, unsigned OpNo, raw_ostream &O);
void PrintLeaMemReference(const MachineInstr *MI, unsigned OpNo,
- raw_ostream &O, const char *Modifier);
+ raw_ostream &O, StringRef Modifier = {});
void PrintMemReference(const MachineInstr *MI, unsigned OpNo, raw_ostream &O,
- const char *Modifier);
+ StringRef Modifier = {});
void PrintIntelMemReference(const MachineInstr *MI, unsigned OpNo,
- raw_ostream &O, const char *Modifier);
+ raw_ostream &O, StringRef Modifier = {});
const MCSubtargetInfo *getIFuncMCSubtargetInfo() const override;
void emitMachOIFuncStubBody(Module &M, const GlobalIFunc &GI,
MCSymbol *LazyPointer) override;
More information about the llvm-commits
mailing list