From d033d6fb880b58528fe8e020602ca926290064eb Mon Sep 17 00:00:00 2001 From: Eric Christopher Date: Wed, 28 Aug 2013 00:10:38 +0000 Subject: [PATCH] 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 --- llvm/lib/CodeGen/AsmPrinter/DIEHash.cpp | 11 +++++++++++ llvm/lib/CodeGen/AsmPrinter/DIEHash.h | 1 + llvm/test/DebugInfo/X86/fission-hash.ll | 4 ++-- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/llvm/lib/CodeGen/AsmPrinter/DIEHash.cpp b/llvm/lib/CodeGen/AsmPrinter/DIEHash.cpp index f0ab38c3d4ea..1322743247ee 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DIEHash.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DIEHash.cpp @@ -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(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(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. diff --git a/llvm/lib/CodeGen/AsmPrinter/DIEHash.h b/llvm/lib/CodeGen/AsmPrinter/DIEHash.h index f53529c54f1e..d83f78f68b48 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DIEHash.h +++ b/llvm/lib/CodeGen/AsmPrinter/DIEHash.h @@ -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: diff --git a/llvm/test/DebugInfo/X86/fission-hash.ll b/llvm/test/DebugInfo/X86/fission-hash.ll index f0fe0d4cd5b8..c4ba9ca75c94 100644 --- a/llvm/test/DebugInfo/X86/fission-hash.ll +++ b/llvm/test/DebugInfo/X86/fission-hash.ll @@ -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}