summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/AsmPrinter/DIEHash.h
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter/DIEHash.h')
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/DIEHash.h36
1 files changed, 33 insertions, 3 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DIEHash.h b/llvm/lib/CodeGen/AsmPrinter/DIEHash.h
index 27e3c576318..3c025bb58ee 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DIEHash.h
+++ b/llvm/lib/CodeGen/AsmPrinter/DIEHash.h
@@ -20,15 +20,35 @@ class CompileUnit;
/// \brief An object containing the capability of hashing and adding hash
/// attributes onto a DIE.
class DIEHash {
+ // The entry for a particular attribute.
+ struct AttrEntry {
+ const DIEValue *Val;
+ const DIEAbbrevData *Desc;
+ };
+
+ // Collection of all attributes used in hashing a particular DIE.
+ struct DIEAttrs {
+ AttrEntry DW_AT_name;
+ };
+
public:
/// \brief Computes the ODR signature
uint64_t computeDIEODRSignature(DIE *Die);
+ /// \brief Computes the CU signature
+ uint64_t computeCUSignature(DIE *Die);
+
// Helper routines to process parts of a DIE.
- private:
+private:
/// \brief Adds the parent context of \param Die to the hash.
void addParentContext(DIE *Die);
-
+
+ /// \brief Adds the attributes of \param Die to the hash.
+ void addAttributes(DIE *Die);
+
+ /// \brief Computes the full DWARF4 7.27 hash of the DIE.
+ void computeHash(DIE *Die);
+
// Routines that add DIEValues to the hash.
private:
/// \brief Encodes and adds \param Value to the hash as a ULEB128.
@@ -36,7 +56,17 @@ private:
/// \brief Adds \param Str to the hash and includes a NULL byte.
void addString(StringRef Str);
-
+
+ /// \brief Collects the attributes of DIE \param Die into the \param Attrs
+ /// structure.
+ void collectAttributes(DIE *Die, DIEAttrs Attrs);
+
+ /// \brief Hashes the attributes in \param Attrs in order.
+ void hashAttributes(DIEAttrs Attrs);
+
+ /// \brief Hashes an individual attribute.
+ void hashAttribute(AttrEntry Attr);
+
private:
MD5 Hash;
};
OpenPOWER on IntegriCloud