summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2010-01-20 06:39:07 +0000
committerChris Lattner <sabre@nondot.org>2010-01-20 06:39:07 +0000
commit38caaf14c11aaef054cd60687d92c0248f7768f5 (patch)
tree048b2abe8091a464897c45d6b8115f5516807a68
parent2b4364fe030894b65eededb3c7cfba4f50da2d51 (diff)
downloadbcm5719-llvm-38caaf14c11aaef054cd60687d92c0248f7768f5.tar.gz
bcm5719-llvm-38caaf14c11aaef054cd60687d92c0248f7768f5.zip
give createAsmStreamer an 'isLittleEndian' argument.
llvm-svn: 93986
-rw-r--r--llvm/include/llvm/MC/MCStreamer.h2
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp3
-rw-r--r--llvm/lib/MC/MCAsmStreamer.cpp11
-rw-r--r--llvm/tools/llvm-mc/llvm-mc.cpp5
4 files changed, 15 insertions, 6 deletions
diff --git a/llvm/include/llvm/MC/MCStreamer.h b/llvm/include/llvm/MC/MCStreamer.h
index f1680a94e36..acd84f61197 100644
--- a/llvm/include/llvm/MC/MCStreamer.h
+++ b/llvm/include/llvm/MC/MCStreamer.h
@@ -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);
diff --git a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
index e230affbb21..d439fb6e3c1 100644
--- a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
@@ -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;
diff --git a/llvm/lib/MC/MCAsmStreamer.cpp b/llvm/lib/MC/MCAsmStreamer.cpp
index a126b527863..23489095893 100644
--- a/llvm/lib/MC/MCAsmStreamer.cpp
+++ b/llvm/lib/MC/MCAsmStreamer.cpp
@@ -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);
}
diff --git a/llvm/tools/llvm-mc/llvm-mc.cpp b/llvm/tools/llvm-mc/llvm-mc.cpp
index 30cdfba57b5..c9d08ecb0c7 100644
--- a/llvm/tools/llvm-mc/llvm-mc.cpp
+++ b/llvm/tools/llvm-mc/llvm-mc.cpp
@@ -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));
OpenPOWER on IntegriCloud