give createAsmStreamer an 'isLittleEndian' argument.
authorChris Lattner <sabre@nondot.org>
Wed, 20 Jan 2010 06:39:07 +0000 (06:39 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 20 Jan 2010 06:39:07 +0000 (06:39 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93986 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/MC/MCStreamer.h
lib/CodeGen/AsmPrinter/AsmPrinter.cpp
lib/MC/MCAsmStreamer.cpp
tools/llvm-mc/llvm-mc.cpp

index f1680a94e3643584692bb0fb8bbd8b55cb3857b5..acd84f611972d4a7f4d5af0814463e547b8b2da0 100644 (file)
@@ -235,7 +235,7 @@ namespace llvm {
   /// assembly for the native target, suitable for compiling with a native
   /// assembler.
   MCStreamer *createAsmStreamer(MCContext &Ctx, raw_ostream &OS,
-                                const MCAsmInfo &MAI,
+                                const MCAsmInfo &MAI, bool isLittleEndian,
                                 MCInstPrinter *InstPrint = 0,
                                 MCCodeEmitter *CE = 0);
 
index e230affbb215501a64200939cf664ac818038e5b..d439fb6e3c1b3fee39f73af04cce1c1871d421e8 100644 (file)
@@ -58,7 +58,8 @@ AsmPrinter::AsmPrinter(formatted_raw_ostream &o, TargetMachine &tm,
 
     OutContext(*new MCContext()),
     // FIXME: Pass instprinter to streamer.
-    OutStreamer(*createAsmStreamer(OutContext, O, *T, 0)),
+    OutStreamer(*createAsmStreamer(OutContext, O, *T,
+                                   TM.getTargetData()->isLittleEndian(), 0)),
 
     LastMI(0), LastFn(0), Counter(~0U), PrevDLT(NULL) {
   DW = 0; MMI = 0;
index a126b52786315cf4b96a4f5694fad9ac9cb4c922..23489095893e22d8e55f59e62fcd2906b3a4b13b 100644 (file)
@@ -28,15 +28,19 @@ namespace {
 class MCAsmStreamer : public MCStreamer {
   raw_ostream &OS;
   const MCAsmInfo &MAI;
+  bool IsLittleEndian;
   MCInstPrinter *InstPrinter;
   MCCodeEmitter *Emitter;
 public:
   MCAsmStreamer(MCContext &Context, raw_ostream &_OS, const MCAsmInfo &tai,
-                MCInstPrinter *_Printer, MCCodeEmitter *_Emitter)
+                bool isLittleEndian, MCInstPrinter *_Printer,
+                MCCodeEmitter *_Emitter)
     : MCStreamer(Context), OS(_OS), MAI(tai), InstPrinter(_Printer),
       Emitter(_Emitter) {}
   ~MCAsmStreamer() {}
 
+  bool isLittleEndian() const { return IsLittleEndian; }
+  
   /// @name MCStreamer Interface
   /// @{
 
@@ -337,7 +341,8 @@ void MCAsmStreamer::Finish() {
 }
     
 MCStreamer *llvm::createAsmStreamer(MCContext &Context, raw_ostream &OS,
-                                    const MCAsmInfo &MAI, MCInstPrinter *IP,
+                                    const MCAsmInfo &MAI, bool isLittleEndian,
+                                    MCInstPrinter *IP,
                                     MCCodeEmitter *CE) {
-  return new MCAsmStreamer(Context, OS, MAI, IP, CE);
+  return new MCAsmStreamer(Context, OS, MAI, isLittleEndian, IP, CE);
 }
index 30cdfba57b5007f144f4c7c36682ab276f6a1ded..c9d08ecb0c7bcb3415eedf68094c1eee3583ad67 100644 (file)
@@ -28,6 +28,7 @@
 #include "llvm/Support/raw_ostream.h"
 #include "llvm/System/Signals.h"
 #include "llvm/Target/TargetAsmParser.h"
+#include "llvm/Target/TargetData.h"
 #include "llvm/Target/TargetRegistry.h"
 #include "llvm/Target/TargetMachine.h"  // FIXME.
 #include "llvm/Target/TargetSelect.h"
@@ -263,7 +264,9 @@ static int AssembleInput(const char *ProgName) {
     IP.reset(TheTarget->createMCInstPrinter(OutputAsmVariant, *MAI, *Out));
     if (ShowEncoding)
       CE.reset(TheTarget->createCodeEmitter(*TM));
-    Str.reset(createAsmStreamer(Ctx, *Out, *MAI, IP.get(), CE.get()));
+    Str.reset(createAsmStreamer(Ctx, *Out, *MAI,
+                                TM->getTargetData()->isLittleEndian(),
+                                IP.get(), CE.get()));
   } else {
     assert(FileType == OFT_ObjectFile && "Invalid file type!");
     CE.reset(TheTarget->createCodeEmitter(*TM));