|
LLVM
3.7.0
|
Target specific streamer interface. More...
#include <MCStreamer.h>
Public Member Functions | |
| MCTargetStreamer (MCStreamer &S) | |
| virtual | ~MCTargetStreamer () |
| MCStreamer & | getStreamer () |
| virtual void | emitLabel (MCSymbol *Symbol) |
| virtual void | emitAssignment (MCSymbol *Symbol, const MCExpr *Value) |
| virtual void | prettyPrintAsm (MCInstPrinter &InstPrinter, raw_ostream &OS, const MCInst &Inst, const MCSubtargetInfo &STI) |
| virtual void | finish () |
Protected Attributes | |
| MCStreamer & | Streamer |
Target specific streamer interface.
This is used so that targets can implement support for target specific assembly directives.
If target foo wants to use this, it should implement 3 classes:
FooTargetStreamer should have a pure virtual method for each directive. For example, for a ".bar symbol_name" directive, it should have virtual emitBar(const MCSymbol &Symbol) = 0;
The FooTargetAsmStreamer and FooTargetELFStreamer classes implement the method. The assembly streamer just prints ".bar symbol_name". The object streamer does whatever is needed to implement .bar in the object file.
In the assembly printer and parser the target streamer can be used by calling getTargetStreamer and casting it to FooTargetStreamer:
MCTargetStreamer &TS = OutStreamer.getTargetStreamer(); FooTargetStreamer &ATS = static_cast<FooTargetStreamer &>(TS);
The base classes FooTargetAsmStreamer and FooTargetELFStreamer should never be treated differently. Callers should always talk to a FooTargetStreamer.
Definition at line 73 of file MCStreamer.h.
| MCTargetStreamer::MCTargetStreamer | ( | MCStreamer & | S | ) |
Definition at line 33 of file MCStreamer.cpp.
References llvm::MCStreamer::setTargetStreamer().
|
virtual |
Definition at line 31 of file MCStreamer.cpp.
Reimplemented in llvm::MipsTargetELFStreamer.
Definition at line 41 of file MCStreamer.cpp.
Referenced by llvm::MCStreamer::EmitAssignment().
|
virtual |
Reimplemented in llvm::MipsTargetELFStreamer.
Definition at line 37 of file MCStreamer.cpp.
Referenced by llvm::MCStreamer::EmitLabel().
|
virtual |
Reimplemented in llvm::MipsTargetELFStreamer, llvm::ARMTargetStreamer, and llvm::AArch64TargetStreamer.
Definition at line 39 of file MCStreamer.cpp.
Referenced by llvm::MCStreamer::Finish().
|
inline |
Definition at line 81 of file MCStreamer.h.
References Streamer.
|
virtual |
Definition at line 605 of file MCStreamer.cpp.
References llvm::MCInstPrinter::printInst().
|
protected |
Definition at line 75 of file MCStreamer.h.
Referenced by llvm::AArch64TargetStreamer::addConstantPoolEntry(), llvm::ARMTargetStreamer::addConstantPoolEntry(), llvm::AArch64TargetStreamer::emitCurrentConstantPool(), llvm::ARMTargetStreamer::emitCurrentConstantPool(), llvm::MipsTargetELFStreamer::emitDirectiveInsn(), llvm::AArch64TargetStreamer::finish(), llvm::ARMTargetStreamer::finish(), llvm::MipsTargetELFStreamer::finish(), llvm::SparcTargetELFStreamer::getStreamer(), getStreamer(), and llvm::MipsTargetELFStreamer::getStreamer().
1.8.6