summaryrefslogtreecommitdiffstats
path: root/contrib/llvm/lib/CodeGen/AsmPrinter/DIEHash.h
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/llvm/lib/CodeGen/AsmPrinter/DIEHash.h')
-rw-r--r--contrib/llvm/lib/CodeGen/AsmPrinter/DIEHash.h109
1 files changed, 51 insertions, 58 deletions
diff --git a/contrib/llvm/lib/CodeGen/AsmPrinter/DIEHash.h b/contrib/llvm/lib/CodeGen/AsmPrinter/DIEHash.h
index ac014b7..1850e04 100644
--- a/contrib/llvm/lib/CodeGen/AsmPrinter/DIEHash.h
+++ b/contrib/llvm/lib/CodeGen/AsmPrinter/DIEHash.h
@@ -26,64 +26,57 @@ 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;
- AttrEntry DW_AT_accessibility;
- AttrEntry DW_AT_address_class;
- AttrEntry DW_AT_allocated;
- AttrEntry DW_AT_artificial;
- AttrEntry DW_AT_associated;
- AttrEntry DW_AT_binary_scale;
- AttrEntry DW_AT_bit_offset;
- AttrEntry DW_AT_bit_size;
- AttrEntry DW_AT_bit_stride;
- AttrEntry DW_AT_byte_size;
- AttrEntry DW_AT_byte_stride;
- AttrEntry DW_AT_const_expr;
- AttrEntry DW_AT_const_value;
- AttrEntry DW_AT_containing_type;
- AttrEntry DW_AT_count;
- AttrEntry DW_AT_data_bit_offset;
- AttrEntry DW_AT_data_location;
- AttrEntry DW_AT_data_member_location;
- AttrEntry DW_AT_decimal_scale;
- AttrEntry DW_AT_decimal_sign;
- AttrEntry DW_AT_default_value;
- AttrEntry DW_AT_digit_count;
- AttrEntry DW_AT_discr;
- AttrEntry DW_AT_discr_list;
- AttrEntry DW_AT_discr_value;
- AttrEntry DW_AT_encoding;
- AttrEntry DW_AT_enum_class;
- AttrEntry DW_AT_endianity;
- AttrEntry DW_AT_explicit;
- AttrEntry DW_AT_is_optional;
- AttrEntry DW_AT_location;
- AttrEntry DW_AT_lower_bound;
- AttrEntry DW_AT_mutable;
- AttrEntry DW_AT_ordering;
- AttrEntry DW_AT_picture_string;
- AttrEntry DW_AT_prototyped;
- AttrEntry DW_AT_small;
- AttrEntry DW_AT_segment;
- AttrEntry DW_AT_string_length;
- AttrEntry DW_AT_threads_scaled;
- AttrEntry DW_AT_upper_bound;
- AttrEntry DW_AT_use_location;
- AttrEntry DW_AT_use_UTF8;
- AttrEntry DW_AT_variable_parameter;
- AttrEntry DW_AT_virtuality;
- AttrEntry DW_AT_visibility;
- AttrEntry DW_AT_vtable_elem_location;
- AttrEntry DW_AT_type;
+ DIEValue DW_AT_name;
+ DIEValue DW_AT_accessibility;
+ DIEValue DW_AT_address_class;
+ DIEValue DW_AT_allocated;
+ DIEValue DW_AT_artificial;
+ DIEValue DW_AT_associated;
+ DIEValue DW_AT_binary_scale;
+ DIEValue DW_AT_bit_offset;
+ DIEValue DW_AT_bit_size;
+ DIEValue DW_AT_bit_stride;
+ DIEValue DW_AT_byte_size;
+ DIEValue DW_AT_byte_stride;
+ DIEValue DW_AT_const_expr;
+ DIEValue DW_AT_const_value;
+ DIEValue DW_AT_containing_type;
+ DIEValue DW_AT_count;
+ DIEValue DW_AT_data_bit_offset;
+ DIEValue DW_AT_data_location;
+ DIEValue DW_AT_data_member_location;
+ DIEValue DW_AT_decimal_scale;
+ DIEValue DW_AT_decimal_sign;
+ DIEValue DW_AT_default_value;
+ DIEValue DW_AT_digit_count;
+ DIEValue DW_AT_discr;
+ DIEValue DW_AT_discr_list;
+ DIEValue DW_AT_discr_value;
+ DIEValue DW_AT_encoding;
+ DIEValue DW_AT_enum_class;
+ DIEValue DW_AT_endianity;
+ DIEValue DW_AT_explicit;
+ DIEValue DW_AT_is_optional;
+ DIEValue DW_AT_location;
+ DIEValue DW_AT_lower_bound;
+ DIEValue DW_AT_mutable;
+ DIEValue DW_AT_ordering;
+ DIEValue DW_AT_picture_string;
+ DIEValue DW_AT_prototyped;
+ DIEValue DW_AT_small;
+ DIEValue DW_AT_segment;
+ DIEValue DW_AT_string_length;
+ DIEValue DW_AT_threads_scaled;
+ DIEValue DW_AT_upper_bound;
+ DIEValue DW_AT_use_location;
+ DIEValue DW_AT_use_UTF8;
+ DIEValue DW_AT_variable_parameter;
+ DIEValue DW_AT_virtuality;
+ DIEValue DW_AT_visibility;
+ DIEValue DW_AT_vtable_elem_location;
+ DIEValue DW_AT_type;
// Insert any additional ones here...
};
@@ -135,13 +128,13 @@ private:
/// \brief Hashes the data in a block like DIEValue, e.g. DW_FORM_block or
/// DW_FORM_exprloc.
- void hashBlockData(const SmallVectorImpl<DIEValue *> &Values);
+ void hashBlockData(const DIE::value_range &Values);
/// \brief Hashes the contents pointed to in the .debug_loc section.
void hashLocList(const DIELocList &LocList);
/// \brief Hashes an individual attribute.
- void hashAttribute(AttrEntry Attr, dwarf::Tag Tag);
+ void hashAttribute(DIEValue Value, dwarf::Tag Tag);
/// \brief Hashes an attribute that refers to another DIE.
void hashDIEEntry(dwarf::Attribute Attribute, dwarf::Tag Tag,
OpenPOWER on IntegriCloud