26 : Kind(Kind), Data(Data) {}
52 std::shared_ptr<DebugSubsection> Subsection)
53 : Subsection(
std::
move(Subsection)) {}
57 : Contents(Contents) {}
60 uint32_t DataSize = Subsection ? Subsection->calculateSerializedSize()
70 "Debug Subsection not properly aligned");
73 Header.Kind =
uint32_t(Subsection ? Subsection->kind() : Contents.
kind());
76 uint32_t DataSize = Subsection ? Subsection->calculateSerializedSize()
83 if (
auto EC = Subsection->commit(Writer))
Analysis containing CSE Info
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
Provides read only access to a subclass of BinaryStream.
Error readStreamRef(BinaryStreamRef &Ref)
Read the entire remainder of the underlying stream into Ref.
Error readObject(const T *&Dest)
Get a pointer to an object of type T from the underlying stream, as if by memcpy, and store the resul...
uint64_t getLength() const
BinaryStreamRef is to BinaryStream what ArrayRef is to an Array.
Provides write only access to a subclass of WritableBinaryStream.
uint64_t getOffset() const
Error writeStreamRef(BinaryStreamRef Ref)
Efficiently reads all data from Ref, and writes it to this stream.
Error writeObject(const T &Obj)
Writes the object Obj to the underlying stream, as if by using memcpy.
Error padToAlignment(uint32_t Align)
Lightweight error class with error context and mandatory checking.
static ErrorSuccess success()
Create a success value.
Error commit(BinaryStreamWriter &Writer, CodeViewContainer Container) const
uint32_t calculateSerializedLength() const
DebugSubsectionRecordBuilder(std::shared_ptr< DebugSubsection > Subsection)
BinaryStreamRef getRecordData() const
DebugSubsectionKind kind() const
static Error initialize(BinaryStreamRef Stream, DebugSubsectionRecord &Info)
uint32_t getRecordLength() const
uint32_t alignOf(CodeViewContainer Container)
This is an optimization pass for GlobalISel generic memory operations.
uint64_t alignTo(uint64_t Size, Align A)
Returns a multiple of A needed to store Size bytes.
OutputIt move(R &&Range, OutputIt Out)
Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.
Implement std::hash so that hash_code can be used in STL containers.