[llvm] 39df494 - [Xtensa] Rename VariantKind to Specifier

Fangrui Song via llvm-commits llvm-commits at lists.llvm.org
Sun Mar 23 11:27:01 PDT 2025


Author: Fangrui Song
Date: 2025-03-23T11:26:56-07:00
New Revision: 39df4945e1888d407777e58fbf03f6ad1e859c11

URL: https://github.com/llvm/llvm-project/commit/39df4945e1888d407777e58fbf03f6ad1e859c11
DIFF: https://github.com/llvm/llvm-project/commit/39df4945e1888d407777e58fbf03f6ad1e859c11.diff

LOG: [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.

Added: 
    

Modified: 
    llvm/lib/Target/Xtensa/AsmParser/XtensaAsmParser.cpp
    llvm/lib/Target/Xtensa/MCTargetDesc/XtensaInstPrinter.cpp
    llvm/lib/Target/Xtensa/MCTargetDesc/XtensaMCExpr.cpp
    llvm/lib/Target/Xtensa/MCTargetDesc/XtensaMCExpr.h
    llvm/lib/Target/Xtensa/XtensaAsmPrinter.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/Xtensa/AsmParser/XtensaAsmParser.cpp b/llvm/lib/Target/Xtensa/AsmParser/XtensaAsmParser.cpp
index 58953a2e51b42..19160a599c27c 100644
--- a/llvm/lib/Target/Xtensa/AsmParser/XtensaAsmParser.cpp
+++ b/llvm/lib/Target/Xtensa/AsmParser/XtensaAsmParser.cpp
@@ -391,7 +391,7 @@ bool XtensaAsmParser::processInstruction(MCInst &Inst, SMLoc IDLoc,
   case Xtensa::L32R: {
     const MCSymbolRefExpr *OpExpr =
         static_cast<const MCSymbolRefExpr *>(Inst.getOperand(1).getExpr());
-    XtensaMCExpr::VariantKind Kind = XtensaMCExpr::VK_Xtensa_None;
+    XtensaMCExpr::Specifier Kind = XtensaMCExpr::VK_None;
     const MCExpr *NewOpExpr = XtensaMCExpr::create(OpExpr, Kind, getContext());
     Inst.getOperand(1).setExpr(NewOpExpr);
     break;
@@ -411,8 +411,8 @@ bool XtensaAsmParser::processInstruction(MCInst &Inst, SMLoc IDLoc,
         const MCExpr *Value = MCConstantExpr::create(ImmOp64, getContext());
         MCSymbol *Sym = getContext().createTempSymbol();
         const MCExpr *Expr = MCSymbolRefExpr::create(Sym, getContext());
-        const MCExpr *OpExpr = XtensaMCExpr::create(
-            Expr, XtensaMCExpr::VK_Xtensa_None, getContext());
+        const MCExpr *OpExpr =
+            XtensaMCExpr::create(Expr, XtensaMCExpr::VK_None, getContext());
         TmpInst.addOperand(Inst.getOperand(0));
         MCOperand Op1 = MCOperand::createExpr(OpExpr);
         TmpInst.addOperand(Op1);
@@ -426,8 +426,8 @@ bool XtensaAsmParser::processInstruction(MCInst &Inst, SMLoc IDLoc,
       const MCExpr *Value = Inst.getOperand(1).getExpr();
       MCSymbol *Sym = getContext().createTempSymbol();
       const MCExpr *Expr = MCSymbolRefExpr::create(Sym, getContext());
-      const MCExpr *OpExpr = XtensaMCExpr::create(
-          Expr, XtensaMCExpr::VK_Xtensa_None, getContext());
+      const MCExpr *OpExpr =
+          XtensaMCExpr::create(Expr, XtensaMCExpr::VK_None, getContext());
       TmpInst.addOperand(Inst.getOperand(0));
       MCOperand Op1 = MCOperand::createExpr(OpExpr);
       TmpInst.addOperand(Op1);

diff  --git a/llvm/lib/Target/Xtensa/MCTargetDesc/XtensaInstPrinter.cpp b/llvm/lib/Target/Xtensa/MCTargetDesc/XtensaInstPrinter.cpp
index 868c7f6c0b9c3..5f4991b51d246 100644
--- a/llvm/lib/Target/Xtensa/MCTargetDesc/XtensaInstPrinter.cpp
+++ b/llvm/lib/Target/Xtensa/MCTargetDesc/XtensaInstPrinter.cpp
@@ -13,6 +13,7 @@
 //===----------------------------------------------------------------------===//
 
 #include "XtensaInstPrinter.h"
+#include "MCTargetDesc/XtensaMCExpr.h"
 #include "llvm/CodeGen/MachineOperand.h"
 #include "llvm/MC/MCExpr.h"
 #include "llvm/MC/MCInstrInfo.h"
@@ -34,10 +35,9 @@ static void printExpr(const MCExpr *Expr, raw_ostream &OS) {
   if (!(SRE = cast<MCSymbolRefExpr>(Expr)))
     assert(false && "Unexpected MCExpr type.");
 
-  MCSymbolRefExpr::VariantKind Kind = SRE->getKind();
-
-  switch (Kind) {
-  case MCSymbolRefExpr::VK_None:
+  auto Spec = XtensaMCExpr::Specifier(SRE->getKind());
+  switch (Spec) {
+  case XtensaMCExpr::VK_None:
     break;
   // TODO
   default:
@@ -52,7 +52,7 @@ static void printExpr(const MCExpr *Expr, raw_ostream &OS) {
     OS << Offset;
   }
 
-  if (Kind != MCSymbolRefExpr::VK_None)
+  if (Spec != XtensaMCExpr::VK_None)
     OS << ')';
 }
 

diff  --git a/llvm/lib/Target/Xtensa/MCTargetDesc/XtensaMCExpr.cpp b/llvm/lib/Target/Xtensa/MCTargetDesc/XtensaMCExpr.cpp
index 5b24bffed758d..848a8398e8d72 100644
--- a/llvm/lib/Target/Xtensa/MCTargetDesc/XtensaMCExpr.cpp
+++ b/llvm/lib/Target/Xtensa/MCTargetDesc/XtensaMCExpr.cpp
@@ -26,36 +26,40 @@ using namespace llvm;
 
 #define DEBUG_TYPE "xtensamcexpr"
 
-const XtensaMCExpr *XtensaMCExpr::create(const MCExpr *Expr, VariantKind Kind,
+const XtensaMCExpr *XtensaMCExpr::create(const MCExpr *Expr, Specifier S,
                                          MCContext &Ctx) {
-  return new (Ctx) XtensaMCExpr(Expr, Kind);
+  return new (Ctx) XtensaMCExpr(Expr, S);
 }
 
 void XtensaMCExpr::printImpl(raw_ostream &OS, const MCAsmInfo *MAI) const {
-  bool HasVariant = getKind() != VK_Xtensa_None;
-  if (HasVariant)
-    OS << '%' << getVariantKindName(getKind()) << '(';
+  bool HasSpecifier = getSpecifier() != VK_None;
+  if (HasSpecifier)
+    OS << '%' << getSpecifierName(getSpecifier()) << '(';
   Expr->print(OS, MAI);
-  if (HasVariant)
+  if (HasSpecifier)
     OS << ')';
 }
 
 bool XtensaMCExpr::evaluateAsRelocatableImpl(MCValue &Res,
                                              const MCAssembler *Asm) const {
-  return getSubExpr()->evaluateAsRelocatable(Res, Asm);
+  if (!getSubExpr()->evaluateAsRelocatable(Res, Asm))
+    return false;
+
+  Res =
+      MCValue::get(Res.getSymA(), Res.getSymB(), Res.getConstant(), specifier);
+  return !Res.getSymB();
 }
 
 void XtensaMCExpr::visitUsedExpr(MCStreamer &Streamer) const {
   Streamer.visitUsedExpr(*getSubExpr());
 }
 
-XtensaMCExpr::VariantKind XtensaMCExpr::getVariantKindForName(StringRef name) {
-  return StringSwitch<XtensaMCExpr::VariantKind>(name).Default(
-      VK_Xtensa_Invalid);
+XtensaMCExpr::Specifier XtensaMCExpr::parseSpecifier(StringRef name) {
+  return StringSwitch<XtensaMCExpr::Specifier>(name).Default(VK_None);
 }
 
-StringRef XtensaMCExpr::getVariantKindName(VariantKind Kind) {
-  switch (Kind) {
+StringRef XtensaMCExpr::getSpecifierName(Specifier S) {
+  switch (S) {
   default:
     llvm_unreachable("Invalid ELF symbol kind");
   }

diff  --git a/llvm/lib/Target/Xtensa/MCTargetDesc/XtensaMCExpr.h b/llvm/lib/Target/Xtensa/MCTargetDesc/XtensaMCExpr.h
index 324817ea26dc3..32354fef3edee 100644
--- a/llvm/lib/Target/Xtensa/MCTargetDesc/XtensaMCExpr.h
+++ b/llvm/lib/Target/Xtensa/MCTargetDesc/XtensaMCExpr.h
@@ -22,20 +22,20 @@ namespace llvm {
 class StringRef;
 class XtensaMCExpr : public MCTargetExpr {
 public:
-  enum VariantKind { VK_Xtensa_None, VK_Xtensa_Invalid };
+  enum Specifier { VK_None, VK_TPOFF };
 
 private:
   const MCExpr *Expr;
-  const VariantKind Kind;
+  const Specifier specifier;
 
-  explicit XtensaMCExpr(const MCExpr *Expr, VariantKind Kind)
-      : Expr(Expr), Kind(Kind) {}
+  explicit XtensaMCExpr(const MCExpr *Expr, Specifier S)
+      : Expr(Expr), specifier(S) {}
 
 public:
-  static const XtensaMCExpr *create(const MCExpr *Expr, VariantKind Kind,
+  static const XtensaMCExpr *create(const MCExpr *Expr, Specifier,
                                     MCContext &Ctx);
 
-  VariantKind getKind() const { return Kind; }
+  Specifier getSpecifier() const { return specifier; }
 
   const MCExpr *getSubExpr() const { return Expr; }
 
@@ -47,8 +47,8 @@ class XtensaMCExpr : public MCTargetExpr {
     return getSubExpr()->findAssociatedFragment();
   }
 
-  static VariantKind getVariantKindForName(StringRef name);
-  static StringRef getVariantKindName(VariantKind Kind);
+  static Specifier parseSpecifier(StringRef name);
+  static StringRef getSpecifierName(Specifier Kind);
 };
 
 } // end namespace llvm.

diff  --git a/llvm/lib/Target/Xtensa/XtensaAsmPrinter.cpp b/llvm/lib/Target/Xtensa/XtensaAsmPrinter.cpp
index 91118621d64ab..a622ea2611cdb 100644
--- a/llvm/lib/Target/Xtensa/XtensaAsmPrinter.cpp
+++ b/llvm/lib/Target/Xtensa/XtensaAsmPrinter.cpp
@@ -32,13 +32,13 @@
 
 using namespace llvm;
 
-static MCSymbolRefExpr::VariantKind
-getModifierVariantKind(XtensaCP::XtensaCPModifier Modifier) {
+static XtensaMCExpr::Specifier
+getModifierSpecifier(XtensaCP::XtensaCPModifier Modifier) {
   switch (Modifier) {
   case XtensaCP::no_modifier:
-    return MCSymbolRefExpr::VK_None;
+    return XtensaMCExpr::VK_None;
   case XtensaCP::TPOFF:
-    return MCSymbolRefExpr::VK_TPOFF;
+    return XtensaMCExpr::VK_TPOFF;
   }
   report_fatal_error("Invalid XtensaCPModifier!");
 }
@@ -92,7 +92,7 @@ void XtensaAsmPrinter::emitMachineConstantPoolValue(
   MCSymbol *LblSym = GetCPISymbol(ACPV->getLabelId());
   auto *TS =
       static_cast<XtensaTargetStreamer *>(OutStreamer->getTargetStreamer());
-  MCSymbolRefExpr::VariantKind VK = getModifierVariantKind(ACPV->getModifier());
+  XtensaMCExpr::Specifier VK = getModifierSpecifier(ACPV->getModifier());
 
   if (ACPV->getModifier() != XtensaCP::no_modifier) {
     std::string SymName(MCSym->getName());
@@ -227,7 +227,7 @@ XtensaAsmPrinter::LowerSymbolOperand(const MachineOperand &MO,
                                      MachineOperand::MachineOperandType MOTy,
                                      unsigned Offset) const {
   const MCSymbol *Symbol;
-  XtensaMCExpr::VariantKind Kind = XtensaMCExpr::VK_Xtensa_None;
+  XtensaMCExpr::Specifier Kind = XtensaMCExpr::VK_None;
 
   switch (MOTy) {
   case MachineOperand::MO_GlobalAddress:


        


More information about the llvm-commits mailing list