mirror of
https://github.com/RPCSX/llvm.git
synced 2025-01-31 09:22:31 +00:00
llvm-mc: Add dummy MCStreamer implementation, (eventually) for use in profiling.
- Currently unused. - A few other random comment fixes lumped in. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78960 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
fdf229eda9
commit
011e4db845
@ -221,6 +221,10 @@ namespace llvm {
|
||||
virtual void Finish() = 0;
|
||||
};
|
||||
|
||||
/// createNullStreamer - Create a dummy machine code streamer, which does
|
||||
/// nothing. This is useful for timing the assembler front end.
|
||||
MCStreamer *createNullStreamer(MCContext &Ctx);
|
||||
|
||||
/// createAsmStreamer - Create a machine code streamer which will print out
|
||||
/// assembly for the native target, suitable for compiling with a native
|
||||
/// assembler.
|
||||
|
@ -217,7 +217,7 @@ namespace llvm {
|
||||
/// the current host. If no close target can be found, this returns null
|
||||
/// and sets the Error string to a reason.
|
||||
///
|
||||
/// Mainted for compatibility through 2.6.
|
||||
/// Maintained for compatibility through 2.6.
|
||||
static const Target *getClosestTargetForJIT(std::string &Error);
|
||||
|
||||
/// @}
|
||||
|
@ -155,6 +155,7 @@ void MCAsmStreamer::EmitLabel(MCSymbol *Symbol) {
|
||||
|
||||
void MCAsmStreamer::EmitAssemblerFlag(AssemblerFlag Flag) {
|
||||
switch (Flag) {
|
||||
default: assert(0 && "Invalid flag!");
|
||||
case SubsectionsViaSymbols: OS << ".subsections_via_symbols"; break;
|
||||
}
|
||||
OS << '\n';
|
||||
@ -215,10 +216,7 @@ void MCAsmStreamer::EmitCommonSymbol(MCSymbol *Symbol, unsigned Size,
|
||||
|
||||
void MCAsmStreamer::EmitZerofill(MCSection *Section, MCSymbol *Symbol,
|
||||
unsigned Size, unsigned Pow2Alignment) {
|
||||
// Note: a .zerofill directive does not switch sections
|
||||
// FIXME: Really we would like the segment and section names as well as the
|
||||
// section type to be separate values instead of embedded in the name. Not
|
||||
// all assemblers understand all this stuff though.
|
||||
// Note: a .zerofill directive does not switch sections.
|
||||
OS << ".zerofill ";
|
||||
|
||||
// This is a mach-o specific directive.
|
||||
@ -226,7 +224,6 @@ void MCAsmStreamer::EmitZerofill(MCSection *Section, MCSymbol *Symbol,
|
||||
OS << '"' << MOSection->getSegmentName() << ","
|
||||
<< MOSection->getSectionName() << '"';
|
||||
|
||||
|
||||
if (Symbol != NULL) {
|
||||
OS << ',' << Symbol << ',' << Size;
|
||||
if (Pow2Alignment != 0)
|
||||
|
72
lib/MC/MCNullStreamer.cpp
Normal file
72
lib/MC/MCNullStreamer.cpp
Normal file
@ -0,0 +1,72 @@
|
||||
//===- 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"
|
||||
#include "llvm/MC/MCValue.h"
|
||||
|
||||
using namespace llvm;
|
||||
|
||||
namespace {
|
||||
|
||||
class MCNullStreamer : public MCStreamer {
|
||||
public:
|
||||
MCNullStreamer(MCContext &Context) : MCStreamer(Context) {}
|
||||
|
||||
/// @name MCStreamer Interface
|
||||
/// @{
|
||||
|
||||
virtual void SwitchSection(MCSection *Section) {}
|
||||
|
||||
virtual void EmitLabel(MCSymbol *Symbol) {}
|
||||
|
||||
virtual void EmitAssemblerFlag(AssemblerFlag Flag) {}
|
||||
|
||||
virtual void EmitAssignment(MCSymbol *Symbol, const MCValue &Value,
|
||||
bool MakeAbsolute = false) {}
|
||||
|
||||
virtual void EmitSymbolAttribute(MCSymbol *Symbol, SymbolAttr Attribute) {}
|
||||
|
||||
virtual void EmitSymbolDesc(MCSymbol *Symbol, unsigned DescValue) {}
|
||||
|
||||
virtual void EmitLocalSymbol(MCSymbol *Symbol, const MCValue &Value) {}
|
||||
|
||||
virtual void EmitCommonSymbol(MCSymbol *Symbol, unsigned Size,
|
||||
unsigned Pow2Alignment, bool IsLocal) {}
|
||||
|
||||
virtual void EmitZerofill(MCSection *Section, MCSymbol *Symbol = NULL,
|
||||
unsigned Size = 0, unsigned Pow2Alignment = 0) {}
|
||||
|
||||
virtual void EmitBytes(const StringRef &Data) {}
|
||||
|
||||
virtual void EmitValue(const MCValue &Value, unsigned Size) {}
|
||||
|
||||
virtual void EmitValueToAlignment(unsigned ByteAlignment, int64_t Value = 0,
|
||||
unsigned ValueSize = 1,
|
||||
unsigned MaxBytesToEmit = 0) {}
|
||||
|
||||
virtual void EmitValueToOffset(const MCValue &Offset,
|
||||
unsigned char Value = 0) {}
|
||||
|
||||
virtual void EmitInstruction(const MCInst &Inst) {}
|
||||
|
||||
virtual void Finish() {}
|
||||
|
||||
/// @}
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
MCStreamer *llvm::createNullStreamer(MCContext &Context) {
|
||||
return new MCNullStreamer(Context);
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user