14#ifndef LLVM_LIB_CODEGEN_ASMPRINTER_BYTESTREAMER_H
15#define LLVM_LIB_CODEGEN_ASMPRINTER_BYTESTREAMER_H
35 unsigned PadTo = 0) = 0;
46 AP.OutStreamer->AddComment(Comment);
50 AP.OutStreamer->AddComment(Comment);
51 AP.emitSLEB128(DWord);
54 unsigned PadTo)
override {
55 AP.OutStreamer->AddComment(Comment);
56 AP.emitULEB128(DWord,
nullptr, PadTo);
78 Hash.addSLEB128(DWord);
81 unsigned PadTo)
override {
82 Hash.addULEB128(DWord);
85 Hash.hashRawTypeReference(
D);
93 std::vector<std::string> &Comments;
106 Buffer.push_back(Byte);
108 Comments.push_back(Comment.str());
114 Comments.push_back(Comment.str());
117 for (
size_t i = 1; i <
Length; ++i)
118 Comments.push_back(
"");
123 unsigned PadTo)
override {
127 Comments.push_back(Comment.str());
130 for (
size_t i = 1; i <
Length; ++i)
131 Comments.push_back(
"");
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
static GCRegistry::Add< StatepointGC > D("statepoint-example", "an example strategy for statepoint")
static constexpr unsigned ULEB128PadSize
unsigned emitDIERef(const DIE &D) override
APByteStreamer(AsmPrinter &Asm)
void emitULEB128(uint64_t DWord, const Twine &Comment, unsigned PadTo) override
void emitSLEB128(uint64_t DWord, const Twine &Comment) override
void emitInt8(uint8_t Byte, const Twine &Comment) override
This class is intended to be used as a driving class for all asm writers.
void emitInt8(uint8_t Byte, const Twine &Comment) override
unsigned emitDIERef(const DIE &D) override
void emitULEB128(uint64_t DWord, const Twine &Comment, unsigned PadTo) override
void emitSLEB128(uint64_t DWord, const Twine &Comment) override
const bool GenerateComments
Only verbose textual output needs comments.
BufferByteStreamer(SmallVectorImpl< char > &Buffer, std::vector< std::string > &Comments, bool GenerateComments)
virtual void emitULEB128(uint64_t DWord, const Twine &Comment="", unsigned PadTo=0)=0
virtual void emitSLEB128(uint64_t DWord, const Twine &Comment="")=0
virtual void emitInt8(uint8_t Byte, const Twine &Comment="")=0
virtual unsigned emitDIERef(const DIE &D)=0
ByteStreamer(const ByteStreamer &)=default
An object containing the capability of hashing and adding hash attributes onto a DIE.
A structured debug information entry.
HashingByteStreamer(DIEHash &H)
void emitULEB128(uint64_t DWord, const Twine &Comment, unsigned PadTo) override
void emitSLEB128(uint64_t DWord, const Twine &Comment) override
void emitInt8(uint8_t Byte, const Twine &Comment) override
unsigned emitDIERef(const DIE &D) override
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
Twine - A lightweight data structure for efficiently representing the concatenation of temporary valu...
A raw_ostream that writes to an SmallVector or SmallString.
This is an optimization pass for GlobalISel generic memory operations.
unsigned encodeSLEB128(int64_t Value, raw_ostream &OS, unsigned PadTo=0)
Utility function to encode a SLEB128 value to an output stream.
unsigned encodeULEB128(uint64_t Value, raw_ostream &OS, unsigned PadTo=0)
Utility function to encode a ULEB128 value to an output stream.