Skip to content

Commit d93aff4

Browse files
committed
MC: Migrate away from operator<< MCExpr
MCExpr::print has an optional MCAsmInfo argument, which is error-prone when omitted. MCExpr::print and the convenience helper operator<< are discouraged to use. Switch to MCAsmInfo::printExpr instead. Use the target-specific MCAsmInfo if available.
1 parent a9295ad commit d93aff4

File tree

13 files changed

+39
-38
lines changed

13 files changed

+39
-38
lines changed

llvm/lib/CodeGen/AsmPrinter/DIE.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -472,7 +472,10 @@ unsigned DIEExpr::sizeOf(const dwarf::FormParams &FormParams,
472472
}
473473

474474
LLVM_DUMP_METHOD
475-
void DIEExpr::print(raw_ostream &O) const { O << "Expr: " << *Expr; }
475+
void DIEExpr::print(raw_ostream &O) const {
476+
O << "Expr: ";
477+
Expr->print(O, nullptr);
478+
}
476479

477480
//===----------------------------------------------------------------------===//
478481
// DIELabel Implementation

llvm/lib/CodeGen/FaultMaps.cpp

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -86,16 +86,8 @@ void FaultMaps::emitFunctionInfo(const MCSymbol *FnLabel,
8686
OS.emitInt32(0); // Reserved
8787

8888
for (const auto &Fault : FFI) {
89-
LLVM_DEBUG(dbgs() << WFMP << " fault type: "
90-
<< faultTypeToString(Fault.Kind) << "\n");
9189
OS.emitInt32(Fault.Kind);
92-
93-
LLVM_DEBUG(dbgs() << WFMP << " faulting PC offset: "
94-
<< *Fault.FaultingOffsetExpr << "\n");
9590
OS.emitValue(Fault.FaultingOffsetExpr, 4);
96-
97-
LLVM_DEBUG(dbgs() << WFMP << " fault handler PC offset: "
98-
<< *Fault.HandlerOffsetExpr << "\n");
9991
OS.emitValue(Fault.HandlerOffsetExpr, 4);
10092
}
10193
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2601,12 +2601,12 @@ void AArch64Operand::print(raw_ostream &OS) const {
26012601
break;
26022602
}
26032603
case k_Immediate:
2604-
OS << *getImm();
2604+
MCAsmInfo().printExpr(OS, *getImm());
26052605
break;
26062606
case k_ShiftedImm: {
26072607
unsigned Shift = getShiftedImmShift();
26082608
OS << "<shiftedimm ";
2609-
OS << *getShiftedImmVal();
2609+
MCAsmInfo().printExpr(OS, *getShiftedImmVal());
26102610
OS << ", lsl #" << AArch64_AM::getShiftValue(Shift) << ">";
26112611
break;
26122612
}

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
#include "AMDKernelCodeT.h"
1010
#include "MCTargetDesc/AMDGPUInstPrinter.h"
11+
#include "MCTargetDesc/AMDGPUMCAsmInfo.h"
1112
#include "MCTargetDesc/AMDGPUMCExpr.h"
1213
#include "MCTargetDesc/AMDGPUMCKernelDescriptor.h"
1314
#include "MCTargetDesc/AMDGPUMCTargetDesc.h"
@@ -1168,7 +1169,9 @@ class AMDGPUOperand : public MCParsedAsmOperand {
11681169
OS << '\'' << getToken() << '\'';
11691170
break;
11701171
case Expression:
1171-
OS << "<expr " << *Expr << '>';
1172+
OS << "<expr ";
1173+
MCAsmInfo().printExpr(OS, *Expr);
1174+
OS << '>';
11721175
break;
11731176
}
11741177
}

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

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4024,7 +4024,7 @@ void ARMOperand::print(raw_ostream &OS) const {
40244024
OS << "<banked reg: " << getBankedReg() << ">";
40254025
break;
40264026
case k_Immediate:
4027-
OS << *getImm();
4027+
MCAsmInfo().printExpr(OS, *getImm());
40284028
break;
40294029
case k_MemBarrierOpt:
40304030
OS << "<ARM_MB::" << MemBOptToString(getMemBarrierOpt(), false) << ">";
@@ -4039,8 +4039,10 @@ void ARMOperand::print(raw_ostream &OS) const {
40394039
OS << "<memory";
40404040
if (Memory.BaseRegNum)
40414041
OS << " base:" << RegName(Memory.BaseRegNum);
4042-
if (Memory.OffsetImm)
4043-
OS << " offset-imm:" << *Memory.OffsetImm;
4042+
if (Memory.OffsetImm) {
4043+
OS << " offset-imm:";
4044+
MCAsmInfo().printExpr(OS, *Memory.OffsetImm);
4045+
}
40444046
if (Memory.OffsetRegNum)
40454047
OS << " offset-reg:" << (Memory.isNegative ? "-" : "")
40464048
<< RegName(Memory.OffsetRegNum);
@@ -4094,7 +4096,8 @@ void ARMOperand::print(raw_ostream &OS) const {
40944096
<< ModImm.Rot << ")>";
40954097
break;
40964098
case k_ConstantPoolImmediate:
4097-
OS << "<constant_pool_imm #" << *getConstantPoolImm();
4099+
OS << "<constant_pool_imm #";
4100+
MCAsmInfo().printExpr(OS, *getConstantPoolImm());
40984101
break;
40994102
case k_BitfieldDescriptor:
41004103
OS << "<bitfield " << "lsb: " << Bitfield.LSB

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -256,12 +256,16 @@ class AVROperand : public MCParsedAsmOperand {
256256
O << "Register: " << getReg();
257257
break;
258258
case k_Immediate:
259-
O << "Immediate: \"" << *getImm() << "\"";
259+
O << "Immediate: \"";
260+
MCAsmInfo().printExpr(O, *getImm());
261+
O << "\"";
260262
break;
261263
case k_Memri: {
262264
// only manually print the size for non-negative values,
263265
// as the sign is inserted automatically.
264-
O << "Memri: \"" << getReg() << '+' << *getImm() << "\"";
266+
O << "Memri: \"" << getReg() << '+';
267+
MCAsmInfo().printExpr(O, *getImm());
268+
O << "\"";
265269
break;
266270
}
267271
}

llvm/lib/Target/AVR/MCTargetDesc/AVRInstPrinter.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ void AVRInstPrinter::printPCRelImm(const MCInst *MI, unsigned OpNo,
166166
O << Imm;
167167
} else {
168168
assert(Op.isExpr() && "Unknown pcrel immediate operand");
169-
O << *Op.getExpr();
169+
MAI.printExpr(O, *Op.getExpr());
170170
}
171171
}
172172

@@ -189,7 +189,7 @@ void AVRInstPrinter::printMemri(const MCInst *MI, unsigned OpNo,
189189

190190
O << Offset;
191191
} else if (OffsetOp.isExpr()) {
192-
O << *OffsetOp.getExpr();
192+
MAI.printExpr(O, *OffsetOp.getExpr());
193193
} else {
194194
llvm_unreachable("unknown type for offset");
195195
}

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

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

9+
#include "MCTargetDesc/BPFMCAsmInfo.h"
910
#include "MCTargetDesc/BPFMCTargetDesc.h"
1011
#include "TargetInfo/BPFTargetInfo.h"
1112
#include "llvm/ADT/StringSwitch.h"
@@ -167,7 +168,7 @@ struct BPFOperand : public MCParsedAsmOperand {
167168
void print(raw_ostream &OS) const override {
168169
switch (Kind) {
169170
case Immediate:
170-
OS << *getImm();
171+
MCAsmInfo().printExpr(OS, *getImm());
171172
break;
172173
case Register:
173174
OS << "<register x";

llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -381,9 +381,10 @@ class SparcOperand : public MCParsedAsmOperand {
381381
case k_MemoryReg: OS << "Mem: " << getMemBase() << "+"
382382
<< getMemOffsetReg() << "\n"; break;
383383
case k_MemoryImm: assert(getMemOff() != nullptr);
384-
OS << "Mem: " << getMemBase()
385-
<< "+" << *getMemOff()
386-
<< "\n"; break;
384+
OS << "Mem: " << getMemBase() << "+";
385+
MCAsmInfo().printExpr(OS, *getMemOff());
386+
OS << "\n";
387+
break;
387388
case k_ASITag:
388389
OS << "ASI tag: " << getASITag() << "\n";
389390
break;

llvm/lib/Target/SystemZ/AsmParser/SystemZAsmParser.cpp

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -732,16 +732,7 @@ static struct InsnMatchEntry InsnMatchTable[] = {
732732
static void printMCExpr(const MCExpr *E, raw_ostream &OS) {
733733
if (!E)
734734
return;
735-
if (auto *CE = dyn_cast<MCConstantExpr>(E))
736-
OS << *CE;
737-
else if (auto *UE = dyn_cast<MCUnaryExpr>(E))
738-
OS << *UE;
739-
else if (auto *BE = dyn_cast<MCBinaryExpr>(E))
740-
OS << *BE;
741-
else if (auto *SRE = dyn_cast<MCSymbolRefExpr>(E))
742-
OS << *SRE;
743-
else
744-
OS << *E;
735+
MCAsmInfo().printExpr(OS, *E);
745736
}
746737

747738
void SystemZOperand::print(raw_ostream &OS) const {

0 commit comments

Comments
 (0)