[llvm] r303666 - Refactor DWARF hashing to use a .def file to avoid repetition

Robinson, Paul via llvm-commits llvm-commits at lists.llvm.org
Thu May 25 16:45:40 PDT 2017


If I'm right, it makes me sad that no test failed.


> -----Original Message-----
> From: llvm-commits [mailto:llvm-commits-bounces at lists.llvm.org] On Behalf
> Of David Blaikie via llvm-commits
> Sent: Tuesday, May 23, 2017 11:27 AM
> To: llvm-commits at lists.llvm.org
> Subject: [llvm] r303666 - Refactor DWARF hashing to use a .def file to
> avoid repetition
> 
> Author: dblaikie
> Date: Tue May 23 13:27:09 2017
> New Revision: 303666
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=303666&view=rev
> Log:
> Refactor DWARF hashing to use a .def file to avoid repetition
> 
> Added:
>     llvm/trunk/lib/CodeGen/AsmPrinter/DIEHashAttributes.def
> Modified:
>     llvm/trunk/lib/CodeGen/AsmPrinter/DIEHash.cpp
>     llvm/trunk/lib/CodeGen/AsmPrinter/DIEHash.h
> 
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DIEHash.cpp
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/lib/CodeGen/AsmPrinter/DIEHash.cpp?rev=303666&r1=303665
> &r2=303666&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/lib/CodeGen/AsmPrinter/DIEHash.cpp (original)
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DIEHash.cpp Tue May 23 13:27:09 2017
> @@ -116,65 +116,17 @@ void DIEHash::addParentContext(const DIE
> 
>  // Collect all of the attributes for a particular DIE in single
> structure.
>  void DIEHash::collectAttributes(const DIE &Die, DIEAttrs &Attrs) {
> -#define COLLECT_ATTR(NAME)
> \
> -  case dwarf::NAME:
> \
> -    Attrs.NAME = V;
> \
> -    break
> 
>    for (const auto &V : Die.values()) {
>      DEBUG(dbgs() << "Attribute: "
>                   << dwarf::AttributeString(V.getAttribute())
>                   << " added.\n");
>      switch (V.getAttribute()) {
> -      COLLECT_ATTR(DW_AT_name);

I see DW_AT_name here...

> -      COLLECT_ATTR(DW_AT_accessibility);
> -      COLLECT_ATTR(DW_AT_address_class);
> -      COLLECT_ATTR(DW_AT_allocated);
> -      COLLECT_ATTR(DW_AT_artificial);
> -      COLLECT_ATTR(DW_AT_associated);
> -      COLLECT_ATTR(DW_AT_binary_scale);
> -      COLLECT_ATTR(DW_AT_bit_offset);
> -      COLLECT_ATTR(DW_AT_bit_size);
> -      COLLECT_ATTR(DW_AT_bit_stride);
> -      COLLECT_ATTR(DW_AT_byte_size);
> -      COLLECT_ATTR(DW_AT_byte_stride);
> -      COLLECT_ATTR(DW_AT_const_expr);
> -      COLLECT_ATTR(DW_AT_const_value);
> -      COLLECT_ATTR(DW_AT_containing_type);
> -      COLLECT_ATTR(DW_AT_count);
> -      COLLECT_ATTR(DW_AT_data_bit_offset);
> -      COLLECT_ATTR(DW_AT_data_location);
> -      COLLECT_ATTR(DW_AT_data_member_location);
> -      COLLECT_ATTR(DW_AT_decimal_scale);
> -      COLLECT_ATTR(DW_AT_decimal_sign);
> -      COLLECT_ATTR(DW_AT_default_value);
> -      COLLECT_ATTR(DW_AT_digit_count);
> -      COLLECT_ATTR(DW_AT_discr);
> -      COLLECT_ATTR(DW_AT_discr_list);
> -      COLLECT_ATTR(DW_AT_discr_value);
> -      COLLECT_ATTR(DW_AT_encoding);
> -      COLLECT_ATTR(DW_AT_enum_class);
> -      COLLECT_ATTR(DW_AT_endianity);
> -      COLLECT_ATTR(DW_AT_explicit);
> -      COLLECT_ATTR(DW_AT_is_optional);
> -      COLLECT_ATTR(DW_AT_location);
> -      COLLECT_ATTR(DW_AT_lower_bound);
> -      COLLECT_ATTR(DW_AT_mutable);
> -      COLLECT_ATTR(DW_AT_ordering);
> -      COLLECT_ATTR(DW_AT_picture_string);
> -      COLLECT_ATTR(DW_AT_prototyped);
> -      COLLECT_ATTR(DW_AT_small);
> -      COLLECT_ATTR(DW_AT_segment);
> -      COLLECT_ATTR(DW_AT_string_length);
> -      COLLECT_ATTR(DW_AT_threads_scaled);
> -      COLLECT_ATTR(DW_AT_upper_bound);
> -      COLLECT_ATTR(DW_AT_use_location);
> -      COLLECT_ATTR(DW_AT_use_UTF8);
> -      COLLECT_ATTR(DW_AT_variable_parameter);
> -      COLLECT_ATTR(DW_AT_virtuality);
> -      COLLECT_ATTR(DW_AT_visibility);
> -      COLLECT_ATTR(DW_AT_vtable_elem_location);
> -      COLLECT_ATTR(DW_AT_type);
> +#define HANDLE_DIE_HASH_ATTR(NAME)
> \
> +  case dwarf::NAME:
> \
> +    Attrs.NAME = V;
> \
> +    break;
> +#include "DIEHashAttributes.def"
>      default:
>        break;
>      }
> @@ -366,62 +318,12 @@ void DIEHash::hashAttribute(const DIEVal
>  // Go through the attributes from \param Attrs in the order specified in
> 7.27.4
>  // and hash them.
>  void DIEHash::hashAttributes(const DIEAttrs &Attrs, dwarf::Tag Tag) {
> -#define ADD_ATTR(ATTR)
> \
> +#define HANDLE_DIE_HASH_ATTR(NAME)
> \
>    {
> \
> -    if (ATTR)
> \
> -      hashAttribute(ATTR, Tag);
> \
> +    if (Attrs.NAME)
> \
> +      hashAttribute(Attrs.NAME, Tag);
> \
>    }
> -
> -  ADD_ATTR(Attrs.DW_AT_name);

and here...

> -  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);
> -  ADD_ATTR(Attrs.DW_AT_type);
> -
> +#include "DIEHashAttributes.def"
>    // FIXME: Add the extended attributes.
>  }
> 
> 
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DIEHash.h
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/lib/CodeGen/AsmPrinter/DIEHash.h?rev=303666&r1=303665&r
> 2=303666&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/lib/CodeGen/AsmPrinter/DIEHash.h (original)
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DIEHash.h Tue May 23 13:27:09 2017
> @@ -28,57 +28,8 @@ class CompileUnit;
>  class DIEHash {
>    // Collection of all attributes used in hashing a particular DIE.
>    struct DIEAttrs {
> -    DIEValue DW_AT_name;

and here....

> -    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...
> +#define HANDLE_DIE_HASH_ATTR(NAME) DIEValue NAME;
> +#include "DIEHashAttributes.def"
>    };
> 
>  public:
> 
> Added: llvm/trunk/lib/CodeGen/AsmPrinter/DIEHashAttributes.def
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/lib/CodeGen/AsmPrinter/DIEHashAttributes.def?rev=303666
> &view=auto
> ==========================================================================
> ====
> --- llvm/trunk/lib/CodeGen/AsmPrinter/DIEHashAttributes.def (added)
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DIEHashAttributes.def Tue May 23
> 13:27:09 2017
> @@ -0,0 +1,54 @@
> +#ifndef HANDLE_DIE_HASH_ATTR
> +#error "Missing macro definition of HANDLE_DIE_HASH_ATTR"
> +#endif
> +

but not here.

> +HANDLE_DIE_HASH_ATTR(DW_AT_accessibility)
> +HANDLE_DIE_HASH_ATTR(DW_AT_address_class)
> +HANDLE_DIE_HASH_ATTR(DW_AT_allocated)
> +HANDLE_DIE_HASH_ATTR(DW_AT_artificial)
> +HANDLE_DIE_HASH_ATTR(DW_AT_associated)
> +HANDLE_DIE_HASH_ATTR(DW_AT_binary_scale)
> +HANDLE_DIE_HASH_ATTR(DW_AT_bit_offset)
> +HANDLE_DIE_HASH_ATTR(DW_AT_bit_size)
> +HANDLE_DIE_HASH_ATTR(DW_AT_bit_stride)
> +HANDLE_DIE_HASH_ATTR(DW_AT_byte_size)
> +HANDLE_DIE_HASH_ATTR(DW_AT_byte_stride)
> +HANDLE_DIE_HASH_ATTR(DW_AT_const_expr)
> +HANDLE_DIE_HASH_ATTR(DW_AT_const_value)
> +HANDLE_DIE_HASH_ATTR(DW_AT_containing_type)
> +HANDLE_DIE_HASH_ATTR(DW_AT_count)
> +HANDLE_DIE_HASH_ATTR(DW_AT_data_bit_offset)
> +HANDLE_DIE_HASH_ATTR(DW_AT_data_location)
> +HANDLE_DIE_HASH_ATTR(DW_AT_data_member_location)
> +HANDLE_DIE_HASH_ATTR(DW_AT_decimal_scale)
> +HANDLE_DIE_HASH_ATTR(DW_AT_decimal_sign)
> +HANDLE_DIE_HASH_ATTR(DW_AT_default_value)
> +HANDLE_DIE_HASH_ATTR(DW_AT_digit_count)
> +HANDLE_DIE_HASH_ATTR(DW_AT_discr)
> +HANDLE_DIE_HASH_ATTR(DW_AT_discr_list)
> +HANDLE_DIE_HASH_ATTR(DW_AT_discr_value)
> +HANDLE_DIE_HASH_ATTR(DW_AT_encoding)
> +HANDLE_DIE_HASH_ATTR(DW_AT_enum_class)
> +HANDLE_DIE_HASH_ATTR(DW_AT_endianity)
> +HANDLE_DIE_HASH_ATTR(DW_AT_explicit)
> +HANDLE_DIE_HASH_ATTR(DW_AT_is_optional)
> +HANDLE_DIE_HASH_ATTR(DW_AT_location)
> +HANDLE_DIE_HASH_ATTR(DW_AT_lower_bound)
> +HANDLE_DIE_HASH_ATTR(DW_AT_mutable)
> +HANDLE_DIE_HASH_ATTR(DW_AT_ordering)
> +HANDLE_DIE_HASH_ATTR(DW_AT_picture_string)
> +HANDLE_DIE_HASH_ATTR(DW_AT_prototyped)
> +HANDLE_DIE_HASH_ATTR(DW_AT_small)
> +HANDLE_DIE_HASH_ATTR(DW_AT_segment)
> +HANDLE_DIE_HASH_ATTR(DW_AT_string_length)
> +HANDLE_DIE_HASH_ATTR(DW_AT_threads_scaled)
> +HANDLE_DIE_HASH_ATTR(DW_AT_upper_bound)
> +HANDLE_DIE_HASH_ATTR(DW_AT_use_location)
> +HANDLE_DIE_HASH_ATTR(DW_AT_use_UTF8)
> +HANDLE_DIE_HASH_ATTR(DW_AT_variable_parameter)
> +HANDLE_DIE_HASH_ATTR(DW_AT_virtuality)
> +HANDLE_DIE_HASH_ATTR(DW_AT_visibility)
> +HANDLE_DIE_HASH_ATTR(DW_AT_vtable_elem_location)
> +HANDLE_DIE_HASH_ATTR(DW_AT_type)
> +
> +#undef HANDLE_DIE_HASH_ATTR
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits


More information about the llvm-commits mailing list