]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gcc/
authorccoutant <ccoutant@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 13 Aug 2013 23:39:54 +0000 (23:39 +0000)
committerccoutant <ccoutant@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 13 Aug 2013 23:39:54 +0000 (23:39 +0000)
* dwarf2out.c (CHECKSUM_BLOCK): New macro.
(attr_checksum): Hash vector contents instead of pointer.
(attr_checksum_ordered): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@201712 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/dwarf2out.c

index 53620ac31cf5671371f2dafab68bb5ceeb4f399e..45d4971fa7180a1b61e10f08e96f4e05b88d6160 100644 (file)
@@ -1,3 +1,9 @@
+2013-08-13  Cary Coutant  <ccoutant@google.com>
+
+       * dwarf2out.c (CHECKSUM_BLOCK): New macro.
+       (attr_checksum): Hash vector contents instead of pointer.
+       (attr_checksum_ordered): Likewise.
+
 2013-08-13  Uros Bizjak  <ubizjak@gmail.com>
 
        * config/i386/sse.md (*sse2_maskmovdqu): Emit addr32 prefix
index 66cbfb032e0d9742ef88199a08941f87b8bf5747..fc1c3f215657bd07d35c092860023400e609d838 100644 (file)
@@ -5432,6 +5432,7 @@ pop_compile_unit (dw_die_ref old_unit)
 }
 
 #define CHECKSUM(FOO) md5_process_bytes (&(FOO), sizeof (FOO), ctx)
+#define CHECKSUM_BLOCK(FOO, SIZE) md5_process_bytes ((FOO), (SIZE), ctx)
 #define CHECKSUM_STRING(FOO) md5_process_bytes ((FOO), strlen (FOO), ctx)
 
 /* Calculate the checksum of a location expression.  */
@@ -5475,7 +5476,9 @@ attr_checksum (dw_attr_ref at, struct md5_ctx *ctx, int *mark)
       CHECKSUM (at->dw_attr_val.v.val_double);
       break;
     case dw_val_class_vec:
-      CHECKSUM (at->dw_attr_val.v.val_vec);
+      CHECKSUM_BLOCK (at->dw_attr_val.v.val_vec.array,
+                     (at->dw_attr_val.v.val_vec.length
+                      * at->dw_attr_val.v.val_vec.elt_size));
       break;
     case dw_val_class_flag:
       CHECKSUM (at->dw_attr_val.v.val_flag);
@@ -5550,10 +5553,12 @@ die_checksum (dw_die_ref die, struct md5_ctx *ctx, int *mark)
 }
 
 #undef CHECKSUM
+#undef CHECKSUM_BLOCK
 #undef CHECKSUM_STRING
 
 /* For DWARF-4 types, include the trailing NULL when checksumming strings.  */
 #define CHECKSUM(FOO) md5_process_bytes (&(FOO), sizeof (FOO), ctx)
+#define CHECKSUM_BLOCK(FOO, SIZE) md5_process_bytes ((FOO), (SIZE), ctx)
 #define CHECKSUM_STRING(FOO) md5_process_bytes ((FOO), strlen (FOO) + 1, ctx)
 #define CHECKSUM_SLEB128(FOO) checksum_sleb128 ((FOO), ctx)
 #define CHECKSUM_ULEB128(FOO) checksum_uleb128 ((FOO), ctx)
@@ -5749,8 +5754,11 @@ attr_checksum_ordered (enum dwarf_tag tag, dw_attr_ref at,
 
     case dw_val_class_vec:
       CHECKSUM_ULEB128 (DW_FORM_block);
-      CHECKSUM_ULEB128 (sizeof (at->dw_attr_val.v.val_vec));
-      CHECKSUM (at->dw_attr_val.v.val_vec);
+      CHECKSUM_ULEB128 (at->dw_attr_val.v.val_vec.length
+                       * at->dw_attr_val.v.val_vec.elt_size);
+      CHECKSUM_BLOCK (at->dw_attr_val.v.val_vec.array,
+                     (at->dw_attr_val.v.val_vec.length
+                      * at->dw_attr_val.v.val_vec.elt_size));
       break;
 
     case dw_val_class_flag: