AsmPrinter: Remove DIEHash::AttrEntry, NFC

Remove "the most boring struct ever" (thanks to review by Eric).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@238366 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Duncan P. N. Exon Smith 2015-05-27 22:36:37 +00:00
parent 611a2f2322
commit 95afdd3a07
2 changed files with 53 additions and 62 deletions

View File

@ -122,7 +122,7 @@ void DIEHash::collectAttributes(const DIE &Die, DIEAttrs &Attrs) {
#define COLLECT_ATTR(NAME) \
case dwarf::NAME: \
Attrs.NAME.Val = Values[i]; \
Attrs.NAME = Values[i]; \
break
for (size_t i = 0, e = Values.size(); i != e; ++i) {
@ -283,8 +283,7 @@ void DIEHash::hashLocList(const DIELocList &LocList) {
// Hash an individual attribute \param Attr based on the type of attribute and
// the form.
void DIEHash::hashAttribute(AttrEntry Attr, dwarf::Tag Tag) {
const DIEValue &Value = Attr.Val;
void DIEHash::hashAttribute(DIEValue Value, dwarf::Tag Tag) {
dwarf::Attribute Attribute = Value.getAttribute();
// Other attribute values use the letter 'A' as the marker, and the value
@ -368,7 +367,7 @@ void DIEHash::hashAttribute(AttrEntry Attr, dwarf::Tag Tag) {
void DIEHash::hashAttributes(const DIEAttrs &Attrs, dwarf::Tag Tag) {
#define ADD_ATTR(ATTR) \
{ \
if (ATTR.Val) \
if (ATTR) \
hashAttribute(ATTR, Tag); \
}

View File

@ -26,65 +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.
//
// FIXME: Remove this struct, it's pretty boring now.
struct AttrEntry {
DIEValue Val;
};
// 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...
};
@ -142,7 +134,7 @@ private:
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,