From e020fa7c9cf784e2b2a748c342daa15e81ccdf3f Mon Sep 17 00:00:00 2001 From: Eric Christopher Date: Tue, 3 Sep 2013 20:00:20 +0000 Subject: 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 --- llvm/lib/CodeGen/AsmPrinter/DIEHash.cpp | 196 +++++++++++++++++++++++++++++++- 1 file changed, 191 insertions(+), 5 deletions(-) (limited to 'llvm/lib/CodeGen/AsmPrinter/DIEHash.cpp') 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(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. -- cgit v1.2.3