Revert "[AVR] Override ParseDirective"
authorDylan McKay <me@dylanmckay.io>
Sat, 9 Dec 2017 07:51:37 +0000 (07:51 +0000)
committerDylan McKay <me@dylanmckay.io>
Sat, 9 Dec 2017 07:51:37 +0000 (07:51 +0000)
This reverts commit 57c16f9267969ebb09d6448607999b4a9f40c418.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@320245 91177308-0d34-0410-b5e6-96231b3b80d8

15 files changed:
include/llvm/BinaryFormat/ELFRelocs/AVR.def
include/llvm/MC/MCExpr.h
lib/MC/MCExpr.cpp
lib/Target/AVR/AsmParser/AVRAsmParser.cpp
lib/Target/AVR/MCTargetDesc/AVRAsmBackend.cpp
lib/Target/AVR/MCTargetDesc/AVRELFObjectWriter.cpp
lib/Target/AVR/MCTargetDesc/AVRFixupKinds.h
lib/Target/AVR/MCTargetDesc/AVRMCELFStreamer.cpp [deleted file]
lib/Target/AVR/MCTargetDesc/AVRMCELFStreamer.h [deleted file]
lib/Target/AVR/MCTargetDesc/AVRMCExpr.cpp
lib/Target/AVR/MCTargetDesc/AVRMCExpr.h
lib/Target/AVR/MCTargetDesc/AVRMCTargetDesc.cpp
lib/Target/AVR/MCTargetDesc/AVRMCTargetDesc.h
lib/Target/AVR/MCTargetDesc/CMakeLists.txt
test/MC/AVR/relocations.s

index 696fc60b0f5a7acea50182bef11a558360286f47..5692d6cb9aa079c84960891748ed6e484c73b35b 100644 (file)
@@ -33,9 +33,8 @@ ELF_RELOC(R_AVR_8,                    26)
 ELF_RELOC(R_AVR_8_LO8,                27)
 ELF_RELOC(R_AVR_8_HI8,                28)
 ELF_RELOC(R_AVR_8_HLO8,               29)
-ELF_RELOC(R_AVR_DIFF8,                30)
-ELF_RELOC(R_AVR_DIFF16,               31)
-ELF_RELOC(R_AVR_DIFF32,               32)
+ELF_RELOC(R_AVR_SYM_DIFF,             30)
+ELF_RELOC(R_AVR_16_LDST,              31)
 ELF_RELOC(R_AVR_LDS_STS_16,           33)
 ELF_RELOC(R_AVR_PORT6,                34)
 ELF_RELOC(R_AVR_PORT5,                35)
index fcbbe650d26f3f150da7bc6eacc927eb1fad3b8c..a91a31414bdb17df84b057f33368a03276faf0e4 100644 (file)
@@ -206,14 +206,6 @@ public:
     VK_ARM_TLSLDO,         // symbol(tlsldo)
     VK_ARM_TLSDESCSEQ,
 
-    VK_AVR_NONE,
-    VK_AVR_LO8,
-    VK_AVR_HI8,
-    VK_AVR_HLO8,
-    VK_AVR_DIFF8,
-    VK_AVR_DIFF16,
-    VK_AVR_DIFF32,
-
     VK_PPC_LO,             // symbol@l
     VK_PPC_HI,             // symbol@h
     VK_PPC_HA,             // symbol@ha
index f8fff4414f4950349554fcfc7343a81dc583d9af..38a8af49c19491312f6fefc907a722e866ae728d 100644 (file)
@@ -224,13 +224,6 @@ StringRef MCSymbolRefExpr::getVariantKindName(VariantKind Kind) {
   case VK_ARM_SBREL: return "sbrel";
   case VK_ARM_TLSLDO: return "tlsldo";
   case VK_ARM_TLSDESCSEQ: return "tlsdescseq";
-  case VK_AVR_NONE: return "none";
-  case VK_AVR_LO8: return "lo8";
-  case VK_AVR_HI8: return "hi8";
-  case VK_AVR_HLO8: return "hlo8";
-  case VK_AVR_DIFF8: return "diff8";
-  case VK_AVR_DIFF16: return "diff16";
-  case VK_AVR_DIFF32: return "diff32";
   case VK_PPC_LO: return "l";
   case VK_PPC_HI: return "h";
   case VK_PPC_HA: return "ha";
@@ -396,9 +389,6 @@ MCSymbolRefExpr::getVariantKindForName(StringRef Name) {
     .Case("prel31", VK_ARM_PREL31)
     .Case("sbrel", VK_ARM_SBREL)
     .Case("tlsldo", VK_ARM_TLSLDO)
-    .Case("lo8", VK_AVR_LO8)
-    .Case("hi8", VK_AVR_HI8)
-    .Case("hlo8", VK_AVR_HLO8)
     .Case("gotpcrel32@lo", VK_AMDGPU_GOTPCREL32_LO)
     .Case("gotpcrel32@hi", VK_AMDGPU_GOTPCREL32_HI)
     .Case("rel32@lo", VK_AMDGPU_REL32_LO)
index b527ad3e0b143374351ecaabb8df27095d6089b6..2e1adcc6a4fa12133ae15704a010e13e5e1aa73f 100644 (file)
@@ -9,7 +9,6 @@
 
 #include "AVR.h"
 #include "AVRRegisterInfo.h"
-#include "MCTargetDesc/AVRMCELFStreamer.h"
 #include "MCTargetDesc/AVRMCExpr.h"
 #include "MCTargetDesc/AVRMCTargetDesc.h"
 
@@ -41,7 +40,6 @@ class AVRAsmParser : public MCTargetAsmParser {
   const MCSubtargetInfo &STI;
   MCAsmParser &Parser;
   const MCRegisterInfo *MRI;
-  const std::string GENERATE_STUBS = "gs";
 
 #define GET_ASSEMBLER_HEADER
 #include "AVRGenAsmMatcher.inc"
@@ -56,7 +54,7 @@ class AVRAsmParser : public MCTargetAsmParser {
   bool ParseInstruction(ParseInstructionInfo &Info, StringRef Name,
                         SMLoc NameLoc, OperandVector &Operands) override;
 
-  bool ParseDirective(AsmToken DirectiveID) override;
+  bool ParseDirective(AsmToken directiveID) override;
 
   OperandMatchResultTy parseMemriOperand(OperandVector &Operands);
 
@@ -82,8 +80,6 @@ class AVRAsmParser : public MCTargetAsmParser {
                       uint64_t const &ErrorInfo);
   bool missingFeature(SMLoc const &Loc, uint64_t const &ErrorInfo);
 
-  bool parseLiteralValues(unsigned SizeInBytes, SMLoc L);
-
 public:
   AVRAsmParser(const MCSubtargetInfo &STI, MCAsmParser &Parser,
                const MCInstrInfo &MII, const MCTargetOptions &Options)
@@ -408,14 +404,11 @@ bool AVRAsmParser::tryParseRelocExpression(OperandVector &Operands) {
   size_t ReadCount = Parser.getLexer().peekTokens(tokens);
 
   if (ReadCount == 2) {
-    if ((tokens[0].getKind() == AsmToken::Identifier &&
-         tokens[1].getKind() == AsmToken::LParen) ||
-        (tokens[0].getKind() == AsmToken::LParen &&
-         tokens[1].getKind() == AsmToken::Minus)) {
+    if (tokens[0].getKind() == AsmToken::Identifier &&
+        tokens[1].getKind() == AsmToken::LParen) {
 
       AsmToken::TokenKind CurTok = Parser.getLexer().getKind();
-      if (CurTok == AsmToken::Minus ||
-          tokens[1].getKind() == AsmToken::Minus) {
+      if (CurTok == AsmToken::Minus) {
         isNegated = true;
       } else {
         assert(CurTok == AsmToken::Plus);
@@ -423,8 +416,7 @@ bool AVRAsmParser::tryParseRelocExpression(OperandVector &Operands) {
       }
 
       // Eat the sign
-      if (CurTok == AsmToken::Minus || CurTok == AsmToken::Plus)
-        Parser.Lex();
+      Parser.Lex();
     }
   }
 
@@ -440,34 +432,14 @@ bool AVRAsmParser::tryParseRelocExpression(OperandVector &Operands) {
   if (ModifierKind != AVRMCExpr::VK_AVR_None) {
     Parser.Lex();
     Parser.Lex(); // Eat modifier name and parenthesis
-    if (Parser.getTok().getString() == GENERATE_STUBS &&
-        Parser.getTok().getKind() == AsmToken::Identifier) {
-      std::string GSModName = ModifierName.str() + "_" + GENERATE_STUBS;
-      ModifierKind = AVRMCExpr::getKindByName(GSModName.c_str());
-      if (ModifierKind != AVRMCExpr::VK_AVR_None)
-        Parser.Lex(); // Eat gs modifier name
-    }
   } else {
     return Error(Parser.getTok().getLoc(), "unknown modifier");
   }
 
-  if (tokens[1].getKind() == AsmToken::Minus ||
-      tokens[1].getKind() == AsmToken::Plus) {
-    Parser.Lex();
-    assert(Parser.getTok().getKind() == AsmToken::LParen);
-    Parser.Lex(); // Eat the sign and parenthesis
-  }
-
   MCExpr const *InnerExpression;
   if (getParser().parseExpression(InnerExpression))
     return true;
 
-  if (tokens[1].getKind() == AsmToken::Minus ||
-      tokens[1].getKind() == AsmToken::Plus) {
-    assert(Parser.getTok().getKind() == AsmToken::RParen);
-    Parser.Lex(); // Eat closing parenthesis
-  }
-
   // If we have a modifier wrap the inner expression
   assert(Parser.getTok().getKind() == AsmToken::RParen);
   Parser.Lex(); // Eat closing parenthesis
@@ -608,59 +580,7 @@ bool AVRAsmParser::ParseInstruction(ParseInstructionInfo &Info,
   return false;
 }
 
-bool AVRAsmParser::ParseDirective(llvm::AsmToken DirectiveID) {
-  StringRef IDVal = DirectiveID.getIdentifier();
-  if (IDVal.lower() == ".long") {
-    parseLiteralValues(SIZE_LONG, DirectiveID.getLoc());
-  } else if (IDVal.lower() == ".word" || IDVal.lower() == ".short") {
-    parseLiteralValues(SIZE_WORD, DirectiveID.getLoc());
-  } else if (IDVal.lower() == ".byte") {
-    parseLiteralValues(1, DirectiveID.getLoc());
-  }
-  return true;
-}
-
-bool AVRAsmParser::parseLiteralValues(unsigned SizeInBytes, SMLoc L) {
-  MCAsmParser &Parser = getParser();
-  AVRMCELFStreamer &AVRStreamer =
-      static_cast<AVRMCELFStreamer &>(Parser.getStreamer());
-  AsmToken Tokens[2];
-  size_t ReadCount = Parser.getLexer().peekTokens(Tokens);
-  if (ReadCount == 2 && Parser.getTok().getKind() == AsmToken::Identifier &&
-      Tokens[0].getKind() == AsmToken::Minus &&
-      Tokens[1].getKind() == AsmToken::Identifier) {
-    MCSymbol *Symbol = getContext().getOrCreateSymbol(".text");
-    AVRStreamer.EmitValueForModiferKind(Symbol, SizeInBytes, L,
-            AVRMCExpr::VK_AVR_None);
-    return false;
-  }
-
-  if (Parser.getTok().getKind() == AsmToken::Identifier &&
-      Parser.getLexer().peekTok().getKind() == AsmToken::LParen) {
-    StringRef ModifierName = Parser.getTok().getString();
-    AVRMCExpr::VariantKind ModifierKind =
-        AVRMCExpr::getKindByName(ModifierName.str().c_str());
-    if (ModifierKind != AVRMCExpr::VK_AVR_None) {
-      Parser.Lex();
-      Parser.Lex(); // Eat the modifier and parenthesis
-    } else {
-      return Error(Parser.getTok().getLoc(), "unknown modifier");
-    }
-    MCSymbol *Symbol =
-        getContext().getOrCreateSymbol(Parser.getTok().getString());
-    AVRStreamer.EmitValueForModiferKind(Symbol, SizeInBytes, L, ModifierKind);
-    return false;
-  }
-
-  auto parseOne = [&]() -> bool {
-    const MCExpr *Value;
-    if (Parser.parseExpression(Value))
-      return true;
-    Parser.getStreamer().EmitValue(Value, SizeInBytes, L);
-    return false;
-  };
-  return (parseMany(parseOne));
-}
+bool AVRAsmParser::ParseDirective(llvm::AsmToken DirectiveID) { return true; }
 
 extern "C" void LLVMInitializeAVRAsmParser() {
   RegisterMCAsmParser<AVRAsmParser> X(getTheAVRTarget());
index 4016773e9b4ae598a5416a18bfa0453120bfe349..01a09610118cec8e59a9308633bc903be1e88f29 100644 (file)
@@ -422,9 +422,8 @@ MCFixupKindInfo const &AVRAsmBackend::getFixupKindInfo(MCFixupKind Kind) const {
       {"fixup_8_hi8", 0, 8, 0},
       {"fixup_8_hlo8", 0, 8, 0},
 
-      {"fixup_diff8", 0, 8, 0},
-      {"fixup_diff16", 0, 16, 0},
-      {"fixup_diff32", 0, 32, 0},
+      {"fixup_sym_diff", 0, 32, 0},
+      {"fixup_16_ldst", 0, 16, 0},
 
       {"fixup_lds_sts_16", 0, 16, 0},
 
index 412f66fbcf2202d0bbd388583218efe2de92dd05..25da75e63febfdbc2f7573cdd3c53dca73f7aa08 100644 (file)
@@ -40,43 +40,12 @@ unsigned AVRELFObjectWriter::getRelocType(MCContext &Ctx,
                                           const MCValue &Target,
                                           const MCFixup &Fixup,
                                           bool IsPCRel) const {
-  MCSymbolRefExpr::VariantKind Modifier = Target.getAccessVariant();
   switch ((unsigned) Fixup.getKind()) {
   case FK_Data_1:
-    switch (Modifier) {
-    default:
-      llvm_unreachable("Unsupported Modifier");
-    case MCSymbolRefExpr::VK_None:
-      return ELF::R_AVR_8;
-    case MCSymbolRefExpr::VK_AVR_DIFF8:
-      return ELF::R_AVR_DIFF8;
-    case MCSymbolRefExpr::VK_AVR_LO8:
-      return ELF::R_AVR_8_LO8;
-    case MCSymbolRefExpr::VK_AVR_HI8:
-      return ELF::R_AVR_8_HI8;
-    case MCSymbolRefExpr::VK_AVR_HLO8:
-      return ELF::R_AVR_8_HLO8;
-    }
   case FK_Data_4:
-    switch (Modifier) {
-    default:
-      llvm_unreachable("Unsupported Modifier");
-    case MCSymbolRefExpr::VK_None:
-      return ELF::R_AVR_32;
-    case MCSymbolRefExpr::VK_AVR_DIFF32:
-      return ELF::R_AVR_DIFF32;
-    }
+    llvm_unreachable("unsupported relocation type");
   case FK_Data_2:
-    switch (Modifier) {
-    default:
-      llvm_unreachable("Unsupported Modifier");
-    case MCSymbolRefExpr::VK_None:
-      return ELF::R_AVR_16;
-    case MCSymbolRefExpr::VK_AVR_NONE:
-      return ELF::R_AVR_16_PM;
-    case MCSymbolRefExpr::VK_AVR_DIFF16:
-      return ELF::R_AVR_DIFF16;
-    }
+    return ELF::R_AVR_16_PM;
   case AVR::fixup_32:
     return ELF::R_AVR_32;
   case AVR::fixup_7_pcrel:
@@ -135,12 +104,10 @@ unsigned AVRELFObjectWriter::getRelocType(MCContext &Ctx,
     return ELF::R_AVR_8_HI8;
   case AVR::fixup_8_hlo8:
     return ELF::R_AVR_8_HLO8;
-  case AVR::fixup_diff8:
-    return ELF::R_AVR_DIFF8;
-  case AVR::fixup_diff16:
-    return ELF::R_AVR_DIFF16;
-  case AVR::fixup_diff32:
-    return ELF::R_AVR_DIFF32;
+  case AVR::fixup_sym_diff:
+    return ELF::R_AVR_SYM_DIFF;
+  case AVR::fixup_16_ldst:
+    return ELF::R_AVR_16_LDST;
   case AVR::fixup_lds_sts_16:
     return ELF::R_AVR_LDS_STS_16;
   case AVR::fixup_port6:
index cdb0b215bc603d9ac2a99a99c40f4febfc587951..d3bd52d343fcfefa08ab92976fe100eaff02f204 100644 (file)
@@ -115,9 +115,10 @@ enum Fixups {
   fixup_8_hi8,
   fixup_8_hlo8,
 
-  fixup_diff8,
-  fixup_diff16,
-  fixup_diff32,
+  /// Fixup to calculate the difference between two symbols.
+  /// Is the only stateful fixup. We do not support it yet.
+  fixup_sym_diff,
+  fixup_16_ldst,
 
   fixup_lds_sts_16,
 
diff --git a/lib/Target/AVR/MCTargetDesc/AVRMCELFStreamer.cpp b/lib/Target/AVR/MCTargetDesc/AVRMCELFStreamer.cpp
deleted file mode 100644 (file)
index c60ea7a..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-//===--------- AVRMCELFStreamer.cpp - AVR subclass of MCELFStreamer -------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file is a stub that parses a MCInst bundle and passes the
-// instructions on to the real streamer.
-//
-//===----------------------------------------------------------------------===//
-#define DEBUG_TYPE "avrmcelfstreamer"
-
-#include "MCTargetDesc/AVRMCELFStreamer.h"
-#include "llvm/MC/MCContext.h"
-#include "llvm/MC/MCExpr.h"
-#include "llvm/MC/MCSymbol.h"
-
-using namespace llvm;
-
-void AVRMCELFStreamer::EmitValueForModiferKind(
-    const MCSymbol *Sym, unsigned SizeInBytes, SMLoc Loc,
-    AVRMCExpr::VariantKind ModifierKind) {
-  MCSymbolRefExpr::VariantKind Kind = MCSymbolRefExpr::VK_AVR_NONE;
-  if (ModifierKind == AVRMCExpr::VK_AVR_None) {
-    Kind = MCSymbolRefExpr::VK_AVR_DIFF8;
-    if (SizeInBytes == SIZE_LONG)
-      Kind = MCSymbolRefExpr::VK_AVR_DIFF32;
-    else if (SizeInBytes == SIZE_WORD)
-      Kind = MCSymbolRefExpr::VK_AVR_DIFF16;
-  } else if (ModifierKind == AVRMCExpr::VK_AVR_LO8)
-    Kind = MCSymbolRefExpr::VK_AVR_LO8;
-  else if (ModifierKind == AVRMCExpr::VK_AVR_HI8)
-    Kind = MCSymbolRefExpr::VK_AVR_HI8;
-  else if (ModifierKind == AVRMCExpr::VK_AVR_HH8)
-    Kind = MCSymbolRefExpr::VK_AVR_HLO8;
-  MCELFStreamer::EmitValue(MCSymbolRefExpr::create(Sym, Kind, getContext()),
-                           SizeInBytes, Loc);
-}
-
-namespace llvm {
-MCStreamer *createAVRELFStreamer(Triple const &TT, MCContext &Context,
-                                 std::unique_ptr<MCAsmBackend> MAB,
-                                 raw_pwrite_stream &OS,
-                                 std::unique_ptr<MCCodeEmitter> CE) {
-  return new AVRMCELFStreamer(Context, std::move(MAB), OS, std::move(CE));
-}
-
-} // end namespace llvm
diff --git a/lib/Target/AVR/MCTargetDesc/AVRMCELFStreamer.h b/lib/Target/AVR/MCTargetDesc/AVRMCELFStreamer.h
deleted file mode 100644 (file)
index 398b409..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-//===--------- AVRMCELFStreamer.h - AVR subclass of MCELFStreamer ---------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_LIB_TARGET_AVR_MCTARGETDESC_AVRMCELFSTREAMER_H
-#define LLVM_LIB_TARGET_AVR_MCTARGETDESC_AVRMCELFSTREAMER_H
-
-#include "MCTargetDesc/AVRMCExpr.h"
-#include "MCTargetDesc/AVRMCTargetDesc.h"
-#include "llvm/MC/MCAsmBackend.h"
-#include "llvm/MC/MCCodeEmitter.h"
-#include "llvm/MC/MCELFStreamer.h"
-#include "llvm/MC/MCInstrInfo.h"
-
-namespace llvm {
-
-const int SIZE_LONG = 4;
-const int SIZE_WORD = 2;
-
-class AVRMCELFStreamer : public MCELFStreamer {
-  std::unique_ptr<MCInstrInfo> MCII;
-
-public:
-  AVRMCELFStreamer(MCContext &Context, std::unique_ptr<MCAsmBackend> TAB,
-                   raw_pwrite_stream &OS,
-                   std::unique_ptr<MCCodeEmitter> Emitter)
-      : MCELFStreamer(Context, std::move(TAB), OS, std::move(Emitter)),
-        MCII(createAVRMCInstrInfo()) {}
-
-  AVRMCELFStreamer(MCContext &Context, std::unique_ptr<MCAsmBackend> TAB,
-                   raw_pwrite_stream &OS,
-                   std::unique_ptr<MCCodeEmitter> Emitter,
-                   MCAssembler *Assembler)
-      : MCELFStreamer(Context, std::move(TAB), OS, std::move(Emitter)),
-        MCII(createAVRMCInstrInfo()) {}
-
-  void EmitValueForModiferKind(
-      const MCSymbol *Sym, unsigned SizeInBytes, SMLoc Loc = SMLoc(),
-      AVRMCExpr::VariantKind ModifierKind = AVRMCExpr::VK_AVR_None);
-};
-
-MCStreamer *createAVRELFStreamer(Triple const &TT, MCContext &Context,
-                                 std::unique_ptr<MCAsmBackend> MAB,
-                                 raw_pwrite_stream &OS,
-                                 std::unique_ptr<MCCodeEmitter> CE);
-
-} // end namespace llvm
-
-#endif // LLVM_LIB_TARGET_AVR_MCTARGETDESC_AVRMCELFSTREAMER_H
index fdd43dd5ee1ed30fe998675ff3356e209fe92451..085afd23a83ce42c99f2faec7e8e8c64c80dc685 100644 (file)
@@ -29,9 +29,6 @@ const struct ModifierEntry {
 
     {"pm_lo8", AVRMCExpr::VK_AVR_PM_LO8}, {"pm_hi8", AVRMCExpr::VK_AVR_PM_HI8},
     {"pm_hh8", AVRMCExpr::VK_AVR_PM_HH8},
-
-    {"lo8_gs", AVRMCExpr::VK_AVR_LO8_GS}, {"hi8_gs", AVRMCExpr::VK_AVR_HI8_GS},
-    {"gs", AVRMCExpr::VK_AVR_GS},
 };
 
 } // end of anonymous namespace
@@ -104,40 +101,23 @@ int64_t AVRMCExpr::evaluateAsInt64(int64_t Value) const {
   case AVRMCExpr::VK_AVR_LO8:
     break;
   case AVRMCExpr::VK_AVR_HI8:
-    Value &= 0xff00;
     Value >>= 8;
     break;
   case AVRMCExpr::VK_AVR_HH8:
-    Value &= 0xff0000;
     Value >>= 16;
     break;
   case AVRMCExpr::VK_AVR_HHI8:
-    Value &= 0xff000000;
     Value >>= 24;
     break;
   case AVRMCExpr::VK_AVR_PM_LO8:
-    Value &= 0xff;
     Value >>= 1;
     break;
   case AVRMCExpr::VK_AVR_PM_HI8:
-    Value &= 0xff00;
     Value >>= 9;
     break;
   case AVRMCExpr::VK_AVR_PM_HH8:
-    Value &= 0xff0000;
     Value >>= 17;
     break;
-  case AVRMCExpr::VK_AVR_LO8_GS:
-    Value &= 0xff;
-    Value >>= 1;
-    break;
-  case AVRMCExpr::VK_AVR_HI8_GS:
-    Value &= 0xff00;
-    Value >>= 9;
-    break;
-  case AVRMCExpr::VK_AVR_GS:
-    Value >>= 1;
-    break;
 
   case AVRMCExpr::VK_AVR_None:
     llvm_unreachable("Uninitialized expression.");
@@ -171,12 +151,6 @@ AVR::Fixups AVRMCExpr::getFixupKind() const {
   case VK_AVR_PM_HH8:
     Kind = isNegated() ? AVR::fixup_hh8_ldi_pm_neg : AVR::fixup_hh8_ldi_pm;
     break;
-  case VK_AVR_LO8_GS:
-    Kind = AVR::fixup_lo8_ldi_gs;
-    break;
-  case VK_AVR_HI8_GS:
-    Kind = AVR::fixup_hi8_ldi_gs;
-    break;
 
   case VK_AVR_None:
     llvm_unreachable("Uninitialized expression");
index a166b094674995e56c7a43219ece7e0df566d281..be565a8be340f0618c59c923581b23c5794173d4 100644 (file)
@@ -30,11 +30,7 @@ public:
 
     VK_AVR_PM_LO8, ///< Corresponds to `pm_lo8()`.
     VK_AVR_PM_HI8, ///< Corresponds to `pm_hi8()`.
-    VK_AVR_PM_HH8, ///< Corresponds to `pm_hh8()`.
-
-    VK_AVR_LO8_GS, ///< Corresponds to `lo8(gs())`.
-    VK_AVR_HI8_GS, ///< Corresponds to `hi8(gs())`.
-    VK_AVR_GS, ///< Corresponds to `gs()`.
+    VK_AVR_PM_HH8  ///< Corresponds to `pm_hh8()`.
   };
 
 public:
index dd65a43120775265220fde1cea72fec384617c3e..bccce5d307e1b818af86386a2ef5756d55b03893 100644 (file)
 //
 //===----------------------------------------------------------------------===//
 
+#include "AVRMCTargetDesc.h"
 #include "AVRELFStreamer.h"
 #include "AVRMCAsmInfo.h"
-#include "AVRMCELFStreamer.h"
-#include "AVRMCTargetDesc.h"
 #include "AVRTargetStreamer.h"
 #include "InstPrinter/AVRInstPrinter.h"
 
-#include "llvm/MC/MCAsmBackend.h"
 #include "llvm/MC/MCELFStreamer.h"
 #include "llvm/MC/MCCodeEmitter.h"
 #include "llvm/MC/MCInstrInfo.h"
@@ -37,7 +35,7 @@
 
 using namespace llvm;
 
-MCInstrInfo *llvm::createAVRMCInstrInfo() {
+static MCInstrInfo *createAVRMCInstrInfo() {
   MCInstrInfo *X = new MCInstrInfo();
   InitAVRMCInstrInfo(X);
 
@@ -110,7 +108,7 @@ extern "C" void LLVMInitializeAVRTargetMC() {
   // Register the MC Code Emitter
   TargetRegistry::RegisterMCCodeEmitter(getTheAVRTarget(), createAVRMCCodeEmitter);
 
-  // Register the obj streamer
+  // Register the ELF streamer
   TargetRegistry::RegisterELFStreamer(getTheAVRTarget(), createMCStreamer);
 
   // Register the obj target streamer.
index 5615fd72e456dc95114862055d1745bc792395af..8053b8d389fc36c0135812fd46d3459b7574cfca 100644 (file)
@@ -34,8 +34,6 @@ class raw_pwrite_stream;
 
 Target &getTheAVRTarget();
 
-MCInstrInfo *createAVRMCInstrInfo();
-
 /// Creates a machine code emitter for AVR.
 MCCodeEmitter *createAVRMCCodeEmitter(const MCInstrInfo &MCII,
                                       const MCRegisterInfo &MRI,
index eb7fe956cf34c868b2682f280f31830a08ea3038..5bad6494c8a94d61a2504ed8449b8e27f5defc6b 100644 (file)
@@ -4,7 +4,6 @@ add_llvm_library(LLVMAVRDesc
   AVRELFStreamer.cpp
   AVRMCAsmInfo.cpp
   AVRMCCodeEmitter.cpp
-  AVRMCELFStreamer.cpp
   AVRMCExpr.cpp
   AVRMCTargetDesc.cpp
   AVRTargetStreamer.cpp
index da9925dcdbb632a71bc9e95df1a1ceb9eaa99767..398d5d3c5a163fd7efc91245b152fdb1faaf8b63 100644 (file)
@@ -2,10 +2,6 @@
 
 ; CHECK: RELOCATION RECORDS FOR
 
-; CHECK: RELOCATION RECORDS BAR
-bar:
-  jmp bar
-
 ; CHECK-NEXT: R_AVR_LDI SYMBOL+3
 ldi r21, SYMBOL+3
 
@@ -32,105 +28,48 @@ brcs foo+2
 
 ; CHECK-NEXT: R_AVR_LO8_LDI bar+3
 ldi r24, lo8(bar+3)
-ldi r16, +lo8(abc)
-ldi r16, lo8(+(abc))
 
 ; CHECK-NEXT: R_AVR_HI8_LDI abc
 ldi r30, hi8(abc)
-ldi r16, +hi8(abc)
-ldi r16, hi8(+(abc))
 
 ; CHECK-NEXT: R_AVR_LO8_LDI_NEG abc
 ldi r16, -lo8(abc)
-ldi r16, lo8(-(abc))
 
 ; CHECK-NEXT: R_AVR_HI8_LDI_NEG abc
 ldi r16, -hi8(abc)
-ldi r16, hi8(-(abc))
 
 ; CHECK-NEXT: R_AVR_HH8_LDI foo
 ldi r16, hh8(foo)
-ldi r16, +hh8(foo)
-ldi r16, hh8(+(foo))
 
 ; CHECK-NEXT: R_AVR_HH8_LDI_NEG foo
 ldi r16, -hh8(foo)
-ldi r16, hh8(-(foo))
 
 ; CHECK-NEXT: R_AVR_HH8_LDI foo
 ldi r24, hlo8(foo)
-ldi r24, +hlo8(foo)
-ldi r24, hlo8(+(foo))
 
 ; CHECK-NEXT: R_AVR_HH8_LDI_NEG foo
 ldi r24, -hlo8(foo)
-ldi r24, hlo8(-(foo))
 
 ; CHECK-NEXT: R_AVR_MS8_LDI bar
 ldi r24, hhi8(bar)
-ldi r24, +hhi8(bar)
-ldi r24, hhi8(+(bar))
 
 ; CHECK-NEXT: R_AVR_MS8_LDI_NEG bar
 ldi r24, -hhi8(bar)
-ldi r24, hhi8(-(bar))
 
 ; CHECK-NEXT: R_AVR_LO8_LDI_PM foo
 ldi r17, pm_lo8(foo)
-ldi r25, +pm_lo8(foo)
-ldi r25, pm_lo8(+(foo))
 
 ; CHECK-NEXT: R_AVR_HI8_LDI_PM bar
 ldi r22, pm_hi8(bar)
-ldi r25, +pm_hi8(foo)
-ldi r25, pm_hi8(+(foo))
 
 ; CHECK-NEXT: R_AVR_HH8_LDI_PM baz
 ldi r25, pm_hh8(baz)
-ldi r25, +pm_hh8(foo)
-ldi r25, pm_hh8(+(foo))
 
 ; CHECK-NEXT: R_AVR_LO8_LDI_PM_NEG
 ldi r25, -pm_lo8(foo)
-ldi r25, pm_lo8(-(foo))
 
 ; CHECK-NEXT: R_AVR_HI8_LDI_PM_NEG
 ldi r25, -pm_hi8(foo)
-ldi r25, pm_hi8(-(foo))
 
 ; CHECK-NEXT: R_AVR_HH8_LDI_PM_NEG
 ldi r25, -pm_hh8(foo)
-ldi r25, pm_hh8(-(foo))
-
-; CHECK-NEXT: R_AVR_LO8_LDI_GS
-ldi r17, lo8(gs(foo))
-
-; CHECK-NEXT: R_AVR_HI8_LDI_GS
-ldi r18, hi8(gs(foo))
-
-; CHECK-NEXT: R_AVR_16
-.short foo
-
-; CHECK-NEXT: R_AVR_16_PM
-.short gs(foo)
-
-; CHECK-NEXT: R_AVR_8
-.byte foo
-
-; CHECK-NEXT: R_AVR_8_LO8
-.byte lo8(foo)
-
-; CHECK-NEXT: R_AVR_8_HI8
-.byte hi8(foo)
-
-; CHECK-NEXT: R_AVR_8_HLO8
-.byte hlo8(foo)
-
-; CHECK-NEXT: R_AVR_DIFF8
-.byte foo - bar
-
-; CHECK-NEXT: R_AVR_DIFF16
-.short foo - bar
-
-; CHECK-NEXT: R_AVR_DIFF32
-.long foo - bar