diff options
Diffstat (limited to 'llvm/lib')
12 files changed, 117 insertions, 120 deletions
diff --git a/llvm/lib/Target/PowerPC/AsmParser/PPCAsmParser.cpp b/llvm/lib/Target/PowerPC/AsmParser/PPCAsmParser.cpp index e623b6c..28abe1a 100644 --- a/llvm/lib/Target/PowerPC/AsmParser/PPCAsmParser.cpp +++ b/llvm/lib/Target/PowerPC/AsmParser/PPCAsmParser.cpp @@ -109,8 +109,8 @@ class PPCAsmParser : public MCTargetAsmParser { ParseStatus tryParseRegister(MCRegister &Reg, SMLoc &StartLoc, SMLoc &EndLoc) override; - const MCExpr *extractModifierFromExpr(const MCExpr *E, - PPCMCExpr::VariantKind &Variant); + const MCExpr *extractSpecifier(const MCExpr *E, + PPCMCExpr::Specifier &Variant); bool parseExpression(const MCExpr *&EVal); bool parseOperand(OperandVector &Operands); @@ -745,8 +745,8 @@ public: return CreateImm(CE->getValue(), S, E, IsPPC64); if (const MCSymbolRefExpr *SRE = dyn_cast<MCSymbolRefExpr>(Val)) - if (getVariantKind(SRE) == PPCMCExpr::VK_TLS || - getVariantKind(SRE) == PPCMCExpr::VK_TLS_PCREL) + if (getSpecifier(SRE) == PPCMCExpr::VK_TLS || + getSpecifier(SRE) == PPCMCExpr::VK_TLS_PCREL) return CreateTLSReg(SRE, S, E, IsPPC64); if (const PPCMCExpr *TE = dyn_cast<PPCMCExpr>(Val)) { @@ -1364,15 +1364,14 @@ ParseStatus PPCAsmParser::tryParseRegister(MCRegister &Reg, SMLoc &StartLoc, return ParseStatus::Success; } -/// Extract \code @l/@ha \endcode modifier from expression. Recursively scan +/// Extract \code @l/@ha \endcode specifier from expression. Recursively scan /// the expression and check for VK_LO/HI/HA -/// symbol variants. If all symbols with modifier use the same -/// variant, return the corresponding PPCMCExpr::VariantKind, +/// symbol variants. If all symbols with specifier use the same +/// specifier, return the corresponding PPCMCExpr::Specifier, /// and a modified expression using the default symbol variant. /// Otherwise, return NULL. -const MCExpr * -PPCAsmParser::extractModifierFromExpr(const MCExpr *E, - PPCMCExpr::VariantKind &Variant) { +const MCExpr *PPCAsmParser::extractSpecifier(const MCExpr *E, + PPCMCExpr::Specifier &Variant) { MCContext &Context = getParser().getContext(); Variant = PPCMCExpr::VK_None; @@ -1383,7 +1382,7 @@ PPCAsmParser::extractModifierFromExpr(const MCExpr *E, case MCExpr::SymbolRef: { const MCSymbolRefExpr *SRE = cast<MCSymbolRefExpr>(E); - Variant = (PPCMCExpr::VariantKind)SRE->getKind(); + Variant = (PPCMCExpr::Specifier)SRE->getKind(); switch (Variant) { case PPCMCExpr::VK_LO: Variant = PPCMCExpr::VK_LO; @@ -1421,7 +1420,7 @@ PPCAsmParser::extractModifierFromExpr(const MCExpr *E, case MCExpr::Unary: { const MCUnaryExpr *UE = cast<MCUnaryExpr>(E); - const MCExpr *Sub = extractModifierFromExpr(UE->getSubExpr(), Variant); + const MCExpr *Sub = extractSpecifier(UE->getSubExpr(), Variant); if (!Sub) return nullptr; return MCUnaryExpr::create(UE->getOpcode(), Sub, Context); @@ -1429,9 +1428,9 @@ PPCAsmParser::extractModifierFromExpr(const MCExpr *E, case MCExpr::Binary: { const MCBinaryExpr *BE = cast<MCBinaryExpr>(E); - PPCMCExpr::VariantKind LHSVariant, RHSVariant; - const MCExpr *LHS = extractModifierFromExpr(BE->getLHS(), LHSVariant); - const MCExpr *RHS = extractModifierFromExpr(BE->getRHS(), RHSVariant); + PPCMCExpr::Specifier LHSVariant, RHSVariant; + const MCExpr *LHS = extractSpecifier(BE->getLHS(), LHSVariant); + const MCExpr *RHS = extractSpecifier(BE->getRHS(), RHSVariant); if (!LHS && !RHS) return nullptr; @@ -1463,10 +1462,10 @@ bool PPCAsmParser::parseExpression(const MCExpr *&EVal) { if (getParser().parseExpression(EVal)) return true; - PPCMCExpr::VariantKind Variant; - const MCExpr *E = extractModifierFromExpr(EVal, Variant); + PPCMCExpr::Specifier Spec; + const MCExpr *E = extractSpecifier(EVal, Spec); if (E) - EVal = PPCMCExpr::create(Variant, E, getParser().getContext()); + EVal = PPCMCExpr::create(Spec, E, getParser().getContext()); return false; } @@ -1854,21 +1853,21 @@ PPCAsmParser::applyModifierToExpr(const MCExpr *E, MCSymbolRefExpr::VariantKind Variant, MCContext &Ctx) { if (isa<MCConstantExpr>(E)) { - switch (PPCMCExpr::VariantKind(Variant)) { - case PPCMCExpr::VariantKind::VK_LO: - case PPCMCExpr::VariantKind::VK_HI: - case PPCMCExpr::VariantKind::VK_HA: - case PPCMCExpr::VariantKind::VK_HIGH: - case PPCMCExpr::VariantKind::VK_HIGHA: - case PPCMCExpr::VariantKind::VK_HIGHER: - case PPCMCExpr::VariantKind::VK_HIGHERA: - case PPCMCExpr::VariantKind::VK_HIGHEST: - case PPCMCExpr::VariantKind::VK_HIGHESTA: + switch (PPCMCExpr::Specifier(Variant)) { + case PPCMCExpr::VK_LO: + case PPCMCExpr::VK_HI: + case PPCMCExpr::VK_HA: + case PPCMCExpr::VK_HIGH: + case PPCMCExpr::VK_HIGHA: + case PPCMCExpr::VK_HIGHER: + case PPCMCExpr::VK_HIGHERA: + case PPCMCExpr::VK_HIGHEST: + case PPCMCExpr::VK_HIGHESTA: break; default: return nullptr; } } - return PPCMCExpr::create(PPCMCExpr::VariantKind(Variant), E, Ctx); + return PPCMCExpr::create(PPCMCExpr::Specifier(Variant), E, Ctx); } diff --git a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCELFObjectWriter.cpp b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCELFObjectWriter.cpp index 80cf4a5..ddc5a52 100644 --- a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCELFObjectWriter.cpp +++ b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCELFObjectWriter.cpp @@ -38,12 +38,12 @@ PPCELFObjectWriter::PPCELFObjectWriter(bool Is64Bit, uint8_t OSABI) Is64Bit ? ELF::EM_PPC64 : ELF::EM_PPC, /*HasRelocationAddend*/ true) {} -static PPCMCExpr::VariantKind getAccessVariant(const MCValue &Target, - const MCFixup &Fixup) { +static PPCMCExpr::Specifier getAccessVariant(const MCValue &Target, + const MCFixup &Fixup) { const MCExpr *Expr = Fixup.getValue(); if (Expr->getKind() != MCExpr::Target) - return PPCMCExpr::VariantKind(Target.getAccessVariant()); + return PPCMCExpr::Specifier(Target.getAccessVariant()); return cast<PPCMCExpr>(Expr)->getKind(); } @@ -53,10 +53,10 @@ unsigned PPCELFObjectWriter::getRelocType(MCContext &Ctx, const MCValue &Target, MCFixupKind Kind = Fixup.getKind(); if (Kind >= FirstLiteralRelocationKind) return Kind - FirstLiteralRelocationKind; - auto RefKind = static_cast<PPCMCExpr::VariantKind>(Target.getRefKind()); + auto RefKind = static_cast<PPCMCExpr::Specifier>(Target.getRefKind()); auto Modifier = getAccessVariant(Target, Fixup); - switch (PPCMCExpr::VariantKind(Modifier)) { + switch (PPCMCExpr::Specifier(Modifier)) { case PPCMCExpr::VK_DTPMOD: case PPCMCExpr::VK_DTPREL: case PPCMCExpr::VK_DTPREL_HA: diff --git a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCELFStreamer.cpp b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCELFStreamer.cpp index 39f509c..501ef46 100644 --- a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCELFStreamer.cpp +++ b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCELFStreamer.cpp @@ -139,7 +139,7 @@ void PPCELFStreamer::emitGOTToPCRelReloc(const MCInst &Inst) { // Cast the last operand to MCSymbolRefExpr to get the symbol. const MCExpr *Expr = Operand.getExpr(); const MCSymbolRefExpr *SymExpr = static_cast<const MCSymbolRefExpr *>(Expr); - assert(getVariantKind(SymExpr) == PPCMCExpr::VK_PCREL_OPT && + assert(getSpecifier(SymExpr) == PPCMCExpr::VK_PCREL_OPT && "Expecting a symbol of type VK_PCREL_OPT"); MCSymbol *LabelSym = getContext().getOrCreateSymbol(SymExpr->getSymbol().getName()); @@ -174,7 +174,7 @@ void PPCELFStreamer::emitGOTToPCRelLabel(const MCInst &Inst) { // Cast the last operand to MCSymbolRefExpr to get the symbol. const MCExpr *Expr = Operand.getExpr(); const MCSymbolRefExpr *SymExpr = static_cast<const MCSymbolRefExpr *>(Expr); - assert(getVariantKind(SymExpr) == PPCMCExpr::VK_PCREL_OPT && + assert(getSpecifier(SymExpr) == PPCMCExpr::VK_PCREL_OPT && "Expecting a symbol of type VK_PCREL_OPT"); MCSymbol *LabelSym = getContext().getOrCreateSymbol(SymExpr->getSymbol().getName()); @@ -212,7 +212,7 @@ std::optional<bool> llvm::isPartOfGOTToPCRelPair(const MCInst &Inst, // Check for the variant kind VK_PCREL_OPT in this expression. const MCExpr *Expr = Operand.getExpr(); const MCSymbolRefExpr *SymExpr = static_cast<const MCSymbolRefExpr *>(Expr); - if (!SymExpr || getVariantKind(SymExpr) != PPCMCExpr::VK_PCREL_OPT) + if (!SymExpr || getSpecifier(SymExpr) != PPCMCExpr::VK_PCREL_OPT) return std::nullopt; return (Inst.getOpcode() == PPC::PLDpc); diff --git a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCInstPrinter.cpp b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCInstPrinter.cpp index 8445c1e..55b4276 100644 --- a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCInstPrinter.cpp +++ b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCInstPrinter.cpp @@ -92,7 +92,7 @@ void PPCInstPrinter::printInst(const MCInst *MI, uint64_t Address, const MCSymbolRefExpr *SymExpr = static_cast<const MCSymbolRefExpr *>(Expr); - if (SymExpr && getVariantKind(SymExpr) == PPCMCExpr::VK_PCREL_OPT) { + if (SymExpr && getSpecifier(SymExpr) == PPCMCExpr::VK_PCREL_OPT) { const MCSymbol &Symbol = SymExpr->getSymbol(); if (MI->getOpcode() == PPC::PLDpc) { printInstruction(MI, Address, STI, O); @@ -580,13 +580,13 @@ void PPCInstPrinter::printTLSCall(const MCInst *MI, unsigned OpNo, // because we do not want the assembly to print out the @notoc at the // end like __tls_get_addr(x@tlsgd)@notoc. Instead we want it to look // like __tls_get_addr@notoc(x@tlsgd). - if (getVariantKind(RefExp) == PPCMCExpr::VK_NOTOC) + if (getSpecifier(RefExp) == PPCMCExpr::VK_NOTOC) O << '@' << MAI.getVariantKindName(RefExp->getKind()); O << '('; printOperand(MI, OpNo + 1, STI, O); O << ')'; - if (getVariantKind(RefExp) != PPCMCExpr::VK_None && - getVariantKind(RefExp) != PPCMCExpr::VK_NOTOC) + if (getSpecifier(RefExp) != PPCMCExpr::VK_None && + getSpecifier(RefExp) != PPCMCExpr::VK_NOTOC) O << '@' << MAI.getVariantKindName(RefExp->getKind()); if (Rhs) { SmallString<0> Buf; diff --git a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCCodeEmitter.cpp b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCCodeEmitter.cpp index d8ca2e3..ef067f7 100644 --- a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCCodeEmitter.cpp +++ b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCCodeEmitter.cpp @@ -329,11 +329,11 @@ PPCMCCodeEmitter::getDispRI34PCRelEncoding(const MCInst &MI, unsigned OpNo, const MCSymbolRefExpr *SRE = cast<MCSymbolRefExpr>(Expr); (void)SRE; // Currently these are the only valid PCRelative Relocations. - assert((getVariantKind(SRE) == PPCMCExpr::VK_PCREL || - getVariantKind(SRE) == PPCMCExpr::VK_GOT_PCREL || - getVariantKind(SRE) == PPCMCExpr::VK_GOT_TLSGD_PCREL || - getVariantKind(SRE) == PPCMCExpr::VK_GOT_TLSLD_PCREL || - getVariantKind(SRE) == PPCMCExpr::VK_GOT_TPREL_PCREL) && + assert((getSpecifier(SRE) == PPCMCExpr::VK_PCREL || + getSpecifier(SRE) == PPCMCExpr::VK_GOT_PCREL || + getSpecifier(SRE) == PPCMCExpr::VK_GOT_TLSGD_PCREL || + getSpecifier(SRE) == PPCMCExpr::VK_GOT_TLSLD_PCREL || + getSpecifier(SRE) == PPCMCExpr::VK_GOT_TPREL_PCREL) && "VariantKind must be VK_PCREL or VK_GOT_PCREL or " "VK_GOT_TLSGD_PCREL or VK_GOT_TLSLD_PCREL or " "VK_GOT_TPREL_PCREL."); @@ -368,8 +368,8 @@ PPCMCCodeEmitter::getDispRI34PCRelEncoding(const MCInst &MI, unsigned OpNo, "Value must fit in 34 bits."); // Currently these are the only valid PCRelative Relocations. - assert((getVariantKind(SRE) == PPCMCExpr::VK_PCREL || - getVariantKind(SRE) == PPCMCExpr::VK_GOT_PCREL) && + assert((getSpecifier(SRE) == PPCMCExpr::VK_PCREL || + getSpecifier(SRE) == PPCMCExpr::VK_GOT_PCREL) && "VariantKind must be VK_PCREL or VK_GOT_PCREL"); // Generate the fixup for the relocation. Fixups.push_back( @@ -433,7 +433,7 @@ unsigned PPCMCCodeEmitter::getTLSRegEncoding(const MCInst &MI, unsigned OpNo, // if using PC relative memops. const MCExpr *Expr = MO.getExpr(); const MCSymbolRefExpr *SRE = cast<MCSymbolRefExpr>(Expr); - bool IsPCRel = getVariantKind(SRE) == PPCMCExpr::VK_TLS_PCREL; + bool IsPCRel = getSpecifier(SRE) == PPCMCExpr::VK_TLS_PCREL; Fixups.push_back(MCFixup::create(IsPCRel ? 1 : 0, Expr, (MCFixupKind)PPC::fixup_ppc_nofixup)); const Triple &TT = STI.getTargetTriple(); diff --git a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCExpr.cpp b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCExpr.cpp index c30285d..8b82bf1 100644 --- a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCExpr.cpp +++ b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCExpr.cpp @@ -20,14 +20,14 @@ using namespace llvm; #define DEBUG_TYPE "ppcmcexpr" -const PPCMCExpr *PPCMCExpr::create(VariantKind Kind, const MCExpr *Expr, +const PPCMCExpr *PPCMCExpr::create(Specifier S, const MCExpr *Expr, MCContext &Ctx) { - return new (Ctx) PPCMCExpr(Kind, Expr); + return new (Ctx) PPCMCExpr(S, Expr); } void PPCMCExpr::printImpl(raw_ostream &OS, const MCAsmInfo *MAI) const { getSubExpr()->print(OS, MAI); - OS << '@' << MAI->getVariantKindName(Kind); + OS << '@' << MAI->getVariantKindName(specifier); } bool @@ -47,7 +47,7 @@ PPCMCExpr::evaluateAsConstant(int64_t &Res) const { } std::optional<int64_t> PPCMCExpr::evaluateAsInt64(int64_t Value) const { - switch (Kind) { + switch (specifier) { case VK_LO: return Value & 0xffff; case VK_HI: diff --git a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCExpr.h b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCExpr.h index 2c1b706..2288280 100644 --- a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCExpr.h +++ b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCExpr.h @@ -17,11 +17,11 @@ namespace llvm { class PPCMCExpr : public MCTargetExpr { public: - enum VariantKind { + enum Specifier { VK_None, // We currently use both MCSymbolRefExpr::VariantKind and - // PPCMCExpr::VariantKind. Start at a larger number to avoid conflicts. + // PPCMCExpr::Specifier. Start at a larger number to avoid conflicts. VK_LO = 200, VK_HI, VK_HA, @@ -102,19 +102,19 @@ public: }; private: - const VariantKind Kind; + const Specifier specifier; const MCExpr *Expr; std::optional<int64_t> evaluateAsInt64(int64_t Value) const; - explicit PPCMCExpr(VariantKind Kind, const MCExpr *Expr) - : Kind(Kind), Expr(Expr) {} + explicit PPCMCExpr(Specifier S, const MCExpr *Expr) + : specifier(S), Expr(Expr) {} public: /// @name Construction /// @{ - static const PPCMCExpr *create(VariantKind Kind, const MCExpr *Expr, + static const PPCMCExpr *create(Specifier S, const MCExpr *Expr, MCContext &Ctx); static const PPCMCExpr *createLo(const MCExpr *Expr, MCContext &Ctx) { @@ -133,8 +133,7 @@ public: /// @name Accessors /// @{ - /// getOpcode - Get the kind of this expression. - VariantKind getKind() const { return Kind; } + Specifier getKind() const { return specifier; } /// getSubExpr - Get the child of this expression. const MCExpr *getSubExpr() const { return Expr; } @@ -156,9 +155,8 @@ public: } }; -static inline PPCMCExpr::VariantKind -getVariantKind(const MCSymbolRefExpr *SRE) { - return PPCMCExpr::VariantKind(SRE->getKind()); +static inline PPCMCExpr::Specifier getSpecifier(const MCSymbolRefExpr *SRE) { + return PPCMCExpr::Specifier(SRE->getKind()); } } // end namespace llvm diff --git a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp index 1d4e895..a51d656 100644 --- a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp +++ b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp @@ -209,7 +209,7 @@ public: PPCTargetAsmStreamer(MCStreamer &S, formatted_raw_ostream &OS) : PPCTargetStreamer(S), OS(OS) {} - void emitTCEntry(const MCSymbol &S, PPCMCExpr::VariantKind Kind) override { + void emitTCEntry(const MCSymbol &S, PPCMCExpr::Specifier Kind) override { if (const MCSymbolXCOFF *XSym = dyn_cast<MCSymbolXCOFF>(&S)) { MCSymbolXCOFF *TCSym = cast<MCSectionXCOFF>(Streamer.getCurrentSectionOnly()) @@ -268,7 +268,7 @@ public: return static_cast<MCELFStreamer &>(Streamer); } - void emitTCEntry(const MCSymbol &S, PPCMCExpr::VariantKind Kind) override { + void emitTCEntry(const MCSymbol &S, PPCMCExpr::Specifier Kind) override { // Creates a R_PPC64_TOC relocation Streamer.emitValueToAlignment(Align(8)); Streamer.emitSymbolValue(&S, 8); @@ -372,7 +372,7 @@ class PPCTargetMachOStreamer : public PPCTargetStreamer { public: PPCTargetMachOStreamer(MCStreamer &S) : PPCTargetStreamer(S) {} - void emitTCEntry(const MCSymbol &S, PPCMCExpr::VariantKind Kind) override { + void emitTCEntry(const MCSymbol &S, PPCMCExpr::Specifier Kind) override { llvm_unreachable("Unknown pseudo-op: .tc"); } @@ -394,7 +394,7 @@ class PPCTargetXCOFFStreamer : public PPCTargetStreamer { public: PPCTargetXCOFFStreamer(MCStreamer &S) : PPCTargetStreamer(S) {} - void emitTCEntry(const MCSymbol &S, PPCMCExpr::VariantKind Kind) override { + void emitTCEntry(const MCSymbol &S, PPCMCExpr::Specifier Kind) override { const MCAsmInfo *MAI = Streamer.getContext().getAsmInfo(); const unsigned PointerSize = MAI->getCodePointerSize(); Streamer.emitValueToAlignment(Align(PointerSize)); diff --git a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCTargetStreamer.h b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCTargetStreamer.h index bc8e7d5..d1d3d9d 100644 --- a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCTargetStreamer.h +++ b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCTargetStreamer.h @@ -25,7 +25,7 @@ public: PPCTargetStreamer(MCStreamer &S); ~PPCTargetStreamer() override; - virtual void emitTCEntry(const MCSymbol &S, PPCMCExpr::VariantKind Kind) {} + virtual void emitTCEntry(const MCSymbol &S, PPCMCExpr::Specifier Kind) {} virtual void emitMachine(StringRef CPU){}; virtual void emitAbiVersion(int AbiVersion){}; virtual void emitLocalEntry(MCSymbolELF *S, const MCExpr *LocalOffset){}; diff --git a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCXCOFFObjectWriter.cpp b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCXCOFFObjectWriter.cpp index 95e1e58..97be62f 100644 --- a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCXCOFFObjectWriter.cpp +++ b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCXCOFFObjectWriter.cpp @@ -40,8 +40,8 @@ llvm::createPPCXCOFFObjectWriter(bool Is64Bit) { std::pair<uint8_t, uint8_t> PPCXCOFFObjectWriter::getRelocTypeAndSignSize( const MCValue &Target, const MCFixup &Fixup, bool IsPCRel) const { - const auto Modifier = Target.isAbsolute() ? PPCMCExpr::VK_None - : getVariantKind(Target.getSymA()); + const auto Specifier = + Target.isAbsolute() ? PPCMCExpr::VK_None : getSpecifier(Target.getSymA()); // People from AIX OS team says AIX link editor does not care about // the sign bit in the relocation entry "most" of the time. // The system assembler seems to set the sign bit on relocation entry @@ -59,7 +59,7 @@ std::pair<uint8_t, uint8_t> PPCXCOFFObjectWriter::getRelocTypeAndSignSize( report_fatal_error("Unimplemented fixup kind."); case PPC::fixup_ppc_half16: { const uint8_t SignAndSizeForHalf16 = EncodedSignednessIndicator | 15; - switch (Modifier) { + switch (Specifier) { default: report_fatal_error("Unsupported modifier for half16 fixup."); case PPCMCExpr::VK_None: @@ -78,7 +78,7 @@ std::pair<uint8_t, uint8_t> PPCXCOFFObjectWriter::getRelocTypeAndSignSize( case PPC::fixup_ppc_half16dq: { if (IsPCRel) report_fatal_error("Invalid PC-relative relocation."); - switch (Modifier) { + switch (Specifier) { default: llvm_unreachable("Unsupported Modifier"); case PPCMCExpr::VK_None: @@ -98,7 +98,7 @@ std::pair<uint8_t, uint8_t> PPCXCOFFObjectWriter::getRelocTypeAndSignSize( case PPC::fixup_ppc_br24abs: return {XCOFF::RelocationType::R_RBA, EncodedSignednessIndicator | 25}; case PPC::fixup_ppc_nofixup: { - if (Modifier == PPCMCExpr::VK_None) + if (Specifier == PPCMCExpr::VK_None) return {XCOFF::RelocationType::R_REF, 0}; else llvm_unreachable("Unsupported Modifier"); @@ -108,7 +108,7 @@ std::pair<uint8_t, uint8_t> PPCXCOFFObjectWriter::getRelocTypeAndSignSize( const uint8_t SignAndSizeForFKData = EncodedSignednessIndicator | ((unsigned)Fixup.getKind() == FK_Data_4 ? 31 : 63); - switch (Modifier) { + switch (Specifier) { default: report_fatal_error("Unsupported modifier"); case PPCMCExpr::VK_AIX_TLSGD: diff --git a/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp b/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp index 79e5263..358dffc 100644 --- a/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp +++ b/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp @@ -100,13 +100,13 @@ static cl::opt<bool> EnableSSPCanaryBitInTB( cl::desc("Enable Passing SSP Canary info in Trackback on AIX"), cl::Hidden); // Specialize DenseMapInfo to allow -// std::pair<const MCSymbol *, PPCMCExpr::VariantKind> in DenseMap. +// std::pair<const MCSymbol *, PPCMCExpr::Specifier> in DenseMap. // This specialization is needed here because that type is used as keys in the // map representing TOC entries. namespace llvm { template <> -struct DenseMapInfo<std::pair<const MCSymbol *, PPCMCExpr::VariantKind>> { - using TOCKey = std::pair<const MCSymbol *, PPCMCExpr::VariantKind>; +struct DenseMapInfo<std::pair<const MCSymbol *, PPCMCExpr::Specifier>> { + using TOCKey = std::pair<const MCSymbol *, PPCMCExpr::Specifier>; static inline TOCKey getEmptyKey() { return {nullptr, PPCMCExpr::VK_None}; } static inline TOCKey getTombstoneKey() { @@ -149,8 +149,7 @@ protected: // entry as a TLSGD entry so we can add the @m relocation: // .tc .i[TC],i[TL]@m // By default, VK_None is used for the VariantKind. - MapVector<std::pair<const MCSymbol *, PPCMCExpr::VariantKind>, MCSymbol *> - TOC; + MapVector<std::pair<const MCSymbol *, PPCMCExpr::Specifier>, MCSymbol *> TOC; const PPCSubtarget *Subtarget = nullptr; // Keep track of the number of TLS variables and their corresponding @@ -177,7 +176,7 @@ public: MCSymbol * lookUpOrCreateTOCEntry(const MCSymbol *Sym, TOCEntryType Type, - PPCMCExpr::VariantKind Kind = PPCMCExpr::VK_None); + PPCMCExpr::Specifier Kind = PPCMCExpr::VK_None); bool doInitialization(Module &M) override { if (!TOC.empty()) @@ -185,8 +184,8 @@ public: return AsmPrinter::doInitialization(M); } - const MCExpr *symbolWithVariant(const MCSymbol *S, - PPCMCExpr::VariantKind Kind); + const MCExpr *symbolWithSpecifier(const MCSymbol *S, + PPCMCExpr::Specifier Kind); void emitInstruction(const MachineInstr *MI) override; /// This function is for PrintAsmOperand and PrintAsmMemoryOperand, @@ -202,7 +201,7 @@ public: void LowerSTACKMAP(StackMaps &SM, const MachineInstr &MI); void LowerPATCHPOINT(StackMaps &SM, const MachineInstr &MI); - void emitTlsCall(const MachineInstr *MI, PPCMCExpr::VariantKind VK); + void emitTlsCall(const MachineInstr *MI, PPCMCExpr::Specifier VK); void EmitAIXTlsCallHelper(const MachineInstr *MI); const MCExpr *getAdjustedFasterLocalExpr(const MachineOperand &MO, int64_t Offset); @@ -509,12 +508,12 @@ static void setOptionalCodeModel(MCSymbolXCOFF *XSym, CodeModel::Model CM) { /// the TOC entry. MCSymbol *PPCAsmPrinter::lookUpOrCreateTOCEntry(const MCSymbol *Sym, TOCEntryType Type, - PPCMCExpr::VariantKind Kind) { + PPCMCExpr::Specifier Spec) { // If this is a new TOC entry add statistics about it. - if (!TOC.contains({Sym, Kind})) + if (!TOC.contains({Sym, Spec})) collectTOCStats(Type); - MCSymbol *&TOCEntry = TOC[{Sym, Kind}]; + MCSymbol *&TOCEntry = TOC[{Sym, Spec}]; if (!TOCEntry) TOCEntry = createTempSymbol("C"); return TOCEntry; @@ -686,8 +685,8 @@ void PPCAsmPrinter::EmitAIXTlsCallHelper(const MachineInstr *MI) { /// Given a GETtls[ld]ADDR[32] instruction, print a call to __tls_get_addr to /// the current output stream. void PPCAsmPrinter::emitTlsCall(const MachineInstr *MI, - PPCMCExpr::VariantKind VK) { - PPCMCExpr::VariantKind Kind = PPCMCExpr::VK_None; + PPCMCExpr::Specifier VK) { + PPCMCExpr::Specifier Kind = PPCMCExpr::VK_None; unsigned Opcode = PPC::BL8_NOP_TLS; assert(MI->getNumOperands() >= 3 && "Expecting at least 3 operands from MI"); @@ -795,9 +794,9 @@ getTOCEntryTypeForMO(const MachineOperand &MO) { } } -const MCExpr *PPCAsmPrinter::symbolWithVariant(const MCSymbol *S, - PPCMCExpr::VariantKind Kind) { - return MCSymbolRefExpr::create(S, MCSymbolRefExpr::VariantKind(Kind), +const MCExpr *PPCAsmPrinter::symbolWithSpecifier(const MCSymbol *S, + PPCMCExpr::Specifier Spec) { + return MCSymbolRefExpr::create(S, MCSymbolRefExpr::VariantKind(Spec), OutContext); } @@ -857,7 +856,7 @@ void PPCAsmPrinter::emitInstruction(const MachineInstr *MI) { auto getTOCEntryLoadingExprForXCOFF = [IsPPC64, getTOCRelocAdjustedExprForXCOFF, this](const MCSymbol *MOSymbol, const MCExpr *Expr, - PPCMCExpr::VariantKind VK = PPCMCExpr::VK_None) -> const MCExpr * { + PPCMCExpr::Specifier VK = PPCMCExpr::VK_None) -> const MCExpr * { const unsigned EntryByteSize = IsPPC64 ? 8 : 4; const auto TOCEntryIter = TOC.find({MOSymbol, VK}); assert(TOCEntryIter != TOC.end() && @@ -871,7 +870,7 @@ void PPCAsmPrinter::emitInstruction(const MachineInstr *MI) { return Expr; }; - auto GetVKForMO = [&](const MachineOperand &MO) { + auto getSpecifier = [&](const MachineOperand &MO) { // For TLS initial-exec and local-exec accesses on AIX, we have one TOC // entry for the symbol (with the variable offset), which is differentiated // by MO_TPREL_FLAG. @@ -1051,13 +1050,13 @@ void PPCAsmPrinter::emitInstruction(const MachineInstr *MI) { // Create a reference to the GOT entry for the symbol. The GOT entry will be // synthesized later. if (PL == PICLevel::SmallPIC && !IsAIX) { - const MCExpr *Exp = symbolWithVariant(MOSymbol, PPCMCExpr::VK_GOT); + const MCExpr *Exp = symbolWithSpecifier(MOSymbol, PPCMCExpr::VK_GOT); TmpInst.getOperand(1) = MCOperand::createExpr(Exp); EmitToStreamer(*OutStreamer, TmpInst); return; } - PPCMCExpr::VariantKind VK = GetVKForMO(MO); + PPCMCExpr::Specifier VK = getSpecifier(MO); // Otherwise, use the TOC. 'TOCEntry' is a label used to reference the // storage allocated in the TOC which contains the address of @@ -1132,7 +1131,7 @@ void PPCAsmPrinter::emitInstruction(const MachineInstr *MI) { // Map the operand to its corresponding MCSymbol. const MCSymbol *const MOSymbol = getMCSymbolForTOCPseudoMO(MO, *this); - PPCMCExpr::VariantKind VK = GetVKForMO(MO); + PPCMCExpr::Specifier VK = getSpecifier(MO); // Map the machine operand to its corresponding MCSymbol, then map the // global address operand to be a reference to the TOC entry we will @@ -1140,9 +1139,9 @@ void PPCAsmPrinter::emitInstruction(const MachineInstr *MI) { MCSymbol *TOCEntry = lookUpOrCreateTOCEntry(MOSymbol, getTOCEntryTypeForMO(MO), VK); - PPCMCExpr::VariantKind VKExpr = + PPCMCExpr::Specifier VKExpr = IsAIX ? PPCMCExpr::VK_None : PPCMCExpr::VK_TOC; - const MCExpr *Exp = symbolWithVariant(TOCEntry, VKExpr); + const MCExpr *Exp = symbolWithSpecifier(TOCEntry, VKExpr); TmpInst.getOperand(1) = MCOperand::createExpr( IsAIX ? getTOCEntryLoadingExprForXCOFF(MOSymbol, Exp, VK) : Exp); @@ -1171,7 +1170,7 @@ void PPCAsmPrinter::emitInstruction(const MachineInstr *MI) { // Map the machine operand to its corresponding MCSymbol. MCSymbol *MOSymbol = getMCSymbolForTOCPseudoMO(MO, *this); - PPCMCExpr::VariantKind VK = GetVKForMO(MO); + PPCMCExpr::Specifier VK = getSpecifier(MO); // Map the global address operand to be a reference to the TOC entry we // will synthesize later. 'TOCEntry' is a label used to reference the @@ -1191,7 +1190,7 @@ void PPCAsmPrinter::emitInstruction(const MachineInstr *MI) { MOSymbol = lookUpOrCreateTOCEntry(MOSymbol, getTOCEntryTypeForMO(MO), VK); } - const MCExpr *Exp = symbolWithVariant(MOSymbol, PPCMCExpr::VK_U); + const MCExpr *Exp = symbolWithSpecifier(MOSymbol, PPCMCExpr::VK_U); TmpInst.getOperand(2) = MCOperand::createExpr(Exp); EmitToStreamer(*OutStreamer, TmpInst); return; @@ -1215,7 +1214,7 @@ void PPCAsmPrinter::emitInstruction(const MachineInstr *MI) { // Map the machine operand to its corresponding MCSymbol. MCSymbol *MOSymbol = getMCSymbolForTOCPseudoMO(MO, *this); - PPCMCExpr::VariantKind VK = GetVKForMO(MO); + PPCMCExpr::Specifier VK = getSpecifier(MO); // Always use TOC on AIX. Map the global address operand to be a reference // to the TOC entry we will synthesize later. 'TOCEntry' is a label used to @@ -1223,7 +1222,7 @@ void PPCAsmPrinter::emitInstruction(const MachineInstr *MI) { // 'MOSymbol'. MCSymbol *TOCEntry = lookUpOrCreateTOCEntry(MOSymbol, getTOCEntryTypeForMO(MO), VK); - const MCExpr *Exp = symbolWithVariant(TOCEntry, PPCMCExpr::VK_L); + const MCExpr *Exp = symbolWithSpecifier(TOCEntry, PPCMCExpr::VK_L); TmpInst.getOperand(1) = MCOperand::createExpr(Exp); EmitToStreamer(*OutStreamer, TmpInst); return; @@ -1244,7 +1243,7 @@ void PPCAsmPrinter::emitInstruction(const MachineInstr *MI) { const MCSymbol *MOSymbol = getMCSymbolForTOCPseudoMO(MO, *this); - PPCMCExpr::VariantKind VK = GetVKForMO(MO); + PPCMCExpr::Specifier VK = getSpecifier(MO); const bool GlobalToc = MO.isGlobal() && Subtarget->isGVIndirectSymbol(MO.getGlobal()); @@ -1258,7 +1257,7 @@ void PPCAsmPrinter::emitInstruction(const MachineInstr *MI) { VK = IsAIX ? PPCMCExpr::VK_U : PPCMCExpr::VK_TOC_HA; - const MCExpr *Exp = symbolWithVariant(MOSymbol, VK); + const MCExpr *Exp = symbolWithSpecifier(MOSymbol, VK); if (!MO.isJTI() && MO.getOffset()) Exp = MCBinaryExpr::createAdd(Exp, @@ -1292,14 +1291,14 @@ void PPCAsmPrinter::emitInstruction(const MachineInstr *MI) { const MCSymbol *MOSymbol = getMCSymbolForTOCPseudoMO(MO, *this); - PPCMCExpr::VariantKind VK = GetVKForMO(MO); + PPCMCExpr::Specifier VK = getSpecifier(MO); CodeModel::Model CM = IsAIX ? getCodeModel(*Subtarget, TM, MO) : TM.getCodeModel(); if (!MO.isCPI() || CM == CodeModel::Large) MOSymbol = lookUpOrCreateTOCEntry(MOSymbol, getTOCEntryTypeForMO(MO), VK); VK = IsAIX ? PPCMCExpr::VK_L : PPCMCExpr::VK_TOC_LO; - const MCExpr *Exp = symbolWithVariant(MOSymbol, VK); + const MCExpr *Exp = symbolWithSpecifier(MOSymbol, VK); TmpInst.getOperand(1) = MCOperand::createExpr(Exp); EmitToStreamer(*OutStreamer, TmpInst); return; @@ -1344,7 +1343,7 @@ void PPCAsmPrinter::emitInstruction(const MachineInstr *MI) { const GlobalValue *GValue = MO.getGlobal(); MCSymbol *MOSymbol = getSymbol(GValue); const MCExpr *SymGotTprel = - symbolWithVariant(MOSymbol, PPCMCExpr::VK_GOT_TPREL_HA); + symbolWithSpecifier(MOSymbol, PPCMCExpr::VK_GOT_TPREL_HA); EmitToStreamer(*OutStreamer, MCInstBuilder(PPC::ADDIS8) .addReg(MI->getOperand(0).getReg()) .addReg(MI->getOperand(1).getReg()) @@ -1362,8 +1361,8 @@ void PPCAsmPrinter::emitInstruction(const MachineInstr *MI) { const GlobalValue *GValue = MO.getGlobal(); MCSymbol *MOSymbol = getSymbol(GValue); const MCExpr *Exp = - symbolWithVariant(MOSymbol, IsPPC64 ? PPCMCExpr::VK_GOT_TPREL_LO - : PPCMCExpr::VK_GOT_TPREL); + symbolWithSpecifier(MOSymbol, IsPPC64 ? PPCMCExpr::VK_GOT_TPREL_LO + : PPCMCExpr::VK_GOT_TPREL); TmpInst.getOperand(1) = MCOperand::createExpr(Exp); EmitToStreamer(*OutStreamer, TmpInst); return; @@ -1423,7 +1422,7 @@ void PPCAsmPrinter::emitInstruction(const MachineInstr *MI) { const GlobalValue *GValue = MO.getGlobal(); MCSymbol *MOSymbol = getSymbol(GValue); const MCExpr *SymGotTlsGD = - symbolWithVariant(MOSymbol, PPCMCExpr::VK_GOT_TLSGD_HA); + symbolWithSpecifier(MOSymbol, PPCMCExpr::VK_GOT_TLSGD_HA); EmitToStreamer(*OutStreamer, MCInstBuilder(PPC::ADDIS8) .addReg(MI->getOperand(0).getReg()) .addReg(MI->getOperand(1).getReg()) @@ -1440,8 +1439,8 @@ void PPCAsmPrinter::emitInstruction(const MachineInstr *MI) { const GlobalValue *GValue = MO.getGlobal(); MCSymbol *MOSymbol = getSymbol(GValue); const MCExpr *SymGotTlsGD = - symbolWithVariant(MOSymbol, IsPPC64 ? PPCMCExpr::VK_GOT_TLSGD_LO - : PPCMCExpr::VK_GOT_TLSGD); + symbolWithSpecifier(MOSymbol, IsPPC64 ? PPCMCExpr::VK_GOT_TLSGD_LO + : PPCMCExpr::VK_GOT_TLSGD); EmitToStreamer(*OutStreamer, MCInstBuilder(IsPPC64 ? PPC::ADDI8 : PPC::ADDI) .addReg(MI->getOperand(0).getReg()) @@ -1483,7 +1482,7 @@ void PPCAsmPrinter::emitInstruction(const MachineInstr *MI) { const GlobalValue *GValue = MO.getGlobal(); MCSymbol *MOSymbol = getSymbol(GValue); const MCExpr *SymGotTlsLD = - symbolWithVariant(MOSymbol, PPCMCExpr::VK_GOT_TLSLD_HA); + symbolWithSpecifier(MOSymbol, PPCMCExpr::VK_GOT_TLSLD_HA); EmitToStreamer(*OutStreamer, MCInstBuilder(PPC::ADDIS8) .addReg(MI->getOperand(0).getReg()) .addReg(MI->getOperand(1).getReg()) @@ -1500,8 +1499,8 @@ void PPCAsmPrinter::emitInstruction(const MachineInstr *MI) { const GlobalValue *GValue = MO.getGlobal(); MCSymbol *MOSymbol = getSymbol(GValue); const MCExpr *SymGotTlsLD = - symbolWithVariant(MOSymbol, IsPPC64 ? PPCMCExpr::VK_GOT_TLSLD_LO - : PPCMCExpr::VK_GOT_TLSLD); + symbolWithSpecifier(MOSymbol, IsPPC64 ? PPCMCExpr::VK_GOT_TLSLD_LO + : PPCMCExpr::VK_GOT_TLSLD); EmitToStreamer(*OutStreamer, MCInstBuilder(IsPPC64 ? PPC::ADDI8 : PPC::ADDI) .addReg(MI->getOperand(0).getReg()) @@ -1529,7 +1528,7 @@ void PPCAsmPrinter::emitInstruction(const MachineInstr *MI) { const GlobalValue *GValue = MO.getGlobal(); MCSymbol *MOSymbol = getSymbol(GValue); const MCExpr *SymDtprel = - symbolWithVariant(MOSymbol, PPCMCExpr::VK_DTPREL_HA); + symbolWithSpecifier(MOSymbol, PPCMCExpr::VK_DTPREL_HA); EmitToStreamer( *OutStreamer, MCInstBuilder(IsPPC64 ? PPC::ADDIS8 : PPC::ADDIS) @@ -1544,7 +1543,8 @@ void PPCAsmPrinter::emitInstruction(const MachineInstr *MI) { const MachineOperand &MO = MI->getOperand(2); const GlobalValue *GValue = MO.getGlobal(); MCSymbol *MOSymbol = getSymbol(GValue); - const MCExpr *SymDtprel = symbolWithVariant(MOSymbol, PPCMCExpr::VK_DTPREL); + const MCExpr *SymDtprel = + symbolWithSpecifier(MOSymbol, PPCMCExpr::VK_DTPREL); EmitToStreamer(*OutStreamer, MCInstBuilder(PPC::PADDI8) .addReg(MI->getOperand(0).getReg()) .addReg(MI->getOperand(1).getReg()) @@ -1562,7 +1562,7 @@ void PPCAsmPrinter::emitInstruction(const MachineInstr *MI) { const GlobalValue *GValue = MO.getGlobal(); MCSymbol *MOSymbol = getSymbol(GValue); const MCExpr *SymDtprel = - symbolWithVariant(MOSymbol, PPCMCExpr::VK_DTPREL_LO); + symbolWithSpecifier(MOSymbol, PPCMCExpr::VK_DTPREL_LO); EmitToStreamer(*OutStreamer, MCInstBuilder(IsPPC64 ? PPC::ADDI8 : PPC::ADDI) .addReg(MI->getOperand(0).getReg()) diff --git a/llvm/lib/Target/PowerPC/PPCMCInstLower.cpp b/llvm/lib/Target/PowerPC/PPCMCInstLower.cpp index e4b1971d..13cee8d 100644 --- a/llvm/lib/Target/PowerPC/PPCMCInstLower.cpp +++ b/llvm/lib/Target/PowerPC/PPCMCInstLower.cpp @@ -54,7 +54,7 @@ static MCSymbol *GetSymbolFromOperand(const MachineOperand &MO, static MCOperand GetSymbolRef(const MachineOperand &MO, const MCSymbol *Symbol, AsmPrinter &Printer) { MCContext &Ctx = Printer.OutContext; - PPCMCExpr::VariantKind RefKind = PPCMCExpr::VK_None; + PPCMCExpr::Specifier RefKind = PPCMCExpr::VK_None; unsigned access = MO.getTargetFlags(); |