summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/AsmPrinter/DIEHash.cpp
diff options
context:
space:
mode:
authorEric Christopher <echristo@gmail.com>2013-09-03 20:00:20 +0000
committerEric Christopher <echristo@gmail.com>2013-09-03 20:00:20 +0000
commite020fa7c9cf784e2b2a748c342daa15e81ccdf3f (patch)
treeca57a18869ab9a8313213ae8db474ae1c1178471 /llvm/lib/CodeGen/AsmPrinter/DIEHash.cpp
parent7deccf0f06bc6461981cb3a23f1f6f6c145ca93e (diff)
downloadbcm5719-llvm-e020fa7c9cf784e2b2a748c342daa15e81ccdf3f.tar.gz
bcm5719-llvm-e020fa7c9cf784e2b2a748c342daa15e81ccdf3f.zip
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. llvm-svn: 189840
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter/DIEHash.cpp')
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/DIEHash.cpp196
1 files changed, 191 insertions, 5 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DIEHash.cpp b/llvm/lib/CodeGen/AsmPrinter/DIEHash.cpp
index 40db1b2eb0c..1581c9682da 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DIEHash.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/DIEHash.cpp
@@ -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.
OpenPOWER on IntegriCloud