[llvm] d57b867 - Revert "AArch64: Move AArch64MCExpr functions to AArch64MCAsmInfo"

Douglas Yung via llvm-commits llvm-commits at lists.llvm.org
Mon Jun 16 07:15:57 PDT 2025


Author: Douglas Yung
Date: 2025-06-16T14:14:56Z
New Revision: d57b86701a7b5bf7d98fea032f33e726b2abb424

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

LOG: Revert "AArch64: Move AArch64MCExpr functions to AArch64MCAsmInfo"

This reverts commit 4ea616d072d126a31149174ca2efdbdace9ce568.

This change is causing buildbot failures on MacOS:
 - https://lab.llvm.org/buildbot/#/builders/190/builds/21510
 - http://45.33.8.238/macm1/108620/step_10.txt

Added: 
    

Modified: 
    llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp
    llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.h
    llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCExpr.cpp
    llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCExpr.h
    llvm/lib/Target/AArch64/MCTargetDesc/AArch64WinCOFFObjectWriter.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp
index a82896dbe0d6c..31965d85d9eb4 100644
--- a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp
+++ b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp
@@ -15,7 +15,6 @@
 #include "llvm/MC/MCContext.h"
 #include "llvm/MC/MCExpr.h"
 #include "llvm/MC/MCStreamer.h"
-#include "llvm/MC/MCValue.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/TargetParser/Triple.h"
 using namespace llvm;
@@ -54,80 +53,6 @@ const MCAsmInfo::AtSpecifier MachOAtSpecifiers[] = {
     {AArch64MCExpr::M_TLVPPAGEOFF, "TLVPPAGEOFF"},
 };
 
-StringRef AArch64::getSpecifierName(const MCSpecifierExpr &Expr) {
-  // clang-format off
-  switch (static_cast<uint32_t>(Expr.getSpecifier())) {
-  case AArch64MCExpr::VK_CALL:                return "";
-  case AArch64MCExpr::VK_LO12:                return ":lo12:";
-  case AArch64MCExpr::VK_ABS_G3:              return ":abs_g3:";
-  case AArch64MCExpr::VK_ABS_G2:              return ":abs_g2:";
-  case AArch64MCExpr::VK_ABS_G2_S:            return ":abs_g2_s:";
-  case AArch64MCExpr::VK_ABS_G2_NC:           return ":abs_g2_nc:";
-  case AArch64MCExpr::VK_ABS_G1:              return ":abs_g1:";
-  case AArch64MCExpr::VK_ABS_G1_S:            return ":abs_g1_s:";
-  case AArch64MCExpr::VK_ABS_G1_NC:           return ":abs_g1_nc:";
-  case AArch64MCExpr::VK_ABS_G0:              return ":abs_g0:";
-  case AArch64MCExpr::VK_ABS_G0_S:            return ":abs_g0_s:";
-  case AArch64MCExpr::VK_ABS_G0_NC:           return ":abs_g0_nc:";
-  case AArch64MCExpr::VK_PREL_G3:             return ":prel_g3:";
-  case AArch64MCExpr::VK_PREL_G2:             return ":prel_g2:";
-  case AArch64MCExpr::VK_PREL_G2_NC:          return ":prel_g2_nc:";
-  case AArch64MCExpr::VK_PREL_G1:             return ":prel_g1:";
-  case AArch64MCExpr::VK_PREL_G1_NC:          return ":prel_g1_nc:";
-  case AArch64MCExpr::VK_PREL_G0:             return ":prel_g0:";
-  case AArch64MCExpr::VK_PREL_G0_NC:          return ":prel_g0_nc:";
-  case AArch64MCExpr::VK_DTPREL_G2:           return ":dtprel_g2:";
-  case AArch64MCExpr::VK_DTPREL_G1:           return ":dtprel_g1:";
-  case AArch64MCExpr::VK_DTPREL_G1_NC:        return ":dtprel_g1_nc:";
-  case AArch64MCExpr::VK_DTPREL_G0:           return ":dtprel_g0:";
-  case AArch64MCExpr::VK_DTPREL_G0_NC:        return ":dtprel_g0_nc:";
-  case AArch64MCExpr::VK_DTPREL_HI12:         return ":dtprel_hi12:";
-  case AArch64MCExpr::VK_DTPREL_LO12:         return ":dtprel_lo12:";
-  case AArch64MCExpr::VK_DTPREL_LO12_NC:      return ":dtprel_lo12_nc:";
-  case AArch64MCExpr::VK_TPREL_G2:            return ":tprel_g2:";
-  case AArch64MCExpr::VK_TPREL_G1:            return ":tprel_g1:";
-  case AArch64MCExpr::VK_TPREL_G1_NC:         return ":tprel_g1_nc:";
-  case AArch64MCExpr::VK_TPREL_G0:            return ":tprel_g0:";
-  case AArch64MCExpr::VK_TPREL_G0_NC:         return ":tprel_g0_nc:";
-  case AArch64MCExpr::VK_TPREL_HI12:          return ":tprel_hi12:";
-  case AArch64MCExpr::VK_TPREL_LO12:          return ":tprel_lo12:";
-  case AArch64MCExpr::VK_TPREL_LO12_NC:       return ":tprel_lo12_nc:";
-  case AArch64MCExpr::VK_TLSDESC_LO12:        return ":tlsdesc_lo12:";
-  case AArch64MCExpr::VK_TLSDESC_AUTH_LO12:   return ":tlsdesc_auth_lo12:";
-  case AArch64MCExpr::VK_ABS_PAGE:            return "";
-  case AArch64MCExpr::VK_ABS_PAGE_NC:         return ":pg_hi21_nc:";
-  case AArch64MCExpr::VK_GOT:                 return ":got:";
-  case AArch64MCExpr::VK_GOT_PAGE:            return ":got:";
-  case AArch64MCExpr::VK_GOT_PAGE_LO15:       return ":gotpage_lo15:";
-  case AArch64MCExpr::VK_GOT_LO12:            return ":got_lo12:";
-  case AArch64MCExpr::VK_GOTTPREL:            return ":gottprel:";
-  case AArch64MCExpr::VK_GOTTPREL_PAGE:       return ":gottprel:";
-  case AArch64MCExpr::VK_GOTTPREL_LO12_NC:    return ":gottprel_lo12:";
-  case AArch64MCExpr::VK_GOTTPREL_G1:         return ":gottprel_g1:";
-  case AArch64MCExpr::VK_GOTTPREL_G0_NC:      return ":gottprel_g0_nc:";
-  case AArch64MCExpr::VK_TLSDESC:             return "";
-  case AArch64MCExpr::VK_TLSDESC_PAGE:        return ":tlsdesc:";
-  case AArch64MCExpr::VK_TLSDESC_AUTH:        return "";
-  case AArch64MCExpr::VK_TLSDESC_AUTH_PAGE:   return ":tlsdesc_auth:";
-  case AArch64MCExpr::VK_SECREL_LO12:         return ":secrel_lo12:";
-  case AArch64MCExpr::VK_SECREL_HI12:         return ":secrel_hi12:";
-  case AArch64MCExpr::VK_GOT_AUTH:            return ":got_auth:";
-  case AArch64MCExpr::VK_GOT_AUTH_PAGE:       return ":got_auth:";
-  case AArch64MCExpr::VK_GOT_AUTH_LO12:       return ":got_auth_lo12:";
-  default:
-    llvm_unreachable("Invalid relocation specifier");
-  }
-  // clang-format on
-}
-
-static bool evaluate(const MCSpecifierExpr &Expr, MCValue &Res,
-                     const MCAssembler *Asm) {
-  if (!Expr.getSubExpr()->evaluateAsRelocatable(Res, Asm))
-    return false;
-  Res.setSpecifier(Expr.getSpecifier());
-  return true;
-}
-
 AArch64MCAsmInfoDarwin::AArch64MCAsmInfoDarwin(bool IsILP32) {
   // We prefer NEON instructions to be printed in the short, Apple-specific
   // form when targeting Darwin.
@@ -166,34 +91,6 @@ const MCExpr *AArch64MCAsmInfoDarwin::getExprForPersonalitySymbol(
   return MCBinaryExpr::createSub(Res, PC, Context);
 }
 
-void AArch64AuthMCExpr::print(raw_ostream &OS, const MCAsmInfo *MAI) const {
-  bool WrapSubExprInParens = !isa<MCSymbolRefExpr>(getSubExpr());
-  if (WrapSubExprInParens)
-    OS << '(';
-  getSubExpr()->print(OS, MAI);
-  if (WrapSubExprInParens)
-    OS << ')';
-
-  OS << "@AUTH(" << AArch64PACKeyIDToString(Key) << ',' << Discriminator;
-  if (hasAddressDiversity())
-    OS << ",addr";
-  OS << ')';
-}
-
-void AArch64MCAsmInfoDarwin::printSpecifierExpr(
-    raw_ostream &OS, const MCSpecifierExpr &Expr) const {
-  if (auto *AE = dyn_cast<AArch64AuthMCExpr>(&Expr))
-    return AE->print(OS, this);
-  // FIXME: tryParseAdrLabel should not use VK_ABS for Mach-O
-  assert(Expr.getSpecifier() == AArch64MCExpr::VK_ABS);
-  printExpr(OS, *Expr.getSubExpr());
-}
-
-bool AArch64MCAsmInfoDarwin::evaluateAsRelocatableImpl(
-    const MCSpecifierExpr &Expr, MCValue &Res, const MCAssembler *Asm) const {
-  return evaluate(Expr, Res, Asm);
-}
-
 AArch64MCAsmInfoELF::AArch64MCAsmInfoELF(const Triple &T) {
   if (T.getArch() == Triple::aarch64_be)
     IsLittleEndian = false;
@@ -230,19 +127,6 @@ AArch64MCAsmInfoELF::AArch64MCAsmInfoELF(const Triple &T) {
   initializeVariantKinds(ELFAtSpecifiers);
 }
 
-void AArch64MCAsmInfoELF::printSpecifierExpr(
-    raw_ostream &OS, const MCSpecifierExpr &Expr) const {
-  if (auto *AE = dyn_cast<AArch64AuthMCExpr>(&Expr))
-    return AE->print(OS, this);
-  OS << AArch64::getSpecifierName(Expr);
-  printExpr(OS, *Expr.getSubExpr());
-}
-
-bool AArch64MCAsmInfoELF::evaluateAsRelocatableImpl(
-    const MCSpecifierExpr &Expr, MCValue &Res, const MCAssembler *Asm) const {
-  return evaluate(Expr, Res, Asm);
-}
-
 AArch64MCAsmInfoMicrosoftCOFF::AArch64MCAsmInfoMicrosoftCOFF() {
   PrivateGlobalPrefix = ".L";
   PrivateLabelPrefix = ".L";
@@ -262,17 +146,6 @@ AArch64MCAsmInfoMicrosoftCOFF::AArch64MCAsmInfoMicrosoftCOFF() {
   initializeVariantKinds(COFFAtSpecifiers);
 }
 
-void AArch64MCAsmInfoMicrosoftCOFF::printSpecifierExpr(
-    raw_ostream &OS, const MCSpecifierExpr &Expr) const {
-  OS << AArch64::getSpecifierName(Expr);
-  printExpr(OS, *Expr.getSubExpr());
-}
-
-bool AArch64MCAsmInfoMicrosoftCOFF::evaluateAsRelocatableImpl(
-    const MCSpecifierExpr &Expr, MCValue &Res, const MCAssembler *Asm) const {
-  return evaluate(Expr, Res, Asm);
-}
-
 AArch64MCAsmInfoGNUCOFF::AArch64MCAsmInfoGNUCOFF() {
   PrivateGlobalPrefix = ".L";
   PrivateLabelPrefix = ".L";
@@ -291,14 +164,3 @@ AArch64MCAsmInfoGNUCOFF::AArch64MCAsmInfoGNUCOFF() {
 
   initializeVariantKinds(COFFAtSpecifiers);
 }
-
-void AArch64MCAsmInfoGNUCOFF::printSpecifierExpr(
-    raw_ostream &OS, const MCSpecifierExpr &Expr) const {
-  OS << AArch64::getSpecifierName(Expr);
-  printExpr(OS, *Expr.getSubExpr());
-}
-
-bool AArch64MCAsmInfoGNUCOFF::evaluateAsRelocatableImpl(
-    const MCSpecifierExpr &Expr, MCValue &Res, const MCAssembler *Asm) const {
-  return evaluate(Expr, Res, Asm);
-}

diff  --git a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.h b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.h
index bc02586d73884..225e0c8e55fca 100644
--- a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.h
+++ b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.h
@@ -13,7 +13,6 @@
 #ifndef LLVM_LIB_TARGET_AARCH64_MCTARGETDESC_AARCH64MCASMINFO_H
 #define LLVM_LIB_TARGET_AARCH64_MCTARGETDESC_AARCH64MCASMINFO_H
 
-#include "MCTargetDesc/AArch64MCExpr.h"
 #include "llvm/MC/MCAsmInfoCOFF.h"
 #include "llvm/MC/MCAsmInfoDarwin.h"
 #include "llvm/MC/MCAsmInfoELF.h"
@@ -27,42 +26,20 @@ struct AArch64MCAsmInfoDarwin : public MCAsmInfoDarwin {
   const MCExpr *
   getExprForPersonalitySymbol(const MCSymbol *Sym, unsigned Encoding,
                               MCStreamer &Streamer) const override;
-  void printSpecifierExpr(raw_ostream &OS,
-                          const MCSpecifierExpr &Expr) const override;
-  bool evaluateAsRelocatableImpl(const MCSpecifierExpr &Expr, MCValue &Res,
-                                 const MCAssembler *Asm) const override;
 };
 
 struct AArch64MCAsmInfoELF : public MCAsmInfoELF {
   explicit AArch64MCAsmInfoELF(const Triple &T);
-  void printSpecifierExpr(raw_ostream &OS,
-                          const MCSpecifierExpr &Expr) const override;
-  bool evaluateAsRelocatableImpl(const MCSpecifierExpr &Expr, MCValue &Res,
-                                 const MCAssembler *Asm) const override;
 };
 
 struct AArch64MCAsmInfoMicrosoftCOFF : public MCAsmInfoMicrosoft {
   explicit AArch64MCAsmInfoMicrosoftCOFF();
-  void printSpecifierExpr(raw_ostream &OS,
-                          const MCSpecifierExpr &Expr) const override;
-  bool evaluateAsRelocatableImpl(const MCSpecifierExpr &Expr, MCValue &Res,
-                                 const MCAssembler *Asm) const override;
 };
 
 struct AArch64MCAsmInfoGNUCOFF : public MCAsmInfoGNUCOFF {
   explicit AArch64MCAsmInfoGNUCOFF();
-  void printSpecifierExpr(raw_ostream &OS,
-                          const MCSpecifierExpr &Expr) const override;
-  bool evaluateAsRelocatableImpl(const MCSpecifierExpr &Expr, MCValue &Res,
-                                 const MCAssembler *Asm) const override;
 };
 
-namespace AArch64 {
-/// Return the string representation of the ELF relocation specifier
-/// (e.g. ":got:", ":lo12:").
-StringRef getSpecifierName(const MCSpecifierExpr &Expr);
-} // namespace AArch64
-
 } // namespace llvm
 
 #endif

diff  --git a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCExpr.cpp b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCExpr.cpp
index 7a7c6f7effd9f..d934af91b9ff5 100644
--- a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCExpr.cpp
+++ b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCExpr.cpp
@@ -12,19 +12,100 @@
 //===----------------------------------------------------------------------===//
 
 #include "AArch64MCExpr.h"
-#include "AArch64MCAsmInfo.h"
 #include "llvm/MC/MCContext.h"
 #include "llvm/MC/MCStreamer.h"
+#include "llvm/MC/MCValue.h"
 #include "llvm/Support/Casting.h"
 #include "llvm/Support/ErrorHandling.h"
 
 using namespace llvm;
 
+#define DEBUG_TYPE "aarch64symbolrefexpr"
+
 const AArch64MCExpr *AArch64MCExpr::create(const MCExpr *Expr, Specifier S,
                                            MCContext &Ctx) {
   return new (Ctx) AArch64MCExpr(Expr, S);
 }
 
+StringRef AArch64MCExpr::getSpecifierName() const {
+  // clang-format off
+  switch (static_cast<uint32_t>(getSpecifier())) {
+  case VK_CALL:                return "";
+  case VK_LO12:                return ":lo12:";
+  case VK_ABS_G3:              return ":abs_g3:";
+  case VK_ABS_G2:              return ":abs_g2:";
+  case VK_ABS_G2_S:            return ":abs_g2_s:";
+  case VK_ABS_G2_NC:           return ":abs_g2_nc:";
+  case VK_ABS_G1:              return ":abs_g1:";
+  case VK_ABS_G1_S:            return ":abs_g1_s:";
+  case VK_ABS_G1_NC:           return ":abs_g1_nc:";
+  case VK_ABS_G0:              return ":abs_g0:";
+  case VK_ABS_G0_S:            return ":abs_g0_s:";
+  case VK_ABS_G0_NC:           return ":abs_g0_nc:";
+  case VK_PREL_G3:             return ":prel_g3:";
+  case VK_PREL_G2:             return ":prel_g2:";
+  case VK_PREL_G2_NC:          return ":prel_g2_nc:";
+  case VK_PREL_G1:             return ":prel_g1:";
+  case VK_PREL_G1_NC:          return ":prel_g1_nc:";
+  case VK_PREL_G0:             return ":prel_g0:";
+  case VK_PREL_G0_NC:          return ":prel_g0_nc:";
+  case VK_DTPREL_G2:           return ":dtprel_g2:";
+  case VK_DTPREL_G1:           return ":dtprel_g1:";
+  case VK_DTPREL_G1_NC:        return ":dtprel_g1_nc:";
+  case VK_DTPREL_G0:           return ":dtprel_g0:";
+  case VK_DTPREL_G0_NC:        return ":dtprel_g0_nc:";
+  case VK_DTPREL_HI12:         return ":dtprel_hi12:";
+  case VK_DTPREL_LO12:         return ":dtprel_lo12:";
+  case VK_DTPREL_LO12_NC:      return ":dtprel_lo12_nc:";
+  case VK_TPREL_G2:            return ":tprel_g2:";
+  case VK_TPREL_G1:            return ":tprel_g1:";
+  case VK_TPREL_G1_NC:         return ":tprel_g1_nc:";
+  case VK_TPREL_G0:            return ":tprel_g0:";
+  case VK_TPREL_G0_NC:         return ":tprel_g0_nc:";
+  case VK_TPREL_HI12:          return ":tprel_hi12:";
+  case VK_TPREL_LO12:          return ":tprel_lo12:";
+  case VK_TPREL_LO12_NC:       return ":tprel_lo12_nc:";
+  case VK_TLSDESC_LO12:        return ":tlsdesc_lo12:";
+  case VK_TLSDESC_AUTH_LO12:   return ":tlsdesc_auth_lo12:";
+  case VK_ABS_PAGE:            return "";
+  case VK_ABS_PAGE_NC:         return ":pg_hi21_nc:";
+  case VK_GOT:                 return ":got:";
+  case VK_GOT_PAGE:            return ":got:";
+  case VK_GOT_PAGE_LO15:       return ":gotpage_lo15:";
+  case VK_GOT_LO12:            return ":got_lo12:";
+  case VK_GOTTPREL:            return ":gottprel:";
+  case VK_GOTTPREL_PAGE:       return ":gottprel:";
+  case VK_GOTTPREL_LO12_NC:    return ":gottprel_lo12:";
+  case VK_GOTTPREL_G1:         return ":gottprel_g1:";
+  case VK_GOTTPREL_G0_NC:      return ":gottprel_g0_nc:";
+  case VK_TLSDESC:             return "";
+  case VK_TLSDESC_PAGE:        return ":tlsdesc:";
+  case VK_TLSDESC_AUTH:        return "";
+  case VK_TLSDESC_AUTH_PAGE:   return ":tlsdesc_auth:";
+  case VK_SECREL_LO12:         return ":secrel_lo12:";
+  case VK_SECREL_HI12:         return ":secrel_hi12:";
+  case VK_GOT_AUTH:            return ":got_auth:";
+  case VK_GOT_AUTH_PAGE:       return ":got_auth:";
+  case VK_GOT_AUTH_LO12:       return ":got_auth_lo12:";
+  default:
+    llvm_unreachable("Invalid relocation specifier");
+  }
+  // clang-format on
+}
+
+void AArch64MCExpr::printImpl(raw_ostream &OS, const MCAsmInfo *MAI) const {
+  OS << getSpecifierName();
+  Expr->print(OS, MAI);
+}
+
+bool AArch64MCExpr::evaluateAsRelocatableImpl(MCValue &Res,
+                                              const MCAssembler *Asm) const {
+  if (!getSubExpr()->evaluateAsRelocatable(Res, Asm))
+    return false;
+  Res.setSpecifier(getSpecifier());
+  return true;
+}
+
 const AArch64AuthMCExpr *AArch64AuthMCExpr::create(const MCExpr *Expr,
                                                    uint16_t Discriminator,
                                                    AArch64PACKey::ID Key,
@@ -33,3 +114,17 @@ const AArch64AuthMCExpr *AArch64AuthMCExpr::create(const MCExpr *Expr,
   return new (Ctx)
       AArch64AuthMCExpr(Expr, Discriminator, Key, HasAddressDiversity);
 }
+
+void AArch64AuthMCExpr::printImpl(raw_ostream &OS, const MCAsmInfo *MAI) const {
+  bool WrapSubExprInParens = !isa<MCSymbolRefExpr>(getSubExpr());
+  if (WrapSubExprInParens)
+    OS << '(';
+  getSubExpr()->print(OS, MAI);
+  if (WrapSubExprInParens)
+    OS << ')';
+
+  OS << "@AUTH(" << AArch64PACKeyIDToString(Key) << ',' << Discriminator;
+  if (hasAddressDiversity())
+    OS << ",addr";
+  OS << ')';
+}

diff  --git a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCExpr.h b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCExpr.h
index 541f24c943a15..9c383894c7f54 100644
--- a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCExpr.h
+++ b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCExpr.h
@@ -147,6 +147,8 @@ class AArch64MCExpr : public MCSpecifierExpr {
 public:
   static const AArch64MCExpr *create(const MCExpr *Expr, Specifier,
                                      MCContext &Ctx);
+  /// @name VariantKind information extractors.
+  /// @{
 
   static Specifier getSymbolLoc(Specifier S) {
     return static_cast<Specifier>(S & VK_SymLocBits);
@@ -157,6 +159,16 @@ class AArch64MCExpr : public MCSpecifierExpr {
   }
 
   static bool isNotChecked(Specifier S) { return S & VK_NC; }
+
+  /// @}
+
+  /// Return the string representation of the ELF relocation specifier
+  /// (e.g. ":got:", ":lo12:").
+  StringRef getSpecifierName() const;
+
+  void printImpl(raw_ostream &OS, const MCAsmInfo *MAI) const override;
+  bool evaluateAsRelocatableImpl(MCValue &Res,
+                                 const MCAssembler *Asm) const override;
 };
 
 class AArch64AuthMCExpr final : public AArch64MCExpr {
@@ -177,7 +189,7 @@ class AArch64AuthMCExpr final : public AArch64MCExpr {
   uint16_t getDiscriminator() const { return Discriminator; }
   bool hasAddressDiversity() const { return getSpecifier() == VK_AUTHADDR; }
 
-  void print(raw_ostream &OS, const MCAsmInfo *MAI) const;
+  void printImpl(raw_ostream &OS, const MCAsmInfo *MAI) const override;
 
   static bool classof(const MCExpr *E) {
     return isa<AArch64MCExpr>(E) && classof(cast<AArch64MCExpr>(E));

diff  --git a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64WinCOFFObjectWriter.cpp b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64WinCOFFObjectWriter.cpp
index 2e997631655ed..3009bd2ca2758 100644
--- a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64WinCOFFObjectWriter.cpp
+++ b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64WinCOFFObjectWriter.cpp
@@ -8,7 +8,7 @@
 
 #include "AArch64MCTargetDesc.h"
 #include "MCTargetDesc/AArch64FixupKinds.h"
-#include "MCTargetDesc/AArch64MCAsmInfo.h"
+#include "MCTargetDesc/AArch64MCExpr.h"
 #include "llvm/ADT/Twine.h"
 #include "llvm/BinaryFormat/COFF.h"
 #include "llvm/MC/MCAsmBackend.h"
@@ -73,7 +73,7 @@ unsigned AArch64WinCOFFObjectWriter::getRelocType(
       break;
     default:
       Ctx.reportError(Fixup.getLoc(), "relocation specifier " +
-                                          AArch64::getSpecifierName(*A64E) +
+                                          A64E->getSpecifierName() +
                                           " unsupported on COFF targets");
       return COFF::IMAGE_REL_ARM64_ABSOLUTE; // Dummy return value
     }
@@ -83,7 +83,7 @@ unsigned AArch64WinCOFFObjectWriter::getRelocType(
   default: {
     if (const AArch64MCExpr *A64E = dyn_cast<AArch64MCExpr>(Expr)) {
       Ctx.reportError(Fixup.getLoc(), "relocation specifier " +
-                                          AArch64::getSpecifierName(*A64E) +
+                                          A64E->getSpecifierName() +
                                           " unsupported on COFF targets");
     } else {
       MCFixupKindInfo Info = MAB.getFixupKindInfo(Fixup.getKind());


        


More information about the llvm-commits mailing list