Add support for DW_FORM_dataN and DW_FORM_udata to the DIE hashing

algorithm. Update the split dwarf hashing testcase accordingly - this
should be the last time that the hash of an empty file changes.

llvm-svn: 189427
This commit is contained in:
Eric Christopher 2013-08-28 00:10:38 +00:00
parent 16ae963b6a
commit 7dd3f8b252
3 changed files with 14 additions and 2 deletions

View File

@ -119,6 +119,9 @@ 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);
break;
default:
break;
}
@ -145,6 +148,13 @@ void DIEHash::hashAttribute(AttrEntry Attr) {
case dwarf::DW_FORM_strp:
addString(cast<DIEString>(Value)->getString());
break;
case dwarf::DW_FORM_data1:
case dwarf::DW_FORM_data2:
case dwarf::DW_FORM_data4:
case dwarf::DW_FORM_data8:
case dwarf::DW_FORM_udata:
addULEB128(cast<DIEInteger>(Value)->getValue());
break;
}
}
@ -159,6 +169,7 @@ void DIEHash::hashAttributes(const DIEAttrs &Attrs) {
// FIXME: Add the rest.
ADD_ATTR(Attrs.DW_AT_name);
ADD_ATTR(Attrs.DW_AT_language);
}
// Add all of the attributes for \param Die to the hash.

View File

@ -29,6 +29,7 @@ class DIEHash {
// Collection of all attributes used in hashing a particular DIE.
struct DIEAttrs {
AttrEntry DW_AT_name;
AttrEntry DW_AT_language;
};
public:

View File

@ -3,8 +3,8 @@
; The source is an empty file.
; CHECK: DW_AT_GNU_dwo_id [DW_FORM_data8] (0xa188c11a9264c05d)
; CHECK: DW_AT_GNU_dwo_id [DW_FORM_data8] (0xa188c11a9264c05d)
; CHECK: DW_AT_GNU_dwo_id [DW_FORM_data8] (0xc357bdf055b6393d)
; CHECK: DW_AT_GNU_dwo_id [DW_FORM_data8] (0xc357bdf055b6393d)
!llvm.dbg.cu = !{!0}
!llvm.module.flags = !{!3}