mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-02 00:42:52 +01:00
c11390f758
to be aligned with optimal nops. This patch does not change any functionality and when the compiler is changed to use EmitCodeAlignment() it should also not change the resulting output. Once the compiler change is made and everything looks good the next patch with the table of optimal X86 nops will be added to WriteNopData() changing the output. There are many FIXMEs in this patch which will be removed when we have better target hooks (coming soon I hear). llvm-svn: 96963
78 lines
2.6 KiB
C++
78 lines
2.6 KiB
C++
//===- lib/MC/MCNullStreamer.cpp - Dummy Streamer Implementation ----------===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "llvm/MC/MCStreamer.h"
|
|
|
|
#include "llvm/MC/MCContext.h"
|
|
#include "llvm/MC/MCInst.h"
|
|
#include "llvm/MC/MCSectionMachO.h"
|
|
#include "llvm/MC/MCSymbol.h"
|
|
|
|
using namespace llvm;
|
|
|
|
namespace {
|
|
|
|
class MCNullStreamer : public MCStreamer {
|
|
public:
|
|
MCNullStreamer(MCContext &Context) : MCStreamer(Context) {}
|
|
|
|
/// @name MCStreamer Interface
|
|
/// @{
|
|
|
|
virtual void SwitchSection(const MCSection *Section) {
|
|
CurSection = Section;
|
|
}
|
|
|
|
virtual void EmitLabel(MCSymbol *Symbol) {}
|
|
|
|
virtual void EmitAssemblerFlag(MCAssemblerFlag Flag) {}
|
|
|
|
virtual void EmitAssignment(MCSymbol *Symbol, const MCExpr *Value) {}
|
|
|
|
virtual void EmitSymbolAttribute(MCSymbol *Symbol, MCSymbolAttr Attribute){}
|
|
|
|
virtual void EmitSymbolDesc(MCSymbol *Symbol, unsigned DescValue) {}
|
|
virtual void EmitELFSize(MCSymbol *Symbol, const MCExpr *Value) {}
|
|
virtual void EmitCommonSymbol(MCSymbol *Symbol, uint64_t Size,
|
|
unsigned ByteAlignment) {}
|
|
virtual void EmitLocalCommonSymbol(MCSymbol *Symbol, uint64_t Size) {}
|
|
|
|
virtual void EmitZerofill(const MCSection *Section, MCSymbol *Symbol = 0,
|
|
unsigned Size = 0, unsigned ByteAlignment = 0) {}
|
|
|
|
virtual void EmitBytes(StringRef Data, unsigned AddrSpace) {}
|
|
|
|
virtual void EmitValue(const MCExpr *Value, unsigned Size,
|
|
unsigned AddrSpace) {}
|
|
virtual void EmitGPRel32Value(const MCExpr *Value) {}
|
|
virtual void EmitValueToAlignment(unsigned ByteAlignment, int64_t Value = 0,
|
|
unsigned ValueSize = 1,
|
|
unsigned MaxBytesToEmit = 0) {}
|
|
|
|
virtual void EmitCodeAlignment(unsigned ByteAlignment,
|
|
unsigned MaxBytesToEmit = 0) {}
|
|
|
|
virtual void EmitValueToOffset(const MCExpr *Offset,
|
|
unsigned char Value = 0) {}
|
|
|
|
virtual void EmitFileDirective(StringRef Filename) {}
|
|
virtual void EmitDwarfFileDirective(unsigned FileNo,StringRef Filename) {}
|
|
virtual void EmitInstruction(const MCInst &Inst) {}
|
|
|
|
virtual void Finish() {}
|
|
|
|
/// @}
|
|
};
|
|
|
|
}
|
|
|
|
MCStreamer *llvm::createNullStreamer(MCContext &Context) {
|
|
return new MCNullStreamer(Context);
|
|
}
|