Lines Matching refs:DIE
16 #include "DIE.h"
33 static StringRef getDIEStringAttr(const DIE &Die, uint16_t Attr) {
34 const SmallVectorImpl<DIEValue *> &Values = Die.getValues();
35 const DIEAbbrev &Abbrevs = Die.getAbbrev();
88 void DIEHash::addParentContext(const DIE &Parent) {
94 SmallVector<const DIE *, 1> Parents;
95 const DIE *Cur = &Parent;
105 for (SmallVectorImpl<const DIE *>::reverse_iterator I = Parents.rbegin(),
108 const DIE &Die = **I;
114 addULEB128(Die.getTag());
117 StringRef Name = getDIEStringAttr(Die, dwarf::DW_AT_name);
124 // Collect all of the attributes for a particular DIE in single structure.
125 void DIEHash::collectAttributes(const DIE &Die, DIEAttrs &Attrs) {
126 const SmallVectorImpl<DIEValue *> &Values = Die.getValues();
127 const DIEAbbrev &Abbrevs = Die.getAbbrev();
196 const DIE &Entry, StringRef Name) {
204 if (const DIE *Parent = Entry.getParent())
235 const DIE &Entry) {
435 // Add all of the attributes for \param Die to the hash.
436 void DIEHash::addAttributes(const DIE &Die) {
438 collectAttributes(Die, Attrs);
439 hashAttributes(Attrs, Die.getTag());
442 void DIEHash::hashNestedType(const DIE &Die, StringRef Name) {
448 addULEB128(Die.getTag());
454 // Compute the hash of a DIE. This is based on the type signature computation
456 // flattened description of the DIE.
457 void DIEHash::computeHash(const DIE &Die) {
458 // Append the letter 'D', followed by the DWARF tag of the DIE.
460 addULEB128(Die.getTag());
462 // Add each of the attributes of the DIE.
463 addAttributes(Die);
465 DIE.
466 for (auto &C : Die.getChildren()) {
485 /// DWARF4 standard. It is the md5 hash of a flattened description of the DIE
488 uint64_t DIEHash::computeDIEODRSignature(const DIE &Die) {
495 if (const DIE *Parent = Die.getParent())
498 // Add the current DIE information.
500 // Add the DWARF tag of the DIE.
501 addULEB128(Die.getTag());
504 addString(getDIEStringAttr(Die, dwarf::DW_AT_name));
517 /// DWARF4 standard. It is an md5 hash of the flattened description of the DIE
520 uint64_t DIEHash::computeCUSignature(const DIE &Die) {
522 Numbering[&Die] = 1;
524 // Hash the DIE.
525 computeHash(Die);
538 /// DWARF4 standard. It is an md5 hash of the flattened description of the DIE
541 uint64_t DIEHash::computeTypeSignature(const DIE &Die) {
543 Numbering[&Die] = 1;
545 if (const DIE *Parent = Die.getParent())
548 // Hash the DIE.
549 computeHash(Die);