DIEHash: Summary hashing of member functions

llvm-svn: 193432
diff --git a/llvm/unittests/CodeGen/DIEHashTest.cpp b/llvm/unittests/CodeGen/DIEHashTest.cpp
index fb6f4b3..8d8fc39 100644
--- a/llvm/unittests/CodeGen/DIEHashTest.cpp
+++ b/llvm/unittests/CodeGen/DIEHashTest.cpp
@@ -496,4 +496,22 @@
   // The exact same hash GCC produces for this DIE.
   ASSERT_EQ(0xde8a3b7b43807f4aULL, MD5Res);
 }
+
+// struct { static void func(); };
+TEST(DIEHashTest, MemberFunc) {
+  DIE Unnamed(dwarf::DW_TAG_structure_type);
+  DIEInteger One(1);
+  Unnamed.addValue(dwarf::DW_AT_byte_size, dwarf::DW_FORM_data1, &One);
+
+  DIE *Func = new DIE(dwarf::DW_TAG_subprogram);
+  DIEString FuncStr(&One, "func");
+  Func->addValue(dwarf::DW_AT_name, dwarf::DW_FORM_strp, &FuncStr);
+
+  Unnamed.addChild(Func);
+
+  uint64_t MD5Res = DIEHash().computeTypeSignature(Unnamed);
+
+  // The exact same hash GCC produces for this DIE.
+  ASSERT_EQ(0xd36a1b6dfb604ba0ULL, MD5Res);
+}
 }