[llvm] r189840 - Add the rest of the stock attributes to the attribute table.

Eric Christopher echristo at gmail.com
Tue Sep 3 13:00:20 PDT 2013


Author: echristo
Date: Tue Sep  3 15:00:20 2013
New Revision: 189840

URL: http://llvm.org/viewvc/llvm-project?rev=189840&view=rev
Log:
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.

Modified:
    llvm/trunk/lib/CodeGen/AsmPrinter/DIEHash.cpp
    llvm/trunk/lib/CodeGen/AsmPrinter/DIEHash.h
    llvm/trunk/test/DebugInfo/X86/fission-hash.ll

Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DIEHash.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DIEHash.cpp?rev=189840&r1=189839&r2=189840&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/DIEHash.cpp (original)
+++ llvm/trunk/lib/CodeGen/AsmPrinter/DIEHash.cpp Tue Sep  3 15:00:20 2013
@@ -119,8 +119,146 @@ void DIEHash::collectAttributes(DIE *Die
     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 At
 
   // 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 DIEAt
       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.

Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DIEHash.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DIEHash.h?rev=189840&r1=189839&r2=189840&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/DIEHash.h (original)
+++ llvm/trunk/lib/CodeGen/AsmPrinter/DIEHash.h Tue Sep  3 15:00:20 2013
@@ -29,7 +29,55 @@ class DIEHash {
   // Collection of all attributes used in hashing a particular DIE.
   struct DIEAttrs {
     AttrEntry DW_AT_name;
-    AttrEntry DW_AT_language;
+    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;
+
+    // Insert any additional ones here...
   };
 
 public:

Modified: llvm/trunk/test/DebugInfo/X86/fission-hash.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/fission-hash.ll?rev=189840&r1=189839&r2=189840&view=diff
==============================================================================
--- llvm/trunk/test/DebugInfo/X86/fission-hash.ll (original)
+++ llvm/trunk/test/DebugInfo/X86/fission-hash.ll Tue Sep  3 15:00:20 2013
@@ -3,8 +3,8 @@
 
 ; The source is an empty file.
 
-; CHECK: DW_AT_GNU_dwo_id [DW_FORM_data8] (0xc357bdf055b6393d)
-; CHECK: DW_AT_GNU_dwo_id [DW_FORM_data8] (0xc357bdf055b6393d)
+; CHECK: DW_AT_GNU_dwo_id [DW_FORM_data8] (0xa188c11a9264c05d)
+; CHECK: DW_AT_GNU_dwo_id [DW_FORM_data8] (0xa188c11a9264c05d)
 
 !llvm.dbg.cu = !{!0}
 !llvm.module.flags = !{!3}





More information about the llvm-commits mailing list