Skip to content

Commit 39df494

Browse files
committed
[Xtensa] Rename VariantKind to Specifier
Follow the X86, Mips, and RISCV renaming. > "Relocation modifier" suggests adjustments happen during the linker's relocation step rather than the assembler's expression evaluation. > "Relocation specifier" is clear, aligns with Arm and IBM AIX's documentation, and fits the assembler's role seamlessly. In addition, rename *MCExpr::getKind, which confusingly shadows the base class getKind. The parseSpecifier name follows Sparc.
1 parent a578a75 commit 39df494

File tree

5 files changed

+40
-36
lines changed

5 files changed

+40
-36
lines changed

llvm/lib/Target/Xtensa/AsmParser/XtensaAsmParser.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -391,7 +391,7 @@ bool XtensaAsmParser::processInstruction(MCInst &Inst, SMLoc IDLoc,
391391
case Xtensa::L32R: {
392392
const MCSymbolRefExpr *OpExpr =
393393
static_cast<const MCSymbolRefExpr *>(Inst.getOperand(1).getExpr());
394-
XtensaMCExpr::VariantKind Kind = XtensaMCExpr::VK_Xtensa_None;
394+
XtensaMCExpr::Specifier Kind = XtensaMCExpr::VK_None;
395395
const MCExpr *NewOpExpr = XtensaMCExpr::create(OpExpr, Kind, getContext());
396396
Inst.getOperand(1).setExpr(NewOpExpr);
397397
break;
@@ -411,8 +411,8 @@ bool XtensaAsmParser::processInstruction(MCInst &Inst, SMLoc IDLoc,
411411
const MCExpr *Value = MCConstantExpr::create(ImmOp64, getContext());
412412
MCSymbol *Sym = getContext().createTempSymbol();
413413
const MCExpr *Expr = MCSymbolRefExpr::create(Sym, getContext());
414-
const MCExpr *OpExpr = XtensaMCExpr::create(
415-
Expr, XtensaMCExpr::VK_Xtensa_None, getContext());
414+
const MCExpr *OpExpr =
415+
XtensaMCExpr::create(Expr, XtensaMCExpr::VK_None, getContext());
416416
TmpInst.addOperand(Inst.getOperand(0));
417417
MCOperand Op1 = MCOperand::createExpr(OpExpr);
418418
TmpInst.addOperand(Op1);
@@ -426,8 +426,8 @@ bool XtensaAsmParser::processInstruction(MCInst &Inst, SMLoc IDLoc,
426426
const MCExpr *Value = Inst.getOperand(1).getExpr();
427427
MCSymbol *Sym = getContext().createTempSymbol();
428428
const MCExpr *Expr = MCSymbolRefExpr::create(Sym, getContext());
429-
const MCExpr *OpExpr = XtensaMCExpr::create(
430-
Expr, XtensaMCExpr::VK_Xtensa_None, getContext());
429+
const MCExpr *OpExpr =
430+
XtensaMCExpr::create(Expr, XtensaMCExpr::VK_None, getContext());
431431
TmpInst.addOperand(Inst.getOperand(0));
432432
MCOperand Op1 = MCOperand::createExpr(OpExpr);
433433
TmpInst.addOperand(Op1);

llvm/lib/Target/Xtensa/MCTargetDesc/XtensaInstPrinter.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
//===----------------------------------------------------------------------===//
1414

1515
#include "XtensaInstPrinter.h"
16+
#include "MCTargetDesc/XtensaMCExpr.h"
1617
#include "llvm/CodeGen/MachineOperand.h"
1718
#include "llvm/MC/MCExpr.h"
1819
#include "llvm/MC/MCInstrInfo.h"
@@ -34,10 +35,9 @@ static void printExpr(const MCExpr *Expr, raw_ostream &OS) {
3435
if (!(SRE = cast<MCSymbolRefExpr>(Expr)))
3536
assert(false && "Unexpected MCExpr type.");
3637

37-
MCSymbolRefExpr::VariantKind Kind = SRE->getKind();
38-
39-
switch (Kind) {
40-
case MCSymbolRefExpr::VK_None:
38+
auto Spec = XtensaMCExpr::Specifier(SRE->getKind());
39+
switch (Spec) {
40+
case XtensaMCExpr::VK_None:
4141
break;
4242
// TODO
4343
default:
@@ -52,7 +52,7 @@ static void printExpr(const MCExpr *Expr, raw_ostream &OS) {
5252
OS << Offset;
5353
}
5454

55-
if (Kind != MCSymbolRefExpr::VK_None)
55+
if (Spec != XtensaMCExpr::VK_None)
5656
OS << ')';
5757
}
5858

llvm/lib/Target/Xtensa/MCTargetDesc/XtensaMCExpr.cpp

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,36 +26,40 @@ using namespace llvm;
2626

2727
#define DEBUG_TYPE "xtensamcexpr"
2828

29-
const XtensaMCExpr *XtensaMCExpr::create(const MCExpr *Expr, VariantKind Kind,
29+
const XtensaMCExpr *XtensaMCExpr::create(const MCExpr *Expr, Specifier S,
3030
MCContext &Ctx) {
31-
return new (Ctx) XtensaMCExpr(Expr, Kind);
31+
return new (Ctx) XtensaMCExpr(Expr, S);
3232
}
3333

3434
void XtensaMCExpr::printImpl(raw_ostream &OS, const MCAsmInfo *MAI) const {
35-
bool HasVariant = getKind() != VK_Xtensa_None;
36-
if (HasVariant)
37-
OS << '%' << getVariantKindName(getKind()) << '(';
35+
bool HasSpecifier = getSpecifier() != VK_None;
36+
if (HasSpecifier)
37+
OS << '%' << getSpecifierName(getSpecifier()) << '(';
3838
Expr->print(OS, MAI);
39-
if (HasVariant)
39+
if (HasSpecifier)
4040
OS << ')';
4141
}
4242

4343
bool XtensaMCExpr::evaluateAsRelocatableImpl(MCValue &Res,
4444
const MCAssembler *Asm) const {
45-
return getSubExpr()->evaluateAsRelocatable(Res, Asm);
45+
if (!getSubExpr()->evaluateAsRelocatable(Res, Asm))
46+
return false;
47+
48+
Res =
49+
MCValue::get(Res.getSymA(), Res.getSymB(), Res.getConstant(), specifier);
50+
return !Res.getSymB();
4651
}
4752

4853
void XtensaMCExpr::visitUsedExpr(MCStreamer &Streamer) const {
4954
Streamer.visitUsedExpr(*getSubExpr());
5055
}
5156

52-
XtensaMCExpr::VariantKind XtensaMCExpr::getVariantKindForName(StringRef name) {
53-
return StringSwitch<XtensaMCExpr::VariantKind>(name).Default(
54-
VK_Xtensa_Invalid);
57+
XtensaMCExpr::Specifier XtensaMCExpr::parseSpecifier(StringRef name) {
58+
return StringSwitch<XtensaMCExpr::Specifier>(name).Default(VK_None);
5559
}
5660

57-
StringRef XtensaMCExpr::getVariantKindName(VariantKind Kind) {
58-
switch (Kind) {
61+
StringRef XtensaMCExpr::getSpecifierName(Specifier S) {
62+
switch (S) {
5963
default:
6064
llvm_unreachable("Invalid ELF symbol kind");
6165
}

llvm/lib/Target/Xtensa/MCTargetDesc/XtensaMCExpr.h

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,20 +22,20 @@ namespace llvm {
2222
class StringRef;
2323
class XtensaMCExpr : public MCTargetExpr {
2424
public:
25-
enum VariantKind { VK_Xtensa_None, VK_Xtensa_Invalid };
25+
enum Specifier { VK_None, VK_TPOFF };
2626

2727
private:
2828
const MCExpr *Expr;
29-
const VariantKind Kind;
29+
const Specifier specifier;
3030

31-
explicit XtensaMCExpr(const MCExpr *Expr, VariantKind Kind)
32-
: Expr(Expr), Kind(Kind) {}
31+
explicit XtensaMCExpr(const MCExpr *Expr, Specifier S)
32+
: Expr(Expr), specifier(S) {}
3333

3434
public:
35-
static const XtensaMCExpr *create(const MCExpr *Expr, VariantKind Kind,
35+
static const XtensaMCExpr *create(const MCExpr *Expr, Specifier,
3636
MCContext &Ctx);
3737

38-
VariantKind getKind() const { return Kind; }
38+
Specifier getSpecifier() const { return specifier; }
3939

4040
const MCExpr *getSubExpr() const { return Expr; }
4141

@@ -47,8 +47,8 @@ class XtensaMCExpr : public MCTargetExpr {
4747
return getSubExpr()->findAssociatedFragment();
4848
}
4949

50-
static VariantKind getVariantKindForName(StringRef name);
51-
static StringRef getVariantKindName(VariantKind Kind);
50+
static Specifier parseSpecifier(StringRef name);
51+
static StringRef getSpecifierName(Specifier Kind);
5252
};
5353

5454
} // end namespace llvm.

llvm/lib/Target/Xtensa/XtensaAsmPrinter.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,13 @@
3232

3333
using namespace llvm;
3434

35-
static MCSymbolRefExpr::VariantKind
36-
getModifierVariantKind(XtensaCP::XtensaCPModifier Modifier) {
35+
static XtensaMCExpr::Specifier
36+
getModifierSpecifier(XtensaCP::XtensaCPModifier Modifier) {
3737
switch (Modifier) {
3838
case XtensaCP::no_modifier:
39-
return MCSymbolRefExpr::VK_None;
39+
return XtensaMCExpr::VK_None;
4040
case XtensaCP::TPOFF:
41-
return MCSymbolRefExpr::VK_TPOFF;
41+
return XtensaMCExpr::VK_TPOFF;
4242
}
4343
report_fatal_error("Invalid XtensaCPModifier!");
4444
}
@@ -92,7 +92,7 @@ void XtensaAsmPrinter::emitMachineConstantPoolValue(
9292
MCSymbol *LblSym = GetCPISymbol(ACPV->getLabelId());
9393
auto *TS =
9494
static_cast<XtensaTargetStreamer *>(OutStreamer->getTargetStreamer());
95-
MCSymbolRefExpr::VariantKind VK = getModifierVariantKind(ACPV->getModifier());
95+
XtensaMCExpr::Specifier VK = getModifierSpecifier(ACPV->getModifier());
9696

9797
if (ACPV->getModifier() != XtensaCP::no_modifier) {
9898
std::string SymName(MCSym->getName());
@@ -227,7 +227,7 @@ XtensaAsmPrinter::LowerSymbolOperand(const MachineOperand &MO,
227227
MachineOperand::MachineOperandType MOTy,
228228
unsigned Offset) const {
229229
const MCSymbol *Symbol;
230-
XtensaMCExpr::VariantKind Kind = XtensaMCExpr::VK_Xtensa_None;
230+
XtensaMCExpr::Specifier Kind = XtensaMCExpr::VK_None;
231231

232232
switch (MOTy) {
233233
case MachineOperand::MO_GlobalAddress:

0 commit comments

Comments
 (0)