Revert and accidentally committed revert commit
This reverts commit r320245.
llvm-svn: 320247
diff --git a/llvm/lib/Target/AVR/MCTargetDesc/AVRMCELFStreamer.cpp b/llvm/lib/Target/AVR/MCTargetDesc/AVRMCELFStreamer.cpp
new file mode 100644
index 0000000..c60ea7a
--- /dev/null
+++ b/llvm/lib/Target/AVR/MCTargetDesc/AVRMCELFStreamer.cpp
@@ -0,0 +1,51 @@
+//===--------- 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