Add the rest of the stock attributes to the attribute table.

This won't affect the kinds of hashes we test for as we actually
do hashing based on form and attribute. Change the fission-hash
testcase one last time to handle DW_AT_comp_dir.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189840 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Eric Christopher
2013-09-03 20:00:20 +00:00
parent d8f2eb301c
commit bd18c8d090
3 changed files with 242 additions and 8 deletions

View File

@@ -119,8 +119,146 @@ void DIEHash::collectAttributes(DIE *Die, DIEAttrs &Attrs) {
case dwarf::DW_AT_name:
COLLECT_ATTR(DW_AT_name);
break;
case dwarf::DW_AT_language:
COLLECT_ATTR(DW_AT_language);
case dwarf::DW_AT_accessibility:
COLLECT_ATTR(DW_AT_accessibility)
break;
case dwarf::DW_AT_address_class:
COLLECT_ATTR(DW_AT_address_class)
break;
case dwarf::DW_AT_allocated:
COLLECT_ATTR(DW_AT_allocated)
break;
case dwarf::DW_AT_artificial:
COLLECT_ATTR(DW_AT_artificial)
break;
case dwarf::DW_AT_associated:
COLLECT_ATTR(DW_AT_associated)
break;
case dwarf::DW_AT_binary_scale:
COLLECT_ATTR(DW_AT_binary_scale)
break;
case dwarf::DW_AT_bit_offset:
COLLECT_ATTR(DW_AT_bit_offset)
break;
case dwarf::DW_AT_bit_size:
COLLECT_ATTR(DW_AT_bit_size)
break;
case dwarf::DW_AT_bit_stride:
COLLECT_ATTR(DW_AT_bit_stride)
break;
case dwarf::DW_AT_byte_size:
COLLECT_ATTR(DW_AT_byte_size)
break;
case dwarf::DW_AT_byte_stride:
COLLECT_ATTR(DW_AT_byte_stride)
break;
case dwarf::DW_AT_const_expr:
COLLECT_ATTR(DW_AT_const_expr)
break;
case dwarf::DW_AT_const_value:
COLLECT_ATTR(DW_AT_const_value)
break;
case dwarf::DW_AT_containing_type:
COLLECT_ATTR(DW_AT_containing_type)
break;
case dwarf::DW_AT_count:
COLLECT_ATTR(DW_AT_count)
break;
case dwarf::DW_AT_data_bit_offset:
COLLECT_ATTR(DW_AT_data_bit_offset)
break;
case dwarf::DW_AT_data_location:
COLLECT_ATTR(DW_AT_data_location)
break;
case dwarf::DW_AT_data_member_location:
COLLECT_ATTR(DW_AT_data_member_location)
break;
case dwarf::DW_AT_decimal_scale:
COLLECT_ATTR(DW_AT_decimal_scale)
break;
case dwarf::DW_AT_decimal_sign:
COLLECT_ATTR(DW_AT_decimal_sign)
break;
case dwarf::DW_AT_default_value:
COLLECT_ATTR(DW_AT_default_value)
break;
case dwarf::DW_AT_digit_count:
COLLECT_ATTR(DW_AT_digit_count)
break;
case dwarf::DW_AT_discr:
COLLECT_ATTR(DW_AT_discr)
break;
case dwarf::DW_AT_discr_list:
COLLECT_ATTR(DW_AT_discr_list)
break;
case dwarf::DW_AT_discr_value:
COLLECT_ATTR(DW_AT_discr_value)
break;
case dwarf::DW_AT_encoding:
COLLECT_ATTR(DW_AT_encoding)
break;
case dwarf::DW_AT_enum_class:
COLLECT_ATTR(DW_AT_enum_class)
break;
case dwarf::DW_AT_endianity:
COLLECT_ATTR(DW_AT_endianity)
break;
case dwarf::DW_AT_explicit:
COLLECT_ATTR(DW_AT_explicit)
break;
case dwarf::DW_AT_is_optional:
COLLECT_ATTR(DW_AT_is_optional)
break;
case dwarf::DW_AT_location:
COLLECT_ATTR(DW_AT_location)
break;
case dwarf::DW_AT_lower_bound:
COLLECT_ATTR(DW_AT_lower_bound)
break;
case dwarf::DW_AT_mutable:
COLLECT_ATTR(DW_AT_mutable)
break;
case dwarf::DW_AT_ordering:
COLLECT_ATTR(DW_AT_ordering)
break;
case dwarf::DW_AT_picture_string:
COLLECT_ATTR(DW_AT_picture_string)
break;
case dwarf::DW_AT_prototyped:
COLLECT_ATTR(DW_AT_prototyped)
break;
case dwarf::DW_AT_small:
COLLECT_ATTR(DW_AT_small)
break;
case dwarf::DW_AT_segment:
COLLECT_ATTR(DW_AT_segment)
break;
case dwarf::DW_AT_string_length:
COLLECT_ATTR(DW_AT_string_length)
break;
case dwarf::DW_AT_threads_scaled:
COLLECT_ATTR(DW_AT_threads_scaled)
break;
case dwarf::DW_AT_upper_bound:
COLLECT_ATTR(DW_AT_upper_bound)
break;
case dwarf::DW_AT_use_location:
COLLECT_ATTR(DW_AT_use_location)
break;
case dwarf::DW_AT_use_UTF8:
COLLECT_ATTR(DW_AT_use_UTF8)
break;
case dwarf::DW_AT_variable_parameter:
COLLECT_ATTR(DW_AT_variable_parameter)
break;
case dwarf::DW_AT_virtuality:
COLLECT_ATTR(DW_AT_virtuality)
break;
case dwarf::DW_AT_visibility:
COLLECT_ATTR(DW_AT_visibility)
break;
case dwarf::DW_AT_vtable_elem_location:
COLLECT_ATTR(DW_AT_vtable_elem_location)
break;
default:
break;
@@ -145,7 +283,8 @@ void DIEHash::hashAttribute(AttrEntry Attr) {
// TODO: Add support for additional forms.
switch (Desc->getForm()) {
// TODO: We'll want to add DW_FORM_string here if we start emitting them again.
// TODO: We'll want to add DW_FORM_string here if we start emitting them
// again.
case dwarf::DW_FORM_strp:
addString(cast<DIEString>(Value)->getString());
break;
@@ -168,9 +307,56 @@ void DIEHash::hashAttributes(const DIEAttrs &Attrs) {
hashAttribute(ATTR); \
}
// FIXME: Add the rest.
ADD_ATTR(Attrs.DW_AT_name);
ADD_ATTR(Attrs.DW_AT_language);
ADD_ATTR(Attrs.DW_AT_accessibility);
ADD_ATTR(Attrs.DW_AT_address_class);
ADD_ATTR(Attrs.DW_AT_allocated);
ADD_ATTR(Attrs.DW_AT_artificial);
ADD_ATTR(Attrs.DW_AT_associated);
ADD_ATTR(Attrs.DW_AT_binary_scale);
ADD_ATTR(Attrs.DW_AT_bit_offset);
ADD_ATTR(Attrs.DW_AT_bit_size);
ADD_ATTR(Attrs.DW_AT_bit_stride);
ADD_ATTR(Attrs.DW_AT_byte_size);
ADD_ATTR(Attrs.DW_AT_byte_stride);
ADD_ATTR(Attrs.DW_AT_const_expr);
ADD_ATTR(Attrs.DW_AT_const_value);
ADD_ATTR(Attrs.DW_AT_containing_type);
ADD_ATTR(Attrs.DW_AT_count);
ADD_ATTR(Attrs.DW_AT_data_bit_offset);
ADD_ATTR(Attrs.DW_AT_data_location);
ADD_ATTR(Attrs.DW_AT_data_member_location);
ADD_ATTR(Attrs.DW_AT_decimal_scale);
ADD_ATTR(Attrs.DW_AT_decimal_sign);
ADD_ATTR(Attrs.DW_AT_default_value);
ADD_ATTR(Attrs.DW_AT_digit_count);
ADD_ATTR(Attrs.DW_AT_discr);
ADD_ATTR(Attrs.DW_AT_discr_list);
ADD_ATTR(Attrs.DW_AT_discr_value);
ADD_ATTR(Attrs.DW_AT_encoding);
ADD_ATTR(Attrs.DW_AT_enum_class);
ADD_ATTR(Attrs.DW_AT_endianity);
ADD_ATTR(Attrs.DW_AT_explicit);
ADD_ATTR(Attrs.DW_AT_is_optional);
ADD_ATTR(Attrs.DW_AT_location);
ADD_ATTR(Attrs.DW_AT_lower_bound);
ADD_ATTR(Attrs.DW_AT_mutable);
ADD_ATTR(Attrs.DW_AT_ordering);
ADD_ATTR(Attrs.DW_AT_picture_string);
ADD_ATTR(Attrs.DW_AT_prototyped);
ADD_ATTR(Attrs.DW_AT_small);
ADD_ATTR(Attrs.DW_AT_segment);
ADD_ATTR(Attrs.DW_AT_string_length);
ADD_ATTR(Attrs.DW_AT_threads_scaled);
ADD_ATTR(Attrs.DW_AT_upper_bound);
ADD_ATTR(Attrs.DW_AT_use_location);
ADD_ATTR(Attrs.DW_AT_use_UTF8);
ADD_ATTR(Attrs.DW_AT_variable_parameter);
ADD_ATTR(Attrs.DW_AT_virtuality);
ADD_ATTR(Attrs.DW_AT_visibility);
ADD_ATTR(Attrs.DW_AT_vtable_elem_location);
// FIXME: Add the extended attributes.
}
// Add all of the attributes for \param Die to the hash.