Skip to content

Commit e878b7e

Browse files
committed
MCParsedAsmOperand::print: Add MCAsmInfo parameter
so that subclasses can provide the appropriate MCAsmInfo to print MCExpr objects. At present, llvm/utils/TableGen/AsmMatcherEmitter.cpp constucts a generic MCAsmInfo.
1 parent 33c265d commit e878b7e

File tree

25 files changed

+75
-62
lines changed

25 files changed

+75
-62
lines changed

llvm/include/llvm/MC/MCParser/MCParsedAsmOperand.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
namespace llvm {
1818

19+
class MCAsmInfo;
1920
class MCRegister;
2021
class raw_ostream;
2122

@@ -89,7 +90,7 @@ class LLVM_ABI MCParsedAsmOperand {
8990
virtual SMLoc getOffsetOfLoc() const { return SMLoc(); }
9091

9192
/// print - Print a debug representation of the operand to the given stream.
92-
virtual void print(raw_ostream &OS) const = 0;
93+
virtual void print(raw_ostream &, const MCAsmInfo &) const = 0;
9394

9495
/// dump - Print to the debug stream.
9596
virtual void dump() const;

llvm/lib/MC/MCParser/AsmParser.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2260,7 +2260,7 @@ bool AsmParser::parseAndMatchAndEmitTargetInstruction(ParseStatementInfo &Info,
22602260
for (unsigned i = 0; i != Info.ParsedOperands.size(); ++i) {
22612261
if (i != 0)
22622262
OS << ", ";
2263-
Info.ParsedOperands[i]->print(OS);
2263+
Info.ParsedOperands[i]->print(OS, MAI);
22642264
}
22652265
OS << "]";
22662266

llvm/lib/MC/MCParser/MCAsmParser.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include "llvm/ADT/StringRef.h"
1111
#include "llvm/ADT/Twine.h"
1212
#include "llvm/Config/llvm-config.h"
13+
#include "llvm/MC/MCAsmInfo.h"
1314
#include "llvm/MC/MCParser/AsmLexer.h"
1415
#include "llvm/MC/MCParser/MCParsedAsmOperand.h"
1516
#include "llvm/MC/MCParser/MCTargetAsmParser.h"
@@ -166,6 +167,6 @@ void MCParsedAsmOperand::dump() const {
166167
// Cannot completely remove virtual function even in release mode.
167168
#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
168169
dbgs() << " ";
169-
print(dbgs());
170+
print(dbgs(), MCAsmInfo());
170171
#endif
171172
}

llvm/lib/MC/MCParser/MasmParser.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2317,7 +2317,7 @@ bool MasmParser::parseStatement(ParseStatementInfo &Info,
23172317
for (unsigned i = 0; i != Info.ParsedOperands.size(); ++i) {
23182318
if (i != 0)
23192319
OS << ", ";
2320-
Info.ParsedOperands[i]->print(OS);
2320+
Info.ParsedOperands[i]->print(OS, MAI);
23212321
}
23222322
OS << "]";
23232323

llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2294,7 +2294,7 @@ class AArch64Operand : public MCParsedAsmOperand {
22942294
Inst.addOperand(MCOperand::createImm((MCE->getValue() - 90) / 180));
22952295
}
22962296

2297-
void print(raw_ostream &OS) const override;
2297+
void print(raw_ostream &OS, const MCAsmInfo &MAI) const override;
22982298

22992299
static std::unique_ptr<AArch64Operand>
23002300
CreateToken(StringRef Str, SMLoc S, MCContext &Ctx, bool IsSuffix = false) {
@@ -2584,7 +2584,7 @@ class AArch64Operand : public MCParsedAsmOperand {
25842584

25852585
} // end anonymous namespace.
25862586

2587-
void AArch64Operand::print(raw_ostream &OS) const {
2587+
void AArch64Operand::print(raw_ostream &OS, const MCAsmInfo &MAI) const {
25882588
switch (Kind) {
25892589
case k_FPImm:
25902590
OS << "<fpimm " << getFPImm().bitcastToAPInt().getZExtValue();
@@ -2601,12 +2601,12 @@ void AArch64Operand::print(raw_ostream &OS) const {
26012601
break;
26022602
}
26032603
case k_Immediate:
2604-
MCAsmInfo().printExpr(OS, *getImm());
2604+
MAI.printExpr(OS, *getImm());
26052605
break;
26062606
case k_ShiftedImm: {
26072607
unsigned Shift = getShiftedImmShift();
26082608
OS << "<shiftedimm ";
2609-
MCAsmInfo().printExpr(OS, *getShiftedImmVal());
2609+
MAI.printExpr(OS, *getShiftedImmVal());
26102610
OS << ", lsl #" << AArch64_AM::getShiftValue(Shift) << ">";
26112611
break;
26122612
}

llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1152,7 +1152,7 @@ class AMDGPUOperand : public MCParsedAsmOperand {
11521152
// clang-format on
11531153
}
11541154

1155-
void print(raw_ostream &OS) const override {
1155+
void print(raw_ostream &OS, const MCAsmInfo &MAI) const override {
11561156
switch (Kind) {
11571157
case Register:
11581158
OS << "<register " << AMDGPUInstPrinter::getRegisterName(getReg())
@@ -1170,7 +1170,7 @@ class AMDGPUOperand : public MCParsedAsmOperand {
11701170
break;
11711171
case Expression:
11721172
OS << "<expr ";
1173-
MCAsmInfo().printExpr(OS, *Expr);
1173+
MAI.printExpr(OS, *Expr);
11741174
OS << '>';
11751175
break;
11761176
}

llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3629,7 +3629,7 @@ class ARMOperand : public MCParsedAsmOperand {
36293629
Inst.addOperand(MCOperand::createImm(Imm == 48 ? 1 : 0));
36303630
}
36313631

3632-
void print(raw_ostream &OS) const override;
3632+
void print(raw_ostream &OS, const MCAsmInfo &MAI) const override;
36333633

36343634
static std::unique_ptr<ARMOperand> CreateITMask(unsigned Mask, SMLoc S,
36353635
ARMAsmParser &Parser) {
@@ -3979,7 +3979,7 @@ class ARMOperand : public MCParsedAsmOperand {
39793979

39803980
} // end anonymous namespace.
39813981

3982-
void ARMOperand::print(raw_ostream &OS) const {
3982+
void ARMOperand::print(raw_ostream &OS, const MCAsmInfo &MAI) const {
39833983
auto RegName = [](MCRegister Reg) {
39843984
if (Reg)
39853985
return ARMInstPrinter::getRegisterName(Reg);
@@ -4024,7 +4024,7 @@ void ARMOperand::print(raw_ostream &OS) const {
40244024
OS << "<banked reg: " << getBankedReg() << ">";
40254025
break;
40264026
case k_Immediate:
4027-
MCAsmInfo().printExpr(OS, *getImm());
4027+
MAI.printExpr(OS, *getImm());
40284028
break;
40294029
case k_MemBarrierOpt:
40304030
OS << "<ARM_MB::" << MemBOptToString(getMemBarrierOpt(), false) << ">";
@@ -4041,7 +4041,7 @@ void ARMOperand::print(raw_ostream &OS) const {
40414041
OS << " base:" << RegName(Memory.BaseRegNum);
40424042
if (Memory.OffsetImm) {
40434043
OS << " offset-imm:";
4044-
MCAsmInfo().printExpr(OS, *Memory.OffsetImm);
4044+
MAI.printExpr(OS, *Memory.OffsetImm);
40454045
}
40464046
if (Memory.OffsetRegNum)
40474047
OS << " offset-reg:" << (Memory.isNegative ? "-" : "")
@@ -4097,7 +4097,7 @@ void ARMOperand::print(raw_ostream &OS) const {
40974097
break;
40984098
case k_ConstantPoolImmediate:
40994099
OS << "<constant_pool_imm #";
4100-
MCAsmInfo().printExpr(OS, *getConstantPoolImm());
4100+
MAI.printExpr(OS, *getConstantPoolImm());
41014101
break;
41024102
case k_BitfieldDescriptor:
41034103
OS << "<bitfield " << "lsb: " << Bitfield.LSB

llvm/lib/Target/AVR/AsmParser/AVRAsmParser.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ class AVROperand : public MCParsedAsmOperand {
247247
SMLoc getStartLoc() const override { return Start; }
248248
SMLoc getEndLoc() const override { return End; }
249249

250-
void print(raw_ostream &O) const override {
250+
void print(raw_ostream &O, const MCAsmInfo &MAI) const override {
251251
switch (Kind) {
252252
case k_Token:
253253
O << "Token: \"" << getToken() << "\"";
@@ -257,14 +257,14 @@ class AVROperand : public MCParsedAsmOperand {
257257
break;
258258
case k_Immediate:
259259
O << "Immediate: \"";
260-
MCAsmInfo().printExpr(O, *getImm());
260+
MAI.printExpr(O, *getImm());
261261
O << "\"";
262262
break;
263263
case k_Memri: {
264264
// only manually print the size for non-negative values,
265265
// as the sign is inserted automatically.
266266
O << "Memri: \"" << getReg() << '+';
267-
MCAsmInfo().printExpr(O, *getImm());
267+
MAI.printExpr(O, *getImm());
268268
O << "\"";
269269
break;
270270
}

llvm/lib/Target/BPF/AsmParser/BPFAsmParser.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -165,10 +165,10 @@ struct BPFOperand : public MCParsedAsmOperand {
165165
return Tok;
166166
}
167167

168-
void print(raw_ostream &OS) const override {
168+
void print(raw_ostream &OS, const MCAsmInfo &MAI) const override {
169169
switch (Kind) {
170170
case Immediate:
171-
MCAsmInfo().printExpr(OS, *getImm());
171+
MAI.printExpr(OS, *getImm());
172172
break;
173173
case Register:
174174
OS << "<register x";

llvm/lib/Target/CSKY/AsmParser/CSKYAsmParser.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
//===----------------------------------------------------------------------===//
88

99
#include "MCTargetDesc/CSKYInstPrinter.h"
10+
#include "MCTargetDesc/CSKYMCAsmInfo.h"
1011
#include "MCTargetDesc/CSKYMCExpr.h"
1112
#include "MCTargetDesc/CSKYMCTargetDesc.h"
1213
#include "MCTargetDesc/CSKYTargetStreamer.h"
@@ -430,7 +431,7 @@ struct CSKYOperand : public MCParsedAsmOperand {
430431
return Tok;
431432
}
432433

433-
void print(raw_ostream &OS) const override {
434+
void print(raw_ostream &OS, const MCAsmInfo &MAI) const override {
434435
auto RegName = [](MCRegister Reg) {
435436
if (Reg)
436437
return CSKYInstPrinter::getRegisterName(Reg);

0 commit comments

Comments
 (0)