[PATCH] D155764: [BOLT][DWARF][NFC] Replace MD5 with hash_combine

Alexander Yermolovich via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 19 16:33:29 PDT 2023


ayermolo created this revision.
Herald added subscribers: treapster, hoy, modimo, wenlei.
Herald added a reviewer: rafauler.
Herald added a reviewer: Amir.
Herald added a reviewer: maksfb.
Herald added a project: All.
ayermolo requested review of this revision.
Herald added subscribers: llvm-commits, yota9.
Herald added a project: LLVM.

Slight performance improvment.

Collected on clang-17 built with DWARF4 + split dwarf.
MD5
8:46.50 real,   713.38 user,    64.19 sys,      0 amem, 41933136 mmem
8:27.44 real,   708.55 user,    63.83 sys,      0 amem, 41906576 mmem
8:40.37 real,   724.63 user,    62.56 sys,      0 amem, 42319572 mmem

hash_combine

8:03.99 real,   681.92 user,    60.04 sys,      0 amem, 42459204 mmem
8:02.92 real,   685.20 user,    62.56 sys,      0 amem, 41879164 mmem
7:57.85 real,   690.27 user,    60.12 sys,      0 amem, 41806240 mmem

Test Plan:


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D155764

Files:
  bolt/lib/Core/DIEBuilder.cpp


Index: bolt/lib/Core/DIEBuilder.cpp
===================================================================
--- bolt/lib/Core/DIEBuilder.cpp
+++ bolt/lib/Core/DIEBuilder.cpp
@@ -838,12 +838,11 @@
   // Before DWARF5 TU units are in their own section, so at least one offset,
   // first one, will be the same as CUs in .debug_info.dwo section
   if (DU.getVersion() < 5 && DU.isTypeUnit()) {
-    MD5 Hash;
-    uint64_t TypeUnitHash = cast_or_null<DWARFTypeUnit>(&DU)->getTypeHash();
-    uint64_t Offset = DU.getOffset();
-    Hash.update(llvm::ArrayRef((uint8_t *)&TypeUnitHash, sizeof(TypeUnitHash)));
-    Hash.update(llvm::ArrayRef((uint8_t *)&Offset, sizeof(Offset)));
-    return Hash.final().high();
+    const uint64_t TypeUnitHash =
+        cast_or_null<DWARFTypeUnit>(&DU)->getTypeHash();
+    const uint64_t Offset = DU.getOffset();
+    return llvm::hash_combine(llvm::hash_value(TypeUnitHash),
+                              llvm::hash_value(Offset));
   }
   return DU.getOffset();
 }


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D155764.542241.patch
Type: text/x-patch
Size: 998 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230719/983a8efb/attachment.bin>


More information about the llvm-commits mailing list