@@ -251,6 +251,38 @@ LLVM_DUMP_METHOD void Descriptor::dump(llvm::raw_ostream &OS) const {
251
251
OS << " dummy" ;
252
252
}
253
253
254
+ // / Dump descriptor, including all valid offsets.
255
+ LLVM_DUMP_METHOD void Descriptor::dumpFull (unsigned Offset,
256
+ unsigned Indent) const {
257
+ unsigned Spaces = Indent * 2 ;
258
+ llvm::raw_ostream &OS = llvm::errs ();
259
+ OS.indent (Spaces);
260
+ dump (OS);
261
+ OS << ' \n ' ;
262
+ OS.indent (Spaces) << " Metadata: " << getMetadataSize () << " bytes\n " ;
263
+ OS.indent (Spaces) << " Size: " << getSize () << " bytes\n " ;
264
+ OS.indent (Spaces) << " AllocSize: " << getAllocSize () << " bytes\n " ;
265
+ Offset += getMetadataSize ();
266
+ if (isCompositeArray ()) {
267
+ OS.indent (Spaces) << " Elements: " << getNumElems () << ' \n ' ;
268
+ unsigned FO = Offset;
269
+ for (unsigned I = 0 ; I != getNumElems (); ++I) {
270
+ FO += sizeof (InlineDescriptor);
271
+ assert (ElemDesc->getMetadataSize () == 0 );
272
+ OS.indent (Spaces) << " Element " << I << " offset: " << FO << ' \n ' ;
273
+ ElemDesc->dumpFull (FO, Indent + 1 );
274
+
275
+ FO += ElemDesc->getAllocSize ();
276
+ }
277
+ } else if (isRecord ()) {
278
+ ElemRecord->dump (OS, Indent + 1 , Offset);
279
+ } else if (isPrimitive ()) {
280
+ } else {
281
+ }
282
+
283
+ OS << ' \n ' ;
284
+ }
285
+
254
286
LLVM_DUMP_METHOD void InlineDescriptor::dump (llvm::raw_ostream &OS) const {
255
287
{
256
288
ColorScope SC (OS, true , {llvm::raw_ostream::BLUE, true });
0 commit comments